diff --git a/src/conversejs/converse.js b/src/conversejs/converse.js index 9d0d385a735f3d5b64ed31cb7e82c7a7b076826e..eb8c25f4cba4933768dc58a05f1010685b052f2a 100644 --- a/src/conversejs/converse.js +++ b/src/conversejs/converse.js @@ -36,14 +36,14 @@ /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded /******/ var installedChunks = { -/******/ 177: 0 +/******/ 178: 0 /******/ }; /******/ /******/ /******/ /******/ // script path function /******/ function jsonpScriptSrc(chunkId) { -/******/ return __webpack_require__.p + "" + ({"0":"locales/dayjs/af","1":"locales/dayjs/ar","2":"locales/dayjs/ar-dz","3":"locales/dayjs/ar-kw","4":"locales/dayjs/ar-ly","5":"locales/dayjs/ar-ma","6":"locales/dayjs/ar-sa","7":"locales/dayjs/ar-tn","8":"locales/dayjs/az","9":"locales/dayjs/be","10":"locales/dayjs/bg","11":"locales/dayjs/bi","12":"locales/dayjs/bm","13":"locales/dayjs/bn","14":"locales/dayjs/bo","15":"locales/dayjs/br","16":"locales/dayjs/bs","17":"locales/dayjs/ca","18":"locales/dayjs/cs","19":"locales/dayjs/cv","20":"locales/dayjs/cy","21":"locales/dayjs/da","22":"locales/dayjs/de","23":"locales/dayjs/de-at","24":"locales/dayjs/de-ch","25":"locales/dayjs/dv","26":"locales/dayjs/el","27":"locales/dayjs/en","28":"locales/dayjs/en-SG","29":"locales/dayjs/en-au","30":"locales/dayjs/en-ca","31":"locales/dayjs/en-gb","32":"locales/dayjs/en-ie","33":"locales/dayjs/en-il","34":"locales/dayjs/en-in","35":"locales/dayjs/en-nz","36":"locales/dayjs/en-tt","37":"locales/dayjs/eo","38":"locales/dayjs/es","39":"locales/dayjs/es-do","40":"locales/dayjs/es-pr","41":"locales/dayjs/es-us","42":"locales/dayjs/et","43":"locales/dayjs/eu","44":"locales/dayjs/fa","45":"locales/dayjs/fi","46":"locales/dayjs/fo","47":"locales/dayjs/fr","48":"locales/dayjs/fr-ca","49":"locales/dayjs/fr-ch","50":"locales/dayjs/fy","51":"locales/dayjs/ga","52":"locales/dayjs/gd","53":"locales/dayjs/gl","54":"locales/dayjs/gom-latn","55":"locales/dayjs/gu","56":"locales/dayjs/he","57":"locales/dayjs/hi","58":"locales/dayjs/hr","59":"locales/dayjs/ht","60":"locales/dayjs/hu","61":"locales/dayjs/hy-am","62":"locales/dayjs/id","63":"locales/dayjs/is","64":"locales/dayjs/it","65":"locales/dayjs/it-ch","66":"locales/dayjs/ja","67":"locales/dayjs/jv","68":"locales/dayjs/ka","69":"locales/dayjs/kk","70":"locales/dayjs/km","71":"locales/dayjs/kn","72":"locales/dayjs/ko","73":"locales/dayjs/ku","74":"locales/dayjs/ky","75":"locales/dayjs/lb","76":"locales/dayjs/lo","77":"locales/dayjs/lt","78":"locales/dayjs/lv","79":"locales/dayjs/me","80":"locales/dayjs/mi","81":"locales/dayjs/mk","82":"locales/dayjs/ml","83":"locales/dayjs/mn","84":"locales/dayjs/mr","85":"locales/dayjs/ms","86":"locales/dayjs/ms-my","87":"locales/dayjs/mt","88":"locales/dayjs/my","89":"locales/dayjs/nb","90":"locales/dayjs/ne","91":"locales/dayjs/nl","92":"locales/dayjs/nl-be","93":"locales/dayjs/nn","94":"locales/dayjs/oc-lnc","95":"locales/dayjs/pa-in","96":"locales/dayjs/pl","97":"locales/dayjs/pt","98":"locales/dayjs/pt-br","99":"locales/dayjs/ro","100":"locales/dayjs/ru","101":"locales/dayjs/rw","102":"locales/dayjs/sd","103":"locales/dayjs/se","104":"locales/dayjs/si","105":"locales/dayjs/sk","106":"locales/dayjs/sl","107":"locales/dayjs/sq","108":"locales/dayjs/sr","109":"locales/dayjs/sr-cyrl","110":"locales/dayjs/ss","111":"locales/dayjs/sv","112":"locales/dayjs/sw","113":"locales/dayjs/ta","114":"locales/dayjs/te","115":"locales/dayjs/tet","116":"locales/dayjs/tg","117":"locales/dayjs/th","118":"locales/dayjs/tk","119":"locales/dayjs/tl-ph","120":"locales/dayjs/tlh","121":"locales/dayjs/tr","122":"locales/dayjs/tzl","123":"locales/dayjs/tzm","124":"locales/dayjs/tzm-latn","125":"locales/dayjs/ug-cn","126":"locales/dayjs/uk","127":"locales/dayjs/ur","128":"locales/dayjs/uz","129":"locales/dayjs/uz-latn","130":"locales/dayjs/vi","131":"locales/dayjs/x-pseudo","132":"locales/dayjs/yo","133":"locales/dayjs/zh","134":"locales/dayjs/zh-cn","135":"locales/dayjs/zh-hk","136":"locales/dayjs/zh-tw","137":"emojis","138":"icons","139":"locales/af-LC_MESSAGES-converse-po","140":"locales/ar-LC_MESSAGES-converse-po","141":"locales/bg-LC_MESSAGES-converse-po","142":"locales/ca-LC_MESSAGES-converse-po","143":"locales/cs-LC_MESSAGES-converse-po","144":"locales/da-LC_MESSAGES-converse-po","145":"locales/dayjs/index-d-ts","146":"locales/dayjs/types-d-ts","147":"locales/de-LC_MESSAGES-converse-po","148":"locales/eo-LC_MESSAGES-converse-po","149":"locales/es-LC_MESSAGES-converse-po","150":"locales/eu-LC_MESSAGES-converse-po","151":"locales/fi-LC_MESSAGES-converse-po","152":"locales/fr-LC_MESSAGES-converse-po","153":"locales/gl-LC_MESSAGES-converse-po","154":"locales/he-LC_MESSAGES-converse-po","155":"locales/hi-LC_MESSAGES-converse-po","156":"locales/hu-LC_MESSAGES-converse-po","157":"locales/id-LC_MESSAGES-converse-po","158":"locales/it-LC_MESSAGES-converse-po","159":"locales/ja-LC_MESSAGES-converse-po","160":"locales/lt-LC_MESSAGES-converse-po","161":"locales/mr-LC_MESSAGES-converse-po","162":"locales/nb-LC_MESSAGES-converse-po","163":"locales/nl-LC_MESSAGES-converse-po","164":"locales/nl_BE-LC_MESSAGES-converse-po","165":"locales/oc-LC_MESSAGES-converse-po","166":"locales/pl-LC_MESSAGES-converse-po","167":"locales/pt-LC_MESSAGES-converse-po","168":"locales/pt_BR-LC_MESSAGES-converse-po","169":"locales/ro-LC_MESSAGES-converse-po","170":"locales/ru-LC_MESSAGES-converse-po","171":"locales/th-LC_MESSAGES-converse-po","172":"locales/tr-LC_MESSAGES-converse-po","173":"locales/uk-LC_MESSAGES-converse-po","174":"locales/vi-LC_MESSAGES-converse-po","175":"locales/zh_CN-LC_MESSAGES-converse-po","176":"locales/zh_TW-LC_MESSAGES-converse-po"}[chunkId]||chunkId) + ".js" +/******/ return __webpack_require__.p + "" + ({"0":"locales/dayjs/af","1":"locales/dayjs/ar","2":"locales/dayjs/ar-dz","3":"locales/dayjs/ar-kw","4":"locales/dayjs/ar-ly","5":"locales/dayjs/ar-ma","6":"locales/dayjs/ar-sa","7":"locales/dayjs/ar-tn","8":"locales/dayjs/az","9":"locales/dayjs/be","10":"locales/dayjs/bg","11":"locales/dayjs/bi","12":"locales/dayjs/bm","13":"locales/dayjs/bn","14":"locales/dayjs/bo","15":"locales/dayjs/br","16":"locales/dayjs/bs","17":"locales/dayjs/ca","18":"locales/dayjs/cs","19":"locales/dayjs/cv","20":"locales/dayjs/cy","21":"locales/dayjs/da","22":"locales/dayjs/de","23":"locales/dayjs/de-at","24":"locales/dayjs/de-ch","25":"locales/dayjs/dv","26":"locales/dayjs/el","27":"locales/dayjs/en","28":"locales/dayjs/en-SG","29":"locales/dayjs/en-au","30":"locales/dayjs/en-ca","31":"locales/dayjs/en-gb","32":"locales/dayjs/en-ie","33":"locales/dayjs/en-il","34":"locales/dayjs/en-in","35":"locales/dayjs/en-nz","36":"locales/dayjs/en-tt","37":"locales/dayjs/eo","38":"locales/dayjs/es","39":"locales/dayjs/es-do","40":"locales/dayjs/es-pr","41":"locales/dayjs/es-us","42":"locales/dayjs/et","43":"locales/dayjs/eu","44":"locales/dayjs/fa","45":"locales/dayjs/fi","46":"locales/dayjs/fo","47":"locales/dayjs/fr","48":"locales/dayjs/fr-ca","49":"locales/dayjs/fr-ch","50":"locales/dayjs/fy","51":"locales/dayjs/ga","52":"locales/dayjs/gd","53":"locales/dayjs/gl","54":"locales/dayjs/gom-latn","55":"locales/dayjs/gu","56":"locales/dayjs/he","57":"locales/dayjs/hi","58":"locales/dayjs/hr","59":"locales/dayjs/ht","60":"locales/dayjs/hu","61":"locales/dayjs/hy-am","62":"locales/dayjs/id","63":"locales/dayjs/is","64":"locales/dayjs/it","65":"locales/dayjs/it-ch","66":"locales/dayjs/ja","67":"locales/dayjs/jv","68":"locales/dayjs/ka","69":"locales/dayjs/kk","70":"locales/dayjs/km","71":"locales/dayjs/kn","72":"locales/dayjs/ko","73":"locales/dayjs/ku","74":"locales/dayjs/ky","75":"locales/dayjs/lb","76":"locales/dayjs/lo","77":"locales/dayjs/lt","78":"locales/dayjs/lv","79":"locales/dayjs/me","80":"locales/dayjs/mi","81":"locales/dayjs/mk","82":"locales/dayjs/ml","83":"locales/dayjs/mn","84":"locales/dayjs/mr","85":"locales/dayjs/ms","86":"locales/dayjs/ms-my","87":"locales/dayjs/mt","88":"locales/dayjs/my","89":"locales/dayjs/nb","90":"locales/dayjs/ne","91":"locales/dayjs/nl","92":"locales/dayjs/nl-be","93":"locales/dayjs/nn","94":"locales/dayjs/oc-lnc","95":"locales/dayjs/pa-in","96":"locales/dayjs/pl","97":"locales/dayjs/pt","98":"locales/dayjs/pt-br","99":"locales/dayjs/ro","100":"locales/dayjs/ru","101":"locales/dayjs/rw","102":"locales/dayjs/sd","103":"locales/dayjs/se","104":"locales/dayjs/si","105":"locales/dayjs/sk","106":"locales/dayjs/sl","107":"locales/dayjs/sq","108":"locales/dayjs/sr","109":"locales/dayjs/sr-cyrl","110":"locales/dayjs/ss","111":"locales/dayjs/sv","112":"locales/dayjs/sw","113":"locales/dayjs/ta","114":"locales/dayjs/te","115":"locales/dayjs/tet","116":"locales/dayjs/tg","117":"locales/dayjs/th","118":"locales/dayjs/tk","119":"locales/dayjs/tl-ph","120":"locales/dayjs/tlh","121":"locales/dayjs/tr","122":"locales/dayjs/tzl","123":"locales/dayjs/tzm","124":"locales/dayjs/tzm-latn","125":"locales/dayjs/ug-cn","126":"locales/dayjs/uk","127":"locales/dayjs/ur","128":"locales/dayjs/uz","129":"locales/dayjs/uz-latn","130":"locales/dayjs/vi","131":"locales/dayjs/x-pseudo","132":"locales/dayjs/yo","133":"locales/dayjs/zh","134":"locales/dayjs/zh-cn","135":"locales/dayjs/zh-hk","136":"locales/dayjs/zh-tw","137":"emojis","138":"icons","139":"locales/af-LC_MESSAGES-converse-po","140":"locales/ar-LC_MESSAGES-converse-po","141":"locales/bg-LC_MESSAGES-converse-po","142":"locales/ca-LC_MESSAGES-converse-po","143":"locales/cs-LC_MESSAGES-converse-po","144":"locales/da-LC_MESSAGES-converse-po","145":"locales/dayjs/index-d-ts","146":"locales/dayjs/types-d-ts","147":"locales/de-LC_MESSAGES-converse-po","148":"locales/eo-LC_MESSAGES-converse-po","149":"locales/es-LC_MESSAGES-converse-po","150":"locales/eu-LC_MESSAGES-converse-po","151":"locales/fi-LC_MESSAGES-converse-po","152":"locales/fr-LC_MESSAGES-converse-po","153":"locales/gl-LC_MESSAGES-converse-po","154":"locales/he-LC_MESSAGES-converse-po","155":"locales/hi-LC_MESSAGES-converse-po","156":"locales/hu-LC_MESSAGES-converse-po","157":"locales/id-LC_MESSAGES-converse-po","158":"locales/it-LC_MESSAGES-converse-po","159":"locales/ja-LC_MESSAGES-converse-po","160":"locales/lt-LC_MESSAGES-converse-po","161":"locales/mr-LC_MESSAGES-converse-po","162":"locales/nb-LC_MESSAGES-converse-po","163":"locales/nl-LC_MESSAGES-converse-po","164":"locales/nl_BE-LC_MESSAGES-converse-po","165":"locales/oc-LC_MESSAGES-converse-po","166":"locales/pl-LC_MESSAGES-converse-po","167":"locales/pt-LC_MESSAGES-converse-po","168":"locales/pt_BR-LC_MESSAGES-converse-po","169":"locales/ro-LC_MESSAGES-converse-po","170":"locales/ru-LC_MESSAGES-converse-po","171":"locales/sv-LC_MESSAGES-converse-po","172":"locales/th-LC_MESSAGES-converse-po","173":"locales/tr-LC_MESSAGES-converse-po","174":"locales/uk-LC_MESSAGES-converse-po","175":"locales/vi-LC_MESSAGES-converse-po","176":"locales/zh_CN-LC_MESSAGES-converse-po","177":"locales/zh_TW-LC_MESSAGES-converse-po"}[chunkId]||chunkId) + ".js" /******/ } /******/ /******/ // The require function @@ -196,7 +196,7 @@ /******/ /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 284); +/******/ return __webpack_require__(__webpack_require__.s = 326); /******/ }) /************************************************************************/ /******/ ([ @@ -215,7 +215,7 @@ __webpack_require__.d(__webpack_exports__, "e", function() { return /* binding * // UNUSED EXPORTS: SHA1, MD5 // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/shims.js -var shims = __webpack_require__(13); +var shims = __webpack_require__(15); // CONCATENATED MODULE: ./src/headless/node_modules/strophe.js/src/md5.js /* @@ -235,7 +235,7 @@ var shims = __webpack_require__(13); * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ -const safe_add = function safe_add(x, y) { +const safe_add = function (x, y) { const lsw = (x & 0xFFFF) + (y & 0xFFFF); const msw = (x >> 16) + (y >> 16) + (lsw >> 16); return msw << 16 | lsw & 0xFFFF; @@ -245,7 +245,7 @@ const safe_add = function safe_add(x, y) { */ -const bit_rol = function bit_rol(num, cnt) { +const bit_rol = function (num, cnt) { return num << cnt | num >>> 32 - cnt; }; /* @@ -253,7 +253,7 @@ const bit_rol = function bit_rol(num, cnt) { */ -const str2binl = function str2binl(str) { +const str2binl = function (str) { if (typeof str !== "string") { throw new Error("str2binl was passed a non-string"); } @@ -271,7 +271,7 @@ const str2binl = function str2binl(str) { */ -const binl2str = function binl2str(bin) { +const binl2str = function (bin) { let str = ""; for (let i = 0; i < bin.length * 32; i += 8) { @@ -285,7 +285,7 @@ const binl2str = function binl2str(bin) { */ -const binl2hex = function binl2hex(binarray) { +const binl2hex = function (binarray) { const hex_tab = "0123456789abcdef"; let str = ""; @@ -300,23 +300,23 @@ const binl2hex = function binl2hex(binarray) { */ -const md5_cmn = function md5_cmn(q, a, b, x, s, t) { +const md5_cmn = function (q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); }; -const md5_ff = function md5_ff(a, b, c, d, x, s, t) { +const md5_ff = function (a, b, c, d, x, s, t) { return md5_cmn(b & c | ~b & d, a, b, x, s, t); }; -const md5_gg = function md5_gg(a, b, c, d, x, s, t) { +const md5_gg = function (a, b, c, d, x, s, t) { return md5_cmn(b & d | c & ~d, a, b, x, s, t); }; -const md5_hh = function md5_hh(a, b, c, d, x, s, t) { +const md5_hh = function (a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }; -const md5_ii = function md5_ii(a, b, c, d, x, s, t) { +const md5_ii = function (a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | ~d), a, b, x, s, t); }; /* @@ -324,7 +324,7 @@ const md5_ii = function md5_ii(a, b, c, d, x, s, t) { */ -const core_md5 = function core_md5(x, len) { +const core_md5 = function (x, len) { /* append padding */ x[len >> 5] |= 0x80 << len % 32; x[(len + 64 >>> 9 << 4) + 14] = len; @@ -419,10 +419,10 @@ const core_md5 = function core_md5(x, len) { const MD5 = { - hexdigest: function hexdigest(s) { + hexdigest: function (s) { return binl2hex(core_md5(str2binl(s), s.length * 8)); }, - hash: function hash(s) { + hash: function (s) { return binl2str(core_md5(str2binl(s), s.length * 8)); } }; @@ -432,7 +432,7 @@ var sha1 = __webpack_require__(7); // CONCATENATED MODULE: ./src/headless/node_modules/strophe.js/src/utils.js const utils = { - utf16to8: function utf16to8(str) { + utf16to8: function (str) { var i, c; var out = ""; var len = str.length; @@ -454,7 +454,7 @@ const utils = { return out; }, - addCookies: function addCookies(cookies) { + addCookies: function (cookies) { /* Parameters: * (Object) cookies - either a map of cookie names * to string values or to maps of cookie values. @@ -498,7 +498,7 @@ const utils = { }; // EXTERNAL MODULE: ./node_modules/abab/index.js -var abab = __webpack_require__(9); +var abab = __webpack_require__(10); // CONCATENATED MODULE: ./src/headless/node_modules/strophe.js/src/core.js /* @@ -2132,7 +2132,7 @@ Strophe.Connection = class Connection { for (const k in Strophe._connectionPlugins) { if (Object.prototype.hasOwnProperty.call(Strophe._connectionPlugins, k)) { - const F = function F() {}; + const F = function () {}; F.prototype = Strophe._connectionPlugins[k]; this[k] = new F(); @@ -4293,17 +4293,50 @@ Strophe.SASLXOAuth2 = class SASLXOAuth2 extends Strophe.SASLMechanism { /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _bosh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(154); +/* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68); +/* harmony import */ var _worker_websocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(493); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["e"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["a"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["b"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "c", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["c"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["d"]; }); + +/*global global*/ + + + + +global.$build = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$build; +global.$iq = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$iq; +global.$msg = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$msg; +global.$pres = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$pres; +global.Strophe = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].Strophe; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) + +/***/ }), +/* 2 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ $build; }); __webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ $iq; }); -__webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ Strophe; }); +__webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ Strophe; }); +__webpack_require__.d(__webpack_exports__, "c", function() { return /* reexport */ SHA1; }); -// UNUSED EXPORTS: $msg, $pres, SHA1, MD5 +// UNUSED EXPORTS: $msg, $pres, MD5 // EXTERNAL MODULE: ./node_modules/strophe.js/src/shims.js -var shims = __webpack_require__(14); +var shims = __webpack_require__(9); // CONCATENATED MODULE: ./node_modules/strophe.js/src/md5.js /* @@ -4323,7 +4356,7 @@ var shims = __webpack_require__(14); * Add integers, wrapping at 2^32. This uses 16-bit operations internally * to work around bugs in some JS interpreters. */ -const safe_add = function safe_add(x, y) { +const safe_add = function (x, y) { const lsw = (x & 0xFFFF) + (y & 0xFFFF); const msw = (x >> 16) + (y >> 16) + (lsw >> 16); return msw << 16 | lsw & 0xFFFF; @@ -4333,7 +4366,7 @@ const safe_add = function safe_add(x, y) { */ -const bit_rol = function bit_rol(num, cnt) { +const bit_rol = function (num, cnt) { return num << cnt | num >>> 32 - cnt; }; /* @@ -4341,7 +4374,7 @@ const bit_rol = function bit_rol(num, cnt) { */ -const str2binl = function str2binl(str) { +const str2binl = function (str) { if (typeof str !== "string") { throw new Error("str2binl was passed a non-string"); } @@ -4359,7 +4392,7 @@ const str2binl = function str2binl(str) { */ -const binl2str = function binl2str(bin) { +const binl2str = function (bin) { let str = ""; for (let i = 0; i < bin.length * 32; i += 8) { @@ -4373,7 +4406,7 @@ const binl2str = function binl2str(bin) { */ -const binl2hex = function binl2hex(binarray) { +const binl2hex = function (binarray) { const hex_tab = "0123456789abcdef"; let str = ""; @@ -4388,23 +4421,23 @@ const binl2hex = function binl2hex(binarray) { */ -const md5_cmn = function md5_cmn(q, a, b, x, s, t) { +const md5_cmn = function (q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b); }; -const md5_ff = function md5_ff(a, b, c, d, x, s, t) { +const md5_ff = function (a, b, c, d, x, s, t) { return md5_cmn(b & c | ~b & d, a, b, x, s, t); }; -const md5_gg = function md5_gg(a, b, c, d, x, s, t) { +const md5_gg = function (a, b, c, d, x, s, t) { return md5_cmn(b & d | c & ~d, a, b, x, s, t); }; -const md5_hh = function md5_hh(a, b, c, d, x, s, t) { +const md5_hh = function (a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }; -const md5_ii = function md5_ii(a, b, c, d, x, s, t) { +const md5_ii = function (a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | ~d), a, b, x, s, t); }; /* @@ -4412,7 +4445,7 @@ const md5_ii = function md5_ii(a, b, c, d, x, s, t) { */ -const core_md5 = function core_md5(x, len) { +const core_md5 = function (x, len) { /* append padding */ x[len >> 5] |= 0x80 << len % 32; x[(len + 64 >>> 9 << 4) + 14] = len; @@ -4507,10 +4540,10 @@ const core_md5 = function core_md5(x, len) { const MD5 = { - hexdigest: function hexdigest(s) { + hexdigest: function (s) { return binl2hex(core_md5(str2binl(s), s.length * 8)); }, - hash: function hash(s) { + hash: function (s) { return binl2str(core_md5(str2binl(s), s.length * 8)); } }; @@ -4708,25 +4741,25 @@ function binb2str(bin) { const SHA1 = { - b64_hmac_sha1: function b64_hmac_sha1(key, data) { + b64_hmac_sha1: function (key, data) { return binb2b64(core_hmac_sha1(key, data)); }, - b64_sha1: function b64_sha1(s) { + b64_sha1: function (s) { return binb2b64(core_sha1(str2binb(s), s.length * 8)); }, binb2str: binb2str, core_hmac_sha1: core_hmac_sha1, - str_hmac_sha1: function str_hmac_sha1(key, data) { + str_hmac_sha1: function (key, data) { return binb2str(core_hmac_sha1(key, data)); }, - str_sha1: function str_sha1(s) { + str_sha1: function (s) { return binb2str(core_sha1(str2binb(s), s.length * 8)); } }; // CONCATENATED MODULE: ./node_modules/strophe.js/src/utils.js const utils = { - utf16to8: function utf16to8(str) { + utf16to8: function (str) { var i, c; var out = ""; var len = str.length; @@ -4748,7 +4781,7 @@ const utils = { return out; }, - addCookies: function addCookies(cookies) { + addCookies: function (cookies) { /* Parameters: * (Object) cookies - either a map of cookie names * to string values or to maps of cookie values. @@ -4792,7 +4825,7 @@ const utils = { }; // EXTERNAL MODULE: ./node_modules/abab/index.js -var abab = __webpack_require__(9); +var abab = __webpack_require__(10); // CONCATENATED MODULE: ./node_modules/strophe.js/src/core.js /* @@ -4872,7 +4905,7 @@ function $pres(attrs) { const Strophe = { /** Constant: VERSION */ - VERSION: "1.4.0", + VERSION: "1.4.1", /** Constants: XMPP Namespace Constants * Common namespace constants from the XMPP RFCs and XEPs. @@ -5145,7 +5178,7 @@ const Strophe = { */ xmlGenerator() { if (!Strophe._xmlGenerator) { - Strophe._xmlGenerator = shims["b" /* getDummyXMLDOMDocument */](); + Strophe._xmlGenerator = shims["c" /* getDummyXMLDOMDocument */](); } return Strophe._xmlGenerator; @@ -5583,8 +5616,10 @@ const Strophe = { * (String) msg - The log message. */ log(level, msg) { - if (level === this.LogLevel.FATAL && typeof window.console === 'object' && typeof window.console.error === 'function') { - window.console.error(msg); + if (level === this.LogLevel.FATAL) { + var _console; + + (_console = console) === null || _console === void 0 ? void 0 : _console.error(msg); } }, @@ -6369,18 +6404,9 @@ Strophe.Connection = class Connection { this.service = service; // Configuration options this.options = options || {}; - const proto = this.options.protocol || ""; // Select protocal based on service or options - - if (this.options.worker) { - this._proto = new Strophe.WorkerWebsocket(this); - } else if (service.indexOf("ws:") === 0 || service.indexOf("wss:") === 0 || proto.indexOf("ws") === 0) { - this._proto = new Strophe.Websocket(this); - } else { - this._proto = new Strophe.Bosh(this); - } + this.setProtocol(); /* The connected JID. */ - this.jid = ""; /* the JIDs domain */ @@ -6426,7 +6452,7 @@ Strophe.Connection = class Connection { for (const k in Strophe._connectionPlugins) { if (Object.prototype.hasOwnProperty.call(Strophe._connectionPlugins, k)) { - const F = function F() {}; + const F = function () {}; F.prototype = Strophe._connectionPlugins[k]; this[k] = new F(); @@ -6434,6 +6460,22 @@ Strophe.Connection = class Connection { } } } + /** Function: setProtocol + * Select protocal based on this.options or this.service + */ + + + setProtocol() { + const proto = this.options.protocol || ""; + + if (this.options.worker) { + this._proto = new Strophe.WorkerWebsocket(this); + } else if (this.service.indexOf("ws:") === 0 || this.service.indexOf("wss:") === 0 || proto.indexOf("ws") === 0) { + this._proto = new Strophe.Websocket(this); + } else { + this._proto = new Strophe.Bosh(this); + } + } /** Function: reset * Reset the connection. * @@ -8527,7 +8569,7 @@ Strophe.SASLXOAuth2 = class SASLXOAuth2 extends Strophe.SASLMechanism { }; -/* harmony default export */ var core = __webpack_exports__["d"] = ({ +/* harmony default export */ var core = __webpack_exports__["e"] = ({ 'Strophe': Strophe, '$build': $build, '$iq': $iq, @@ -8542,7 +8584,7 @@ Strophe.SASLXOAuth2 = class SASLXOAuth2 extends Strophe.SASLMechanism { }); /***/ }), -/* 2 */ +/* 3 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -11023,50 +11065,19 @@ if ( true ) { /***/ }), -/* 3 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _bosh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(115); -/* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(54); -/* harmony import */ var _worker_websocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(405); -/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "e", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["e"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["a"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["b"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "c", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["c"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "d", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["d"]; }); - -/*global global*/ - - - - -global.$build = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$build; -global.$iq = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$iq; -global.$msg = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$msg; -global.$pres = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].$pres; -global.Strophe = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "f"].Strophe; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) - -/***/ }), -/* 4 */ +/* 4 */, +/* 5 */ /***/ (function(module, exports, __webpack_require__) { !function(t,e){ true?module.exports=e():undefined}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",o="quarter",a="year",h=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,f=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,c=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},d={s:c,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+c(r,2,"0")+":"+c(i,2,"0")},m:function(t,e){var n=12*(e.year()-t.year())+(e.month()-t.month()),r=t.clone().add(n,u),i=e-r<0,s=t.clone().add(n+(i?-1:1),u);return Number(-(n+(e-r)/(i?r-s:s-r))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:a,w:s,d:i,D:"date",h:r,m:n,s:e,ms:t,Q:o}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},$={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},l="en",m={};m[l]=$;var y=function(t){return t instanceof v},M=function(t,e,n){var r;if(!t)return l;if("string"==typeof t)m[t]&&(r=t),e&&(m[t]=e,r=t);else{var i=t.name;m[i]=t,r=i}return!n&&r&&(l=r),r||!n&&l},g=function(t,e){if(y(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new v(n)},D=d;D.l=M,D.i=y,D.w=function(t,e){return g(t,{locale:e.$L,utc:e.$u,$offset:e.$offset})};var v=function(){function c(t){this.$L=this.$L||M(t.locale,null,!0),this.parse(t)}var d=c.prototype;return d.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(D.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(e)}(t),this.init()},d.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},d.$utils=function(){return D},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(t,e){var n=g(t);return this.startOf(e)<=n&&n<=this.endOf(e)},d.isAfter=function(t,e){return g(t)<this.startOf(e)},d.isBefore=function(t,e){return this.endOf(e)<g(t)},d.$g=function(t,e,n){return D.u(t)?this[e]:this.set(n,t)},d.year=function(t){return this.$g(t,"$y",a)},d.month=function(t){return this.$g(t,"$M",u)},d.day=function(t){return this.$g(t,"$W",i)},d.date=function(t){return this.$g(t,"$D","date")},d.hour=function(t){return this.$g(t,"$H",r)},d.minute=function(t){return this.$g(t,"$m",n)},d.second=function(t){return this.$g(t,"$s",e)},d.millisecond=function(e){return this.$g(e,"$ms",t)},d.unix=function(){return Math.floor(this.valueOf()/1e3)},d.valueOf=function(){return this.$d.getTime()},d.startOf=function(t,o){var h=this,f=!!D.u(o)||o,c=D.p(t),d=function(t,e){var n=D.w(h.$u?Date.UTC(h.$y,e,t):new Date(h.$y,e,t),h);return f?n:n.endOf(i)},$=function(t,e){return D.w(h.toDate()[t].apply(h.toDate("s"),(f?[0,0,0,0]:[23,59,59,999]).slice(e)),h)},l=this.$W,m=this.$M,y=this.$D,M="set"+(this.$u?"UTC":"");switch(c){case a:return f?d(1,0):d(31,11);case u:return f?d(1,m):d(0,m+1);case s:var g=this.$locale().weekStart||0,v=(l<g?l+7:l)-g;return d(f?y-v:y+(6-v),m);case i:case"date":return $(M+"Hours",0);case r:return $(M+"Minutes",1);case n:return $(M+"Seconds",2);case e:return $(M+"Milliseconds",3);default:return this.clone()}},d.endOf=function(t){return this.startOf(t,!1)},d.$set=function(s,o){var h,f=D.p(s),c="set"+(this.$u?"UTC":""),d=(h={},h[i]=c+"Date",h.date=c+"Date",h[u]=c+"Month",h[a]=c+"FullYear",h[r]=c+"Hours",h[n]=c+"Minutes",h[e]=c+"Seconds",h[t]=c+"Milliseconds",h)[f],$=f===i?this.$D+(o-this.$W):o;if(f===u||f===a){var l=this.clone().set("date",1);l.$d[d]($),l.init(),this.$d=l.set("date",Math.min(this.$D,l.daysInMonth())).$d}else d&&this.$d[d]($);return this.init(),this},d.set=function(t,e){return this.clone().$set(t,e)},d.get=function(t){return this[D.p(t)]()},d.add=function(t,o){var h,f=this;t=Number(t);var c=D.p(o),d=function(e){var n=g(f);return D.w(n.date(n.date()+Math.round(e*t)),f)};if(c===u)return this.set(u,this.$M+t);if(c===a)return this.set(a,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(h={},h[n]=6e4,h[r]=36e5,h[e]=1e3,h)[c]||1,l=this.$d.getTime()+t*$;return D.w(l,this)},d.subtract=function(t,e){return this.add(-1*t,e)},d.format=function(t){var e=this;if(!this.isValid())return"Invalid Date";var n=t||"YYYY-MM-DDTHH:mm:ssZ",r=D.z(this),i=this.$locale(),s=this.$H,u=this.$m,o=this.$M,a=i.weekdays,h=i.months,c=function(t,r,i,s){return t&&(t[r]||t(e,n))||i[r].substr(0,s)},d=function(t){return D.s(s%12||12,t,"0")},$=i.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:o+1,MM:D.s(o+1,2,"0"),MMM:c(i.monthsShort,o,h,3),MMMM:c(h,o),D:this.$D,DD:D.s(this.$D,2,"0"),d:String(this.$W),dd:c(i.weekdaysMin,this.$W,a,2),ddd:c(i.weekdaysShort,this.$W,a,3),dddd:a[this.$W],H:String(s),HH:D.s(s,2,"0"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:D.s(u,2,"0"),s:String(this.$s),ss:D.s(this.$s,2,"0"),SSS:D.s(this.$ms,3,"0"),Z:r};return n.replace(f,function(t,e){return e||l[t]||r.replace(":","")})},d.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},d.diff=function(t,h,f){var c,d=D.p(h),$=g(t),l=6e4*($.utcOffset()-this.utcOffset()),m=this-$,y=D.m(this,$);return y=(c={},c[a]=y/12,c[u]=y,c[o]=y/3,c[s]=(m-l)/6048e5,c[i]=(m-l)/864e5,c[r]=m/36e5,c[n]=m/6e4,c[e]=m/1e3,c)[d]||m,f?y:D.a(y)},d.daysInMonth=function(){return this.endOf(u).$D},d.$locale=function(){return m[this.$L]},d.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=M(t,e,!0);return r&&(n.$L=r),n},d.clone=function(){return D.w(this.$d,this)},d.toDate=function(){return new Date(this.valueOf())},d.toJSON=function(){return this.isValid()?this.toISOString():null},d.toISOString=function(){return this.$d.toISOString()},d.toString=function(){return this.$d.toUTCString()},c}();return g.prototype=v.prototype,g.extend=function(t,e){return t(e,v,g),g},g.locale=M,g.isDayjs=y,g.unix=function(t){return g(1e3*t)},g.en=m[l],g.Ls=m,g}); /***/ }), -/* 5 */ +/* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49); +/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); /** Detect free variable `self`. */ @@ -11079,7 +11090,6 @@ var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"] || fre /***/ }), -/* 6 */, /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { @@ -11277,18 +11287,18 @@ function binb2str(bin) { const SHA1 = { - b64_hmac_sha1: function b64_hmac_sha1(key, data) { + b64_hmac_sha1: function (key, data) { return binb2b64(core_hmac_sha1(key, data)); }, - b64_sha1: function b64_sha1(s) { + b64_sha1: function (s) { return binb2b64(core_sha1(str2binb(s), s.length * 8)); }, binb2str: binb2str, core_hmac_sha1: core_hmac_sha1, - str_hmac_sha1: function str_hmac_sha1(key, data) { + str_hmac_sha1: function (key, data) { return binb2str(core_hmac_sha1(key, data)); }, - str_sha1: function str_sha1(s) { + str_sha1: function (s) { return binb2str(core_sha1(str2binb(s), s.length * 8)); } }; @@ -11298,8 +11308,8 @@ const SHA1 = { /* 8 */ /***/ (function(module, exports, __webpack_require__) { -var escapeHtmlChar = __webpack_require__(408), - toString = __webpack_require__(113); +var escapeHtmlChar = __webpack_require__(496), + toString = __webpack_require__(137); /** Used to match HTML entities and HTML characters. */ var reUnescapedHtml = /[&<>"']/g, @@ -11345,108 +11355,12 @@ module.exports = escape; /***/ }), /* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -const atob = __webpack_require__(288); -const btoa = __webpack_require__(289); - -module.exports = { - atob, - btoa -}; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -var freeGlobal = __webpack_require__(72); - -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); - -module.exports = root; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -var g; - -// This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} - -// g can still be undefined, but nothing to do about it... -// We return undefined, instead of nothing here, so it's -// easier to handle this case. if(!global) { ...} - -module.exports = g; - - -/***/ }), -/* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(49); - - -/** Detect free variable `exports`. */ -var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].process; - -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); - -/* harmony default export */ __webpack_exports__["a"] = (nodeUtil); - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(55)(module))) - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export WebSocket */ +/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return WebSocket; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DOMParser; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getDummyXMLDOMDocument; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getDummyXMLDOMDocument; }); /* * This module provides uniform * Shims APIs and globals that are not present in all JS environments, @@ -11476,7 +11390,7 @@ function getWebSocketImplementation() { if (typeof WebSocketImplementation === 'undefined') { try { - WebSocketImplementation = __webpack_require__(286); + WebSocketImplementation = __webpack_require__(499); } catch (err) { throw new Error('You must install the "ws" package to use Strophe in nodejs.'); } @@ -11504,7 +11418,7 @@ function getDOMParserImplementation() { if (typeof DOMParserImplementation === 'undefined') { try { - DOMParserImplementation = __webpack_require__(37).DOMParser; + DOMParserImplementation = __webpack_require__(47).DOMParser; } catch (err) { throw new Error('You must install the "xmldom" package to use Strophe in nodejs.'); } @@ -11550,7 +11464,7 @@ function getDummyXMLDOMDocument() { // nodejs if (typeof document === 'undefined') { try { - const DOMImplementation = __webpack_require__(37).DOMImplementation; + const DOMImplementation = __webpack_require__(47).DOMImplementation; return new DOMImplementation().createDocument('jabber:client', 'strophe', null); } catch (err) { @@ -11569,12 +11483,120 @@ function getDummyXMLDOMDocument() { return document.implementation.createDocument('jabber:client', 'strophe', null); } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const atob = __webpack_require__(330); +const btoa = __webpack_require__(331); + +module.exports = { + atob, + btoa +}; + + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { + +var freeGlobal = __webpack_require__(96); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + + +/***/ }), +/* 12 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + /***/ }), /* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { +"use strict"; +/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(63); + + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +/* harmony default export */ __webpack_exports__["a"] = (nodeUtil); + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(69)(module))) + +/***/ }), +/* 15 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export WebSocket */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DOMParser; }); @@ -11608,7 +11630,7 @@ function getWebSocketImplementation() { if (typeof WebSocketImplementation === 'undefined') { try { - WebSocketImplementation = __webpack_require__(411); + WebSocketImplementation = __webpack_require__(328); } catch (err) { throw new Error('You must install the "ws" package to use Strophe in nodejs.'); } @@ -11636,7 +11658,7 @@ function getDOMParserImplementation() { if (typeof DOMParserImplementation === 'undefined') { try { - DOMParserImplementation = __webpack_require__(37).DOMParser; + DOMParserImplementation = __webpack_require__(47).DOMParser; } catch (err) { throw new Error('You must install the "xmldom" package to use Strophe in nodejs.'); } @@ -11682,7 +11704,7 @@ function getDummyXMLDOMDocument() { // nodejs if (typeof document === 'undefined') { try { - const DOMImplementation = __webpack_require__(37).DOMImplementation; + const DOMImplementation = __webpack_require__(47).DOMImplementation; return new DOMImplementation().createDocument('jabber:client', 'strophe', null); } catch (err) { @@ -11701,10 +11723,10 @@ function getDummyXMLDOMDocument() { return document.implementation.createDocument('jabber:client', 'strophe', null); } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 15 */ +/* 16 */ /***/ (function(module, exports) { /** @@ -11736,7 +11758,24 @@ module.exports = isArray; /***/ }), -/* 16 */ +/* 17 */ +/***/ (function(module, exports, __webpack_require__) { + +var store = __webpack_require__(144)('wks'); +var uid = __webpack_require__(145); +var Symbol = __webpack_require__(13).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + +/***/ }), +/* 18 */ /***/ (function(module, exports, __webpack_require__) { var require;var require;(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return require(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){ @@ -13359,7 +13398,15 @@ exports["filterXSS"] = (filterXSS); exports["filterCSS"] = (filterCSS); /***/ }), -/* 17 */ +/* 19 */ +/***/ (function(module, exports) { + +var core = module.exports = { version: '2.6.12' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + + +/***/ }), +/* 20 */ /***/ (function(module, exports) { /** @@ -13396,12 +13443,12 @@ module.exports = isObject; /***/ }), -/* 18 */ +/* 21 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); -/* harmony import */ var _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(120); +/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); +/* harmony import */ var _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159); @@ -13441,130 +13488,12 @@ var isBuffer = nativeIsBuffer || _stubFalse_js__WEBPACK_IMPORTED_MODULE_1__[/* d /* harmony default export */ __webpack_exports__["a"] = (isBuffer); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(55)(module))) - -/***/ }), -/* 19 */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} - -module.exports = isObjectLike; - - -/***/ }), -/* 20 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _bosh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(410); -/* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(119); -/* harmony import */ var _worker_websocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(412); -/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1); -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["c"]; }); - -/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["b"]; }); - -/*global global*/ - - - - -global.$build = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "d"].$build; -global.$iq = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "d"].$iq; -global.$msg = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "d"].$msg; -global.$pres = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "d"].$pres; -global.Strophe = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "d"].Strophe; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(39), - getRawTag = __webpack_require__(293), - objectToString = __webpack_require__(294); - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} - -module.exports = baseGetTag; - +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(69)(module))) /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsNative = __webpack_require__(311), - getValue = __webpack_require__(314); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} - -module.exports = getNative; - - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __webpack_require__) { - /* WEBPACK VAR INJECTION */(function(global) {var require;var require;/*! localForage -- Offline Storage, Improved Version 1.9.0 @@ -16367,15 +16296,148 @@ module.exports = localforage_js; },{"3":3}]},{},[4])(4) }); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) + +/***/ }), +/* 23 */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + + +/***/ }), +/* 24 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/* unused harmony export b64_sha1 */ +/* harmony import */ var _bosh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(498); +/* harmony import */ var _websocket__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(158); +/* harmony import */ var _worker_websocket__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(500); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "b", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["d"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _core__WEBPACK_IMPORTED_MODULE_3__["b"]; }); + +/*global global*/ + + + + +global.$build = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "e"].$build; +global.$iq = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "e"].$iq; +global.$msg = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "e"].$msg; +global.$pres = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "e"].$pres; +global.Strophe = _core__WEBPACK_IMPORTED_MODULE_3__[/* default */ "e"].Strophe; + +const { + b64_sha1 +} = _core__WEBPACK_IMPORTED_MODULE_3__[/* SHA1 */ "c"]; +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 24 */, /* 25 */ /***/ (function(module, exports, __webpack_require__) { -var isFunction = __webpack_require__(48), - isLength = __webpack_require__(57); +var Symbol = __webpack_require__(49), + getRawTag = __webpack_require__(335), + objectToString = __webpack_require__(336); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsNative = __webpack_require__(353), + getValue = __webpack_require__(356); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(41); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), +/* 28 */, +/* 29 */ +/***/ (function(module, exports, __webpack_require__) { + +var isFunction = __webpack_require__(62), + isLength = __webpack_require__(71); /** * Checks if `value` is array-like. A value is considered array-like if it's @@ -16410,12 +16472,104 @@ module.exports = isArrayLike; /***/ }), -/* 26 */ +/* 30 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(13); +var core = __webpack_require__(19); +var ctx = __webpack_require__(58); +var hide = __webpack_require__(31); +var has = __webpack_require__(60); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var IS_WRAP = type & $export.W; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE]; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; + var key, own, out; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + if (own && has(exports, key)) continue; + // export native or passed + out = own ? target[key] : source[key]; + // prevent global pollution for namespaces + exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] + // bind timers to global for call from export context + : IS_BIND && own ? ctx(out, global) + // wrap global constructors for prevent change them in library + : IS_WRAP && target[key] == out ? (function (C) { + var F = function (a, b, c) { + if (this instanceof C) { + switch (arguments.length) { + case 0: return new C(); + case 1: return new C(a); + case 2: return new C(a, b); + } return new C(a, b, c); + } return C.apply(this, arguments); + }; + F[PROTOTYPE] = C[PROTOTYPE]; + return F; + // make static versions for prototype methods + })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% + if (IS_PROTO) { + (exports.virtual || (exports.virtual = {}))[key] = out; + // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% + if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); + } + } +}; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(40); +var createDesc = __webpack_require__(140); +module.exports = __webpack_require__(32) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(82)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 33 */ /***/ (function(module, exports, __webpack_require__) { -var arrayLikeKeys = __webpack_require__(74), - baseKeys = __webpack_require__(78), - isArrayLike = __webpack_require__(25); +var arrayLikeKeys = __webpack_require__(98), + baseKeys = __webpack_require__(102), + isArrayLike = __webpack_require__(29); /** * Creates an array of the own enumerable property names of `object`. @@ -16453,7 +16607,7 @@ module.exports = keys; /***/ }), -/* 27 */ +/* 34 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;// Native Javascript for Bootstrap 4 v2.0.27 | © dnp_theme | MIT-License @@ -18069,10 +18223,10 @@ module.exports = keys; }; })); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 28 */ +/* 35 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -18092,10 +18246,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ if ( true && module.exports) { // Node - module.exports = factory(__webpack_require__(116), __webpack_require__(117), __webpack_require__(118)); + module.exports = factory(__webpack_require__(155), __webpack_require__(156), __webpack_require__(157)); } else if (true) { // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(116), __webpack_require__(117), __webpack_require__(118)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(155), __webpack_require__(156), __webpack_require__(157)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); @@ -18522,7 +18676,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ var _part; - var generateAccessor = function generateAccessor(_group, _part) { + var generateAccessor = function (_group, _part) { return function (string) { try { return URI[_part](string + '').replace(URI.characters[_group][_part].expression, function (c) { @@ -18543,7 +18697,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ URI[_part + 'UrnPathSegment'] = generateAccessor('urnpath', _parts[_part]); } - var generateSegmentedPathFunction = function generateSegmentedPathFunction(_sep, _codingFuncName, _innerCodingFuncName) { + var generateSegmentedPathFunction = function (_sep, _codingFuncName, _innerCodingFuncName) { return function (string) { // Why pass in names of functions, rather than the function objects themselves? The // definitions of some functions (but in particular, URI.decode) will occasionally change due @@ -18554,7 +18708,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ if (!_innerCodingFuncName) { actualCodingFunc = URI[_codingFuncName]; } else { - actualCodingFunc = function actualCodingFunc(string) { + actualCodingFunc = function (string) { return URI[_codingFuncName](URI[_innerCodingFuncName](string)); }; } @@ -20503,14 +20657,14 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ }); /***/ }), -/* 29 */ +/* 36 */ /***/ (function(module, exports, __webpack_require__) { -var baseIndexOf = __webpack_require__(89), - isArrayLike = __webpack_require__(25), - isString = __webpack_require__(90), - toInteger = __webpack_require__(56), - values = __webpack_require__(68); +var baseIndexOf = __webpack_require__(113), + isArrayLike = __webpack_require__(29), + isString = __webpack_require__(114), + toInteger = __webpack_require__(70), + values = __webpack_require__(92); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; @@ -20562,7 +20716,7 @@ module.exports = includes; /***/ }), -/* 30 */ +/* 37 */ /***/ (function(module, exports) { /** Used as references for various `Number` constants. */ @@ -20593,7 +20747,7 @@ module.exports = isIndex; /***/ }), -/* 31 */ +/* 38 */ /***/ (function(module, exports) { /** @@ -20620,10 +20774,10 @@ module.exports = identity; /***/ }), -/* 32 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { -var isSymbol = __webpack_require__(38); +var isSymbol = __webpack_require__(48); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -20647,7 +20801,45 @@ module.exports = toKey; /***/ }), -/* 33 */ +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(27); +var IE8_DOM_DEFINE = __webpack_require__(451); +var toPrimitive = __webpack_require__(452); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(32) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 41 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), +/* 42 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 43 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global, module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** @@ -37804,24 +37996,24 @@ module.exports = toKey; else {} }.call(this)); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11), __webpack_require__(36)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12), __webpack_require__(46)(module))) /***/ }), -/* 34 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(295); +module.exports = __webpack_require__(337); /***/ }), -/* 35 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(309); +module.exports = __webpack_require__(351); /***/ }), -/* 36 */ +/* 46 */ /***/ (function(module, exports) { module.exports = function(module) { @@ -37849,7 +38041,7 @@ module.exports = function(module) { /***/ }), -/* 37 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { function DOMParser(options){ @@ -38098,19 +38290,19 @@ function appendElement (hander,node) { }//appendChild and setAttributeNS are preformance key //if(typeof require == 'function'){ - var XMLReader = __webpack_require__(287).XMLReader; - var DOMImplementation = exports.DOMImplementation = __webpack_require__(71).DOMImplementation; - exports.XMLSerializer = __webpack_require__(71).XMLSerializer ; + var XMLReader = __webpack_require__(329).XMLReader; + var DOMImplementation = exports.DOMImplementation = __webpack_require__(95).DOMImplementation; + exports.XMLSerializer = __webpack_require__(95).XMLSerializer ; exports.DOMParser = DOMParser; //} /***/ }), -/* 38 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isObjectLike = __webpack_require__(19); +var baseGetTag = __webpack_require__(25), + isObjectLike = __webpack_require__(23); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; @@ -38141,10 +38333,10 @@ module.exports = isSymbol; /***/ }), -/* 39 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(10); +var root = __webpack_require__(11); /** Built-in value references. */ var Symbol = root.Symbol; @@ -38153,7 +38345,7 @@ module.exports = Symbol; /***/ }), -/* 40 */ +/* 50 */ /***/ (function(module, exports) { /** @@ -38196,11 +38388,11 @@ module.exports = eq; /***/ }), -/* 41 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { -var baseCreate = __webpack_require__(60), - isObject = __webpack_require__(17); +var baseCreate = __webpack_require__(74), + isObject = __webpack_require__(20); /** * Creates a function that produces an instance of `Ctor` regardless of @@ -38239,7 +38431,7 @@ module.exports = createCtor; /***/ }), -/* 42 */ +/* 52 */ /***/ (function(module, exports) { /** Used as the internal argument placeholder. */ @@ -38274,14 +38466,14 @@ module.exports = replaceHolders; /***/ }), -/* 43 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { -var listCacheClear = __webpack_require__(346), - listCacheDelete = __webpack_require__(347), - listCacheGet = __webpack_require__(348), - listCacheHas = __webpack_require__(349), - listCacheSet = __webpack_require__(350); +var listCacheClear = __webpack_require__(388), + listCacheDelete = __webpack_require__(389), + listCacheGet = __webpack_require__(390), + listCacheHas = __webpack_require__(391), + listCacheSet = __webpack_require__(392); /** * Creates an list cache object. @@ -38312,10 +38504,10 @@ module.exports = ListCache; /***/ }), -/* 44 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { -var eq = __webpack_require__(40); +var eq = __webpack_require__(50); /** * Gets the index at which the `key` is found in `array` of key-value pairs. @@ -38339,10 +38531,10 @@ module.exports = assocIndexOf; /***/ }), -/* 45 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22); +var getNative = __webpack_require__(26); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); @@ -38351,10 +38543,10 @@ module.exports = nativeCreate; /***/ }), -/* 46 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { -var isKeyable = __webpack_require__(364); +var isKeyable = __webpack_require__(406); /** * Gets the data for `map`. @@ -38375,13 +38567,13 @@ module.exports = getMapData; /***/ }), -/* 47 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { -var isArray = __webpack_require__(15), - isKey = __webpack_require__(67), - stringToPath = __webpack_require__(387), - toString = __webpack_require__(113); +var isArray = __webpack_require__(16), + isKey = __webpack_require__(81), + stringToPath = __webpack_require__(429), + toString = __webpack_require__(137); /** * Casts `value` to a path array if it's not one. @@ -38402,11 +38594,68 @@ module.exports = castPath; /***/ }), -/* 48 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isObject = __webpack_require__(17); +// optional / simple context binding +var aFunction = __webpack_require__(59); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), +/* 59 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + + +/***/ }), +/* 60 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), +/* 61 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(25), + isObject = __webpack_require__(20); /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]', @@ -38445,7 +38694,7 @@ module.exports = isFunction; /***/ }), -/* 49 */ +/* 63 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -38454,10 +38703,10 @@ var freeGlobal = typeof global == 'object' && global && global.Object === Object /* harmony default export */ __webpack_exports__["a"] = (freeGlobal); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 50 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -38511,7 +38760,7 @@ return __p }; /***/ }), -/* 51 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -38547,16 +38796,16 @@ return __p }; /***/ }), -/* 52 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(33)], __WEBPACK_AMD_DEFINE_RESULT__ = (function (_) { +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(43)], __WEBPACK_AMD_DEFINE_RESULT__ = (function (_) { return _.noConflict(); }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); /***/ }), -/* 53 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -39581,11 +39830,11 @@ return parser; /***/ }), -/* 54 */ +/* 68 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); /* This program is distributed under the terms of the MIT license. @@ -40229,7 +40478,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Websocket = class Websocke }; /***/ }), -/* 55 */ +/* 69 */ /***/ (function(module, exports) { module.exports = function(originalModule) { @@ -40259,10 +40508,10 @@ module.exports = function(originalModule) { /***/ }), -/* 56 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { -var toFinite = __webpack_require__(291); +var toFinite = __webpack_require__(333); /** * Converts `value` to an integer. @@ -40301,7 +40550,7 @@ module.exports = toInteger; /***/ }), -/* 57 */ +/* 71 */ /***/ (function(module, exports) { /** Used as references for various `Number` constants. */ @@ -40342,7 +40591,7 @@ module.exports = isLength; /***/ }), -/* 58 */ +/* 72 */ /***/ (function(module, exports) { /** @@ -40369,7 +40618,7 @@ module.exports = apply; /***/ }), -/* 59 */ +/* 73 */ /***/ (function(module, exports) { /** @@ -40396,10 +40645,10 @@ module.exports = arrayMap; /***/ }), -/* 60 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(17); +var isObject = __webpack_require__(20); /** Built-in value references. */ var objectCreate = Object.create; @@ -40432,11 +40681,11 @@ module.exports = baseCreate; /***/ }), -/* 61 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { -var baseCreate = __webpack_require__(60), - baseLodash = __webpack_require__(62); +var baseCreate = __webpack_require__(74), + baseLodash = __webpack_require__(76); /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295; @@ -40466,7 +40715,7 @@ module.exports = LazyWrapper; /***/ }), -/* 62 */ +/* 76 */ /***/ (function(module, exports) { /** @@ -40482,7 +40731,7 @@ module.exports = baseLodash; /***/ }), -/* 63 */ +/* 77 */ /***/ (function(module, exports) { /** @@ -40501,11 +40750,11 @@ module.exports = getHolder; /***/ }), -/* 64 */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22), - root = __webpack_require__(10); +var getNative = __webpack_require__(26), + root = __webpack_require__(11); /* Built-in method references that are verified to be native. */ var Map = getNative(root, 'Map'); @@ -40514,14 +40763,14 @@ module.exports = Map; /***/ }), -/* 65 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { -var mapCacheClear = __webpack_require__(356), - mapCacheDelete = __webpack_require__(363), - mapCacheGet = __webpack_require__(365), - mapCacheHas = __webpack_require__(366), - mapCacheSet = __webpack_require__(367); +var mapCacheClear = __webpack_require__(398), + mapCacheDelete = __webpack_require__(405), + mapCacheGet = __webpack_require__(407), + mapCacheHas = __webpack_require__(408), + mapCacheSet = __webpack_require__(409); /** * Creates a map cache object to store key-value pairs. @@ -40552,11 +40801,11 @@ module.exports = MapCache; /***/ }), -/* 66 */ +/* 80 */ /***/ (function(module, exports, __webpack_require__) { -var castPath = __webpack_require__(47), - toKey = __webpack_require__(32); +var castPath = __webpack_require__(57), + toKey = __webpack_require__(39); /** * The base implementation of `_.get` without support for default values. @@ -40582,11 +40831,11 @@ module.exports = baseGet; /***/ }), -/* 67 */ +/* 81 */ /***/ (function(module, exports, __webpack_require__) { -var isArray = __webpack_require__(15), - isSymbol = __webpack_require__(38); +var isArray = __webpack_require__(16), + isSymbol = __webpack_require__(48); /** Used to match property names within property paths. */ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, @@ -40617,11 +40866,134 @@ module.exports = isKey; /***/ }), -/* 68 */ +/* 82 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(41); +var document = __webpack_require__(13).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + + +/***/ }), +/* 84 */ +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(457); +var defined = __webpack_require__(84); +module.exports = function (it) { + return IObject(defined(it)); +}; + + +/***/ }), +/* 86 */ +/***/ (function(module, exports) { + +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(144)('keys'); +var uid = __webpack_require__(145); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + + +/***/ }), +/* 88 */ +/***/ (function(module, exports) { + +module.exports = true; + + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(465), __esModule: true }; + +/***/ }), +/* 90 */ +/***/ (function(module, exports, __webpack_require__) { + +var def = __webpack_require__(40).f; +var has = __webpack_require__(60); +var TAG = __webpack_require__(17)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = __webpack_require__(59); + +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} + +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), +/* 92 */ /***/ (function(module, exports, __webpack_require__) { -var baseValues = __webpack_require__(325), - keys = __webpack_require__(26); +var baseValues = __webpack_require__(367), + keys = __webpack_require__(33); /** * Creates an array of the own enumerable string keyed property values of `object`. @@ -40657,13 +41029,13 @@ module.exports = values; /***/ }), -/* 69 */ +/* 93 */ /***/ (function(module, exports, __webpack_require__) { -var baseRest = __webpack_require__(85), - createWrap = __webpack_require__(326), - getHolder = __webpack_require__(63), - replaceHolders = __webpack_require__(42); +var baseRest = __webpack_require__(109), + createWrap = __webpack_require__(368), + getHolder = __webpack_require__(77), + replaceHolders = __webpack_require__(52); /** Used to compose bitmasks for function metadata. */ var WRAP_PARTIAL_FLAG = 32; @@ -40713,7 +41085,7 @@ module.exports = partial; /***/ }), -/* 70 */ +/* 94 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/* global window, exports, define */ @@ -40986,7 +41358,7 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/* global window, exports, define */ }(); // eslint-disable-line /***/ }), -/* 71 */ +/* 95 */ /***/ (function(module, exports) { /* @@ -42236,7 +42608,7 @@ try{ /***/ }), -/* 72 */ +/* 96 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ @@ -42244,10 +42616,10 @@ var freeGlobal = typeof global == 'object' && global && global.Object === Object module.exports = freeGlobal; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 73 */ +/* 97 */ /***/ (function(module, exports) { /** @@ -42275,15 +42647,15 @@ module.exports = arrayEach; /***/ }), -/* 74 */ +/* 98 */ /***/ (function(module, exports, __webpack_require__) { -var baseTimes = __webpack_require__(300), - isArguments = __webpack_require__(75), - isArray = __webpack_require__(15), - isBuffer = __webpack_require__(76), - isIndex = __webpack_require__(30), - isTypedArray = __webpack_require__(77); +var baseTimes = __webpack_require__(342), + isArguments = __webpack_require__(99), + isArray = __webpack_require__(16), + isBuffer = __webpack_require__(100), + isIndex = __webpack_require__(37), + isTypedArray = __webpack_require__(101); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -42330,11 +42702,11 @@ module.exports = arrayLikeKeys; /***/ }), -/* 75 */ +/* 99 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsArguments = __webpack_require__(301), - isObjectLike = __webpack_require__(19); +var baseIsArguments = __webpack_require__(343), + isObjectLike = __webpack_require__(23); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -42372,11 +42744,11 @@ module.exports = isArguments; /***/ }), -/* 76 */ +/* 100 */ /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(10), - stubFalse = __webpack_require__(302); +/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(11), + stubFalse = __webpack_require__(344); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -42414,15 +42786,15 @@ var isBuffer = nativeIsBuffer || stubFalse; module.exports = isBuffer; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(36)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(46)(module))) /***/ }), -/* 77 */ +/* 101 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsTypedArray = __webpack_require__(303), - baseUnary = __webpack_require__(304), - nodeUtil = __webpack_require__(305); +var baseIsTypedArray = __webpack_require__(345), + baseUnary = __webpack_require__(346), + nodeUtil = __webpack_require__(347); /* Node.js helper references. */ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; @@ -42450,11 +42822,11 @@ module.exports = isTypedArray; /***/ }), -/* 78 */ +/* 102 */ /***/ (function(module, exports, __webpack_require__) { -var isPrototype = __webpack_require__(79), - nativeKeys = __webpack_require__(306); +var isPrototype = __webpack_require__(103), + nativeKeys = __webpack_require__(348); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -42486,7 +42858,7 @@ module.exports = baseKeys; /***/ }), -/* 79 */ +/* 103 */ /***/ (function(module, exports) { /** Used for built-in method references. */ @@ -42510,7 +42882,7 @@ module.exports = isPrototype; /***/ }), -/* 80 */ +/* 104 */ /***/ (function(module, exports) { /** @@ -42531,11 +42903,11 @@ module.exports = overArg; /***/ }), -/* 81 */ +/* 105 */ /***/ (function(module, exports, __webpack_require__) { -var baseAssignValue = __webpack_require__(82), - eq = __webpack_require__(40); +var baseAssignValue = __webpack_require__(106), + eq = __webpack_require__(50); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -42565,10 +42937,10 @@ module.exports = assignValue; /***/ }), -/* 82 */ +/* 106 */ /***/ (function(module, exports, __webpack_require__) { -var defineProperty = __webpack_require__(83); +var defineProperty = __webpack_require__(107); /** * The base implementation of `assignValue` and `assignMergeValue` without @@ -42596,10 +42968,10 @@ module.exports = baseAssignValue; /***/ }), -/* 83 */ +/* 107 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22); +var getNative = __webpack_require__(26); var defineProperty = (function() { try { @@ -42613,7 +42985,7 @@ module.exports = defineProperty; /***/ }), -/* 84 */ +/* 108 */ /***/ (function(module, exports) { /** Used for built-in method references. */ @@ -42645,12 +43017,12 @@ module.exports = toSource; /***/ }), -/* 85 */ +/* 109 */ /***/ (function(module, exports, __webpack_require__) { -var identity = __webpack_require__(31), - overRest = __webpack_require__(316), - setToString = __webpack_require__(86); +var identity = __webpack_require__(38), + overRest = __webpack_require__(358), + setToString = __webpack_require__(110); /** * The base implementation of `_.rest` which doesn't validate or coerce arguments. @@ -42668,11 +43040,11 @@ module.exports = baseRest; /***/ }), -/* 86 */ +/* 110 */ /***/ (function(module, exports, __webpack_require__) { -var baseSetToString = __webpack_require__(317), - shortOut = __webpack_require__(87); +var baseSetToString = __webpack_require__(359), + shortOut = __webpack_require__(111); /** * Sets the `toString` method of `func` to return `string`. @@ -42688,7 +43060,7 @@ module.exports = setToString; /***/ }), -/* 87 */ +/* 111 */ /***/ (function(module, exports) { /** Used to detect hot functions by number of calls within a span of milliseconds. */ @@ -42731,12 +43103,12 @@ module.exports = shortOut; /***/ }), -/* 88 */ +/* 112 */ /***/ (function(module, exports, __webpack_require__) { -var arrayLikeKeys = __webpack_require__(74), - baseKeysIn = __webpack_require__(320), - isArrayLike = __webpack_require__(25); +var arrayLikeKeys = __webpack_require__(98), + baseKeysIn = __webpack_require__(362), + isArrayLike = __webpack_require__(29); /** * Creates an array of the own and inherited enumerable property names of `object`. @@ -42769,12 +43141,12 @@ module.exports = keysIn; /***/ }), -/* 89 */ +/* 113 */ /***/ (function(module, exports, __webpack_require__) { -var baseFindIndex = __webpack_require__(322), - baseIsNaN = __webpack_require__(323), - strictIndexOf = __webpack_require__(324); +var baseFindIndex = __webpack_require__(364), + baseIsNaN = __webpack_require__(365), + strictIndexOf = __webpack_require__(366); /** * The base implementation of `_.indexOf` without `fromIndex` bounds checks. @@ -42795,12 +43167,12 @@ module.exports = baseIndexOf; /***/ }), -/* 90 */ +/* 114 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isArray = __webpack_require__(15), - isObjectLike = __webpack_require__(19); +var baseGetTag = __webpack_require__(25), + isArray = __webpack_require__(16), + isObjectLike = __webpack_require__(23); /** `Object#toString` result references. */ var stringTag = '[object String]'; @@ -42831,11 +43203,11 @@ module.exports = isString; /***/ }), -/* 91 */ +/* 115 */ /***/ (function(module, exports, __webpack_require__) { -var identity = __webpack_require__(31), - metaMap = __webpack_require__(92); +var identity = __webpack_require__(38), + metaMap = __webpack_require__(116); /** * The base implementation of `setData` without support for hot loop shorting. @@ -42854,10 +43226,10 @@ module.exports = baseSetData; /***/ }), -/* 92 */ +/* 116 */ /***/ (function(module, exports, __webpack_require__) { -var WeakMap = __webpack_require__(93); +var WeakMap = __webpack_require__(117); /** Used to store function metadata. */ var metaMap = WeakMap && new WeakMap; @@ -42866,11 +43238,11 @@ module.exports = metaMap; /***/ }), -/* 93 */ +/* 117 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22), - root = __webpack_require__(10); +var getNative = __webpack_require__(26), + root = __webpack_require__(11); /* Built-in method references that are verified to be native. */ var WeakMap = getNative(root, 'WeakMap'); @@ -42879,18 +43251,18 @@ module.exports = WeakMap; /***/ }), -/* 94 */ +/* 118 */ /***/ (function(module, exports, __webpack_require__) { -var composeArgs = __webpack_require__(95), - composeArgsRight = __webpack_require__(96), - countHolders = __webpack_require__(329), - createCtor = __webpack_require__(41), - createRecurry = __webpack_require__(97), - getHolder = __webpack_require__(63), - reorder = __webpack_require__(340), - replaceHolders = __webpack_require__(42), - root = __webpack_require__(10); +var composeArgs = __webpack_require__(119), + composeArgsRight = __webpack_require__(120), + countHolders = __webpack_require__(371), + createCtor = __webpack_require__(51), + createRecurry = __webpack_require__(121), + getHolder = __webpack_require__(77), + reorder = __webpack_require__(382), + replaceHolders = __webpack_require__(52), + root = __webpack_require__(11); /** Used to compose bitmasks for function metadata. */ var WRAP_BIND_FLAG = 1, @@ -42977,7 +43349,7 @@ module.exports = createHybrid; /***/ }), -/* 95 */ +/* 119 */ /***/ (function(module, exports) { /* Built-in method references for those with the same name as other `lodash` methods. */ @@ -43022,7 +43394,7 @@ module.exports = composeArgs; /***/ }), -/* 96 */ +/* 120 */ /***/ (function(module, exports) { /* Built-in method references for those with the same name as other `lodash` methods. */ @@ -43069,12 +43441,12 @@ module.exports = composeArgsRight; /***/ }), -/* 97 */ +/* 121 */ /***/ (function(module, exports, __webpack_require__) { -var isLaziable = __webpack_require__(330), - setData = __webpack_require__(101), - setWrapToString = __webpack_require__(102); +var isLaziable = __webpack_require__(372), + setData = __webpack_require__(125), + setWrapToString = __webpack_require__(126); /** Used to compose bitmasks for function metadata. */ var WRAP_BIND_FLAG = 1, @@ -43131,11 +43503,11 @@ module.exports = createRecurry; /***/ }), -/* 98 */ +/* 122 */ /***/ (function(module, exports, __webpack_require__) { -var metaMap = __webpack_require__(92), - noop = __webpack_require__(331); +var metaMap = __webpack_require__(116), + noop = __webpack_require__(373); /** * Gets metadata for `func`. @@ -43152,11 +43524,11 @@ module.exports = getData; /***/ }), -/* 99 */ +/* 123 */ /***/ (function(module, exports, __webpack_require__) { -var baseCreate = __webpack_require__(60), - baseLodash = __webpack_require__(62); +var baseCreate = __webpack_require__(74), + baseLodash = __webpack_require__(76); /** * The base constructor for creating `lodash` wrapper objects. @@ -43180,7 +43552,7 @@ module.exports = LodashWrapper; /***/ }), -/* 100 */ +/* 124 */ /***/ (function(module, exports) { /** @@ -43206,11 +43578,11 @@ module.exports = copyArray; /***/ }), -/* 101 */ +/* 125 */ /***/ (function(module, exports, __webpack_require__) { -var baseSetData = __webpack_require__(91), - shortOut = __webpack_require__(87); +var baseSetData = __webpack_require__(115), + shortOut = __webpack_require__(111); /** * Sets metadata for `func`. @@ -43232,13 +43604,13 @@ module.exports = setData; /***/ }), -/* 102 */ +/* 126 */ /***/ (function(module, exports, __webpack_require__) { -var getWrapDetails = __webpack_require__(336), - insertWrapDetails = __webpack_require__(337), - setToString = __webpack_require__(86), - updateWrapDetails = __webpack_require__(338); +var getWrapDetails = __webpack_require__(378), + insertWrapDetails = __webpack_require__(379), + setToString = __webpack_require__(110), + updateWrapDetails = __webpack_require__(380); /** * Sets the `toString` method of `wrapper` to mimic the source of `reference` @@ -43259,15 +43631,15 @@ module.exports = setWrapToString; /***/ }), -/* 103 */ +/* 127 */ /***/ (function(module, exports, __webpack_require__) { -var ListCache = __webpack_require__(43), - stackClear = __webpack_require__(351), - stackDelete = __webpack_require__(352), - stackGet = __webpack_require__(353), - stackHas = __webpack_require__(354), - stackSet = __webpack_require__(355); +var ListCache = __webpack_require__(53), + stackClear = __webpack_require__(393), + stackDelete = __webpack_require__(394), + stackGet = __webpack_require__(395), + stackHas = __webpack_require__(396), + stackSet = __webpack_require__(397); /** * Creates a stack cache object to store key-value pairs. @@ -43292,11 +43664,11 @@ module.exports = Stack; /***/ }), -/* 104 */ +/* 128 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsEqualDeep = __webpack_require__(368), - isObjectLike = __webpack_require__(19); +var baseIsEqualDeep = __webpack_require__(410), + isObjectLike = __webpack_require__(23); /** * The base implementation of `_.isEqual` which supports partial comparisons @@ -43326,12 +43698,12 @@ module.exports = baseIsEqual; /***/ }), -/* 105 */ +/* 129 */ /***/ (function(module, exports, __webpack_require__) { -var SetCache = __webpack_require__(369), - arraySome = __webpack_require__(372), - cacheHas = __webpack_require__(373); +var SetCache = __webpack_require__(411), + arraySome = __webpack_require__(414), + cacheHas = __webpack_require__(415); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -43416,11 +43788,11 @@ module.exports = equalArrays; /***/ }), -/* 106 */ +/* 130 */ /***/ (function(module, exports, __webpack_require__) { -var arrayPush = __webpack_require__(107), - isArray = __webpack_require__(15); +var arrayPush = __webpack_require__(131), + isArray = __webpack_require__(16); /** * The base implementation of `getAllKeys` and `getAllKeysIn` which uses @@ -43442,7 +43814,7 @@ module.exports = baseGetAllKeys; /***/ }), -/* 107 */ +/* 131 */ /***/ (function(module, exports) { /** @@ -43468,11 +43840,11 @@ module.exports = arrayPush; /***/ }), -/* 108 */ +/* 132 */ /***/ (function(module, exports, __webpack_require__) { -var arrayFilter = __webpack_require__(380), - stubArray = __webpack_require__(109); +var arrayFilter = __webpack_require__(422), + stubArray = __webpack_require__(133); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -43504,7 +43876,7 @@ module.exports = getSymbols; /***/ }), -/* 109 */ +/* 133 */ /***/ (function(module, exports) { /** @@ -43533,16 +43905,16 @@ module.exports = stubArray; /***/ }), -/* 110 */ +/* 134 */ /***/ (function(module, exports, __webpack_require__) { -var DataView = __webpack_require__(381), - Map = __webpack_require__(64), - Promise = __webpack_require__(382), - Set = __webpack_require__(383), - WeakMap = __webpack_require__(93), - baseGetTag = __webpack_require__(21), - toSource = __webpack_require__(84); +var DataView = __webpack_require__(423), + Map = __webpack_require__(78), + Promise = __webpack_require__(424), + Set = __webpack_require__(425), + WeakMap = __webpack_require__(117), + baseGetTag = __webpack_require__(25), + toSource = __webpack_require__(108); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -43597,10 +43969,10 @@ module.exports = getTag; /***/ }), -/* 111 */ +/* 135 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(17); +var isObject = __webpack_require__(20); /** * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. @@ -43618,7 +43990,7 @@ module.exports = isStrictComparable; /***/ }), -/* 112 */ +/* 136 */ /***/ (function(module, exports) { /** @@ -43644,10 +44016,10 @@ module.exports = matchesStrictComparable; /***/ }), -/* 113 */ +/* 137 */ /***/ (function(module, exports, __webpack_require__) { -var baseToString = __webpack_require__(390); +var baseToString = __webpack_require__(432); /** * Converts `value` to a string. An empty string is returned for `null` @@ -43678,7 +44050,7 @@ module.exports = toString; /***/ }), -/* 114 */ +/* 138 */ /***/ (function(module, exports) { /** @@ -43698,11 +44070,625 @@ module.exports = baseProperty; /***/ }), -/* 115 */ +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _defineProperty2 = __webpack_require__(447); + +var _defineProperty3 = _interopRequireDefault(_defineProperty2); + +var _keys = __webpack_require__(453); + +var _keys2 = _interopRequireDefault(_keys); + +var _regenerator = __webpack_require__(461); + +var _regenerator2 = _interopRequireDefault(_regenerator); + +var _asyncToGenerator2 = __webpack_require__(464); + +var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); + +var _promise = __webpack_require__(89); + +var _promise2 = _interopRequireDefault(_promise); + +exports.default = createDriver; + +var _utils = __webpack_require__(492); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function createDriver(name, property) { + var storage = (0, _utils.getStorage)(); + var support = !!(storage && storage[property]); + + var driver = support ? storage[property] : { + clear: function clear() {}, + get: function get() {}, + remove: function remove() {}, + set: function set() {} + }; + var _clear = driver.clear.bind(driver); + var get = driver.get.bind(driver); + var remove = driver.remove.bind(driver); + var set = driver.set.bind(driver); + + return { + _driver: name, + _support: support, + _initStorage: function _initStorage() { + return _promise2.default.resolve(); + }, + clear: function clear(callback) { + var _this = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee() { + return _regenerator2.default.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _clear(); + + if (callback) callback(); + + case 2: + case 'end': + return _context.stop(); + } + } + }, _callee, _this); + }))(); + }, + iterate: function iterate(iterator, callback) { + var _this2 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2() { + var items, keys; + return _regenerator2.default.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return (0, _utils.usePromise)(get, null); + + case 2: + items = _context2.sent; + keys = (0, _keys2.default)(items); + + keys.forEach(function (key, i) { + return iterator(items[key], key, i); + }); + + if (callback) callback(); + + case 6: + case 'end': + return _context2.stop(); + } + } + }, _callee2, _this2); + }))(); + }, + getItem: function getItem(key, callback) { + var _this3 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3() { + var result; + return _regenerator2.default.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.prev = 0; + _context3.next = 3; + return (0, _utils.usePromise)(get, key); + + case 3: + result = _context3.sent; + + result = typeof key === 'string' ? result[key] : result; + result = result === undefined ? null : result; + + if (callback) callback(null, result); + return _context3.abrupt('return', result); + + case 10: + _context3.prev = 10; + _context3.t0 = _context3['catch'](0); + + if (callback) callback(_context3.t0); + throw _context3.t0; + + case 14: + case 'end': + return _context3.stop(); + } + } + }, _callee3, _this3, [[0, 10]]); + }))(); + }, + key: function key(n, callback) { + var _this4 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee4() { + var results, key; + return _regenerator2.default.wrap(function _callee4$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + _context4.next = 2; + return (0, _utils.usePromise)(get, null); + + case 2: + results = _context4.sent; + key = (0, _keys2.default)(results)[n]; + + + if (callback) callback(key); + return _context4.abrupt('return', key); + + case 6: + case 'end': + return _context4.stop(); + } + } + }, _callee4, _this4); + }))(); + }, + keys: function keys(callback) { + var _this5 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee5() { + var results, keys; + return _regenerator2.default.wrap(function _callee5$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + _context5.next = 2; + return (0, _utils.usePromise)(get, null); + + case 2: + results = _context5.sent; + keys = (0, _keys2.default)(results); + + + if (callback) callback(keys); + return _context5.abrupt('return', keys); + + case 6: + case 'end': + return _context5.stop(); + } + } + }, _callee5, _this5); + }))(); + }, + length: function length(callback) { + var _this6 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee6() { + var results, length; + return _regenerator2.default.wrap(function _callee6$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return (0, _utils.usePromise)(get, null); + + case 2: + results = _context6.sent; + length = (0, _keys2.default)(results).length; + + + if (callback) callback(length); + return _context6.abrupt('return', length); + + case 6: + case 'end': + return _context6.stop(); + } + } + }, _callee6, _this6); + }))(); + }, + removeItem: function removeItem(key, callback) { + var _this7 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee7() { + return _regenerator2.default.wrap(function _callee7$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + _context7.next = 2; + return (0, _utils.usePromise)(remove, key); + + case 2: + if (callback) callback(); + + case 3: + case 'end': + return _context7.stop(); + } + } + }, _callee7, _this7); + }))(); + }, + setItem: function setItem(key, value, callback) { + var _this8 = this; + + return (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee8() { + return _regenerator2.default.wrap(function _callee8$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return (0, _utils.usePromise)(set, (0, _defineProperty3.default)({}, key, value)); + + case 2: + if (callback) callback(); + + case 3: + case 'end': + return _context8.stop(); + } + } + }, _callee8, _this8); + }))(); + } + }; +} + +/***/ }), +/* 140 */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(84); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), +/* 142 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(456); +var enumBugKeys = __webpack_require__(146); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), +/* 143 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__(86); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + + +/***/ }), +/* 144 */ +/***/ (function(module, exports, __webpack_require__) { + +var core = __webpack_require__(19); +var global = __webpack_require__(13); +var SHARED = '__core-js_shared__'; +var store = global[SHARED] || (global[SHARED] = {}); + +(module.exports = function (key, value) { + return store[key] || (store[key] = value !== undefined ? value : {}); +})('versions', []).push({ + version: core.version, + mode: __webpack_require__(88) ? 'pure' : 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' +}); + + +/***/ }), +/* 145 */ +/***/ (function(module, exports) { + +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + + +/***/ }), +/* 146 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(88); +var $export = __webpack_require__(30); +var redefine = __webpack_require__(469); +var hide = __webpack_require__(31); +var Iterators = __webpack_require__(42); +var $iterCreate = __webpack_require__(470); +var setToStringTag = __webpack_require__(90); +var getPrototypeOf = __webpack_require__(473); +var ITERATOR = __webpack_require__(17)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +var document = __webpack_require__(13).document; +module.exports = document && document.documentElement; + + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(61); +var TAG = __webpack_require__(17)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __webpack_require__(27); +var aFunction = __webpack_require__(59); +var SPECIES = __webpack_require__(17)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + + +/***/ }), +/* 151 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(58); +var invoke = __webpack_require__(484); +var html = __webpack_require__(148); +var cel = __webpack_require__(83); +var global = __webpack_require__(13); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (__webpack_require__(61)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + + +/***/ }), +/* 152 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(27); +var isObject = __webpack_require__(41); +var newPromiseCapability = __webpack_require__(91); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), +/* 154 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13); +/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15); /* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); /* This program is distributed under the terms of the MIT license. @@ -44706,7 +45692,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Bosh = class Bosh { _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Bosh.prototype.strip = null; /***/ }), -/* 116 */ +/* 155 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.0 by @mathias */ @@ -45253,10 +46239,10 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Bosh.prototype.strip = nul __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else {} })(this); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(36)(module), __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(46)(module), __webpack_require__(12))) /***/ }), -/* 117 */ +/* 156 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -45448,7 +46434,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }); /***/ }), -/* 118 */ +/* 157 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -45637,7 +46623,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! // http://jsperf.com/uri-js-sld-regex-vs-binary-search/4 // Following methods use lastIndexOf() rather than array.split() in order // to avoid any memory allocations. - has: function has(domain) { + has: function (domain) { var tldOffset = domain.lastIndexOf('.'); if (tldOffset <= 0 || tldOffset >= domain.length - 1) { @@ -45658,7 +46644,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! return sldList.indexOf(' ' + domain.slice(sldOffset + 1, tldOffset) + ' ') >= 0; }, - is: function is(domain) { + is: function (domain) { var tldOffset = domain.lastIndexOf('.'); if (tldOffset <= 0 || tldOffset >= domain.length - 1) { @@ -45679,7 +46665,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! return sldList.indexOf(' ' + domain.slice(0, tldOffset) + ' ') >= 0; }, - get: function get(domain) { + get: function (domain) { var tldOffset = domain.lastIndexOf('.'); if (tldOffset <= 0 || tldOffset >= domain.length - 1) { @@ -45704,7 +46690,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! return domain.slice(sldOffset + 1); }, - noConflict: function noConflict() { + noConflict: function () { if (root.SecondLevelDomains === this) { root.SecondLevelDomains = _SecondLevelDomains; } @@ -45716,12 +46702,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! }); /***/ }), -/* 119 */ +/* 158 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); -/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* This program is distributed under the terms of the MIT license. Please see the LICENSE file for details. @@ -45730,7 +46716,6 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! */ /* global window, clearTimeout, WebSocket, DOMParser */ - // eslint-disable-line no-unused-vars /** Class: Strophe.WebSocket @@ -45752,7 +46737,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! * WebSocket support implemented by Andreas Guth (andreas.guth@rwth-aachen.de) */ -_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocket { +_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Websocket = class Websocket { /** PrivateConstructor: Strophe.Websocket * Create and initialize a Strophe.WebSocket object. * Currently only sets the connection Object. @@ -45800,7 +46785,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _buildStream() { return Object(_core__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])("open", { - "xmlns": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.FRAMING, + "xmlns": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.FRAMING, "to": this._conn.domain, "version": '1.0' }); @@ -45820,7 +46805,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke let errors; if (bodyWrap.getElementsByTagNameNS) { - errors = bodyWrap.getElementsByTagNameNS(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.STREAM, "error"); + errors = bodyWrap.getElementsByTagNameNS(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.STREAM, "error"); } else { errors = bodyWrap.getElementsByTagName("stream:error"); } @@ -45860,7 +46845,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke errorString += " - " + text; } - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error(errorString); // close the connection on stream_error + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error(errorString); // close the connection on stream_error this._conn._changeConnectStatus(connectstatus, condition); @@ -45892,7 +46877,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke // Ensure that there is no open WebSocket from a previous Connection. this._closeSocket(); - this.socket = new WebSocket(this._conn.service, "xmpp"); + this.socket = new _shims__WEBPACK_IMPORTED_MODULE_0__[/* WebSocket */ "b"](this._conn.service, "xmpp"); this.socket.onopen = () => this._onOpen(); @@ -45914,10 +46899,10 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _connect_cb(bodyWrap) { - const error = this._checkStreamError(bodyWrap, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL); + const error = this._checkStreamError(bodyWrap, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL); if (error) { - return _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL; + return _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL; } } /** PrivateFunction: _handleStreamStart @@ -45937,7 +46922,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke if (typeof ns !== "string") { error = "Missing xmlns in <open />"; - } else if (ns !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.FRAMING) { + } else if (ns !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.FRAMING) { error = "Wrong xmlns in <open />: " + ns; } @@ -45950,7 +46935,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke } if (error) { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, error); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, error); this._conn._doDisconnect(); @@ -46000,7 +46985,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke const isSecureRedirect = service.indexOf("wss:") >= 0 && see_uri.indexOf("wss:") >= 0 || service.indexOf("ws:") >= 0; if (isSecureRedirect) { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.REDIRECT, "Received see-other-uri, resetting connection"); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.REDIRECT, "Received see-other-uri, resetting connection"); this._conn.reset(); @@ -46009,7 +46994,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke this._connect(); } } else { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "Received closing stream"); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "Received closing stream"); this._conn._doDisconnect(); } @@ -46046,25 +47031,25 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _disconnect(pres) { - if (this.socket && this.socket.readyState !== WebSocket.CLOSED) { + if (this.socket && this.socket.readyState !== _shims__WEBPACK_IMPORTED_MODULE_0__[/* WebSocket */ "b"].CLOSED) { if (pres) { this._conn.send(pres); } const close = Object(_core__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])("close", { - "xmlns": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.FRAMING + "xmlns": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.FRAMING }); this._conn.xmlOutput(close.tree()); - const closeString = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(close); + const closeString = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(close); this._conn.rawOutput(closeString); try { this.socket.send(closeString); } catch (e) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].warn("Couldn't send <close /> tag."); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].warn("Couldn't send <close /> tag."); } } @@ -46078,7 +47063,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _doDisconnect() { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("WebSockets _doDisconnect was called"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("WebSockets _doDisconnect was called"); this._closeSocket(); } @@ -46107,7 +47092,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke this.socket.onmessage = null; this.socket.close(); } catch (e) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug(e.message); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug(e.message); } } @@ -46132,7 +47117,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _onClose(e) { if (this._conn.connected && !this._conn.disconnecting) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Websocket closed unexpectedly"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Websocket closed unexpectedly"); this._conn._doDisconnect(); } else if (e && e.code === 1006 && !this._conn.connected && this.socket) { @@ -46140,13 +47125,13 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke // call onerror when the initial connection fails) we need to // dispatch a CONNFAIL status update to be consistent with the // behavior on other browsers. - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Websocket closed unexcectedly"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Websocket closed unexcectedly"); - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); this._conn._doDisconnect(); } else { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("Websocket closed"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("Websocket closed"); } } /** PrivateFunction: _no_auth_received @@ -46157,9 +47142,9 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _no_auth_received(callback) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Server did not offer a supported authentication mechanism"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Server did not offer a supported authentication mechanism"); - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].ErrorCondition.NO_AUTH_MECH); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].ErrorCondition.NO_AUTH_MECH); if (callback) { callback.call(this._conn); @@ -46192,9 +47177,9 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _onError(error) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Websocket error " + error); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Websocket error " + error); - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); this._disconnect(); } @@ -46219,7 +47204,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke stanza = data[i]; } - const rawStanza = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(stanza); + const rawStanza = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(stanza); this._conn.xmlOutput(stanza); @@ -46285,7 +47270,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke elem = new _shims__WEBPACK_IMPORTED_MODULE_0__[/* DOMParser */ "a"]().parseFromString(data, "text/xml").documentElement; } - if (this._checkStreamError(elem, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ERROR)) { + if (this._checkStreamError(elem, _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ERROR)) { return; } //handle unavailable presence stanza before disconnecting @@ -46293,7 +47278,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke if (this._conn.disconnecting && elem.firstChild.nodeName === "presence" && elem.firstChild.getAttribute("type") === "unavailable") { this._conn.xmlInput(elem); - this._conn.rawInput(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(elem)); // if we are already disconnecting we will ignore the unavailable stanza and + this._conn.rawInput(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(elem)); // if we are already disconnecting we will ignore the unavailable stanza and // wait for the </stream:stream> tag before we close the connection @@ -46310,13 +47295,13 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke _onOpen() { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("Websocket open"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("Websocket open"); const start = this._buildStream(); this._conn.xmlOutput(start.tree()); - const startString = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(start); + const startString = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(start); this._conn.rawOutput(startString); @@ -46364,7 +47349,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket = class Websocke }; /***/ }), -/* 120 */ +/* 159 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -46389,11 +47374,11 @@ function stubFalse() { /***/ }), -/* 121 */ +/* 160 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5); +/* WEBPACK VAR INJECTION */(function(module) {/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /** Detect free variable `exports`. */ @@ -46430,21 +47415,21 @@ function cloneBuffer(buffer, isDeep) { /* harmony default export */ __webpack_exports__["a"] = (cloneBuffer); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(55)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(69)(module))) /***/ }), -/* 122 */ +/* 161 */ /***/ (function(module, exports, __webpack_require__) { !function(e,t){ true?module.exports=t():undefined}(this,function(){"use strict";return function(e,t,r){var n=t.prototype,o=n.format;r.en.ordinal=function(e){var t=["th","st","nd","rd"],r=e%100;return"["+e+(t[(r-20)%10]||t[r]||t[0])+"]"},n.format=function(e){var t=this,r=this.$locale(),n=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|gggg|Do|X|x|k{1,2}|S/g,function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return r.ordinal(t.$D);case"gggg":return t.weekYear();case"wo":return r.ordinal(t.week(),"W");case"w":case"ww":return n.s(t.week(),"w"===e?1:2,"0");case"k":case"kk":return n.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();default:return e}});return o.bind(this)(a)}}}); /***/ }), -/* 123 */ +/* 162 */ /***/ (function(module, exports, __webpack_require__) { -var baseSlice = __webpack_require__(290), - toInteger = __webpack_require__(56); +var baseSlice = __webpack_require__(332), + toInteger = __webpack_require__(70); /** * Creates a slice of `array` with `n` elements dropped from the beginning. @@ -46484,11 +47469,11 @@ module.exports = drop; /***/ }), -/* 124 */ +/* 163 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isObjectLike = __webpack_require__(19); +var baseGetTag = __webpack_require__(25), + isObjectLike = __webpack_require__(23); /** `Object#toString` result references. */ var boolTag = '[object Boolean]'; @@ -46519,7 +47504,7 @@ module.exports = isBoolean; /***/ }), -/* 125 */ +/* 164 */ /***/ (function(module, exports) { /** @@ -46550,13 +47535,13 @@ module.exports = isNil; /***/ }), -/* 126 */ +/* 165 */ /***/ (function(module, exports, __webpack_require__) { -var arrayMap = __webpack_require__(59), - baseIteratee = __webpack_require__(343), - basePickBy = __webpack_require__(396), - getAllKeysIn = __webpack_require__(398); +var arrayMap = __webpack_require__(73), + baseIteratee = __webpack_require__(385), + basePickBy = __webpack_require__(438), + getAllKeysIn = __webpack_require__(440); /** * Creates an object composed of the `object` properties `predicate` returns @@ -46593,14 +47578,14 @@ module.exports = pickBy; /***/ }), -/* 127 */ +/* 166 */ /***/ (function(module, exports, __webpack_require__) { -var baseKeys = __webpack_require__(78), - getTag = __webpack_require__(110), - isArrayLike = __webpack_require__(25), - isString = __webpack_require__(90), - stringSize = __webpack_require__(401); +var baseKeys = __webpack_require__(102), + getTag = __webpack_require__(134), + isArrayLike = __webpack_require__(29), + isString = __webpack_require__(114), + stringSize = __webpack_require__(443); /** `Object#toString` result references. */ var mapTag = '[object Map]', @@ -46645,7 +47630,45 @@ module.exports = size; /***/ }), -/* 128 */ +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _driver = __webpack_require__(139); + +var _driver2 = _interopRequireDefault(_driver); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = (0, _driver2.default)('webExtensionSyncStorage', 'sync'); + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _driver = __webpack_require__(139); + +var _driver2 = _interopRequireDefault(_driver); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = (0, _driver2.default)('webExtensionLocalStorage', 'local'); + +/***/ }), +/* 169 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46707,10 +47730,10 @@ module.exports = size; }; }, true ? module.exports = t : undefined; }("undefined" != typeof window ? window : global); -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 129 */ +/* 170 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46738,7 +47761,7 @@ return __p }; /***/ }), -/* 130 */ +/* 171 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46764,7 +47787,7 @@ return __p }; /***/ }), -/* 131 */ +/* 172 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46790,7 +47813,7 @@ return __p }; /***/ }), -/* 132 */ +/* 173 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46807,7 +47830,7 @@ return __p }; /***/ }), -/* 133 */ +/* 174 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46824,7 +47847,7 @@ return __p }; /***/ }), -/* 134 */ +/* 175 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46844,7 +47867,7 @@ return __p }; /***/ }), -/* 135 */ +/* 176 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -46854,23 +47877,23 @@ return __p */ !function(e){var x=/^(b|B)$/,M={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},w={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function t(e){var i,t,o,n,b,r,a,l,s,d,u,c,f,p,B,y=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},g=[],v=0,m=void 0,h=void 0;if(isNaN(e))throw new TypeError("Invalid number");return t=!0===y.bits,u=!0===y.unix,i=y.base||2,d=void 0!==y.round?y.round:u?1:2,r=void 0!==y.locale?y.locale:"",a=y.localeOptions||{},c=void 0!==y.separator?y.separator:"",f=void 0!==y.spacer?y.spacer:u?"":" ",B=y.symbols||{},p=2===i&&y.standard||"jedec",s=y.output||"string",n=!0===y.fullform,b=y.fullforms instanceof Array?y.fullforms:[],m=void 0!==y.exponent?y.exponent:-1,o=2<i?1e3:1024,(l=(h=Number(e))<0)&&(h=-h),(-1===m||isNaN(m))&&(m=Math.floor(Math.log(h)/Math.log(o)))<0&&(m=0),8<m&&(m=8),"exponent"===s?m:(0===h?(g[0]=0,g[1]=u?"":M[p][t?"bits":"bytes"][m]):(v=h/(2===i?Math.pow(2,10*m):Math.pow(1e3,m)),t&&o<=(v*=8)&&m<8&&(v/=o,m++),g[0]=Number(v.toFixed(0<m?d:0)),g[0]===o&&m<8&&void 0===y.exponent&&(g[0]=1,m++),g[1]=10===i&&1===m?t?"kb":"kB":M[p][t?"bits":"bytes"][m],u&&(g[1]="jedec"===p?g[1].charAt(0):0<m?g[1].replace(/B$/,""):g[1],x.test(g[1])&&(g[0]=Math.floor(g[0]),g[1]=""))),l&&(g[0]=-g[0]),g[1]=B[g[1]]||g[1],!0===r?g[0]=g[0].toLocaleString():0<r.length?g[0]=g[0].toLocaleString(r,a):0<c.length&&(g[0]=g[0].toString().replace(".",c)),"array"===s?g:(n&&(g[1]=b[m]?b[m]:w[p][m]+(t?"bit":"byte")+(1===g[0]?"":"s")),"object"===s?{value:g[0],symbol:g[1],exponent:m}:g.join(f)))}t.partial=function(i){return function(e){return t(e,i)}}, true?module.exports=t:undefined}("undefined"!=typeof window?window:global); //# sourceMappingURL=filesize.min.js.map -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(11))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(12))) /***/ }), -/* 136 */ +/* 177 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; module.exports = function(o) { var __t, __p = '', __e = _.escape; -__p += '<!-- src/templates/controlbox_toggle.html -->\n<span class="toggle-feedback">' + +__p += '<!-- src/plugins/controlbox/templates/toggle.html -->\n<span class="toggle-feedback">' + __e(o.label_toggle) + '</span>\n'; return __p }; /***/ }), -/* 137 */ +/* 178 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46881,7 +47904,7 @@ return __p }; /***/ }), -/* 138 */ +/* 179 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -46973,7 +47996,777 @@ return __p }; /***/ }), -/* 139 */ +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/** + * @license MIT or GPL-2.0 + * @fileOverview Favico animations + * @author Miroslav Magda, http://blog.ejci.net + * @source: https://github.com/ejci/favico.js + * @version 0.3.10 + */ + +/** + * Create new favico instance + * @param {Object} Options + * @return {Object} Favico object + * @example + * var favico = new Favico({ + * bgColor : '#d00', + * textColor : '#fff', + * fontFamily : 'sans-serif', + * fontStyle : 'bold', + * type : 'circle', + * position : 'down', + * animation : 'slide', + * elementId: false, + * element: null, + * dataUrl: function(url){}, + * win: window + * }); + */ +(function () { + + var Favico = (function (opt) { + 'use strict'; + opt = (opt) ? opt : {}; + var _def = { + bgColor: '#d00', + textColor: '#fff', + fontFamily: 'sans-serif', //Arial,Verdana,Times New Roman,serif,sans-serif,... + fontStyle: 'bold', //normal,italic,oblique,bold,bolder,lighter,100,200,300,400,500,600,700,800,900 + type: 'circle', + position: 'down', // down, up, left, leftup (upleft) + animation: 'slide', + elementId: false, + element: null, + dataUrl: false, + win: window + }; + var _opt, _orig, _h, _w, _canvas, _context, _img, _ready, _lastBadge, _running, _readyCb, _stop, _browser, _animTimeout, _drawTimeout, _doc; + + _browser = {}; + _browser.ff = typeof InstallTrigger != 'undefined'; + _browser.chrome = !!window.chrome; + _browser.opera = !!window.opera || navigator.userAgent.indexOf('Opera') >= 0; + _browser.ie = /*@cc_on!@*/false; + _browser.safari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0; + _browser.supported = (_browser.chrome || _browser.ff || _browser.opera); + + var _queue = []; + _readyCb = function () { + }; + _ready = _stop = false; + /** + * Initialize favico + */ + var init = function () { + //merge initial options + _opt = merge(_def, opt); + _opt.bgColor = hexToRgb(_opt.bgColor); + _opt.textColor = hexToRgb(_opt.textColor); + _opt.position = _opt.position.toLowerCase(); + _opt.animation = (animation.types['' + _opt.animation]) ? _opt.animation : _def.animation; + + _doc = _opt.win.document; + + var isUp = _opt.position.indexOf('up') > -1; + var isLeft = _opt.position.indexOf('left') > -1; + + //transform the animations + if (isUp || isLeft) { + for (var a in animation.types) { + for (var i = 0; i < animation.types[a].length; i++) { + var step = animation.types[a][i]; + + if (isUp) { + if (step.y < 0.6) { + step.y = step.y - 0.4; + } else { + step.y = step.y - 2 * step.y + (1 - step.w); + } + } + + if (isLeft) { + if (step.x < 0.6) { + step.x = step.x - 0.4; + } else { + step.x = step.x - 2 * step.x + (1 - step.h); + } + } + + animation.types[a][i] = step; + } + } + } + _opt.type = (type['' + _opt.type]) ? _opt.type : _def.type; + + _orig = link. getIcons(); + //create temp canvas + _canvas = document.createElement('canvas'); + //create temp image + _img = document.createElement('img'); + var lastIcon = _orig[_orig.length - 1]; + if (lastIcon.hasAttribute('href')) { + _img.setAttribute('crossOrigin', 'anonymous'); + //get width/height + _img.onload = function () { + _h = (_img.height > 0) ? _img.height : 32; + _w = (_img.width > 0) ? _img.width : 32; + _canvas.height = _h; + _canvas.width = _w; + _context = _canvas.getContext('2d'); + icon.ready(); + }; + _img.setAttribute('src', lastIcon.getAttribute('href')); + } else { + _h = 32; + _w = 32; + _img.height = _h; + _img.width = _w; + _canvas.height = _h; + _canvas.width = _w; + _context = _canvas.getContext('2d'); + icon.ready(); + } + + }; + /** + * Icon namespace + */ + var icon = {}; + /** + * Icon is ready (reset icon) and start animation (if ther is any) + */ + icon.ready = function () { + _ready = true; + icon.reset(); + _readyCb(); + }; + /** + * Reset icon to default state + */ + icon.reset = function () { + //reset + if (!_ready) { + return; + } + _queue = []; + _lastBadge = false; + _running = false; + _context.clearRect(0, 0, _w, _h); + _context.drawImage(_img, 0, 0, _w, _h); + //_stop=true; + link.setIcon(_canvas); + //webcam('stop'); + //video('stop'); + window.clearTimeout(_animTimeout); + window.clearTimeout(_drawTimeout); + }; + /** + * Start animation + */ + icon.start = function () { + if (!_ready || _running) { + return; + } + var finished = function () { + _lastBadge = _queue[0]; + _running = false; + if (_queue.length > 0) { + _queue.shift(); + icon.start(); + } else { + + } + }; + if (_queue.length > 0) { + _running = true; + var run = function () { + // apply options for this animation + ['type', 'animation', 'bgColor', 'textColor', 'fontFamily', 'fontStyle'].forEach(function (a) { + if (a in _queue[0].options) { + _opt[a] = _queue[0].options[a]; + } + }); + animation.run(_queue[0].options, function () { + finished(); + }, false); + }; + if (_lastBadge) { + animation.run(_lastBadge.options, function () { + run(); + }, true); + } else { + run(); + } + } + }; + + /** + * Badge types + */ + var type = {}; + var options = function (opt) { + opt.n = ((typeof opt.n) === 'number') ? Math.abs(opt.n | 0) : opt.n; + opt.x = _w * opt.x; + opt.y = _h * opt.y; + opt.w = _w * opt.w; + opt.h = _h * opt.h; + opt.len = ("" + opt.n).length; + return opt; + }; + /** + * Generate circle + * @param {Object} opt Badge options + */ + type.circle = function (opt) { + opt = options(opt); + var more = false; + if (opt.len === 2) { + opt.x = opt.x - opt.w * 0.4; + opt.w = opt.w * 1.4; + more = true; + } else if (opt.len >= 3) { + opt.x = opt.x - opt.w * 0.65; + opt.w = opt.w * 1.65; + more = true; + } + _context.clearRect(0, 0, _w, _h); + _context.drawImage(_img, 0, 0, _w, _h); + _context.beginPath(); + _context.font = _opt.fontStyle + " " + Math.floor(opt.h * (opt.n > 99 ? 0.85 : 1)) + "px " + _opt.fontFamily; + _context.textAlign = 'center'; + if (more) { + _context.moveTo(opt.x + opt.w / 2, opt.y); + _context.lineTo(opt.x + opt.w - opt.h / 2, opt.y); + _context.quadraticCurveTo(opt.x + opt.w, opt.y, opt.x + opt.w, opt.y + opt.h / 2); + _context.lineTo(opt.x + opt.w, opt.y + opt.h - opt.h / 2); + _context.quadraticCurveTo(opt.x + opt.w, opt.y + opt.h, opt.x + opt.w - opt.h / 2, opt.y + opt.h); + _context.lineTo(opt.x + opt.h / 2, opt.y + opt.h); + _context.quadraticCurveTo(opt.x, opt.y + opt.h, opt.x, opt.y + opt.h - opt.h / 2); + _context.lineTo(opt.x, opt.y + opt.h / 2); + _context.quadraticCurveTo(opt.x, opt.y, opt.x + opt.h / 2, opt.y); + } else { + _context.arc(opt.x + opt.w / 2, opt.y + opt.h / 2, opt.h / 2, 0, 2 * Math.PI); + } + _context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')'; + _context.fill(); + _context.closePath(); + _context.beginPath(); + _context.stroke(); + _context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')'; + //_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); + if ((typeof opt.n) === 'number' && opt.n > 999) { + _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); + } else { + _context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); + } + _context.closePath(); + }; + /** + * Generate rectangle + * @param {Object} opt Badge options + */ + type.rectangle = function (opt) { + opt = options(opt); + var more = false; + if (opt.len === 2) { + opt.x = opt.x - opt.w * 0.4; + opt.w = opt.w * 1.4; + more = true; + } else if (opt.len >= 3) { + opt.x = opt.x - opt.w * 0.65; + opt.w = opt.w * 1.65; + more = true; + } + _context.clearRect(0, 0, _w, _h); + _context.drawImage(_img, 0, 0, _w, _h); + _context.beginPath(); + _context.font = _opt.fontStyle + " " + Math.floor(opt.h * (opt.n > 99 ? 0.9 : 1)) + "px " + _opt.fontFamily; + _context.textAlign = 'center'; + _context.fillStyle = 'rgba(' + _opt.bgColor.r + ',' + _opt.bgColor.g + ',' + _opt.bgColor.b + ',' + opt.o + ')'; + _context.fillRect(opt.x, opt.y, opt.w, opt.h); + _context.fillStyle = 'rgba(' + _opt.textColor.r + ',' + _opt.textColor.g + ',' + _opt.textColor.b + ',' + opt.o + ')'; + //_context.fillText((more) ? '9+' : opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); + if ((typeof opt.n) === 'number' && opt.n > 999) { + _context.fillText(((opt.n > 9999) ? 9 : Math.floor(opt.n / 1000)) + 'k+', Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.2)); + } else { + _context.fillText(opt.n, Math.floor(opt.x + opt.w / 2), Math.floor(opt.y + opt.h - opt.h * 0.15)); + } + _context.closePath(); + }; + + /** + * Set badge + */ + var badge = function (number, opts) { + opts = ((typeof opts) === 'string' ? { + animation: opts + } : opts) || {}; + _readyCb = function () { + try { + if (typeof (number) === 'number' ? (number > 0) : (number !== '')) { + var q = { + type: 'badge', + options: { + n: number + } + }; + if ('animation' in opts && animation.types['' + opts.animation]) { + q.options.animation = '' + opts.animation; + } + if ('type' in opts && type['' + opts.type]) { + q.options.type = '' + opts.type; + } + ['bgColor', 'textColor'].forEach(function (o) { + if (o in opts) { + q.options[o] = hexToRgb(opts[o]); + } + }); + ['fontStyle', 'fontFamily'].forEach(function (o) { + if (o in opts) { + q.options[o] = opts[o]; + } + }); + _queue.push(q); + if (_queue.length > 100) { + throw new Error('Too many badges requests in queue.'); + } + icon.start(); + } else { + icon.reset(); + } + } catch (e) { + throw new Error('Error setting badge. Message: ' + e.message); + } + }; + if (_ready) { + _readyCb(); + } + }; + + var setOpt = function (key, value) { + var opts = key; + if (!(value == null && Object.prototype.toString.call(key) == '[object Object]')) { + opts = {}; + opts[key] = value; + } + + var keys = Object.keys(opts); + for (var i = 0; i < keys.length; i++) { + if (keys[i] == 'bgColor' || keys[i] == 'textColor') { + _opt[keys[i]] = hexToRgb(opts[keys[i]]); + } else { + _opt[keys[i]] = opts[keys[i]]; + } + } + + _queue.push(_lastBadge); + icon.start(); + }; + + var link = {}; + /** + * Get icons from HEAD tag or create a new <link> element + */ + link.getIcons = function () { + var elms = []; + //get link element + var getLinks = function () { + var icons = []; + var links = _doc.getElementsByTagName('head')[0].getElementsByTagName('link'); + for (var i = 0; i < links.length; i++) { + if ((/(^|\s)icon(\s|$)/i).test(links[i].getAttribute('rel'))) { + icons.push(links[i]); + } + } + return icons; + }; + if (_opt.element) { + elms = [_opt.element]; + } else if (_opt.elementId) { + //if img element identified by elementId + elms = [_doc.getElementById(_opt.elementId)]; + elms[0].setAttribute('href', elms[0].getAttribute('src')); + } else { + //if link element + elms = getLinks(); + if (elms.length === 0) { + elms = [_doc.createElement('link')]; + elms[0].setAttribute('rel', 'icon'); + _doc.getElementsByTagName('head')[0].appendChild(elms[0]); + } + } + elms.forEach(function(item) { + item.setAttribute('type', 'image/png'); + }); + return elms; + }; + link.setIcon = function (canvas) { + var url = canvas.toDataURL('image/png'); + link.setIconSrc(url); + }; + link.setIconSrc = function (url) { + if (_opt.dataUrl) { + //if using custom exporter + _opt.dataUrl(url); + } + if (_opt.element) { + _opt.element.setAttribute('href', url); + _opt.element.setAttribute('src', url); + } else if (_opt.elementId) { + //if is attached to element (image) + var elm = _doc.getElementById(_opt.elementId); + elm.setAttribute('href', url); + elm.setAttribute('src', url); + } else { + //if is attached to fav icon + if (_browser.ff || _browser.opera) { + //for FF we need to "recreate" element, atach to dom and remove old <link> + //var originalType = _orig.getAttribute('rel'); + var old = _orig[_orig.length - 1]; + var newIcon = _doc.createElement('link'); + _orig = [newIcon]; + //_orig.setAttribute('rel', originalType); + if (_browser.opera) { + newIcon.setAttribute('rel', 'icon'); + } + newIcon.setAttribute('rel', 'icon'); + newIcon.setAttribute('type', 'image/png'); + _doc.getElementsByTagName('head')[0].appendChild(newIcon); + newIcon.setAttribute('href', url); + if (old.parentNode) { + old.parentNode.removeChild(old); + } + } else { + _orig.forEach(function(icon) { + icon.setAttribute('href', url); + }); + } + } + }; + + //http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-5624139 + //HEX to RGB convertor + function hexToRgb(hex) { + var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; + hex = hex.replace(shorthandRegex, function (m, r, g, b) { + return r + r + g + g + b + b; + }); + var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); + return result ? { + r: parseInt(result[1], 16), + g: parseInt(result[2], 16), + b: parseInt(result[3], 16) + } : false; + } + + /** + * Merge options + */ + function merge(def, opt) { + var mergedOpt = {}; + var attrname; + for (attrname in def) { + mergedOpt[attrname] = def[attrname]; + } + for (attrname in opt) { + mergedOpt[attrname] = opt[attrname]; + } + return mergedOpt; + } + + /** + * Cross-browser page visibility shim + * http://stackoverflow.com/questions/12536562/detect-whether-a-window-is-visible + */ + function isPageHidden() { + return _doc.hidden || _doc.msHidden || _doc.webkitHidden || _doc.mozHidden; + } + + /** + * @namespace animation + */ + var animation = {}; + /** + * Animation "frame" duration + */ + animation.duration = 40; + /** + * Animation types (none,fade,pop,slide) + */ + animation.types = {}; + animation.types.fade = [{ + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.0 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.2 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.3 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.4 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.5 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.6 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.7 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.8 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 0.9 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1.0 + }]; + animation.types.none = [{ + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; + animation.types.pop = [{ + x: 1, + y: 1, + w: 0, + h: 0, + o: 1 + }, { + x: 0.9, + y: 0.9, + w: 0.1, + h: 0.1, + o: 1 + }, { + x: 0.8, + y: 0.8, + w: 0.2, + h: 0.2, + o: 1 + }, { + x: 0.7, + y: 0.7, + w: 0.3, + h: 0.3, + o: 1 + }, { + x: 0.6, + y: 0.6, + w: 0.4, + h: 0.4, + o: 1 + }, { + x: 0.5, + y: 0.5, + w: 0.5, + h: 0.5, + o: 1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; + animation.types.popFade = [{ + x: 0.75, + y: 0.75, + w: 0, + h: 0, + o: 0 + }, { + x: 0.65, + y: 0.65, + w: 0.1, + h: 0.1, + o: 0.2 + }, { + x: 0.6, + y: 0.6, + w: 0.2, + h: 0.2, + o: 0.4 + }, { + x: 0.55, + y: 0.55, + w: 0.3, + h: 0.3, + o: 0.6 + }, { + x: 0.50, + y: 0.50, + w: 0.4, + h: 0.4, + o: 0.8 + }, { + x: 0.45, + y: 0.45, + w: 0.5, + h: 0.5, + o: 0.9 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; + animation.types.slide = [{ + x: 0.4, + y: 1, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.9, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.9, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.8, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.7, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.6, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.5, + w: 0.6, + h: 0.6, + o: 1 + }, { + x: 0.4, + y: 0.4, + w: 0.6, + h: 0.6, + o: 1 + }]; + /** + * Run animation + * @param {Object} opt Animation options + * @param {Object} cb Callabak after all steps are done + * @param {Object} revert Reverse order? true|false + * @param {Object} step Optional step number (frame bumber) + */ + animation.run = function (opt, cb, revert, step) { + var animationType = animation.types[isPageHidden() ? 'none' : _opt.animation]; + if (revert === true) { + step = (typeof step !== 'undefined') ? step : animationType.length - 1; + } else { + step = (typeof step !== 'undefined') ? step : 0; + } + cb = (cb) ? cb : function () { + }; + if ((step < animationType.length) && (step >= 0)) { + type[_opt.type](merge(opt, animationType[step])); + _animTimeout = setTimeout(function () { + if (revert) { + step = step - 1; + } else { + step = step + 1; + } + animation.run(opt, cb, revert, step); + }, animation.duration); + + link.setIcon(_canvas); + } else { + cb(); + return; + } + }; + //auto init + init(); + return { + badge: badge, + setOpt: setOpt, + reset: icon.reset, + browser: { + supported: _browser.supported + } + }; + }); + + // AMD / RequireJS + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return Favico; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } + // CommonJS + else {} + +})(); + + +/***/ }), +/* 181 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47011,7 +48804,7 @@ return __p }; /***/ }), -/* 140 */ +/* 182 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47043,7 +48836,7 @@ return __p }; /***/ }), -/* 141 */ +/* 183 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47063,7 +48856,7 @@ return __p }; /***/ }), -/* 142 */ +/* 184 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47089,7 +48882,7 @@ return __p }; /***/ }), -/* 143 */ +/* 185 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47115,7 +48908,7 @@ return __p }; /***/ }), -/* 144 */ +/* 186 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47147,7 +48940,7 @@ return __p }; /***/ }), -/* 145 */ +/* 187 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47169,7 +48962,7 @@ return __p }; /***/ }), -/* 146 */ +/* 188 */ /***/ (function(module, exports, __webpack_require__) { var _ = {escape:__webpack_require__(8)}; @@ -47211,48 +49004,6 @@ return __p }; /***/ }), -/* 147 */, -/* 148 */, -/* 149 */, -/* 150 */, -/* 151 */, -/* 152 */, -/* 153 */, -/* 154 */, -/* 155 */, -/* 156 */, -/* 157 */, -/* 158 */, -/* 159 */, -/* 160 */, -/* 161 */, -/* 162 */, -/* 163 */, -/* 164 */, -/* 165 */, -/* 166 */, -/* 167 */, -/* 168 */, -/* 169 */, -/* 170 */, -/* 171 */, -/* 172 */, -/* 173 */, -/* 174 */, -/* 175 */, -/* 176 */, -/* 177 */, -/* 178 */, -/* 179 */, -/* 180 */, -/* 181 */, -/* 182 */, -/* 183 */, -/* 184 */, -/* 185 */, -/* 186 */, -/* 187 */, -/* 188 */, /* 189 */, /* 190 */, /* 191 */, @@ -47348,7 +49099,49 @@ return __p /* 281 */, /* 282 */, /* 283 */, -/* 284 */ +/* 284 */, +/* 285 */, +/* 286 */, +/* 287 */, +/* 288 */, +/* 289 */, +/* 290 */, +/* 291 */, +/* 292 */, +/* 293 */, +/* 294 */, +/* 295 */, +/* 296 */, +/* 297 */, +/* 298 */, +/* 299 */, +/* 300 */, +/* 301 */, +/* 302 */, +/* 303 */, +/* 304 */, +/* 305 */, +/* 306 */, +/* 307 */, +/* 308 */, +/* 309 */, +/* 310 */, +/* 311 */, +/* 312 */, +/* 313 */, +/* 314 */, +/* 315 */, +/* 316 */, +/* 317 */, +/* 318 */, +/* 319 */, +/* 320 */, +/* 321 */, +/* 322 */, +/* 323 */, +/* 324 */, +/* 325 */, +/* 326 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -47411,7 +49204,7 @@ const converse = { __webpack_require__.p = settings.assets_path; // eslint-disable-line no-undef } - __webpack_require__(418); + __webpack_require__(506); Object.keys(plugins).forEach(name => converse.plugins.add(name, plugins[name])); return converse; @@ -47422,7 +49215,7 @@ window.converse = converse; /* harmony default export */ __webpack_exports__["default"] = (converse); /***/ }), -/* 285 */ +/* 327 */ /***/ (function(module, exports) { function CustomEvent(event, params) { @@ -47492,7 +49285,7 @@ if (!String.prototype.trim) { } /***/ }), -/* 286 */ +/* 328 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -47507,7 +49300,7 @@ module.exports = function() { /***/ }), -/* 287 */ +/* 329 */ /***/ (function(module, exports) { //[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] @@ -48146,7 +49939,7 @@ exports.XMLReader = XMLReader; /***/ }), -/* 288 */ +/* 330 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48250,7 +50043,7 @@ module.exports = atob; /***/ }), -/* 289 */ +/* 331 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -48315,7 +50108,7 @@ module.exports = btoa; /***/ }), -/* 290 */ +/* 332 */ /***/ (function(module, exports) { /** @@ -48352,10 +50145,10 @@ module.exports = baseSlice; /***/ }), -/* 291 */ +/* 333 */ /***/ (function(module, exports, __webpack_require__) { -var toNumber = __webpack_require__(292); +var toNumber = __webpack_require__(334); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0, @@ -48400,11 +50193,11 @@ module.exports = toFinite; /***/ }), -/* 292 */ +/* 334 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(17), - isSymbol = __webpack_require__(38); +var isObject = __webpack_require__(20), + isSymbol = __webpack_require__(48); /** Used as references for various `Number` constants. */ var NAN = 0 / 0; @@ -48472,10 +50265,10 @@ module.exports = toNumber; /***/ }), -/* 293 */ +/* 335 */ /***/ (function(module, exports, __webpack_require__) { -var Symbol = __webpack_require__(39); +var Symbol = __webpack_require__(49); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -48524,7 +50317,7 @@ module.exports = getRawTag; /***/ }), -/* 294 */ +/* 336 */ /***/ (function(module, exports) { /** Used for built-in method references. */ @@ -48552,13 +50345,13 @@ module.exports = objectToString; /***/ }), -/* 295 */ +/* 337 */ /***/ (function(module, exports, __webpack_require__) { -var arrayEach = __webpack_require__(73), - baseEach = __webpack_require__(296), - castFunction = __webpack_require__(308), - isArray = __webpack_require__(15); +var arrayEach = __webpack_require__(97), + baseEach = __webpack_require__(338), + castFunction = __webpack_require__(350), + isArray = __webpack_require__(16); /** * Iterates over elements of `collection` and invokes `iteratee` for each element. @@ -48599,11 +50392,11 @@ module.exports = forEach; /***/ }), -/* 296 */ +/* 338 */ /***/ (function(module, exports, __webpack_require__) { -var baseForOwn = __webpack_require__(297), - createBaseEach = __webpack_require__(307); +var baseForOwn = __webpack_require__(339), + createBaseEach = __webpack_require__(349); /** * The base implementation of `_.forEach` without support for iteratee shorthands. @@ -48619,11 +50412,11 @@ module.exports = baseEach; /***/ }), -/* 297 */ +/* 339 */ /***/ (function(module, exports, __webpack_require__) { -var baseFor = __webpack_require__(298), - keys = __webpack_require__(26); +var baseFor = __webpack_require__(340), + keys = __webpack_require__(33); /** * The base implementation of `_.forOwn` without support for iteratee shorthands. @@ -48641,10 +50434,10 @@ module.exports = baseForOwn; /***/ }), -/* 298 */ +/* 340 */ /***/ (function(module, exports, __webpack_require__) { -var createBaseFor = __webpack_require__(299); +var createBaseFor = __webpack_require__(341); /** * The base implementation of `baseForOwn` which iterates over `object` @@ -48663,7 +50456,7 @@ module.exports = baseFor; /***/ }), -/* 299 */ +/* 341 */ /***/ (function(module, exports) { /** @@ -48694,7 +50487,7 @@ module.exports = createBaseFor; /***/ }), -/* 300 */ +/* 342 */ /***/ (function(module, exports) { /** @@ -48720,11 +50513,11 @@ module.exports = baseTimes; /***/ }), -/* 301 */ +/* 343 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isObjectLike = __webpack_require__(19); +var baseGetTag = __webpack_require__(25), + isObjectLike = __webpack_require__(23); /** `Object#toString` result references. */ var argsTag = '[object Arguments]'; @@ -48744,7 +50537,7 @@ module.exports = baseIsArguments; /***/ }), -/* 302 */ +/* 344 */ /***/ (function(module, exports) { /** @@ -48768,12 +50561,12 @@ module.exports = stubFalse; /***/ }), -/* 303 */ +/* 345 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetTag = __webpack_require__(21), - isLength = __webpack_require__(57), - isObjectLike = __webpack_require__(19); +var baseGetTag = __webpack_require__(25), + isLength = __webpack_require__(71), + isObjectLike = __webpack_require__(23); /** `Object#toString` result references. */ var argsTag = '[object Arguments]', @@ -48834,7 +50627,7 @@ module.exports = baseIsTypedArray; /***/ }), -/* 304 */ +/* 346 */ /***/ (function(module, exports) { /** @@ -48854,10 +50647,10 @@ module.exports = baseUnary; /***/ }), -/* 305 */ +/* 347 */ /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(72); +/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(96); /** Detect free variable `exports`. */ var freeExports = true && exports && !exports.nodeType && exports; @@ -48888,13 +50681,13 @@ var nodeUtil = (function() { module.exports = nodeUtil; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(36)(module))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(46)(module))) /***/ }), -/* 306 */ +/* 348 */ /***/ (function(module, exports, __webpack_require__) { -var overArg = __webpack_require__(80); +var overArg = __webpack_require__(104); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeKeys = overArg(Object.keys, Object); @@ -48903,10 +50696,10 @@ module.exports = nativeKeys; /***/ }), -/* 307 */ +/* 349 */ /***/ (function(module, exports, __webpack_require__) { -var isArrayLike = __webpack_require__(25); +var isArrayLike = __webpack_require__(29); /** * Creates a `baseEach` or `baseEachRight` function. @@ -48941,10 +50734,10 @@ module.exports = createBaseEach; /***/ }), -/* 308 */ +/* 350 */ /***/ (function(module, exports, __webpack_require__) { -var identity = __webpack_require__(31); +var identity = __webpack_require__(38); /** * Casts `value` to `identity` if it's not a function. @@ -48961,12 +50754,12 @@ module.exports = castFunction; /***/ }), -/* 309 */ +/* 351 */ /***/ (function(module, exports, __webpack_require__) { -var copyObject = __webpack_require__(310), - createAssigner = __webpack_require__(315), - keysIn = __webpack_require__(88); +var copyObject = __webpack_require__(352), + createAssigner = __webpack_require__(357), + keysIn = __webpack_require__(112); /** * This method is like `_.assign` except that it iterates over own and @@ -49007,11 +50800,11 @@ module.exports = assignIn; /***/ }), -/* 310 */ +/* 352 */ /***/ (function(module, exports, __webpack_require__) { -var assignValue = __webpack_require__(81), - baseAssignValue = __webpack_require__(82); +var assignValue = __webpack_require__(105), + baseAssignValue = __webpack_require__(106); /** * Copies properties of `source` to `object`. @@ -49053,13 +50846,13 @@ module.exports = copyObject; /***/ }), -/* 311 */ +/* 353 */ /***/ (function(module, exports, __webpack_require__) { -var isFunction = __webpack_require__(48), - isMasked = __webpack_require__(312), - isObject = __webpack_require__(17), - toSource = __webpack_require__(84); +var isFunction = __webpack_require__(62), + isMasked = __webpack_require__(354), + isObject = __webpack_require__(20), + toSource = __webpack_require__(108); /** * Used to match `RegExp` @@ -49106,10 +50899,10 @@ module.exports = baseIsNative; /***/ }), -/* 312 */ +/* 354 */ /***/ (function(module, exports, __webpack_require__) { -var coreJsData = __webpack_require__(313); +var coreJsData = __webpack_require__(355); /** Used to detect methods masquerading as native. */ var maskSrcKey = (function() { @@ -49132,10 +50925,10 @@ module.exports = isMasked; /***/ }), -/* 313 */ +/* 355 */ /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(10); +var root = __webpack_require__(11); /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; @@ -49144,7 +50937,7 @@ module.exports = coreJsData; /***/ }), -/* 314 */ +/* 356 */ /***/ (function(module, exports) { /** @@ -49163,11 +50956,11 @@ module.exports = getValue; /***/ }), -/* 315 */ +/* 357 */ /***/ (function(module, exports, __webpack_require__) { -var baseRest = __webpack_require__(85), - isIterateeCall = __webpack_require__(319); +var baseRest = __webpack_require__(109), + isIterateeCall = __webpack_require__(361); /** * Creates a function like `_.assign`. @@ -49206,10 +50999,10 @@ module.exports = createAssigner; /***/ }), -/* 316 */ +/* 358 */ /***/ (function(module, exports, __webpack_require__) { -var apply = __webpack_require__(58); +var apply = __webpack_require__(72); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max; @@ -49248,12 +51041,12 @@ module.exports = overRest; /***/ }), -/* 317 */ +/* 359 */ /***/ (function(module, exports, __webpack_require__) { -var constant = __webpack_require__(318), - defineProperty = __webpack_require__(83), - identity = __webpack_require__(31); +var constant = __webpack_require__(360), + defineProperty = __webpack_require__(107), + identity = __webpack_require__(38); /** * The base implementation of `setToString` without support for hot loop shorting. @@ -49276,7 +51069,7 @@ module.exports = baseSetToString; /***/ }), -/* 318 */ +/* 360 */ /***/ (function(module, exports) { /** @@ -49308,13 +51101,13 @@ module.exports = constant; /***/ }), -/* 319 */ +/* 361 */ /***/ (function(module, exports, __webpack_require__) { -var eq = __webpack_require__(40), - isArrayLike = __webpack_require__(25), - isIndex = __webpack_require__(30), - isObject = __webpack_require__(17); +var eq = __webpack_require__(50), + isArrayLike = __webpack_require__(29), + isIndex = __webpack_require__(37), + isObject = __webpack_require__(20); /** * Checks if the given arguments are from an iteratee call. @@ -49344,12 +51137,12 @@ module.exports = isIterateeCall; /***/ }), -/* 320 */ +/* 362 */ /***/ (function(module, exports, __webpack_require__) { -var isObject = __webpack_require__(17), - isPrototype = __webpack_require__(79), - nativeKeysIn = __webpack_require__(321); +var isObject = __webpack_require__(20), + isPrototype = __webpack_require__(103), + nativeKeysIn = __webpack_require__(363); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -49383,7 +51176,7 @@ module.exports = baseKeysIn; /***/ }), -/* 321 */ +/* 363 */ /***/ (function(module, exports) { /** @@ -49409,7 +51202,7 @@ module.exports = nativeKeysIn; /***/ }), -/* 322 */ +/* 364 */ /***/ (function(module, exports) { /** @@ -49439,7 +51232,7 @@ module.exports = baseFindIndex; /***/ }), -/* 323 */ +/* 365 */ /***/ (function(module, exports) { /** @@ -49457,7 +51250,7 @@ module.exports = baseIsNaN; /***/ }), -/* 324 */ +/* 366 */ /***/ (function(module, exports) { /** @@ -49486,10 +51279,10 @@ module.exports = strictIndexOf; /***/ }), -/* 325 */ +/* 367 */ /***/ (function(module, exports, __webpack_require__) { -var arrayMap = __webpack_require__(59); +var arrayMap = __webpack_require__(73); /** * The base implementation of `_.values` and `_.valuesIn` which creates an @@ -49511,19 +51304,19 @@ module.exports = baseValues; /***/ }), -/* 326 */ +/* 368 */ /***/ (function(module, exports, __webpack_require__) { -var baseSetData = __webpack_require__(91), - createBind = __webpack_require__(327), - createCurry = __webpack_require__(328), - createHybrid = __webpack_require__(94), - createPartial = __webpack_require__(341), - getData = __webpack_require__(98), - mergeData = __webpack_require__(342), - setData = __webpack_require__(101), - setWrapToString = __webpack_require__(102), - toInteger = __webpack_require__(56); +var baseSetData = __webpack_require__(115), + createBind = __webpack_require__(369), + createCurry = __webpack_require__(370), + createHybrid = __webpack_require__(118), + createPartial = __webpack_require__(383), + getData = __webpack_require__(122), + mergeData = __webpack_require__(384), + setData = __webpack_require__(125), + setWrapToString = __webpack_require__(126), + toInteger = __webpack_require__(70); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -49623,11 +51416,11 @@ module.exports = createWrap; /***/ }), -/* 327 */ +/* 369 */ /***/ (function(module, exports, __webpack_require__) { -var createCtor = __webpack_require__(41), - root = __webpack_require__(10); +var createCtor = __webpack_require__(51), + root = __webpack_require__(11); /** Used to compose bitmasks for function metadata. */ var WRAP_BIND_FLAG = 1; @@ -49657,16 +51450,16 @@ module.exports = createBind; /***/ }), -/* 328 */ +/* 370 */ /***/ (function(module, exports, __webpack_require__) { -var apply = __webpack_require__(58), - createCtor = __webpack_require__(41), - createHybrid = __webpack_require__(94), - createRecurry = __webpack_require__(97), - getHolder = __webpack_require__(63), - replaceHolders = __webpack_require__(42), - root = __webpack_require__(10); +var apply = __webpack_require__(72), + createCtor = __webpack_require__(51), + createHybrid = __webpack_require__(118), + createRecurry = __webpack_require__(121), + getHolder = __webpack_require__(77), + replaceHolders = __webpack_require__(52), + root = __webpack_require__(11); /** * Creates a function that wraps `func` to enable currying. @@ -49709,7 +51502,7 @@ module.exports = createCurry; /***/ }), -/* 329 */ +/* 371 */ /***/ (function(module, exports) { /** @@ -49736,13 +51529,13 @@ module.exports = countHolders; /***/ }), -/* 330 */ +/* 372 */ /***/ (function(module, exports, __webpack_require__) { -var LazyWrapper = __webpack_require__(61), - getData = __webpack_require__(98), - getFuncName = __webpack_require__(332), - lodash = __webpack_require__(334); +var LazyWrapper = __webpack_require__(75), + getData = __webpack_require__(122), + getFuncName = __webpack_require__(374), + lodash = __webpack_require__(376); /** * Checks if `func` has a lazy counterpart. @@ -49770,7 +51563,7 @@ module.exports = isLaziable; /***/ }), -/* 331 */ +/* 373 */ /***/ (function(module, exports) { /** @@ -49793,10 +51586,10 @@ module.exports = noop; /***/ }), -/* 332 */ +/* 374 */ /***/ (function(module, exports, __webpack_require__) { -var realNames = __webpack_require__(333); +var realNames = __webpack_require__(375); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -49830,7 +51623,7 @@ module.exports = getFuncName; /***/ }), -/* 333 */ +/* 375 */ /***/ (function(module, exports) { /** Used to lookup unminified function names. */ @@ -49840,15 +51633,15 @@ module.exports = realNames; /***/ }), -/* 334 */ +/* 376 */ /***/ (function(module, exports, __webpack_require__) { -var LazyWrapper = __webpack_require__(61), - LodashWrapper = __webpack_require__(99), - baseLodash = __webpack_require__(62), - isArray = __webpack_require__(15), - isObjectLike = __webpack_require__(19), - wrapperClone = __webpack_require__(335); +var LazyWrapper = __webpack_require__(75), + LodashWrapper = __webpack_require__(123), + baseLodash = __webpack_require__(76), + isArray = __webpack_require__(16), + isObjectLike = __webpack_require__(23), + wrapperClone = __webpack_require__(377); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -49993,12 +51786,12 @@ module.exports = lodash; /***/ }), -/* 335 */ +/* 377 */ /***/ (function(module, exports, __webpack_require__) { -var LazyWrapper = __webpack_require__(61), - LodashWrapper = __webpack_require__(99), - copyArray = __webpack_require__(100); +var LazyWrapper = __webpack_require__(75), + LodashWrapper = __webpack_require__(123), + copyArray = __webpack_require__(124); /** * Creates a clone of `wrapper`. @@ -50022,7 +51815,7 @@ module.exports = wrapperClone; /***/ }), -/* 336 */ +/* 378 */ /***/ (function(module, exports) { /** Used to match wrap detail comments. */ @@ -50045,7 +51838,7 @@ module.exports = getWrapDetails; /***/ }), -/* 337 */ +/* 379 */ /***/ (function(module, exports) { /** Used to match wrap detail comments. */ @@ -50074,11 +51867,11 @@ module.exports = insertWrapDetails; /***/ }), -/* 338 */ +/* 380 */ /***/ (function(module, exports, __webpack_require__) { -var arrayEach = __webpack_require__(73), - arrayIncludes = __webpack_require__(339); +var arrayEach = __webpack_require__(97), + arrayIncludes = __webpack_require__(381); /** Used to compose bitmasks for function metadata. */ var WRAP_BIND_FLAG = 1, @@ -50126,10 +51919,10 @@ module.exports = updateWrapDetails; /***/ }), -/* 339 */ +/* 381 */ /***/ (function(module, exports, __webpack_require__) { -var baseIndexOf = __webpack_require__(89); +var baseIndexOf = __webpack_require__(113); /** * A specialized version of `_.includes` for arrays without support for @@ -50149,11 +51942,11 @@ module.exports = arrayIncludes; /***/ }), -/* 340 */ +/* 382 */ /***/ (function(module, exports, __webpack_require__) { -var copyArray = __webpack_require__(100), - isIndex = __webpack_require__(30); +var copyArray = __webpack_require__(124), + isIndex = __webpack_require__(37); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMin = Math.min; @@ -50184,12 +51977,12 @@ module.exports = reorder; /***/ }), -/* 341 */ +/* 383 */ /***/ (function(module, exports, __webpack_require__) { -var apply = __webpack_require__(58), - createCtor = __webpack_require__(41), - root = __webpack_require__(10); +var apply = __webpack_require__(72), + createCtor = __webpack_require__(51), + root = __webpack_require__(11); /** Used to compose bitmasks for function metadata. */ var WRAP_BIND_FLAG = 1; @@ -50233,12 +52026,12 @@ module.exports = createPartial; /***/ }), -/* 342 */ +/* 384 */ /***/ (function(module, exports, __webpack_require__) { -var composeArgs = __webpack_require__(95), - composeArgsRight = __webpack_require__(96), - replaceHolders = __webpack_require__(42); +var composeArgs = __webpack_require__(119), + composeArgsRight = __webpack_require__(120), + replaceHolders = __webpack_require__(52); /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; @@ -50329,14 +52122,14 @@ module.exports = mergeData; /***/ }), -/* 343 */ +/* 385 */ /***/ (function(module, exports, __webpack_require__) { -var baseMatches = __webpack_require__(344), - baseMatchesProperty = __webpack_require__(385), - identity = __webpack_require__(31), - isArray = __webpack_require__(15), - property = __webpack_require__(394); +var baseMatches = __webpack_require__(386), + baseMatchesProperty = __webpack_require__(427), + identity = __webpack_require__(38), + isArray = __webpack_require__(16), + property = __webpack_require__(436); /** * The base implementation of `_.iteratee`. @@ -50366,12 +52159,12 @@ module.exports = baseIteratee; /***/ }), -/* 344 */ +/* 386 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsMatch = __webpack_require__(345), - getMatchData = __webpack_require__(384), - matchesStrictComparable = __webpack_require__(112); +var baseIsMatch = __webpack_require__(387), + getMatchData = __webpack_require__(426), + matchesStrictComparable = __webpack_require__(136); /** * The base implementation of `_.matches` which doesn't clone `source`. @@ -50394,11 +52187,11 @@ module.exports = baseMatches; /***/ }), -/* 345 */ +/* 387 */ /***/ (function(module, exports, __webpack_require__) { -var Stack = __webpack_require__(103), - baseIsEqual = __webpack_require__(104); +var Stack = __webpack_require__(127), + baseIsEqual = __webpack_require__(128); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -50462,7 +52255,7 @@ module.exports = baseIsMatch; /***/ }), -/* 346 */ +/* 388 */ /***/ (function(module, exports) { /** @@ -50481,10 +52274,10 @@ module.exports = listCacheClear; /***/ }), -/* 347 */ +/* 389 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(44); +var assocIndexOf = __webpack_require__(54); /** Used for built-in method references. */ var arrayProto = Array.prototype; @@ -50522,10 +52315,10 @@ module.exports = listCacheDelete; /***/ }), -/* 348 */ +/* 390 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(44); +var assocIndexOf = __webpack_require__(54); /** * Gets the list cache value for `key`. @@ -50547,10 +52340,10 @@ module.exports = listCacheGet; /***/ }), -/* 349 */ +/* 391 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(44); +var assocIndexOf = __webpack_require__(54); /** * Checks if a list cache value for `key` exists. @@ -50569,10 +52362,10 @@ module.exports = listCacheHas; /***/ }), -/* 350 */ +/* 392 */ /***/ (function(module, exports, __webpack_require__) { -var assocIndexOf = __webpack_require__(44); +var assocIndexOf = __webpack_require__(54); /** * Sets the list cache `key` to `value`. @@ -50601,10 +52394,10 @@ module.exports = listCacheSet; /***/ }), -/* 351 */ +/* 393 */ /***/ (function(module, exports, __webpack_require__) { -var ListCache = __webpack_require__(43); +var ListCache = __webpack_require__(53); /** * Removes all key-value entries from the stack. @@ -50622,7 +52415,7 @@ module.exports = stackClear; /***/ }), -/* 352 */ +/* 394 */ /***/ (function(module, exports) { /** @@ -50646,7 +52439,7 @@ module.exports = stackDelete; /***/ }), -/* 353 */ +/* 395 */ /***/ (function(module, exports) { /** @@ -50666,7 +52459,7 @@ module.exports = stackGet; /***/ }), -/* 354 */ +/* 396 */ /***/ (function(module, exports) { /** @@ -50686,12 +52479,12 @@ module.exports = stackHas; /***/ }), -/* 355 */ +/* 397 */ /***/ (function(module, exports, __webpack_require__) { -var ListCache = __webpack_require__(43), - Map = __webpack_require__(64), - MapCache = __webpack_require__(65); +var ListCache = __webpack_require__(53), + Map = __webpack_require__(78), + MapCache = __webpack_require__(79); /** Used as the size to enable large array optimizations. */ var LARGE_ARRAY_SIZE = 200; @@ -50726,12 +52519,12 @@ module.exports = stackSet; /***/ }), -/* 356 */ +/* 398 */ /***/ (function(module, exports, __webpack_require__) { -var Hash = __webpack_require__(357), - ListCache = __webpack_require__(43), - Map = __webpack_require__(64); +var Hash = __webpack_require__(399), + ListCache = __webpack_require__(53), + Map = __webpack_require__(78); /** * Removes all key-value entries from the map. @@ -50753,14 +52546,14 @@ module.exports = mapCacheClear; /***/ }), -/* 357 */ +/* 399 */ /***/ (function(module, exports, __webpack_require__) { -var hashClear = __webpack_require__(358), - hashDelete = __webpack_require__(359), - hashGet = __webpack_require__(360), - hashHas = __webpack_require__(361), - hashSet = __webpack_require__(362); +var hashClear = __webpack_require__(400), + hashDelete = __webpack_require__(401), + hashGet = __webpack_require__(402), + hashHas = __webpack_require__(403), + hashSet = __webpack_require__(404); /** * Creates a hash object. @@ -50791,10 +52584,10 @@ module.exports = Hash; /***/ }), -/* 358 */ +/* 400 */ /***/ (function(module, exports, __webpack_require__) { -var nativeCreate = __webpack_require__(45); +var nativeCreate = __webpack_require__(55); /** * Removes all key-value entries from the hash. @@ -50812,7 +52605,7 @@ module.exports = hashClear; /***/ }), -/* 359 */ +/* 401 */ /***/ (function(module, exports) { /** @@ -50835,10 +52628,10 @@ module.exports = hashDelete; /***/ }), -/* 360 */ +/* 402 */ /***/ (function(module, exports, __webpack_require__) { -var nativeCreate = __webpack_require__(45); +var nativeCreate = __webpack_require__(55); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -50871,10 +52664,10 @@ module.exports = hashGet; /***/ }), -/* 361 */ +/* 403 */ /***/ (function(module, exports, __webpack_require__) { -var nativeCreate = __webpack_require__(45); +var nativeCreate = __webpack_require__(55); /** Used for built-in method references. */ var objectProto = Object.prototype; @@ -50900,10 +52693,10 @@ module.exports = hashHas; /***/ }), -/* 362 */ +/* 404 */ /***/ (function(module, exports, __webpack_require__) { -var nativeCreate = __webpack_require__(45); +var nativeCreate = __webpack_require__(55); /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; @@ -50929,10 +52722,10 @@ module.exports = hashSet; /***/ }), -/* 363 */ +/* 405 */ /***/ (function(module, exports, __webpack_require__) { -var getMapData = __webpack_require__(46); +var getMapData = __webpack_require__(56); /** * Removes `key` and its value from the map. @@ -50953,7 +52746,7 @@ module.exports = mapCacheDelete; /***/ }), -/* 364 */ +/* 406 */ /***/ (function(module, exports) { /** @@ -50974,10 +52767,10 @@ module.exports = isKeyable; /***/ }), -/* 365 */ +/* 407 */ /***/ (function(module, exports, __webpack_require__) { -var getMapData = __webpack_require__(46); +var getMapData = __webpack_require__(56); /** * Gets the map value for `key`. @@ -50996,10 +52789,10 @@ module.exports = mapCacheGet; /***/ }), -/* 366 */ +/* 408 */ /***/ (function(module, exports, __webpack_require__) { -var getMapData = __webpack_require__(46); +var getMapData = __webpack_require__(56); /** * Checks if a map value for `key` exists. @@ -51018,10 +52811,10 @@ module.exports = mapCacheHas; /***/ }), -/* 367 */ +/* 409 */ /***/ (function(module, exports, __webpack_require__) { -var getMapData = __webpack_require__(46); +var getMapData = __webpack_require__(56); /** * Sets the map `key` to `value`. @@ -51046,17 +52839,17 @@ module.exports = mapCacheSet; /***/ }), -/* 368 */ +/* 410 */ /***/ (function(module, exports, __webpack_require__) { -var Stack = __webpack_require__(103), - equalArrays = __webpack_require__(105), - equalByTag = __webpack_require__(374), - equalObjects = __webpack_require__(378), - getTag = __webpack_require__(110), - isArray = __webpack_require__(15), - isBuffer = __webpack_require__(76), - isTypedArray = __webpack_require__(77); +var Stack = __webpack_require__(127), + equalArrays = __webpack_require__(129), + equalByTag = __webpack_require__(416), + equalObjects = __webpack_require__(420), + getTag = __webpack_require__(134), + isArray = __webpack_require__(16), + isBuffer = __webpack_require__(100), + isTypedArray = __webpack_require__(101); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -51135,12 +52928,12 @@ module.exports = baseIsEqualDeep; /***/ }), -/* 369 */ +/* 411 */ /***/ (function(module, exports, __webpack_require__) { -var MapCache = __webpack_require__(65), - setCacheAdd = __webpack_require__(370), - setCacheHas = __webpack_require__(371); +var MapCache = __webpack_require__(79), + setCacheAdd = __webpack_require__(412), + setCacheHas = __webpack_require__(413); /** * @@ -51168,7 +52961,7 @@ module.exports = SetCache; /***/ }), -/* 370 */ +/* 412 */ /***/ (function(module, exports) { /** Used to stand-in for `undefined` hash values. */ @@ -51193,7 +52986,7 @@ module.exports = setCacheAdd; /***/ }), -/* 371 */ +/* 413 */ /***/ (function(module, exports) { /** @@ -51213,7 +53006,7 @@ module.exports = setCacheHas; /***/ }), -/* 372 */ +/* 414 */ /***/ (function(module, exports) { /** @@ -51242,7 +53035,7 @@ module.exports = arraySome; /***/ }), -/* 373 */ +/* 415 */ /***/ (function(module, exports) { /** @@ -51261,15 +53054,15 @@ module.exports = cacheHas; /***/ }), -/* 374 */ +/* 416 */ /***/ (function(module, exports, __webpack_require__) { -var Symbol = __webpack_require__(39), - Uint8Array = __webpack_require__(375), - eq = __webpack_require__(40), - equalArrays = __webpack_require__(105), - mapToArray = __webpack_require__(376), - setToArray = __webpack_require__(377); +var Symbol = __webpack_require__(49), + Uint8Array = __webpack_require__(417), + eq = __webpack_require__(50), + equalArrays = __webpack_require__(129), + mapToArray = __webpack_require__(418), + setToArray = __webpack_require__(419); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -51379,10 +53172,10 @@ module.exports = equalByTag; /***/ }), -/* 375 */ +/* 417 */ /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(10); +var root = __webpack_require__(11); /** Built-in value references. */ var Uint8Array = root.Uint8Array; @@ -51391,7 +53184,7 @@ module.exports = Uint8Array; /***/ }), -/* 376 */ +/* 418 */ /***/ (function(module, exports) { /** @@ -51415,7 +53208,7 @@ module.exports = mapToArray; /***/ }), -/* 377 */ +/* 419 */ /***/ (function(module, exports) { /** @@ -51439,10 +53232,10 @@ module.exports = setToArray; /***/ }), -/* 378 */ +/* 420 */ /***/ (function(module, exports, __webpack_require__) { -var getAllKeys = __webpack_require__(379); +var getAllKeys = __webpack_require__(421); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1; @@ -51535,12 +53328,12 @@ module.exports = equalObjects; /***/ }), -/* 379 */ +/* 421 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetAllKeys = __webpack_require__(106), - getSymbols = __webpack_require__(108), - keys = __webpack_require__(26); +var baseGetAllKeys = __webpack_require__(130), + getSymbols = __webpack_require__(132), + keys = __webpack_require__(33); /** * Creates an array of own enumerable property names and symbols of `object`. @@ -51557,7 +53350,7 @@ module.exports = getAllKeys; /***/ }), -/* 380 */ +/* 422 */ /***/ (function(module, exports) { /** @@ -51588,11 +53381,11 @@ module.exports = arrayFilter; /***/ }), -/* 381 */ +/* 423 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22), - root = __webpack_require__(10); +var getNative = __webpack_require__(26), + root = __webpack_require__(11); /* Built-in method references that are verified to be native. */ var DataView = getNative(root, 'DataView'); @@ -51601,11 +53394,11 @@ module.exports = DataView; /***/ }), -/* 382 */ +/* 424 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22), - root = __webpack_require__(10); +var getNative = __webpack_require__(26), + root = __webpack_require__(11); /* Built-in method references that are verified to be native. */ var Promise = getNative(root, 'Promise'); @@ -51614,11 +53407,11 @@ module.exports = Promise; /***/ }), -/* 383 */ +/* 425 */ /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(22), - root = __webpack_require__(10); +var getNative = __webpack_require__(26), + root = __webpack_require__(11); /* Built-in method references that are verified to be native. */ var Set = getNative(root, 'Set'); @@ -51627,11 +53420,11 @@ module.exports = Set; /***/ }), -/* 384 */ +/* 426 */ /***/ (function(module, exports, __webpack_require__) { -var isStrictComparable = __webpack_require__(111), - keys = __webpack_require__(26); +var isStrictComparable = __webpack_require__(135), + keys = __webpack_require__(33); /** * Gets the property names, values, and compare flags of `object`. @@ -51657,16 +53450,16 @@ module.exports = getMatchData; /***/ }), -/* 385 */ +/* 427 */ /***/ (function(module, exports, __webpack_require__) { -var baseIsEqual = __webpack_require__(104), - get = __webpack_require__(386), - hasIn = __webpack_require__(391), - isKey = __webpack_require__(67), - isStrictComparable = __webpack_require__(111), - matchesStrictComparable = __webpack_require__(112), - toKey = __webpack_require__(32); +var baseIsEqual = __webpack_require__(128), + get = __webpack_require__(428), + hasIn = __webpack_require__(433), + isKey = __webpack_require__(81), + isStrictComparable = __webpack_require__(135), + matchesStrictComparable = __webpack_require__(136), + toKey = __webpack_require__(39); /** Used to compose bitmasks for value comparisons. */ var COMPARE_PARTIAL_FLAG = 1, @@ -51696,10 +53489,10 @@ module.exports = baseMatchesProperty; /***/ }), -/* 386 */ +/* 428 */ /***/ (function(module, exports, __webpack_require__) { -var baseGet = __webpack_require__(66); +var baseGet = __webpack_require__(80); /** * Gets the value at `path` of `object`. If the resolved value is @@ -51735,10 +53528,10 @@ module.exports = get; /***/ }), -/* 387 */ +/* 429 */ /***/ (function(module, exports, __webpack_require__) { -var memoizeCapped = __webpack_require__(388); +var memoizeCapped = __webpack_require__(430); /** Used to match property names within property paths. */ var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; @@ -51768,10 +53561,10 @@ module.exports = stringToPath; /***/ }), -/* 388 */ +/* 430 */ /***/ (function(module, exports, __webpack_require__) { -var memoize = __webpack_require__(389); +var memoize = __webpack_require__(431); /** Used as the maximum memoize cache size. */ var MAX_MEMOIZE_SIZE = 500; @@ -51800,10 +53593,10 @@ module.exports = memoizeCapped; /***/ }), -/* 389 */ +/* 431 */ /***/ (function(module, exports, __webpack_require__) { -var MapCache = __webpack_require__(65); +var MapCache = __webpack_require__(79); /** Error message constants. */ var FUNC_ERROR_TEXT = 'Expected a function'; @@ -51879,13 +53672,13 @@ module.exports = memoize; /***/ }), -/* 390 */ +/* 432 */ /***/ (function(module, exports, __webpack_require__) { -var Symbol = __webpack_require__(39), - arrayMap = __webpack_require__(59), - isArray = __webpack_require__(15), - isSymbol = __webpack_require__(38); +var Symbol = __webpack_require__(49), + arrayMap = __webpack_require__(73), + isArray = __webpack_require__(16), + isSymbol = __webpack_require__(48); /** Used as references for various `Number` constants. */ var INFINITY = 1 / 0; @@ -51922,11 +53715,11 @@ module.exports = baseToString; /***/ }), -/* 391 */ +/* 433 */ /***/ (function(module, exports, __webpack_require__) { -var baseHasIn = __webpack_require__(392), - hasPath = __webpack_require__(393); +var baseHasIn = __webpack_require__(434), + hasPath = __webpack_require__(435); /** * Checks if `path` is a direct or inherited property of `object`. @@ -51962,7 +53755,7 @@ module.exports = hasIn; /***/ }), -/* 392 */ +/* 434 */ /***/ (function(module, exports) { /** @@ -51981,15 +53774,15 @@ module.exports = baseHasIn; /***/ }), -/* 393 */ +/* 435 */ /***/ (function(module, exports, __webpack_require__) { -var castPath = __webpack_require__(47), - isArguments = __webpack_require__(75), - isArray = __webpack_require__(15), - isIndex = __webpack_require__(30), - isLength = __webpack_require__(57), - toKey = __webpack_require__(32); +var castPath = __webpack_require__(57), + isArguments = __webpack_require__(99), + isArray = __webpack_require__(16), + isIndex = __webpack_require__(37), + isLength = __webpack_require__(71), + toKey = __webpack_require__(39); /** * Checks if `path` exists on `object`. @@ -52026,13 +53819,13 @@ module.exports = hasPath; /***/ }), -/* 394 */ +/* 436 */ /***/ (function(module, exports, __webpack_require__) { -var baseProperty = __webpack_require__(114), - basePropertyDeep = __webpack_require__(395), - isKey = __webpack_require__(67), - toKey = __webpack_require__(32); +var baseProperty = __webpack_require__(138), + basePropertyDeep = __webpack_require__(437), + isKey = __webpack_require__(81), + toKey = __webpack_require__(39); /** * Creates a function that returns the value at `path` of a given object. @@ -52064,10 +53857,10 @@ module.exports = property; /***/ }), -/* 395 */ +/* 437 */ /***/ (function(module, exports, __webpack_require__) { -var baseGet = __webpack_require__(66); +var baseGet = __webpack_require__(80); /** * A specialized version of `baseProperty` which supports deep paths. @@ -52086,12 +53879,12 @@ module.exports = basePropertyDeep; /***/ }), -/* 396 */ +/* 438 */ /***/ (function(module, exports, __webpack_require__) { -var baseGet = __webpack_require__(66), - baseSet = __webpack_require__(397), - castPath = __webpack_require__(47); +var baseGet = __webpack_require__(80), + baseSet = __webpack_require__(439), + castPath = __webpack_require__(57); /** * The base implementation of `_.pickBy` without support for iteratee shorthands. @@ -52122,14 +53915,14 @@ module.exports = basePickBy; /***/ }), -/* 397 */ +/* 439 */ /***/ (function(module, exports, __webpack_require__) { -var assignValue = __webpack_require__(81), - castPath = __webpack_require__(47), - isIndex = __webpack_require__(30), - isObject = __webpack_require__(17), - toKey = __webpack_require__(32); +var assignValue = __webpack_require__(105), + castPath = __webpack_require__(57), + isIndex = __webpack_require__(37), + isObject = __webpack_require__(20), + toKey = __webpack_require__(39); /** * The base implementation of `_.set`. @@ -52179,12 +53972,12 @@ module.exports = baseSet; /***/ }), -/* 398 */ +/* 440 */ /***/ (function(module, exports, __webpack_require__) { -var baseGetAllKeys = __webpack_require__(106), - getSymbolsIn = __webpack_require__(399), - keysIn = __webpack_require__(88); +var baseGetAllKeys = __webpack_require__(130), + getSymbolsIn = __webpack_require__(441), + keysIn = __webpack_require__(112); /** * Creates an array of own and inherited enumerable property names and @@ -52202,13 +53995,13 @@ module.exports = getAllKeysIn; /***/ }), -/* 399 */ +/* 441 */ /***/ (function(module, exports, __webpack_require__) { -var arrayPush = __webpack_require__(107), - getPrototype = __webpack_require__(400), - getSymbols = __webpack_require__(108), - stubArray = __webpack_require__(109); +var arrayPush = __webpack_require__(131), + getPrototype = __webpack_require__(442), + getSymbols = __webpack_require__(132), + stubArray = __webpack_require__(133); /* Built-in method references for those with the same name as other `lodash` methods. */ var nativeGetSymbols = Object.getOwnPropertySymbols; @@ -52233,10 +54026,10 @@ module.exports = getSymbolsIn; /***/ }), -/* 400 */ +/* 442 */ /***/ (function(module, exports, __webpack_require__) { -var overArg = __webpack_require__(80); +var overArg = __webpack_require__(104); /** Built-in value references. */ var getPrototype = overArg(Object.getPrototypeOf, Object); @@ -52245,12 +54038,12 @@ module.exports = getPrototype; /***/ }), -/* 401 */ +/* 443 */ /***/ (function(module, exports, __webpack_require__) { -var asciiSize = __webpack_require__(402), - hasUnicode = __webpack_require__(403), - unicodeSize = __webpack_require__(404); +var asciiSize = __webpack_require__(444), + hasUnicode = __webpack_require__(445), + unicodeSize = __webpack_require__(446); /** * Gets the number of symbols in `string`. @@ -52269,10 +54062,10 @@ module.exports = stringSize; /***/ }), -/* 402 */ +/* 444 */ /***/ (function(module, exports, __webpack_require__) { -var baseProperty = __webpack_require__(114); +var baseProperty = __webpack_require__(138); /** * Gets the size of an ASCII `string`. @@ -52287,7 +54080,7 @@ module.exports = asciiSize; /***/ }), -/* 403 */ +/* 445 */ /***/ (function(module, exports) { /** Used to compose unicode character classes. */ @@ -52319,7 +54112,7 @@ module.exports = hasUnicode; /***/ }), -/* 404 */ +/* 446 */ /***/ (function(module, exports) { /** Used to compose unicode character classes. */ @@ -52369,327 +54162,2274 @@ module.exports = unicodeSize; /***/ }), -/* 405 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/* 447 */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -/* harmony import */ var _websocket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(54); -/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); -/* - This program is distributed under the terms of the MIT license. - Please see the LICENSE file for details. - Copyright 2020, JC Brand -*/ +exports.__esModule = true; -const lmap = {}; -lmap['debug'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.DEBUG; -lmap['info'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.INFO; -lmap['warn'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.WARN; -lmap['error'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR; -lmap['fatal'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.FATAL; -/** Class: Strophe.WorkerWebsocket - * _Private_ helper class that handles a websocket connection inside a shared worker. - */ +var _defineProperty = __webpack_require__(448); -_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].WorkerWebsocket = class WorkerWebsocket extends _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Websocket { - /** PrivateConstructor: Strophe.WorkerWebsocket - * Create and initialize a Strophe.WorkerWebsocket object. - * - * Parameters: - * (Strophe.Connection) connection - The Strophe.Connection - * - * Returns: - * A new Strophe.WorkerWebsocket object. - */ - constructor(connection) { - super(connection); - this._conn = connection; - this.worker = new SharedWorker(this._conn.options.worker, 'Strophe XMPP Connection'); +var _defineProperty2 = _interopRequireDefault(_defineProperty); - this.worker.onerror = e => { - var _console; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - (_console = console) === null || _console === void 0 ? void 0 : _console.error(e); - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, "Shared Worker Error: ".concat(e)); - }; +exports.default = function (obj, key, value) { + if (key in obj) { + (0, _defineProperty2.default)(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; } - get socket() { - return { - 'send': str => this.worker.port.postMessage(['send', str]) - }; + return obj; +}; + +/***/ }), +/* 448 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(449), __esModule: true }; + +/***/ }), +/* 449 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(450); +var $Object = __webpack_require__(19).Object; +module.exports = function defineProperty(it, key, desc) { + return $Object.defineProperty(it, key, desc); +}; + + +/***/ }), +/* 450 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(30); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !__webpack_require__(32), 'Object', { defineProperty: __webpack_require__(40).f }); + + +/***/ }), +/* 451 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(32) && !__webpack_require__(82)(function () { + return Object.defineProperty(__webpack_require__(83)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 452 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(41); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 453 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { "default": __webpack_require__(454), __esModule: true }; + +/***/ }), +/* 454 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(455); +module.exports = __webpack_require__(19).Object.keys; + + +/***/ }), +/* 455 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 Object.keys(O) +var toObject = __webpack_require__(141); +var $keys = __webpack_require__(142); + +__webpack_require__(460)('keys', function () { + return function keys(it) { + return $keys(toObject(it)); + }; +}); + + +/***/ }), +/* 456 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(60); +var toIObject = __webpack_require__(85); +var arrayIndexOf = __webpack_require__(458)(false); +var IE_PROTO = __webpack_require__(87)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); } + return result; +}; - _connect() { - this._messageHandler = m => this._onInitialMessage(m); - this.worker.port.start(); +/***/ }), +/* 457 */ +/***/ (function(module, exports, __webpack_require__) { - this.worker.port.onmessage = ev => this._onWorkerMessage(ev); +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(61); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; - this.worker.port.postMessage(['_connect', this._conn.service, this._conn.jid]); + +/***/ }), +/* 458 */ +/***/ (function(module, exports, __webpack_require__) { + +// false -> Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(85); +var toLength = __webpack_require__(143); +var toAbsoluteIndex = __webpack_require__(459); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), +/* 459 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(86); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), +/* 460 */ +/***/ (function(module, exports, __webpack_require__) { + +// most Object methods by ES6 should accept primitives +var $export = __webpack_require__(30); +var core = __webpack_require__(19); +var fails = __webpack_require__(82); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + + +/***/ }), +/* 461 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(462); + + +/***/ }), +/* 462 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// This method of obtaining a reference to the global object needs to be +// kept identical to the way it is obtained in runtime.js +var g = (function() { return this })() || Function("return this")(); + +// Use `getOwnPropertyNames` because not all browsers support calling +// `hasOwnProperty` on the global `self` object in a worker. See #183. +var hadRuntime = g.regeneratorRuntime && + Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0; + +// Save the old regeneratorRuntime in case it needs to be restored later. +var oldRuntime = hadRuntime && g.regeneratorRuntime; + +// Force reevalutation of runtime.js. +g.regeneratorRuntime = undefined; + +module.exports = __webpack_require__(463); + +if (hadRuntime) { + // Restore the original runtime. + g.regeneratorRuntime = oldRuntime; +} else { + // Remove the global property added by runtime.js. + try { + delete g.regeneratorRuntime; + } catch(e) { + g.regeneratorRuntime = undefined; } +} - _attach(callback) { - this._messageHandler = m => this._onMessage(m); - this._conn.connect_callback = callback; - this.worker.port.start(); +/***/ }), +/* 463 */ +/***/ (function(module, exports) { - this.worker.port.onmessage = ev => this._onWorkerMessage(ev); +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ - this.worker.port.postMessage(['_attach', this._conn.service]); +!(function(global) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; } - _attachCallback(status, jid) { - if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHED) { - this._conn.jid = jid; - this._conn.authenticated = true; - this._conn.connected = true; - this._conn.restored = true; + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHED); - } else if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHFAIL) { - this._conn.authenticated = false; - this._conn.connected = false; - this._conn.restored = false; + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHFAIL); + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; } } - _disconnect(readyState, pres) { - pres && this._conn.send(pres); - const close = Object(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])("close", { - "xmlns": _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].NS.FRAMING + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; }); + } - this._conn.xmlOutput(close.tree()); + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; - const closeString = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].serialize(close); + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; - this._conn.rawOutput(closeString); + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + runtime.awrap = function(arg) { + return { __await: arg }; + }; - this.worker.port.postMessage(['send', closeString]); + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } - this._conn._doDisconnect(); + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + runtime.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; } - _onClose(e) { - if (this._conn.connected && !this._conn.disconnecting) { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].error("Websocket closed unexpectedly"); + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator.return) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } - this._conn._doDisconnect(); - } else if (e && e.code === 1006 && !this._conn.connected) { - // in case the onError callback was not called (Safari 10 does not - // call onerror when the initial connection fails) we need to - // dispatch a CONNFAIL status update to be consistent with the - // behavior on other browsers. - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].error("Websocket closed unexcectedly"); + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } - this._conn._doDisconnect(); } else { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].debug("Websocket closed"); + // Re-yield the result returned by the delegate method. + return info; } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; } - _closeSocket() { - this.worker.port.postMessage(['_closeSocket']); + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); } - /** PrivateFunction: _replaceMessageHandler - * - * Called by _onInitialMessage in order to replace itself with the general message handler. - * This method is overridden by Strophe.WorkerWebsocket, which manages a - * websocket connection via a service worker and doesn't have direct access - * to the socket. - */ + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } - _replaceMessageHandler() { - this._messageHandler = m => this._onMessage(m); + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); } - /** PrivateFunction: _onWorkerMessage - * _Private_ function that handles messages received from the service worker - */ + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); - _onWorkerMessage(ev) { - const { - data - } = ev; - const method_name = data[0]; + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } - if (method_name === '_onMessage') { - this._messageHandler(data[1]); - } else if (method_name in this) { - try { - this[method_name].apply(this, ev.data.slice(1)); - } catch (e) { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, e); + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; } - } else if (method_name === 'log') { - const level = data[1]; - const msg = data[2]; - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(lmap[level], msg); - } else { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, "Found unhandled service worker message: ".concat(data)); } + + // Return an iterator with no values. + return { next: doneResult }; } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; +})( + // In sloppy mode, unbound `this` refers to the global object, fallback to + // Function constructor if we're in global strict mode. That is sadly a form + // of indirect eval which violates Content Security Policy. + (function() { return this })() || Function("return this")() +); -}; /***/ }), -/* 406 */ +/* 464 */ /***/ (function(module, exports, __webpack_require__) { -var map = { - "./af/LC_MESSAGES/converse.po": [ - 419, - 139 - ], - "./ar/LC_MESSAGES/converse.po": [ - 420, - 140 - ], - "./bg/LC_MESSAGES/converse.po": [ - 421, - 141 - ], - "./ca/LC_MESSAGES/converse.po": [ - 422, - 142 - ], - "./cs/LC_MESSAGES/converse.po": [ - 423, - 143 +"use strict"; + + +exports.__esModule = true; + +var _promise = __webpack_require__(89); + +var _promise2 = _interopRequireDefault(_promise); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.default = function (fn) { + return function () { + var gen = fn.apply(this, arguments); + return new _promise2.default(function (resolve, reject) { + function step(key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + return _promise2.default.resolve(value).then(function (value) { + step("next", value); + }, function (err) { + step("throw", err); + }); + } + } + + return step("next"); + }); + }; +}; + +/***/ }), +/* 465 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(466); +__webpack_require__(467); +__webpack_require__(474); +__webpack_require__(478); +__webpack_require__(490); +__webpack_require__(491); +module.exports = __webpack_require__(19).Promise; + + +/***/ }), +/* 466 */ +/***/ (function(module, exports) { + + + +/***/ }), +/* 467 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $at = __webpack_require__(468)(true); + +// 21.1.3.27 String.prototype[@@iterator]() +__webpack_require__(147)(String, 'String', function (iterated) { + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function () { + var O = this._t; + var index = this._i; + var point; + if (index >= O.length) return { value: undefined, done: true }; + point = $at(O, index); + this._i += point.length; + return { value: point, done: false }; +}); + + +/***/ }), +/* 468 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(86); +var defined = __webpack_require__(84); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), +/* 469 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(31); + + +/***/ }), +/* 470 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__(471); +var descriptor = __webpack_require__(140); +var setToStringTag = __webpack_require__(90); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(31)(IteratorPrototype, __webpack_require__(17)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + + +/***/ }), +/* 471 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(27); +var dPs = __webpack_require__(472); +var enumBugKeys = __webpack_require__(146); +var IE_PROTO = __webpack_require__(87)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(83)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(148).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 472 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(40); +var anObject = __webpack_require__(27); +var getKeys = __webpack_require__(142); + +module.exports = __webpack_require__(32) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + + +/***/ }), +/* 473 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(60); +var toObject = __webpack_require__(141); +var IE_PROTO = __webpack_require__(87)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + + +/***/ }), +/* 474 */ +/***/ (function(module, exports, __webpack_require__) { + +__webpack_require__(475); +var global = __webpack_require__(13); +var hide = __webpack_require__(31); +var Iterators = __webpack_require__(42); +var TO_STRING_TAG = __webpack_require__(17)('toStringTag'); + +var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + + 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + + 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + + 'TextTrackList,TouchList').split(','); + +for (var i = 0; i < DOMIterables.length; i++) { + var NAME = DOMIterables[i]; + var Collection = global[NAME]; + var proto = Collection && Collection.prototype; + if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = Iterators.Array; +} + + +/***/ }), +/* 475 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var addToUnscopables = __webpack_require__(476); +var step = __webpack_require__(477); +var Iterators = __webpack_require__(42); +var toIObject = __webpack_require__(85); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(147)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), +/* 476 */ +/***/ (function(module, exports) { + +module.exports = function () { /* empty */ }; + + +/***/ }), +/* 477 */ +/***/ (function(module, exports) { + +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + + +/***/ }), +/* 478 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(88); +var global = __webpack_require__(13); +var ctx = __webpack_require__(58); +var classof = __webpack_require__(149); +var $export = __webpack_require__(30); +var isObject = __webpack_require__(41); +var aFunction = __webpack_require__(59); +var anInstance = __webpack_require__(479); +var forOf = __webpack_require__(480); +var speciesConstructor = __webpack_require__(150); +var task = __webpack_require__(151).set; +var microtask = __webpack_require__(485)(); +var newPromiseCapabilityModule = __webpack_require__(91); +var perform = __webpack_require__(152); +var userAgent = __webpack_require__(486); +var promiseResolve = __webpack_require__(153); +var PROMISE = 'Promise'; +var TypeError = global.TypeError; +var process = global.process; +var versions = process && process.versions; +var v8 = versions && versions.v8 || ''; +var $Promise = global[PROMISE]; +var isNode = classof(process) == 'process'; +var empty = function () { /* empty */ }; +var Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper; +var newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f; + +var USE_NATIVE = !!function () { + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1); + var FakePromise = (promise.constructor = {})[__webpack_require__(17)('species')] = function (exec) { + exec(empty, empty); + }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') + && promise.then(empty) instanceof FakePromise + // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // we can't detect it synchronously, so just check versions + && v8.indexOf('6.6') !== 0 + && userAgent.indexOf('Chrome/66') === -1; + } catch (e) { /* empty */ } +}(); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var notify = function (promise, isReject) { + if (promise._n) return; + promise._n = true; + var chain = promise._c; + microtask(function () { + var value = promise._v; + var ok = promise._s == 1; + var i = 0; + var run = function (reaction) { + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (promise._h == 2) onHandleUnhandled(promise); + promise._h = 1; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // may throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (e) { + if (domain && !exited) domain.exit(); + reject(e); + } + }; + while (chain.length > i) run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if (isReject && !promise._h) onUnhandled(promise); + }); +}; +var onUnhandled = function (promise) { + task.call(global, function () { + var value = promise._v; + var unhandled = isUnhandled(promise); + var result, handler, console; + if (unhandled) { + result = perform(function () { + if (isNode) { + process.emit('unhandledRejection', value, promise); + } else if (handler = global.onunhandledrejection) { + handler({ promise: promise, reason: value }); + } else if ((console = global.console) && console.error) { + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if (unhandled && result.e) throw result.v; + }); +}; +var isUnhandled = function (promise) { + return promise._h !== 1 && (promise._a || promise._c).length === 0; +}; +var onHandleUnhandled = function (promise) { + task.call(global, function () { + var handler; + if (isNode) { + process.emit('rejectionHandled', promise); + } else if (handler = global.onrejectionhandled) { + handler({ promise: promise, reason: promise._v }); + } + }); +}; +var $reject = function (value) { + var promise = this; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if (!promise._a) promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function (value) { + var promise = this; + var then; + if (promise._d) return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + if (then = isThenable(value)) { + microtask(function () { + var wrapper = { _w: promise, _d: false }; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch (e) { + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch (e) { + $reject.call({ _w: promise, _d: false }, e); // wrap + } +}; + +// constructor polyfill +if (!USE_NATIVE) { + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor) { + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch (err) { + $reject.call(this, err); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = __webpack_require__(487)($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected) { + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if (this._a) this._a.push(reaction); + if (this._s) notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === $Promise || C === Wrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise }); +__webpack_require__(90)($Promise, PROMISE); +__webpack_require__(488)(PROMISE); +Wrapper = __webpack_require__(19)[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r) { + var capability = newPromiseCapability(this); + var $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x) { + return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x); + } +}); +$export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(489)(function (iter) { + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var values = []; + var index = 0; + var remaining = 1; + forOf(iterable, false, function (promise) { + var $index = index++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.e) reject(result.v); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + forOf(iterable, false, function (promise) { + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if (result.e) reject(result.v); + return capability.promise; + } +}); + + +/***/ }), +/* 479 */ +/***/ (function(module, exports) { + +module.exports = function (it, Constructor, name, forbiddenField) { + if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; + + +/***/ }), +/* 480 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(58); +var call = __webpack_require__(481); +var isArrayIter = __webpack_require__(482); +var anObject = __webpack_require__(27); +var toLength = __webpack_require__(143); +var getIterFn = __webpack_require__(483); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + + +/***/ }), +/* 481 */ +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(27); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + + +/***/ }), +/* 482 */ +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__(42); +var ITERATOR = __webpack_require__(17)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + + +/***/ }), +/* 483 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(149); +var ITERATOR = __webpack_require__(17)('iterator'); +var Iterators = __webpack_require__(42); +module.exports = __webpack_require__(19).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), +/* 484 */ +/***/ (function(module, exports) { + +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + + +/***/ }), +/* 485 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(13); +var macrotask = __webpack_require__(151).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = __webpack_require__(61)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + + +/***/ }), +/* 486 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(13); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + + +/***/ }), +/* 487 */ +/***/ (function(module, exports, __webpack_require__) { + +var hide = __webpack_require__(31); +module.exports = function (target, src, safe) { + for (var key in src) { + if (safe && target[key]) target[key] = src[key]; + else hide(target, key, src[key]); + } return target; +}; + + +/***/ }), +/* 488 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(13); +var core = __webpack_require__(19); +var dP = __webpack_require__(40); +var DESCRIPTORS = __webpack_require__(32); +var SPECIES = __webpack_require__(17)('species'); + +module.exports = function (KEY) { + var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + + +/***/ }), +/* 489 */ +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__(17)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + + +/***/ }), +/* 490 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// https://github.com/tc39/proposal-promise-finally + +var $export = __webpack_require__(30); +var core = __webpack_require__(19); +var global = __webpack_require__(13); +var speciesConstructor = __webpack_require__(150); +var promiseResolve = __webpack_require__(153); + +$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) { + var C = speciesConstructor(this, core.Promise || global.Promise); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); +} }); + + +/***/ }), +/* 491 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://github.com/tc39/proposal-promise-try +var $export = __webpack_require__(30); +var newPromiseCapability = __webpack_require__(91); +var perform = __webpack_require__(152); + +$export($export.S, 'Promise', { 'try': function (callbackfn) { + var promiseCapability = newPromiseCapability.f(this); + var result = perform(callbackfn); + (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v); + return promiseCapability.promise; +} }); + + +/***/ }), +/* 492 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _promise = __webpack_require__(89); + +var _promise2 = _interopRequireDefault(_promise); + +exports.getStorage = getStorage; +exports.usePromise = usePromise; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * Need to invoke a function at runtime instead of import-time to make tests + * pass with mocked browser and chrome objects + */ +function getStorage() { + return window.browser && browser.storage || window.chrome && chrome.storage; +} + +/** + * Need to invoke a function at runtime instead of import-time to make tests + * pass with mocked browser and chrome objects + */ +function usesPromises() { + var storage = getStorage(); + try { + return storage && storage.local.get && storage.local.get() && typeof storage.local.get().then === 'function'; + } catch (e) { + return false; + } +} + +/** + * Converts a callback-based API to a promise based API. + * For now we assume that there is only one arg in addition to the callback + */ +function usePromise(fn, arg) { + if (usesPromises()) { + return fn(arg); + } + + return new _promise2.default(function (resolve) { + fn(arg, function () { + resolve.apply(undefined, arguments); + }); + }); +} + +/***/ }), +/* 493 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var _websocket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68); +/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0); +/* + This program is distributed under the terms of the MIT license. + Please see the LICENSE file for details. + + Copyright 2020, JC Brand +*/ + + +const lmap = {}; +lmap['debug'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.DEBUG; +lmap['info'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.INFO; +lmap['warn'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.WARN; +lmap['error'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR; +lmap['fatal'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.FATAL; +/** Class: Strophe.WorkerWebsocket + * _Private_ helper class that handles a websocket connection inside a shared worker. + */ + +_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].WorkerWebsocket = class WorkerWebsocket extends _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Websocket { + /** PrivateConstructor: Strophe.WorkerWebsocket + * Create and initialize a Strophe.WorkerWebsocket object. + * + * Parameters: + * (Strophe.Connection) connection - The Strophe.Connection + * + * Returns: + * A new Strophe.WorkerWebsocket object. + */ + constructor(connection) { + super(connection); + this._conn = connection; + this.worker = new SharedWorker(this._conn.options.worker, 'Strophe XMPP Connection'); + + this.worker.onerror = e => { + var _console; + + (_console = console) === null || _console === void 0 ? void 0 : _console.error(e); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, "Shared Worker Error: ".concat(e)); + }; + } + + get socket() { + return { + 'send': str => this.worker.port.postMessage(['send', str]) + }; + } + + _connect() { + this._messageHandler = m => this._onInitialMessage(m); + + this.worker.port.start(); + + this.worker.port.onmessage = ev => this._onWorkerMessage(ev); + + this.worker.port.postMessage(['_connect', this._conn.service, this._conn.jid]); + } + + _attach(callback) { + this._messageHandler = m => this._onMessage(m); + + this._conn.connect_callback = callback; + this.worker.port.start(); + + this.worker.port.onmessage = ev => this._onWorkerMessage(ev); + + this.worker.port.postMessage(['_attach', this._conn.service]); + } + + _attachCallback(status, jid) { + if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHED) { + this._conn.jid = jid; + this._conn.authenticated = true; + this._conn.connected = true; + this._conn.restored = true; + + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHED); + } else if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHFAIL) { + this._conn.authenticated = false; + this._conn.connected = false; + this._conn.restored = false; + + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.ATTACHFAIL); + } + } + + _disconnect(readyState, pres) { + pres && this._conn.send(pres); + const close = Object(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])("close", { + "xmlns": _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].NS.FRAMING + }); + + this._conn.xmlOutput(close.tree()); + + const closeString = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].serialize(close); + + this._conn.rawOutput(closeString); + + this.worker.port.postMessage(['send', closeString]); + + this._conn._doDisconnect(); + } + + _onClose(e) { + if (this._conn.connected && !this._conn.disconnecting) { + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].error("Websocket closed unexpectedly"); + + this._conn._doDisconnect(); + } else if (e && e.code === 1006 && !this._conn.connected) { + // in case the onError callback was not called (Safari 10 does not + // call onerror when the initial connection fails) we need to + // dispatch a CONNFAIL status update to be consistent with the + // behavior on other browsers. + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].error("Websocket closed unexcectedly"); + + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); + + this._conn._doDisconnect(); + } else { + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].debug("Websocket closed"); + } + } + + _closeSocket() { + this.worker.port.postMessage(['_closeSocket']); + } + /** PrivateFunction: _replaceMessageHandler + * + * Called by _onInitialMessage in order to replace itself with the general message handler. + * This method is overridden by Strophe.WorkerWebsocket, which manages a + * websocket connection via a service worker and doesn't have direct access + * to the socket. + */ + + + _replaceMessageHandler() { + this._messageHandler = m => this._onMessage(m); + } + /** PrivateFunction: _onWorkerMessage + * _Private_ function that handles messages received from the service worker + */ + + + _onWorkerMessage(ev) { + const { + data + } = ev; + const method_name = data[0]; + + if (method_name === '_onMessage') { + this._messageHandler(data[1]); + } else if (method_name in this) { + try { + this[method_name].apply(this, ev.data.slice(1)); + } catch (e) { + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, e); + } + } else if (method_name === 'log') { + const level = data[1]; + const msg = data[2]; + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(lmap[level], msg); + } else { + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "e"].LogLevel.ERROR, "Found unhandled service worker message: ".concat(data)); + } + } + +}; + +/***/ }), +/* 494 */ +/***/ (function(module, exports, __webpack_require__) { + +var map = { + "./af/LC_MESSAGES/converse.po": [ + 507, + 139 + ], + "./ar/LC_MESSAGES/converse.po": [ + 508, + 140 + ], + "./bg/LC_MESSAGES/converse.po": [ + 509, + 141 + ], + "./ca/LC_MESSAGES/converse.po": [ + 510, + 142 + ], + "./cs/LC_MESSAGES/converse.po": [ + 511, + 143 ], "./da/LC_MESSAGES/converse.po": [ - 424, + 512, 144 ], "./de/LC_MESSAGES/converse.po": [ - 425, + 513, 147 ], "./eo/LC_MESSAGES/converse.po": [ - 426, + 514, 148 ], "./es/LC_MESSAGES/converse.po": [ - 427, + 515, 149 ], "./eu/LC_MESSAGES/converse.po": [ - 428, + 516, 150 ], "./fi/LC_MESSAGES/converse.po": [ - 429, + 517, 151 ], "./fr/LC_MESSAGES/converse.po": [ - 430, + 518, 152 ], "./gl/LC_MESSAGES/converse.po": [ - 431, + 519, 153 ], "./he/LC_MESSAGES/converse.po": [ - 432, + 520, 154 ], "./hi/LC_MESSAGES/converse.po": [ - 433, + 521, 155 ], "./hu/LC_MESSAGES/converse.po": [ - 434, + 522, 156 ], "./id/LC_MESSAGES/converse.po": [ - 435, + 523, 157 ], "./it/LC_MESSAGES/converse.po": [ - 436, + 524, 158 ], "./ja/LC_MESSAGES/converse.po": [ - 437, + 525, 159 ], "./lt/LC_MESSAGES/converse.po": [ - 438, + 526, 160 ], "./mr/LC_MESSAGES/converse.po": [ - 439, + 527, 161 ], "./nb/LC_MESSAGES/converse.po": [ - 440, + 528, 162 ], "./nl/LC_MESSAGES/converse.po": [ - 441, + 529, 163 ], "./nl_BE/LC_MESSAGES/converse.po": [ - 442, + 530, 164 ], "./oc/LC_MESSAGES/converse.po": [ - 443, + 531, 165 ], "./pl/LC_MESSAGES/converse.po": [ - 444, + 532, 166 ], "./pt/LC_MESSAGES/converse.po": [ - 445, + 533, 167 ], "./pt_BR/LC_MESSAGES/converse.po": [ - 446, + 534, 168 ], "./ro/LC_MESSAGES/converse.po": [ - 447, + 535, 169 ], "./ru/LC_MESSAGES/converse.po": [ - 448, + 536, 170 ], - "./th/LC_MESSAGES/converse.po": [ - 449, + "./sv/LC_MESSAGES/converse.po": [ + 537, 171 ], - "./tr/LC_MESSAGES/converse.po": [ - 450, + "./th/LC_MESSAGES/converse.po": [ + 538, 172 ], - "./uk/LC_MESSAGES/converse.po": [ - 451, + "./tr/LC_MESSAGES/converse.po": [ + 539, 173 ], - "./vi/LC_MESSAGES/converse.po": [ - 452, + "./uk/LC_MESSAGES/converse.po": [ + 540, 174 ], - "./zh_CN/LC_MESSAGES/converse.po": [ - 453, + "./vi/LC_MESSAGES/converse.po": [ + 541, 175 ], - "./zh_TW/LC_MESSAGES/converse.po": [ - 454, + "./zh_CN/LC_MESSAGES/converse.po": [ + 542, 176 + ], + "./zh_TW/LC_MESSAGES/converse.po": [ + 543, + 177 ] }; function webpackAsyncContext(req) { @@ -52709,1116 +56449,1116 @@ function webpackAsyncContext(req) { webpackAsyncContext.keys = function webpackAsyncContextKeys() { return Object.keys(map); }; -webpackAsyncContext.id = 406; +webpackAsyncContext.id = 494; module.exports = webpackAsyncContext; /***/ }), -/* 407 */ +/* 495 */ /***/ (function(module, exports, __webpack_require__) { var map = { "./af": [ - 147, + 189, 0 ], "./af.js": [ - 147, + 189, 0 ], "./ar": [ - 154, + 196, 1 ], "./ar-dz": [ - 148, + 190, 2 ], "./ar-dz.js": [ - 148, + 190, 2 ], "./ar-kw": [ - 149, + 191, 3 ], "./ar-kw.js": [ - 149, + 191, 3 ], "./ar-ly": [ - 150, + 192, 4 ], "./ar-ly.js": [ - 150, + 192, 4 ], "./ar-ma": [ - 151, + 193, 5 ], "./ar-ma.js": [ - 151, + 193, 5 ], "./ar-sa": [ - 152, + 194, 6 ], "./ar-sa.js": [ - 152, + 194, 6 ], "./ar-tn": [ - 153, + 195, 7 ], "./ar-tn.js": [ - 153, + 195, 7 ], "./ar.js": [ - 154, + 196, 1 ], "./az": [ - 155, + 197, 8 ], "./az.js": [ - 155, + 197, 8 ], "./be": [ - 156, + 198, 9 ], "./be.js": [ - 156, + 198, 9 ], "./bg": [ - 157, + 199, 10 ], "./bg.js": [ - 157, + 199, 10 ], "./bi": [ - 158, + 200, 11 ], "./bi.js": [ - 158, + 200, 11 ], "./bm": [ - 159, + 201, 12 ], "./bm.js": [ - 159, + 201, 12 ], "./bn": [ - 160, + 202, 13 ], "./bn.js": [ - 160, + 202, 13 ], "./bo": [ - 161, + 203, 14 ], "./bo.js": [ - 161, + 203, 14 ], "./br": [ - 162, + 204, 15 ], "./br.js": [ - 162, + 204, 15 ], "./bs": [ - 163, + 205, 16 ], "./bs.js": [ - 163, + 205, 16 ], "./ca": [ - 164, + 206, 17 ], "./ca.js": [ - 164, + 206, 17 ], "./cs": [ - 165, + 207, 18 ], "./cs.js": [ - 165, + 207, 18 ], "./cv": [ - 166, + 208, 19 ], "./cv.js": [ - 166, + 208, 19 ], "./cy": [ - 167, + 209, 20 ], "./cy.js": [ - 167, + 209, 20 ], "./da": [ - 168, + 210, 21 ], "./da.js": [ - 168, + 210, 21 ], "./de": [ - 171, + 213, 22 ], "./de-at": [ - 169, + 211, 23 ], "./de-at.js": [ - 169, + 211, 23 ], "./de-ch": [ - 170, + 212, 24 ], "./de-ch.js": [ - 170, + 212, 24 ], "./de.js": [ - 171, + 213, 22 ], "./dv": [ - 172, + 214, 25 ], "./dv.js": [ - 172, + 214, 25 ], "./el": [ - 173, + 215, 26 ], "./el.js": [ - 173, + 215, 26 ], "./en": [ - 183, + 225, 27 ], "./en-SG": [ - 174, + 216, 28 ], "./en-SG.js": [ - 174, + 216, 28 ], "./en-au": [ - 175, + 217, 29 ], "./en-au.js": [ - 175, + 217, 29 ], "./en-ca": [ - 176, + 218, 30 ], "./en-ca.js": [ - 176, + 218, 30 ], "./en-gb": [ - 177, + 219, 31 ], "./en-gb.js": [ - 177, + 219, 31 ], "./en-ie": [ - 178, + 220, 32 ], "./en-ie.js": [ - 178, + 220, 32 ], "./en-il": [ - 179, + 221, 33 ], "./en-il.js": [ - 179, + 221, 33 ], "./en-in": [ - 180, + 222, 34 ], "./en-in.js": [ - 180, + 222, 34 ], "./en-nz": [ - 181, + 223, 35 ], "./en-nz.js": [ - 181, + 223, 35 ], "./en-tt": [ - 182, + 224, 36 ], "./en-tt.js": [ - 182, + 224, 36 ], "./en.js": [ - 183, + 225, 27 ], "./eo": [ - 184, + 226, 37 ], "./eo.js": [ - 184, + 226, 37 ], "./es": [ - 188, + 230, 38 ], "./es-do": [ - 185, + 227, 39 ], "./es-do.js": [ - 185, + 227, 39 ], "./es-pr": [ - 186, + 228, 40 ], "./es-pr.js": [ - 186, + 228, 40 ], "./es-us": [ - 187, + 229, 41 ], "./es-us.js": [ - 187, + 229, 41 ], "./es.js": [ - 188, + 230, 38 ], "./et": [ - 189, + 231, 42 ], "./et.js": [ - 189, + 231, 42 ], "./eu": [ - 190, + 232, 43 ], "./eu.js": [ - 190, + 232, 43 ], "./fa": [ - 191, + 233, 44 ], "./fa.js": [ - 191, + 233, 44 ], "./fi": [ - 192, + 234, 45 ], "./fi.js": [ - 192, + 234, 45 ], "./fo": [ - 193, + 235, 46 ], "./fo.js": [ - 193, + 235, 46 ], "./fr": [ - 196, + 238, 47 ], "./fr-ca": [ - 194, + 236, 48 ], "./fr-ca.js": [ - 194, + 236, 48 ], "./fr-ch": [ - 195, + 237, 49 ], "./fr-ch.js": [ - 195, + 237, 49 ], "./fr.js": [ - 196, + 238, 47 ], "./fy": [ - 197, + 239, 50 ], "./fy.js": [ - 197, + 239, 50 ], "./ga": [ - 198, + 240, 51 ], "./ga.js": [ - 198, + 240, 51 ], "./gd": [ - 199, + 241, 52 ], "./gd.js": [ - 199, + 241, 52 ], "./gl": [ - 200, + 242, 53 ], "./gl.js": [ - 200, + 242, 53 ], "./gom-latn": [ - 201, + 243, 54 ], "./gom-latn.js": [ - 201, + 243, 54 ], "./gu": [ - 202, + 244, 55 ], "./gu.js": [ - 202, + 244, 55 ], "./he": [ - 203, + 245, 56 ], "./he.js": [ - 203, + 245, 56 ], "./hi": [ - 204, + 246, 57 ], "./hi.js": [ - 204, + 246, 57 ], "./hr": [ - 205, + 247, 58 ], "./hr.js": [ - 205, + 247, 58 ], "./ht": [ - 206, + 248, 59 ], "./ht.js": [ - 206, + 248, 59 ], "./hu": [ - 207, + 249, 60 ], "./hu.js": [ - 207, + 249, 60 ], "./hy-am": [ - 208, + 250, 61 ], "./hy-am.js": [ - 208, + 250, 61 ], "./id": [ - 209, + 251, 62 ], "./id.js": [ - 209, + 251, 62 ], "./index.d.ts": [ - 455, + 544, 145 ], "./is": [ - 210, + 252, 63 ], "./is.js": [ - 210, + 252, 63 ], "./it": [ - 212, + 254, 64 ], "./it-ch": [ - 211, + 253, 65 ], "./it-ch.js": [ - 211, + 253, 65 ], "./it.js": [ - 212, + 254, 64 ], "./ja": [ - 213, + 255, 66 ], "./ja.js": [ - 213, + 255, 66 ], "./jv": [ - 214, + 256, 67 ], "./jv.js": [ - 214, + 256, 67 ], "./ka": [ - 215, + 257, 68 ], "./ka.js": [ - 215, + 257, 68 ], "./kk": [ - 216, + 258, 69 ], "./kk.js": [ - 216, + 258, 69 ], "./km": [ - 217, + 259, 70 ], "./km.js": [ - 217, + 259, 70 ], "./kn": [ - 218, + 260, 71 ], "./kn.js": [ - 218, + 260, 71 ], "./ko": [ - 219, + 261, 72 ], "./ko.js": [ - 219, + 261, 72 ], "./ku": [ - 220, + 262, 73 ], "./ku.js": [ - 220, + 262, 73 ], "./ky": [ - 221, + 263, 74 ], "./ky.js": [ - 221, + 263, 74 ], "./lb": [ - 222, + 264, 75 ], "./lb.js": [ - 222, + 264, 75 ], "./lo": [ - 223, + 265, 76 ], "./lo.js": [ - 223, + 265, 76 ], "./lt": [ - 224, + 266, 77 ], "./lt.js": [ - 224, + 266, 77 ], "./lv": [ - 225, + 267, 78 ], "./lv.js": [ - 225, + 267, 78 ], "./me": [ - 226, + 268, 79 ], "./me.js": [ - 226, + 268, 79 ], "./mi": [ - 227, + 269, 80 ], "./mi.js": [ - 227, + 269, 80 ], "./mk": [ - 228, + 270, 81 ], "./mk.js": [ - 228, + 270, 81 ], "./ml": [ - 229, + 271, 82 ], "./ml.js": [ - 229, + 271, 82 ], "./mn": [ - 230, + 272, 83 ], "./mn.js": [ - 230, + 272, 83 ], "./mr": [ - 231, + 273, 84 ], "./mr.js": [ - 231, + 273, 84 ], "./ms": [ - 233, + 275, 85 ], "./ms-my": [ - 232, + 274, 86 ], "./ms-my.js": [ - 232, + 274, 86 ], "./ms.js": [ - 233, + 275, 85 ], "./mt": [ - 234, + 276, 87 ], "./mt.js": [ - 234, + 276, 87 ], "./my": [ - 235, + 277, 88 ], "./my.js": [ - 235, + 277, 88 ], "./nb": [ - 236, + 278, 89 ], "./nb.js": [ - 236, + 278, 89 ], "./ne": [ - 237, + 279, 90 ], "./ne.js": [ - 237, + 279, 90 ], "./nl": [ - 239, + 281, 91 ], "./nl-be": [ - 238, + 280, 92 ], "./nl-be.js": [ - 238, + 280, 92 ], "./nl.js": [ - 239, + 281, 91 ], "./nn": [ - 240, + 282, 93 ], "./nn.js": [ - 240, + 282, 93 ], "./oc-lnc": [ - 241, + 283, 94 ], "./oc-lnc.js": [ - 241, + 283, 94 ], "./pa-in": [ - 242, + 284, 95 ], "./pa-in.js": [ - 242, + 284, 95 ], "./pl": [ - 243, + 285, 96 ], "./pl.js": [ - 243, + 285, 96 ], "./pt": [ - 245, + 287, 97 ], "./pt-br": [ - 244, + 286, 98 ], "./pt-br.js": [ - 244, + 286, 98 ], "./pt.js": [ - 245, + 287, 97 ], "./ro": [ - 246, + 288, 99 ], "./ro.js": [ - 246, + 288, 99 ], "./ru": [ - 247, + 289, 100 ], "./ru.js": [ - 247, + 289, 100 ], "./rw": [ - 248, + 290, 101 ], "./rw.js": [ - 248, + 290, 101 ], "./sd": [ - 249, + 291, 102 ], "./sd.js": [ - 249, + 291, 102 ], "./se": [ - 250, + 292, 103 ], "./se.js": [ - 250, + 292, 103 ], "./si": [ - 251, + 293, 104 ], "./si.js": [ - 251, + 293, 104 ], "./sk": [ - 252, + 294, 105 ], "./sk.js": [ - 252, + 294, 105 ], "./sl": [ - 253, + 295, 106 ], "./sl.js": [ - 253, + 295, 106 ], "./sq": [ - 254, + 296, 107 ], "./sq.js": [ - 254, + 296, 107 ], "./sr": [ - 256, + 298, 108 ], "./sr-cyrl": [ - 255, + 297, 109 ], "./sr-cyrl.js": [ - 255, + 297, 109 ], "./sr.js": [ - 256, + 298, 108 ], "./ss": [ - 257, + 299, 110 ], "./ss.js": [ - 257, + 299, 110 ], "./sv": [ - 258, + 300, 111 ], "./sv.js": [ - 258, + 300, 111 ], "./sw": [ - 259, + 301, 112 ], "./sw.js": [ - 259, + 301, 112 ], "./ta": [ - 260, + 302, 113 ], "./ta.js": [ - 260, + 302, 113 ], "./te": [ - 261, + 303, 114 ], "./te.js": [ - 261, + 303, 114 ], "./tet": [ - 262, + 304, 115 ], "./tet.js": [ - 262, + 304, 115 ], "./tg": [ - 263, + 305, 116 ], "./tg.js": [ - 263, + 305, 116 ], "./th": [ - 264, + 306, 117 ], "./th.js": [ - 264, + 306, 117 ], "./tk": [ - 265, + 307, 118 ], "./tk.js": [ - 265, + 307, 118 ], "./tl-ph": [ - 266, + 308, 119 ], "./tl-ph.js": [ - 266, + 308, 119 ], "./tlh": [ - 267, + 309, 120 ], "./tlh.js": [ - 267, + 309, 120 ], "./tr": [ - 268, + 310, 121 ], "./tr.js": [ - 268, + 310, 121 ], "./types.d.ts": [ - 456, + 545, 146 ], "./tzl": [ - 269, + 311, 122 ], "./tzl.js": [ - 269, + 311, 122 ], "./tzm": [ - 271, + 313, 123 ], "./tzm-latn": [ - 270, + 312, 124 ], "./tzm-latn.js": [ - 270, + 312, 124 ], "./tzm.js": [ - 271, + 313, 123 ], "./ug-cn": [ - 272, + 314, 125 ], "./ug-cn.js": [ - 272, + 314, 125 ], "./uk": [ - 273, + 315, 126 ], "./uk.js": [ - 273, + 315, 126 ], "./ur": [ - 274, + 316, 127 ], "./ur.js": [ - 274, + 316, 127 ], "./uz": [ - 276, + 318, 128 ], "./uz-latn": [ - 275, + 317, 129 ], "./uz-latn.js": [ - 275, + 317, 129 ], "./uz.js": [ - 276, + 318, 128 ], "./vi": [ - 277, + 319, 130 ], "./vi.js": [ - 277, + 319, 130 ], "./x-pseudo": [ - 278, + 320, 131 ], "./x-pseudo.js": [ - 278, + 320, 131 ], "./yo": [ - 279, + 321, 132 ], "./yo.js": [ - 279, + 321, 132 ], "./zh": [ - 283, + 325, 133 ], "./zh-cn": [ - 280, + 322, 134 ], "./zh-cn.js": [ - 280, + 322, 134 ], "./zh-hk": [ - 281, + 323, 135 ], "./zh-hk.js": [ - 281, + 323, 135 ], "./zh-tw": [ - 282, + 324, 136 ], "./zh-tw.js": [ - 282, + 324, 136 ], "./zh.js": [ - 283, + 325, 133 ] }; @@ -53839,14 +57579,14 @@ function webpackAsyncContext(req) { webpackAsyncContext.keys = function webpackAsyncContextKeys() { return Object.keys(map); }; -webpackAsyncContext.id = 407; +webpackAsyncContext.id = 495; module.exports = webpackAsyncContext; /***/ }), -/* 408 */ +/* 496 */ /***/ (function(module, exports, __webpack_require__) { -var basePropertyOf = __webpack_require__(409); +var basePropertyOf = __webpack_require__(497); /** Used to map characters to HTML entities. */ var htmlEscapes = { @@ -53870,7 +57610,7 @@ module.exports = escapeHtmlChar; /***/ }), -/* 409 */ +/* 497 */ /***/ (function(module, exports) { /** @@ -53890,12 +57630,12 @@ module.exports = basePropertyOf; /***/ }), -/* 410 */ +/* 498 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14); -/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _shims__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); +/* harmony import */ var _core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* This program is distributed under the terms of the MIT license. Please see the LICENSE file for details. @@ -53914,7 +57654,7 @@ module.exports = basePropertyOf; * information. It is not meant to be used from user's code. */ -_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request = class Request { +_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request = class Request { /** PrivateConstructor: Strophe.Request * Create and initialize a new Strophe.Request object. * @@ -53926,9 +57666,9 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request = class Request { * (Integer) sends - The number of times this same request has been sent. */ constructor(elem, func, rid, sends) { - this.id = ++_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"]._requestId; + this.id = ++_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"]._requestId; this.xmlData = elem; - this.data = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(elem); // save original function in case we need to make a new request + this.data = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(elem); // save original function in case we need to make a new request // from this one. this.origFunc = func; @@ -53981,23 +57721,23 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request = class Request { node = this.xhr.responseXML.documentElement; if (node.tagName === "parsererror") { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("invalid response received"); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("responseText: " + this.xhr.responseText); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("responseXML: " + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(this.xhr.responseXML)); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("invalid response received"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("responseText: " + this.xhr.responseText); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("responseXML: " + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(this.xhr.responseXML)); throw new Error("parsererror"); } } else if (this.xhr.responseText) { // In React Native, we may get responseText but no responseXML. We can try to parse it manually. - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."); node = new _shims__WEBPACK_IMPORTED_MODULE_0__[/* DOMParser */ "a"]().parseFromString(this.xhr.responseText, 'application/xml').documentElement; if (!node) { throw new Error('Parsing produced null node'); } else if (node.querySelector('parsererror')) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("invalid response received: " + node.querySelector('parsererror').textContent); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("responseText: " + this.xhr.responseText); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("invalid response received: " + node.querySelector('parsererror').textContent); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("responseText: " + this.xhr.responseText); const error = new Error(); - error.name = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].ErrorCondition.BAD_FORMAT; + error.name = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].ErrorCondition.BAD_FORMAT; throw error; } } @@ -54058,7 +57798,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request = class Request { * A new Strophe.Bosh object. */ -_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { +_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Bosh = class Bosh { constructor(connection) { this._conn = connection; /* request id for body tags */ @@ -54087,7 +57827,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _buildBody() { const bodyWrap = Object(_core__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])('body', { 'rid': this.rid++, - 'xmlns': _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.HTTPBIND + 'xmlns': _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.HTTPBIND }); if (this.sid !== null) { @@ -54140,7 +57880,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { "content": "text/xml; charset=utf-8", "ver": "1.6", "xmpp:version": "1.0", - "xmlns:xmpp": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.BOSH + "xmlns:xmpp": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.BOSH }); if (route) { @@ -54151,7 +57891,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { const _connect_cb = this._conn._connect_cb; - this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request(body.tree(), this._onRequestStateChange.bind(this, _connect_cb.bind(this._conn)), body.tree().getAttribute("rid"))); + this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request(body.tree(), this._onRequestStateChange.bind(this, _connect_cb.bind(this._conn)), body.tree().getAttribute("rid"))); this._throttledRequestHandler(); } @@ -54186,14 +57926,14 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { this.sid = sid; this.rid = rid; this._conn.connect_callback = callback; - this._conn.domain = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].getDomainFromJid(this._conn.jid); + this._conn.domain = _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].getDomainFromJid(this._conn.jid); this._conn.authenticated = true; this._conn.connected = true; this.wait = wait || this.wait; this.hold = hold || this.hold; this.window = wind || this.window; - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ATTACHED, null); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ATTACHED, null); } /** PrivateFunction: _restore * Attempt to restore a cached BOSH session @@ -54219,9 +57959,9 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _restore(jid, callback, wait, hold, wind) { const session = JSON.parse(window.sessionStorage.getItem('strophe-bosh-session')); - if (typeof session !== "undefined" && session !== null && session.rid && session.sid && session.jid && (typeof jid === "undefined" || jid === null || _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].getBareJidFromJid(session.jid) === _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].getBareJidFromJid(jid) || // If authcid is null, then it's an anonymous login, so + if (typeof session !== "undefined" && session !== null && session.rid && session.sid && session.jid && (typeof jid === "undefined" || jid === null || _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].getBareJidFromJid(session.jid) === _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].getBareJidFromJid(jid) || // If authcid is null, then it's an anonymous login, so // we compare only the domains: - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].getNodeFromJid(jid) === null && _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].getDomainFromJid(session.jid) === jid)) { + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].getNodeFromJid(jid) === null && _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].getDomainFromJid(session.jid) === jid)) { this._conn.restored = true; this._attach(session.jid, session.sid, session.rid, callback, wait, hold, wind); @@ -54268,7 +58008,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { if (typ !== null && typ === "terminate") { // an error occurred let cond = bodyWrap.getAttribute("condition"); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("BOSH-Connection failed: " + cond); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("BOSH-Connection failed: " + cond); const conflict = bodyWrap.getElementsByTagName("conflict"); if (cond !== null) { @@ -54276,14 +58016,14 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { cond = "conflict"; } - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, cond); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, cond); } else { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "unknown"); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "unknown"); } this._conn._doDisconnect(cond); - return _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL; + return _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL; } // check to make sure we don't overwrite these if _connect_cb is // called multiple times in the case of missing stream:features @@ -54386,7 +58126,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _hitError(reqStatus) { this.errors++; - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].warn("request errored, status: " + reqStatus + ", number of errors: " + this.errors); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].warn("request errored, status: " + reqStatus + ", number of errors: " + this.errors); if (this.errors > 4) { this._conn._onDisconnectTimeout(); @@ -54400,7 +58140,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _no_auth_received(callback) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].warn("Server did not yet offer a supported authentication " + "mechanism. Sending a blank poll request."); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].warn("Server did not yet offer a supported authentication " + "mechanism. Sending a blank poll request."); if (callback) { callback = callback.bind(this._conn); @@ -54410,7 +58150,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { const body = this._buildBody(); - this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request(body.tree(), this._onRequestStateChange.bind(this, callback), body.tree().getAttribute("rid"))); + this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request(body.tree(), this._onRequestStateChange.bind(this, callback), body.tree().getAttribute("rid"))); this._throttledRequestHandler(); } @@ -54450,7 +58190,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { const data = this._conn._data; // if no requests are in progress, poll if (this._conn.authenticated && this._requests.length === 0 && data.length === 0 && !this._conn.disconnecting) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("no requests during idle cycle, sending blank request"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("no requests during idle cycle, sending blank request"); data.push(null); } @@ -54468,7 +58208,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { "to": this._conn.domain, "xml:lang": "en", "xmpp:restart": "true", - "xmlns:xmpp": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.BOSH + "xmlns:xmpp": _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.BOSH }); } else { body.cnode(data[i]).up(); @@ -54479,7 +58219,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { delete this._conn._data; this._conn._data = []; - this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid"))); + this._requests.push(new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid"))); this._throttledRequestHandler(); } @@ -54488,13 +58228,13 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { const time_elapsed = this._requests[0].age(); if (this._requests[0].dead !== null) { - if (this._requests[0].timeDead() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].SECONDARY_TIMEOUT * this.wait)) { + if (this._requests[0].timeDead() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].SECONDARY_TIMEOUT * this.wait)) { this._throttledRequestHandler(); } } - if (time_elapsed > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].TIMEOUT * this.wait)) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].warn("Request " + this._requests[0].id + " timed out, over " + Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].TIMEOUT * this.wait) + " seconds since last activity"); + if (time_elapsed > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].TIMEOUT * this.wait)) { + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].warn("Request " + this._requests[0].id + " timed out, over " + Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].TIMEOUT * this.wait) + " seconds since last activity"); this._throttledRequestHandler(); } @@ -54520,7 +58260,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { } catch (e) { // ignore errors from undefined status attribute. Works // around a browser bug - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Caught an error while retrieving a request's status, " + "reqStatus: " + reqStatus); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Caught an error while retrieving a request's status, " + "reqStatus: " + reqStatus); } } @@ -54545,7 +58285,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _onRequestStateChange(func, req) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("request id " + req.id + "." + req.sends + " state changed to " + req.xhr.readyState); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("request id " + req.id + "." + req.sends + " state changed to " + req.xhr.readyState); if (req.abort) { req.abort = false; @@ -54576,7 +58316,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { // remove from internal queue this._removeRequest(req); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("request id " + req.id + " should now be removed"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("request id " + req.id + " should now be removed"); } if (reqStatus === 200) { @@ -54587,37 +58327,37 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { // restart the other - both will be in the first spot, as the // completed request has been removed from the queue already - if (reqIs1 || reqIs0 && this._requests.length > 0 && this._requests[0].age() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].SECONDARY_TIMEOUT * this.wait)) { + if (reqIs1 || reqIs0 && this._requests.length > 0 && this._requests[0].age() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].SECONDARY_TIMEOUT * this.wait)) { this._restartRequest(0); } this._conn.nextValidRid(Number(req.rid) + 1); - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("request id " + req.id + "." + req.sends + " got 200"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("request id " + req.id + "." + req.sends + " got 200"); func(req); // call handler this.errors = 0; } else if (reqStatus === 0 || reqStatus >= 400 && reqStatus < 600 || reqStatus >= 12000) { // request failed - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened"); this._hitError(reqStatus); this._callProtocolErrorHandlers(req); if (reqStatus >= 400 && reqStatus < 500) { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.DISCONNECTING, null); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.DISCONNECTING, null); this._conn._doDisconnect(); } } else { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("request id " + req.id + "." + req.sends + " error " + reqStatus + " happened"); } if (!valid_request && !too_many_retries) { this._throttledRequestHandler(); } else if (too_many_retries && !this._conn.connected) { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "giving-up"); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "giving-up"); } } /** PrivateFunction: _processRequest @@ -54644,13 +58384,13 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { } const time_elapsed = req.age(); - const primary_timeout = !isNaN(time_elapsed) && time_elapsed > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].TIMEOUT * this.wait); - const secondary_timeout = req.dead !== null && req.timeDead() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].SECONDARY_TIMEOUT * this.wait); + const primary_timeout = !isNaN(time_elapsed) && time_elapsed > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].TIMEOUT * this.wait); + const secondary_timeout = req.dead !== null && req.timeDead() > Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].SECONDARY_TIMEOUT * this.wait); const server_error = req.xhr.readyState === 4 && (reqStatus < 1 || reqStatus >= 500); if (primary_timeout || secondary_timeout || server_error) { if (secondary_timeout) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Request ".concat(this._requests[i].id, " timed out (secondary), restarting")); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Request ".concat(this._requests[i].id, " timed out (secondary), restarting")); } req.abort = true; @@ -54658,12 +58398,12 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { req.xhr.onreadystatechange = function () {}; - this._requests[i] = new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request(req.xmlData, req.origFunc, req.rid, req.sends); + this._requests[i] = new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request(req.xmlData, req.origFunc, req.rid, req.sends); req = this._requests[i]; } if (req.xhr.readyState === 0) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("request id " + req.id + "." + req.sends + " posting"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("request id " + req.id + "." + req.sends + " posting"); try { const content_type = this._conn.options.contentType || "text/xml; charset=utf-8"; @@ -54678,10 +58418,10 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { req.xhr.withCredentials = true; } } catch (e2) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("XHR open failed: " + e2.toString()); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("XHR open failed: " + e2.toString()); if (!this._conn.connected) { - this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "bad-service"); + this._conn._changeConnectStatus(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "bad-service"); } this._conn.disconnect(); @@ -54712,7 +58452,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { if (req.sends > 1) { // Using a cube of the retry number creates a nicely // expanding retry window - const backoff = Math.min(Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].TIMEOUT * this.wait), Math.pow(req.sends, 3)) * 1000; + const backoff = Math.min(Math.floor(_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].TIMEOUT * this.wait), Math.pow(req.sends, 3)) * 1000; setTimeout(function () { // XXX: setTimeout should be called only with function expressions (23974bc1) sendFunc(); @@ -54723,7 +58463,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { req.sends++; - if (this._conn.xmlOutput !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Connection.prototype.xmlOutput) { + if (this._conn.xmlOutput !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Connection.prototype.xmlOutput) { if (req.xmlData.nodeName === this.strip && req.xmlData.childNodes.length) { this._conn.xmlOutput(req.xmlData.childNodes[0]); } else { @@ -54731,11 +58471,11 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { } } - if (this._conn.rawOutput !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Connection.prototype.rawOutput) { + if (this._conn.rawOutput !== _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Connection.prototype.rawOutput) { this._conn.rawOutput(req.data); } } else { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("_processRequest: " + (i === 0 ? "first" : "second") + " request has readyState of " + req.xhr.readyState); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("_processRequest: " + (i === 0 ? "first" : "second") + " request has readyState of " + req.xhr.readyState); } } /** PrivateFunction: _removeRequest @@ -54747,7 +58487,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _removeRequest(req) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("removing request"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("removing request"); for (let i = this._requests.length - 1; i >= 0; i--) { if (req === this._requests[i]) { @@ -54812,7 +58552,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _sendTerminate(pres) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("_sendTerminate was called"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("_sendTerminate was called"); const body = this._buildBody().attrs({ type: "terminate" @@ -54822,7 +58562,7 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { body.cnode(pres.tree()); } - const req = new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid")); + const req = new _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Request(body.tree(), this._onRequestStateChange.bind(this, this._conn._dataRecv.bind(this._conn)), body.tree().getAttribute("rid")); this._requests.push(req); @@ -54864,9 +58604,9 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { _throttledRequestHandler() { if (!this._requests) { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("_throttledRequestHandler called with " + "undefined requests"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("_throttledRequestHandler called with " + "undefined requests"); } else { - _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("_throttledRequestHandler called with " + this._requests.length + " requests"); + _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("_throttledRequestHandler called with " + this._requests.length + " requests"); } if (!this._requests || this._requests.length === 0) { @@ -54895,10 +58635,10 @@ _core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh = class Bosh { * <Strophe.Connection.xmlInput> and <Strophe.Connection.xmlOutput>. */ -_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Bosh.prototype.strip = null; +_core__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Bosh.prototype.strip = null; /***/ }), -/* 411 */ +/* 499 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -54913,12 +58653,12 @@ module.exports = function () { /***/ }), -/* 412 */ +/* 500 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -/* harmony import */ var _websocket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(119); -/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1); +/* harmony import */ var _websocket_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158); +/* harmony import */ var _core_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2); /* This program is distributed under the terms of the MIT license. Please see the LICENSE file for details. @@ -54928,16 +58668,16 @@ module.exports = function () { const lmap = {}; -lmap['debug'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.DEBUG; -lmap['info'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.INFO; -lmap['warn'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.WARN; -lmap['error'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.ERROR; -lmap['fatal'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.FATAL; +lmap['debug'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.DEBUG; +lmap['info'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.INFO; +lmap['warn'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.WARN; +lmap['error'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.ERROR; +lmap['fatal'] = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.FATAL; /** Class: Strophe.WorkerWebsocket * _Private_ helper class that handles a websocket connection inside a shared worker. */ -_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class WorkerWebsocket extends _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Websocket { +_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].WorkerWebsocket = class WorkerWebsocket extends _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Websocket { /** PrivateConstructor: Strophe.WorkerWebsocket * Create and initialize a Strophe.WorkerWebsocket object. * @@ -54956,7 +58696,7 @@ _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class var _console; (_console = console) === null || _console === void 0 ? void 0 : _console.error(e); - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.ERROR, "Shared Worker Error: ".concat(e)); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.ERROR, "Shared Worker Error: ".concat(e)); }; } @@ -54988,31 +58728,31 @@ _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class } _attachCallback(status, jid) { - if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ATTACHED) { + if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ATTACHED) { this._conn.jid = jid; this._conn.authenticated = true; this._conn.connected = true; this._conn.restored = true; - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ATTACHED); - } else if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ATTACHFAIL) { + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ATTACHED); + } else if (status === _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ATTACHFAIL) { this._conn.authenticated = false; this._conn.connected = false; this._conn.restored = false; - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.ATTACHFAIL); + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.ATTACHFAIL); } } _disconnect(readyState, pres) { pres && this._conn.send(pres); const close = Object(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* $build */ "a"])("close", { - "xmlns": _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].NS.FRAMING + "xmlns": _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].NS.FRAMING }); this._conn.xmlOutput(close.tree()); - const closeString = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].serialize(close); + const closeString = _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].serialize(close); this._conn.rawOutput(closeString); @@ -55023,7 +58763,7 @@ _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class _onClose(e) { if (this._conn.connected && !this._conn.disconnecting) { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Websocket closed unexpectedly"); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Websocket closed unexpectedly"); this._conn._doDisconnect(); } else if (e && e.code === 1006 && !this._conn.connected) { @@ -55031,13 +58771,13 @@ _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class // call onerror when the initial connection fails) we need to // dispatch a CONNFAIL status update to be consistent with the // behavior on other browsers. - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].error("Websocket closed unexcectedly"); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].error("Websocket closed unexcectedly"); - this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); + this._conn._changeConnectStatus(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].Status.CONNFAIL, "The WebSocket connection could not be established or was disconnected."); this._conn._doDisconnect(); } else { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].debug("Websocket closed"); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].debug("Websocket closed"); } } @@ -55073,25 +58813,25 @@ _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].WorkerWebsocket = class try { this[method_name].apply(this, ev.data.slice(1)); } catch (e) { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.ERROR, e); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.ERROR, e); } } else if (method_name === 'log') { const level = data[1]; const msg = data[2]; - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].log(lmap[level], msg); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].log(lmap[level], msg); } else { - _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "c"].LogLevel.ERROR, "Found unhandled service worker message: ".concat(data)); + _core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].log(_core_js__WEBPACK_IMPORTED_MODULE_1__[/* Strophe */ "d"].LogLevel.ERROR, "Found unhandled service worker message: ".concat(data)); } } }; /***/ }), -/* 413 */ +/* 501 */ /***/ (function(module, exports, __webpack_require__) { -var content = __webpack_require__(414); +var content = __webpack_require__(502); if(typeof content === 'string') content = [[module.i, content, '']]; @@ -55105,18 +58845,18 @@ var options = {"hmr":true} options.transform = transform options.insertInto = undefined; -var update = __webpack_require__(416)(content, options); +var update = __webpack_require__(504)(content, options); if(content.locals) module.exports = content.locals; if(false) {} /***/ }), -/* 414 */ +/* 502 */ /***/ (function(module, exports, __webpack_require__) { // Imports -var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(415); +var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(503); exports = ___CSS_LOADER_API_IMPORT___(true); // Module exports.push([module.i, "", "",{"version":3,"sources":[],"names":[],"mappings":"","file":"converse.scss"}]); @@ -55125,7 +58865,7 @@ module.exports = exports; /***/ }), -/* 415 */ +/* 503 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -55225,7 +58965,7 @@ function toComment(sourceMap) { } /***/ }), -/* 416 */ +/* 504 */ /***/ (function(module, exports, __webpack_require__) { /* @@ -55294,7 +59034,7 @@ var singleton = null; var singletonCounter = 0; var stylesInsertedAtTop = []; -var fixUrls = __webpack_require__(417); +var fixUrls = __webpack_require__(505); module.exports = function(list, options) { if (typeof DEBUG !== "undefined" && DEBUG) { @@ -55629,7 +59369,7 @@ function updateLink (link, options, obj) { /***/ }), -/* 417 */ +/* 505 */ /***/ (function(module, exports) { @@ -55724,7 +59464,7 @@ module.exports = function (css) { /***/ }), -/* 418 */ +/* 506 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; @@ -55732,17 +59472,17 @@ module.exports = function (css) { __webpack_require__.r(__webpack_exports__); // EXTERNAL MODULE: ./src/lodash.noconflict.js -var lodash_noconflict = __webpack_require__(52); +var lodash_noconflict = __webpack_require__(66); var lodash_noconflict_default = /*#__PURE__*/__webpack_require__.n(lodash_noconflict); // EXTERNAL MODULE: ./src/headless/polyfill.js -var polyfill = __webpack_require__(285); +var polyfill = __webpack_require__(327); // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/websocket.js -var websocket = __webpack_require__(54); +var websocket = __webpack_require__(68); // EXTERNAL MODULE: ./node_modules/localforage/dist/localforage.js -var localforage = __webpack_require__(23); +var localforage = __webpack_require__(22); // CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheClear.js /** @@ -56029,7 +59769,7 @@ function stackHas(key) { /* harmony default export */ var _stackHas = (stackHas); // EXTERNAL MODULE: ./node_modules/lodash-es/_root.js -var _root = __webpack_require__(5); +var _root = __webpack_require__(6); // CONCATENATED MODULE: ./node_modules/lodash-es/_Symbol.js @@ -57038,7 +60778,7 @@ var isArray = Array.isArray; /* harmony default export */ var lodash_es_isArray = (isArray); // EXTERNAL MODULE: ./node_modules/lodash-es/isBuffer.js -var isBuffer = __webpack_require__(18); +var isBuffer = __webpack_require__(21); // CONCATENATED MODULE: ./node_modules/lodash-es/_isIndex.js /** Used as references for various `Number` constants. */ @@ -57183,7 +60923,7 @@ function baseUnary(func) { /* harmony default export */ var _baseUnary = (baseUnary); // EXTERNAL MODULE: ./node_modules/lodash-es/_nodeUtil.js -var _nodeUtil = __webpack_require__(12); +var _nodeUtil = __webpack_require__(14); // CONCATENATED MODULE: ./node_modules/lodash-es/isTypedArray.js @@ -57546,7 +61286,7 @@ function baseAssignIn(object, source) { /* harmony default export */ var _baseAssignIn = (baseAssignIn); // EXTERNAL MODULE: ./node_modules/lodash-es/_cloneBuffer.js -var _cloneBuffer = __webpack_require__(121); +var _cloneBuffer = __webpack_require__(160); // CONCATENATED MODULE: ./node_modules/lodash-es/_copyArray.js /** @@ -58858,7 +62598,7 @@ function _initStorage(options) { // the app's key/value store! -function sessionStorage_clear(callback) { +function clear(callback) { const promise = this.ready().then(function () { const keyPrefix = dbInfo.keyPrefix; @@ -59086,17 +62826,161 @@ const sessionStorageWrapper = { getItem: getItem, setItem: setItem, removeItem: removeItem, - clear: sessionStorage_clear, + clear: clear, length: sessionStorage_length, key: sessionStorage_key, keys: sessionStorage_keys, dropInstance: dropInstance }; /* harmony default export */ var drivers_sessionStorage = (sessionStorageWrapper); +// CONCATENATED MODULE: ./node_modules/@converse/skeletor/src/drivers/noStorage.js +// Copyright 2014 Mozilla +// Copyright 2015 Thodoris Greasidis +// Copyright 2018 JC Brand +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + // import { Promise } from "window-or-global"; + +function isNoStorageValid() { + return true; +} + +function noStorage_getKeyPrefix(options, defaultConfig) { + let keyPrefix = options.name + '/'; + + if (options.storeName !== defaultConfig.storeName) { + keyPrefix += options.storeName + '/'; + } + + return keyPrefix; +} + +const noStorage_dbInfo = {}; + +function noStorage_initStorage(options) { + noStorage_dbInfo.keyPrefix = noStorage_getKeyPrefix(options, this._defaultConfig); + + if (options) { + for (const i in options) { + // eslint-disable-line guard-for-in + noStorage_dbInfo[i] = options[i]; + } + } +} + +function noStorage_clear(callback) { + const promise = Promise.resolve(); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_getItem(key, callback) { + const promise = this.ready().then(function () { + return undefined; + }); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_iterate(iterator, callback) { + const promise = Promise.resolve(); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_key(n, callback) { + const self = this; + const promise = self.ready().then(function () { + return null; + }); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_keys(callback) { + const self = this; + const promise = self.ready().then(function () { + return []; + }); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_length(callback) { + const self = this; + const promise = self.keys().then(function (keys) { + return keys.length; + }); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_removeItem(key, callback) { + const promise = Promise.resolve(); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_setItem(key, value, callback) { + const promise = Promise.resolve(value); + utils_executeCallback(promise, callback); + return promise; +} + +function noStorage_dropInstance(options, callback) { + callback = getCallback.apply(this, arguments); + options = typeof options !== "function" && options || {}; + + if (!options.name) { + const currentConfig = this.config(); + options.name = options.name || currentConfig.name; + options.storeName = options.storeName || currentConfig.storeName; + } + + const self = this; + let promise; + + if (!options.name) { + promise = Promise.reject(new Error("Invalid arguments")); + } else { + promise = Promise.resolve(); + } + + utils_executeCallback(promise, callback); + return promise; +} + +const noStorageWrapper = { + _driver: "noStorageWrapper", + _initStorage: noStorage_initStorage, + _support: isNoStorageValid(), + iterate: noStorage_iterate, + getItem: noStorage_getItem, + setItem: noStorage_setItem, + removeItem: noStorage_removeItem, + clear: noStorage_clear, + length: noStorage_length, + key: noStorage_key, + keys: noStorage_keys, + dropInstance: noStorage_dropInstance +}; +/* harmony default export */ var noStorage = (noStorageWrapper); // CONCATENATED MODULE: ./node_modules/@converse/skeletor/src/storage.js /** * IndexedDB, localStorage and sessionStorage adapter */ + // import * as memoryDriver from "localforage-driver-memory"; @@ -59138,6 +63022,8 @@ class storage_Storage { await localforage["config"]({ 'driver': localforage["LOCALSTORAGE"] }); + } else if (type === 'in_memory') { + localforage["setDriver"](noStorage._driver); } else if (type !== 'indexed') { throw new Error("Skeletor.storage: No storage type was specified"); } @@ -59326,15 +63212,17 @@ class storage_Storage { } +storage_Storage.IN_MEMORY = noStorage._driver; +storage_Storage.memoryStorageInitialized = localforage["defineDriver"](noStorage); storage_Storage.sessionStorageInitialized = localforage["defineDriver"](drivers_sessionStorage); storage_Storage.localForage = localforage; /* harmony default export */ var src_storage = (storage_Storage); // EXTERNAL MODULE: ./node_modules/dayjs/plugin/advancedFormat.js -var advancedFormat = __webpack_require__(122); +var advancedFormat = __webpack_require__(161); var advancedFormat_default = /*#__PURE__*/__webpack_require__.n(advancedFormat); // EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js -var dayjs_min = __webpack_require__(4); +var dayjs_min = __webpack_require__(5); var dayjs_min_default = /*#__PURE__*/__webpack_require__.n(dayjs_min); // CONCATENATED MODULE: ./node_modules/lodash-es/isPlainObject.js @@ -59529,51 +63417,51 @@ const log = { }; /* harmony default export */ var headless_log = (log); // EXTERNAL MODULE: ./node_modules/lodash/drop.js -var drop = __webpack_require__(123); +var drop = __webpack_require__(162); var drop_default = /*#__PURE__*/__webpack_require__.n(drop); // EXTERNAL MODULE: ./node_modules/lodash/each.js -var each = __webpack_require__(34); +var each = __webpack_require__(44); var each_default = /*#__PURE__*/__webpack_require__.n(each); // EXTERNAL MODULE: ./node_modules/lodash/extend.js -var extend = __webpack_require__(35); +var extend = __webpack_require__(45); var extend_default = /*#__PURE__*/__webpack_require__.n(extend); // EXTERNAL MODULE: ./node_modules/lodash/includes.js -var lodash_includes = __webpack_require__(29); +var lodash_includes = __webpack_require__(36); var includes_default = /*#__PURE__*/__webpack_require__.n(lodash_includes); // EXTERNAL MODULE: ./node_modules/lodash/isBoolean.js -var isBoolean = __webpack_require__(124); +var isBoolean = __webpack_require__(163); var isBoolean_default = /*#__PURE__*/__webpack_require__.n(isBoolean); // EXTERNAL MODULE: ./node_modules/lodash/isFunction.js -var lodash_isFunction = __webpack_require__(48); +var lodash_isFunction = __webpack_require__(62); var isFunction_default = /*#__PURE__*/__webpack_require__.n(lodash_isFunction); // EXTERNAL MODULE: ./node_modules/lodash/isNil.js -var isNil = __webpack_require__(125); +var isNil = __webpack_require__(164); var isNil_default = /*#__PURE__*/__webpack_require__.n(isNil); // EXTERNAL MODULE: ./node_modules/lodash/keys.js -var lodash_keys = __webpack_require__(26); +var lodash_keys = __webpack_require__(33); var keys_default = /*#__PURE__*/__webpack_require__.n(lodash_keys); // EXTERNAL MODULE: ./node_modules/lodash/partial.js -var partial = __webpack_require__(69); +var partial = __webpack_require__(93); var partial_default = /*#__PURE__*/__webpack_require__.n(partial); // EXTERNAL MODULE: ./node_modules/lodash/pickBy.js -var pickBy = __webpack_require__(126); +var pickBy = __webpack_require__(165); var pickBy_default = /*#__PURE__*/__webpack_require__.n(pickBy); // EXTERNAL MODULE: ./node_modules/lodash/size.js -var lodash_size = __webpack_require__(127); +var lodash_size = __webpack_require__(166); var size_default = /*#__PURE__*/__webpack_require__.n(lodash_size); // EXTERNAL MODULE: ./node_modules/lodash/values.js -var lodash_values = __webpack_require__(68); +var lodash_values = __webpack_require__(92); var values_default = /*#__PURE__*/__webpack_require__.n(lodash_values); // CONCATENATED MODULE: ./src/headless/node_modules/pluggable.js/src/pluggable.js @@ -59633,7 +63521,7 @@ extend_default()(PluginSocket.prototype, { // overriding method is called. This is done to enable // chaining of plugin methods, all the way up to the // original method. - wrappedOverride: function wrappedOverride(key, value, super_method, default_super) { + wrappedOverride: function (key, value, super_method, default_super) { if (typeof super_method === "function") { if (typeof this.__super__ === "undefined") { /* We're not on the context of the plugged object. @@ -59665,7 +63553,7 @@ extend_default()(PluginSocket.prototype, { // For example: // // `plugin2.MyFunc.__super__.myFunc => plugin1.MyFunc.__super__.myFunc => original.myFunc` - _overrideAttribute: function _overrideAttribute(key, plugin) { + _overrideAttribute: function (key, plugin) { let value = plugin.overrides[key]; if (typeof value === "function") { @@ -59677,7 +63565,7 @@ extend_default()(PluginSocket.prototype, { this.plugged[key] = value; } }, - _extendObject: function _extendObject(obj, attributes) { + _extendObject: function (obj, attributes) { if (!obj.prototype.__super__) { obj.prototype.__super__ = {}; obj.prototype.__super__[this.name] = this.plugged; @@ -59709,7 +63597,7 @@ extend_default()(PluginSocket.prototype, { // If `strict_plugin_dependencies` is set to `false` (on the object being // made pluggable), then no error will be thrown if any of these plugins aren't // available. - loadPluginDependencies: function loadPluginDependencies(plugin) { + loadPluginDependencies: function (plugin) { each_default()(plugin.dependencies, name => { let dep = this.plugins[name]; @@ -59725,7 +63613,7 @@ extend_default()(PluginSocket.prototype, { } }); }, - throwUndefinedDependencyError: function throwUndefinedDependencyError(msg) { + throwUndefinedDependencyError: function (msg) { if (this.plugged.strict_plugin_dependencies) { throw msg; } else { @@ -59739,7 +63627,7 @@ extend_default()(PluginSocket.prototype, { // `applyOverrides` is called by initializePlugin. It applies any // and all overrides of methods or Backbone views and models that // are defined on any of the plugins. - applyOverrides: function applyOverrides(plugin) { + applyOverrides: function (plugin) { each_default()(Object.keys(plugin.overrides || {}), key => { let override = plugin.overrides[key]; @@ -59756,7 +63644,7 @@ extend_default()(PluginSocket.prototype, { }, // `initializePlugin` applies the overrides (if any) defined on all // the registered plugins and then calls the initialize method of the plugin - initializePlugin: function initializePlugin(plugin) { + initializePlugin: function (plugin) { if (!includes_default()(keys_default()(this.allowed_plugins), plugin.__name__)) { /* Don't initialize disallowed plugins. */ return; @@ -59787,7 +63675,7 @@ extend_default()(PluginSocket.prototype, { }, // `registerPlugin` registers (or inserts, if you'd like) a plugin, // by adding it to the `plugins` map on the PluginSocket instance. - registerPlugin: function registerPlugin(name, plugin) { + registerPlugin: function (name, plugin) { if (name in this.plugins) { throw new Error('Error: Plugin name ' + name + ' is already taken'); } @@ -59800,7 +63688,7 @@ extend_default()(PluginSocket.prototype, { // `initializePlugin` for each. // The passed in properties variable is an object with attributes and methods // which will be attached to the plugins. - initializePlugins: function initializePlugins(properties = {}, whitelist = [], blacklist = []) { + initializePlugins: function (properties = {}, whitelist = [], blacklist = []) { if (!size_default()(this.plugins)) { return; } @@ -59841,8 +63729,16 @@ function enable(object, name, attrname) { /* harmony default export */ var pluggable = ({ enable }); +// EXTERNAL MODULE: ./node_modules/localforage-webextensionstorage-driver/sync.js +var sync = __webpack_require__(167); +var sync_default = /*#__PURE__*/__webpack_require__.n(sync); + +// EXTERNAL MODULE: ./node_modules/localforage-webextensionstorage-driver/local.js +var local = __webpack_require__(168); +var local_default = /*#__PURE__*/__webpack_require__.n(local); + // EXTERNAL MODULE: ./node_modules/sizzle/dist/sizzle.js -var sizzle = __webpack_require__(2); +var sizzle = __webpack_require__(3); var sizzle_default = /*#__PURE__*/__webpack_require__.n(sizzle); // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/core.js + 2 modules @@ -60732,7 +64628,7 @@ function inherits(protoProps, staticProps) { if (protoProps && lodash_es_has(protoProps, 'constructor')) { child = protoProps.constructor; } else { - child = function child() { + child = function () { return parent.apply(this, arguments); }; } // Add static properties to the constructor function, if supplied. @@ -60901,7 +64797,7 @@ var isEmpty_hasOwnProperty = isEmpty_objectProto.hasOwnProperty; * _.isEmpty({ 'a': 1 }); * // => false */ -function isEmpty_isEmpty(value) { +function isEmpty(value) { if (value == null) { return true; } @@ -60925,7 +64821,7 @@ function isEmpty_isEmpty(value) { return true; } -/* harmony default export */ var lodash_es_isEmpty = (isEmpty_isEmpty); +/* harmony default export */ var lodash_es_isEmpty = (isEmpty); // CONCATENATED MODULE: ./node_modules/lodash-es/toNumber.js @@ -61205,7 +65101,7 @@ let _listening; // Iterates over the standard `event, callback` (as well as the // maps `{event: callback}`). -const events_eventsApi = function eventsApi(iteratee, events, name, callback, opts) { +const eventsApi = function (iteratee, events, name, callback, opts) { let i = 0, names; @@ -61232,7 +65128,7 @@ const events_eventsApi = function eventsApi(iteratee, events, name, callback, op Events.on = function (name, callback, context) { - this._events = events_eventsApi(onApi, this._events || {}, name, callback, { + this._events = eventsApi(onApi, this._events || {}, name, callback, { context: context, ctx: this, listening: _listening @@ -61274,7 +65170,7 @@ Events.listenTo = function (obj, name, callback) { }; // The reducing API that adds a callback to the `events` object. -const onApi = function onApi(events, name, callback, options) { +const onApi = function (events, name, callback, options) { if (callback) { const handlers = events[name] || (events[name] = []); const context = options.context, @@ -61294,7 +65190,7 @@ const onApi = function onApi(events, name, callback, options) { // `_listening` variable. -const tryCatchOn = function tryCatchOn(obj, name, callback, context) { +const tryCatchOn = function (obj, name, callback, context) { try { obj.on(name, callback, context); } catch (e) { @@ -61308,7 +65204,7 @@ const tryCatchOn = function tryCatchOn(obj, name, callback, context) { Events.off = function (name, callback, context) { if (!this._events) return this; - this._events = events_eventsApi(events_offApi, this._events, name, callback, { + this._events = eventsApi(offApi, this._events, name, callback, { context: context, listeners: this._listeners }); @@ -61336,7 +65232,7 @@ Events.stopListening = function (obj, name, callback) { }; // The reducing API that removes a callback from the `events` object. -const events_offApi = function offApi(events, name, callback, options) { +const offApi = function (events, name, callback, options) { if (!events) return; const context = options.context, listeners = options.listeners; @@ -61392,7 +65288,7 @@ const events_offApi = function offApi(events, name, callback, options) { Events.once = function (name, callback, context) { // Map the event into a `{event: once}` object. - const events = events_eventsApi(events_onceMap, {}, name, callback, this.off.bind(this)); + const events = eventsApi(onceMap, {}, name, callback, this.off.bind(this)); if (typeof name === 'string' && (context === null || context === undefined)) callback = undefined; return this.on(events, callback, context); }; // Inversion-of-control versions of `once`. @@ -61400,13 +65296,13 @@ Events.once = function (name, callback, context) { Events.listenToOnce = function (obj, name, callback) { // Map the event into a `{event: once}` object. - const events = events_eventsApi(events_onceMap, {}, name, callback, this.stopListening.bind(this, obj)); + const events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj)); return this.listenTo(obj, events); }; // Reduces the event callbacks into a map of `{event: onceWrapper}`. // `offer` unbinds the `onceWrapper` after it has been called. -const events_onceMap = function onceMap(map, name, callback, offer) { +const onceMap = function (map, name, callback, offer) { if (callback) { const _once = map[name] = lodash_es_once(function () { offer(name, _once); @@ -61430,12 +65326,12 @@ Events.trigger = function (name) { for (let i = 0; i < length; i++) args[i] = arguments[i + 1]; - events_eventsApi(triggerApi, this._events, name, undefined, args); + eventsApi(triggerApi, this._events, name, undefined, args); return this; }; // Handles triggering the appropriate event callbacks. -const triggerApi = function triggerApi(objEvents, name, callback, args) { +const triggerApi = function (objEvents, name, callback, args) { if (objEvents) { const events = objEvents[name]; let allEvents = objEvents.all; @@ -61450,7 +65346,7 @@ const triggerApi = function triggerApi(objEvents, name, callback, args) { // Backbone events have 3 arguments). -const triggerEvents = function triggerEvents(events, args) { +const triggerEvents = function (events, args) { let ev, i = -1; const l = events.length, @@ -61488,7 +65384,7 @@ const triggerEvents = function triggerEvents(events, args) { // when all callbacks have been offed. -const Listening = function Listening(listener, obj) { +const Listening = function (listener, obj) { this.id = listener._listenId; this.listener = listener; this.obj = obj; @@ -61506,7 +65402,7 @@ Listening.prototype.off = function (name, callback) { let cleanup; if (this.interop) { - this._events = events_eventsApi(events_offApi, this._events, name, callback, { + this._events = eventsApi(offApi, this._events, name, callback, { context: undefined, listeners: undefined }); @@ -61905,7 +65801,7 @@ var invert_nativeObjectToString = invert_objectProto.toString; * _.invert(object); * // => { '1': 'c', '2': 'b' } */ -var invert_invert = _createInverter(function(result, value, key) { +var invert = _createInverter(function(result, value, key) { if (value != null && typeof value.toString != 'function') { value = invert_nativeObjectToString.call(value); @@ -61914,7 +65810,7 @@ var invert_invert = _createInverter(function(result, value, key) { result[value] = key; }, lodash_es_constant(lodash_es_identity)); -/* harmony default export */ var lodash_es_invert = (invert_invert); +/* harmony default export */ var lodash_es_invert = (invert); // CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheAdd.js /** Used to stand-in for `undefined` hash values. */ @@ -63212,7 +67108,7 @@ var omit_CLONE_DEEP_FLAG = 1, * _.omit(object, ['a', 'c']); * // => { 'b': '2' } */ -var omit_omit = _flatRest(function(object, paths) { +var omit = _flatRest(function(object, paths) { var result = {}; if (object == null) { return result; @@ -63234,7 +67130,7 @@ var omit_omit = _flatRest(function(object, paths) { return result; }); -/* harmony default export */ var lodash_es_omit = (omit_omit); +/* harmony default export */ var lodash_es_omit = (omit); // CONCATENATED MODULE: ./node_modules/lodash-es/_baseSet.js @@ -63359,11 +67255,11 @@ function basePick(object, paths) { * _.pick(object, ['a', 'c']); * // => { 'a': 1, 'c': 3 } */ -var pick_pick = _flatRest(function(object, paths) { +var pick = _flatRest(function(object, paths) { return object == null ? {} : _basePick(object, paths); }); -/* harmony default export */ var lodash_es_pick = (pick_pick); +/* harmony default export */ var lodash_es_pick = (pick); // CONCATENATED MODULE: ./node_modules/@converse/skeletor/src/model.js // Backbone.js 1.4.0 @@ -63395,7 +67291,7 @@ var pick_pick = _flatRest(function(object, paths) { -const model_Model = function Model(attributes, options) { +const model_Model = function (attributes, options) { let attrs = attributes || {}; options || (options = {}); this.preinitialize.apply(this, arguments); @@ -63424,72 +67320,72 @@ Object.assign(model_Model.prototype, Events, { cidPrefix: 'c', // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Model. - preinitialize: function preinitialize() {}, + preinitialize: function () {}, // Initialize is an empty function by default. Override it with your own // initialization logic. - initialize: function initialize() {}, + initialize: function () {}, // Return a copy of the model's `attributes` object. - toJSON: function toJSON(options) { + toJSON: function (options) { return lodash_es_clone(this.attributes); }, // Proxy `Backbone.sync` by default -- but override this if you need // custom syncing semantics for *this* particular model. - sync: function sync(method, model, options) { + sync: function (method, model, options) { return getSyncMethod(this)(method, model, options); }, // Get the value of an attribute. - get: function get(attr) { + get: function (attr) { return this.attributes[attr]; }, - keys: function keys() { + keys: function () { return Object.keys(this.attributes); }, - values: function values() { + values: function () { return Object.values(this.attributes); }, - pairs: function pairs() { + pairs: function () { return this.entries(); }, - entries: function entries() { + entries: function () { return Object.entries(this.attributes); }, - invert: function invert() { + invert: function () { return lodash_es_invert(this.attributes); }, - pick: function pick(...args) { + pick: function (...args) { if (args.length === 1 && Array.isArray(args[0])) { args = args[0]; } return lodash_es_pick(this.attributes, args); }, - omit: function omit(...args) { + omit: function (...args) { if (args.length === 1 && Array.isArray(args[0])) { args = args[0]; } return lodash_es_omit(this.attributes, args); }, - isEmpty: function isEmpty() { + isEmpty: function () { return lodash_es_isEmpty(this.attributes); }, // Get the HTML-escaped value of an attribute. - escape: function escape(attr) { + escape: function (attr) { return lodash_es_escape(this.get(attr)); }, // Returns `true` if the attribute contains a value that is not null // or undefined. - has: function has(attr) { + has: function (attr) { return this.get(attr) != null; }, // Special-cased proxy to lodash's `matches` method. - matches: function matches(attrs) { + matches: function (attrs) { return !!lodash_es_iteratee(attrs, this)(this.attributes); }, // Set a hash of model attributes on the object, firing `"change"`. This is // the core primitive operation of a model, updating the data and notifying // anyone who needs to know about the change in state. The heart of the beast. - set: function set(key, val, options) { + set: function (key, val, options) { if (key == null) return this; // Handle both `"key", value` and `{key: value}` -style arguments. let attrs; @@ -63562,13 +67458,13 @@ Object.assign(model_Model.prototype, Events, { }, // Remove an attribute from the model, firing `"change"`. `unset` is a noop // if the attribute doesn't exist. - unset: function unset(attr, options) { + unset: function (attr, options) { return this.set(attr, undefined, lodash_es_assignIn({}, options, { unset: true })); }, // Clear all attributes on the model, firing `"change"`. - clear: function clear(options) { + clear: function (options) { const attrs = {}; for (const key in this.attributes) attrs[key] = undefined; @@ -63579,7 +67475,7 @@ Object.assign(model_Model.prototype, Events, { }, // Determine if the model has changed since the last `"change"` event. // If you specify an attribute name, determine if that attribute has changed. - hasChanged: function hasChanged(attr) { + hasChanged: function (attr) { if (attr == null) return !lodash_es_isEmpty(this.changed); return lodash_es_has(this.changed, attr); }, @@ -63589,7 +67485,7 @@ Object.assign(model_Model.prototype, Events, { // persisted to the server. Unset attributes will be set to undefined. // You can also pass an attributes object to diff against the model, // determining if there *would be* a change. - changedAttributes: function changedAttributes(diff) { + changedAttributes: function (diff) { if (!diff) return this.hasChanged() ? lodash_es_clone(this.changed) : false; const old = this._changing ? this._previousAttributes : this.attributes; const changed = {}; @@ -63606,18 +67502,18 @@ Object.assign(model_Model.prototype, Events, { }, // Get the previous value of an attribute, recorded at the time the last // `"change"` event was fired. - previous: function previous(attr) { + previous: function (attr) { if (attr == null || !this._previousAttributes) return null; return this._previousAttributes[attr]; }, // Get all of the attributes of the model at the time of the previous // `"change"` event. - previousAttributes: function previousAttributes() { + previousAttributes: function () { return lodash_es_clone(this._previousAttributes); }, // Fetch the model from the server, merging the response with the model's // local attributes. Any changed attributes will trigger a "change" event. - fetch: function fetch(options) { + fetch: function (options) { options = lodash_es_assignIn({ parse: true }, options); @@ -63637,7 +67533,7 @@ Object.assign(model_Model.prototype, Events, { // Set a hash of model attributes, and sync the model to the server. // If the server returns an attributes hash that differs, the model's // state will be `set` again. - save: function save(key, val, options) { + save: function (key, val, options) { // Handle both `"key", value` and `{key: value}` -style arguments. let attrs; @@ -63705,13 +67601,13 @@ Object.assign(model_Model.prototype, Events, { // Destroy this model on the server if it was already persisted. // Optimistically removes the model from its collection, if it has one. // If `wait: true` is passed, waits for the server to respond before removal. - destroy: function destroy(options) { + destroy: function (options) { options = options ? lodash_es_clone(options) : {}; const model = this; const success = options.success; const wait = options.wait; - const destroy = function destroy() { + const destroy = function () { model.stopListening(); model.trigger('destroy', model, model.collection, options); }; @@ -63737,7 +67633,7 @@ Object.assign(model_Model.prototype, Events, { // Default URL for the model's representation on the server -- if you're // using Backbone's restful methods, override this to change the endpoint // that will be called. - url: function url() { + url: function () { const base = lodash_es_result(this, 'urlRoot') || lodash_es_result(this.collection, 'url') || urlError(); if (this.isNew()) return base; const id = this.get(this.idAttribute); @@ -63745,26 +67641,26 @@ Object.assign(model_Model.prototype, Events, { }, // **parse** converts a response into the hash of attributes to be `set` on // the model. The default implementation is just to pass the response along. - parse: function parse(resp, options) { + parse: function (resp, options) { return resp; }, // Create a new model with identical attributes to this one. - clone: function clone() { + clone: function () { return new this.constructor(this.attributes); }, // A model is new if it has never been saved to the server, and lacks an id. - isNew: function isNew() { + isNew: function () { return !this.has(this.idAttribute); }, // Check if the model is currently in a valid state. - isValid: function isValid(options) { + isValid: function (options) { return this._validate({}, lodash_es_assignIn({}, options, { validate: true })); }, // Run validation against the next complete set of model attributes, // returning `true` if all is well. Otherwise, fire an `"invalid"` event. - _validate: function _validate(attrs, options) { + _validate: function (attrs, options) { if (!options.validate || !this.validate) return true; attrs = lodash_es_assignIn({}, this.attributes, attrs); const error = this.validationError = this.validate(attrs, options) || null; @@ -64235,11 +68131,13 @@ core_u.getCurrentWord = function (input, index, delineator) { return word; }; -core_u.replaceCurrentWord = function (input, new_value, mention_boundaries = []) { - const caret = input.selectionEnd || undefined, - current_word = lodash_es_last(input.value.slice(0, caret).split(/\s/)), - value = input.value, - mention_boundary = mention_boundaries.includes(current_word[0]) ? current_word[0] : ''; +core_u.isMentionBoundary = s => s !== '@' && RegExp("(\\p{Z}|\\p{P})", 'u').test(s); + +core_u.replaceCurrentWord = function (input, new_value) { + const caret = input.selectionEnd || undefined; + const current_word = lodash_es_last(input.value.slice(0, caret).split(/\s/)); + const value = input.value; + const mention_boundary = core_u.isMentionBoundary(current_word[0]) ? current_word[0] : ''; input.value = value.slice(0, caret - current_word.length) + mention_boundary + "".concat(new_value, " ") + value.slice(caret); const selection_end = caret - current_word.length + new_value.length + 1; input.selectionEnd = mention_boundary ? selection_end + 1 : selection_end; @@ -64484,7 +68382,7 @@ function getEncryptionAttributes(stanza, _converse) { 'is_encrypted': !!encrypted }; - if (!encrypted || !_converse.config.get('trusted')) { + if (!encrypted || core_api.settings.get('clear_cache_on_logout')) { return attrs; } @@ -64563,13 +68461,9 @@ function getStanzaIDs(stanza, original_stanza) { const result = sizzle_default()("message > result[xmlns=\"".concat(stanza_Strophe.NS.MAM, "\"]"), original_stanza).pop(); if (result) { - const by_jid = original_stanza.getAttribute('from'); + const by_jid = original_stanza.getAttribute('from') || core_converse.bare_jid; - if (by_jid) { - attrs["stanza_id ".concat(by_jid)] = result.getAttribute('id'); - } else { - attrs["stanza_id"] = result.getAttribute('id'); - } + attrs["stanza_id ".concat(by_jid)] = result.getAttribute('id'); } // Store the origin id @@ -64693,7 +68587,7 @@ function getReferences(stanza) { function rejectMessage(stanza, text) { // Reject an incoming message by replying with an error message of type "cancel". - converse_core_api.send($msg({ + core_api.send($msg({ 'to': stanza.getAttribute('from'), 'type': 'error', 'id': stanza.getAttribute('id') @@ -64828,7 +68722,7 @@ const st = { let to_jid = stanza.getAttribute('to'); const to_resource = stanza_Strophe.getResourceFromJid(to_jid); - if (converse_core_api.settings.get('filter_by_resource') && to_resource && to_resource !== _converse.resource) { + if (core_api.settings.get('filter_by_resource') && to_resource && to_resource !== _converse.resource) { return new StanzaParseError("Ignoring incoming message intended for a different resource: ".concat(to_jid), stanza); } @@ -64875,9 +68769,9 @@ const st = { if (!is_headline && !is_server_message) { contact_jid = is_me ? stanza_Strophe.getBareJidFromJid(to_jid) : from_bare_jid; - contact = await converse_core_api.contacts.get(contact_jid); + contact = await core_api.contacts.get(contact_jid); - if (contact === undefined && !converse_core_api.settings.get("allow_non_roster_messaging")) { + if (contact === undefined && !core_api.settings.get("allow_non_roster_messaging")) { headless_log.error(stanza); return new StanzaParseError("Blocking messaging with a JID not in our roster because allow_non_roster_messaging is false.", stanza); } @@ -64897,9 +68791,10 @@ const st = { * @property { Boolean } is_markable - Can this message be marked with a XEP-0333 chat marker? * @property { Boolean } is_marker - Is this message a XEP-0333 Chat Marker? * @property { Boolean } is_only_emojis - Does the message body contain only emojis? - * @property { Boolean } is_valid_receipt_request - Does this message request a XEP-0184 receipt (and is not from us or a carbon or archived message) * @property { Boolean } is_spoiler - Is this a XEP-0382 spoiler message? * @property { Boolean } is_tombstone - Is this a XEP-0424 tombstone? + * @property { Boolean } is_unstyled - Whether XEP-0393 styling hints should be ignored + * @property { Boolean } is_valid_receipt_request - Does this message request a XEP-0184 receipt (and is not from us or a carbon or archived message) * @property { Object } encrypted - XEP-0384 encryption payload attributes * @property { String } body - The contents of the <body> tag of the message stanza * @property { String } chat_state - The XEP-0085 chat state notification contained in this message @@ -64947,6 +68842,7 @@ const st = { 'is_delayed': !!delay, 'is_markable': !!sizzle_default()("markable[xmlns=\"".concat(stanza_Strophe.NS.MARKERS, "\"]"), stanza).length, 'is_marker': !!marker, + 'is_unstyled': !!sizzle_default()("unstyled[xmlns=\"".concat(stanza_Strophe.NS.STYLING, "\"]"), stanza).length, 'marker_id': marker && marker.getAttribute('id'), 'msgid': stanza.getAttribute('id') || original_stanza.getAttribute('id'), 'nick': (_contact = contact) === null || _contact === void 0 ? void 0 : (_contact$attributes = _contact.attributes) === null || _contact$attributes === void 0 ? void 0 : _contact$attributes.nickname, @@ -64969,7 +68865,7 @@ const st = { } } - await converse_core_api.emojis.initialize(); + await core_api.emojis.initialize(); attrs = Object.assign({ 'message': attrs.body || attrs.error, // TODO: Remove and use body and error attributes instead @@ -64984,7 +68880,7 @@ const st = { * @event _converse#parseMessage */ - return converse_core_api.hook('parseMessage', stanza, attrs); + return core_api.hook('parseMessage', stanza, attrs); }, /** @@ -65034,9 +68930,10 @@ const st = { * @property { Boolean } is_markable - Can this message be marked with a XEP-0333 chat marker? * @property { Boolean } is_marker - Is this message a XEP-0333 Chat Marker? * @property { Boolean } is_only_emojis - Does the message body contain only emojis? - * @property { Boolean } is_valid_receipt_request - Does this message request a XEP-0184 receipt (and is not from us or a carbon or archived message) * @property { Boolean } is_spoiler - Is this a XEP-0382 spoiler message? * @property { Boolean } is_tombstone - Is this a XEP-0424 tombstone? + * @property { Boolean } is_unstyled - Whether XEP-0393 styling hints should be ignored + * @property { Boolean } is_valid_receipt_request - Does this message request a XEP-0184 receipt (and is not from us or a carbon or archived message) * @property { Object } encrypted - XEP-0384 encryption payload attributes * @property { String } body - The contents of the <body> tag of the message stanza * @property { String } chat_state - The XEP-0085 chat state notification contained in this message @@ -65088,6 +68985,7 @@ const st = { 'is_headline': st.isHeadline(stanza), 'is_markable': !!sizzle_default()("markable[xmlns=\"".concat(stanza_Strophe.NS.MARKERS, "\"]"), stanza).length, 'is_marker': !!marker, + 'is_unstyled': !!sizzle_default()("unstyled[xmlns=\"".concat(stanza_Strophe.NS.STYLING, "\"]"), stanza).length, 'marker_id': marker && marker.getAttribute('id'), 'msgid': stanza.getAttribute('id') || original_stanza.getAttribute('id'), 'receipt_id': getReceiptId(stanza), @@ -65099,7 +68997,7 @@ const st = { 'to': stanza.getAttribute('to'), 'type': stanza.getAttribute('type') }, getErrorAttributes(stanza), getOutOfBandAttributes(stanza), getSpoilerAttributes(stanza), getCorrectionAttributes(stanza, original_stanza), getStanzaIDs(stanza, original_stanza), getRetractionAttributes(stanza, original_stanza), getModerationAttributes(stanza), getEncryptionAttributes(stanza, _converse)); - await converse_core_api.emojis.initialize(); + await core_api.emojis.initialize(); attrs = Object.assign({ 'is_only_emojis': attrs.body ? utils_core.isOnlyEmojis(attrs.body) : false, 'is_valid_receipt_request': isValidReceiptRequest(stanza, attrs), @@ -65123,7 +69021,7 @@ const st = { * @event _converse#parseMUCMessage */ - return converse_core_api.hook('parseMUCMessage', stanza, attrs); + return core_api.hook('parseMUCMessage', stanza, attrs); }, /** @@ -65329,7 +69227,7 @@ var countBy_hasOwnProperty = countBy_objectProto.hasOwnProperty; * _.countBy(['one', 'two', 'three'], 'length'); * // => { '3': 2, '5': 1 } */ -var countBy_countBy = _createAggregator(function(result, value, key) { +var countBy = _createAggregator(function(result, value, key) { if (countBy_hasOwnProperty.call(result, key)) { ++result[key]; } else { @@ -65337,7 +69235,7 @@ var countBy_countBy = _createAggregator(function(result, value, key) { } }); -/* harmony default export */ var lodash_es_countBy = (countBy_countBy); +/* harmony default export */ var lodash_es_countBy = (countBy); // CONCATENATED MODULE: ./node_modules/lodash-es/_baseFindIndex.js /** @@ -65600,13 +69498,13 @@ function isArrayLikeObject(value) { * _.difference([2, 1], [2, 3]); * // => [1] */ -var difference_difference = _baseRest(function(array, values) { +var difference = _baseRest(function(array, values) { return lodash_es_isArrayLikeObject(array) ? _baseDifference(array, _baseFlatten(values, 1, lodash_es_isArrayLikeObject, true)) : []; }); -/* harmony default export */ var lodash_es_difference = (difference_difference); +/* harmony default export */ var lodash_es_difference = (difference); // CONCATENATED MODULE: ./node_modules/lodash-es/_arrayEvery.js /** @@ -65704,7 +69602,7 @@ function baseEvery(collection, predicate) { * _.every(users, 'active'); * // => false */ -function every_every(collection, predicate, guard) { +function every(collection, predicate, guard) { var func = lodash_es_isArray(collection) ? _arrayEvery : _baseEvery; if (guard && _isIterateeCall(collection, predicate, guard)) { predicate = undefined; @@ -65712,7 +69610,7 @@ function every_every(collection, predicate, guard) { return func(collection, _baseIteratee(predicate, 3)); } -/* harmony default export */ var lodash_es_every = (every_every); +/* harmony default export */ var lodash_es_every = (every); // CONCATENATED MODULE: ./node_modules/lodash-es/findIndex.js @@ -65757,7 +69655,7 @@ var findIndex_nativeMax = Math.max; * _.findIndex(users, 'active'); * // => 2 */ -function findIndex_findIndex(array, predicate, fromIndex) { +function findIndex(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; @@ -65769,7 +69667,7 @@ function findIndex_findIndex(array, predicate, fromIndex) { return _baseFindIndex(array, _baseIteratee(predicate, 3), index); } -/* harmony default export */ var lodash_es_findIndex = (findIndex_findIndex); +/* harmony default export */ var lodash_es_findIndex = (findIndex); // CONCATENATED MODULE: ./node_modules/lodash-es/findLastIndex.js @@ -65815,7 +69713,7 @@ var findLastIndex_nativeMax = Math.max, * _.findLastIndex(users, 'active'); * // => 0 */ -function findLastIndex_findLastIndex(array, predicate, fromIndex) { +function findLastIndex(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; @@ -65830,7 +69728,7 @@ function findLastIndex_findLastIndex(array, predicate, fromIndex) { return _baseFindIndex(array, _baseIteratee(predicate, 3), index, true); } -/* harmony default export */ var lodash_es_findLastIndex = (findLastIndex_findLastIndex); +/* harmony default export */ var lodash_es_findLastIndex = (findLastIndex); // CONCATENATED MODULE: ./node_modules/lodash-es/groupBy.js @@ -65865,7 +69763,7 @@ var groupBy_hasOwnProperty = groupBy_objectProto.hasOwnProperty; * _.groupBy(['one', 'two', 'three'], 'length'); * // => { '3': ['one', 'two'], '5': ['three'] } */ -var groupBy_groupBy = _createAggregator(function(result, value, key) { +var groupBy = _createAggregator(function(result, value, key) { if (groupBy_hasOwnProperty.call(result, key)) { result[key].push(value); } else { @@ -65873,7 +69771,7 @@ var groupBy_groupBy = _createAggregator(function(result, value, key) { } }); -/* harmony default export */ var lodash_es_groupBy = (groupBy_groupBy); +/* harmony default export */ var lodash_es_groupBy = (groupBy); // CONCATENATED MODULE: ./node_modules/lodash-es/indexOf.js @@ -65905,7 +69803,7 @@ var indexOf_nativeMax = Math.max; * _.indexOf([1, 2, 1, 2], 2, 2); * // => 3 */ -function indexOf_indexOf(array, value, fromIndex) { +function indexOf(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; @@ -65917,7 +69815,7 @@ function indexOf_indexOf(array, value, fromIndex) { return _baseIndexOf(array, value, index); } -/* harmony default export */ var lodash_es_indexOf = (indexOf_indexOf); +/* harmony default export */ var lodash_es_indexOf = (indexOf); // CONCATENATED MODULE: ./node_modules/lodash-es/keyBy.js @@ -65951,11 +69849,11 @@ function indexOf_indexOf(array, value, fromIndex) { * _.keyBy(array, 'dir'); * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } */ -var keyBy_keyBy = _createAggregator(function(result, value, key) { +var keyBy = _createAggregator(function(result, value, key) { _baseAssignValue(result, key, value); }); -/* harmony default export */ var lodash_es_keyBy = (keyBy_keyBy); +/* harmony default export */ var lodash_es_keyBy = (keyBy); // CONCATENATED MODULE: ./node_modules/lodash-es/_strictLastIndexOf.js /** @@ -66011,7 +69909,7 @@ var lastIndexOf_nativeMax = Math.max, * _.lastIndexOf([1, 2, 1, 2], 2, 2); * // => 1 */ -function lastIndexOf_lastIndexOf(array, value, fromIndex) { +function lastIndexOf(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; @@ -66026,7 +69924,7 @@ function lastIndexOf_lastIndexOf(array, value, fromIndex) { : _baseFindIndex(array, _baseIsNaN, index, true); } -/* harmony default export */ var lodash_es_lastIndexOf = (lastIndexOf_lastIndexOf); +/* harmony default export */ var lodash_es_lastIndexOf = (lastIndexOf); // CONCATENATED MODULE: ./node_modules/lodash-es/_baseSome.js @@ -66095,7 +69993,7 @@ function baseSome(collection, predicate) { * _.some(users, 'active'); * // => true */ -function some_some(collection, predicate, guard) { +function some(collection, predicate, guard) { var func = lodash_es_isArray(collection) ? _arraySome : _baseSome; if (guard && _isIterateeCall(collection, predicate, guard)) { predicate = undefined; @@ -66103,7 +70001,7 @@ function some_some(collection, predicate, guard) { return func(collection, _baseIteratee(predicate, 3)); } -/* harmony default export */ var lodash_es_some = (some_some); +/* harmony default export */ var lodash_es_some = (some); // CONCATENATED MODULE: ./node_modules/lodash-es/_baseMap.js @@ -66312,7 +70210,7 @@ function baseOrderBy(collection, iteratees, orders) { * _.sortBy(users, ['user', 'age']); * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] */ -var sortBy_sortBy = _baseRest(function(collection, iteratees) { +var sortBy = _baseRest(function(collection, iteratees) { if (collection == null) { return []; } @@ -66325,7 +70223,7 @@ var sortBy_sortBy = _baseRest(function(collection, iteratees) { return _baseOrderBy(collection, _baseFlatten(iteratees, 1), []); }); -/* harmony default export */ var lodash_es_sortBy = (sortBy_sortBy); +/* harmony default export */ var lodash_es_sortBy = (sortBy); // CONCATENATED MODULE: ./node_modules/@converse/skeletor/src/collection.js // Backbone.js 1.4.0 @@ -66358,11 +70256,11 @@ var sortBy_sortBy = _baseRest(function(collection, iteratees) { -const _slice = Array.prototype.slice; // Create a new **Collection**, perhaps to contain a specific type of `model`. +const slice = Array.prototype.slice; // Create a new **Collection**, perhaps to contain a specific type of `model`. // If a `comparator` is specified, the Collection will maintain // its models in sort order, as they're added and removed. -const collection_Collection = function Collection(models, options) { +const Collection = function (models, options) { options || (options = {}); this.preinitialize.apply(this, arguments); if (options.model) this.model = options.model; @@ -66375,7 +70273,7 @@ const collection_Collection = function Collection(models, options) { silent: true }, options)); }; -collection_Collection.extend = inherits; // Default options for `Collection#set`. +Collection.extend = inherits; // Default options for `Collection#set`. const setOptions = { add: true, @@ -66387,7 +70285,7 @@ const addOptions = { remove: false }; // Splices `insert` into `array` at index `at`. -const collection_splice = function splice(array, insert, at) { +const collection_splice = function (array, insert, at) { at = Math.min(Math.max(at, 0), array.length); const tail = Array(array.length - at); const length = insert.length; @@ -66401,37 +70299,37 @@ const collection_splice = function splice(array, insert, at) { }; // Define the Collection's inheritable methods. -Object.assign(collection_Collection.prototype, Events, { +Object.assign(Collection.prototype, Events, { // The default model for a collection is just a **Backbone.Model**. // This should be overridden in most cases. model: model_Model, // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Collection. - preinitialize: function preinitialize() {}, + preinitialize: function () {}, // Initialize is an empty function by default. Override it with your own // initialization logic. - initialize: function initialize() {}, + initialize: function () {}, // The JSON representation of a Collection is an array of the // models' attributes. - toJSON: function toJSON(options) { + toJSON: function (options) { return this.map(function (model) { return model.toJSON(options); }); }, // Proxy `Backbone.sync` by default. - sync: function sync(method, model, options) { + sync: function (method, model, options) { return getSyncMethod(this)(method, model, options); }, // Add a model, or list of models to the set. `models` may be Backbone // Models or raw JavaScript objects to be converted to Models, or any // combination of the two. - add: function add(models, options) { + add: function (models, options) { return this.set(models, lodash_es_assignIn({ merge: false }, options, addOptions)); }, // Remove a model, or a list of models from the set. - remove: function remove(models, options) { + remove: function (models, options) { options = lodash_es_assignIn({}, options); const singular = !Array.isArray(models); models = singular ? [models] : models.slice(); @@ -66453,7 +70351,7 @@ Object.assign(collection_Collection.prototype, Events, { // removing models that are no longer present, and merging models that // already exist in the collection, as necessary. Similar to **Model#set**, // the core operation for updating the data contained by the collection. - set: function set(models, options) { + set: function (models, options) { if (models == null) return; options = lodash_es_assignIn({}, setOptions, options); @@ -66569,8 +70467,8 @@ Object.assign(collection_Collection.prototype, Events, { return singular ? models[0] : models; }, - clearStore: async function clearStore(options = {}) { - await Promise.all(Array.from(this.models).map(m => { + clearStore: async function (options = {}, filter = o => o) { + await Promise.all(this.models.filter(filter).map(m => { return new Promise(resolve => { m.destroy(Object.assign(options, { 'success': resolve, @@ -66588,7 +70486,7 @@ Object.assign(collection_Collection.prototype, Events, { // you can reset the entire set with a new list of models, without firing // any granular `add` or `remove` events. Fires `reset` when finished. // Useful for bulk operations and optimizations. - reset: function reset(models, options) { + reset: function (models, options) { options = options ? lodash_es_clone(options) : {}; for (let i = 0; i < this.models.length; i++) { @@ -66606,146 +70504,146 @@ Object.assign(collection_Collection.prototype, Events, { return models; }, // Add a model to the end of the collection. - push: function push(model, options) { + push: function (model, options) { return this.add(model, lodash_es_assignIn({ at: this.length }, options)); }, // Remove a model from the end of the collection. - pop: function pop(options) { + pop: function (options) { const model = this.at(this.length - 1); return this.remove(model, options); }, // Add a model to the beginning of the collection. - unshift: function unshift(model, options) { + unshift: function (model, options) { return this.add(model, lodash_es_assignIn({ at: 0 }, options)); }, // Remove a model from the beginning of the collection. - shift: function shift(options) { + shift: function (options) { const model = this.at(0); return this.remove(model, options); }, // Slice out a sub-array of models from the collection. - slice: function slice() { - return _slice.apply(this.models, arguments); + slice: function () { + return slice.apply(this.models, arguments); }, - filter: function filter(callback, thisArg) { + filter: function (callback, thisArg) { return this.models.filter(lodash_es_isFunction(callback) ? callback : m => m.matches(callback), thisArg); }, - every: function every(pred) { + every: function (pred) { return lodash_es_every(this.models.map(m => m.attributes), pred); }, - difference: function difference(values) { + difference: function (values) { return lodash_es_difference(this.models, values); }, - max: function max() { + max: function () { return Math.max.apply(Math, this.models); }, - min: function min() { + min: function () { return Math.min.apply(Math, this.models); }, - drop: function drop(n = 1) { + drop: function (n = 1) { return this.models.slice(n); }, - some: function some(pred) { + some: function (pred) { return lodash_es_some(this.models.map(m => m.attributes), pred); }, - sortBy: function sortBy(iteratee) { + sortBy: function (iteratee) { return lodash_es_sortBy(this.models, lodash_es_isFunction(iteratee) ? iteratee : m => lodash_es_isString(iteratee) ? m.get(iteratee) : m.matches(iteratee)); }, - isEmpty: function isEmpty() { + isEmpty: function () { return lodash_es_isEmpty(this.models); }, - keyBy: function keyBy(iteratee) { + keyBy: function (iteratee) { return lodash_es_keyBy(this.models, iteratee); }, - each: function each(callback, thisArg) { + each: function (callback, thisArg) { return this.forEach(callback, thisArg); }, - forEach: function forEach(callback, thisArg) { + forEach: function (callback, thisArg) { return this.models.forEach(callback, thisArg); }, - includes: function includes(item) { + includes: function (item) { return this.models.includes(item); }, - size: function size() { + size: function () { return this.models.length; }, - countBy: function countBy(f) { + countBy: function (f) { return lodash_es_countBy(this.models, lodash_es_isFunction(f) ? f : m => lodash_es_isString(f) ? m.get(f) : m.matches(f)); }, - groupBy: function groupBy(pred) { + groupBy: function (pred) { return lodash_es_groupBy(this.models, lodash_es_isFunction(pred) ? pred : m => lodash_es_isString(pred) ? m.get(pred) : m.matches(pred)); }, - indexOf: function indexOf(fromIndex) { + indexOf: function (fromIndex) { return lodash_es_indexOf(this.models, fromIndex); }, - findLastIndex: function findLastIndex(pred, fromIndex) { + findLastIndex: function (pred, fromIndex) { return lodash_es_findLastIndex(this.models, lodash_es_isFunction(pred) ? pred : m => lodash_es_isString(pred) ? m.get(pred) : m.matches(pred), fromIndex); }, - lastIndexOf: function lastIndexOf(fromIndex) { + lastIndexOf: function (fromIndex) { return lodash_es_lastIndexOf(this.models, fromIndex); }, - findIndex: function findIndex(pred) { + findIndex: function (pred) { return lodash_es_findIndex(this.models, lodash_es_isFunction(pred) ? pred : m => lodash_es_isString(pred) ? m.get(pred) : m.matches(pred)); }, - last: function last() { + last: function () { const length = this.models == null ? 0 : this.models.length; return length ? this.models[length - 1] : undefined; }, - head: function head() { + head: function () { return this.models[0]; }, - first: function first() { + first: function () { return this.head(); }, - map: function map(cb, thisArg) { + map: function (cb, thisArg) { return this.models.map(lodash_es_isFunction(cb) ? cb : m => lodash_es_isString(cb) ? m.get(cb) : m.matches(cb), thisArg); }, - reduce: function reduce(callback, initialValue) { + reduce: function (callback, initialValue) { return this.models.reduce(callback, initialValue || this.models[0]); }, - reduceRight: function reduceRight(callback, initialValue) { + reduceRight: function (callback, initialValue) { return this.models.reduceRight(callback, initialValue || this.models[0]); }, - toArray: function toArray() { + toArray: function () { return Array.from(this.models); }, // Get a model from the set by id, cid, model object with id or cid // properties, or an attributes object that is transformed through modelId. - get: function get(obj) { + get: function (obj) { if (obj == null) return undefined; return this._byId[obj] || this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] || obj.cid && this._byId[obj.cid]; }, // Returns `true` if the model is in the collection. - has: function has(obj) { + has: function (obj) { return this.get(obj) != null; }, // Get the model at the given index. - at: function at(index) { + at: function (index) { if (index < 0) index += this.length; return this.models[index]; }, // Return models with matching attributes. Useful for simple cases of // `filter`. - where: function where(attrs, first) { + where: function (attrs, first) { return this[first ? 'find' : 'filter'](attrs); }, // Return the first model with matching attributes. Useful for simple cases // of `find`. - findWhere: function findWhere(attrs) { + findWhere: function (attrs) { return this.where(attrs, true); }, - find: function find(predicate, fromIndex) { + find: function (predicate, fromIndex) { const pred = lodash_es_isFunction(predicate) ? predicate : m => m.matches(predicate); return this.models.find(pred, fromIndex); }, // Force the collection to re-sort itself. You don't need to call this under // normal circumstances, as the set will maintain sort order as each item // is added. - sort: function sort(options) { + sort: function (options) { let comparator = this.comparator; if (!comparator) throw new Error('Cannot sort a set without a comparator'); options || (options = {}); @@ -66762,13 +70660,13 @@ Object.assign(collection_Collection.prototype, Events, { return this; }, // Pluck an attribute from each model in the collection. - pluck: function pluck(attr) { + pluck: function (attr) { return this.map(attr + ''); }, // Fetch the default set of models for this collection, resetting the // collection when they arrive. If `reset: true` is passed, the response // data will be passed through the `reset` method instead of `set`. - fetch: function fetch(options) { + fetch: function (options) { options = lodash_es_assignIn({ parse: true }, options); @@ -66790,7 +70688,7 @@ Object.assign(collection_Collection.prototype, Events, { // Create a new instance of a model in this collection. Add the model to the // collection immediately, unless `wait: true` is passed, in which case we // wait for the server to agree. - create: function create(model, options) { + create: function (model, options) { options = options ? lodash_es_clone(options) : {}; const wait = options.wait; const return_promise = options.promise; @@ -66833,42 +70731,42 @@ Object.assign(collection_Collection.prototype, Events, { }, // **parse** converts a response into a list of models to be added to the // collection. The default implementation is just to pass it through. - parse: function parse(resp, options) { + parse: function (resp, options) { return resp; }, // Create a new collection with an identical list of models as this one. - clone: function clone() { + clone: function () { return new this.constructor(this.models, { model: this.model, comparator: this.comparator }); }, // Define how to uniquely identify models in the collection. - modelId: function modelId(attrs) { + modelId: function (attrs) { return attrs[this.model.prototype.idAttribute || 'id']; }, // Get an iterator of all models in this collection. - values: function values() { + values: function () { return new CollectionIterator(this, ITERATOR_VALUES); }, // Get an iterator of all model IDs in this collection. - keys: function keys() { + keys: function () { return new CollectionIterator(this, ITERATOR_KEYS); }, // Get an iterator of all [ID, model] tuples in this collection. - entries: function entries() { + entries: function () { return new CollectionIterator(this, ITERATOR_KEYSVALUES); }, // Private method to reset all internal state. Called when the collection // is first initialized or reset. - _reset: function _reset() { + _reset: function () { this.length = 0; this.models = []; this._byId = {}; }, // Prepare a hash of attributes (or other model) to be added to this // collection. - _prepareModel: function _prepareModel(attrs, options) { + _prepareModel: function (attrs, options) { if (this._isModel(attrs)) { if (!attrs.collection) attrs.collection = this; return attrs; @@ -66882,7 +70780,7 @@ Object.assign(collection_Collection.prototype, Events, { return false; }, // Internal method called by both remove and set. - _removeModels: function _removeModels(models, options) { + _removeModels: function (models, options) { const removed = []; for (let i = 0; i < models.length; i++) { @@ -66911,18 +70809,18 @@ Object.assign(collection_Collection.prototype, Events, { }, // Method for checking whether an object should be considered a model for // the purposes of adding to the collection. - _isModel: function _isModel(model) { + _isModel: function (model) { return model instanceof model_Model; }, // Internal method to create a model's ties to a collection. - _addReference: function _addReference(model, options) { + _addReference: function (model, options) { this._byId[model.cid] = model; const id = this.modelId(model.attributes); if (id != null) this._byId[id] = model; model.on('all', this._onModelEvent, this); }, // Internal method to sever a model's ties to a collection. - _removeReference: function _removeReference(model, options) { + _removeReference: function (model, options) { delete this._byId[model.cid]; const id = this.modelId(model.attributes); if (id != null) delete this._byId[id]; @@ -66933,7 +70831,7 @@ Object.assign(collection_Collection.prototype, Events, { // Sets need to update their indexes when models change ids. All other // events simply proxy through. "add" and "remove" events that originate // in other collections are ignored. - _onModelEvent: function _onModelEvent(event, model, collection, options) { + _onModelEvent: function (event, model, collection, options) { if (model) { if ((event === 'add' || event === 'remove') && collection !== this) return; if (event === 'destroy') this.remove(model, options); @@ -66959,7 +70857,7 @@ Object.assign(collection_Collection.prototype, Events, { const $$iterator = typeof Symbol === 'function' && Symbol.iterator; if ($$iterator) { - collection_Collection.prototype[$$iterator] = collection_Collection.prototype.values; + Collection.prototype[$$iterator] = Collection.prototype.values; } // CollectionIterator // ------------------ // A CollectionIterator implements JavaScript's Iterator protocol, allowing the @@ -66968,7 +70866,7 @@ if ($$iterator) { // which can operate on Iterables. -const CollectionIterator = function CollectionIterator(collection, kind) { +const CollectionIterator = function (collection, kind) { this._collection = collection; this._kind = kind; this._index = 0; @@ -67027,9 +70925,9 @@ CollectionIterator.prototype.next = function () { }; }; // EXTERNAL MODULE: ./node_modules/lodash/lodash.js -var lodash = __webpack_require__(33); +var lodash = __webpack_require__(43); -// CONCATENATED MODULE: ./src/headless/connection.js +// CONCATENATED MODULE: ./src/headless/shared/connection.js @@ -67059,7 +70957,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { * JID resource for this session. * @event _converse#beforeResourceBinding */ - await converse_core_api.trigger('beforeResourceBinding', { + await core_api.trigger('beforeResourceBinding', { 'synchronous': true }); super.bind(); @@ -67082,9 +70980,10 @@ class connection_Connection extends core["e" /* Strophe */].Connection { headless_log.warn("Neither BOSH nor WebSocket connection methods have been specified with XEP-0156."); } else { // TODO: support multiple endpoints - converse_core_api.settings.set("websocket_url", ws_methods.pop()); - converse_core_api.settings.set('bosh_service_url', bosh_methods.pop()); - this.service = converse_core_api.settings.get("websocket_url") || converse_core_api.settings.get('bosh_service_url'); + core_api.settings.set("websocket_url", ws_methods.pop()); + core_api.settings.set('bosh_service_url', bosh_methods.pop()); + this.service = core_api.settings.get("websocket_url") || core_api.settings.get('bosh_service_url'); + this.setProtocol(); } } /** @@ -67132,7 +71031,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { async connect(jid, password, callback) { - if (converse_core_api.settings.get("discover_connection_methods")) { + if (core_api.settings.get("discover_connection_methods")) { const domain = core["e" /* Strophe */].getDomainFromJid(jid); await this.discoverConnectionMethods(domain); } @@ -67143,7 +71042,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { async reconnect() { const { __ - } = converse_core_converse; + } = core_converse; headless_log.debug('RECONNECTING: the connection has dropped, attempting to reconnect.'); this.setConnectionStatus(core["e" /* Strophe */].Status.RECONNECTING, __('The connection has dropped, attempting to reconnect.')); /** @@ -67153,10 +71052,10 @@ class connection_Connection extends core["e" /* Strophe */].Connection { * @event _converse#will-reconnect */ - converse_core_api.trigger('will-reconnect'); + core_api.trigger('will-reconnect'); this.reconnecting = true; await tearDown(); - return converse_core_api.user.login(); + return core_api.user.login(); } /** * Called as soon as a new connection has been established, either @@ -67170,14 +71069,14 @@ class connection_Connection extends core["e" /* Strophe */].Connection { delete this.reconnecting; this.flush(); // Solves problem of returned PubSub BOSH response not received by browser - await converse_core_converse.setUserJID(this.jid); + await core_converse.setUserJID(this.jid); /** * Synchronous event triggered after we've sent an IQ to bind the * user's JID resource for this session. * @event _converse#afterResourceBinding */ - await converse_core_api.trigger('afterResourceBinding', reconnecting, { + await core_api.trigger('afterResourceBinding', reconnecting, { 'synchronous': true }); @@ -67189,14 +71088,14 @@ class connection_Connection extends core["e" /* Strophe */].Connection { * @event _converse#reconnected * @example _converse.api.listen.on('reconnected', () => { ... }); */ - converse_core_api.trigger('reconnected'); + core_api.trigger('reconnected'); } else { /** * Triggered after the connection has been established and Converse * has got all its ducks in a row. * @event _converse#initialized */ - converse_core_api.trigger('connected'); + core_api.trigger('connected'); } } /** @@ -67224,7 +71123,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { setConnectionStatus(status, message) { this.status = status; - converse_core_converse.connfeedback.set({ + core_converse.connfeedback.set({ 'connection_status': status, message }); @@ -67237,7 +71136,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { this.reset(); tearDown(); await clearSession(); - delete converse_core_converse.connection; + delete core_converse.connection; /** * Triggered after converse.js has disconnected from the XMPP server. * @event _converse#disconnected @@ -67245,7 +71144,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { * @example _converse.api.listen.on('disconnected', () => { ... }); */ - converse_core_api.trigger('disconnected'); + core_api.trigger('disconnected'); } /** * Gets called once strophe's status reaches Strophe.Status.DISCONNECTED. @@ -67256,26 +71155,26 @@ class connection_Connection extends core["e" /* Strophe */].Connection { onDisconnected() { - if (converse_core_api.settings.get("auto_reconnect")) { + if (core_api.settings.get("auto_reconnect")) { const reason = this.disconnection_reason; if (this.disconnection_cause === core["e" /* Strophe */].Status.AUTHFAIL) { - if (converse_core_api.settings.get("credentials_url") || converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + if (core_api.settings.get("credentials_url") || core_api.settings.get("authentication") === core_converse.ANONYMOUS) { // If `credentials_url` is set, we reconnect, because we might // be receiving expirable tokens from the credentials_url. // // If `authentication` is anonymous, we reconnect because we // might have tried to attach with stale BOSH session tokens // or with a cached JID and password - return converse_core_api.connection.reconnect(); + return core_api.connection.reconnect(); } else { return this.finishDisconnection(); } - } else if (this.disconnection_cause === converse_core_converse.LOGOUT || reason === core["e" /* Strophe */].ErrorCondition.NO_AUTH_MECH || reason === "host-unknown" || reason === "remote-connection-failed") { + } else if (this.disconnection_cause === core_converse.LOGOUT || reason === core["e" /* Strophe */].ErrorCondition.NO_AUTH_MECH || reason === "host-unknown" || reason === "remote-connection-failed") { return this.finishDisconnection(); } - converse_core_api.connection.reconnect(); + core_api.connection.reconnect(); } else { return this.finishDisconnection(); } @@ -67292,8 +71191,8 @@ class connection_Connection extends core["e" /* Strophe */].Connection { onConnectStatusChanged(status, message) { const { __ - } = converse_core_converse; - headless_log.debug("Status changed to: ".concat(converse_core_converse.CONNECTION_STATUS[status])); + } = core_converse; + headless_log.debug("Status changed to: ".concat(core_converse.CONNECTION_STATUS[status])); if (status === core["e" /* Strophe */].Status.ATTACHFAIL) { var _this$worker_attach_p; @@ -67311,7 +71210,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { this.setConnectionStatus(status); (_this$worker_attach_p3 = this.worker_attach_promise) === null || _this$worker_attach_p3 === void 0 ? void 0 : _this$worker_attach_p3.resolve(true); // By default we always want to send out an initial presence stanza. - converse_core_converse.send_initial_presence = true; + core_converse.send_initial_presence = true; this.setDisconnectionCause(); if (this.reconnecting) { @@ -67323,7 +71222,7 @@ class connection_Connection extends core["e" /* Strophe */].Connection { if (this.restored) { // No need to send an initial presence stanza when // we're restoring an existing session. - converse_core_converse.send_initial_presence = false; + core_converse.send_initial_presence = false; } this.onConnected(); @@ -67376,8 +71275,8 @@ class connection_Connection extends core["e" /* Strophe */].Connection { hasResumed() { var _api$settings$get; - if (((_api$settings$get = converse_core_api.settings.get("connection_options")) === null || _api$settings$get === void 0 ? void 0 : _api$settings$get.worker) || this.isType('bosh')) { - return converse_core_converse.connfeedback.get('connection_status') === core["e" /* Strophe */].Status.ATTACHED; + if (((_api$settings$get = core_api.settings.get("connection_options")) === null || _api$settings$get === void 0 ? void 0 : _api$settings$get.worker) || this.isType('bosh')) { + return core_converse.connfeedback.get('connection_status') === core["e" /* Strophe */].Status.ATTACHED; } else { // Not binding means that the session was resumed. return !this.do_bind; @@ -67445,12 +71344,12 @@ class connection_MockConnection extends connection_Connection { } async bind() { - await converse_core_api.trigger('beforeResourceBinding', { + await core_api.trigger('beforeResourceBinding', { 'synchronous': true }); this.authenticated = true; - if (!converse_core_converse.no_connection_on_bind) { + if (!core_converse.no_connection_on_bind) { this._changeConnectStatus(core["e" /* Strophe */].Status.CONNECTED); } } @@ -70465,7 +74364,7 @@ class element_CustomElement extends lit_element_LitElement { // and URL fragments. If the browser supports neither (old IE, natch), // falls back to polling. -const history_History = function History() { +const history_History = function () { this.handlers = []; this.checkUrl = this.checkUrl.bind(this); // Ensure that `History` can be used outside of the browser. @@ -70490,12 +74389,12 @@ Object.assign(history_History.prototype, Events, { // twenty times a second. interval: 50, // Are we at the app root? - atRoot: function atRoot() { + atRoot: function () { const path = this.location.pathname.replace(/[^\/]$/, '$&/'); return path === this.root && !this.getSearch(); }, // Does the pathname match the root? - matchRoot: function matchRoot() { + matchRoot: function () { const path = this.decodeFragment(this.location.pathname); const rootPath = path.slice(0, this.root.length - 1) + '/'; return rootPath === this.root; @@ -70503,28 +74402,28 @@ Object.assign(history_History.prototype, Events, { // Unicode characters in `location.pathname` are percent encoded so they're // decoded for comparison. `%25` should not be decoded since it may be part // of an encoded parameter. - decodeFragment: function decodeFragment(fragment) { + decodeFragment: function (fragment) { return decodeURI(fragment.replace(/%25/g, '%2525')); }, // In IE6, the hash fragment and search params are incorrect if the // fragment contains `?`. - getSearch: function getSearch() { + getSearch: function () { const match = this.location.href.replace(/#.*/, '').match(/\?.+/); return match ? match[0] : ''; }, // Gets the true hash value. Cannot use location.hash directly due to bug // in Firefox where location.hash will always be decoded. - getHash: function getHash(window) { + getHash: function (window) { const match = (window || this).location.href.match(/#(.*)$/); return match ? match[1] : ''; }, // Get the pathname and search params, without the root. - getPath: function getPath() { + getPath: function () { const path = this.decodeFragment(this.location.pathname + this.getSearch()).slice(this.root.length - 1); return path.charAt(0) === '/' ? path.slice(1) : path; }, // Get the cross-browser normalized URL fragment from the path or hash. - getFragment: function getFragment(fragment) { + getFragment: function (fragment) { if (fragment == null) { if (this._usePushState || !this._wantsHashChange) { fragment = this.getPath(); @@ -70537,7 +74436,7 @@ Object.assign(history_History.prototype, Events, { }, // Start the hash change handling, returning `true` if the current URL matches // an existing route, and `false` otherwise. - start: function start(options) { + start: function (options) { if (history_History.started) throw new Error('history has already been started'); history_History.started = true; // Figure out the initial configuration. Do we need an iframe? // Is pushState desired ... is it available? @@ -70603,7 +74502,7 @@ Object.assign(history_History.prototype, Events, { }, // Disable history, perhaps temporarily. Not useful in a real app, // but possibly useful for unit testing Routers. - stop: function stop() { + stop: function () { // Remove window listeners. if (this._usePushState) { removeEventListener('popstate', this.checkUrl, false); @@ -70623,15 +74522,15 @@ Object.assign(history_History.prototype, Events, { }, // Add a route to be tested when the fragment changes. Routes added later // may override previous routes. - route: function route(_route, callback) { + route: function (route, callback) { this.handlers.unshift({ - route: _route, + route: route, callback: callback }); }, // Checks the current URL to see if it has changed, and if it has, // calls `loadUrl`, normalizing across the hidden iframe. - checkUrl: function checkUrl(e) { + checkUrl: function (e) { let current = this.getFragment(); // If the user pressed the back button, the iframe's hash will have // changed and we should use that for comparison. @@ -70646,7 +74545,7 @@ Object.assign(history_History.prototype, Events, { // Attempt to load the current URL fragment. If a route succeeds with a // match, returns `true`. If no defined routes matches the fragment, // returns `false`. - loadUrl: function loadUrl(fragment) { + loadUrl: function (fragment) { // If the root doesn't match, no routes can match either. if (!this.matchRoot()) return false; fragment = this.fragment = this.getFragment(fragment); @@ -70664,7 +74563,7 @@ Object.assign(history_History.prototype, Events, { // The options object can contain `trigger: true` if you wish to have the // route callback be fired (not usually desirable), or `replace: true`, if // you wish to modify the current URL without adding an entry to the history. - navigate: function navigate(fragment, options) { + navigate: function (fragment, options) { if (!history_History.started) return false; if (!options || options === true) options = { trigger: !!options @@ -70714,7 +74613,7 @@ Object.assign(history_History.prototype, Events, { }, // Update the hash location, either replacing the current entry, or adding // a new one to the browser history. - _updateHash: function _updateHash(location, fragment, replace) { + _updateHash: function (location, fragment, replace) { if (replace) { const href = location.href.replace(/(javascript:|#).*$/, ''); location.replace(href + '#' + fragment); @@ -70790,7 +74689,7 @@ var isRegExp = nodeIsRegExp ? _baseUnary(nodeIsRegExp) : _baseIsRegExp; // Routers map faux-URLs to actions, and fire events when routes are // matched. Creating a new one sets its `routes` hash, if not set statically. -const router_Router = function Router(options = {}) { +const Router = function (options = {}) { this.history = options.history || new src_history(); this.preinitialize.apply(this, arguments); if (options.routes) this.routes = options.routes; @@ -70799,7 +74698,7 @@ const router_Router = function Router(options = {}) { this.initialize.apply(this, arguments); }; -router_Router.extend = inherits; // Cached regular expressions for matching named param parts and splatted +Router.extend = inherits; // Cached regular expressions for matching named param parts and splatted // parts of route strings. const optionalParam = /\((.*?)\)/g; @@ -70807,21 +74706,21 @@ const namedParam = /(\(\?)?:\w+/g; const splatParam = /\*\w+/g; const escapeRegExp = /[\-{}\[\]+?.,\\\^$|#\s]/g; // Set up all inheritable **Router** properties and methods. -Object.assign(router_Router.prototype, Events, { +Object.assign(Router.prototype, Events, { // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the Router. - preinitialize: function preinitialize() {}, + preinitialize: function () {}, // Initialize is an empty function by default. Override it with your own // initialization logic. - initialize: function initialize() {}, + initialize: function () {}, // Manually bind a single named route to a callback. For example: // // this.route('search/:query/p:num', 'search', function(query, num) { // ... // }); // - route: function route(_route, name, callback) { - if (!lodash_es_isRegExp(_route)) _route = this._routeToRegExp(_route); + route: function (route, name, callback) { + if (!lodash_es_isRegExp(route)) route = this._routeToRegExp(route); if (lodash_es_isFunction(name)) { callback = name; @@ -70829,8 +74728,8 @@ Object.assign(router_Router.prototype, Events, { } if (!callback) callback = this[name]; - this.history.route(_route, fragment => { - const args = this._extractParameters(_route, fragment); + this.history.route(route, fragment => { + const args = this._extractParameters(route, fragment); if (this.execute(callback, args, name) !== false) { this.trigger.apply(this, ['route:' + name].concat(args)); @@ -70842,18 +74741,18 @@ Object.assign(router_Router.prototype, Events, { }, // Execute a route handler with the provided parameters. This is an // excellent place to do pre-route setup or post-route cleanup. - execute: function execute(callback, args, name) { + execute: function (callback, args, name) { if (callback) callback.apply(this, args); }, // Simple proxy to `history` to save a fragment into the history. - navigate: function navigate(fragment, options) { + navigate: function (fragment, options) { this.history.navigate(fragment, options); return this; }, // Bind all defined routes to `history`. We have to reverse the // order of the routes here to support behavior where the most general // routes can be defined at the bottom of the route map. - _bindRoutes: function _bindRoutes() { + _bindRoutes: function () { if (!this.routes) return; this.routes = lodash_es_result(this, 'routes'); let route; @@ -70865,7 +74764,7 @@ Object.assign(router_Router.prototype, Events, { }, // Convert a route string into a regular expression, suitable for matching // against the current location hash. - _routeToRegExp: function _routeToRegExp(route) { + _routeToRegExp: function (route) { route = route.replace(escapeRegExp, '\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, function (match, optional) { return optional ? match : '([^/?]+)'; }).replace(splatParam, '([^?]*?)'); @@ -70874,7 +74773,7 @@ Object.assign(router_Router.prototype, Events, { // Given a route, and a URL fragment that it matches, return the array of // extracted decoded parameters. Empty or unmatched parameters will be // treated as `null` to normalize cross-browser behavior. - _extractParameters: function _extractParameters(route, fragment) { + _extractParameters: function (route, fragment) { const params = route.exec(fragment).slice(1); return params.map(function (param, i) { // Don't decode the search params. @@ -70884,7 +74783,7 @@ Object.assign(router_Router.prototype, Events, { } }); // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/strophe.js -var strophe = __webpack_require__(3); +var strophe = __webpack_require__(1); // CONCATENATED MODULE: ./node_modules/lodash-es/now.js @@ -71157,9 +75056,9 @@ var invoke = _baseRest(_baseInvoke); /* harmony default export */ var lodash_es_invoke = (invoke); // EXTERNAL MODULE: ./node_modules/sprintf-js/src/sprintf.js -var sprintf = __webpack_require__(70); +var sprintf = __webpack_require__(94); -// CONCATENATED MODULE: ./src/headless/converse-core.js +// CONCATENATED MODULE: ./src/headless/core.js /** * @module converse-core * @copyright The Converse.js contributors @@ -71183,6 +75082,8 @@ var sprintf = __webpack_require__(70); + + dayjs_min_default.a.extend(advancedFormat_default.a); // Add Strophe Namespaces @@ -71209,6 +75110,7 @@ strophe["e" /* Strophe */].addNamespace('RSM', 'http://jabber.org/protocol/rsm') strophe["e" /* Strophe */].addNamespace('SID', 'urn:xmpp:sid:0'); strophe["e" /* Strophe */].addNamespace('SPOILER', 'urn:xmpp:spoiler:0'); strophe["e" /* Strophe */].addNamespace('STANZAS', 'urn:ietf:params:xml:ns:xmpp-stanzas'); +strophe["e" /* Strophe */].addNamespace('STYLING', 'urn:xmpp:styling:0'); strophe["e" /* Strophe */].addNamespace('VCARD', 'vcard-temp'); strophe["e" /* Strophe */].addNamespace('VCARDUPDATE', 'vcard-temp:x:update'); strophe["e" /* Strophe */].addNamespace('XFORM', 'jabber:x:data'); @@ -71234,15 +75136,16 @@ const DEFAULT_SETTINGS = { // Currently only used in connection with anonymous login auto_reconnect: true, blacklisted_plugins: [], + clear_cache_on_logout: false, connection_options: {}, credentials_url: null, // URL from where login credentials can be fetched discover_connection_methods: true, geouri_regex: /https\:\/\/www.openstreetmap.org\/.*#map=[0-9]+\/([\-0-9.]+)\/([\-0-9.]+)\S*/g, geouri_replacement: 'https://www.openstreetmap.org/?mlat=$1&mlon=$2#map=18/$1/$2', + i18n: 'en', idle_presence_timeout: 300, // Seconds after which an idle presence is sent - i18n: 'en', jid: undefined, keepalive: true, loglevel: 'info', @@ -71255,7 +75158,6 @@ const DEFAULT_SETTINGS = { sid: undefined, singleton: false, strict_plugin_dependencies: false, - trusted: true, view_mode: 'overlayed', // Choices are 'overlayed', 'fullscreen', 'mobile' websocket_url: undefined, @@ -71306,7 +75208,7 @@ const i18n = { * @namespace _converse */ -const converse_core_converse = { +const core_converse = { log: headless_log, CONNECTION_STATUS, templates: {}, @@ -71361,7 +75263,7 @@ const converse_core_converse = { default_connection_options: { 'explicitResourceBinding': true }, - router: new router_Router(), + router: new Router(), TimeoutError: TimeoutError, isTestEnv: () => { return initialization_settings.bosh_service_url === 'montague.lit/http-bind'; @@ -71394,44 +75296,44 @@ const converse_core_converse = { */ '___': str => str }; -converse_core_converse.VERSION_NAME = "v6.0.1dev"; -Object.assign(converse_core_converse, Events); // Make converse pluggable +core_converse.VERSION_NAME = "v7.0.3dev"; +Object.assign(core_converse, Events); // Make converse pluggable -pluggable.enable(converse_core_converse, '_converse', 'pluggable'); -let converse_core_user_settings; // User settings, populated via api.users.settings +pluggable.enable(core_converse, '_converse', 'pluggable'); +let core_user_settings; // User settings, populated via api.users.settings let initialization_settings = {}; // Container for settings passed in via converse.initialize function initSettings(settings) { - converse_core_converse.settings = {}; + core_converse.settings = {}; initialization_settings = settings; // Allow only whitelisted settings to be overwritten via converse.initialize const allowed_settings = lodash_es_pick(settings, Object.keys(DEFAULT_SETTINGS)); - lodash_es_assignIn(converse_core_converse.settings, DEFAULT_SETTINGS, allowed_settings); - lodash_es_assignIn(converse_core_converse, DEFAULT_SETTINGS, allowed_settings); // FIXME: remove + lodash_es_assignIn(core_converse.settings, DEFAULT_SETTINGS, allowed_settings); + lodash_es_assignIn(core_converse, DEFAULT_SETTINGS, allowed_settings); // FIXME: remove } function initUserSettings() { var _user_settings; - if (!converse_core_converse.bare_jid) { + if (!core_converse.bare_jid) { const msg = "No JID to fetch user settings for"; headless_log.error(msg); throw Error(msg); } - if (!((_user_settings = converse_core_user_settings) === null || _user_settings === void 0 ? void 0 : _user_settings.fetched)) { - const id = "converse.user-settings.".concat(converse_core_converse.bare_jid); - converse_core_user_settings = new model_Model({ + if (!((_user_settings = core_user_settings) === null || _user_settings === void 0 ? void 0 : _user_settings.fetched)) { + const id = "converse.user-settings.".concat(core_converse.bare_jid); + core_user_settings = new model_Model({ id }); - converse_core_user_settings.browserStorage = createStore(id); - converse_core_user_settings.fetched = converse_core_user_settings.fetch({ + core_user_settings.browserStorage = createStore(id); + core_user_settings.fetched = core_user_settings.fetch({ 'promise': true }); } - return converse_core_user_settings.fetched; + return core_user_settings.fetched; } /** * ### The private API @@ -71448,7 +75350,7 @@ function initUserSettings() { */ -const converse_core_api = converse_core_converse.api = { +const core_api = core_converse.api = { /** * This grouping collects API functions related to the XMPP connection. * @@ -71464,7 +75366,7 @@ const converse_core_api = converse_core_converse.api = { connected() { var _converse$connection; - return (converse_core_converse === null || converse_core_converse === void 0 ? void 0 : (_converse$connection = converse_core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connected) && true; + return (core_converse === null || core_converse === void 0 ? void 0 : (_converse$connection = core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connected) && true; }, /** @@ -71474,8 +75376,8 @@ const converse_core_api = converse_core_converse.api = { * @memberOf _converse.api.connection */ disconnect() { - if (converse_core_converse.connection) { - converse_core_converse.connection.disconnect(); + if (core_converse.connection) { + core_converse.connection.disconnect(); } }, @@ -71489,9 +75391,9 @@ const converse_core_api = converse_core_converse.api = { * @memberOf _converse.api.connection */ async reconnect() { - const conn_status = converse_core_converse.connfeedback.get('connection_status'); + const conn_status = core_converse.connfeedback.get('connection_status'); - if (converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + if (core_api.settings.get("authentication") === core_converse.ANONYMOUS) { await tearDown(); await clearSession(); } @@ -71503,39 +75405,39 @@ const converse_core_api = converse_core_converse.api = { // // We also call `_proto._doDisconnect` so that connection event handlers // for the old transport are removed. - if (converse_core_api.connection.isType('websocket') && converse_core_api.settings.get('bosh_service_url')) { - await converse_core_converse.setUserJID(converse_core_converse.bare_jid); + if (core_api.connection.isType('websocket') && core_api.settings.get('bosh_service_url')) { + await core_converse.setUserJID(core_converse.bare_jid); - converse_core_converse.connection._proto._doDisconnect(); + core_converse.connection._proto._doDisconnect(); - converse_core_converse.connection._proto = new strophe["e" /* Strophe */].Bosh(converse_core_converse.connection); - converse_core_converse.connection.service = converse_core_api.settings.get('bosh_service_url'); - } else if (converse_core_api.connection.isType('bosh') && converse_core_api.settings.get("websocket_url")) { - if (converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + core_converse.connection._proto = new strophe["e" /* Strophe */].Bosh(core_converse.connection); + core_converse.connection.service = core_api.settings.get('bosh_service_url'); + } else if (core_api.connection.isType('bosh') && core_api.settings.get("websocket_url")) { + if (core_api.settings.get("authentication") === core_converse.ANONYMOUS) { // When reconnecting anonymously, we need to connect with only // the domain, not the full JID that we had in our previous // (now failed) session. - await converse_core_converse.setUserJID(converse_core_api.settings.get("jid")); + await core_converse.setUserJID(core_api.settings.get("jid")); } else { - await converse_core_converse.setUserJID(converse_core_converse.bare_jid); + await core_converse.setUserJID(core_converse.bare_jid); } - converse_core_converse.connection._proto._doDisconnect(); + core_converse.connection._proto._doDisconnect(); - converse_core_converse.connection._proto = new strophe["e" /* Strophe */].Websocket(converse_core_converse.connection); - converse_core_converse.connection.service = converse_core_api.settings.get("websocket_url"); + core_converse.connection._proto = new strophe["e" /* Strophe */].Websocket(core_converse.connection); + core_converse.connection.service = core_api.settings.get("websocket_url"); } - } else if (conn_status === strophe["e" /* Strophe */].Status.AUTHFAIL && converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + } else if (conn_status === strophe["e" /* Strophe */].Status.AUTHFAIL && core_api.settings.get("authentication") === core_converse.ANONYMOUS) { // When reconnecting anonymously, we need to connect with only // the domain, not the full JID that we had in our previous // (now failed) session. - await converse_core_converse.setUserJID(converse_core_api.settings.get("jid")); + await core_converse.setUserJID(core_api.settings.get("jid")); } - if (converse_core_converse.connection.reconnecting) { - converse_core_converse.connection.debouncedReconnect(); + if (core_converse.connection.reconnecting) { + core_converse.connection.debouncedReconnect(); } else { - return converse_core_converse.connection.reconnect(); + return core_converse.connection.reconnect(); } }, @@ -71546,7 +75448,7 @@ const converse_core_api = converse_core_converse.api = { * @returns {boolean} */ isType(type) { - return converse_core_converse.connection.isType(type); + return core_converse.connection.isType(type); } }, @@ -71568,7 +75470,7 @@ const converse_core_api = converse_core_converse.api = { * event handlers' promises have been resolved. */ async trigger(name) { - if (!converse_core_converse._events) { + if (!core_converse._events) { return; } @@ -71576,13 +75478,13 @@ const converse_core_api = converse_core_converse.api = { const options = args.pop(); if (options && options.synchronous) { - const events = converse_core_converse._events[name] || []; + const events = core_converse._events[name] || []; await Promise.all(events.map(e => e.callback.apply(e.ctx, args.splice(1)))); } else { - converse_core_converse.trigger.apply(converse_core_converse, arguments); + core_converse.trigger.apply(core_converse, arguments); } - const promise = converse_core_converse.promises[name]; + const promise = core_converse.promises[name]; if (promise !== undefined) { promise.resolve(); @@ -71602,7 +75504,7 @@ const converse_core_api = converse_core_converse.api = { * @returns {Promise<any>} - A promise that resolves with the modified data structure. */ hook(name, context, data) { - const events = converse_core_converse._events[name] || []; + const events = core_converse._events[name] || []; if (events.length) { // Create a chain of promises, with each one feeding its output to @@ -71632,7 +75534,7 @@ const converse_core_api = converse_core_converse.api = { * @example _converse.api.user.jid()) */ jid() { - return converse_core_converse.connection.jid; + return core_converse.connection.jid; }, /** @@ -71655,32 +75557,32 @@ const converse_core_api = converse_core_converse.api = { async login(jid, password, automatic = false) { var _converse$connection2, _api$settings$get; - jid = jid || converse_core_converse.jid; + jid = jid || core_converse.jid; - if (!((_converse$connection2 = converse_core_converse.connection) === null || _converse$connection2 === void 0 ? void 0 : _converse$connection2.jid) || jid && !utils_core.isSameDomain(converse_core_converse.connection.jid, jid)) { - await converse_core_converse.initConnection(); + if (!((_converse$connection2 = core_converse.connection) === null || _converse$connection2 === void 0 ? void 0 : _converse$connection2.jid) || jid && !utils_core.isSameDomain(core_converse.connection.jid, jid)) { + await core_converse.initConnection(); } - if (((_api$settings$get = converse_core_api.settings.get("connection_options")) === null || _api$settings$get === void 0 ? void 0 : _api$settings$get.worker) && (await converse_core_converse.connection.restoreWorkerSession())) { + if (((_api$settings$get = core_api.settings.get("connection_options")) === null || _api$settings$get === void 0 ? void 0 : _api$settings$get.worker) && (await core_converse.connection.restoreWorkerSession())) { return; } if (jid) { - jid = await converse_core_converse.setUserJID(jid); + jid = await core_converse.setUserJID(jid); } // See whether there is a BOSH session to re-attach to - const bosh_plugin = converse_core_converse.pluggable.plugins['converse-bosh']; + const bosh_plugin = core_converse.pluggable.plugins['converse-bosh']; if (bosh_plugin && bosh_plugin.enabled()) { - if (await converse_core_converse.restoreBOSHSession()) { + if (await core_converse.restoreBOSHSession()) { return; - } else if (converse_core_api.settings.get("authentication") === converse_core_converse.PREBIND && (!automatic || converse_core_api.settings.get("auto_login"))) { - return converse_core_converse.startNewPreboundBOSHSession(); + } else if (core_api.settings.get("authentication") === core_converse.PREBIND && (!automatic || core_api.settings.get("auto_login"))) { + return core_converse.startNewPreboundBOSHSession(); } } - password = password || converse_core_api.settings.get("password"); + password = password || core_api.settings.get("password"); const credentials = jid && password ? { jid, password @@ -71698,23 +75600,23 @@ const converse_core_api = converse_core_converse.api = { const complete = () => { // Recreate all the promises - Object.keys(converse_core_converse.promises).forEach(replacePromise); - delete converse_core_converse.jid; + Object.keys(core_converse.promises).forEach(replacePromise); + delete core_converse.jid; /** * Triggered once the user has logged out. * @event _converse#logout */ - converse_core_api.trigger('logout'); + core_api.trigger('logout'); promise.resolve(); }; - converse_core_converse.connection.setDisconnectionCause(converse_core_converse.LOGOUT, undefined, true); + core_converse.connection.setDisconnectionCause(core_converse.LOGOUT, undefined, true); - if (converse_core_converse.connection !== undefined) { - converse_core_api.listen.once('disconnected', () => complete()); + if (core_converse.connection !== undefined) { + core_api.listen.once('disconnected', () => complete()); - converse_core_converse.connection.disconnect(); + core_converse.connection.disconnect(); } else { complete(); } @@ -71738,20 +75640,20 @@ const converse_core_api = converse_core_converse.api = { */ async getModel() { await initUserSettings(); - return converse_core_user_settings; + return core_user_settings; }, /** * Get the value of a particular user setting. * @method _converse.api.user.settings.get - * @param {String} key - hello world + * @param {String} key - The setting name * @param {*} fallback - An optional fallback value if the user setting is undefined * @returns {Promise} Promise which resolves with the value of the particular configuration setting. * @example _converse.api.user.settings.get("foo"); */ async get(key, fallback) { await initUserSettings(); - return converse_core_user_settings.get(key) === undefined ? fallback : converse_core_user_settings.get(key); + return core_user_settings.get(key) === undefined ? fallback : core_user_settings.get(key); }, /** @@ -71772,13 +75674,13 @@ const converse_core_api = converse_core_converse.api = { await initUserSettings(); if (lodash_es_isObject(key)) { - return converse_core_user_settings.save(key, { + return core_user_settings.save(key, { 'promise': true }); } else { const o = {}; o[key] = val; - return converse_core_user_settings.save(o, { + return core_user_settings.save(o, { 'promise': true }); } @@ -71790,7 +75692,7 @@ const converse_core_api = converse_core_converse.api = { */ async clear() { await initUserSettings(); - converse_core_user_settings.clear(); + core_user_settings.clear(); } } @@ -71833,8 +75735,8 @@ const converse_core_api = converse_core_converse.api = { const allowed_keys = Object.keys(lodash_es_pick(settings, Object.keys(DEFAULT_SETTINGS))); const allowed_site_settings = lodash_es_pick(initialization_settings, allowed_keys); const updated_settings = lodash_es_assignIn(lodash_es_pick(settings, allowed_keys), allowed_site_settings); - utils_core.merge(converse_core_converse.settings, updated_settings); - utils_core.merge(converse_core_converse, updated_settings); // FIXME: remove + utils_core.merge(core_converse.settings, updated_settings); + utils_core.merge(core_converse, updated_settings); // FIXME: remove }, update(settings) { @@ -71849,7 +75751,7 @@ const converse_core_api = converse_core_converse.api = { */ get(key) { if (Object.keys(DEFAULT_SETTINGS).includes(key)) { - return converse_core_converse[key]; + return core_converse[key]; } }, @@ -71875,12 +75777,12 @@ const converse_core_api = converse_core_converse.api = { const o = {}; if (lodash_es_isObject(key)) { - lodash_es_assignIn(converse_core_converse, lodash_es_pick(key, Object.keys(DEFAULT_SETTINGS))); - lodash_es_assignIn(converse_core_converse.settings, lodash_es_pick(key, Object.keys(DEFAULT_SETTINGS))); + lodash_es_assignIn(core_converse, lodash_es_pick(key, Object.keys(DEFAULT_SETTINGS))); + lodash_es_assignIn(core_converse.settings, lodash_es_pick(key, Object.keys(DEFAULT_SETTINGS))); } else if (typeof key === 'string') { o[key] = val; - lodash_es_assignIn(converse_core_converse, lodash_es_pick(o, Object.keys(DEFAULT_SETTINGS))); - lodash_es_assignIn(converse_core_converse.settings, lodash_es_pick(o, Object.keys(DEFAULT_SETTINGS))); + lodash_es_assignIn(core_converse, lodash_es_pick(o, Object.keys(DEFAULT_SETTINGS))); + lodash_es_assignIn(core_converse.settings, lodash_es_pick(o, Object.keys(DEFAULT_SETTINGS))); } } @@ -71935,7 +75837,7 @@ const converse_core_api = converse_core_converse.api = { promises.forEach(name => { const promise = utils_core.getResolveablePromise(); promise.replace = replace; - converse_core_converse.promises[name] = promise; + core_converse.promises[name] = promise; }); } @@ -71953,39 +75855,33 @@ const converse_core_api = converse_core_converse.api = { listen: { /** * Lets you listen to an event exactly once. - * * @method _converse.api.listen.once * @param {string} name The event's name * @param {function} callback The callback method to be called when the event is emitted. * @param {object} [context] The value of the `this` parameter for the callback. * @example _converse.api.listen.once('message', function (messageXML) { ... }); */ - once: converse_core_converse.once.bind(converse_core_converse), + once: core_converse.once.bind(core_converse), /** * Lets you subscribe to an event. - * * Every time the event fires, the callback method specified by `callback` will be called. - * * @method _converse.api.listen.on * @param {string} name The event's name * @param {function} callback The callback method to be called when the event is emitted. * @param {object} [context] The value of the `this` parameter for the callback. * @example _converse.api.listen.on('message', function (messageXML) { ... }); */ - on: converse_core_converse.on.bind(converse_core_converse), + on: core_converse.on.bind(core_converse), /** * To stop listening to an event, you can use the `not` method. - * - * Every time the event fires, the callback method specified by `callback` will be called. - * * @method _converse.api.listen.not * @param {string} name The event's name * @param {function} callback The callback method that is to no longer be called when the event fires * @example _converse.api.listen.not('message', function (messageXML); */ - not: converse_core_converse.off.bind(converse_core_converse), + not: core_converse.off.bind(core_converse), /** * Subscribe to an incoming stanza @@ -72004,7 +75900,7 @@ const converse_core_api = converse_core_converse.api = { options = options || {}; } - converse_core_converse.connection.addHandler(handler, options.ns, name, options.type, options.id, options.from, options); + core_converse.connection.addHandler(handler, options.ns, name, options.type, options.id, options.from, options); } }, @@ -72021,7 +75917,7 @@ const converse_core_api = converse_core_converse.api = { if (lodash_es_isFunction(condition)) { return utils_core.waitUntil(condition); } else { - const promise = converse_core_converse.promises[condition]; + const promise = core_converse.promises[condition]; if (promise === undefined) { return null; @@ -72045,7 +75941,7 @@ const converse_core_api = converse_core_converse.api = { * _converse.api.send(msg); */ send(stanza) { - if (!converse_core_api.connection.connected()) { + if (!core_api.connection.connected()) { headless_log.warn("Not sending stanza because we're not connected!"); headless_log.warn(strophe["e" /* Strophe */].serialize(stanza)); return; @@ -72056,11 +75952,11 @@ const converse_core_api = converse_core_converse.api = { } if (stanza.tagName === 'iq') { - return converse_core_api.sendIQ(stanza); + return core_api.sendIQ(stanza); } else { - converse_core_converse.connection.send(stanza); + core_converse.connection.send(stanza); - converse_core_api.trigger('send', stanza); + core_api.trigger('send', stanza); } }, @@ -72076,39 +75972,39 @@ const converse_core_api = converse_core_converse.api = { * If the IQ stanza being sent is of type `result` or `error`, there's * nothing to wait for, so an already resolved promise is returned. */ - sendIQ(stanza, timeout = converse_core_converse.STANZA_TIMEOUT, reject = true) { + sendIQ(stanza, timeout = core_converse.STANZA_TIMEOUT, reject = true) { var _stanza$nodeTree, _stanza; let promise; stanza = (_stanza$nodeTree = (_stanza = stanza) === null || _stanza === void 0 ? void 0 : _stanza.nodeTree) !== null && _stanza$nodeTree !== void 0 ? _stanza$nodeTree : stanza; if (['get', 'set'].includes(stanza.getAttribute('type'))) { - timeout = timeout || converse_core_converse.STANZA_TIMEOUT; + timeout = timeout || core_converse.STANZA_TIMEOUT; if (reject) { - promise = new Promise((resolve, reject) => converse_core_converse.connection.sendIQ(stanza, resolve, reject, timeout)); + promise = new Promise((resolve, reject) => core_converse.connection.sendIQ(stanza, resolve, reject, timeout)); promise.catch(e => { if (e === null) { throw new TimeoutError("Timeout error after ".concat(timeout, "ms for the following IQ stanza: ").concat(strophe["e" /* Strophe */].serialize(stanza))); } }); } else { - promise = new Promise(resolve => converse_core_converse.connection.sendIQ(stanza, resolve, resolve, timeout)); + promise = new Promise(resolve => core_converse.connection.sendIQ(stanza, resolve, resolve, timeout)); } } else { - converse_core_converse.connection.sendIQ(stanza); + core_converse.connection.sendIQ(stanza); promise = Promise.resolve(); } - converse_core_api.trigger('send', stanza); + core_api.trigger('send', stanza); return promise; } }; function replacePromise(name) { - const existing_promise = converse_core_converse.promises[name]; + const existing_promise = core_converse.promises[name]; if (!existing_promise) { throw new Error("Tried to replace non-existing promise: ".concat(name)); @@ -72117,26 +76013,26 @@ function replacePromise(name) { if (existing_promise.replace) { const promise = utils_core.getResolveablePromise(); promise.replace = existing_promise.replace; - converse_core_converse.promises[name] = promise; + core_converse.promises[name] = promise; } else { headless_log.debug("Not replacing promise \"".concat(name, "\"")); } } -converse_core_converse.isUniView = function () { +core_converse.isUniView = function () { /* We distinguish between UniView and MultiView instances. * * UniView means that only one chat is visible, even though there might be multiple ongoing chats. * MultiView means that multiple chats may be visible simultaneously. */ - return ['mobile', 'fullscreen', 'embedded'].includes(converse_core_api.settings.get("view_mode")); + return ['mobile', 'fullscreen', 'embedded'].includes(core_api.settings.get("view_mode")); }; async function initSessionStorage() { await src_storage.sessionStorageInitialized; - converse_core_converse.storage = { + core_converse.storage = { 'session': src_storage.localForage.createInstance({ - 'name': converse_core_converse.isTestEnv() ? 'converse-test-session' : 'converse-session', + 'name': core_converse.isTestEnv() ? 'converse-test-session' : 'converse-session', 'description': 'sessionStorage instance', 'driver': ['sessionStorageWrapper'] }) @@ -72144,32 +76040,53 @@ async function initSessionStorage() { } function initPersistentStorage() { - if (converse_core_converse.config.get('storage') !== 'persistent') { + if (core_api.settings.get('persistent_store') === 'sessionStorage') { + return; + } else if (core_converse.api.settings.get("persistent_store") === 'BrowserExtLocal') { + src_storage.localForage.defineDriver(local_default.a).then(() => src_storage.localForage.setDriver('webExtensionLocalStorage')); + core_converse.storage['persistent'] = src_storage.localForage; + return; + } else if (core_converse.api.settings.get("persistent_store") === 'BrowserExtSync') { + src_storage.localForage.defineDriver(sync_default.a).then(() => src_storage.localForage.setDriver('webExtensionSyncStorage')); + core_converse.storage['persistent'] = src_storage.localForage; return; } const config = { - 'name': converse_core_converse.isTestEnv() ? 'converse-test-persistent' : 'converse-persistent', - 'storeName': converse_core_converse.bare_jid + 'name': core_converse.isTestEnv() ? 'converse-test-persistent' : 'converse-persistent', + 'storeName': core_converse.bare_jid }; - if (converse_core_converse.api.settings.get("persistent_store") === 'localStorage') { + if (core_converse.api.settings.get("persistent_store") === 'localStorage') { config['description'] = 'localStorage instance'; config['driver'] = [src_storage.localForage.LOCALSTORAGE]; - } else if (converse_core_converse.api.settings.get("persistent_store") === 'IndexedDB') { + } else if (core_converse.api.settings.get("persistent_store") === 'IndexedDB') { config['description'] = 'indexedDB instance'; config['driver'] = [src_storage.localForage.INDEXEDDB]; + } else if (core_converse.api.settings.get("persistent_store") === 'none') { + config['description'] = 'in-memory instance'; + config['driver'] = [src_storage.IN_MEMORY]; } - converse_core_converse.storage['persistent'] = src_storage.localForage.createInstance(config); + core_converse.storage['persistent'] = src_storage.localForage.createInstance(config); } +core_converse.getDefaultStore = function () { + if (core_converse.config.get('trusted')) { + const is_non_persistent = core_api.settings.get('persistent_store') === 'sessionStorage'; + return is_non_persistent ? 'session' : 'persistent'; + } else { + return 'session'; + } +}; + function createStore(id, storage) { - const s = converse_core_converse.storage[storage ? storage : converse_core_converse.config.get('storage')]; + const s = core_converse.storage[storage || core_converse.getDefaultStore()]; + return new src_storage(id, s); } -converse_core_converse.createStore = createStore; +core_converse.createStore = createStore; function initPlugins() { // If initialize gets called a second time (e.g. during tests), then we @@ -72178,16 +76095,16 @@ function initPlugins() { // initialized twice. // If initialize is called for the first time, then this array is empty // in any case. - converse_core_converse.pluggable.initialized_plugins = []; - const whitelist = CORE_PLUGINS.concat(converse_core_converse.api.settings.get("whitelisted_plugins")); + core_converse.pluggable.initialized_plugins = []; + const whitelist = CORE_PLUGINS.concat(core_converse.api.settings.get("whitelisted_plugins")); - if (converse_core_converse.api.settings.get("singleton")) { - ['converse-bookmarks', 'converse-controlbox', 'converse-headline', 'converse-register'].forEach(name => converse_core_converse.api.settings.get("blacklisted_plugins").push(name)); + if (core_converse.api.settings.get("singleton")) { + ['converse-bookmarks', 'converse-controlbox', 'converse-headline', 'converse-register'].forEach(name => core_converse.api.settings.get("blacklisted_plugins").push(name)); } - converse_core_converse.pluggable.initializePlugins({ - '_converse': converse_core_converse - }, whitelist, converse_core_converse.api.settings.get("blacklisted_plugins")); + core_converse.pluggable.initializePlugins({ + '_converse': core_converse + }, whitelist, core_converse.api.settings.get("blacklisted_plugins")); /** * Triggered once all plugins have been initialized. This is a useful event if you want to * register event handlers but would like your own handlers to be overridable by @@ -72204,24 +76121,25 @@ function initPlugins() { */ - converse_core_converse.api.trigger('pluginsInitialized'); + core_converse.api.trigger('pluginsInitialized'); } -function initClientConfig() { +async function initClientConfig() { /* The client config refers to configuration of the client which is * independent of any particular user. * What this means is that config values need to persist across * user sessions. */ const id = 'converse.client-config'; - converse_core_converse.config = new model_Model({ - 'id': id, - 'trusted': converse_core_converse.api.settings.get("trusted") && true || false, - 'storage': converse_core_converse.api.settings.get("trusted") ? 'persistent' : 'session' + core_converse.config = new model_Model({ + id, + 'trusted': true }); - converse_core_converse.config.browserStorage = createStore(id, "session"); - - converse_core_converse.config.fetch(); + core_converse.config.browserStorage = createStore(id, "session"); + await new Promise(r => core_converse.config.fetch({ + 'success': r, + 'error': r + })); /** * Triggered once the XMPP-client configuration has been initialized. * The client configuration is independent of any particular and its values @@ -72232,32 +76150,31 @@ function initClientConfig() { * _converse.api.listen.on('clientConfigInitialized', () => { ... }); */ - - converse_core_converse.api.trigger('clientConfigInitialized'); + core_converse.api.trigger('clientConfigInitialized'); } async function tearDown() { - await converse_core_converse.api.trigger('beforeTearDown', { + await core_converse.api.trigger('beforeTearDown', { 'synchronous': true }); - window.removeEventListener('click', converse_core_converse.onUserActivity); - window.removeEventListener('focus', converse_core_converse.onUserActivity); - window.removeEventListener('keypress', converse_core_converse.onUserActivity); - window.removeEventListener('mousemove', converse_core_converse.onUserActivity); - window.removeEventListener(converse_core_converse.unloadevent, converse_core_converse.onUserActivity); - window.clearInterval(converse_core_converse.everySecondTrigger); + window.removeEventListener('click', core_converse.onUserActivity); + window.removeEventListener('focus', core_converse.onUserActivity); + window.removeEventListener('keypress', core_converse.onUserActivity); + window.removeEventListener('mousemove', core_converse.onUserActivity); + window.removeEventListener(core_converse.unloadevent, core_converse.onUserActivity); + window.clearInterval(core_converse.everySecondTrigger); - converse_core_converse.api.trigger('afterTearDown'); + core_converse.api.trigger('afterTearDown'); - return converse_core_converse; + return core_converse; } async function attemptNonPreboundSession(credentials, automatic) { const { api - } = converse_core_converse; + } = core_converse; - if (api.settings.get("authentication") === converse_core_converse.LOGIN) { + if (api.settings.get("authentication") === core_converse.LOGIN) { // XXX: If EITHER ``keepalive`` or ``auto_login`` is ``true`` and // ``authentication`` is set to ``login``, then Converse will try to log the user in, // since we don't have a way to distinguish between wether we're @@ -72266,66 +76183,66 @@ async function attemptNonPreboundSession(credentials, automatic) { // So we can't do the check (!automatic || _converse.api.settings.get("auto_login")) here. if (credentials) { connect(credentials); - } else if (converse_core_converse.api.settings.get("credentials_url")) { + } else if (core_converse.api.settings.get("credentials_url")) { // We give credentials_url preference, because // _converse.connection.pass might be an expired token. connect(await getLoginCredentials()); - } else if (converse_core_converse.jid && (converse_core_converse.api.settings.get("password") || converse_core_converse.connection.pass)) { + } else if (core_converse.jid && (core_converse.api.settings.get("password") || core_converse.connection.pass)) { connect(); - } else if (!converse_core_converse.isTestEnv() && 'credentials' in navigator) { + } else if (!core_converse.isTestEnv() && 'credentials' in navigator) { connect(await getLoginCredentialsFromBrowser()); } else { - !converse_core_converse.isTestEnv() && headless_log.warn("attemptNonPreboundSession: Couldn't find credentials to log in with"); + !core_converse.isTestEnv() && headless_log.warn("attemptNonPreboundSession: Couldn't find credentials to log in with"); } - } else if ([converse_core_converse.ANONYMOUS, converse_core_converse.EXTERNAL].includes(converse_core_converse.api.settings.get("authentication")) && (!automatic || converse_core_converse.api.settings.get("auto_login"))) { + } else if ([core_converse.ANONYMOUS, core_converse.EXTERNAL].includes(core_converse.api.settings.get("authentication")) && (!automatic || core_converse.api.settings.get("auto_login"))) { connect(); } } function connect(credentials) { - if ([converse_core_converse.ANONYMOUS, converse_core_converse.EXTERNAL].includes(converse_core_converse.api.settings.get("authentication"))) { - if (!converse_core_converse.jid) { + if ([core_converse.ANONYMOUS, core_converse.EXTERNAL].includes(core_converse.api.settings.get("authentication"))) { + if (!core_converse.jid) { throw new Error("Config Error: when using anonymous login " + "you need to provide the server's domain via the 'jid' option. " + "Either when calling converse.initialize, or when calling " + "_converse.api.user.login."); } - if (!converse_core_converse.connection.reconnecting) { - converse_core_converse.connection.reset(); + if (!core_converse.connection.reconnecting) { + core_converse.connection.reset(); } - converse_core_converse.connection.connect(converse_core_converse.jid.toLowerCase()); - } else if (converse_core_converse.api.settings.get("authentication") === converse_core_converse.LOGIN) { + core_converse.connection.connect(core_converse.jid.toLowerCase()); + } else if (core_converse.api.settings.get("authentication") === core_converse.LOGIN) { var _converse$connection3; - const password = credentials ? credentials.password : ((_converse$connection3 = converse_core_converse.connection) === null || _converse$connection3 === void 0 ? void 0 : _converse$connection3.pass) || converse_core_converse.api.settings.get("password"); + const password = credentials ? credentials.password : ((_converse$connection3 = core_converse.connection) === null || _converse$connection3 === void 0 ? void 0 : _converse$connection3.pass) || core_converse.api.settings.get("password"); if (!password) { - if (converse_core_converse.api.settings.get("auto_login")) { + if (core_converse.api.settings.get("auto_login")) { throw new Error("autoLogin: If you use auto_login and " + "authentication='login' then you also need to provide a password."); } - converse_core_converse.connection.setDisconnectionCause(strophe["e" /* Strophe */].Status.AUTHFAIL, undefined, true); + core_converse.connection.setDisconnectionCause(strophe["e" /* Strophe */].Status.AUTHFAIL, undefined, true); - converse_core_converse.api.connection.disconnect(); + core_converse.api.connection.disconnect(); return; } - if (!converse_core_converse.connection.reconnecting) { - converse_core_converse.connection.reset(); + if (!core_converse.connection.reconnecting) { + core_converse.connection.reset(); } - converse_core_converse.connection.connect(converse_core_converse.jid, password); + core_converse.connection.connect(core_converse.jid, password); } } -converse_core_converse.shouldClearCache = () => !converse_core_converse.config.get('trusted') || converse_core_converse.isTestEnv(); +core_converse.shouldClearCache = () => !core_converse.config.get('trusted') || core_api.settings.get('clear_cache_on_logout') || core_converse.isTestEnv(); function clearSession() { var _converse$session; - (_converse$session = converse_core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.destroy(); - delete converse_core_converse.session; - converse_core_converse.shouldClearCache() && converse_core_converse.api.user.settings.clear(); + (_converse$session = core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.destroy(); + delete core_converse.session; + core_converse.shouldClearCache() && core_converse.api.user.settings.clear(); /** * Synchronouse event triggered once the user session has been cleared, * for example when the user has logged out or when Converse has @@ -72333,16 +76250,16 @@ function clearSession() { * @event _converse#clearSession */ - return converse_core_converse.api.trigger('clearSession', { + return core_converse.api.trigger('clearSession', { 'synchronous': true }); } -converse_core_converse.initConnection = function () { - const api = converse_core_converse.api; +core_converse.initConnection = function () { + const api = core_converse.api; if (!api.settings.get('bosh_service_url')) { - if (api.settings.get("authentication") === converse_core_converse.PREBIND) { + if (api.settings.get("authentication") === core_converse.PREBIND) { throw new Error("authentication is set to 'prebind' but we don't have a BOSH connection"); } @@ -72351,12 +76268,12 @@ converse_core_converse.initConnection = function () { } } - const XMPPConnection = converse_core_converse.isTestEnv() ? connection_MockConnection : connection_Connection; + const XMPPConnection = core_converse.isTestEnv() ? connection_MockConnection : connection_Connection; if (('WebSocket' in window || 'MozWebSocket' in window) && api.settings.get("websocket_url")) { - converse_core_converse.connection = new XMPPConnection(api.settings.get("websocket_url"), Object.assign(converse_core_converse.default_connection_options, api.settings.get("connection_options"))); + core_converse.connection = new XMPPConnection(api.settings.get("websocket_url"), Object.assign(core_converse.default_connection_options, api.settings.get("connection_options"))); } else if (api.settings.get('bosh_service_url')) { - converse_core_converse.connection = new XMPPConnection(api.settings.get('bosh_service_url'), Object.assign(converse_core_converse.default_connection_options, api.settings.get("connection_options"), { + core_converse.connection = new XMPPConnection(api.settings.get('bosh_service_url'), Object.assign(core_converse.default_connection_options, api.settings.get("connection_options"), { 'keepalive': api.settings.get("keepalive") })); } else { @@ -72377,26 +76294,26 @@ converse_core_converse.initConnection = function () { async function initSession(jid) { var _converse$session2; - const is_shared_session = converse_core_api.settings.get('connection_options').worker; + const is_shared_session = core_api.settings.get('connection_options').worker; const bare_jid = strophe["e" /* Strophe */].getBareJidFromJid(jid).toLowerCase(); const id = "converse.session-".concat(bare_jid); - if (((_converse$session2 = converse_core_converse.session) === null || _converse$session2 === void 0 ? void 0 : _converse$session2.get('id')) !== id) { - converse_core_converse.session = new model_Model({ + if (((_converse$session2 = core_converse.session) === null || _converse$session2 === void 0 ? void 0 : _converse$session2.get('id')) !== id) { + core_converse.session = new model_Model({ id }); - converse_core_converse.session.browserStorage = createStore(id, is_shared_session ? "persistent" : "session"); - await new Promise(r => converse_core_converse.session.fetch({ + core_converse.session.browserStorage = createStore(id, is_shared_session ? "persistent" : "session"); + await new Promise(r => core_converse.session.fetch({ 'success': r, 'error': r })); - if (!is_shared_session && converse_core_converse.session.get('active')) { + if (!is_shared_session && core_converse.session.get('active')) { // If the `active` flag is set, it means this tab was cloned from // another (e.g. via middle-click), and its session data was copied over. - converse_core_converse.session.clear(); + core_converse.session.clear(); - converse_core_converse.session.save({ + core_converse.session.save({ id }); } @@ -72410,29 +76327,29 @@ async function initSession(jid) { * @memberOf _converse */ - converse_core_converse.api.trigger('userSessionInitialized'); + core_converse.api.trigger('userSessionInitialized'); } else { saveJIDtoSession(jid); } } function saveJIDtoSession(jid) { - jid = converse_core_converse.session.get('jid') || jid; + jid = core_converse.session.get('jid') || jid; - if (converse_core_converse.api.settings.get("authentication") !== converse_core_converse.ANONYMOUS && !strophe["e" /* Strophe */].getResourceFromJid(jid)) { + if (core_converse.api.settings.get("authentication") !== core_converse.ANONYMOUS && !strophe["e" /* Strophe */].getResourceFromJid(jid)) { jid = jid.toLowerCase() + connection_Connection.generateResource(); } - converse_core_converse.jid = jid; - converse_core_converse.bare_jid = strophe["e" /* Strophe */].getBareJidFromJid(jid); - converse_core_converse.resource = strophe["e" /* Strophe */].getResourceFromJid(jid); - converse_core_converse.domain = strophe["e" /* Strophe */].getDomainFromJid(jid); + core_converse.jid = jid; + core_converse.bare_jid = strophe["e" /* Strophe */].getBareJidFromJid(jid); + core_converse.resource = strophe["e" /* Strophe */].getResourceFromJid(jid); + core_converse.domain = strophe["e" /* Strophe */].getDomainFromJid(jid); - converse_core_converse.session.save({ + core_converse.session.save({ 'jid': jid, - 'bare_jid': converse_core_converse.bare_jid, - 'resource': converse_core_converse.resource, - 'domain': converse_core_converse.domain, + 'bare_jid': core_converse.bare_jid, + 'resource': core_converse.resource, + 'domain': core_converse.domain, // We use the `active` flag to determine whether we should use the values from sessionStorage. // When "cloning" a tab (e.g. via middle-click), the `active` flag will be set and we'll create // a new empty user session, otherwise it'll be false and we can re-use the user session. @@ -72441,7 +76358,7 @@ function saveJIDtoSession(jid) { // the new resource is found by Strophe.js and sent to the XMPP server. - converse_core_converse.connection.jid = jid; + core_converse.connection.jid = jid; } /** * Stores the passed in JID for the current user, potentially creating a @@ -72458,14 +76375,14 @@ function saveJIDtoSession(jid) { */ -converse_core_converse.setUserJID = async function (jid) { +core_converse.setUserJID = async function (jid) { await initSession(jid); /** * Triggered whenever the user's JID has been updated * @event _converse#setUserJID */ - converse_core_converse.api.trigger('setUserJID'); + core_converse.api.trigger('setUserJID'); return jid; }; @@ -72482,9 +76399,9 @@ function setUpXMLLogging() { strophe["e" /* Strophe */].error = msg => headless_log.error(msg); - converse_core_converse.connection.xmlInput = body => headless_log.debug(body.outerHTML, 'color: darkgoldenrod'); + core_converse.connection.xmlInput = body => headless_log.debug(body.outerHTML, 'color: darkgoldenrod'); - converse_core_converse.connection.xmlOutput = body => headless_log.debug(body.outerHTML, 'color: darkcyan'); + core_converse.connection.xmlOutput = body => headless_log.debug(body.outerHTML, 'color: darkcyan'); } async function getLoginCredentials() { @@ -72514,7 +76431,7 @@ async function getLoginCredentialsFromBrowser() { }); if (creds && creds.type == 'password' && utils_core.isValidJID(creds.id)) { - await converse_core_converse.setUserJID(creds.id); + await core_converse.setUserJID(creds.id); return { 'jid': creds.id, 'password': creds.password @@ -72530,35 +76447,35 @@ async function getLoginCredentialsFromBrowser() { async function cleanup() { var _converse$connection4; - await converse_core_api.trigger('cleanup', { + await core_api.trigger('cleanup', { 'synchronous': true }); - converse_core_converse.router.history.stop(); + core_converse.router.history.stop(); - converse_core_unregisterGlobalEventHandlers(); - (_converse$connection4 = converse_core_converse.connection) === null || _converse$connection4 === void 0 ? void 0 : _converse$connection4.reset(); + core_unregisterGlobalEventHandlers(); + (_converse$connection4 = core_converse.connection) === null || _converse$connection4 === void 0 ? void 0 : _converse$connection4.reset(); - converse_core_converse.stopListening(); + core_converse.stopListening(); - converse_core_converse.off(); + core_converse.off(); - if (converse_core_converse.promises['initialized'].isResolved) { - converse_core_api.promises.add('initialized'); + if (core_converse.promises['initialized'].isResolved) { + core_api.promises.add('initialized'); } } function fetchLoginCredentials(wait = 0) { return new Promise(lodash_es_debounce((resolve, reject) => { const xhr = new XMLHttpRequest(); - xhr.open('GET', converse_core_api.settings.get("credentials_url"), true); + xhr.open('GET', core_api.settings.get("credentials_url"), true); xhr.setRequestHeader('Accept', 'application/json, text/javascript'); xhr.onload = () => { if (xhr.status >= 200 && xhr.status < 400) { const data = JSON.parse(xhr.responseText); - converse_core_converse.setUserJID(data.jid).then(() => { + core_converse.setUserJID(data.jid).then(() => { resolve({ jid: data.jid, password: data.password @@ -72574,7 +76491,7 @@ function fetchLoginCredentials(wait = 0) { }, wait)); } -converse_core_converse.saveWindowState = function (ev) { +core_converse.saveWindowState = function (ev) { // XXX: eventually we should be able to just use // document.visibilityState (when we drop support for older // browsers). @@ -72595,7 +76512,7 @@ converse_core_converse.saveWindowState = function (ev) { state = document.hidden ? "hidden" : "visible"; } - converse_core_converse.windowState = state; + core_converse.windowState = state; /** * Triggered when window state has changed. * Used to determine when a user left the page and when came back. @@ -72605,15 +76522,15 @@ converse_core_converse.saveWindowState = function (ev) { * @example _converse.api.listen.on('windowStateChanged', obj => { ... }); */ - converse_core_api.trigger('windowStateChanged', { + core_api.trigger('windowStateChanged', { state }); }; -function converse_core_registerGlobalEventHandlers() { - document.addEventListener("visibilitychange", converse_core_converse.saveWindowState); +function core_registerGlobalEventHandlers() { + document.addEventListener("visibilitychange", core_converse.saveWindowState); - converse_core_converse.saveWindowState({ + core_converse.saveWindowState({ 'type': document.hidden ? "blur" : "focus" }); // Set initial state @@ -72627,22 +76544,22 @@ function converse_core_registerGlobalEventHandlers() { */ - converse_core_api.trigger('registeredGlobalEventHandlers'); + core_api.trigger('registeredGlobalEventHandlers'); } -function converse_core_unregisterGlobalEventHandlers() { - document.removeEventListener("visibilitychange", converse_core_converse.saveWindowState); - converse_core_api.trigger('unregisteredGlobalEventHandlers'); +function core_unregisterGlobalEventHandlers() { + document.removeEventListener("visibilitychange", core_converse.saveWindowState); + core_api.trigger('unregisteredGlobalEventHandlers'); } -converse_core_converse.ConnectionFeedback = model_Model.extend({ +core_converse.ConnectionFeedback = model_Model.extend({ defaults: { 'connection_status': strophe["e" /* Strophe */].Status.DISCONNECTED, 'message': '' }, initialize() { - this.on('change', () => converse_core_api.trigger('connfeedback', converse_core_converse.connfeedback)); + this.on('change', () => core_api.trigger('connfeedback', core_converse.connfeedback)); } }); @@ -72653,11 +76570,11 @@ function setUnloadEvent() { // gets thrown when the page is cached and not just // closed/destroyed. It's the only viable event on mobile Safari. // https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/ - converse_core_converse.unloadevent = 'pagehide'; + core_converse.unloadevent = 'pagehide'; } else if ('onbeforeunload' in window) { - converse_core_converse.unloadevent = 'beforeunload'; + core_converse.unloadevent = 'beforeunload'; } else if ('onunload' in window) { - converse_core_converse.unloadevent = 'unload'; + core_converse.unloadevent = 'unload'; } } @@ -72719,19 +76636,19 @@ Object.assign(converse, { await cleanup(); setUnloadEvent(); initSettings(settings); - converse_core_converse.strict_plugin_dependencies = settings.strict_plugin_dependencies; // Needed by pluggable.js + core_converse.strict_plugin_dependencies = settings.strict_plugin_dependencies; // Needed by pluggable.js - headless_log.setLogLevel(converse_core_api.settings.get("loglevel")); + headless_log.setLogLevel(core_api.settings.get("loglevel")); - if (converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { - if (converse_core_api.settings.get("auto_login") && !converse_core_api.settings.get('jid')) { + if (core_api.settings.get("authentication") === core_converse.ANONYMOUS) { + if (core_api.settings.get("auto_login") && !core_api.settings.get('jid')) { throw new Error("Config Error: you need to provide the server's " + "domain via the 'jid' option when using anonymous " + "authentication with auto_login."); } } - converse_core_converse.router.route(/^converse\?loglevel=(debug|info|warn|error|fatal)$/, 'loglevel', l => headless_log.setLogLevel(l)); + core_converse.router.route(/^converse\?loglevel=(debug|info|warn|error|fatal)$/, 'loglevel', l => headless_log.setLogLevel(l)); - converse_core_converse.connfeedback = new converse_core_converse.ConnectionFeedback(); + core_converse.connfeedback = new core_converse.ConnectionFeedback(); /* When reloading the page: * For new sessions, we need to send out a presence stanza to notify * the server/network that we're online. @@ -72740,22 +76657,22 @@ Object.assign(converse, { * https://github.com/conversejs/converse.js/issues/521 */ - converse_core_converse.send_initial_presence = true; + core_converse.send_initial_presence = true; await initSessionStorage(); - initClientConfig(); + await initClientConfig(); await i18n.initialize(); initPlugins(); - converse_core_registerGlobalEventHandlers(); - !History.started && converse_core_converse.router.history.start(); + core_registerGlobalEventHandlers(); + !History.started && core_converse.router.history.start(); - if (converse_core_api.settings.get("idle_presence_timeout") > 0) { - converse_core_api.listen.on('addClientFeatures', () => converse_core_api.disco.own.features.add(strophe["e" /* Strophe */].NS.IDLE)); + if (core_api.settings.get("idle_presence_timeout") > 0) { + core_api.listen.on('addClientFeatures', () => core_api.disco.own.features.add(strophe["e" /* Strophe */].NS.IDLE)); } - const plugins = converse_core_converse.pluggable.plugins; + const plugins = core_converse.pluggable.plugins; - if (converse_core_api.settings.get("auto_login") || converse_core_api.settings.get("keepalive") && lodash_es_invoke(plugins['converse-bosh'], 'enabled')) { - await converse_core_api.user.login(null, null, true); + if (core_api.settings.get("auto_login") || core_api.settings.get("keepalive") && lodash_es_invoke(plugins['converse-bosh'], 'enabled')) { + await core_api.user.login(null, null, true); } /** * Triggered once converse.initialize has finished. @@ -72763,10 +76680,10 @@ Object.assign(converse, { */ - converse_core_api.trigger('initialized'); + core_api.trigger('initialized'); - if (converse_core_converse.isTestEnv()) { - return converse_core_converse; + if (core_converse.isTestEnv()) { + return core_converse; } }, @@ -72801,10 +76718,10 @@ Object.assign(converse, { add(name, plugin) { plugin.__name__ = name; - if (converse_core_converse.pluggable.plugins[name] !== undefined) { + if (core_converse.pluggable.plugins[name] !== undefined) { throw new TypeError("Error: plugin with name \"".concat(name, "\" has already been ") + 'registered!'); } else { - converse_core_converse.pluggable.plugins[name] = plugin; + core_converse.pluggable.plugins[name] = plugin; } } @@ -72833,7 +76750,7 @@ Object.assign(converse, { $msg: strophe["c" /* $msg */], $pres: strophe["d" /* $pres */], 'utils': utils_core, - Collection: collection_Collection, + Collection: Collection, CustomElement: element_CustomElement, Model: model_Model, Promise, @@ -72855,28 +76772,31 @@ Object.assign(converse, { * @example window.addEventListener('converse-loaded', () => converse.initialize()); */ -const converse_core_ev = new CustomEvent('converse-loaded'); -converse_core_ev.converse = converse; -window.dispatchEvent(converse_core_ev); -// CONCATENATED MODULE: ./src/headless/converse-adhoc.js +const core_ev = new CustomEvent('converse-loaded', { + 'detail': { + converse + } +}); +window.dispatchEvent(core_ev); +// CONCATENATED MODULE: ./src/headless/plugins/adhoc.js const { - Strophe: converse_adhoc_Strophe + Strophe: adhoc_Strophe } = converse.env; -let converse_adhoc_converse, converse_adhoc_api; +let adhoc_converse, adhoc_api; -converse_adhoc_Strophe.addNamespace('ADHOC', 'http://jabber.org/protocol/commands'); +adhoc_Strophe.addNamespace('ADHOC', 'http://jabber.org/protocol/commands'); function parseForCommands(stanza) { - const items = sizzle_default()("query[xmlns=\"".concat(converse_adhoc_Strophe.NS.DISCO_ITEMS, "\"][node=\"").concat(converse_adhoc_Strophe.NS.ADHOC, "\"] item"), stanza); + const items = sizzle_default()("query[xmlns=\"".concat(adhoc_Strophe.NS.DISCO_ITEMS, "\"][node=\"").concat(adhoc_Strophe.NS.ADHOC, "\"] item"), stanza); return items.map(utils_stanza.getAttributes); } -const adhoc_api = { +const adhoc_adhoc_api = { /** * The XEP-0050 Ad-Hoc Commands API * @@ -72894,7 +76814,7 @@ const adhoc_api = { let commands = []; try { - commands = parseForCommands(await converse_adhoc_api.disco.items(to_jid, converse_adhoc_Strophe.NS.ADHOC)); + commands = parseForCommands(await adhoc_api.disco.items(to_jid, adhoc_Strophe.NS.ADHOC)); } catch (e) { if (e === null) { headless_log.error("Error: timeout while fetching ad-hoc commands for ".concat(to_jid)); @@ -72913,15 +76833,36 @@ converse.plugins.add('converse-adhoc', { dependencies: ["converse-disco"], initialize() { - converse_adhoc_converse = this._converse; - converse_adhoc_api = converse_adhoc_converse.api; - Object.assign(converse_adhoc_api, adhoc_api); + adhoc_converse = this._converse; + adhoc_api = adhoc_converse.api; + Object.assign(adhoc_api, adhoc_adhoc_api); + } + +}); +/* harmony default export */ var adhoc = (adhoc_adhoc_api); +// CONCATENATED MODULE: ./src/headless/plugins/chat/model-with-contact.js + + +const model_with_contact_u = converse.env.utils; +const ModelWithContact = model_Model.extend({ + initialize() { + this.rosterContactAdded = model_with_contact_u.getResolveablePromise(); + }, + + async setRosterContact(jid) { + const contact = await core_api.contacts.get(jid); + + if (contact) { + this.contact = contact; + this.set('nickname', contact.get('nickname')); + this.rosterContactAdded.resolve(); + } } }); -/* harmony default export */ var converse_adhoc = (adhoc_api); +/* harmony default export */ var model_with_contact = (ModelWithContact); // EXTERNAL MODULE: ./src/headless/node_modules/filesize/lib/filesize.min.js -var filesize_min = __webpack_require__(128); +var filesize_min = __webpack_require__(169); var filesize_min_default = /*#__PURE__*/__webpack_require__.n(filesize_min); // CONCATENATED MODULE: ./node_modules/lodash-es/_createFind.js @@ -72991,9 +76932,9 @@ function createFind(findIndexFunc) { * _.find(users, 'active'); * // => object for 'barney' */ -var find_find = _createFind(lodash_es_findIndex); +var find = _createFind(lodash_es_findIndex); -/* harmony default export */ var lodash_es_find = (find_find); +/* harmony default export */ var lodash_es_find = (find); // CONCATENATED MODULE: ./node_modules/lodash-es/isMatch.js @@ -73033,12 +76974,7 @@ function isMatch(object, source) { /* harmony default export */ var lodash_es_isMatch = (isMatch); -// CONCATENATED MODULE: ./src/headless/converse-chat.js -/** - * @module converse-chat - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - */ +// CONCATENATED MODULE: ./src/headless/plugins/chat/model.js @@ -73047,1387 +76983,1607 @@ function isMatch(object, source) { const { - $msg: converse_chat_$msg, - Strophe: converse_chat_Strophe, - sizzle: converse_chat_sizzle, - utils + Strophe: model_Strophe, + $msg: model_$msg } = converse.env; -const converse_chat_u = converse.env.utils; -converse.plugins.add('converse-chat', { - /* Optional dependencies are other plugins which might be - * overridden or relied upon, and therefore need to be loaded before - * this plugin. They are called "optional" because they might not be - * available, in which case any overrides applicable to them will be - * ignored. - * - * It's possible however to make optional dependencies non-optional. - * If the setting "strict_plugin_dependencies" is set to true, - * an error will be raised if the plugin is not found. - * - * NB: These plugins need to have already been loaded via require.js. - */ - dependencies: ["converse-chatboxes", "converse-disco"], - - initialize() { - /* The initialize function gets called as soon as the plugin is - * loaded by converse.js's plugin machinery. - */ - const { - __ - } = converse_core_converse; // Configuration values for this plugin - // ==================================== - // Refer to docs/source/configuration.rst for explanations of these - // configuration settings. +const model_u = converse.env.utils; +/** + * Represents an open/ongoing chat conversation. + * + * @class + * @namespace _converse.ChatBox + * @memberOf _converse + */ - converse_core_api.settings.extend({ - 'allow_message_corrections': 'all', - 'allow_message_retraction': 'all', - 'auto_join_private_chats': [], - 'clear_messages_on_reconnection': false, - 'filter_by_resource': false, - 'send_chat_state_notifications': true - }); - const ModelWithContact = model_Model.extend({ - initialize() { - this.rosterContactAdded = converse_chat_u.getResolveablePromise(); - }, +const ChatBox = model_with_contact.extend({ + defaults() { + return { + 'bookmarked': false, + 'chat_state': undefined, + 'hidden': core_converse.isUniView() && !core_api.settings.get('singleton'), + 'message_type': 'chat', + 'nickname': undefined, + 'num_unread': 0, + 'time_sent': new Date(0).toISOString(), + 'time_opened': this.get('time_opened') || new Date().getTime(), + 'type': core_converse.PRIVATE_CHAT_TYPE, + 'url': '' + }; + }, - async setRosterContact(jid) { - const contact = await converse_core_api.contacts.get(jid); + async initialize() { + this.initialized = model_u.getResolveablePromise(); + model_with_contact.prototype.initialize.apply(this, arguments); + const jid = this.get('jid'); - if (contact) { - this.contact = contact; - this.set('nickname', contact.get('nickname')); - this.rosterContactAdded.resolve(); - } - } + if (!jid) { + // XXX: The `validate` method will prevent this model + // from being persisted if there's no jid, but that gets + // called after model instantiation, so we have to deal + // with invalid models here also. + // This happens when the controlbox is in browser storage, + // but we're in embedded mode. + return; + } + this.set({ + 'box_id': "box-".concat(jid) }); + this.initNotifications(); + this.initMessages(); + + if (this.get('type') === core_converse.PRIVATE_CHAT_TYPE) { + this.presence = core_converse.presences.findWhere({ + 'jid': jid + }) || core_converse.presences.create({ + 'jid': jid + }); + await this.setRosterContact(jid); + } + + this.on('change:chat_state', this.sendChatState, this); + await this.fetchMessages(); /** - * Represents a non-MUC message. These can be either `chat` messages or - * `headline` messages. - * @class - * @namespace _converse.Message - * @memberOf _converse - * @example const msg = new _converse.Message({'message': 'hello world!'}); + * Triggered once a {@link _converse.ChatBox} has been created and initialized. + * @event _converse#chatBoxInitialized + * @type { _converse.ChatBox} + * @example _converse.api.listen.on('chatBoxInitialized', model => { ... }); */ - converse_core_converse.Message = ModelWithContact.extend({ - defaults() { - return { - 'msgid': converse_chat_u.getUniqueId(), - 'time': new Date().toISOString(), - 'is_ephemeral': false - }; - }, - - async initialize() { - if (!this.checkValidity()) { - return; - } + await core_api.trigger('chatBoxInitialized', this, { + 'Synchronous': true + }); + this.initialized.resolve(); + }, - this.initialized = converse_chat_u.getResolveablePromise(); + getMessagesCollection() { + return new core_converse.Messages(); + }, - if (this.get('type') === 'chat') { - ModelWithContact.prototype.initialize.apply(this, arguments); - this.setRosterContact(converse_chat_Strophe.getBareJidFromJid(this.get('from'))); - } + getMessagesCacheKey() { + return "converse.messages-".concat(this.get('jid'), "-").concat(core_converse.bare_jid); + }, - if (this.get('file')) { - this.on('change:put', this.uploadFile, this); - } + initMessages() { + this.messages = this.getMessagesCollection(); + this.messages.fetched = model_u.getResolveablePromise(); + this.messages.fetched.then(() => { + /** + * Triggered whenever a `_converse.ChatBox` instance has fetched its messages from + * `sessionStorage` but **NOT** from the server. + * @event _converse#afterMessagesFetched + * @type {_converse.ChatBoxView | _converse.ChatRoomView} + * @example _converse.api.listen.on('afterMessagesFetched', view => { ... }); + */ + core_api.trigger('afterMessagesFetched', this); + }); + this.messages.chatbox = this; + this.messages.browserStorage = core_converse.createStore(this.getMessagesCacheKey()); + this.listenTo(this.messages, 'change:upload', message => { + if (message.get('upload') === core_converse.SUCCESS) { + core_api.send(this.createMessageStanza(message)); + } + }); + }, - this.setTimerForEphemeralMessage(); - /** - * Triggered once a {@link _converse.Message} has been created and initialized. - * @event _converse#messageInitialized - * @type { _converse.Message} - * @example _converse.api.listen.on('messageInitialized', model => { ... }); - */ + initNotifications() { + this.notifications = new model_Model(); + }, - await converse_core_api.trigger('messageInitialized', this, { - 'Synchronous': true - }); - this.initialized.resolve(); - }, + afterMessagesFetched() { + /** + * Triggered whenever a `_converse.ChatBox` instance has fetched its messages from + * `sessionStorage` but **NOT** from the server. + * @event _converse#afterMessagesFetched + * @type {_converse.ChatBox | _converse.ChatRoom} + * @example _converse.api.listen.on('afterMessagesFetched', view => { ... }); + */ + core_api.trigger('afterMessagesFetched', this); + }, - /** - * Sets an auto-destruct timer for this message, if it's is_ephemeral. - * @private - * @method _converse.Message#setTimerForEphemeralMessage - * @returns { Boolean } - Indicates whether the message is - * ephemeral or not, and therefore whether the timer was set or not. - */ - setTimerForEphemeralMessage() { - const setTimer = () => { - this.ephemeral_timer = window.setTimeout(this.safeDestroy.bind(this), 10000); - }; + fetchMessages() { + if (this.messages.fetched_flag) { + headless_log.info("Not re-fetching messages for ".concat(this.get('jid'))); + return; + } - if (this.isEphemeral()) { - setTimer(); - return true; - } else { - this.on('change:is_ephemeral', () => this.isEphemeral() ? setTimer() : clearTimeout(this.ephemeral_timer)); - return false; - } + this.messages.fetched_flag = true; + const resolve = this.messages.fetched.resolve; + this.messages.fetch({ + 'add': true, + 'success': () => { + this.afterMessagesFetched(); + resolve(); }, + 'error': () => { + this.afterMessagesFetched(); + resolve(); + } + }); + return this.messages.fetched; + }, - checkValidity() { - if (Object.keys(this.attributes).length === 3) { - // XXX: This is an empty message with only the 3 default values. - // This seems to happen when saving a newly created message - // fails for some reason. - // TODO: This is likely fixable by setting `wait` when - // creating messages. See the wait-for-messages branch. - this.validationError = "Empty message"; - this.safeDestroy(); - return false; - } + async handleErrorMessageStanza(stanza) { + const { + __ + } = core_converse; + const attrs = await utils_stanza.parseMessage(stanza, core_converse); - return true; - }, + if (!(await this.shouldShowErrorMessage(attrs))) { + return; + } - /** - * Determines whether this messsage may be retracted by the current user. - * @private - * @method _converse.Messages#mayBeRetracted - * @returns { Boolean } - */ - mayBeRetracted() { - const is_own_message = this.get('sender') === 'me'; - return is_own_message && ['all', 'own'].includes(converse_core_api.settings.get('allow_message_retraction')); - }, + const message = this.getMessageReferencedByError(attrs); - safeDestroy() { - try { - this.destroy(); - } catch (e) { - headless_log.error(e); - } - }, + if (message) { + const new_attrs = { + 'error': attrs.error, + 'error_condition': attrs.error_condition, + 'error_text': attrs.error_text, + 'error_type': attrs.error_type, + 'editable': false + }; - isEphemeral() { - return this.get('is_ephemeral'); - }, + if (attrs.msgid === message.get('retraction_id')) { + // The error message refers to a retraction + new_attrs.retraction_id = undefined; - getDisplayName() { - if (this.get('type') === 'groupchat') { - return this.get('nick'); - } else if (this.contact) { - return this.contact.getDisplayName(); - } else if (this.vcard) { - return this.vcard.getDisplayName(); + if (!attrs.error) { + if (attrs.error_condition === 'forbidden') { + new_attrs.error = __("You're not allowed to retract your message."); + } else { + new_attrs.error = __('Sorry, an error occurred while trying to retract your message.'); + } + } + } else if (!attrs.error) { + if (attrs.error_condition === 'forbidden') { + new_attrs.error = __("You're not allowed to send a message."); } else { - return this.get('from'); + new_attrs.error = __('Sorry, an error occurred while trying to send your message.'); } - }, + } - getMessageText() { - if (this.get('is_encrypted')) { - return this.get('plaintext') || this.get('body') || __('Undecryptable OMEMO message'); - } + message.save(new_attrs); + } else { + this.createMessage(attrs); + } + }, - return this.get('message'); - }, + /** + * Queue an incoming `chat` message stanza for processing. + * @async + * @private + * @method _converse.ChatRoom#queueMessage + * @param { Promise<MessageAttributes> } attrs - A promise which resolves to the message attributes + */ + queueMessage(attrs) { + this.msg_chain = (this.msg_chain || this.messages.fetched).then(() => this.onMessage(attrs)).catch(e => headless_log.error(e)); + return this.msg_chain; + }, - isMeCommand() { - const text = this.getMessageText(); + /** + * @async + * @private + * @method _converse.ChatRoom#onMessage + * @param { MessageAttributes } attrs_promse - A promise which resolves to the message attributes. + */ + async onMessage(attrs) { + attrs = await attrs; - if (!text) { - return false; - } + if (model_u.isErrorObject(attrs)) { + attrs.stanza && headless_log.error(attrs.stanza); + return headless_log.error(attrs.message); + } - return text.startsWith('/me '); - }, + const message = this.getDuplicateMessage(attrs); - sendSlotRequestStanza() { - /* Send out an IQ stanza to request a file upload slot. - * - * https://xmpp.org/extensions/xep-0363.html#request - */ - if (!this.file) { - return Promise.reject(new Error("file is undefined")); - } + if (message) { + this.updateMessage(message, attrs); + } else if (!this.handleReceipt(attrs) && !this.handleChatMarker(attrs) && !(await this.handleRetraction(attrs))) { + this.setEditable(attrs, attrs.time); - const iq = converse.env.$iq({ - 'from': converse_core_converse.jid, - 'to': this.get('slot_request_url'), - 'type': 'get' - }).c('request', { - 'xmlns': converse_chat_Strophe.NS.HTTPUPLOAD, - 'filename': this.file.name, - 'size': this.file.size, - 'content-type': this.file.type + if (attrs['chat_state'] && attrs.sender === 'them') { + this.notifications.set('chat_state', attrs.chat_state); + } + + if (model_u.shouldCreateMessage(attrs)) { + const msg = this.handleCorrection(attrs) || (await this.createMessage(attrs)); + this.notifications.set({ + 'chat_state': null }); - return converse_core_api.sendIQ(iq); - }, + this.handleUnreadMessage(msg); + } + } + }, - async getRequestSlotURL() { - let stanza; + async clearMessages() { + try { + await this.messages.clearStore(); + } catch (e) { + this.messages.trigger('reset'); + headless_log.error(e); + } finally { + delete this.msg_chain; + delete this.messages.fetched_flag; + this.messages.fetched = model_u.getResolveablePromise(); + } + }, - try { - stanza = await this.sendSlotRequestStanza(); - } catch (e) { - headless_log.error(e); - return this.save({ - 'type': 'error', - 'message': __("Sorry, could not determine upload URL."), - 'is_ephemeral': true - }); - } + async close() { + try { + await new Promise((success, reject) => { + return this.destroy({ + success, + 'error': (m, e) => reject(e) + }); + }); + } catch (e) { + headless_log.error(e); + } finally { + if (core_api.settings.get('clear_messages_on_reconnection')) { + await this.clearMessages(); + } + } + }, - const slot = stanza.querySelector('slot'); + announceReconnection() { + /** + * Triggered whenever a `_converse.ChatBox` instance has reconnected after an outage + * @event _converse#onChatReconnected + * @type {_converse.ChatBox | _converse.ChatRoom} + * @example _converse.api.listen.on('onChatReconnected', chatbox => { ... }); + */ + core_api.trigger('chatReconnected', this); + }, - if (slot) { - this.save({ - 'get': slot.querySelector('get').getAttribute('url'), - 'put': slot.querySelector('put').getAttribute('url') - }); - } else { - return this.save({ - 'type': 'error', - 'message': __("Sorry, could not determine file upload URL."), - 'is_ephemeral': true - }); - } - }, + async onReconnection() { + if (core_api.settings.get('clear_messages_on_reconnection')) { + await this.clearMessages(); + } + + this.announceReconnection(); + }, - uploadFile() { - const xhr = new XMLHttpRequest(); + validate(attrs) { + if (!attrs.jid) { + return 'Ignored ChatBox without JID'; + } - xhr.onreadystatechange = () => { - if (xhr.readyState === XMLHttpRequest.DONE) { - headless_log.info("Status: " + xhr.status); + const room_jids = core_converse.auto_join_rooms.map(s => lodash_es_isObject(s) ? s.jid : s); - if (xhr.status === 200 || xhr.status === 201) { - this.save({ - 'upload': converse_core_converse.SUCCESS, - 'oob_url': this.get('get'), - 'message': this.get('get') - }); - } else { - xhr.onerror(); - } - } - }; + const auto_join = core_api.settings.get('auto_join_private_chats').concat(room_jids); - xhr.upload.addEventListener("progress", evt => { - if (evt.lengthComputable) { - this.set('progress', evt.loaded / evt.total); - } - }, false); + if (core_api.settings.get("singleton") && !auto_join.includes(attrs.jid) && !core_api.settings.get('auto_join_on_invite')) { + const msg = "".concat(attrs.jid, " is not allowed because singleton is true and it's not being auto_joined"); + headless_log.warn(msg); + return msg; + } + }, - xhr.onerror = () => { - let message; + getDisplayName() { + if (this.contact) { + return this.contact.getDisplayName(); + } else if (this.vcard) { + return this.vcard.getDisplayName(); + } else { + return this.get('jid'); + } + }, - if (xhr.responseText) { - message = __('Sorry, could not succesfully upload your file. Your server’s response: "%1$s"', xhr.responseText); - } else { - message = __('Sorry, could not succesfully upload your file.'); - } + async createMessageFromError(error) { + if (error instanceof core_converse.TimeoutError) { + const msg = await this.createMessage({ + 'type': 'error', + 'message': error.message, + 'retry_event_id': error.retry_event_id + }); + msg.error = error; + } + }, - this.save({ - 'type': 'error', - 'upload': converse_core_converse.FAILURE, - 'message': message, - 'is_ephemeral': true - }); - }; + getOldestMessage() { + for (let i = 0; i < this.messages.length; i++) { + const message = this.messages.at(i); - xhr.open('PUT', this.get('put'), true); - xhr.setRequestHeader("Content-type", this.file.type); - xhr.send(this.file); + if (message.get('type') === this.get('message_type')) { + return message; } + } + }, - }); - converse_core_converse.Messages = collection_Collection.extend({ - model: converse_core_converse.Message, - comparator: 'time' - }); - /** - * Represents an open/ongoing chat conversation. - * - * @class - * @namespace _converse.ChatBox - * @memberOf _converse - */ + getMostRecentMessage() { + for (let i = this.messages.length - 1; i >= 0; i--) { + const message = this.messages.at(i); - converse_core_converse.ChatBox = ModelWithContact.extend({ - messagesCollection: converse_core_converse.Messages, + if (message.get('type') === this.get('message_type')) { + return message; + } + } + }, - defaults() { - return { - 'bookmarked': false, - 'chat_state': undefined, - 'hidden': converse_core_converse.isUniView() && !converse_core_api.settings.get('singleton'), - 'message_type': 'chat', - 'nickname': undefined, - 'num_unread': 0, - 'time_sent': new Date(0).toISOString(), - 'time_opened': this.get('time_opened') || new Date().getTime(), - 'type': converse_core_converse.PRIVATE_CHAT_TYPE, - 'url': '' - }; - }, + getUpdatedMessageAttributes(message, attrs) { + // Filter the attrs object, restricting it to only the `is_archived` key. + return (({ + is_archived + }) => ({ + is_archived + }))(attrs); + }, - async initialize() { - this.initialized = converse_chat_u.getResolveablePromise(); - ModelWithContact.prototype.initialize.apply(this, arguments); - const jid = this.get('jid'); + updateMessage(message, attrs) { + const new_attrs = this.getUpdatedMessageAttributes(message, attrs); + new_attrs && message.save(new_attrs); + }, - if (!jid) { - // XXX: The `validate` method will prevent this model - // from being persisted if there's no jid, but that gets - // called after model instantiation, so we have to deal - // with invalid models here also. - // This happens when the controlbox is in browser storage, - // but we're in embedded mode. - return; - } + /** + * Mutator for setting the chat state of this chat session. + * Handles clearing of any chat state notification timeouts and + * setting new ones if necessary. + * Timeouts are set when the state being set is COMPOSING or PAUSED. + * After the timeout, COMPOSING will become PAUSED and PAUSED will become INACTIVE. + * See XEP-0085 Chat State Notifications. + * @private + * @method _converse.ChatBox#setChatState + * @param { string } state - The chat state (consts ACTIVE, COMPOSING, PAUSED, INACTIVE, GONE) + */ + setChatState(state, options) { + if (this.chat_state_timeout !== undefined) { + window.clearTimeout(this.chat_state_timeout); + delete this.chat_state_timeout; + } - this.set({ - 'box_id': "box-".concat(jid) - }); - this.initNotifications(); - this.initMessages(); + if (state === core_converse.COMPOSING) { + this.chat_state_timeout = window.setTimeout(this.setChatState.bind(this), core_converse.TIMEOUTS.PAUSED, core_converse.PAUSED); + } else if (state === core_converse.PAUSED) { + this.chat_state_timeout = window.setTimeout(this.setChatState.bind(this), core_converse.TIMEOUTS.INACTIVE, core_converse.INACTIVE); + } - if (this.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { - this.presence = converse_core_converse.presences.findWhere({ - 'jid': jid - }) || converse_core_converse.presences.create({ - 'jid': jid - }); - await this.setRosterContact(jid); - } + this.set('chat_state', state, options); + return this; + }, - this.on('change:chat_state', this.sendChatState, this); - await this.fetchMessages(); - /** - * Triggered once a {@link _converse.ChatBox} has been created and initialized. - * @event _converse#chatBoxInitialized - * @type { _converse.ChatBox} - * @example _converse.api.listen.on('chatBoxInitialized', model => { ... }); - */ + /** + * Given an error `<message>` stanza's attributes, find the saved message model which is + * referenced by that error. + * @param { Object } attrs + */ + getMessageReferencedByError(attrs) { + const id = attrs.msgid; + return id && this.messages.models.find(m => [m.get('msgid'), m.get('retraction_id')].includes(id)); + }, - await converse_core_api.trigger('chatBoxInitialized', this, { - 'Synchronous': true - }); - this.initialized.resolve(); - }, + /** + * @private + * @method _converse.ChatBox#shouldShowErrorMessage + * @returns {boolean} + */ + shouldShowErrorMessage(attrs) { + const msg = this.getMessageReferencedByError(attrs); - getMessagesCacheKey() { - return "converse.messages-".concat(this.get('jid'), "-").concat(converse_core_converse.bare_jid); - }, + if (!msg && !attrs.body) { + // If the error refers to a message not included in our store, + // and it doesn't have a <body> tag, we assume that this was a + // CSI message (which we don't store). + // See https://github.com/conversejs/converse.js/issues/1317 + return; + } // Gets overridden in ChatRoom - initMessages() { - this.messages = new this.messagesCollection(); - this.messages.chatbox = this; - this.messages.browserStorage = converse_core_converse.createStore(this.getMessagesCacheKey()); - this.listenTo(this.messages, 'change:upload', message => { - if (message.get('upload') === converse_core_converse.SUCCESS) { - converse_core_api.send(this.createMessageStanza(message)); - } - }); - }, - initNotifications() { - this.notifications = new model_Model(); - }, + return true; + }, - afterMessagesFetched() { - /** - * Triggered whenever a `_converse.ChatBox` instance has fetched its messages from - * `sessionStorage` but **NOT** from the server. - * @event _converse#afterMessagesFetched - * @type {_converse.ChatBox | _converse.ChatRoom} - * @example _converse.api.listen.on('afterMessagesFetched', view => { ... }); - */ - converse_core_api.trigger('afterMessagesFetched', this); - }, + isSameUser(jid1, jid2) { + return model_u.isSameBareJID(jid1, jid2); + }, - fetchMessages() { - if (this.messages.fetched) { - headless_log.info("Not re-fetching messages for ".concat(this.get('jid'))); - return; - } + /** + * Looks whether we already have a retraction for this + * incoming message. If so, it's considered "dangling" because it + * probably hasn't been applied to anything yet, given that the + * relevant message is only coming in now. + * @private + * @method _converse.ChatBox#findDanglingRetraction + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMessage} + * @returns { _converse.Message } + */ + findDanglingRetraction(attrs) { + if (!attrs.origin_id || !this.messages.length) { + return null; + } // Only look for dangling retractions if there are newer + // messages than this one, since retractions come after. - this.messages.fetched = converse_chat_u.getResolveablePromise(); - const resolve = this.messages.fetched.resolve; - this.messages.fetch({ - 'add': true, - 'success': () => { - this.afterMessagesFetched(); - resolve(); - }, - 'error': () => { - this.afterMessagesFetched(); - resolve(); - } - }); - return this.messages.fetched; - }, - async handleErrorMessageStanza(stanza) { - const attrs = await utils_stanza.parseMessage(stanza, converse_core_converse); + if (this.messages.last().get('time') > attrs.time) { + // Search from latest backwards + const messages = Array.from(this.messages.models); + messages.reverse(); + return messages.find(({ + attributes + }) => attributes.retracted_id === attrs.origin_id && attributes.from === attrs.from && !attributes.moderated_by); + } + }, - if (!(await this.shouldShowErrorMessage(attrs))) { - return; - } + /** + * Handles message retraction based on the passed in attributes. + * @private + * @method _converse.ChatBox#handleRetraction + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMessage} + * @returns { Boolean } Returns `true` or `false` depending on + * whether a message was retracted or not. + */ + async handleRetraction(attrs) { + const RETRACTION_ATTRIBUTES = ['retracted', 'retracted_id', 'editable']; - const message = this.getMessageReferencedByError(attrs); + if (attrs.retracted) { + if (attrs.is_tombstone) { + return false; + } - if (message) { - const new_attrs = { - 'error': attrs.error, - 'error_condition': attrs.error_condition, - 'error_text': attrs.error_text, - 'error_type': attrs.error_type, - 'editable': false - }; + const message = this.messages.findWhere({ + 'origin_id': attrs.retracted_id, + 'from': attrs.from + }); - if (attrs.msgid === message.get('retraction_id')) { - // The error message refers to a retraction - new_attrs.retraction_id = undefined; + if (!message) { + attrs['dangling_retraction'] = true; + await this.createMessage(attrs); + return true; + } - if (!attrs.error) { - if (attrs.error_condition === 'forbidden') { - new_attrs.error = __("You're not allowed to retract your message."); - } else { - new_attrs.error = __('Sorry, an error occurred while trying to retract your message.'); - } - } - } else if (!attrs.error) { - if (attrs.error_condition === 'forbidden') { - new_attrs.error = __("You're not allowed to send a message."); - } else { - new_attrs.error = __('Sorry, an error occurred while trying to send your message.'); - } - } + message.save(lodash_es_pick(attrs, RETRACTION_ATTRIBUTES)); + return true; + } else { + // Check if we have dangling retraction + const message = this.findDanglingRetraction(attrs); - message.save(new_attrs); - } else { - this.createMessage(attrs); - } - }, + if (message) { + const retraction_attrs = lodash_es_pick(message.attributes, RETRACTION_ATTRIBUTES); + const new_attrs = Object.assign({ + 'dangling_retraction': false + }, attrs, retraction_attrs); + delete new_attrs['id']; // Delete id, otherwise a new cache entry gets created - /** - * Queue an incoming `chat` message stanza for processing. - * @async - * @private - * @method _converse.ChatRoom#queueMessage - * @param { Promise<MessageAttributes> } attrs - A promise which resolves to the message attributes - */ - queueMessage(attrs) { - this.msg_chain = this.msg_chain || this.messages.fetched; - this.msg_chain = this.msg_chain.then(() => this.onMessage(attrs)); - return this.msg_chain; - }, + message.save(new_attrs); + return true; + } + } - /** - * @async - * @private - * @method _converse.ChatRoom#onMessage - * @param { MessageAttributes } attrs_promse - A promise which resolves to the message attributes. - */ - async onMessage(attrs) { - attrs = await attrs; + return false; + }, - if (converse_chat_u.isErrorObject(attrs)) { - attrs.stanza && headless_log.error(attrs.stanza); - return headless_log.error(attrs.message); - } + /** + * Determines whether the passed in message attributes represent a + * message which corrects a previously received message, or an + * older message which has already been corrected. + * In both cases, update the corrected message accordingly. + * @private + * @method _converse.ChatBox#handleCorrection + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMessage} + * @returns { _converse.Message|undefined } Returns the corrected + * message or `undefined` if not applicable. + */ + handleCorrection(attrs) { + if (!attrs.replace_id || !attrs.from) { + return; + } - const message = this.getDuplicateMessage(attrs); + const message = this.messages.findWhere({ + 'msgid': attrs.replace_id, + 'from': attrs.from + }); - if (message) { - this.updateMessage(message, attrs); - } else if (!this.handleReceipt(attrs) && !this.handleChatMarker(attrs) && !(await this.handleRetraction(attrs))) { - this.setEditable(attrs, attrs.time); + if (!message) { + return; + } - if (attrs['chat_state'] && attrs.sender === 'them') { - this.notifications.set('chat_state', attrs.chat_state); - } + const older_versions = message.get('older_versions') || {}; - if (converse_chat_u.shouldCreateMessage(attrs)) { - const msg = this.handleCorrection(attrs) || (await this.createMessage(attrs)); - this.notifications.set({ - 'chat_state': null - }); - this.handleUnreadMessage(msg); - } - } - }, + if (attrs.time < message.get('time') && message.get('edited')) { + // This is an older message which has been corrected afterwards + older_versions[attrs.time] = attrs['message']; + message.save({ + 'older_versions': older_versions + }); + } else { + // This is a correction of an earlier message we already received + if (Object.keys(older_versions).length) { + older_versions[message.get('edited')] = message.get('message'); + } else { + older_versions[message.get('time')] = message.get('message'); + } - async clearMessages() { - try { - await this.messages.clearStore(); - } catch (e) { - this.messages.trigger('reset'); - headless_log.error(e); - } finally { - delete this.msg_chain; - delete this.messages.fetched; - } - }, + attrs = Object.assign(attrs, { + 'older_versions': older_versions + }); + delete attrs['id']; // Delete id, otherwise a new cache entry gets created - async close() { - try { - await new Promise((success, reject) => { - return this.destroy({ - success, - 'error': (m, e) => reject(e) - }); - }); - } catch (e) { - headless_log.error(e); - } finally { - if (converse_core_api.settings.get('clear_messages_on_reconnection')) { - await this.clearMessages(); - } - } - }, + attrs['time'] = message.get('time'); + message.save(attrs); + } - announceReconnection() { - /** - * Triggered whenever a `_converse.ChatBox` instance has reconnected after an outage - * @event _converse#onChatReconnected - * @type {_converse.ChatBox | _converse.ChatRoom} - * @example _converse.api.listen.on('onChatReconnected', chatbox => { ... }); - */ - converse_core_api.trigger('chatReconnected', this); - }, + return message; + }, - async onReconnection() { - if (converse_core_api.settings.get('clear_messages_on_reconnection')) { - await this.clearMessages(); - } + /** + * Returns an already cached message (if it exists) based on the + * passed in attributes map. + * @private + * @method _converse.ChatBox#getDuplicateMessage + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMessage} + * @returns {Promise<_converse.Message>} + */ + getDuplicateMessage(attrs) { + const queries = [...this.getStanzaIdQueryAttrs(attrs), this.getOriginIdQueryAttrs(attrs), this.getMessageBodyQueryAttrs(attrs)].filter(s => s); + const msgs = this.messages.models; + return lodash_es_find(msgs, m => queries.reduce((out, q) => out || lodash_es_isMatch(m.attributes, q), false)); + }, - this.announceReconnection(); - }, + getOriginIdQueryAttrs(attrs) { + return attrs.origin_id && { + 'origin_id': attrs.origin_id, + 'from': attrs.from + }; + }, - validate(attrs) { - if (!attrs.jid) { - return 'Ignored ChatBox without JID'; - } + getStanzaIdQueryAttrs(attrs) { + const keys = Object.keys(attrs).filter(k => k.startsWith('stanza_id ')); + return keys.map(key => { + const by_jid = key.replace(/^stanza_id /, ''); + const query = {}; + query["stanza_id ".concat(by_jid)] = attrs[key]; + return query; + }); + }, - const room_jids = converse_core_converse.auto_join_rooms.map(s => lodash_es_isObject(s) ? s.jid : s); + getMessageBodyQueryAttrs(attrs) { + if (attrs.message && attrs.msgid) { + const query = { + 'from': attrs.from, + 'msgid': attrs.msgid + }; - const auto_join = converse_core_api.settings.get('auto_join_private_chats').concat(room_jids); + if (!attrs.is_encrypted) { + // We can't match the message if it's a reflected + // encrypted message (e.g. via MAM or in a MUC) + query['message'] = attrs.message; + } - if (converse_core_api.settings.get("singleton") && !auto_join.includes(attrs.jid) && !converse_core_api.settings.get('auto_join_on_invite')) { - const msg = "".concat(attrs.jid, " is not allowed because singleton is true and it's not being auto_joined"); - headless_log.warn(msg); - return msg; - } - }, + return query; + } + }, - getDisplayName() { - if (this.contact) { - return this.contact.getDisplayName(); - } else if (this.vcard) { - return this.vcard.getDisplayName(); - } else { - return this.get('jid'); - } - }, + /** + * Retract one of your messages in this chat + * @private + * @method _converse.ChatBoxView#retractOwnMessage + * @param { _converse.Message } message - The message which we're retracting. + */ + retractOwnMessage(message) { + this.sendRetractionMessage(message); + message.save({ + 'retracted': new Date().toISOString(), + 'retracted_id': message.get('origin_id'), + 'retraction_id': message.get('id'), + 'is_ephemeral': true, + 'editable': false + }); + }, - async createMessageFromError(error) { - if (error instanceof converse_core_converse.TimeoutError) { - const msg = await this.createMessage({ - 'type': 'error', - 'message': error.message, - 'retry_event_id': error.retry_event_id - }); - msg.error = error; - } - }, + /** + * Sends a message stanza to retract a message in this chat + * @private + * @method _converse.ChatBox#sendRetractionMessage + * @param { _converse.Message } message - The message which we're retracting. + */ + sendRetractionMessage(message) { + const origin_id = message.get('origin_id'); - getOldestMessage() { - for (let i = 0; i < this.messages.length; i++) { - const message = this.messages.at(i); + if (!origin_id) { + throw new Error("Can't retract message without a XEP-0359 Origin ID"); + } - if (message.get('type') === this.get('message_type')) { - return message; - } - } - }, + const msg = model_$msg({ + 'id': model_u.getUniqueId(), + 'to': this.get('jid'), + 'type': "chat" + }).c('store', { + xmlns: model_Strophe.NS.HINTS + }).up().c("apply-to", { + 'id': origin_id, + 'xmlns': model_Strophe.NS.FASTEN + }).c('retract', { + xmlns: model_Strophe.NS.RETRACT + }); + return core_converse.connection.send(msg); + }, - getMostRecentMessage() { - for (let i = this.messages.length - 1; i >= 0; i--) { - const message = this.messages.at(i); + sendMarkerForMessage(msg) { + if (msg === null || msg === void 0 ? void 0 : msg.get('is_markable')) { + const from_jid = model_Strophe.getBareJidFromJid(msg.get('from')); + this.sendMarker(from_jid, msg.get('msgid'), 'displayed', msg.get('type')); + } + }, - if (message.get('type') === this.get('message_type')) { - return message; - } - } - }, + sendMarker(to_jid, id, type, msg_type) { + const stanza = model_$msg({ + 'from': core_converse.connection.jid, + 'id': model_u.getUniqueId(), + 'to': to_jid, + 'type': msg_type ? msg_type : 'chat' + }).c(type, { + 'xmlns': model_Strophe.NS.MARKERS, + 'id': id + }); + core_api.send(stanza); + }, - getUpdatedMessageAttributes(message, attrs) { - // Filter the attrs object, restricting it to only the `is_archived` key. - return (({ - is_archived - }) => ({ - is_archived - }))(attrs); - }, + handleChatMarker(attrs) { + const to_bare_jid = model_Strophe.getBareJidFromJid(attrs.to); - updateMessage(message, attrs) { - // Overridden in converse-muc and converse-mam - const new_attrs = this.getUpdatedMessageAttributes(message, attrs); + if (to_bare_jid !== core_converse.bare_jid) { + return false; + } - if (attrs) { - message.save(new_attrs); - } - }, + if (attrs.is_markable) { + if (this.contact && !attrs.is_archived && !attrs.is_carbon) { + this.sendMarker(attrs.from, attrs.msgid, 'received'); + } - /** - * Mutator for setting the chat state of this chat session. - * Handles clearing of any chat state notification timeouts and - * setting new ones if necessary. - * Timeouts are set when the state being set is COMPOSING or PAUSED. - * After the timeout, COMPOSING will become PAUSED and PAUSED will become INACTIVE. - * See XEP-0085 Chat State Notifications. - * @private - * @method _converse.ChatBox#setChatState - * @param { string } state - The chat state (consts ACTIVE, COMPOSING, PAUSED, INACTIVE, GONE) - */ - setChatState(state, options) { - if (this.chat_state_timeout !== undefined) { - window.clearTimeout(this.chat_state_timeout); - delete this.chat_state_timeout; - } + return false; + } else if (attrs.marker_id) { + const message = this.messages.findWhere({ + 'msgid': attrs.marker_id + }); + const field_name = "marker_".concat(attrs.marker); - if (state === converse_core_converse.COMPOSING) { - this.chat_state_timeout = window.setTimeout(this.setChatState.bind(this), converse_core_converse.TIMEOUTS.PAUSED, converse_core_converse.PAUSED); - } else if (state === converse_core_converse.PAUSED) { - this.chat_state_timeout = window.setTimeout(this.setChatState.bind(this), converse_core_converse.TIMEOUTS.INACTIVE, converse_core_converse.INACTIVE); - } + if (message && !message.get(field_name)) { + message.save({ + field_name: new Date().toISOString() + }); + } - this.set('chat_state', state, options); - return this; - }, + return true; + } + }, - /** - * Given an error `<message>` stanza's attributes, find the saved message model which is - * referenced by that error. - * @param { Object } attrs - */ - getMessageReferencedByError(attrs) { - const id = attrs.msgid; - return id && this.messages.models.find(m => [m.get('msgid'), m.get('retraction_id')].includes(id)); - }, + sendReceiptStanza(to_jid, id) { + const receipt_stanza = model_$msg({ + 'from': core_converse.connection.jid, + 'id': model_u.getUniqueId(), + 'to': to_jid, + 'type': 'chat' + }).c('received', { + 'xmlns': model_Strophe.NS.RECEIPTS, + 'id': id + }).up().c('store', { + 'xmlns': model_Strophe.NS.HINTS + }).up(); + core_api.send(receipt_stanza); + }, - /** - * @private - * @method _converse.ChatBox#shouldShowErrorMessage - * @returns {boolean} - */ - shouldShowErrorMessage(attrs) { - const msg = this.getMessageReferencedByError(attrs); - - if (!msg && attrs.body === null) { - // If the error refers to a message not included in our store, - // and it doesn't have a <body> tag, we assume that this was a - // CSI message (which we don't store). - // See https://github.com/conversejs/converse.js/issues/1317 - return; - } // Gets overridden in ChatRoom + handleReceipt(attrs) { + if (attrs.sender === 'them') { + if (attrs.is_valid_receipt_request) { + this.sendReceiptStanza(attrs.from, attrs.msgid); + } else if (attrs.receipt_id) { + const message = this.messages.findWhere({ + 'msgid': attrs.receipt_id + }); + if (message && !message.get('received')) { + message.save({ + 'received': new Date().toISOString() + }); + } return true; - }, - - isSameUser(jid1, jid2) { - return converse_chat_u.isSameBareJID(jid1, jid2); - }, + } + } - /** - * Looks whether we already have a retraction for this - * incoming message. If so, it's considered "dangling" because it - * probably hasn't been applied to anything yet, given that the - * relevant message is only coming in now. - * @private - * @method _converse.ChatBox#findDanglingRetraction - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMessage} - * @returns { _converse.Message } - */ - findDanglingRetraction(attrs) { - if (!attrs.origin_id || !this.messages.length) { - return null; - } // Only look for dangling retractions if there are newer - // messages than this one, since retractions come after. + return false; + }, + /** + * Given a {@link _converse.Message} return the XML stanza that represents it. + * @private + * @method _converse.ChatBox#createMessageStanza + * @param { _converse.Message } message - The message object + */ + createMessageStanza(message) { + const stanza = model_$msg({ + 'from': core_converse.connection.jid, + 'to': this.get('jid'), + 'type': this.get('message_type'), + 'id': message.get('edited') && model_u.getUniqueId() || message.get('msgid') + }).c('body').t(message.get('message')).up().c(core_converse.ACTIVE, { + 'xmlns': model_Strophe.NS.CHATSTATES + }).root(); + + if (message.get('type') === 'chat') { + stanza.c('request', { + 'xmlns': model_Strophe.NS.RECEIPTS + }).root(); + } + + if (message.get('is_spoiler')) { + if (message.get('spoiler_hint')) { + stanza.c('spoiler', { + 'xmlns': model_Strophe.NS.SPOILER + }, message.get('spoiler_hint')).root(); + } else { + stanza.c('spoiler', { + 'xmlns': model_Strophe.NS.SPOILER + }).root(); + } + } - if (this.messages.last().get('time') > attrs.time) { - // Search from latest backwards - const messages = Array.from(this.messages.models); - messages.reverse(); - return messages.find(({ - attributes - }) => attributes.retracted_id === attrs.origin_id && attributes.from === attrs.from && !attributes.moderated_by); - } - }, + (message.get('references') || []).forEach(reference => { + const attrs = { + 'xmlns': model_Strophe.NS.REFERENCE, + 'begin': reference.begin, + 'end': reference.end, + 'type': reference.type + }; - /** - * Handles message retraction based on the passed in attributes. - * @private - * @method _converse.ChatBox#handleRetraction - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMessage} - * @returns { Boolean } Returns `true` or `false` depending on - * whether a message was retracted or not. - */ - async handleRetraction(attrs) { - const RETRACTION_ATTRIBUTES = ['retracted', 'retracted_id', 'editable']; + if (reference.uri) { + attrs.uri = reference.uri; + } - if (attrs.retracted) { - if (attrs.is_tombstone) { - return false; - } + stanza.c('reference', attrs).root(); + }); - const message = this.messages.findWhere({ - 'origin_id': attrs.retracted_id, - 'from': attrs.from - }); + if (message.get('oob_url')) { + stanza.c('x', { + 'xmlns': model_Strophe.NS.OUTOFBAND + }).c('url').t(message.get('oob_url')).root(); + } - if (!message) { - attrs['dangling_retraction'] = true; - await this.createMessage(attrs); - return true; - } + if (message.get('edited')) { + stanza.c('replace', { + 'xmlns': model_Strophe.NS.MESSAGE_CORRECT, + 'id': message.get('msgid') + }).root(); + } - message.save(lodash_es_pick(attrs, RETRACTION_ATTRIBUTES)); - return true; - } else { - // Check if we have dangling retraction - const message = this.findDanglingRetraction(attrs); + if (message.get('origin_id')) { + stanza.c('origin-id', { + 'xmlns': model_Strophe.NS.SID, + 'id': message.get('origin_id') + }).root(); + } - if (message) { - const retraction_attrs = lodash_es_pick(message.attributes, RETRACTION_ATTRIBUTES); - const new_attrs = Object.assign({ - 'dangling_retraction': false - }, attrs, retraction_attrs); - delete new_attrs['id']; // Delete id, otherwise a new cache entry gets created + return stanza; + }, - message.save(new_attrs); - return true; - } - } + getOutgoingMessageAttributes(text, spoiler_hint) { + const is_spoiler = this.get('composing_spoiler'); + const origin_id = model_u.getUniqueId(); + const body = text ? model_u.httpToGeoUri(model_u.shortnamesToUnicode(text), core_converse) : undefined; + return { + 'from': core_converse.bare_jid, + 'fullname': core_converse.xmppstatus.get('fullname'), + 'id': origin_id, + 'is_only_emojis': text ? model_u.isOnlyEmojis(text) : false, + 'jid': this.get('jid'), + 'message': body, + 'msgid': origin_id, + 'nickname': this.get('nickname'), + 'sender': 'me', + 'spoiler_hint': is_spoiler ? spoiler_hint : undefined, + 'time': new Date().toISOString(), + 'type': this.get('message_type'), + body, + is_spoiler, + origin_id + }; + }, - return false; - }, + /** + * Responsible for setting the editable attribute of messages. + * If api.settings.get('allow_message_corrections') is "last", then only the last + * message sent from me will be editable. If set to "all" all messages + * will be editable. Otherwise no messages will be editable. + * @method _converse.ChatBox#setEditable + * @memberOf _converse.ChatBox + * @param { Object } attrs An object containing message attributes. + * @param { String } send_time - time when the message was sent + */ + setEditable(attrs, send_time) { + if (attrs.is_headline || model_u.isEmptyMessage(attrs) || attrs.sender !== 'me') { + return; + } - /** - * Determines whether the passed in message attributes represent a - * message which corrects a previously received message, or an - * older message which has already been corrected. - * In both cases, update the corrected message accordingly. - * @private - * @method _converse.ChatBox#handleCorrection - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMessage} - * @returns { _converse.Message|undefined } Returns the corrected - * message or `undefined` if not applicable. - */ - handleCorrection(attrs) { - if (!attrs.replace_id || !attrs.from) { - return; - } + if (core_api.settings.get('allow_message_corrections') === 'all') { + attrs.editable = !(attrs.file || attrs.retracted || 'oob_url' in attrs); + } else if (core_api.settings.get('allow_message_corrections') === 'last' && send_time > this.get('time_sent')) { + this.set({ + 'time_sent': send_time + }); + const msg = this.messages.findWhere({ + 'editable': true + }); - const message = this.messages.findWhere({ - 'msgid': attrs.replace_id, - 'from': attrs.from + if (msg) { + msg.save({ + 'editable': false }); + } - if (!message) { - return; - } - - const older_versions = message.get('older_versions') || {}; + attrs.editable = !(attrs.file || attrs.retracted || 'oob_url' in attrs); + } + }, - if (attrs.time < message.get('time') && message.get('edited')) { - // This is an older message which has been corrected afterwards - older_versions[attrs.time] = attrs['message']; - message.save({ - 'older_versions': older_versions - }); - } else { - // This is a correction of an earlier message we already received - older_versions[message.get('time')] = message.get('message'); - attrs = Object.assign(attrs, { - 'older_versions': older_versions - }); - delete attrs['id']; // Delete id, otherwise a new cache entry gets created + /** + * Queue the creation of a message, to make sure that we don't run + * into a race condition whereby we're creating a new message + * before the collection has been fetched. + * @async + * @private + * @method _converse.ChatRoom#queueMessageCreation + * @param { Object } attrs + */ + async createMessage(attrs, options) { + attrs.time = attrs.time || new Date().toISOString(); + await this.messages.fetched; + const p = this.messages.create(attrs, Object.assign({ + 'wait': true, + 'promise': true + }, options)); + return p; + }, - message.save(attrs); - } + /** + * Responsible for sending off a text message inside an ongoing chat conversation. + * @private + * @method _converse.ChatBox#sendMessage + * @memberOf _converse.ChatBox + * @param { String } text - The chat message text + * @param { String } spoiler_hint - An optional hint, if the message being sent is a spoiler + * @returns { _converse.Message } + * @example + * const chat = api.chats.get('buddy1@example.com'); + * chat.sendMessage('hello world'); + */ + async sendMessage(text, spoiler_hint) { + const attrs = this.getOutgoingMessageAttributes(text, spoiler_hint); + let message = this.messages.findWhere('correcting'); - return message; - }, + if (message) { + const older_versions = message.get('older_versions') || {}; + older_versions[message.get('time')] = message.get('message'); + message.save({ + 'correcting': false, + 'edited': new Date().toISOString(), + 'message': attrs.message, + 'older_versions': older_versions, + 'references': attrs.references, + 'is_only_emojis': attrs.is_only_emojis, + 'origin_id': model_u.getUniqueId(), + 'received': undefined + }); + } else { + this.setEditable(attrs, new Date().toISOString()); + message = await this.createMessage(attrs); + } - /** - * Returns an already cached message (if it exists) based on the - * passed in attributes map. - * @private - * @method _converse.ChatBox#getDuplicateMessage - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMessage} - * @returns {Promise<_converse.Message>} - */ - getDuplicateMessage(attrs) { - const queries = [...this.getStanzaIdQueryAttrs(attrs), this.getOriginIdQueryAttrs(attrs), this.getMessageBodyQueryAttrs(attrs)].filter(s => s); - const msgs = this.messages.models; - return lodash_es_find(msgs, m => queries.reduce((out, q) => out || lodash_es_isMatch(m.attributes, q), false)); - }, + core_api.send(this.createMessageStanza(message)); + /** + * Triggered when a message is being sent out + * @event _converse#sendMessage + * @type { Object } + * @param { Object } data + * @property { (_converse.ChatBox | _converse.ChatRoom) } data.chatbox + * @property { (_converse.Message | _converse.ChatRoomMessage) } data.message + */ - getOriginIdQueryAttrs(attrs) { - return attrs.origin_id && { - 'origin_id': attrs.origin_id, - 'from': attrs.from - }; - }, + core_api.trigger('sendMessage', { + 'chatbox': this, + message + }); + return message; + }, - getStanzaIdQueryAttrs(attrs) { - const keys = Object.keys(attrs).filter(k => k.startsWith('stanza_id ')); - return keys.map(key => { - const by_jid = key.replace(/^stanza_id /, ''); - const query = {}; - query["stanza_id ".concat(by_jid)] = attrs[key]; - return query; - }); - }, + /** + * Sends a message with the current XEP-0085 chat state of the user + * as taken from the `chat_state` attribute of the {@link _converse.ChatBox}. + * @private + * @method _converse.ChatBox#sendChatState + */ + sendChatState() { + if (core_api.settings.get('send_chat_state_notifications') && this.get('chat_state')) { + const allowed = core_api.settings.get('send_chat_state_notifications'); - getMessageBodyQueryAttrs(attrs) { - if (attrs.message && attrs.msgid) { - const query = { - 'from': attrs.from, - 'msgid': attrs.msgid - }; + if (Array.isArray(allowed) && !allowed.includes(this.get('chat_state'))) { + return; + } - if (!attrs.is_encrypted) { - // We can't match the message if it's a reflected - // encrypted message (e.g. via MAM or in a MUC) - query['message'] = attrs.message; - } + core_api.send(model_$msg({ + 'id': model_u.getUniqueId(), + 'to': this.get('jid'), + 'type': 'chat' + }).c(this.get('chat_state'), { + 'xmlns': model_Strophe.NS.CHATSTATES + }).up().c('no-store', { + 'xmlns': model_Strophe.NS.HINTS + }).up().c('no-permanent-store', { + 'xmlns': model_Strophe.NS.HINTS + })); + } + }, - return query; - } - }, + async sendFiles(files) { + var _maxFileSize; - /** - * Retract one of your messages in this chat - * @private - * @method _converse.ChatBoxView#retractOwnMessage - * @param { _converse.Message } message - The message which we're retracting. - */ - retractOwnMessage(message) { - this.sendRetractionMessage(message); - message.save({ - 'retracted': new Date().toISOString(), - 'retracted_id': message.get('origin_id'), - 'retraction_id': message.get('id'), - 'is_ephemeral': true, - 'editable': false - }); - }, + const { + __ + } = core_converse; + const result = await core_api.disco.features.get(model_Strophe.NS.HTTPUPLOAD, core_converse.domain); + const item = result.pop(); + + if (!item) { + this.createMessage({ + 'message': __("Sorry, looks like file upload is not supported by your server."), + 'type': 'error', + 'is_ephemeral': true + }); + return; + } - /** - * Sends a message stanza to retract a message in this chat - * @private - * @method _converse.ChatBox#sendRetractionMessage - * @param { _converse.Message } message - The message which we're retracting. - */ - sendRetractionMessage(message) { - const origin_id = message.get('origin_id'); + const data = item.dataforms.where({ + 'FORM_TYPE': { + 'value': model_Strophe.NS.HTTPUPLOAD, + 'type': "hidden" + } + }).pop(); + const max_file_size = window.parseInt((_maxFileSize = ((data === null || data === void 0 ? void 0 : data.attributes) || {})['max-file-size']) === null || _maxFileSize === void 0 ? void 0 : _maxFileSize.value); + const slot_request_url = item === null || item === void 0 ? void 0 : item.id; - if (!origin_id) { - throw new Error("Can't retract message without a XEP-0359 Origin ID"); - } + if (!slot_request_url) { + this.createMessage({ + 'message': __("Sorry, looks like file upload is not supported by your server."), + 'type': 'error', + 'is_ephemeral': true + }); + return; + } - const msg = converse_chat_$msg({ - 'id': converse_chat_u.getUniqueId(), - 'to': this.get('jid'), - 'type': "chat" - }).c('store', { - xmlns: converse_chat_Strophe.NS.HINTS - }).up().c("apply-to", { - 'id': origin_id, - 'xmlns': converse_chat_Strophe.NS.FASTEN - }).c('retract', { - xmlns: converse_chat_Strophe.NS.RETRACT + Array.from(files).forEach(async file => { + if (!window.isNaN(max_file_size) && window.parseInt(file.size) > max_file_size) { + return this.createMessage({ + 'message': __('The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.', file.name, filesize_min_default()(max_file_size)), + 'type': 'error', + 'is_ephemeral': true }); - return converse_core_converse.connection.send(msg); - }, + } else { + const attrs = Object.assign(this.getOutgoingMessageAttributes(), { + 'file': true, + 'progress': 0, + 'slot_request_url': slot_request_url + }); + this.setEditable(attrs, new Date().toISOString()); + const message = await this.createMessage(attrs, { + 'silent': true + }); + message.file = file; + this.messages.trigger('add', message); + message.getRequestSlotURL(); + } + }); + }, - sendMarkerForMessage(msg) { - if (msg === null || msg === void 0 ? void 0 : msg.get('is_markable')) { - const from_jid = converse_chat_Strophe.getBareJidFromJid(msg.get('from')); - this.sendMarker(from_jid, msg.get('msgid'), 'displayed', msg.get('type')); - } - }, + maybeShow(force) { + if (force) { + if (core_converse.isUniView()) { + // We only have one chat visible at any one time. + // So before opening a chat, we make sure all other chats are hidden. + const filter = c => !c.get('hidden') && c.get('jid') !== this.get('jid') && c.get('id') !== 'controlbox'; - sendMarker(to_jid, id, type, msg_type) { - const stanza = converse_chat_$msg({ - 'from': converse_core_converse.connection.jid, - 'id': converse_chat_u.getUniqueId(), - 'to': to_jid, - 'type': msg_type ? msg_type : 'chat' - }).c(type, { - 'xmlns': converse_chat_Strophe.NS.MARKERS, - 'id': id - }); - converse_core_api.send(stanza); - }, + core_converse.chatboxes.filter(filter).forEach(c => model_u.safeSave(c, { + 'hidden': true + })); + } - handleChatMarker(attrs) { - const to_bare_jid = converse_chat_Strophe.getBareJidFromJid(attrs.to); + model_u.safeSave(this, { + 'hidden': false + }); + } - if (to_bare_jid !== converse_core_converse.bare_jid) { - return false; - } + if (core_converse.isUniView() && this.get('hidden')) { + return; + } else { + return this.trigger("show"); + } + }, - if (attrs.is_markable) { - if (this.contact && !attrs.is_archived && !attrs.is_carbon) { - this.sendMarker(attrs.from, attrs.msgid, 'received'); - } + /** + * Indicates whether the chat is hidden and therefore + * whether a newly received message will be visible + * to the user or not. + * @returns {boolean} + */ + isHidden() { + // Note: This methods gets overridden by converse-minimize + const hidden = core_converse.isUniView() && this.get('hidden'); + return hidden || this.isScrolledUp() || core_converse.windowState === 'hidden'; + }, - return false; - } else if (attrs.marker_id) { - const message = this.messages.findWhere({ - 'msgid': attrs.marker_id - }); - const field_name = "marker_".concat(attrs.marker); + /** + * Given a newly received {@link _converse.Message} instance, + * update the unread counter if necessary. + * @private + * @param {_converse.Message} message + */ + handleUnreadMessage(message) { + if (!(message === null || message === void 0 ? void 0 : message.get('body'))) { + return; + } - if (message && !message.get(field_name)) { - message.save({ - field_name: new Date().toISOString() - }); - } + if (model_u.isNewMessage(message)) { + if (this.isHidden()) { + const settings = { + 'num_unread': this.get('num_unread') + 1 + }; - return true; + if (this.get('num_unread') === 0) { + settings['first_unread_id'] = message.get('id'); } - }, - sendReceiptStanza(to_jid, id) { - const receipt_stanza = converse_chat_$msg({ - 'from': converse_core_converse.connection.jid, - 'id': converse_chat_u.getUniqueId(), - 'to': to_jid, - 'type': 'chat' - }).c('received', { - 'xmlns': converse_chat_Strophe.NS.RECEIPTS, - 'id': id - }).up().c('store', { - 'xmlns': converse_chat_Strophe.NS.HINTS - }).up(); - converse_core_api.send(receipt_stanza); - }, + this.save(settings); + } else { + this.sendMarkerForMessage(message); + } + } + }, - handleReceipt(attrs) { - if (attrs.sender === 'them') { - if (attrs.is_valid_receipt_request) { - this.sendReceiptStanza(attrs.from, attrs.msgid); - } else if (attrs.receipt_id) { - const message = this.messages.findWhere({ - 'msgid': attrs.receipt_id - }); + clearUnreadMsgCounter() { + if (this.get('num_unread') > 0) { + this.sendMarkerForMessage(this.messages.last()); + } - if (message && !message.get('received')) { - message.save({ - 'received': new Date().toISOString() - }); - } + model_u.safeSave(this, { + 'num_unread': 0 + }); + }, - return true; - } - } + isScrolledUp() { + return this.get('scrolled', true); + } - return false; - }, +}); +/* harmony default export */ var chat_model = (ChatBox); +// CONCATENATED MODULE: ./src/headless/plugins/chat/message.js - /** - * Given a {@link _converse.Message} return the XML stanza that represents it. - * @private - * @method _converse.ChatBox#createMessageStanza - * @param { _converse.Message } message - The message object - */ - createMessageStanza(message) { - const stanza = converse_chat_$msg({ - 'from': converse_core_converse.connection.jid, - 'to': this.get('jid'), - 'type': this.get('message_type'), - 'id': message.get('edited') && converse_chat_u.getUniqueId() || message.get('msgid') - }).c('body').t(message.get('message')).up().c(converse_core_converse.ACTIVE, { - 'xmlns': converse_chat_Strophe.NS.CHATSTATES - }).root(); - if (message.get('type') === 'chat') { - stanza.c('request', { - 'xmlns': converse_chat_Strophe.NS.RECEIPTS - }).root(); - } - if (message.get('is_spoiler')) { - if (message.get('spoiler_hint')) { - stanza.c('spoiler', { - 'xmlns': converse_chat_Strophe.NS.SPOILER - }, message.get('spoiler_hint')).root(); - } else { - stanza.c('spoiler', { - 'xmlns': converse_chat_Strophe.NS.SPOILER - }).root(); - } - } +const message_u = converse.env.utils; +const { + Strophe: message_Strophe +} = converse.env; +/** + * Mixin which turns a `ModelWithContact` model into a non-MUC message. These can be either `chat` messages or `headline` messages. + * @mixin + * @namespace _converse.Message + * @memberOf _converse + * @example const msg = new _converse.Message({'message': 'hello world!'}); + */ - (message.get('references') || []).forEach(reference => { - const attrs = { - 'xmlns': converse_chat_Strophe.NS.REFERENCE, - 'begin': reference.begin, - 'end': reference.end, - 'type': reference.type - }; +const MessageMixin = { + defaults() { + return { + 'msgid': message_u.getUniqueId(), + 'time': new Date().toISOString(), + 'is_ephemeral': false + }; + }, - if (reference.uri) { - attrs.uri = reference.uri; - } + async initialize() { + if (!this.checkValidity()) { + return; + } - stanza.c('reference', attrs).root(); - }); + this.initialized = message_u.getResolveablePromise(); - if (message.get('oob_url')) { - stanza.c('x', { - 'xmlns': converse_chat_Strophe.NS.OUTOFBAND - }).c('url').t(message.get('oob_url')).root(); - } + if (this.get('type') === 'chat') { + model_with_contact.prototype.initialize.apply(this, arguments); + this.setRosterContact(message_Strophe.getBareJidFromJid(this.get('from'))); + } - if (message.get('edited')) { - stanza.c('replace', { - 'xmlns': converse_chat_Strophe.NS.MESSAGE_CORRECT, - 'id': message.get('msgid') - }).root(); - } + if (this.get('file')) { + this.on('change:put', this.uploadFile, this); + } - if (message.get('origin_id')) { - stanza.c('origin-id', { - 'xmlns': converse_chat_Strophe.NS.SID, - 'id': message.get('origin_id') - }).root(); - } + this.setTimerForEphemeralMessage(); + /** + * Triggered once a {@link _converse.Message} has been created and initialized. + * @event _converse#messageInitialized + * @type { _converse.Message} + * @example _converse.api.listen.on('messageInitialized', model => { ... }); + */ - return stanza; - }, + await core_api.trigger('messageInitialized', this, { + 'Synchronous': true + }); + this.initialized.resolve(); + }, - getOutgoingMessageAttributes(text, spoiler_hint) { - const is_spoiler = this.get('composing_spoiler'); - const origin_id = converse_chat_u.getUniqueId(); - const body = text ? converse_chat_u.httpToGeoUri(converse_chat_u.shortnamesToUnicode(text), converse_core_converse) : undefined; - return { - 'from': converse_core_converse.bare_jid, - 'fullname': converse_core_converse.xmppstatus.get('fullname'), - 'id': origin_id, - 'is_only_emojis': text ? converse_chat_u.isOnlyEmojis(text) : false, - 'jid': this.get('jid'), - 'message': body, - 'msgid': origin_id, - 'nickname': this.get('nickname'), - 'sender': 'me', - 'spoiler_hint': is_spoiler ? spoiler_hint : undefined, - 'time': new Date().toISOString(), - 'type': this.get('message_type'), - body, - is_spoiler, - origin_id - }; - }, + /** + * Sets an auto-destruct timer for this message, if it's is_ephemeral. + * @private + * @method _converse.Message#setTimerForEphemeralMessage + * @returns { Boolean } - Indicates whether the message is + * ephemeral or not, and therefore whether the timer was set or not. + */ + setTimerForEphemeralMessage() { + const setTimer = () => { + this.ephemeral_timer = window.setTimeout(this.safeDestroy.bind(this), 10000); + }; - /** - * Responsible for setting the editable attribute of messages. - * If api.settings.get('allow_message_corrections') is "last", then only the last - * message sent from me will be editable. If set to "all" all messages - * will be editable. Otherwise no messages will be editable. - * @method _converse.ChatBox#setEditable - * @memberOf _converse.ChatBox - * @param { Object } attrs An object containing message attributes. - * @param { String } send_time - time when the message was sent - */ - setEditable(attrs, send_time) { - if (attrs.is_headline || converse_chat_u.isEmptyMessage(attrs) || attrs.sender !== 'me') { - return; - } + if (this.isEphemeral()) { + setTimer(); + return true; + } else { + this.on('change:is_ephemeral', () => this.isEphemeral() ? setTimer() : clearTimeout(this.ephemeral_timer)); + return false; + } + }, - if (converse_core_api.settings.get('allow_message_corrections') === 'all') { - attrs.editable = !(attrs.file || attrs.retracted || 'oob_url' in attrs); - } else if (converse_core_api.settings.get('allow_message_corrections') === 'last' && send_time > this.get('time_sent')) { - this.set({ - 'time_sent': send_time - }); - const msg = this.messages.findWhere({ - 'editable': true - }); + checkValidity() { + if (Object.keys(this.attributes).length === 3) { + // XXX: This is an empty message with only the 3 default values. + // This seems to happen when saving a newly created message + // fails for some reason. + // TODO: This is likely fixable by setting `wait` when + // creating messages. See the wait-for-messages branch. + this.validationError = 'Empty message'; + this.safeDestroy(); + return false; + } - if (msg) { - msg.save({ - 'editable': false - }); - } + return true; + }, - attrs.editable = !(attrs.file || attrs.retracted || 'oob_url' in attrs); - } - }, + /** + * Determines whether this messsage may be retracted by the current user. + * @private + * @method _converse.Messages#mayBeRetracted + * @returns { Boolean } + */ + mayBeRetracted() { + const is_own_message = this.get('sender') === 'me'; + return is_own_message && ['all', 'own'].includes(core_api.settings.get('allow_message_retraction')); + }, - /** - * @async - * @private - * @method _converse.ChatBox#createMessage - */ - createMessage(attrs, options) { - return this.messages.create(attrs, Object.assign({ - 'wait': true, - 'promise': true - }, options)).catch(e => headless_log.error(e)); - }, + safeDestroy() { + try { + this.destroy(); + } catch (e) { + headless_log.error(e); + } + }, - /** - * Responsible for sending off a text message inside an ongoing chat conversation. - * @private - * @method _converse.ChatBox#sendMessage - * @memberOf _converse.ChatBox - * @param { String } text - The chat message text - * @param { String } spoiler_hint - An optional hint, if the message being sent is a spoiler - * @returns { _converse.Message } - * @example - * const chat = api.chats.get('buddy1@example.com'); - * chat.sendMessage('hello world'); - */ - async sendMessage(text, spoiler_hint) { - const attrs = this.getOutgoingMessageAttributes(text, spoiler_hint); - let message = this.messages.findWhere('correcting'); + isEphemeral() { + return this.get('is_ephemeral'); + }, - if (message) { - const older_versions = message.get('older_versions') || {}; - older_versions[message.get('time')] = message.get('message'); - message.save({ - 'correcting': false, - 'edited': new Date().toISOString(), - 'message': attrs.message, - 'older_versions': older_versions, - 'references': attrs.references, - 'is_only_emojis': attrs.is_only_emojis, - 'origin_id': converse_chat_u.getUniqueId(), - 'received': undefined - }); - } else { - this.setEditable(attrs, new Date().toISOString()); - message = await this.createMessage(attrs); - } + getDisplayName() { + if (this.get('type') === 'groupchat') { + return this.get('nick'); + } else if (this.contact) { + return this.contact.getDisplayName(); + } else if (this.vcard) { + return this.vcard.getDisplayName(); + } else { + return this.get('from'); + } + }, - converse_core_api.send(this.createMessageStanza(message)); - /** - * Triggered when a message is being sent out - * @event _converse#sendMessage - * @type { Object } - * @param { Object } data - * @property { (_converse.ChatBox | _converse.ChatRoom) } data.chatbox - * @property { (_converse.Message | _converse.ChatRoomMessage) } data.message - */ + getMessageText() { + const { + __ + } = core_converse; - converse_core_api.trigger('sendMessage', { - 'chatbox': this, - message - }); - return message; - }, + if (this.get('is_encrypted')) { + return this.get('plaintext') || this.get('body') || __('Undecryptable OMEMO message'); + } - /** - * Sends a message with the current XEP-0085 chat state of the user - * as taken from the `chat_state` attribute of the {@link _converse.ChatBox}. - * @private - * @method _converse.ChatBox#sendChatState - */ - sendChatState() { - if (converse_core_api.settings.get('send_chat_state_notifications') && this.get('chat_state')) { - const allowed = converse_core_api.settings.get('send_chat_state_notifications'); + return this.get('message'); + }, - if (Array.isArray(allowed) && !allowed.includes(this.get('chat_state'))) { - return; - } + isMeCommand() { + const text = this.getMessageText(); - converse_core_api.send(converse_chat_$msg({ - 'id': converse_chat_u.getUniqueId(), - 'to': this.get('jid'), - 'type': 'chat' - }).c(this.get('chat_state'), { - 'xmlns': converse_chat_Strophe.NS.CHATSTATES - }).up().c('no-store', { - 'xmlns': converse_chat_Strophe.NS.HINTS - }).up().c('no-permanent-store', { - 'xmlns': converse_chat_Strophe.NS.HINTS - })); - } - }, + if (!text) { + return false; + } - async sendFiles(files) { - var _maxFileSize; + return text.startsWith('/me '); + }, - const result = await converse_core_api.disco.features.get(converse_chat_Strophe.NS.HTTPUPLOAD, converse_core_converse.domain); - const item = result.pop(); + /** + * Send out an IQ stanza to request a file upload slot. + * https://xmpp.org/extensions/xep-0363.html#request + * @private + * @method _converse.Message#sendSlotRequestStanza + */ + sendSlotRequestStanza() { + if (!this.file) { + return Promise.reject(new Error('file is undefined')); + } + + const iq = converse.env.$iq({ + 'from': core_converse.jid, + 'to': this.get('slot_request_url'), + 'type': 'get' + }).c('request', { + 'xmlns': message_Strophe.NS.HTTPUPLOAD, + 'filename': this.file.name, + 'size': this.file.size, + 'content-type': this.file.type + }); + return core_api.sendIQ(iq); + }, - if (!item) { - this.createMessage({ - 'message': __("Sorry, looks like file upload is not supported by your server."), - 'type': 'error', - 'is_ephemeral': true - }); - return; - } + async getRequestSlotURL() { + const { + __ + } = core_converse; + let stanza; - const data = item.dataforms.where({ - 'FORM_TYPE': { - 'value': converse_chat_Strophe.NS.HTTPUPLOAD, - 'type': "hidden" - } - }).pop(); - const max_file_size = window.parseInt((_maxFileSize = ((data === null || data === void 0 ? void 0 : data.attributes) || {})['max-file-size']) === null || _maxFileSize === void 0 ? void 0 : _maxFileSize.value); - const slot_request_url = item === null || item === void 0 ? void 0 : item.id; + try { + stanza = await this.sendSlotRequestStanza(); + } catch (e) { + headless_log.error(e); + return this.save({ + 'type': 'error', + 'message': __('Sorry, could not determine upload URL.'), + 'is_ephemeral': true + }); + } - if (!slot_request_url) { - this.createMessage({ - 'message': __("Sorry, looks like file upload is not supported by your server."), - 'type': 'error', - 'is_ephemeral': true - }); - return; - } + const slot = stanza.querySelector('slot'); - Array.from(files).forEach(async file => { - if (!window.isNaN(max_file_size) && window.parseInt(file.size) > max_file_size) { - return this.createMessage({ - 'message': __('The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.', file.name, filesize_min_default()(max_file_size)), - 'type': 'error', - 'is_ephemeral': true - }); - } else { - const attrs = Object.assign(this.getOutgoingMessageAttributes(), { - 'file': true, - 'progress': 0, - 'slot_request_url': slot_request_url - }); - this.setEditable(attrs, new Date().toISOString()); - const message = await this.createMessage(attrs, { - 'silent': true - }); - message.file = file; - this.messages.trigger('add', message); - message.getRequestSlotURL(); - } - }); - }, + if (slot) { + this.save({ + 'get': slot.querySelector('get').getAttribute('url'), + 'put': slot.querySelector('put').getAttribute('url') + }); + } else { + return this.save({ + 'type': 'error', + 'message': __('Sorry, could not determine file upload URL.'), + 'is_ephemeral': true + }); + } + }, - maybeShow(force) { - force && converse_chat_u.safeSave(this, { - 'hidden': false - }); + uploadFile() { + const xhr = new XMLHttpRequest(); - if (converse_core_converse.isUniView() && this.get('hidden')) { - return; + xhr.onreadystatechange = () => { + if (xhr.readyState === XMLHttpRequest.DONE) { + headless_log.info('Status: ' + xhr.status); + + if (xhr.status === 200 || xhr.status === 201) { + this.save({ + 'upload': core_converse.SUCCESS, + 'oob_url': this.get('get'), + 'message': this.get('get') + }); } else { - return this.trigger("show"); + xhr.onerror(); } - }, + } + }; - /** - * Indicates whether the chat is hidden and therefore - * whether a newly received message will be visible - * to the user or not. - * @returns {boolean} - */ - isHidden() { - // Note: This methods gets overridden by converse-minimize - const hidden = converse_core_converse.isUniView() && this.get('hidden'); - return hidden || this.isScrolledUp() || converse_core_converse.windowState === 'hidden'; - }, + xhr.upload.addEventListener('progress', evt => { + if (evt.lengthComputable) { + this.set('progress', evt.loaded / evt.total); + } + }, false); - /** - * Given a newly received {@link _converse.Message} instance, - * update the unread counter if necessary. - * @private - * @param {_converse.Message} message - */ - handleUnreadMessage(message) { - if (!(message === null || message === void 0 ? void 0 : message.get('body'))) { - return; - } + xhr.onerror = () => { + const { + __ + } = core_converse; + let message; - if (utils.isNewMessage(message)) { - if (this.isHidden()) { - const settings = { - 'num_unread': this.get('num_unread') + 1 - }; + if (xhr.responseText) { + message = __('Sorry, could not succesfully upload your file. Your server’s response: "%1$s"', xhr.responseText); + } else { + message = __('Sorry, could not succesfully upload your file.'); + } - if (this.get('num_unread') === 0) { - settings['first_unread_id'] = message.get('id'); - } + this.save({ + 'type': 'error', + 'upload': core_converse.FAILURE, + 'message': message, + 'is_ephemeral': true + }); + }; - this.save(settings); + xhr.open('PUT', this.get('put'), true); + xhr.setRequestHeader('Content-type', this.file.type); + xhr.send(this.file); + } - converse_core_converse.incrementMsgCounter(); - } else { - this.sendMarkerForMessage(message); - } - } - }, +}; +/* harmony default export */ var chat_message = (MessageMixin); +// CONCATENATED MODULE: ./src/headless/plugins/chat/api.js - clearUnreadMsgCounter() { - if (this.get('num_unread') > 0) { - this.sendMarkerForMessage(this.messages.last()); - } - converse_chat_u.safeSave(this, { - 'num_unread': 0 - }); - }, +/* harmony default export */ var chat_api = ({ + /** + * The "chats" namespace (used for one-on-one chats) + * + * @namespace api.chats + * @memberOf api + */ + chats: { + /** + * @method api.chats.create + * @param {string|string[]} jid|jids An jid or array of jids + * @param {object} [attrs] An object containing configuration attributes. + */ + async create(jids, attrs) { + if (typeof jids === 'string') { + if (attrs && !(attrs === null || attrs === void 0 ? void 0 : attrs.fullname)) { + var _contact$attributes; - isScrolledUp() { - return this.get('scrolled', true); - } + const contact = await core_api.contacts.get(jids); + attrs.fullname = contact === null || contact === void 0 ? void 0 : (_contact$attributes = contact.attributes) === null || _contact$attributes === void 0 ? void 0 : _contact$attributes.fullname; + } - }); + const chatbox = core_api.chats.get(jids, attrs, true); - async function handleErrorMessage(stanza) { - const from_jid = converse_chat_Strophe.getBareJidFromJid(stanza.getAttribute('from')); + if (!chatbox) { + headless_log.error("Could not open chatbox for JID: " + jids); + return; + } - if (utils.isSameBareJID(from_jid, converse_core_converse.bare_jid)) { - return; + return chatbox; } - const chatbox = await converse_core_api.chatboxes.get(from_jid); - chatbox === null || chatbox === void 0 ? void 0 : chatbox.handleErrorMessageStanza(stanza); - } - /** - * Handler method for all incoming single-user chat "message" stanzas. - * @private - * @method _converse#handleMessageStanza - * @param { MessageAttributes } attrs - The message attributes - */ - + if (Array.isArray(jids)) { + return Promise.all(jids.forEach(async jid => { + var _contact$attributes2; - converse_core_converse.handleMessageStanza = async function (stanza) { - if (utils_stanza.isServerMessage(stanza)) { - // Prosody sends headline messages with type `chat`, so we need to filter them out here. - const from = stanza.getAttribute('from'); - return headless_log.info("handleMessageStanza: Ignoring incoming server message from JID: ".concat(from)); + const contact = await core_api.contacts.get(jids); + attrs.fullname = contact === null || contact === void 0 ? void 0 : (_contact$attributes2 = contact.attributes) === null || _contact$attributes2 === void 0 ? void 0 : _contact$attributes2.fullname; + return core_api.chats.get(jid, attrs, true).maybeShow(); + })); } - const attrs = await utils_stanza.parseMessage(stanza, converse_core_converse); + headless_log.error("chats.create: You need to provide at least one JID"); + return null; + }, + + /** + * Opens a new one-on-one chat. + * + * @method api.chats.open + * @param {String|string[]} name - e.g. 'buddy@example.com' or ['buddy1@example.com', 'buddy2@example.com'] + * @param {Object} [attrs] - Attributes to be set on the _converse.ChatBox model. + * @param {Boolean} [attrs.minimized] - Should the chat be created in minimized state. + * @param {Boolean} [force=false] - By default, a minimized + * chat won't be maximized (in `overlayed` view mode) and in + * `fullscreen` view mode a newly opened chat won't replace + * another chat already in the foreground. + * Set `force` to `true` if you want to force the chat to be + * maximized or shown. + * @returns {Promise} Promise which resolves with the + * _converse.ChatBox representing the chat. + * + * @example + * // To open a single chat, provide the JID of the contact you're chatting with in that chat: + * converse.plugins.add('myplugin', { + * initialize: function() { + * const _converse = this._converse; + * // Note, buddy@example.org must be in your contacts roster! + * api.chats.open('buddy@example.com').then(chat => { + * // Now you can do something with the chat model + * }); + * } + * }); + * + * @example + * // To open an array of chats, provide an array of JIDs: + * converse.plugins.add('myplugin', { + * initialize: function () { + * const _converse = this._converse; + * // Note, these users must first be in your contacts roster! + * api.chats.open(['buddy1@example.com', 'buddy2@example.com']).then(chats => { + * // Now you can do something with the chat models + * }); + * } + * }); + */ + async open(jids, attrs, force) { + if (typeof jids === 'string') { + const chat = await core_api.chats.get(jids, attrs, true); + + if (chat) { + return chat.maybeShow(force); + } + + return chat; + } else if (Array.isArray(jids)) { + return Promise.all(jids.map(j => core_api.chats.get(j, attrs, true).then(c => c && c.maybeShow(force))).filter(c => c)); + } + + const err_msg = "chats.open: You need to provide at least one JID"; + headless_log.error(err_msg); + throw new Error(err_msg); + }, + + /** + * Retrieves a chat or all chats. + * + * @method api.chats.get + * @param {String|string[]} jids - e.g. 'buddy@example.com' or ['buddy1@example.com', 'buddy2@example.com'] + * @param {Object} [attrs] - Attributes to be set on the _converse.ChatBox model. + * @param {Boolean} [create=false] - Whether the chat should be created if it's not found. + * @returns { Promise<_converse.ChatBox> } + * + * @example + * // To return a single chat, provide the JID of the contact you're chatting with in that chat: + * const model = await api.chats.get('buddy@example.com'); + * + * @example + * // To return an array of chats, provide an array of JIDs: + * const models = await api.chats.get(['buddy1@example.com', 'buddy2@example.com']); + * + * @example + * // To return all open chats, call the method without any parameters:: + * const models = await api.chats.get(); + * + */ + async get(jids, attrs = {}, create = false) { + async function _get(jid) { + let model = await core_api.chatboxes.get(jid); + + if (!model && create) { + model = await core_api.chatboxes.create(jid, attrs, core_converse.ChatBox); + } else { + model = model && model.get('type') === core_converse.PRIVATE_CHAT_TYPE ? model : null; + + if (model && Object.keys(attrs).length) { + model.save(attrs); + } + } + + return model; + } + + if (jids === undefined) { + const chats = await core_api.chatboxes.get(); + return chats.filter(c => c.get('type') === core_converse.PRIVATE_CHAT_TYPE); + } else if (typeof jids === 'string') { + return _get(jids); + } + + return Promise.all(jids.map(jid => _get(jid))); + } + + } +}); +// CONCATENATED MODULE: ./src/headless/plugins/chat/index.js +/** + * @module converse-chat + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ + + + + + + + + +const { + Strophe: chat_Strophe, + sizzle: chat_sizzle, + utils +} = converse.env; +const chat_u = converse.env.utils; + +async function handleErrorMessage(stanza) { + const from_jid = chat_Strophe.getBareJidFromJid(stanza.getAttribute('from')); + + if (utils.isSameBareJID(from_jid, core_converse.bare_jid)) { + return; + } + + const chatbox = await core_api.chatboxes.get(from_jid); + chatbox === null || chatbox === void 0 ? void 0 : chatbox.handleErrorMessageStanza(stanza); +} + +converse.plugins.add('converse-chat', { + /* Optional dependencies are other plugins which might be + * overridden or relied upon, and therefore need to be loaded before + * this plugin. They are called "optional" because they might not be + * available, in which case any overrides applicable to them will be + * ignored. + * + * It's possible however to make optional dependencies non-optional. + * If the setting "strict_plugin_dependencies" is set to true, + * an error will be raised if the plugin is not found. + * + * NB: These plugins need to have already been loaded via require.js. + */ + dependencies: ['converse-chatboxes', 'converse-disco'], + + initialize() { + /* The initialize function gets called as soon as the plugin is + * loaded by converse.js's plugin machinery. + */ + Object.assign(core_api, chat_api); // Configuration values for this plugin + // ==================================== + // Refer to docs/source/configuration.rst for explanations of these + // configuration settings. + + core_api.settings.extend({ + 'allow_message_corrections': 'all', + 'allow_message_retraction': 'all', + 'allow_message_styling': true, + 'auto_join_private_chats': [], + 'clear_messages_on_reconnection': false, + 'filter_by_resource': false, + 'send_chat_state_notifications': true + }); + core_converse.Message = model_with_contact.extend(chat_message); + core_converse.Messages = Collection.extend({ + model: core_converse.Message, + comparator: 'time' + }); + core_converse.ChatBox = chat_model; + /** + * Handler method for all incoming single-user chat "message" stanzas. + * @private + * @method _converse#handleMessageStanza + * @param { MessageAttributes } attrs - The message attributes + */ + + core_converse.handleMessageStanza = async function (stanza) { + if (utils_stanza.isServerMessage(stanza)) { + // Prosody sends headline messages with type `chat`, so we need to filter them out here. + const from = stanza.getAttribute('from'); + return headless_log.info("handleMessageStanza: Ignoring incoming server message from JID: ".concat(from)); + } + + const attrs = await utils_stanza.parseMessage(stanza, core_converse); - if (converse_chat_u.isErrorObject(attrs)) { + if (chat_u.isErrorObject(attrs)) { attrs.stanza && headless_log.error(attrs.stanza); return headless_log.error(attrs.message); } - const has_body = !!converse_chat_sizzle("body, encrypted[xmlns=\"".concat(converse_chat_Strophe.NS.OMEMO, "\"]"), stanza).length; - const chatbox = await converse_core_api.chats.get(attrs.contact_jid, { + const has_body = !!chat_sizzle("body, encrypted[xmlns=\"".concat(chat_Strophe.NS.OMEMO, "\"]"), stanza).length; + const chatbox = await core_api.chats.get(attrs.contact_jid, { 'nickname': attrs.nick }, has_body); await (chatbox === null || chatbox === void 0 ? void 0 : chatbox.queueMessage(attrs)); @@ -74452,12 +78608,12 @@ converse.plugins.add('converse-chat', { * @property { module:converse-chat~MessageData } data */ - converse_core_api.trigger('message', data); + core_api.trigger('message', data); }; function registerMessageHandlers() { - converse_core_converse.connection.addHandler(stanza => { - if (converse_chat_sizzle("message > result[xmlns=\"".concat(converse_chat_Strophe.NS.MAM, "\"]"), stanza).pop()) { + core_converse.connection.addHandler(stanza => { + if (chat_sizzle("message > result[xmlns=\"".concat(chat_Strophe.NS.MAM, "\"]"), stanza).pop()) { // MAM messages are handled in converse-mam. // We shouldn't get MAM messages here because // they shouldn't have a `type` attribute. @@ -74465,12 +78621,12 @@ converse.plugins.add('converse-chat', { return true; } - converse_core_converse.handleMessageStanza(stanza); + core_converse.handleMessageStanza(stanza); return true; }, null, 'message', 'chat'); - converse_core_converse.connection.addHandler(stanza => { + core_converse.connection.addHandler(stanza => { // Message receipts are usually without the `type` attribute. See #1353 if (stanza.getAttribute('type') !== null) { // TODO: currently Strophe has no way to register a handler @@ -74480,12 +78636,12 @@ converse.plugins.add('converse-chat', { return true; // Gets handled above. } - converse_core_converse.handleMessageStanza(stanza); + core_converse.handleMessageStanza(stanza); return true; - }, converse_chat_Strophe.NS.RECEIPTS, 'message'); + }, chat_Strophe.NS.RECEIPTS, 'message'); - converse_core_converse.connection.addHandler(stanza => { + core_converse.connection.addHandler(stanza => { handleErrorMessage(stanza); return true; }, null, 'message', 'error'); @@ -74494,15 +78650,15 @@ converse.plugins.add('converse-chat', { function autoJoinChats() { // Automatically join private chats, based on the // "auto_join_private_chats" configuration setting. - converse_core_api.settings.get('auto_join_private_chats').forEach(jid => { - if (converse_core_converse.chatboxes.where({ + core_api.settings.get('auto_join_private_chats').forEach(jid => { + if (core_converse.chatboxes.where({ 'jid': jid }).length) { return; } if (typeof jid === 'string') { - converse_core_api.chats.open(jid); + core_api.chats.open(jid); } else { headless_log.error('Invalid jid criteria specified for "auto_join_private_chats"'); } @@ -74516,7 +78672,7 @@ converse.plugins.add('converse-chat', { * @example _converse.api.waitUntil('privateChatsAutoJoined').then(() => { ... }); */ - converse_core_api.trigger('privateChatsAutoJoined'); + core_api.trigger('privateChatsAutoJoined'); } /************************ BEGIN Route Handlers ************************/ @@ -74526,188 +78682,35 @@ converse.plugins.add('converse-chat', { return headless_log.warn("Invalid JID \"".concat(jid, "\" provided in URL fragment")); } - converse_core_api.chats.open(jid); + core_api.chats.open(jid); } - converse_core_converse.router.route('converse/chat?jid=:jid', openChat); + core_converse.router.route('converse/chat?jid=:jid', openChat); /************************ END Route Handlers ************************/ /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('chatBoxesFetched', autoJoinChats); - converse_core_api.listen.on('presencesInitialized', registerMessageHandlers); - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.shouldClearCache()) { - return Promise.all(converse_core_converse.chatboxes.map(c => c.messages && c.messages.clearStore({ + core_api.listen.on('chatBoxesFetched', autoJoinChats); + core_api.listen.on('presencesInitialized', registerMessageHandlers); + core_api.listen.on('clearSession', async () => { + if (core_converse.shouldClearCache()) { + await Promise.all(core_converse.chatboxes.map(c => c.messages && c.messages.clearStore({ 'silent': true }))); - } - }); - /************************ END Event Handlers ************************/ - - /************************ BEGIN API ************************/ - - Object.assign(converse_core_api, { - /** - * The "chats" namespace (used for one-on-one chats) - * - * @namespace api.chats - * @memberOf api - */ - chats: { - /** - * @method api.chats.create - * @param {string|string[]} jid|jids An jid or array of jids - * @param {object} [attrs] An object containing configuration attributes. - */ - async create(jids, attrs) { - if (typeof jids === 'string') { - if (attrs && !(attrs === null || attrs === void 0 ? void 0 : attrs.fullname)) { - var _contact$attributes; - - const contact = await converse_core_api.contacts.get(jids); - attrs.fullname = contact === null || contact === void 0 ? void 0 : (_contact$attributes = contact.attributes) === null || _contact$attributes === void 0 ? void 0 : _contact$attributes.fullname; - } - - const chatbox = converse_core_api.chats.get(jids, attrs, true); - - if (!chatbox) { - headless_log.error("Could not open chatbox for JID: " + jids); - return; - } - - return chatbox; - } - - if (Array.isArray(jids)) { - return Promise.all(jids.forEach(async jid => { - var _contact$attributes2; - - const contact = await converse_core_api.contacts.get(jids); - attrs.fullname = contact === null || contact === void 0 ? void 0 : (_contact$attributes2 = contact.attributes) === null || _contact$attributes2 === void 0 ? void 0 : _contact$attributes2.fullname; - return converse_core_api.chats.get(jid, attrs, true).maybeShow(); - })); - } - headless_log.error("chats.create: You need to provide at least one JID"); - return null; - }, - - /** - * Opens a new one-on-one chat. - * - * @method api.chats.open - * @param {String|string[]} name - e.g. 'buddy@example.com' or ['buddy1@example.com', 'buddy2@example.com'] - * @param {Object} [attrs] - Attributes to be set on the _converse.ChatBox model. - * @param {Boolean} [attrs.minimized] - Should the chat be created in minimized state. - * @param {Boolean} [force=false] - By default, a minimized - * chat won't be maximized (in `overlayed` view mode) and in - * `fullscreen` view mode a newly opened chat won't replace - * another chat already in the foreground. - * Set `force` to `true` if you want to force the chat to be - * maximized or shown. - * @returns {Promise} Promise which resolves with the - * _converse.ChatBox representing the chat. - * - * @example - * // To open a single chat, provide the JID of the contact you're chatting with in that chat: - * converse.plugins.add('myplugin', { - * initialize: function() { - * const _converse = this._converse; - * // Note, buddy@example.org must be in your contacts roster! - * api.chats.open('buddy@example.com').then(chat => { - * // Now you can do something with the chat model - * }); - * } - * }); - * - * @example - * // To open an array of chats, provide an array of JIDs: - * converse.plugins.add('myplugin', { - * initialize: function () { - * const _converse = this._converse; - * // Note, these users must first be in your contacts roster! - * api.chats.open(['buddy1@example.com', 'buddy2@example.com']).then(chats => { - * // Now you can do something with the chat models - * }); - * } - * }); - */ - async open(jids, attrs, force) { - if (typeof jids === 'string') { - const chat = await converse_core_api.chats.get(jids, attrs, true); - - if (chat) { - return chat.maybeShow(force); - } - - return chat; - } else if (Array.isArray(jids)) { - return Promise.all(jids.map(j => converse_core_api.chats.get(j, attrs, true).then(c => c && c.maybeShow(force))).filter(c => c)); - } - - const err_msg = "chats.open: You need to provide at least one JID"; - headless_log.error(err_msg); - throw new Error(err_msg); - }, - - /** - * Retrieves a chat or all chats. - * - * @method api.chats.get - * @param {String|string[]} jids - e.g. 'buddy@example.com' or ['buddy1@example.com', 'buddy2@example.com'] - * @param {Object} [attrs] - Attributes to be set on the _converse.ChatBox model. - * @param {Boolean} [create=false] - Whether the chat should be created if it's not found. - * @returns { Promise<_converse.ChatBox> } - * - * @example - * // To return a single chat, provide the JID of the contact you're chatting with in that chat: - * const model = await api.chats.get('buddy@example.com'); - * - * @example - * // To return an array of chats, provide an array of JIDs: - * const models = await api.chats.get(['buddy1@example.com', 'buddy2@example.com']); - * - * @example - * // To return all open chats, call the method without any parameters:: - * const models = await api.chats.get(); - * - */ - async get(jids, attrs = {}, create = false) { - async function _get(jid) { - let model = await converse_core_api.chatboxes.get(jid); - - if (!model && create) { - model = await converse_core_api.chatboxes.create(jid, attrs, converse_core_converse.ChatBox); - } else { - model = model && model.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE ? model : null; - - if (model && Object.keys(attrs).length) { - model.save(attrs); - } - } - - return model; - } - - if (jids === undefined) { - const chats = await converse_core_api.chatboxes.get(); - return chats.filter(c => c.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE); - } else if (typeof jids === 'string') { - return _get(jids); - } - - return Promise.all(jids.map(jid => _get(jid))); - } + const filter = o => o.get('type') !== core_converse.CONTROLBOX_TYPE; + core_converse.chatboxes.clearStore({ + 'silent': true + }, filter); } }); - /************************ END API ************************/ + /************************ END Event Handlers ************************/ } }); -// CONCATENATED MODULE: ./src/headless/converse-disco.js +// CONCATENATED MODULE: ./src/headless/plugins/disco.js /** * @module converse-disco * @copyright The Converse.js contributors @@ -74721,9 +78724,9 @@ converse.plugins.add('converse-chat', { const { - Strophe: converse_disco_Strophe, + Strophe: disco_Strophe, $iq, - utils: converse_disco_utils + utils: disco_utils } = converse.env; converse.plugins.add('converse-disco', { initialize() { @@ -74731,15 +78734,15 @@ converse.plugins.add('converse-disco', { * loaded by converse.js's plugin machinery. */ // Promises exposed by this plugin - converse_core_api.promises.add('discoInitialized'); - converse_core_api.promises.add('streamFeaturesAdded'); + core_api.promises.add('discoInitialized'); + core_api.promises.add('streamFeaturesAdded'); /** * @class * @namespace _converse.DiscoEntity * @memberOf _converse */ - converse_core_converse.DiscoEntity = model_Model.extend({ + core_converse.DiscoEntity = model_Model.extend({ /* A Disco Entity is a JID addressable entity that can be queried * for features. * @@ -74748,25 +78751,25 @@ converse.plugins.add('converse-disco', { idAttribute: 'jid', initialize(attrs, options) { - this.waitUntilFeaturesDiscovered = converse_disco_utils.getResolveablePromise(); - this.dataforms = new collection_Collection(); + this.waitUntilFeaturesDiscovered = disco_utils.getResolveablePromise(); + this.dataforms = new Collection(); let id = "converse.dataforms-".concat(this.get('jid')); - this.dataforms.browserStorage = converse_core_converse.createStore(id, 'session'); - this.features = new collection_Collection(); + this.dataforms.browserStorage = core_converse.createStore(id, 'session'); + this.features = new Collection(); id = "converse.features-".concat(this.get('jid')); - this.features.browserStorage = converse_core_converse.createStore(id, 'session'); + this.features.browserStorage = core_converse.createStore(id, 'session'); this.listenTo(this.features, 'add', this.onFeatureAdded); - this.fields = new collection_Collection(); + this.fields = new Collection(); id = "converse.fields-".concat(this.get('jid')); - this.fields.browserStorage = converse_core_converse.createStore(id, 'session'); + this.fields.browserStorage = core_converse.createStore(id, 'session'); this.listenTo(this.fields, 'add', this.onFieldAdded); - this.identities = new collection_Collection(); + this.identities = new Collection(); id = "converse.identities-".concat(this.get('jid')); - this.identities.browserStorage = converse_core_converse.createStore(id, 'session'); + this.identities.browserStorage = core_converse.createStore(id, 'session'); this.fetchFeatures(options); - this.items = new converse_core_converse.DiscoEntities(); + this.items = new core_converse.DiscoEntities(); id = "converse.disco-items-".concat(this.get('jid')); - this.items.browserStorage = converse_core_converse.createStore(id, 'session'); + this.items.browserStorage = core_converse.createStore(id, 'session'); this.items.fetch(); }, @@ -74813,7 +78816,7 @@ converse.plugins.add('converse-disco', { * @example _converse.api.listen.on('featuresDiscovered', feature => { ... }); */ - converse_core_api.trigger('serviceDiscovered', feature); + core_api.trigger('serviceDiscovered', feature); }, onFieldAdded(field) { @@ -74825,7 +78828,7 @@ converse.plugins.add('converse-disco', { * @example _converse.api.listen.on('discoExtensionFieldDiscovered', () => { ... }); */ - converse_core_api.trigger('discoExtensionFieldDiscovered', field); + core_api.trigger('discoExtensionFieldDiscovered', field); }, async fetchFeatures(options) { @@ -74856,7 +78859,7 @@ converse.plugins.add('converse-disco', { let stanza; try { - stanza = await converse_core_api.disco.info(this.get('jid'), null); + stanza = await core_api.disco.info(this.get('jid'), null); } catch (iq) { iq === null ? headless_log.error("Timeout for disco#info query for ".concat(this.get('jid'))) : headless_log.error(iq); this.waitUntilFeaturesDiscovered.resolve(this); @@ -74867,7 +78870,7 @@ converse.plugins.add('converse-disco', { }, onDiscoItems(stanza) { - sizzle_default()("query[xmlns=\"".concat(converse_disco_Strophe.NS.DISCO_ITEMS, "\"] item"), stanza).forEach(item => { + sizzle_default()("query[xmlns=\"".concat(disco_Strophe.NS.DISCO_ITEMS, "\"] item"), stanza).forEach(item => { if (item.getAttribute("node")) { // XXX: Ignore nodes for now. // See: https://xmpp.org/extensions/xep-0030.html#items-nodes @@ -74877,7 +78880,7 @@ converse.plugins.add('converse-disco', { const jid = item.getAttribute('jid'); if (this.items.get(jid) === undefined) { - const entity = converse_core_converse.disco_entities.get(jid); + const entity = core_converse.disco_entities.get(jid); if (entity) { this.items.add(entity); @@ -74899,7 +78902,7 @@ converse.plugins.add('converse-disco', { return; } - const stanza = await converse_core_api.disco.items(this.get('jid')); + const stanza = await core_api.disco.items(this.get('jid')); this.onDiscoItems(stanza); }, @@ -74911,7 +78914,7 @@ converse.plugins.add('converse-disco', { 'name': identity.getAttribute('name') }); }); - sizzle_default()("x[type=\"result\"][xmlns=\"".concat(converse_disco_Strophe.NS.XFORM, "\"]"), stanza).forEach(form => { + sizzle_default()("x[type=\"result\"][xmlns=\"".concat(disco_Strophe.NS.XFORM, "\"]"), stanza).forEach(form => { const data = {}; sizzle_default()('field', form).forEach(field => { var _field$querySelector; @@ -74924,7 +78927,7 @@ converse.plugins.add('converse-disco', { this.dataforms.create(data); }); - if (stanza.querySelector("feature[var=\"".concat(converse_disco_Strophe.NS.DISCO_ITEMS, "\"]"))) { + if (stanza.querySelector("feature[var=\"".concat(disco_Strophe.NS.DISCO_ITEMS, "\"]"))) { this.queryForItems(); } @@ -74949,8 +78952,8 @@ converse.plugins.add('converse-disco', { } }); - converse_core_converse.DiscoEntities = collection_Collection.extend({ - model: converse_core_converse.DiscoEntity, + core_converse.DiscoEntities = Collection.extend({ + model: core_converse.DiscoEntity, fetchEntities() { return new Promise((resolve, reject) => { @@ -74971,13 +78974,13 @@ converse.plugins.add('converse-disco', { function addClientFeatures() { // See https://xmpp.org/registrar/disco-categories.html - converse_core_api.disco.own.identities.add('client', 'web', 'Converse'); - converse_core_api.disco.own.features.add(converse_disco_Strophe.NS.CHATSTATES); - converse_core_api.disco.own.features.add(converse_disco_Strophe.NS.DISCO_INFO); - converse_core_api.disco.own.features.add(converse_disco_Strophe.NS.ROSTERX); // Limited support + core_api.disco.own.identities.add('client', 'web', 'Converse'); + core_api.disco.own.features.add(disco_Strophe.NS.CHATSTATES); + core_api.disco.own.features.add(disco_Strophe.NS.DISCO_INFO); + core_api.disco.own.features.add(disco_Strophe.NS.ROSTERX); // Limited support - if (converse_core_api.settings.get("message_carbons")) { - converse_core_api.disco.own.features.add(converse_disco_Strophe.NS.CARBONS); + if (core_api.settings.get("message_carbons")) { + core_api.disco.own.features.add(disco_Strophe.NS.CARBONS); } /** * Triggered in converse-disco once the core disco features of @@ -74987,7 +78990,7 @@ converse.plugins.add('converse-disco', { */ - converse_core_api.trigger('addClientFeatures'); + core_api.trigger('addClientFeatures'); return this; } @@ -74997,12 +79000,12 @@ converse.plugins.add('converse-disco', { // features from cache. // Otherwise the features will be created once we've received them // from the server (see populateStreamFeatures). - if (!converse_core_converse.stream_features) { - const bare_jid = converse_disco_Strophe.getBareJidFromJid(converse_core_converse.jid); + if (!core_converse.stream_features) { + const bare_jid = disco_Strophe.getBareJidFromJid(core_converse.jid); const id = "converse.stream-features-".concat(bare_jid); - converse_core_api.promises.add('streamFeaturesAdded'); - converse_core_converse.stream_features = new collection_Collection(); - converse_core_converse.stream_features.browserStorage = converse_core_converse.createStore(id, "session"); + core_api.promises.add('streamFeaturesAdded'); + core_converse.stream_features = new Collection(); + core_converse.stream_features.browserStorage = core_converse.createStore(id, "session"); } } @@ -75013,8 +79016,8 @@ converse.plugins.add('converse-disco', { // Once this is done, we populate the _converse.stream_features collection // and trigger streamFeaturesAdded. initStreamFeatures(); - Array.from(converse_core_converse.connection.features.childNodes).forEach(feature => { - converse_core_converse.stream_features.create({ + Array.from(core_converse.connection.features.childNodes).forEach(feature => { + core_converse.stream_features.create({ 'name': feature.nodeName, 'xmlns': feature.getAttribute('xmlns') }); @@ -75030,7 +79033,7 @@ converse.plugins.add('converse-disco', { * @event _converse#streamFeaturesAdded * @example _converse.api.listen.on('streamFeaturesAdded', () => { ... }); */ - converse_core_api.trigger('streamFeaturesAdded'); + core_api.trigger('streamFeaturesAdded'); } const plugin = this; @@ -75040,7 +79043,7 @@ converse.plugins.add('converse-disco', { function onDiscoInfoRequest(stanza) { const node = stanza.getElementsByTagName('query')[0].getAttribute('node'); const attrs = { - xmlns: converse_disco_Strophe.NS.DISCO_INFO + xmlns: disco_Strophe.NS.DISCO_INFO }; if (node) { @@ -75082,25 +79085,25 @@ converse.plugins.add('converse-disco', { 'var': feature }).up()); - converse_core_api.send(iqresult.tree()); + core_api.send(iqresult.tree()); return true; } async function initializeDisco() { addClientFeatures(); - converse_core_converse.connection.addHandler(onDiscoInfoRequest, converse_disco_Strophe.NS.DISCO_INFO, 'iq', 'get', null, null); + core_converse.connection.addHandler(onDiscoInfoRequest, disco_Strophe.NS.DISCO_INFO, 'iq', 'get', null, null); - converse_core_converse.disco_entities = new converse_core_converse.DiscoEntities(); - const id = "converse.disco-entities-".concat(converse_core_converse.bare_jid); - converse_core_converse.disco_entities.browserStorage = converse_core_converse.createStore(id, 'session'); - const collection = await converse_core_converse.disco_entities.fetchEntities(); + core_converse.disco_entities = new core_converse.DiscoEntities(); + const id = "converse.disco-entities-".concat(core_converse.bare_jid); + core_converse.disco_entities.browserStorage = core_converse.createStore(id, 'session'); + const collection = await core_converse.disco_entities.fetchEntities(); - if (collection.length === 0 || !collection.get(converse_core_converse.domain)) { + if (collection.length === 0 || !collection.get(core_converse.domain)) { // If we don't have an entity for our own XMPP server, // create one. - converse_core_converse.disco_entities.create({ - 'jid': converse_core_converse.domain + core_converse.disco_entities.create({ + 'jid': core_converse.domain }); } /** @@ -75112,49 +79115,49 @@ converse.plugins.add('converse-disco', { */ - converse_core_api.trigger('discoInitialized'); + core_api.trigger('discoInitialized'); } /******************** Event Handlers ********************/ - converse_core_api.listen.on('userSessionInitialized', async () => { + core_api.listen.on('userSessionInitialized', async () => { initStreamFeatures(); - if (converse_core_converse.connfeedback.get('connection_status') === converse_disco_Strophe.Status.ATTACHED) { + if (core_converse.connfeedback.get('connection_status') === disco_Strophe.Status.ATTACHED) { // When re-attaching to a BOSH session, we fetch the stream features from the cache. - await new Promise((success, error) => converse_core_converse.stream_features.fetch({ + await new Promise((success, error) => core_converse.stream_features.fetch({ success, error })); notifyStreamFeaturesAdded(); } }); - converse_core_api.listen.on('beforeResourceBinding', populateStreamFeatures); - converse_core_api.listen.on('reconnected', initializeDisco); - converse_core_api.listen.on('connected', initializeDisco); - converse_core_api.listen.on('beforeTearDown', async () => { - converse_core_api.promises.add('streamFeaturesAdded'); + core_api.listen.on('beforeResourceBinding', populateStreamFeatures); + core_api.listen.on('reconnected', initializeDisco); + core_api.listen.on('connected', initializeDisco); + core_api.listen.on('beforeTearDown', async () => { + core_api.promises.add('streamFeaturesAdded'); - if (converse_core_converse.stream_features) { - await converse_core_converse.stream_features.clearStore(); - delete converse_core_converse.stream_features; + if (core_converse.stream_features) { + await core_converse.stream_features.clearStore(); + delete core_converse.stream_features; } }); - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.shouldClearCache() && converse_core_converse.disco_entities) { - Array.from(converse_core_converse.disco_entities.models).forEach(e => e.features.clearStore()); - Array.from(converse_core_converse.disco_entities.models).forEach(e => e.identities.clearStore()); - Array.from(converse_core_converse.disco_entities.models).forEach(e => e.dataforms.clearStore()); - Array.from(converse_core_converse.disco_entities.models).forEach(e => e.fields.clearStore()); + core_api.listen.on('clearSession', () => { + if (core_converse.shouldClearCache() && core_converse.disco_entities) { + Array.from(core_converse.disco_entities.models).forEach(e => e.features.clearStore()); + Array.from(core_converse.disco_entities.models).forEach(e => e.identities.clearStore()); + Array.from(core_converse.disco_entities.models).forEach(e => e.dataforms.clearStore()); + Array.from(core_converse.disco_entities.models).forEach(e => e.fields.clearStore()); - converse_core_converse.disco_entities.clearStore(); + core_converse.disco_entities.clearStore(); - delete converse_core_converse.disco_entities; + delete core_converse.disco_entities; } }); /************************ API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * The XEP-0030 service discovery API * @@ -75177,20 +79180,20 @@ converse.plugins.add('converse-disco', { * @example _converse.api.disco.stream.getFeature('ver', 'urn:xmpp:features:rosterver') */ async getFeature(name, xmlns) { - await converse_core_api.waitUntil('streamFeaturesAdded'); + await core_api.waitUntil('streamFeaturesAdded'); if (!name || !xmlns) { throw new Error("name and xmlns need to be provided when calling disco.stream.getFeature"); } - if (converse_core_converse.stream_features === undefined && !converse_core_api.connection.connected()) { + if (core_converse.stream_features === undefined && !core_api.connection.connected()) { // Happens during tests when disco lookups happen asynchronously after teardown. const msg = "Tried to get feature ".concat(name, " ").concat(xmlns, " but _converse.stream_features has been torn down"); headless_log.warn(msg); return; } - return converse_core_converse.stream_features.findWhere({ + return core_converse.stream_features.findWhere({ 'name': name, 'xmlns': xmlns }); @@ -75307,7 +79310,7 @@ converse.plugins.add('converse-disco', { */ info(jid, node) { const attrs = { - xmlns: converse_disco_Strophe.NS.DISCO_INFO + xmlns: disco_Strophe.NS.DISCO_INFO }; if (node) { @@ -75315,11 +79318,11 @@ converse.plugins.add('converse-disco', { } const info = $iq({ - 'from': converse_core_converse.connection.jid, + 'from': core_converse.connection.jid, 'to': jid, 'type': 'get' }).c('query', attrs); - return converse_core_api.sendIQ(info); + return core_api.sendIQ(info); }, /** @@ -75332,15 +79335,15 @@ converse.plugins.add('converse-disco', { */ items(jid, node) { const attrs = { - 'xmlns': converse_disco_Strophe.NS.DISCO_ITEMS + 'xmlns': disco_Strophe.NS.DISCO_ITEMS }; if (node) { attrs.node = node; } - return converse_core_api.sendIQ($iq({ - 'from': converse_core_converse.connection.jid, + return core_api.sendIQ($iq({ + 'from': core_converse.connection.jid, 'to': jid, 'type': 'get' }).c('query', attrs)); @@ -75362,26 +79365,26 @@ converse.plugins.add('converse-disco', { * @example _converse.api.disco.entities.get(jid); */ async get(jid, create = false) { - await converse_core_api.waitUntil('discoInitialized'); + await core_api.waitUntil('discoInitialized'); if (!jid) { - return converse_core_converse.disco_entities; + return core_converse.disco_entities; } - if (converse_core_converse.disco_entities === undefined && !converse_core_api.connection.connected()) { + if (core_converse.disco_entities === undefined && !core_api.connection.connected()) { // Happens during tests when disco lookups happen asynchronously after teardown. const msg = "Tried to look up entity ".concat(jid, " but _converse.disco_entities has been torn down"); headless_log.warn(msg); return; } - const entity = converse_core_converse.disco_entities.get(jid); + const entity = core_converse.disco_entities.get(jid); if (entity || !create) { return entity; } - return converse_core_api.disco.entities.create(jid); + return core_api.disco.entities.create(jid); }, /** @@ -75400,7 +79403,7 @@ converse.plugins.add('converse-disco', { * @example _converse.api.disco.entities.create(jid, {'ignore_cache': true}); */ create(jid, options) { - return converse_core_converse.disco_entities.create({ + return core_converse.disco_entities.create({ 'jid': jid }, options); } @@ -75434,10 +79437,10 @@ converse.plugins.add('converse-disco', { throw new TypeError('You need to provide an entity JID'); } - await converse_core_api.waitUntil('discoInitialized'); - let entity = await converse_core_api.disco.entities.get(jid, true); + await core_api.waitUntil('discoInitialized'); + let entity = await core_api.disco.entities.get(jid, true); - if (converse_core_converse.disco_entities === undefined && !converse_core_api.connection.connected()) { + if (core_converse.disco_entities === undefined && !core_api.connection.connected()) { // Happens during tests when disco lookups happen asynchronously after teardown. const msg = "Tried to get feature ".concat(feature, " for ").concat(jid, " but _converse.disco_entities has been torn down"); headless_log.warn(msg); @@ -75471,7 +79474,7 @@ converse.plugins.add('converse-disco', { * } */ async supports(feature, jid) { - const features = await converse_core_api.disco.features.get(feature, jid); + const features = await core_api.disco.features.get(feature, jid); return features.length > 0; }, @@ -75489,8 +79492,8 @@ converse.plugins.add('converse-disco', { throw new TypeError('api.disco.refresh: You need to provide an entity JID'); } - await converse_core_api.waitUntil('discoInitialized'); - let entity = await converse_core_api.disco.entities.get(jid); + await core_api.waitUntil('discoInitialized'); + let entity = await core_api.disco.entities.get(jid); if (entity) { entity.features.reset(); @@ -75498,13 +79501,13 @@ converse.plugins.add('converse-disco', { entity.identities.reset(); if (!entity.waitUntilFeaturesDiscovered.isPending) { - entity.waitUntilFeaturesDiscovered = converse_disco_utils.getResolveablePromise(); + entity.waitUntilFeaturesDiscovered = disco_utils.getResolveablePromise(); } entity.queryInfo(); } else { // Create it if it doesn't exist - entity = await converse_core_api.disco.entities.create(jid, { + entity = await core_api.disco.entities.create(jid, { 'ignore_cache': true }); } @@ -75517,7 +79520,7 @@ converse.plugins.add('converse-disco', { * @method api.disco.refreshFeatures */ refreshFeatures(jid) { - return converse_core_api.refresh(jid); + return core_api.refresh(jid); }, /** @@ -75534,8 +79537,8 @@ converse.plugins.add('converse-disco', { throw new TypeError('api.disco.getFeatures: You need to provide an entity JID'); } - await converse_core_api.waitUntil('discoInitialized'); - let entity = await converse_core_api.disco.entities.get(jid, true); + await core_api.waitUntil('discoInitialized'); + let entity = await core_api.disco.entities.get(jid, true); entity = await entity.waitUntilFeaturesDiscovered; return entity.features; }, @@ -75556,8 +79559,8 @@ converse.plugins.add('converse-disco', { throw new TypeError('api.disco.getFields: You need to provide an entity JID'); } - await converse_core_api.waitUntil('discoInitialized'); - let entity = await converse_core_api.disco.entities.get(jid, true); + await core_api.waitUntil('discoInitialized'); + let entity = await core_api.disco.entities.get(jid, true); entity = await entity.waitUntilFeaturesDiscovered; return entity.fields; }, @@ -75594,9 +79597,9 @@ converse.plugins.add('converse-disco', { * ).catch(e => log.error(e)); */ async getIdentity(category, type, jid) { - const e = await converse_core_api.disco.entities.get(jid, true); + const e = await core_api.disco.entities.get(jid, true); - if (e === undefined && !converse_core_api.connection.connected()) { + if (e === undefined && !core_api.connection.connected()) { // Happens during tests when disco lookups happen asynchronously after teardown. const msg = "Tried to look up category ".concat(category, " for ").concat(jid, " but _converse.disco_entities has been torn down"); headless_log.warn(msg); @@ -75611,15 +79614,15 @@ converse.plugins.add('converse-disco', { } }); -// CONCATENATED MODULE: ./src/headless/emoji_regexes.js +// CONCATENATED MODULE: ./src/headless/plugins/emoji/regexes.js const ASCII_REGEX = '(\\*\\\\0\\/\\*|\\*\\\\O\\/\\*|\\-___\\-|\\:\'\\-\\)|\'\\:\\-\\)|\'\\:\\-D|\\>\\:\\-\\)|>\\:\\-\\)|\'\\:\\-\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:\'\\-\\(|O\\:\\-\\)|0\\:\\-3|0\\:\\-\\)|0;\\^\\)|O;\\-\\)|0;\\-\\)|O\\:\\-3|\\-__\\-|\\:\\-Þ|\\:\\-Þ|\\<\\/3|<\\/3|\\:\'\\)|\\:\\-D|\'\\:\\)|\'\\=\\)|\'\\:D|\'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\=\\)|>\\=\\)|;\\-\\)|\\*\\-\\)|;\\-\\]|;\\^\\)|\'\\:\\(|\'\\=\\(|\\:\\-\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\-\\[|\\>\\:\\(|>\\:\\(|\\:\'\\(|;\\-\\(|\\>\\.\\<|>\\.<|#\\-\\)|%\\-\\)|X\\-\\)|\\\\0\\/|\\\\O\\/|0\\:3|0\\:\\)|O\\:\\)|O\\=\\)|O\\:3|B\\-\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\-P|\\:Þ|\\:Þ|\\:\\-b|\\:\\-O|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:\\-#|\\:\\-\\)|\\(y\\)|\\<3|<3|\\:D|\\=D|;\\)|\\*\\)|;\\]|;D|\\:\\*|\\=\\*|\\:\\(|\\:\\[|\\=\\(|\\:@|;\\(|D\\:|\\:\\$|\\=\\$|#\\)|%\\)|X\\)|B\\)|8\\)|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\=P|\\:b|\\:O|\\:X|\\:#|\\=X|\\=#|\\:\\)|\\=\\]|\\=\\)|\\:\\])'; const ASCII_REPLACE_REGEX = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)" + ASCII_REGEX + "(?=\\s|$|[!,.?]))", "gi"); const CODEPOINTS_REGEX = /(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g; -// CONCATENATED MODULE: ./src/headless/converse-emoji.js +// CONCATENATED MODULE: ./src/headless/plugins/emoji/index.js function _templateObject3() { const data = _taggedTemplateLiteral(["<img class=\"emoji\"\n draggable=\"false\"\n title=\"", "\"\n alt=\"", "\"\n src=\"", "\">"]); - _templateObject3 = function _templateObject3() { + _templateObject3 = function () { return data; }; @@ -75627,9 +79630,9 @@ function _templateObject3() { } function _templateObject2() { - const data = _taggedTemplateLiteral(["<img class=\"emoji\"\n draggable=\"false\"\n alt=\"", "\"\n src=\"", "/72x72/", ".png\"/>"]); + const data = _taggedTemplateLiteral(["<img class=\"emoji\"\n draggable=\"false\"\n title=\"", "\"\n alt=\"", "\"\n src=\"", "/72x72/", ".png\"/>"]); - _templateObject2 = function _templateObject2() { + _templateObject2 = function () { return data; }; @@ -75639,7 +79642,7 @@ function _templateObject2() { function _templateObject() { const data = _taggedTemplateLiteral(["<span title=\"", "\">", "</span>"]); - _templateObject = function _templateObject() { + _templateObject = function () { return data; }; @@ -75657,10 +79660,10 @@ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice( -const converse_emoji_u = converse.env.utils; +const emoji_u = converse.env.utils; converse.emojis = { 'initialized': false, - 'initialized_promise': converse_emoji_u.getResolveablePromise() + 'initialized_promise': emoji_u.getResolveablePromise() }; const ASCII_LIST = { '*\\0/*': '1f646', @@ -75779,7 +79782,6 @@ const ASCII_LIST = { '=)': '1f642', ':]': '1f642' }; -let shortnames_regex; function toCodePoint(unicode_surrogates) { const r = []; @@ -75813,7 +79815,7 @@ function fromCodePoint(codepoint) { return String.fromCharCode(0xD800 + (code >> 10), 0xDC00 + (code & 0x3FF)); } -function converse_emoji_convert(unicode) { +function emoji_convert(unicode) { // Converts unicode code points and code pairs to their respective characters if (unicode.indexOf("-") > -1) { const parts = [], @@ -75854,14 +79856,14 @@ function getTonedEmojis() { function convertASCII2Emoji(str) { // Replace ASCII smileys return str.replace(ASCII_REPLACE_REGEX, (entire, m1, m2, m3) => { - if (typeof m3 === 'undefined' || m3 === '' || !(converse_emoji_u.unescapeHTML(m3) in ASCII_LIST)) { + if (typeof m3 === 'undefined' || m3 === '' || !(emoji_u.unescapeHTML(m3) in ASCII_LIST)) { // if the ascii doesnt exist just return the entire match return entire; } - m3 = converse_emoji_u.unescapeHTML(m3); + m3 = emoji_u.unescapeHTML(m3); const unicode = ASCII_LIST[m3].toUpperCase(); - return m2 + converse_emoji_convert(unicode); + return m2 + emoji_convert(unicode); }); } function getEmojiMarkup(data, options = { @@ -75872,15 +79874,17 @@ function getEmojiMarkup(data, options = { const shortname = data.shortname; if (emoji) { - if (options.add_title_wrapper) { - if (converse_core_api.settings.get('use_system_emojis')) { + if (options.unicode_only) { + return emoji; + } else if (core_api.settings.get('use_system_emojis')) { + if (options.add_title_wrapper) { return shortname ? lit_html_html(_templateObject(), shortname, emoji) : emoji; } else { - const path = converse_core_api.settings.get('emoji_image_path'); - return lit_html_html(_templateObject2(), emoji, path, data.cp); + return emoji; } } else { - return emoji; + const path = core_api.settings.get('emoji_image_path'); + return lit_html_html(_templateObject2(), shortname, emoji, path, data.cp); } } else if (options.unicode_only) { return shortname; @@ -75893,7 +79897,7 @@ function getShortnameReferences(text) { throw new Error('getShortnameReferences called before emojis are initialized. ' + 'To avoid this problem, first await the converse.emojis.initilaized_promise.'); } - const references = [...text.matchAll(shortnames_regex)]; + const references = [...text.matchAll(converse.emojis.shortnames_regex)].filter(ref => ref[0].length > 0); return references.map(ref => { const cp = converse.emojis.by_sn[ref[0]].cp; return { @@ -75901,7 +79905,7 @@ function getShortnameReferences(text) { 'begin': ref.index, 'end': ref.index + ref[0].length, 'shortname': ref[0], - 'emoji': cp ? converse_emoji_convert(cp) : null + 'emoji': cp ? emoji_convert(cp) : null }; }); } @@ -75925,7 +79929,7 @@ function getCodePointReferences(text) { 'cp': icon_id, 'emoji': emoji, 'end': offset + emoji.length, - 'shortname': ((_u$getEmojisByAtrribu = converse_emoji_u.getEmojisByAtrribute('cp')[icon_id]) === null || _u$getEmojisByAtrribu === void 0 ? void 0 : _u$getEmojisByAtrribu.sn) || '' + 'shortname': ((_u$getEmojisByAtrribu = emoji_u.getEmojisByAtrribute('cp')[icon_id]) === null || _u$getEmojisByAtrribu === void 0 ? void 0 : _u$getEmojisByAtrribu.sn) || '' }); }); return references; @@ -75953,8 +79957,8 @@ converse.plugins.add('converse-emoji', { */ const { ___ - } = converse_core_converse; - converse_core_api.settings.extend({ + } = core_converse; + core_api.settings.extend({ 'emoji_image_path': 'https://twemoji.maxcdn.com/v/12.1.6/', 'emoji_categories': { "smileys": ":grinning:", @@ -75994,7 +79998,7 @@ converse.plugins.add('converse-emoji', { * @memberOf _converse */ - converse_core_converse.EmojiPicker = model_Model.extend({ + core_converse.EmojiPicker = model_Model.extend({ defaults: { 'current_category': 'smileys', 'current_skintone': '', @@ -76005,7 +80009,7 @@ converse.plugins.add('converse-emoji', { // Closured cache const emojis_by_attribute = {}; - Object.assign(converse_emoji_u, { + Object.assign(emoji_u, { /** * Returns an emoji represented by the passed in shortname. * Scans the passed in text for shortnames and replaces them with @@ -76048,7 +80052,7 @@ converse.plugins.add('converse-emoji', { * @returns { String } */ shortnamesToUnicode(str) { - return converse_emoji_u.shortnamesToEmojis(str, { + return emoji_u.shortnamesToEmojis(str, { 'unicode_only': true })[0]; }, @@ -76067,7 +80071,7 @@ converse.plugins.add('converse-emoji', { } const emojis = words.filter(text => { - const refs = getCodePointReferences(converse_emoji_u.shortnamesToUnicode(text)); + const refs = getCodePointReferences(emoji_u.shortnamesToUnicode(text)); return refs.length === 1 && (text === refs[0]['shortname'] || text === refs[0]['emoji']); }); return emojis.length === words.length; @@ -76101,7 +80105,7 @@ converse.plugins.add('converse-emoji', { /************************ BEGIN API ************************/ // We extend the default converse.js API to add methods specific to MUC groupchats. - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * @namespace api.emojis * @memberOf api @@ -76117,7 +80121,7 @@ converse.plugins.add('converse-emoji', { converse.emojis.initialized = true; const { default: json - } = await __webpack_require__.e(/* import() | emojis */ 137).then(__webpack_require__.t.bind(null, 458, 3)); + } = await __webpack_require__.e(/* import() | emojis */ 137).then(__webpack_require__.t.bind(null, 547, 3)); converse.emojis.json = json; converse.emojis.by_sn = Object.keys(json).reduce((result, cat) => Object.assign(result, json[cat]), {}); converse.emojis.list = Object.values(converse.emojis.by_sn); @@ -76126,7 +80130,7 @@ converse.plugins.add('converse-emoji', { const getShortNames = () => converse.emojis.shortnames.map(s => s.replace(/[+]/g, "\\$&")).join('|'); - shortnames_regex = new RegExp(getShortNames(), "gi"); + converse.emojis.shortnames_regex = new RegExp(getShortNames(), "gi"); converse.emojis.toned = getTonedEmojis(); converse.emojis.initialized_promise.resolve(); } @@ -76139,181 +80143,127 @@ converse.plugins.add('converse-emoji', { } }); -// CONCATENATED MODULE: ./node_modules/lodash-es/_baseZipObject.js -/** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ -function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; -} - -/* harmony default export */ var _baseZipObject = (baseZipObject); - -// CONCATENATED MODULE: ./node_modules/lodash-es/zipObject.js +// CONCATENATED MODULE: ./src/headless/plugins/muc/message.js /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } + * Mixing that turns a Message model into a ChatRoomMessage model. + * @class + * @namespace _converse.ChatRoomMessage + * @memberOf _converse */ -function zipObject(props, values) { - return _baseZipObject(props || [], values || [], _assignValue); -} - -/* harmony default export */ var lodash_es_zipObject = (zipObject); - -// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIntersection.js - +const ChatRoomMessageMixin = { + initialize() { + if (!this.checkValidity()) { + return; + } + if (this.get('file')) { + this.on('change:put', this.uploadFile, this); + } + if (!this.setTimerForEphemeralMessage()) { + this.setOccupant(); + } + /** + * Triggered once a {@link _converse.ChatRoomMessageInitialized} has been created and initialized. + * @event _converse#chatRoomMessageInitialized + * @type { _converse.ChatRoomMessages} + * @example _converse.api.listen.on('chatRoomMessageInitialized', model => { ... }); + */ + core_api.trigger('chatRoomMessageInitialized', this); + }, -/* Built-in method references for those with the same name as other `lodash` methods. */ -var _baseIntersection_nativeMin = Math.min; + /** + * Determines whether this messsage may be moderated, + * based on configuration settings and server support. + * @async + * @private + * @method _converse.ChatRoomMessages#mayBeModerated + * @returns { Boolean } + */ + mayBeModerated() { + return ['all', 'moderator'].includes(core_api.settings.get('allow_message_retraction')) && this.collection.chatbox.canModerateMessages(); + }, -/** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ -function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? _arrayIncludesWith : _arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; + checkValidity() { + const result = core_converse.Message.prototype.checkValidity.call(this); - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = _arrayMap(array, _baseUnary(iteratee)); - } - maxLength = _baseIntersection_nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new _SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; + !result && this.collection.chatbox.debouncedRejoin(); + return result; + }, - var index = -1, - seen = caches[0]; + onOccupantRemoved() { + var _this$collection; - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; + this.stopListening(this.occupant); + delete this.occupant; + const chatbox = this === null || this === void 0 ? void 0 : (_this$collection = this.collection) === null || _this$collection === void 0 ? void 0 : _this$collection.chatbox; - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? _cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? _cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); + if (!chatbox) { + return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); } - } - return result; -} -/* harmony default export */ var _baseIntersection = (baseIntersection); + this.listenTo(chatbox.occupants, 'add', this.onOccupantAdded); + }, -// CONCATENATED MODULE: ./node_modules/lodash-es/_castArrayLikeObject.js + onOccupantAdded(occupant) { + if (occupant.get('nick') === strophe["e" /* Strophe */].getResourceFromJid(this.get('from'))) { + var _this$collection2; + this.occupant = occupant; + this.trigger('occupantAdded'); + this.listenTo(this.occupant, 'destroy', this.onOccupantRemoved); + const chatbox = this === null || this === void 0 ? void 0 : (_this$collection2 = this.collection) === null || _this$collection2 === void 0 ? void 0 : _this$collection2.chatbox; -/** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ -function castArrayLikeObject(value) { - return lodash_es_isArrayLikeObject(value) ? value : []; -} + if (!chatbox) { + return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); + } -/* harmony default export */ var _castArrayLikeObject = (castArrayLikeObject); + this.stopListening(chatbox.occupants, 'add', this.onOccupantAdded); + } + }, -// CONCATENATED MODULE: ./node_modules/lodash-es/intersection.js + setOccupant() { + var _this$collection3; + if (this.get('type') !== 'groupchat') { + return; + } + const chatbox = this === null || this === void 0 ? void 0 : (_this$collection3 = this.collection) === null || _this$collection3 === void 0 ? void 0 : _this$collection3.chatbox; + if (!chatbox) { + return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); + } + const nick = strophe["e" /* Strophe */].getResourceFromJid(this.get('from')); + this.occupant = chatbox.occupants.findWhere({ + nick + }); -/** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ -var intersection = _baseRest(function(arrays) { - var mapped = _arrayMap(arrays, _castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? _baseIntersection(mapped) - : []; -}); + if (!this.occupant && core_api.settings.get('muc_send_probes')) { + this.occupant = chatbox.occupants.create({ + nick, + 'type': 'unavailable' + }); + const jid = "".concat(chatbox.get('jid'), "/").concat(nick); + core_api.user.presence.send('probe', jid); + } -/* harmony default export */ var lodash_es_intersection = (intersection); + if (this.occupant) { + this.listenTo(this.occupant, 'destroy', this.onOccupantRemoved); + } else { + this.listenTo(chatbox.occupants, 'add', this.onOccupantAdded); + } + } +}; +/* harmony default export */ var muc_message = (ChatRoomMessageMixin); // CONCATENATED MODULE: ./src/headless/utils/muc.js /** * @copyright The Converse.js contributors @@ -76434,6 +80384,55 @@ const muc_utils = { }; /* harmony default export */ var utils_muc = (muc_utils); +// CONCATENATED MODULE: ./src/headless/utils/parse-helpers.js +/** + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + * @description Pure functions to help functionally parse messages. + * @todo Other parsing helpers can be made more abstract and placed here. + */ +const helpers = {}; + +const escapeRegexChars = (string, char) => string.replace(RegExp('\\' + char, 'ig'), '\\' + char); + +helpers.escapeCharacters = characters => string => characters.split('').reduce(escapeRegexChars, string); + +helpers.escapeRegexString = helpers.escapeCharacters('[\\^$.?*+(){}'); // `for` is ~25% faster than using `Array.find()` + +helpers.findFirstMatchInArray = array => text => { + for (let i = 0; i < array.length; i++) { + if (text.localeCompare(array[i], undefined, { + sensitivity: 'base' + }) === 0) { + return array[i]; + } + } + + return null; +}; + +const reduceReferences = ([text, refs], ref, index) => { + let updated_text = text; + let { + begin, + end + } = ref; + const { + value + } = ref; + begin = begin - index; + end = end - index - 1; // -1 to compensate for the removed @ + + updated_text = "".concat(updated_text.slice(0, begin)).concat(value).concat(updated_text.slice(end + 1)); + return [updated_text, [...refs, { ...ref, + begin, + end + }]]; +}; + +helpers.reduceTextFromReferences = (text, refs) => refs.reduce(reduceReferences, [text, []]); + +/* harmony default export */ var parse_helpers = (helpers); // CONCATENATED MODULE: ./src/headless/utils/form.js /** * @copyright 2020, the Converse.js contributors @@ -76471,3356 +80470,3372 @@ utils_core.webForm2xForm = function (field) { }; /* harmony default export */ var utils_form = (utils_core); -// CONCATENATED MODULE: ./src/headless/utils/parse-helpers.js -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } +// CONCATENATED MODULE: ./node_modules/lodash-es/_baseZipObject.js +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +/* harmony default export */ var _baseZipObject = (baseZipObject); + +// CONCATENATED MODULE: ./node_modules/lodash-es/zipObject.js -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { parse_helpers_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } -function parse_helpers_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - * @description Pure functions to help funcitonally parse messages. - * @todo Other parsing helpers can be made more abstract and placed here. + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } */ -const helpers = {}; // Captures all mentions, but includes a space before the @ +function zipObject(props, values) { + return _baseZipObject(props || [], values || [], _assignValue); +} -helpers.mention_regex = /(?:\s|^)([@][\w_-]+(?:\.\w+)*)/gi; +/* harmony default export */ var lodash_es_zipObject = (zipObject); -helpers.matchRegexInText = text => regex => text.matchAll(regex); +// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIntersection.js -const escapeRegexChars = (string, char) => string.replace(RegExp('\\' + char, 'ig'), '\\' + char); -helpers.escapeCharacters = characters => string => characters.split('').reduce(escapeRegexChars, string); -helpers.escapeRegexString = helpers.escapeCharacters('[\\^$.?*+(){}'); // `for` is ~25% faster than using `Array.find()` -helpers.findFirstMatchInArray = array => text => { - for (let i = 0; i < array.length; i++) { - if (text.localeCompare(array[i], undefined, { - sensitivity: 'base' - }) === 0) { - return array[i]; + + + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var _baseIntersection_nativeMin = Math.min; + +/** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ +function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? _arrayIncludesWith : _arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = _arrayMap(array, _baseUnary(iteratee)); } + maxLength = _baseIntersection_nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new _SetCache(othIndex && array) + : undefined; } + array = arrays[0]; - return null; -}; - -const reduceReferences = ([text, refs], ref, index) => { - let updated_text = text; - let { - begin, - end - } = ref; - const { - value - } = ref; - begin = begin - index; - end = end - index - 1; // -1 to compensate for the removed @ + var index = -1, + seen = caches[0]; - updated_text = "".concat(updated_text.slice(0, begin)).concat(value).concat(updated_text.slice(end + 1)); - return [updated_text, [...refs, _objectSpread(_objectSpread({}, ref), {}, { - begin, - end - })]]; -}; + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; -helpers.reduceTextFromReferences = (text, refs) => refs.reduce(reduceReferences, [text, []]); + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? _cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? _cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} -/* harmony default export */ var parse_helpers = (helpers); -// CONCATENATED MODULE: ./src/headless/converse-muc.js -function converse_muc_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } +/* harmony default export */ var _baseIntersection = (baseIntersection); -function converse_muc_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { converse_muc_ownKeys(Object(source), true).forEach(function (key) { converse_muc_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { converse_muc_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } +// CONCATENATED MODULE: ./node_modules/lodash-es/_castArrayLikeObject.js -function converse_muc_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** - * @module converse-muc - * @copyright The Converse.js contributors - * @license Mozilla Public License (MPLv2) - * @description Implements the non-view logic for XEP-0045 Multi-User Chat + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. */ +function castArrayLikeObject(value) { + return lodash_es_isArrayLikeObject(value) ? value : []; +} +/* harmony default export */ var _castArrayLikeObject = (castArrayLikeObject); +// CONCATENATED MODULE: ./node_modules/lodash-es/intersection.js +/** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ +var intersection = _baseRest(function(arrays) { + var mapped = _arrayMap(arrays, _castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? _baseIntersection(mapped) + : []; +}); +/* harmony default export */ var lodash_es_intersection = (intersection); +// CONCATENATED MODULE: ./src/headless/plugins/muc/muc.js -const ROLES = ['moderator', 'participant', 'visitor']; -const AFFILIATIONS = ['owner', 'admin', 'member', 'outcast', 'none']; -converse.AFFILIATION_CHANGES = { - OWNER: 'owner', - ADMIN: 'admin', - MEMBER: 'member', - EXADMIN: 'exadmin', - EXOWNER: 'exowner', - EXOUTCAST: 'exoutcast', - EXMEMBER: 'exmember' -}; -converse.AFFILIATION_CHANGES_LIST = Object.values(converse.AFFILIATION_CHANGES); -converse.MUC_TRAFFIC_STATES = { - ENTERED: 'entered', - EXITED: 'exited' -}; -converse.MUC_TRAFFIC_STATES_LIST = Object.values(converse.MUC_TRAFFIC_STATES); -converse.MUC_ROLE_CHANGES = { - OP: 'op', - DEOP: 'deop', - VOICE: 'voice', - MUTE: 'mute' -}; -converse.MUC_ROLE_CHANGES_LIST = Object.values(converse.MUC_ROLE_CHANGES); -const ACTION_INFO_CODES = ['301', '303', '333', '307', '321', '322']; -converse.MUC_INFO_CODES = { - 'visibility_changes': ['100', '102', '103', '172', '173', '174'], - 'self': ['110'], - 'non_privacy_changes': ['104', '201'], - 'muc_logging_changes': ['170', '171'], - 'nickname_changes': ['210', '303'], - 'disconnect_messages': ['301', '307', '321', '322', '332', '333'], - 'affiliation_changes': [...converse.AFFILIATION_CHANGES_LIST], - 'join_leave_events': [...converse.MUC_TRAFFIC_STATES_LIST], - 'role_changes': [...converse.MUC_ROLE_CHANGES_LIST] -}; -const MUC_ROLE_WEIGHTS = { - 'moderator': 1, - 'participant': 2, - 'visitor': 3, - 'none': 2 -}; -const { - Strophe: converse_muc_Strophe, - $iq: converse_muc_$iq, - $build, - $msg: converse_muc_$msg, - $pres, - sizzle: converse_muc_sizzle -} = converse.env; // Add Strophe Namespaces -converse_muc_Strophe.addNamespace('MUC_ADMIN', converse_muc_Strophe.NS.MUC + "#admin"); -converse_muc_Strophe.addNamespace('MUC_OWNER', converse_muc_Strophe.NS.MUC + "#owner"); -converse_muc_Strophe.addNamespace('MUC_REGISTER', "jabber:iq:register"); -converse_muc_Strophe.addNamespace('MUC_ROOMCONF', converse_muc_Strophe.NS.MUC + "#roomconfig"); -converse_muc_Strophe.addNamespace('MUC_USER', converse_muc_Strophe.NS.MUC + "#user"); -converse_muc_Strophe.addNamespace('MUC_HATS', "xmpp:prosody.im/protocol/hats:1"); -converse.MUC_NICK_CHANGED_CODE = "303"; -converse.ROOM_FEATURES = ['passwordprotected', 'unsecured', 'hidden', 'publicroom', 'membersonly', 'open', 'persistent', 'temporary', 'nonanonymous', 'semianonymous', 'moderated', 'unmoderated', 'mam_enabled']; // No longer used in code, but useful as reference. -// -// const ROOM_FEATURES_MAP = { -// 'passwordprotected': 'unsecured', -// 'unsecured': 'passwordprotected', -// 'hidden': 'publicroom', -// 'publicroom': 'hidden', -// 'membersonly': 'open', -// 'open': 'membersonly', -// 'persistent': 'temporary', -// 'temporary': 'persistent', -// 'nonanonymous': 'semianonymous', -// 'semianonymous': 'nonanonymous', -// 'moderated': 'unmoderated', -// 'unmoderated': 'moderated' -// }; -converse.ROOMSTATUS = { - CONNECTED: 0, - CONNECTING: 1, - NICKNAME_REQUIRED: 2, - PASSWORD_REQUIRED: 3, - DISCONNECTED: 4, - ENTERED: 5, - DESTROYED: 6 -}; -converse.plugins.add('converse-muc', { - /* Optional dependencies are other plugins which might be - * overridden or relied upon, and therefore need to be loaded before - * this plugin. They are called "optional" because they might not be - * available, in which case any overrides applicable to them will be - * ignored. - * - * It's possible however to make optional dependencies non-optional. - * If the setting "strict_plugin_dependencies" is set to true, - * an error will be raised if the plugin is not found. - * - * NB: These plugins need to have already been loaded via require.js. - */ - dependencies: ["converse-chatboxes", "converse-chat", "converse-disco", "converse-controlbox"], - overrides: { - ChatBoxes: { - model(attrs, options) { - const { - _converse - } = this.__super__; - if (attrs && attrs.type == _converse.CHATROOMS_TYPE) { - return new _converse.ChatRoom(attrs, options); - } else { - return this.__super__.model.apply(this, arguments); - } - } - } - }, - initialize() { - /* The initialize function gets called as soon as the plugin is - * loaded by converse.js's plugin machinery. - */ - const { - __, - ___ - } = converse_core_converse; // Configuration values for this plugin - // ==================================== - // Refer to docs/source/configuration.rst for explanations of these - // configuration settings. - converse_core_api.settings.extend({ - 'allow_muc': true, - 'allow_muc_invitations': true, - 'auto_join_on_invite': false, - 'auto_join_rooms': [], - 'auto_register_muc_nickname': false, - 'locked_muc_domain': false, - 'muc_domain': undefined, - 'muc_fetch_members': true, - 'muc_history_max_stanzas': undefined, - 'muc_instant_rooms': true, - 'muc_nickname_from_jid': false, - 'muc_send_probes': false, - 'muc_show_info_messages': [...converse.MUC_INFO_CODES.visibility_changes, ...converse.MUC_INFO_CODES.self, ...converse.MUC_INFO_CODES.non_privacy_changes, ...converse.MUC_INFO_CODES.muc_logging_changes, ...converse.MUC_INFO_CODES.nickname_changes, ...converse.MUC_INFO_CODES.disconnect_messages, ...converse.MUC_INFO_CODES.affiliation_changes, ...converse.MUC_INFO_CODES.join_leave_events, ...converse.MUC_INFO_CODES.role_changes], - 'muc_show_logs_before_join': false - }); - converse_core_api.promises.add(['roomsAutoJoined']); - if (converse_core_api.settings.get('locked_muc_domain') && typeof converse_core_api.settings.get('muc_domain') !== 'string') { - throw new Error("Config Error: it makes no sense to set locked_muc_domain " + "to true when muc_domain is not set"); - } - /* https://xmpp.org/extensions/xep-0045.html - * ---------------------------------------- - * 100 message Entering a groupchat Inform user that any occupant is allowed to see the user's full JID - * 101 message (out of band) Affiliation change Inform user that his or her affiliation changed while not in the groupchat - * 102 message Configuration change Inform occupants that groupchat now shows unavailable members - * 103 message Configuration change Inform occupants that groupchat now does not show unavailable members - * 104 message Configuration change Inform occupants that a non-privacy-related groupchat configuration change has occurred - * 110 presence Any groupchat presence Inform user that presence refers to one of its own groupchat occupants - * 170 message or initial presence Configuration change Inform occupants that groupchat logging is now enabled - * 171 message Configuration change Inform occupants that groupchat logging is now disabled - * 172 message Configuration change Inform occupants that the groupchat is now non-anonymous - * 173 message Configuration change Inform occupants that the groupchat is now semi-anonymous - * 174 message Configuration change Inform occupants that the groupchat is now fully-anonymous - * 201 presence Entering a groupchat Inform user that a new groupchat has been created - * 210 presence Entering a groupchat Inform user that the service has assigned or modified the occupant's roomnick - * 301 presence Removal from groupchat Inform user that he or she has been banned from the groupchat - * 303 presence Exiting a groupchat Inform all occupants of new groupchat nickname - * 307 presence Removal from groupchat Inform user that he or she has been kicked from the groupchat - * 321 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because of an affiliation change - * 322 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because the groupchat has been changed to members-only and the user is not a member - * 332 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because of a system shutdown - */ +const ACTION_INFO_CODES = ['301', '303', '333', '307', '321', '322']; +const MUCSession = model_Model.extend({ + defaults() { + return { + 'connection_status': converse.ROOMSTATUS.DISCONNECTED + }; + } +}); +/** + * Represents an open/ongoing groupchat conversation. + * @mixin + * @namespace _converse.ChatRoom + * @memberOf _converse + */ - converse_core_converse.muc = { - info_messages: { - 100: __('This groupchat is not anonymous'), - 102: __('This groupchat now shows unavailable members'), - 103: __('This groupchat does not show unavailable members'), - 104: __('The groupchat configuration has changed'), - 170: __('Groupchat logging is now enabled'), - 171: __('Groupchat logging is now disabled'), - 172: __('This groupchat is now no longer anonymous'), - 173: __('This groupchat is now semi-anonymous'), - 174: __('This groupchat is now fully-anonymous'), - 201: __('A new groupchat has been created') - }, - new_nickname_messages: { - // XXX: Note the triple underscore function and not double underscore. - 210: ___('Your nickname has been automatically set to %1$s'), - 303: ___('Your nickname has been changed to %1$s') - }, - disconnect_messages: { - 301: __('You have been banned from this groupchat'), - 333: __('You have exited this groupchat due to a technical problem'), - 307: __('You have been kicked from this groupchat'), - 321: __("You have been removed from this groupchat because of an affiliation change"), - 322: __("You have been removed from this groupchat because the groupchat has changed to members-only and you're not a member"), - 332: __("You have been removed from this groupchat because the service hosting it is being shut down") - } +const ChatRoomMixin = { + defaults() { + return { + // For group chats, we distinguish between generally unread + // messages and those ones that specifically mention the + // user. + // + // To keep things simple, we reuse `num_unread` from + // _converse.ChatBox to indicate unread messages which + // mention the user and `num_unread_general` to indicate + // generally unread messages (which *includes* mentions!). + 'num_unread_general': 0, + 'bookmarked': false, + 'chat_state': undefined, + 'hidden': core_converse.isUniView() && !core_api.settings.get('singleton'), + 'hidden_occupants': !!core_api.settings.get('hide_muc_participants'), + 'message_type': 'groupchat', + 'name': '', + 'num_unread': 0, + 'roomconfig': {}, + 'time_opened': this.get('time_opened') || new Date().getTime(), + 'time_sent': new Date(0).toISOString(), + 'type': core_converse.CHATROOMS_TYPE }; + }, + + async initialize() { + this.initialized = utils_form.getResolveablePromise(); + this.debouncedRejoin = lodash_es_debounce(this.rejoin, 250); + this.set('box_id', "box-".concat(this.get('jid'))); + this.initNotifications(); + this.initMessages(); + this.initOccupants(); + this.initDiscoModels(); // sendChatState depends on this.features + + this.registerHandlers(); + this.on('change:chat_state', this.sendChatState, this); + await this.restoreSession(); + this.session.on('change:connection_status', this.onConnectionStatusChanged, this); + this.listenTo(this.occupants, 'add', this.onOccupantAdded); + this.listenTo(this.occupants, 'remove', this.onOccupantRemoved); + this.listenTo(this.occupants, 'change:show', this.onOccupantShowChanged); + this.listenTo(this.occupants, 'change:affiliation', this.createAffiliationChangeMessage); + this.listenTo(this.occupants, 'change:role', this.createRoleChangeMessage); + const restored = await this.restoreFromCache(); + + if (!restored) { + this.join(); + } /** - * Determines info message visibility based on - * muc_show_info_messages configuration setting - * @param {*} code - * @memberOf _converse + * Triggered once a {@link _converse.ChatRoom} has been created and initialized. + * @event _converse#chatRoomInitialized + * @type { _converse.ChatRoom } + * @example _converse.api.listen.on('chatRoomInitialized', model => { ... }); */ - converse_core_converse.isInfoVisible = function (code) { - const info_messages = converse_core_api.settings.get('muc_show_info_messages'); - if (info_messages.includes(code)) { - return true; - } + await core_api.trigger('chatRoomInitialized', this, { + 'Synchronous': true + }); + this.initialized.resolve(); + }, + /** + * Checks whether we're still joined and if so, restores the MUC state from cache. + * @private + * @method _converse.ChatRoom#restoreFromCache + * @returns { Boolean } Returns `true` if we're still joined, otherwise returns `false`. + */ + async restoreFromCache() { + if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && (await this.isJoined())) { + // We've restored the room from cache and we're still joined. + await new Promise(resolve => this.features.fetch({ + 'success': resolve, + 'error': resolve + })); + await this.fetchOccupants().catch(e => headless_log.error(e)); + await this.fetchMessages().catch(e => headless_log.error(e)); + return true; + } else { + await this.clearCache(); return false; - }; + } + }, - async function openRoom(jid) { - if (!utils_form.isValidMUCJID(jid)) { - return headless_log.warn("invalid jid \"".concat(jid, "\" provided in url fragment")); - } + /** + * Join the MUC + * @private + * @method _converse.ChatRoom#join + * @param { String } nick - The user's nickname + * @param { String } [password] - Optional password, if required by the groupchat. + * Will fall back to the `password` value stored in the room + * model (if available). + */ + async join(nick, password) { + if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED) { + // We have restored a groupchat from session storage, + // so we don't send out a presence stanza again. + return this; + } + + await this.refreshDiscoInfo(); + nick = await this.getAndPersistNickname(nick); - await converse_core_api.waitUntil('roomsAutoJoined'); + if (!nick) { + utils_form.safeSave(this.session, { + 'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED + }); - if (converse_core_api.settings.get('allow_bookmarks')) { - await converse_core_api.waitUntil('bookmarksInitialized'); + if (core_api.settings.get('muc_show_logs_before_join')) { + await this.fetchMessages(); } - converse_core_api.rooms.open(jid); + return this; } - converse_core_converse.router.route('converse/room?jid=:jid', openRoom); + const stanza = Object(strophe["d" /* $pres */])({ + 'from': core_converse.connection.jid, + 'to': this.getRoomJIDAndNick() + }).c('x', { + 'xmlns': strophe["e" /* Strophe */].NS.MUC + }).c('history', { + 'maxstanzas': this.features.get('mam_enabled') ? 0 : core_api.settings.get('muc_history_max_stanzas') + }).up(); + password = password || this.get('password'); - converse_core_converse.getDefaultMUCNickname = function () { - // XXX: if anything changes here, update the docs for the - // locked_muc_nickname setting. - if (!converse_core_converse.xmppstatus) { - throw new Error("Can't call _converse.getDefaultMUCNickname before the statusInitialized has been fired."); - } + if (password) { + stanza.cnode(strophe["e" /* Strophe */].xmlElement('password', [], password)); + } - const nick = converse_core_converse.xmppstatus.getNickname(); + this.session.save('connection_status', converse.ROOMSTATUS.CONNECTING); + core_api.send(stanza); + return this; + }, - if (nick) { - return nick; - } else if (converse_core_api.settings.get('muc_nickname_from_jid')) { - return converse_muc_Strophe.unescapeNode(converse_muc_Strophe.getNodeFromJid(converse_core_converse.bare_jid)); - } - }; + async clearCache() { + this.session.save('connection_status', converse.ROOMSTATUS.DISCONNECTED); - async function openChatRoom(jid, settings) { - /* Opens a groupchat, making sure that certain attributes - * are correct, for example that the "type" is set to - * "chatroom". - */ - settings.type = converse_core_converse.CHATROOMS_TYPE; - settings.id = jid; - const chatbox = await converse_core_api.rooms.get(jid, settings, true); - chatbox.maybeShow(true); - return chatbox; + if (this.occupants.length) { + // Remove non-members when reconnecting + this.occupants.filter(o => !o.isMember()).forEach(o => o.destroy()); + } else { + // Looks like we haven't restored occupants from cache, so we clear it. + this.occupants.clearStore(); } - /** - * Represents a MUC message - * @class - * @namespace _converse.ChatRoomMessage - * @memberOf _converse - */ + if (core_api.settings.get('clear_messages_on_reconnection')) { + await this.clearMessages(); + } + }, - converse_core_converse.ChatRoomMessage = converse_core_converse.Message.extend({ - initialize() { - if (!this.checkValidity()) { - return; - } + onOccupantAdded(occupant) { + if (core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.ENTERED) && this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && occupant.get('show') === 'online') { + this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.ENTERED); + } + }, - if (this.get('file')) { - this.on('change:put', this.uploadFile, this); - } + onOccupantRemoved(occupant) { + if (core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.EXITED) && this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && occupant.get('show') === 'online') { + this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.EXITED); + } + }, - if (!this.setTimerForEphemeralMessage()) { - this.setOccupant(); - } - /** - * Triggered once a {@link _converse.ChatRoomMessageInitialized} has been created and initialized. - * @event _converse#chatRoomMessageInitialized - * @type { _converse.ChatRoomMessages} - * @example _converse.api.listen.on('chatRoomMessageInitialized', model => { ... }); - */ + onOccupantShowChanged(occupant) { + if (occupant.get('states').includes('303')) { + return; + } + if (occupant.get('show') === 'offline' && core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.EXITED)) { + this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.EXITED); + } else if (occupant.get('show') === 'online' && core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.ENTERED)) { + this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.ENTERED); + } + }, - converse_core_api.trigger('chatRoomMessageInitialized', this); - }, + /** + * Clear stale cache and re-join a MUC we've been in before. + * @private + * @method _converse.ChatRoom#rejoin + */ + rejoin() { + this.clearCache(); + return this.join(); + }, + async onConnectionStatusChanged() { + if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED) { + await this.occupants.fetchMembers(); + await this.fetchMessages(); /** - * Determines whether this messsage may be moderated, - * based on configuration settings and server support. - * @async - * @private - * @method _converse.ChatRoomMessages#mayBeModerated - * @returns { Boolean } + * Triggered when the user has entered a new MUC + * @event _converse#enteredNewRoom + * @type { _converse.ChatRoom} + * @example _converse.api.listen.on('enteredNewRoom', model => { ... }); */ - mayBeModerated() { - return ['all', 'moderator'].includes(converse_core_api.settings.get('allow_message_retraction')) && this.collection.chatbox.canModerateMessages(); - }, - checkValidity() { - const result = converse_core_converse.Message.prototype.checkValidity.call(this); + core_api.trigger('enteredNewRoom', this); - !result && this.collection.chatbox.debouncedRejoin(); - return result; - }, - - onOccupantRemoved() { - var _this$collection; + if (core_api.settings.get('auto_register_muc_nickname') && (await core_api.disco.supports(strophe["e" /* Strophe */].NS.MUC_REGISTER, this.get('jid')))) { + this.registerNickname(); + } + } + }, - this.stopListening(this.occupant); - delete this.occupant; - const chatbox = this === null || this === void 0 ? void 0 : (_this$collection = this.collection) === null || _this$collection === void 0 ? void 0 : _this$collection.chatbox; + async onReconnection() { + this.registerHandlers(); + await this.rejoin(); + this.announceReconnection(); + }, - if (!chatbox) { - return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); - } + getMessagesCollection() { + return new core_converse.ChatRoomMessages(); + }, - this.listenTo(chatbox.occupants, 'add', this.onOccupantAdded); - }, + restoreSession() { + const id = "muc.session-".concat(core_converse.bare_jid, "-").concat(this.get('jid')); + this.session = new MUCSession({ + id + }); + this.session.browserStorage = core_converse.createStore(id, 'session'); + return new Promise(r => this.session.fetch({ + 'success': r, + 'error': r + })); + }, - onOccupantAdded(occupant) { - if (occupant.get('nick') === converse_muc_Strophe.getResourceFromJid(this.get('from'))) { - var _this$collection2; + initDiscoModels() { + let id = "converse.muc-features-".concat(core_converse.bare_jid, "-").concat(this.get('jid')); + this.features = new model_Model(Object.assign({ + id + }, lodash_es_zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(() => false)))); + this.features.browserStorage = core_converse.createStore(id, 'session'); + id = "converse.muc-config-{_converse.bare_jid}-".concat(this.get('jid')); + this.config = new model_Model(); + this.config.browserStorage = core_converse.createStore(id, 'session'); + }, - this.occupant = occupant; - this.trigger('occupantAdded'); - this.listenTo(this.occupant, 'destroy', this.onOccupantRemoved); - const chatbox = this === null || this === void 0 ? void 0 : (_this$collection2 = this.collection) === null || _this$collection2 === void 0 ? void 0 : _this$collection2.chatbox; + initOccupants() { + this.occupants = new core_converse.ChatRoomOccupants(); + const id = "converse.occupants-".concat(core_converse.bare_jid).concat(this.get('jid')); + this.occupants.browserStorage = core_converse.createStore(id, 'session'); + this.occupants.chatroom = this; + }, - if (!chatbox) { - return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); - } + fetchOccupants() { + this.occupants.fetched = new Promise(resolve => { + this.occupants.fetch({ + 'add': true, + 'silent': true, + 'success': resolve, + 'error': resolve + }); + }); + return this.occupants.fetched; + }, - this.stopListening(chatbox.occupants, 'add', this.onOccupantAdded); - } - }, + handleAffiliationChangedMessage(stanza) { + const item = sizzle_default()("x[xmlns=\"".concat(strophe["e" /* Strophe */].NS.MUC_USER, "\"] item"), stanza).pop(); - setOccupant() { - var _this$collection3; + if (item) { + const from = stanza.getAttribute('from'); + const type = stanza.getAttribute('type'); + const affiliation = item.getAttribute('affiliation'); + const jid = item.getAttribute('jid'); + const data = { + from, + type, + affiliation, + 'nick': strophe["e" /* Strophe */].getNodeFromJid(jid), + 'states': [], + 'show': type == 'unavailable' ? 'offline' : 'online', + 'role': item.getAttribute('role'), + 'jid': strophe["e" /* Strophe */].getBareJidFromJid(jid), + 'resource': strophe["e" /* Strophe */].getResourceFromJid(jid) + }; + const occupant = this.occupants.findOccupant({ + 'jid': data.jid + }); - if (this.get('type') !== 'groupchat') { - return; - } + if (occupant) { + occupant.save(data); + } else { + this.occupants.create(data); + } + } + }, - const chatbox = this === null || this === void 0 ? void 0 : (_this$collection3 = this.collection) === null || _this$collection3 === void 0 ? void 0 : _this$collection3.chatbox; + async handleErrorMessageStanza(stanza) { + const { + __ + } = core_converse; + const attrs = await utils_stanza.parseMUCMessage(stanza, this, core_converse); - if (!chatbox) { - return headless_log.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON()))); - } + if (!(await this.shouldShowErrorMessage(attrs))) { + return; + } - const nick = converse_muc_Strophe.getResourceFromJid(this.get('from')); - this.occupant = chatbox.occupants.findWhere({ - nick - }); + const message = this.getMessageReferencedByError(attrs); - if (!this.occupant && converse_core_api.settings.get("muc_send_probes")) { - this.occupant = chatbox.occupants.create({ - nick, - 'type': 'unavailable' - }); - const jid = "".concat(chatbox.get('jid'), "/").concat(nick); - converse_core_api.user.presence.send('probe', jid); - } + if (message) { + const new_attrs = { + 'error': attrs.error, + 'error_condition': attrs.error_condition, + 'error_text': attrs.error_text, + 'error_type': attrs.error_type, + 'editable': false + }; - if (this.occupant) { - this.listenTo(this.occupant, 'destroy', this.onOccupantRemoved); + if (attrs.msgid === message.get('retraction_id')) { + // The error message refers to a retraction + new_attrs.retraction_id = undefined; + + if (!attrs.error) { + if (attrs.error_condition === 'forbidden') { + new_attrs.error = __("You're not allowed to retract your message."); + } else if (attrs.error_condition === 'not-acceptable') { + new_attrs.error = __("Your retraction was not delivered because you're not present in the groupchat."); + } else { + new_attrs.error = __('Sorry, an error occurred while trying to retract your message.'); + } + } + } else if (!attrs.error) { + if (attrs.error_condition === 'forbidden') { + new_attrs.error = __("Your message was not delivered because you weren't allowed to send it."); + } else if (attrs.error_condition === 'not-acceptable') { + new_attrs.error = __("Your message was not delivered because you're not present in the groupchat."); } else { - this.listenTo(chatbox.occupants, 'add', this.onOccupantAdded); + new_attrs.error = __('Sorry, an error occurred while trying to send your message.'); } } - }); - const MUCSession = model_Model.extend({ - defaults() { - return { - 'connection_status': converse.ROOMSTATUS.DISCONNECTED - }; - } + message.save(new_attrs); + } else { + this.createMessage(attrs); + } + }, - }); + /** + * Parses an incoming message stanza and queues it for processing. + * @private + * @method _converse.ChatRoom#handleMessageStanza + * @param { XMLElement } stanza + */ + async handleMessageStanza(stanza) { + if (utils_stanza.isArchived(stanza)) { + // MAM messages are handled in converse-mam. + // We shouldn't get MAM messages here because + // they shouldn't have a `type` attribute. + return headless_log.warn("Received a MAM message with type \"groupchat\""); + } + + this.createInfoMessages(stanza); + this.fetchFeaturesIfConfigurationChanged(stanza); /** - * Collection which stores MUC messages - * @class - * @namespace _converse.ChatRoomMessages - * @memberOf _converse + * @typedef { Object } MUCMessageData + * An object containing the original groupchat message stanza, + * as well as the parsed attributes. + * @property { XMLElement } stanza + * @property { MUCMessageAttributes } attrs + * @property { ChatRoom } chatbox */ - converse_core_converse.ChatRoomMessages = collection_Collection.extend({ - model: converse_core_converse.ChatRoomMessage, - comparator: 'time' - }); + const attrs = await utils_stanza.parseMUCMessage(stanza, this, core_converse); + const data = { + stanza, + attrs, + 'chatbox': this + }; /** - * Represents an open/ongoing groupchat conversation. - * @class - * @namespace _converse.ChatRoom - * @memberOf _converse + * Triggered when a groupchat message stanza has been received and parsed. + * @event _converse#message + * @type { object } + * @property { module:converse-muc~MUCMessageData } data */ - converse_core_converse.ChatRoom = converse_core_converse.ChatBox.extend({ - messagesCollection: converse_core_converse.ChatRoomMessages, + core_api.trigger('message', data); + return attrs && this.queueMessage(attrs); + }, - defaults() { - return { - // For group chats, we distinguish between generally unread - // messages and those ones that specifically mention the - // user. - // - // To keep things simple, we reuse `num_unread` from - // _converse.ChatBox to indicate unread messages which - // mention the user and `num_unread_general` to indicate - // generally unread messages (which *includes* mentions!). - 'num_unread_general': 0, - 'bookmarked': false, - 'chat_state': undefined, - 'hidden': converse_core_converse.isUniView() && !converse_core_api.settings.get('singleton'), - 'message_type': 'groupchat', - 'name': '', - 'num_unread': 0, - 'roomconfig': {}, - 'time_opened': this.get('time_opened') || new Date().getTime(), - 'time_sent': new Date(0).toISOString(), - 'type': converse_core_converse.CHATROOMS_TYPE - }; - }, + registerHandlers() { + // Register presence and message handlers for this groupchat + const room_jid = this.get('jid'); + this.removeHandlers(); + this.presence_handler = core_converse.connection.addHandler(stanza => this.onPresence(stanza) || true, null, 'presence', null, null, room_jid, { + 'ignoreNamespaceFragment': true, + 'matchBareFromJid': true + }); + this.message_handler = core_converse.connection.addHandler(stanza => !!this.handleMessageStanza(stanza) || true, null, 'message', 'groupchat', null, room_jid, { + 'matchBareFromJid': true + }); + this.affiliation_message_handler = core_converse.connection.addHandler(stanza => this.handleAffiliationChangedMessage(stanza) || true, strophe["e" /* Strophe */].NS.MUC_USER, 'message', null, null, room_jid); + }, - async initialize() { - this.initialized = utils_form.getResolveablePromise(); - this.debouncedRejoin = lodash_es_debounce(this.rejoin, 250); - this.set('box_id', "box-".concat(this.get('jid'))); - this.initNotifications(); - this.initMessages(); - this.initOccupants(); - this.initDiscoModels(); // sendChatState depends on this.features - - this.registerHandlers(); - this.on('change:chat_state', this.sendChatState, this); - await this.restoreSession(); - this.session.on('change:connection_status', this.onConnectionStatusChanged, this); - this.listenTo(this.occupants, 'add', this.onOccupantAdded); - this.listenTo(this.occupants, 'remove', this.onOccupantRemoved); - this.listenTo(this.occupants, 'change:show', this.onOccupantShowChanged); - this.listenTo(this.occupants, 'change:affiliation', this.createAffiliationChangeMessage); - this.listenTo(this.occupants, 'change:role', this.createRoleChangeMessage); - const restored = await this.restoreFromCache(); - - if (!restored) { - this.join(); - } - /** - * Triggered once a {@link _converse.ChatRoom} has been created and initialized. - * @event _converse#chatRoomInitialized - * @type { _converse.ChatRoom } - * @example _converse.api.listen.on('chatRoomInitialized', model => { ... }); - */ + removeHandlers() { + // Remove the presence and message handlers that were + // registered for this groupchat. + if (this.message_handler) { + core_converse.connection && core_converse.connection.deleteHandler(this.message_handler); + delete this.message_handler; + } + if (this.presence_handler) { + core_converse.connection && core_converse.connection.deleteHandler(this.presence_handler); + delete this.presence_handler; + } - await converse_core_api.trigger('chatRoomInitialized', this, { - 'Synchronous': true - }); - this.initialized.resolve(); - }, + if (this.affiliation_message_handler) { + core_converse.connection && core_converse.connection.deleteHandler(this.affiliation_message_handler); + delete this.affiliation_message_handler; + } - /** - * Checks whether we're still joined and if so, restores the MUC state from cache. - * @private - * @method _converse.ChatRoom#restoreFromCache - * @returns { Boolean } Returns `true` if we're still joined, otherwise returns `false`. - */ - async restoreFromCache() { - if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && (await this.isJoined())) { - // We've restored the room from cache and we're still joined. - await new Promise(resolve => this.features.fetch({ - 'success': resolve, - 'error': resolve - })); - await this.fetchOccupants(); - await this.fetchMessages(); - return true; - } else { - await this.clearCache(); - return false; - } - }, + return this; + }, - /** - * Join the MUC - * @private - * @method _converse.ChatRoom#join - * @param { String } nick - The user's nickname - * @param { String } [password] - Optional password, if required by the groupchat. - * Will fall back to the `password` value stored in the room - * model (if available). - */ - async join(nick, password) { - if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED) { - // We have restored a groupchat from session storage, - // so we don't send out a presence stanza again. - return this; - } + invitesAllowed() { + return core_api.settings.get('allow_muc_invitations') && (this.features.get('open') || this.getOwnAffiliation() === 'owner'); + }, - await this.refreshDiscoInfo(); - nick = await this.getAndPersistNickname(nick); + getDisplayName() { + const name = this.get('name'); - if (!nick) { - utils_form.safeSave(this.session, { - 'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED - }); + if (name) { + return name; + } else if (core_api.settings.get('locked_muc_domain') === 'hidden') { + return strophe["e" /* Strophe */].getNodeFromJid(this.get('jid')); + } else { + return this.get('jid'); + } + }, - if (converse_core_api.settings.get('muc_show_logs_before_join')) { - await this.fetchMessages(); - } + /** + * Sends a message stanza to the XMPP server and expects a reflection + * or error message within a specific timeout period. + * @private + * @method _converse.ChatRoom#sendTimedMessage + * @param { _converse.Message|XMLElement } message + * @returns { Promise<XMLElement>|Promise<_converse.TimeoutError> } Returns a promise + * which resolves with the reflected message stanza or rejects + * with an error stanza or with a {@link _converse.TimeoutError}. + */ + sendTimedMessage(el) { + if (typeof el.tree === 'function') { + el = el.tree(); + } - return this; - } + let id = el.getAttribute('id'); - const stanza = $pres({ - 'from': converse_core_converse.connection.jid, - 'to': this.getRoomJIDAndNick() - }).c("x", { - 'xmlns': converse_muc_Strophe.NS.MUC - }).c("history", { - 'maxstanzas': this.features.get('mam_enabled') ? 0 : converse_core_api.settings.get('muc_history_max_stanzas') - }).up(); - password = password || this.get('password'); + if (!id) { + // inject id if not found + id = this.getUniqueId('sendIQ'); + el.setAttribute('id', id); + } - if (password) { - stanza.cnode(converse_muc_Strophe.xmlElement("password", [], password)); - } + const promise = utils_form.getResolveablePromise(); - this.session.save('connection_status', converse.ROOMSTATUS.CONNECTING); - converse_core_api.send(stanza); - return this; - }, + const timeoutHandler = core_converse.connection.addTimedHandler(core_converse.STANZA_TIMEOUT, () => { + core_converse.connection.deleteHandler(handler); - async fetchMessages() { - await converse_core_converse.ChatBox.prototype.fetchMessages.call(this); - const queued_messages = this.message_queue.map(m => this.queueMessage(m)); - this.message_queue = []; - return Promise.all(queued_messages); - }, + promise.reject(new core_converse.TimeoutError('Timeout Error: No response from server')); + return false; + }); - async clearCache() { - this.session.save('connection_status', converse.ROOMSTATUS.DISCONNECTED); + const handler = core_converse.connection.addHandler(stanza => { + timeoutHandler && core_converse.connection.deleteTimedHandler(timeoutHandler); - if (this.occupants.length) { - // Remove non-members when reconnecting - this.occupants.filter(o => !o.isMember()).forEach(o => o.destroy()); - } else { - // Looks like we haven't restored occupants from cache, so we clear it. - this.occupants.clearStore(); - } + if (stanza.getAttribute('type') === 'groupchat') { + promise.resolve(stanza); + } else { + promise.reject(stanza); + } + }, null, 'message', ['error', 'groupchat'], id); - if (converse_core_api.settings.get('clear_messages_on_reconnection')) { - await this.clearMessages(); - } - }, + core_api.send(el); + return promise; + }, - onOccupantAdded(occupant) { - if (converse_core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.ENTERED) && this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && occupant.get('show') === 'online') { - this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.ENTERED); - } - }, + /** + * Retract one of your messages in this groupchat + * @private + * @method _converse.ChatRoom#retractOwnMessage + * @param { _converse.Message } message - The message which we're retracting. + */ + async retractOwnMessage(message) { + const __ = core_converse.__; + const origin_id = message.get('origin_id'); + + if (!origin_id) { + throw new Error("Can't retract message without a XEP-0359 Origin ID"); + } + + const editable = message.get('editable'); + const stanza = Object(strophe["c" /* $msg */])({ + 'id': utils_form.getUniqueId(), + 'to': this.get('jid'), + 'type': 'groupchat' + }).c('store', { + xmlns: strophe["e" /* Strophe */].NS.HINTS + }).up().c('apply-to', { + 'id': origin_id, + 'xmlns': strophe["e" /* Strophe */].NS.FASTEN + }).c('retract', { + xmlns: strophe["e" /* Strophe */].NS.RETRACT + }); // Optimistic save + + message.set({ + 'retracted': new Date().toISOString(), + 'retracted_id': origin_id, + 'retraction_id': stanza.nodeTree.getAttribute('id'), + 'editable': false + }); - onOccupantRemoved(occupant) { - if (converse_core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.EXITED) && this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED && occupant.get('show') === 'online') { - this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.EXITED); - } - }, + try { + await this.sendTimedMessage(stanza); + } catch (e) { + message.save({ + editable, + 'error_type': 'timeout', + 'error': __('A timeout happened while while trying to retract your message.'), + 'retracted': undefined, + 'retracted_id': undefined + }); + throw e; + } + }, - onOccupantShowChanged(occupant) { - if (occupant.get('states').includes('303')) { - return; - } + /** + * Retract someone else's message in this groupchat. + * @private + * @method _converse.ChatRoom#retractOtherMessage + * @param { _converse.Message } message - The message which we're retracting. + * @param { string } [reason] - The reason for retracting the message. + */ + async retractOtherMessage(message, reason) { + const editable = message.get('editable'); // Optimistic save + + message.save({ + 'moderated': 'retracted', + 'moderated_by': core_converse.bare_jid, + 'moderated_id': message.get('msgid'), + 'moderation_reason': reason, + 'editable': false + }); + const result = await this.sendRetractionIQ(message, reason); + + if (result === null || utils_form.isErrorStanza(result)) { + // Undo the save if something went wrong + message.save({ + editable, + 'moderated': undefined, + 'moderated_by': undefined, + 'moderated_id': undefined, + 'moderation_reason': undefined + }); + } - if (occupant.get('show') === 'offline' && converse_core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.EXITED)) { - this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.EXITED); - } else if (occupant.get('show') === 'online' && converse_core_converse.isInfoVisible(converse.MUC_TRAFFIC_STATES.ENTERED)) { - this.updateNotifications(occupant.get('nick'), converse.MUC_TRAFFIC_STATES.ENTERED); - } - }, + return result; + }, - /** - * Clear stale cache and re-join a MUC we've been in before. - * @private - * @method _converse.ChatRoom#rejoin - */ - rejoin() { - this.clearCache(); - return this.join(); - }, + /** + * Sends an IQ stanza to the XMPP server to retract a message in this groupchat. + * @private + * @method _converse.ChatRoom#sendRetractionIQ + * @param { _converse.Message } message - The message which we're retracting. + * @param { string } [reason] - The reason for retracting the message. + */ + sendRetractionIQ(message, reason) { + const iq = Object(strophe["b" /* $iq */])({ + 'to': this.get('jid'), + 'type': 'set' + }).c('apply-to', { + 'id': message.get("stanza_id ".concat(this.get('jid'))), + 'xmlns': strophe["e" /* Strophe */].NS.FASTEN + }).c('moderate', { + xmlns: strophe["e" /* Strophe */].NS.MODERATE + }).c('retract', { + xmlns: strophe["e" /* Strophe */].NS.RETRACT + }).up().c('reason').t(reason || ''); + return core_api.sendIQ(iq, null, false); + }, + + /** + * Sends an IQ stanza to the XMPP server to destroy this groupchat. Not + * to be confused with the {@link _converse.ChatRoom#destroy} + * method, which simply removes the room from the local browser storage cache. + * @private + * @method _converse.ChatRoom#sendDestroyIQ + * @param { string } [reason] - The reason for destroying the groupchat. + * @param { string } [new_jid] - The JID of the new groupchat which replaces this one. + */ + sendDestroyIQ(reason, new_jid) { + const destroy = Object(strophe["a" /* $build */])('destroy'); - initMessages() { - this.message_queue = []; + if (new_jid) { + destroy.attrs({ + 'jid': new_jid + }); + } - converse_core_converse.ChatBox.prototype.initMessages.call(this); - }, + const iq = Object(strophe["b" /* $iq */])({ + 'to': this.get('jid'), + 'type': 'set' + }).c('query', { + 'xmlns': strophe["e" /* Strophe */].NS.MUC_OWNER + }).cnode(destroy.node); - async onConnectionStatusChanged() { - if (this.session.get('connection_status') === converse.ROOMSTATUS.ENTERED) { - await this.occupants.fetchMembers(); - await this.fetchMessages(); - /** - * Triggered when the user has entered a new MUC - * @event _converse#enteredNewRoom - * @type { _converse.ChatRoom} - * @example _converse.api.listen.on('enteredNewRoom', model => { ... }); - */ + if (reason && reason.length > 0) { + iq.c('reason', reason); + } - converse_core_api.trigger('enteredNewRoom', this); + return core_api.sendIQ(iq); + }, - if (converse_core_api.settings.get('auto_register_muc_nickname') && (await converse_core_api.disco.supports(converse_muc_Strophe.NS.MUC_REGISTER, this.get('jid')))) { - this.registerNickname(); - } - } - }, + /** + * Leave the groupchat. + * @private + * @method _converse.ChatRoom#leave + * @param { string } [exit_msg] - Message to indicate your reason for leaving + */ + async leave(exit_msg) { + this.features.destroy(); + this.occupants.clearStore(); - async onReconnection() { - this.registerHandlers(); - await this.rejoin(); - this.announceReconnection(); - }, + if (core_converse.disco_entities) { + const disco_entity = core_converse.disco_entities.get(this.get('jid')); - restoreSession() { - const id = "muc.session-".concat(converse_core_converse.bare_jid, "-").concat(this.get('jid')); - this.session = new MUCSession({ - id - }); - this.session.browserStorage = converse_core_converse.createStore(id, "session"); - return new Promise(r => this.session.fetch({ - 'success': r, - 'error': r + if (disco_entity) { + await new Promise((success, error) => disco_entity.destroy({ + success, + error })); - }, + } + } - initDiscoModels() { - let id = "converse.muc-features-".concat(converse_core_converse.bare_jid, "-").concat(this.get('jid')); - this.features = new model_Model(Object.assign({ - id - }, lodash_es_zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(() => false)))); - this.features.browserStorage = converse_core_converse.createStore(id, "session"); - id = "converse.muc-config-{_converse.bare_jid}-".concat(this.get('jid')); - this.config = new model_Model(); - this.config.browserStorage = converse_core_converse.createStore(id, "session"); - }, + if (core_api.connection.connected()) { + core_api.user.presence.send('unavailable', this.getRoomJIDAndNick(), exit_msg); + } - initOccupants() { - this.occupants = new converse_core_converse.ChatRoomOccupants(); - const id = "converse.occupants-".concat(converse_core_converse.bare_jid).concat(this.get('jid')); - this.occupants.browserStorage = converse_core_converse.createStore(id, 'session'); - this.occupants.chatroom = this; - }, + utils_form.safeSave(this.session, { + 'connection_status': converse.ROOMSTATUS.DISCONNECTED + }); + this.removeHandlers(); + }, - fetchOccupants() { - this.occupants.fetched = new Promise(resolve => { - this.occupants.fetch({ - 'add': true, - 'silent': true, - 'success': resolve, - 'error': resolve - }); - }); - return this.occupants.fetched; - }, + async close() { + // Delete the session model + await new Promise(resolve => this.session.destroy({ + 'success': resolve, + 'error': (m, e) => { + headless_log.error(e); + resolve(); + } + })); // Delete the features model - handleAffiliationChangedMessage(stanza) { - const item = converse_muc_sizzle("x[xmlns=\"".concat(converse_muc_Strophe.NS.MUC_USER, "\"] item"), stanza).pop(); + await new Promise(resolve => this.features.destroy({ + 'success': resolve, + 'error': (m, e) => { + headless_log.error(e); + resolve(); + } + })); + return core_converse.ChatBox.prototype.close.call(this); + }, - if (item) { - const from = stanza.getAttribute("from"); - const type = stanza.getAttribute("type"); - const affiliation = item.getAttribute('affiliation'); - const jid = item.getAttribute('jid'); - const data = { - from, - type, - affiliation, - 'nick': converse_muc_Strophe.getNodeFromJid(jid), - 'states': [], - 'show': type == 'unavailable' ? 'offline' : 'online', - 'role': item.getAttribute('role'), - 'jid': converse_muc_Strophe.getBareJidFromJid(jid), - 'resource': converse_muc_Strophe.getResourceFromJid(jid) - }; - const occupant = this.occupants.findOccupant({ - 'jid': data.jid - }); + canModerateMessages() { + const self = this.getOwnOccupant(); + return self && self.isModerator() && core_api.disco.supports(strophe["e" /* Strophe */].NS.MODERATE, this.get('jid')); + }, - if (occupant) { - occupant.save(data); - } else { - this.occupants.create(data); - } - } - }, + /** + * Return an array of unique nicknames based on all occupants and messages in this MUC. + * @private + * @method _converse.ChatRoom#getAllKnownNicknames + * @returns { String[] } + */ + getAllKnownNicknames() { + return [...new Set([...this.occupants.map(o => o.get('nick')), ...this.messages.map(m => m.get('nick'))])].filter(n => n); + }, - async handleErrorMessageStanza(stanza) { - const attrs = await utils_stanza.parseMUCMessage(stanza, this, converse_core_converse); + getAllKnownNicknamesRegex() { + const longNickString = this.getAllKnownNicknames().join('|'); + const escapedLongNickString = parse_helpers.escapeRegexString(longNickString); + return RegExp("(?:\\p{P}|\\p{Z}|^)@(".concat(escapedLongNickString, ")(?![\\w@-])"), 'uig'); + }, - if (!(await this.shouldShowErrorMessage(attrs))) { - return; - } + getOccupantByJID(jid) { + return this.occupants.findOccupant({ + jid + }); + }, - const message = this.getMessageReferencedByError(attrs); + getOccupantByNickname(nick) { + return this.occupants.findOccupant({ + nick + }); + }, - if (message) { - const new_attrs = { - 'error': attrs.error, - 'error_condition': attrs.error_condition, - 'error_text': attrs.error_text, - 'error_type': attrs.error_type, - 'editable': false - }; + /** + * Given a text message, look for `@` mentions and turn them into + * XEP-0372 references + * @param { String } text + */ + parseTextForReferences(text) { + const mentions_regex = /(\p{P}|\p{Z}|^)([@][\w_-]+(?:\.\w+)*)/giu; - if (attrs.msgid === message.get('retraction_id')) { - // The error message refers to a retraction - new_attrs.retraction_id = undefined; + if (!text || !mentions_regex.test(text)) { + return [text, []]; + } - if (!attrs.error) { - if (attrs.error_condition === 'forbidden') { - new_attrs.error = __("You're not allowed to retract your message."); - } else if (attrs.error_condition === 'not-acceptable') { - new_attrs.error = __("Your retraction was not delivered because you're not present in the groupchat."); - } else { - new_attrs.error = __('Sorry, an error occurred while trying to retract your message.'); - } - } - } else if (!attrs.error) { - if (attrs.error_condition === 'forbidden') { - new_attrs.error = __("Your message was not delivered because you weren't allowed to send it."); - } else if (attrs.error_condition === 'not-acceptable') { - new_attrs.error = __("Your message was not delivered because you're not present in the groupchat."); - } else { - new_attrs.error = __('Sorry, an error occurred while trying to send your message.'); - } - } + const getMatchingNickname = parse_helpers.findFirstMatchInArray(this.getAllKnownNicknames()); - message.save(new_attrs); - } else { - this.createMessage(attrs); - } - }, + const uriFromNickname = nickname => { + const jid = this.get('jid'); + const occupant = this.getOccupant(nickname) || this.getOccupant(jid); + const uri = occupant && occupant.get('jid') || "".concat(jid, "/").concat(nickname); + return encodeURI("xmpp:".concat(uri)); + }; - /** - * Parses an incoming message stanza and queues it for processing. - * @private - * @method _converse.ChatRoom#handleMessageStanza - * @param { XMLElement } stanza - */ - async handleMessageStanza(stanza) { - if (utils_stanza.isArchived(stanza)) { - // MAM messages are handled in converse-mam. - // We shouldn't get MAM messages here because - // they shouldn't have a `type` attribute. - return headless_log.warn("Received a MAM message with type \"groupchat\""); - } + const matchToReference = match => { + let at_sign_index = match[0].indexOf('@'); - this.createInfoMessages(stanza); - this.fetchFeaturesIfConfigurationChanged(stanza); - /** - * @typedef { Object } MUCMessageData - * An object containing the original groupchat message stanza, - * as well as the parsed attributes. - * @property { XMLElement } stanza - * @property { MUCMessageAttributes } attrs - * @property { ChatRoom } chatbox - */ + if (match[0][at_sign_index + 1] === '@') { + // edge-case + at_sign_index += 1; + } - const attrs = await utils_stanza.parseMUCMessage(stanza, this, converse_core_converse); - const data = { - stanza, - attrs, - 'chatbox': this - }; - /** - * Triggered when a groupchat message stanza has been received and parsed. - * @event _converse#message - * @type { object } - * @property { module:converse-muc~MUCMessageData } data - */ + const begin = match.index + at_sign_index; + const end = begin + match[0].length - at_sign_index; + const value = getMatchingNickname(match[1]); + const type = 'mention'; + const uri = uriFromNickname(value); + return { + begin, + end, + value, + type, + uri + }; + }; - converse_core_api.trigger('message', data); - return attrs && this.queueMessage(attrs); - }, + const regex = this.getAllKnownNicknamesRegex(); + const mentions = [...text.matchAll(regex)].filter(m => !m[0].startsWith('/')); + const references = mentions.map(matchToReference); + const [updated_message, updated_references] = parse_helpers.reduceTextFromReferences(text, references); + return [updated_message, updated_references]; + }, - registerHandlers() { - // Register presence and message handlers for this groupchat - const room_jid = this.get('jid'); - this.removeHandlers(); - this.presence_handler = converse_core_converse.connection.addHandler(stanza => this.onPresence(stanza) || true, null, 'presence', null, null, room_jid, { - 'ignoreNamespaceFragment': true, - 'matchBareFromJid': true - }); - this.message_handler = converse_core_converse.connection.addHandler(stanza => !!this.handleMessageStanza(stanza) || true, null, 'message', 'groupchat', null, room_jid, { - 'matchBareFromJid': true - }); - this.affiliation_message_handler = converse_core_converse.connection.addHandler(stanza => this.handleAffiliationChangedMessage(stanza) || true, converse_muc_Strophe.NS.MUC_USER, 'message', null, null, room_jid); - }, + getOutgoingMessageAttributes(original_message, spoiler_hint) { + const is_spoiler = this.get('composing_spoiler'); + const [text, references] = this.parseTextForReferences(original_message); + const origin_id = utils_form.getUniqueId(); + const body = text ? utils_form.httpToGeoUri(utils_form.shortnamesToUnicode(text), core_converse) : undefined; + return { + body, + is_spoiler, + origin_id, + references, + 'id': origin_id, + 'msgid': origin_id, + 'from': "".concat(this.get('jid'), "/").concat(this.get('nick')), + 'fullname': this.get('nick'), + 'is_only_emojis': text ? utils_form.isOnlyEmojis(text) : false, + 'message': body, + 'nick': this.get('nick'), + 'sender': 'me', + 'spoiler_hint': is_spoiler ? spoiler_hint : undefined, + 'type': 'groupchat' + }; + }, - removeHandlers() { - // Remove the presence and message handlers that were - // registered for this groupchat. - if (this.message_handler) { - converse_core_converse.connection && converse_core_converse.connection.deleteHandler(this.message_handler); - delete this.message_handler; - } + /** + * Utility method to construct the JID for the current user as occupant of the groupchat. + * @private + * @method _converse.ChatRoom#getRoomJIDAndNick + * @returns {string} - The groupchat JID with the user's nickname added at the end. + * @example groupchat@conference.example.org/nickname + */ + getRoomJIDAndNick() { + const nick = this.get('nick'); + const jid = strophe["e" /* Strophe */].getBareJidFromJid(this.get('jid')); + return jid + (nick !== null ? "/".concat(nick) : ''); + }, - if (this.presence_handler) { - converse_core_converse.connection && converse_core_converse.connection.deleteHandler(this.presence_handler); - delete this.presence_handler; - } + /** + * Sends a message with the current XEP-0085 chat state of the user + * as taken from the `chat_state` attribute of the {@link _converse.ChatRoom}. + * @private + * @method _converse.ChatRoom#sendChatState + */ + sendChatState() { + if (!core_api.settings.get('send_chat_state_notifications') || !this.get('chat_state') || this.session.get('connection_status') !== converse.ROOMSTATUS.ENTERED || this.features.get('moderated') && this.getOwnRole() === 'visitor') { + return; + } - if (this.affiliation_message_handler) { - converse_core_converse.connection && converse_core_converse.connection.deleteHandler(this.affiliation_message_handler); - delete this.affiliation_message_handler; - } + const allowed = core_api.settings.get('send_chat_state_notifications'); - return this; - }, + if (Array.isArray(allowed) && !allowed.includes(this.get('chat_state'))) { + return; + } - invitesAllowed() { - return converse_core_api.settings.get('allow_muc_invitations') && (this.features.get('open') || this.getOwnAffiliation() === "owner"); - }, + const chat_state = this.get('chat_state'); - getDisplayName() { - const name = this.get('name'); + if (chat_state === core_converse.GONE) { + // <gone/> is not applicable within MUC context + return; + } - if (name) { - return name; - } else if (converse_core_api.settings.get('locked_muc_domain') === 'hidden') { - return converse_muc_Strophe.getNodeFromJid(this.get('jid')); - } else { - return this.get('jid'); - } - }, + core_api.send(Object(strophe["c" /* $msg */])({ + 'to': this.get('jid'), + 'type': 'groupchat' + }).c(chat_state, { + 'xmlns': strophe["e" /* Strophe */].NS.CHATSTATES + }).up().c('no-store', { + 'xmlns': strophe["e" /* Strophe */].NS.HINTS + }).up().c('no-permanent-store', { + 'xmlns': strophe["e" /* Strophe */].NS.HINTS + })); + }, - /** - * Sends a message stanza to the XMPP server and expects a reflection - * or error message within a specific timeout period. - * @private - * @method _converse.ChatRoom#sendTimedMessage - * @param { _converse.Message|XMLElement } message - * @returns { Promise<XMLElement>|Promise<_converse.TimeoutError> } Returns a promise - * which resolves with the reflected message stanza or rejects - * with an error stanza or with a {@link _converse.TimeoutError}. - */ - sendTimedMessage(el) { - if (typeof el.tree === "function") { - el = el.tree(); - } + /** + * Send a direct invitation as per XEP-0249 + * @private + * @method _converse.ChatRoom#directInvite + * @param { String } recipient - JID of the person being invited + * @param { String } [reason] - Reason for the invitation + */ + directInvite(recipient, reason) { + if (this.features.get('membersonly')) { + // When inviting to a members-only groupchat, we first add + // the person to the member list by giving them an + // affiliation of 'member' otherwise they won't be able to join. + this.updateMemberLists([{ + 'jid': recipient, + 'affiliation': 'member', + 'reason': reason + }]); + } - let id = el.getAttribute('id'); + const attrs = { + 'xmlns': 'jabber:x:conference', + 'jid': this.get('jid') + }; - if (!id) { - // inject id if not found - id = this.getUniqueId("sendIQ"); - el.setAttribute("id", id); - } + if (reason !== null) { + attrs.reason = reason; + } - const promise = utils_form.getResolveablePromise(); + if (this.get('password')) { + attrs.password = this.get('password'); + } - const timeoutHandler = converse_core_converse.connection.addTimedHandler(converse_core_converse.STANZA_TIMEOUT, () => { - converse_core_converse.connection.deleteHandler(handler); + const invitation = Object(strophe["c" /* $msg */])({ + 'from': core_converse.connection.jid, + 'to': recipient, + 'id': utils_form.getUniqueId() + }).c('x', attrs); + core_api.send(invitation); + /** + * After the user has sent out a direct invitation (as per XEP-0249), + * to a roster contact, asking them to join a room. + * @event _converse#chatBoxMaximized + * @type {object} + * @property {_converse.ChatRoom} room + * @property {string} recipient - The JID of the person being invited + * @property {string} reason - The original reason for the invitation + * @example _converse.api.listen.on('chatBoxMaximized', view => { ... }); + */ - promise.reject(new converse_core_converse.TimeoutError("Timeout Error: No response from server")); - return false; - }); + core_api.trigger('roomInviteSent', { + 'room': this, + 'recipient': recipient, + 'reason': reason + }); + }, - const handler = converse_core_converse.connection.addHandler(stanza => { - timeoutHandler && converse_core_converse.connection.deleteTimedHandler(timeoutHandler); + /** + * Refresh the disco identity, features and fields for this {@link _converse.ChatRoom}. + * *features* are stored on the features {@link Model} attribute on this {@link _converse.ChatRoom}. + * *fields* are stored on the config {@link Model} attribute on this {@link _converse.ChatRoom}. + * @private + * @returns {Promise} + */ + refreshDiscoInfo() { + return core_api.disco.refresh(this.get('jid')).then(() => this.getDiscoInfo()).catch(e => headless_log.error(e)); + }, - if (stanza.getAttribute('type') === 'groupchat') { - promise.resolve(stanza); - } else { - promise.reject(stanza); - } - }, null, 'message', ['error', 'groupchat'], id); + /** + * Fetch the *extended* MUC info from the server and cache it locally + * https://xmpp.org/extensions/xep-0045.html#disco-roominfo + * @private + * @method _converse.ChatRoom#getDiscoInfo + * @returns {Promise} + */ + getDiscoInfo() { + return core_api.disco.getIdentity('conference', 'text', this.get('jid')).then(identity => this.save({ + 'name': identity === null || identity === void 0 ? void 0 : identity.get('name') + })).then(() => this.getDiscoInfoFields()).then(() => this.getDiscoInfoFeatures()).catch(e => headless_log.error(e)); + }, - converse_core_api.send(el); - return promise; - }, + /** + * Fetch the *extended* MUC info fields from the server and store them locally + * in the `config` {@link Model} attribute. + * See: https://xmpp.org/extensions/xep-0045.html#disco-roominfo + * @private + * @method _converse.ChatRoom#getDiscoInfoFields + * @returns {Promise} + */ + async getDiscoInfoFields() { + const fields = await core_api.disco.getFields(this.get('jid')); + const config = fields.reduce((config, f) => { + const name = f.get('var'); - /** - * Retract one of your messages in this groupchat - * @private - * @method _converse.ChatRoom#retractOwnMessage - * @param { _converse.Message } message - The message which we're retracting. - */ - async retractOwnMessage(message) { - const origin_id = message.get('origin_id'); + if (name && name.startsWith('muc#roominfo_')) { + config[name.replace('muc#roominfo_', '')] = f.get('value'); + } - if (!origin_id) { - throw new Error("Can't retract message without a XEP-0359 Origin ID"); - } + return config; + }, {}); + this.config.save(config); + }, - const editable = message.get('editable'); - const stanza = converse_muc_$msg({ - 'id': utils_form.getUniqueId(), - 'to': this.get('jid'), - 'type': "groupchat" - }).c('store', { - xmlns: converse_muc_Strophe.NS.HINTS - }).up().c("apply-to", { - 'id': origin_id, - 'xmlns': converse_muc_Strophe.NS.FASTEN - }).c('retract', { - xmlns: converse_muc_Strophe.NS.RETRACT - }); // Optimistic save - - message.set({ - 'retracted': new Date().toISOString(), - 'retracted_id': origin_id, - 'retraction_id': stanza.nodeTree.getAttribute('id'), - 'editable': false - }); + /** + * Use converse-disco to populate the features {@link Model} which + * is stored as an attibute on this {@link _converse.ChatRoom}. + * The results may be cached. If you want to force fetching the features from the + * server, call {@link _converse.ChatRoom#refreshDiscoInfo} instead. + * @private + * @returns {Promise} + */ + async getDiscoInfoFeatures() { + const features = await core_api.disco.getFeatures(this.get('jid')); + const attrs = Object.assign(lodash_es_zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(() => false)), { + 'fetched': new Date().toISOString() + }); + features.each(feature => { + const fieldname = feature.get('var'); - try { - await this.sendTimedMessage(stanza); - } catch (e) { - message.save({ - editable, - 'error_type': 'timeout', - 'error': __('A timeout happened while while trying to retract your message.'), - 'retracted': undefined, - 'retracted_id': undefined - }); - throw e; + if (!fieldname.startsWith('muc_')) { + if (fieldname === strophe["e" /* Strophe */].NS.MAM) { + attrs.mam_enabled = true; } - }, - /** - * Retract someone else's message in this groupchat. - * @private - * @method _converse.ChatRoom#retractOtherMessage - * @param { _converse.Message } message - The message which we're retracting. - * @param { string } [reason] - The reason for retracting the message. - */ - async retractOtherMessage(message, reason) { - const editable = message.get('editable'); // Optimistic save + return; + } - message.save({ - 'moderated': 'retracted', - 'moderated_by': converse_core_converse.bare_jid, - 'moderated_id': message.get('msgid'), - 'moderation_reason': reason, - 'editable': false - }); - const result = await this.sendRetractionIQ(message, reason); + attrs[fieldname.replace('muc_', '')] = true; + }); + this.features.save(attrs); + }, - if (result === null || utils_form.isErrorStanza(result)) { - // Undo the save if something went wrong - message.save({ - editable, - 'moderated': undefined, - 'moderated_by': undefined, - 'moderated_id': undefined, - 'moderation_reason': undefined - }); - } + /** + * Send IQ stanzas to the server to set an affiliation for + * the provided JIDs. + * See: https://xmpp.org/extensions/xep-0045.html#modifymember + * + * Prosody doesn't accept multiple JIDs' affiliations + * being set in one IQ stanza, so as a workaround we send + * a separate stanza for each JID. + * Related ticket: https://issues.prosody.im/345 + * + * @private + * @method _converse.ChatRoom#setAffiliation + * @param { string } affiliation - The affiliation + * @param { object } members - A map of jids, affiliations and + * optionally reasons. Only those entries with the + * same affiliation as being currently set will be considered. + * @returns { Promise } A promise which resolves and fails depending on the XMPP server response. + */ + setAffiliation(affiliation, members) { + members = members.filter(m => m.affiliation === undefined || m.affiliation === affiliation); + return Promise.all(members.map(m => this.sendAffiliationIQ(affiliation, m))); + }, - return result; - }, + /** + * Given a <field> element, return a copy with a <value> child if + * we can find a value for it in this rooms config. + * @private + * @method _converse.ChatRoom#addFieldValue + * @returns { Element } + */ + addFieldValue(field) { + const type = field.getAttribute('type'); - /** - * Sends an IQ stanza to the XMPP server to retract a message in this groupchat. - * @private - * @method _converse.ChatRoom#sendRetractionIQ - * @param { _converse.Message } message - The message which we're retracting. - * @param { string } [reason] - The reason for retracting the message. - */ - sendRetractionIQ(message, reason) { - const iq = converse_muc_$iq({ - 'to': this.get('jid'), - 'type': "set" - }).c("apply-to", { - 'id': message.get("stanza_id ".concat(this.get('jid'))), - 'xmlns': converse_muc_Strophe.NS.FASTEN - }).c('moderate', { - xmlns: converse_muc_Strophe.NS.MODERATE - }).c('retract', { - xmlns: converse_muc_Strophe.NS.RETRACT - }).up().c('reason').t(reason || ''); - return converse_core_api.sendIQ(iq, null, false); - }, + if (type === 'fixed') { + return field; + } - /** - * Sends an IQ stanza to the XMPP server to destroy this groupchat. Not - * to be confused with the {@link _converse.ChatRoom#destroy} - * method, which simply removes the room from the local browser storage cache. - * @private - * @method _converse.ChatRoom#sendDestroyIQ - * @param { string } [reason] - The reason for destroying the groupchat. - * @param { string } [new_jid] - The JID of the new groupchat which replaces this one. - */ - sendDestroyIQ(reason, new_jid) { - const destroy = $build("destroy"); + const fieldname = field.getAttribute('var').replace('muc#roomconfig_', ''); + const config = this.get('roomconfig'); - if (new_jid) { - destroy.attrs({ - 'jid': new_jid - }); - } + if (fieldname in config) { + let values; - const iq = converse_muc_$iq({ - 'to': this.get('jid'), - 'type': "set" - }).c("query", { - 'xmlns': converse_muc_Strophe.NS.MUC_OWNER - }).cnode(destroy.node); + switch (type) { + case 'boolean': + values = [config[fieldname] ? 1 : 0]; + break; - if (reason && reason.length > 0) { - iq.c("reason", reason); - } + case 'list-multi': + values = config[fieldname]; + break; - return converse_core_api.sendIQ(iq); - }, + default: + values = [config[fieldname]]; + } - /** - * Leave the groupchat. - * @private - * @method _converse.ChatRoom#leave - * @param { string } [exit_msg] - Message to indicate your reason for leaving - */ - async leave(exit_msg) { - this.features.destroy(); - this.occupants.clearStore(); + field.innerHTML = values.map(v => Object(strophe["a" /* $build */])('value').t(v)).join(''); + } - if (converse_core_converse.disco_entities) { - const disco_entity = converse_core_converse.disco_entities.get(this.get('jid')); + return field; + }, - if (disco_entity) { - await new Promise((success, error) => disco_entity.destroy({ - success, - error - })); - } - } + /** + * Automatically configure the groupchat based on this model's + * 'roomconfig' data. + * @private + * @method _converse.ChatRoom#autoConfigureChatRoom + * @returns { Promise<XMLElement> } + * Returns a promise which resolves once a response IQ has + * been received. + */ + async autoConfigureChatRoom() { + const stanza = await this.fetchRoomConfiguration(); + const fields = sizzle_default()('field', stanza); + const configArray = fields.map(f => this.addFieldValue(f)); - if (converse_core_api.connection.connected()) { - converse_core_api.user.presence.send('unavailable', this.getRoomJIDAndNick(), exit_msg); - } + if (configArray.length) { + return this.sendConfiguration(configArray); + } + }, - utils_form.safeSave(this.session, { - 'connection_status': converse.ROOMSTATUS.DISCONNECTED - }); - this.removeHandlers(); - }, + /** + * Send an IQ stanza to fetch the groupchat configuration data. + * Returns a promise which resolves once the response IQ + * has been received. + * @private + * @method _converse.ChatRoom#fetchRoomConfiguration + * @returns { Promise<XMLElement> } + */ + fetchRoomConfiguration() { + return core_api.sendIQ(Object(strophe["b" /* $iq */])({ + 'to': this.get('jid'), + 'type': 'get' + }).c('query', { + xmlns: strophe["e" /* Strophe */].NS.MUC_OWNER + })); + }, - async close() { - // Delete the session model - await new Promise(resolve => this.session.destroy({ - 'success': resolve, - 'error': (m, e) => { - headless_log.error(e); - resolve(); - } - })); // Delete the features model + /** + * Sends an IQ stanza with the groupchat configuration. + * @private + * @method _converse.ChatRoom#sendConfiguration + * @param { Array } config - The groupchat configuration + * @returns { Promise<XMLElement> } - A promise which resolves with + * the `result` stanza received from the XMPP server. + */ + sendConfiguration(config = []) { + const iq = Object(strophe["b" /* $iq */])({ + to: this.get('jid'), + type: 'set' + }).c('query', { + xmlns: strophe["e" /* Strophe */].NS.MUC_OWNER + }).c('x', { + xmlns: strophe["e" /* Strophe */].NS.XFORM, + type: 'submit' + }); + config.forEach(node => iq.cnode(node).up()); + return core_api.sendIQ(iq); + }, - await new Promise(resolve => this.features.destroy({ - 'success': resolve, - 'error': (m, e) => { - headless_log.error(e); - resolve(); - } - })); - return converse_core_converse.ChatBox.prototype.close.call(this); - }, + /** + * Returns the `role` which the current user has in this MUC + * @private + * @method _converse.ChatRoom#getOwnRole + * @returns { ('none'|'visitor'|'participant'|'moderator') } + */ + getOwnRole() { + var _this$getOwnOccupant, _this$getOwnOccupant$; - canModerateMessages() { - const self = this.getOwnOccupant(); - return self && self.isModerator() && converse_core_api.disco.supports(converse_muc_Strophe.NS.MODERATE, this.get('jid')); - }, + return (_this$getOwnOccupant = this.getOwnOccupant()) === null || _this$getOwnOccupant === void 0 ? void 0 : (_this$getOwnOccupant$ = _this$getOwnOccupant.attributes) === null || _this$getOwnOccupant$ === void 0 ? void 0 : _this$getOwnOccupant$.role; + }, - /** - * Return an array of unique nicknames based on all occupants and messages in this MUC. - * @private - * @method _converse.ChatRoom#getAllKnownNicknames - * @returns { String[] } - */ - getAllKnownNicknames() { - return [...new Set([...this.occupants.map(o => o.get('nick')), ...this.messages.map(m => m.get('nick'))])].filter(n => n); - }, + /** + * Returns the `affiliation` which the current user has in this MUC + * @private + * @method _converse.ChatRoom#getOwnAffiliation + * @returns { ('none'|'outcast'|'member'|'admin'|'owner') } + */ + getOwnAffiliation() { + var _this$getOwnOccupant2, _this$getOwnOccupant3; - getAllKnownNicknamesRegex() { - const longNickString = this.getAllKnownNicknames().join('|'); - const escapedLongNickString = parse_helpers.escapeRegexString(longNickString); - const mention_boundaries = converse.MENTION_BOUNDARIES.join('|'); - const escaped_mention_boundaries = parse_helpers.escapeRegexString(mention_boundaries); - return RegExp("(?:\\s|^)[".concat(escaped_mention_boundaries, "]?@(").concat(escapedLongNickString, ")(?![\\w@-])"), 'ig'); - }, + return (_this$getOwnOccupant2 = this.getOwnOccupant()) === null || _this$getOwnOccupant2 === void 0 ? void 0 : (_this$getOwnOccupant3 = _this$getOwnOccupant2.attributes) === null || _this$getOwnOccupant3 === void 0 ? void 0 : _this$getOwnOccupant3.affiliation; + }, - getOccupantByJID(jid) { - return this.occupants.findOccupant({ - jid - }); - }, + /** + * Get the {@link _converse.ChatRoomOccupant} instance which + * represents the current user. + * @private + * @method _converse.ChatRoom#getOwnOccupant + * @returns { _converse.ChatRoomOccupant } + */ + getOwnOccupant() { + return this.occupants.findWhere({ + 'jid': core_converse.bare_jid + }); + }, - getOccupantByNickname(nick) { - return this.occupants.findOccupant({ - nick - }); - }, + /** + * Send an IQ stanza specifying an affiliation change. + * @private + * @method _converse.ChatRoom# + * @param { String } affiliation: affiliation + * (could also be stored on the member object). + * @param { Object } member: Map containing the member's jid and + * optionally a reason and affiliation. + */ + sendAffiliationIQ(affiliation, member) { + const iq = Object(strophe["b" /* $iq */])({ + to: this.get('jid'), + type: 'set' + }).c('query', { + xmlns: strophe["e" /* Strophe */].NS.MUC_ADMIN + }).c('item', { + 'affiliation': member.affiliation || affiliation, + 'nick': member.nick, + 'jid': member.jid + }); - parseTextForReferences(original_message) { - if (!original_message) return ['', []]; - const findRegexInMessage = parse_helpers.matchRegexInText(original_message); - const raw_mentions = findRegexInMessage(parse_helpers.mention_regex); - if (!raw_mentions) return [original_message, []]; - const known_nicknames = this.getAllKnownNicknames(); - const getMatchingNickname = parse_helpers.findFirstMatchInArray(known_nicknames); - - const uriFromNickname = nickname => { - const jid = this.get('jid'); - const occupant = this.getOccupant(nickname) || this.getOccupant(jid); - const uri = occupant && occupant.get('jid') || "".concat(jid, "/").concat(nickname); - return encodeURI("xmpp:".concat(uri)); - }; + if (member.reason !== undefined) { + iq.c('reason', member.reason); + } - const matchToReference = match => { - const at_sign_index = match[0].indexOf('@'); - const begin = match.index + at_sign_index; - const end = begin + match[0].length - at_sign_index; - const value = getMatchingNickname(match[1]); - const type = 'mention'; - const uri = uriFromNickname(value); - return { - begin, - end, - value, - type, - uri - }; - }; + return core_api.sendIQ(iq); + }, - const mentions = [...findRegexInMessage(this.getAllKnownNicknamesRegex())]; - const references = mentions.map(matchToReference); - const [updated_message, updated_references] = parse_helpers.reduceTextFromReferences(original_message, references); - return [updated_message, updated_references]; - }, + /** + * Send IQ stanzas to the server to modify affiliations for users in this groupchat. + * + * See: https://xmpp.org/extensions/xep-0045.html#modifymember + * @private + * @method _converse.ChatRoom#setAffiliations + * @param { Object[] } members + * @param { string } members[].jid - The JID of the user whose affiliation will change + * @param { Array } members[].affiliation - The new affiliation for this user + * @param { string } [members[].reason] - An optional reason for the affiliation change + * @returns { Promise } + */ + setAffiliations(members) { + const affiliations = [...new Set(members.map(m => m.affiliation))]; + return Promise.all(affiliations.map(a => this.setAffiliation(a, members))); + }, - getOutgoingMessageAttributes(original_message, spoiler_hint) { - const is_spoiler = this.get('composing_spoiler'); - const [text, references] = this.parseTextForReferences(original_message); - const origin_id = utils_form.getUniqueId(); - const body = text ? utils_form.httpToGeoUri(utils_form.shortnamesToUnicode(text), converse_core_converse) : undefined; - return { - body, - is_spoiler, - origin_id, - references, - 'id': origin_id, - 'msgid': origin_id, - 'from': "".concat(this.get('jid'), "/").concat(this.get('nick')), - 'fullname': this.get('nick'), - 'is_only_emojis': text ? utils_form.isOnlyEmojis(text) : false, - 'message': body, - 'nick': this.get('nick'), - 'sender': 'me', - 'spoiler_hint': is_spoiler ? spoiler_hint : undefined, - 'type': 'groupchat' - }; - }, + /** + * Send an IQ stanza to modify an occupant's role + * @private + * @method _converse.ChatRoom#setRole + * @param { _converse.ChatRoomOccupant } occupant + * @param { String } role + * @param { String } reason + * @param { function } onSuccess - callback for a succesful response + * @param { function } onError - callback for an error response + */ + setRole(occupant, role, reason, onSuccess, onError) { + const item = Object(strophe["a" /* $build */])('item', { + 'nick': occupant.get('nick'), + role + }); + const iq = Object(strophe["b" /* $iq */])({ + 'to': this.get('jid'), + 'type': 'set' + }).c('query', { + xmlns: strophe["e" /* Strophe */].NS.MUC_ADMIN + }).cnode(item.node); - /** - * Utility method to construct the JID for the current user as occupant of the groupchat. - * @private - * @method _converse.ChatRoom#getRoomJIDAndNick - * @returns {string} - The groupchat JID with the user's nickname added at the end. - * @example groupchat@conference.example.org/nickname - */ - getRoomJIDAndNick() { - const nick = this.get('nick'); - const jid = converse_muc_Strophe.getBareJidFromJid(this.get('jid')); - return jid + (nick !== null ? "/".concat(nick) : ""); - }, + if (reason !== null) { + iq.c('reason', reason); + } - /** - * Sends a message with the current XEP-0085 chat state of the user - * as taken from the `chat_state` attribute of the {@link _converse.ChatRoom}. - * @private - * @method _converse.ChatRoom#sendChatState - */ - sendChatState() { - if (!converse_core_api.settings.get('send_chat_state_notifications') || !this.get('chat_state') || this.session.get('connection_status') !== converse.ROOMSTATUS.ENTERED || this.features.get('moderated') && this.getOwnRole() === 'visitor') { - return; - } + return core_api.sendIQ(iq).then(onSuccess).catch(onError); + }, - const allowed = converse_core_api.settings.get('send_chat_state_notifications'); + /** + * @private + * @method _converse.ChatRoom#getOccupant + * @param { String } nickname_or_jid - The nickname or JID of the occupant to be returned + * @returns { _converse.ChatRoomOccupant } + */ + getOccupant(nickname_or_jid) { + return utils_form.isValidJID(nickname_or_jid) ? this.getOccupantByJID(nickname_or_jid) : this.getOccupantByNickname(nickname_or_jid); + }, - if (Array.isArray(allowed) && !allowed.includes(this.get('chat_state'))) { - return; - } + /** + * Return an array of occupant models that have the required role + * @private + * @method _converse.ChatRoom#getOccupantsWithRole + * @param { String } role + * @returns { _converse.ChatRoomOccupant[] } + */ + getOccupantsWithRole(role) { + return this.getOccupantsSortedBy('nick').filter(o => o.get('role') === role).map(item => { + return { + 'jid': item.get('jid'), + 'nick': item.get('nick'), + 'role': item.get('role') + }; + }); + }, - const chat_state = this.get('chat_state'); + /** + * Return an array of occupant models that have the required affiliation + * @private + * @method _converse.ChatRoom#getOccupantsWithAffiliation + * @param { String } affiliation + * @returns { _converse.ChatRoomOccupant[] } + */ + getOccupantsWithAffiliation(affiliation) { + return this.getOccupantsSortedBy('nick').filter(o => o.get('affiliation') === affiliation).map(item => { + return { + 'jid': item.get('jid'), + 'nick': item.get('nick'), + 'affiliation': item.get('affiliation') + }; + }); + }, - if (chat_state === converse_core_converse.GONE) { - // <gone/> is not applicable within MUC context - return; - } - - converse_core_api.send(converse_muc_$msg({ - 'to': this.get('jid'), - 'type': 'groupchat' - }).c(chat_state, { - 'xmlns': converse_muc_Strophe.NS.CHATSTATES - }).up().c('no-store', { - 'xmlns': converse_muc_Strophe.NS.HINTS - }).up().c('no-permanent-store', { - 'xmlns': converse_muc_Strophe.NS.HINTS - })); - }, + /** + * Return an array of occupant models, sorted according to the passed-in attribute. + * @private + * @method _converse.ChatRoom#getOccupantsSortedBy + * @param { String } attr - The attribute to sort the returned array by + * @returns { _converse.ChatRoomOccupant[] } + */ + getOccupantsSortedBy(attr) { + return Array.from(this.occupants.models).sort((a, b) => a.get(attr) < b.get(attr) ? -1 : a.get(attr) > b.get(attr) ? 1 : 0); + }, - /** - * Send a direct invitation as per XEP-0249 - * @private - * @method _converse.ChatRoom#directInvite - * @param { String } recipient - JID of the person being invited - * @param { String } [reason] - Reason for the invitation - */ - directInvite(recipient, reason) { - if (this.features.get('membersonly')) { - // When inviting to a members-only groupchat, we first add - // the person to the member list by giving them an - // affiliation of 'member' otherwise they won't be able to join. - this.updateMemberLists([{ - 'jid': recipient, - 'affiliation': 'member', - 'reason': reason - }]); - } + /** + * Sends an IQ stanza to the server, asking it for the relevant affiliation list . + * Returns an array of {@link MemberListItem} objects, representing occupants + * that have the given affiliation. + * See: https://xmpp.org/extensions/xep-0045.html#modifymember + * @private + * @method _converse.ChatRoom#getAffiliationList + * @param { ("admin"|"owner"|"member") } affiliation + * @returns { Promise<MemberListItem[]> } + */ + async getAffiliationList(affiliation) { + const iq = Object(strophe["b" /* $iq */])({ + to: this.get('jid'), + type: 'get' + }).c('query', { + xmlns: strophe["e" /* Strophe */].NS.MUC_ADMIN + }).c('item', { + 'affiliation': affiliation + }); + const result = await core_api.sendIQ(iq, null, false); - const attrs = { - 'xmlns': 'jabber:x:conference', - 'jid': this.get('jid') - }; + if (result === null) { + const err_msg = "Error: timeout while fetching ".concat(affiliation, " list for MUC ").concat(this.get('jid')); + const err = new Error(err_msg); + headless_log.warn(err_msg); + headless_log.warn(result); + return err; + } - if (reason !== null) { - attrs.reason = reason; - } + if (utils_form.isErrorStanza(result)) { + const err_msg = "Error: not allowed to fetch ".concat(affiliation, " list for MUC ").concat(this.get('jid')); + const err = new Error(err_msg); + headless_log.warn(err_msg); + headless_log.warn(result); + return err; + } - if (this.get('password')) { - attrs.password = this.get('password'); - } + return utils_muc.parseMemberListIQ(result).filter(p => p).sort((a, b) => a.nick < b.nick ? -1 : a.nick > b.nick ? 1 : 0); + }, - const invitation = converse_muc_$msg({ - 'from': converse_core_converse.connection.jid, - 'to': recipient, - 'id': utils_form.getUniqueId() - }).c('x', attrs); - converse_core_api.send(invitation); - /** - * After the user has sent out a direct invitation (as per XEP-0249), - * to a roster contact, asking them to join a room. - * @event _converse#chatBoxMaximized - * @type {object} - * @property {_converse.ChatRoom} room - * @property {string} recipient - The JID of the person being invited - * @property {string} reason - The original reason for the invitation - * @example _converse.api.listen.on('chatBoxMaximized', view => { ... }); - */ + /** + * Fetch the lists of users with the given affiliations. + * Then compute the delta between those users and + * the passed in members, and if it exists, send the delta + * to the XMPP server to update the member list. + * @private + * @method _converse.ChatRoom#updateMemberLists + * @param { object } members - Map of member jids and affiliations. + * @returns { Promise } + * A promise which is resolved once the list has been + * updated or once it's been established there's no need + * to update the list. + */ + async updateMemberLists(members) { + const all_affiliations = ['member', 'admin', 'owner']; + const aff_lists = await Promise.all(all_affiliations.map(a => this.getAffiliationList(a))); + const old_members = aff_lists.reduce((acc, val) => utils_form.isErrorObject(val) ? acc : [...val, ...acc], []); + await this.setAffiliations(utils_muc.computeAffiliationsDelta(true, false, members, old_members)); + await this.occupants.fetchMembers(); + }, - converse_core_api.trigger('roomInviteSent', { - 'room': this, - 'recipient': recipient, - 'reason': reason - }); - }, + /** + * Given a nick name, save it to the model state, otherwise, look + * for a server-side reserved nickname or default configured + * nickname and if found, persist that to the model state. + * @private + * @method _converse.ChatRoom#getAndPersistNickname + * @returns { Promise<string> } A promise which resolves with the nickname + */ + async getAndPersistNickname(nick) { + nick = nick || this.get('nick') || (await this.getReservedNick()) || core_converse.getDefaultMUCNickname(); - /** - * Refresh the disco identity, features and fields for this {@link _converse.ChatRoom}. - * *features* are stored on the features {@link Model} attribute on this {@link _converse.ChatRoom}. - * *fields* are stored on the config {@link Model} attribute on this {@link _converse.ChatRoom}. - * @private - * @returns {Promise} - */ - refreshDiscoInfo() { - return converse_core_api.disco.refresh(this.get('jid')).then(() => this.getDiscoInfo()).catch(e => headless_log.error(e)); - }, + if (nick) { + this.save({ + nick + }, { + 'silent': true + }); + } - /** - * Fetch the *extended* MUC info from the server and cache it locally - * https://xmpp.org/extensions/xep-0045.html#disco-roominfo - * @private - * @method _converse.ChatRoom#getDiscoInfo - * @returns {Promise} - */ - getDiscoInfo() { - return converse_core_api.disco.getIdentity('conference', 'text', this.get('jid')).then(identity => this.save({ - 'name': identity && identity.get('name') - })).then(() => this.getDiscoInfoFields()).then(() => this.getDiscoInfoFeatures()).catch(e => headless_log.error(e)); - }, + return nick; + }, - /** - * Fetch the *extended* MUC info fields from the server and store them locally - * in the `config` {@link Model} attribute. - * See: https://xmpp.org/extensions/xep-0045.html#disco-roominfo - * @private - * @method _converse.ChatRoom#getDiscoInfoFields - * @returns {Promise} - */ - async getDiscoInfoFields() { - const fields = await converse_core_api.disco.getFields(this.get('jid')); - const config = fields.reduce((config, f) => { - const name = f.get('var'); + /** + * Use service-discovery to ask the XMPP server whether + * this user has a reserved nickname for this groupchat. + * If so, we'll use that, otherwise we render the nickname form. + * @private + * @method _converse.ChatRoom#getReservedNick + * @returns { Promise<string> } A promise which resolves with the reserved nick or null + */ + async getReservedNick() { + const stanza = Object(strophe["b" /* $iq */])({ + 'to': this.get('jid'), + 'from': core_converse.connection.jid, + 'type': 'get' + }).c('query', { + 'xmlns': strophe["e" /* Strophe */].NS.DISCO_INFO, + 'node': 'x-roomuser-item' + }); + const result = await core_api.sendIQ(stanza, null, false); - if (name && name.startsWith('muc#roominfo_')) { - config[name.replace('muc#roominfo_', '')] = f.get('value'); - } + if (utils_form.isErrorObject(result)) { + throw result; + } - return config; - }, {}); - this.config.save(config); - }, + const identity_el = result.querySelector('query[node="x-roomuser-item"] identity'); + return identity_el ? identity_el.getAttribute('name') : null; + }, - /** - * Use converse-disco to populate the features {@link Model} which - * is stored as an attibute on this {@link _converse.ChatRoom}. - * The results may be cached. If you want to force fetching the features from the - * server, call {@link _converse.ChatRoom#refreshDiscoInfo} instead. - * @private - * @returns {Promise} - */ - async getDiscoInfoFeatures() { - const features = await converse_core_api.disco.getFeatures(this.get('jid')); - const attrs = Object.assign(lodash_es_zipObject(converse.ROOM_FEATURES, converse.ROOM_FEATURES.map(() => false)), { - 'fetched': new Date().toISOString() - }); - features.each(feature => { - const fieldname = feature.get('var'); + async registerNickname() { + // See https://xmpp.org/extensions/xep-0045.html#register + const __ = core_converse.__; + const nick = this.get('nick'); + const jid = this.get('jid'); + let iq, err_msg; - if (!fieldname.startsWith('muc_')) { - if (fieldname === converse_muc_Strophe.NS.MAM) { - attrs.mam_enabled = true; - } + try { + iq = await core_api.sendIQ(Object(strophe["b" /* $iq */])({ + 'to': jid, + 'from': core_converse.connection.jid, + 'type': 'get' + }).c('query', { + 'xmlns': strophe["e" /* Strophe */].NS.MUC_REGISTER + })); + } catch (e) { + if (sizzle_default()("not-allowed[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), e).length) { + err_msg = __("You're not allowed to register yourself in this groupchat."); + } else if (sizzle_default()("registration-required[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), e).length) { + err_msg = __("You're not allowed to register in this groupchat because it's members-only."); + } - return; - } + headless_log.error(e); + return err_msg; + } - attrs[fieldname.replace('muc_', '')] = true; - }); - this.features.save(attrs); - }, + const required_fields = sizzle_default()('field required', iq).map(f => f.parentElement); - /** - * Send IQ stanzas to the server to set an affiliation for - * the provided JIDs. - * See: https://xmpp.org/extensions/xep-0045.html#modifymember - * - * Prosody doesn't accept multiple JIDs' affiliations - * being set in one IQ stanza, so as a workaround we send - * a separate stanza for each JID. - * Related ticket: https://issues.prosody.im/345 - * - * @private - * @method _converse.ChatRoom#setAffiliation - * @param { string } affiliation - The affiliation - * @param { object } members - A map of jids, affiliations and - * optionally reasons. Only those entries with the - * same affiliation as being currently set will be considered. - * @returns { Promise } A promise which resolves and fails depending on the XMPP server response. - */ - setAffiliation(affiliation, members) { - members = members.filter(m => m.affiliation === undefined || m.affiliation === affiliation); - return Promise.all(members.map(m => this.sendAffiliationIQ(affiliation, m))); - }, + if (required_fields.length > 1 && required_fields[0].getAttribute('var') !== 'muc#register_roomnick') { + return headless_log.error("Can't register the user register in the groupchat ".concat(jid, " due to the required fields")); + } - /** - * Given a <field> element, return a copy with a <value> child if - * we can find a value for it in this rooms config. - * @private - * @method _converse.ChatRoom#addFieldValue - * @returns { Element } - */ - addFieldValue(field) { - const type = field.getAttribute('type'); + try { + await core_api.sendIQ(Object(strophe["b" /* $iq */])({ + 'to': jid, + 'from': core_converse.connection.jid, + 'type': 'set' + }).c('query', { + 'xmlns': strophe["e" /* Strophe */].NS.MUC_REGISTER + }).c('x', { + 'xmlns': strophe["e" /* Strophe */].NS.XFORM, + 'type': 'submit' + }).c('field', { + 'var': 'FORM_TYPE' + }).c('value').t('http://jabber.org/protocol/muc#register').up().up().c('field', { + 'var': 'muc#register_roomnick' + }).c('value').t(nick)); + } catch (e) { + if (sizzle_default()("service-unavailable[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), e).length) { + err_msg = __("Can't register your nickname in this groupchat, it doesn't support registration."); + } else if (sizzle_default()("bad-request[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), e).length) { + err_msg = __("Can't register your nickname in this groupchat, invalid data form supplied."); + } - if (type === 'fixed') { - return field; - } + headless_log.error(err_msg); + headless_log.error(e); + return err_msg; + } + }, - const fieldname = field.getAttribute('var').replace('muc#roomconfig_', ''); - const config = this.get('roomconfig'); + /** + * Given a presence stanza, update the occupant model based on its contents. + * @private + * @method _converse.ChatRoom#updateOccupantsOnPresence + * @param { XMLElement } pres - The presence stanza + */ + updateOccupantsOnPresence(pres) { + var _occupant$attributes, _occupant$attributes2; - if (fieldname in config) { - let values; + const data = utils_stanza.parseMUCPresence(pres); - switch (type) { - case 'boolean': - values = [config[fieldname] ? 1 : 0]; - break; + if (data.type === 'error' || !data.jid && !data.nick) { + return true; + } - case 'list-multi': - values = config[fieldname]; - break; + const occupant = this.occupants.findOccupant(data); // Destroy an unavailable occupant if this isn't a nick change operation and if they're not affiliated - default: - values = [config[fieldname]]; - } + if (data.type === 'unavailable' && occupant && !data.states.includes(converse.MUC_NICK_CHANGED_CODE) && !['admin', 'owner', 'member'].includes(data['affiliation'])) { + // Before destroying we set the new data, so that we can show the disconnection message + occupant.set(data); + occupant.destroy(); + return; + } - field.innerHTML = values.map(v => $build('value').t(v)).join(''); - } + const jid = data.jid || ''; + const attributes = Object.assign(data, { + 'jid': strophe["e" /* Strophe */].getBareJidFromJid(jid) || (occupant === null || occupant === void 0 ? void 0 : (_occupant$attributes = occupant.attributes) === null || _occupant$attributes === void 0 ? void 0 : _occupant$attributes.jid), + 'resource': strophe["e" /* Strophe */].getResourceFromJid(jid) || (occupant === null || occupant === void 0 ? void 0 : (_occupant$attributes2 = occupant.attributes) === null || _occupant$attributes2 === void 0 ? void 0 : _occupant$attributes2.resource) + }); - return field; - }, + if (occupant) { + occupant.save(attributes); + } else { + this.occupants.create(attributes); + } + }, - /** - * Automatically configure the groupchat based on this model's - * 'roomconfig' data. - * @private - * @method _converse.ChatRoom#autoConfigureChatRoom - * @returns { Promise<XMLElement> } - * Returns a promise which resolves once a response IQ has - * been received. - */ - async autoConfigureChatRoom() { - const stanza = await this.fetchRoomConfiguration(); - const fields = converse_muc_sizzle('field', stanza); - const configArray = fields.map(f => this.addFieldValue(f)); + fetchFeaturesIfConfigurationChanged(stanza) { + // 104: configuration change + // 170: logging enabled + // 171: logging disabled + // 172: room no longer anonymous + // 173: room now semi-anonymous + // 174: room now fully anonymous + const codes = ['104', '170', '171', '172', '173', '174']; - if (configArray.length) { - return this.sendConfiguration(configArray); - } - }, + if (sizzle_default()('status', stanza).filter(e => codes.includes(e.getAttribute('status'))).length) { + this.refreshDiscoInfo(); + } + }, - /** - * Send an IQ stanza to fetch the groupchat configuration data. - * Returns a promise which resolves once the response IQ - * has been received. - * @private - * @method _converse.ChatRoom#fetchRoomConfiguration - * @returns { Promise<XMLElement> } - */ - fetchRoomConfiguration() { - return converse_core_api.sendIQ(converse_muc_$iq({ - 'to': this.get('jid'), - 'type': "get" - }).c("query", { - xmlns: converse_muc_Strophe.NS.MUC_OWNER - })); - }, + /** + * Given two JIDs, which can be either user JIDs or MUC occupant JIDs, + * determine whether they belong to the same user. + * @private + * @method _converse.ChatRoom#isSameUser + * @param { String } jid1 + * @param { String } jid2 + * @returns { Boolean } + */ + isSameUser(jid1, jid2) { + const bare_jid1 = strophe["e" /* Strophe */].getBareJidFromJid(jid1); + const bare_jid2 = strophe["e" /* Strophe */].getBareJidFromJid(jid2); + const resource1 = strophe["e" /* Strophe */].getResourceFromJid(jid1); + const resource2 = strophe["e" /* Strophe */].getResourceFromJid(jid2); - /** - * Sends an IQ stanza with the groupchat configuration. - * @private - * @method _converse.ChatRoom#sendConfiguration - * @param { Array } config - The groupchat configuration - * @returns { Promise<XMLElement> } - A promise which resolves with - * the `result` stanza received from the XMPP server. - */ - sendConfiguration(config = []) { - const iq = converse_muc_$iq({ - to: this.get('jid'), - type: "set" - }).c("query", { - xmlns: converse_muc_Strophe.NS.MUC_OWNER - }).c("x", { - xmlns: converse_muc_Strophe.NS.XFORM, - type: "submit" - }); - config.forEach(node => iq.cnode(node).up()); - return converse_core_api.sendIQ(iq); - }, + if (utils_form.isSameBareJID(jid1, jid2)) { + if (bare_jid1 === this.get('jid')) { + // MUC JIDs + return resource1 === resource2; + } else { + return true; + } + } else { + const occupant1 = bare_jid1 === this.get('jid') ? this.occupants.findOccupant({ + 'nick': resource1 + }) : this.occupants.findOccupant({ + 'jid': bare_jid1 + }); + const occupant2 = bare_jid2 === this.get('jid') ? this.occupants.findOccupant({ + 'nick': resource2 + }) : this.occupants.findOccupant({ + 'jid': bare_jid2 + }); + return occupant1 === occupant2; + } + }, - /** - * Returns the `role` which the current user has in this MUC - * @private - * @method _converse.ChatRoom#getOwnRole - * @returns { ('none'|'visitor'|'participant'|'moderator') } - */ - getOwnRole() { - var _this$getOwnOccupant, _this$getOwnOccupant$; + async isSubjectHidden() { + const jids = await core_api.user.settings.get('mucs_with_hidden_subject', []); + return jids.includes(this.get('jid')); + }, - return (_this$getOwnOccupant = this.getOwnOccupant()) === null || _this$getOwnOccupant === void 0 ? void 0 : (_this$getOwnOccupant$ = _this$getOwnOccupant.attributes) === null || _this$getOwnOccupant$ === void 0 ? void 0 : _this$getOwnOccupant$.role; - }, + async toggleSubjectHiddenState() { + const muc_jid = this.get('jid'); + const jids = await core_api.user.settings.get('mucs_with_hidden_subject', []); - /** - * Returns the `affiliation` which the current user has in this MUC - * @private - * @method _converse.ChatRoom#getOwnAffiliation - * @returns { ('none'|'outcast'|'member'|'admin'|'owner') } - */ - getOwnAffiliation() { - var _this$getOwnOccupant2, _this$getOwnOccupant3; + if (jids.includes(this.get('jid'))) { + core_api.user.settings.set('mucs_with_hidden_subject', jids.filter(jid => jid !== muc_jid)); + } else { + core_api.user.settings.set('mucs_with_hidden_subject', [...jids, muc_jid]); + } + }, - return (_this$getOwnOccupant2 = this.getOwnOccupant()) === null || _this$getOwnOccupant2 === void 0 ? void 0 : (_this$getOwnOccupant3 = _this$getOwnOccupant2.attributes) === null || _this$getOwnOccupant3 === void 0 ? void 0 : _this$getOwnOccupant3.affiliation; - }, + /** + * Handle a possible subject change and return `true` if so. + * @private + * @method _converse.ChatRoom#handleSubjectChange + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMUCMessage} + */ + async handleSubjectChange(attrs) { + const __ = core_converse.__; + + if (typeof attrs.subject === 'string' && !attrs.thread && !attrs.message) { + // https://xmpp.org/extensions/xep-0045.html#subject-mod + // ----------------------------------------------------- + // The subject is changed by sending a message of type "groupchat" to the <room@service>, + // where the <message/> MUST contain a <subject/> element that specifies the new subject but + // MUST NOT contain a <body/> element (or a <thread/> element). + const subject = attrs.subject; + const author = attrs.nick; + utils_form.safeSave(this, { + 'subject': { + author, + 'text': attrs.subject || '' + } + }); - /** - * Get the {@link _converse.ChatRoomOccupant} instance which - * represents the current user. - * @private - * @method _converse.ChatRoom#getOwnOccupant - * @returns { _converse.ChatRoomOccupant } - */ - getOwnOccupant() { - return this.occupants.findWhere({ - 'jid': converse_core_converse.bare_jid - }); - }, + if (!attrs.is_delayed && author) { + const message = subject ? __('Topic set by %1$s', author) : __('Topic cleared by %1$s', author); + const prev_msg = this.messages.last(); - /** - * Send an IQ stanza specifying an affiliation change. - * @private - * @method _converse.ChatRoom# - * @param { String } affiliation: affiliation - * (could also be stored on the member object). - * @param { Object } member: Map containing the member's jid and - * optionally a reason and affiliation. - */ - sendAffiliationIQ(affiliation, member) { - const iq = converse_muc_$iq({ - to: this.get('jid'), - type: "set" - }).c("query", { - xmlns: converse_muc_Strophe.NS.MUC_ADMIN - }).c("item", { - 'affiliation': member.affiliation || affiliation, - 'nick': member.nick, - 'jid': member.jid - }); + if ((prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('nick')) !== attrs.nick || (prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('type')) !== 'info' || (prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('message')) !== message) { + this.createMessage({ + message, + 'nick': attrs.nick, + 'type': 'info' + }); + } - if (member.reason !== undefined) { - iq.c("reason", member.reason); + if (await this.isSubjectHidden()) { + this.toggleSubjectHiddenState(); } + } - return converse_core_api.sendIQ(iq); - }, + return true; + } - /** - * Send IQ stanzas to the server to modify affiliations for users in this groupchat. - * - * See: https://xmpp.org/extensions/xep-0045.html#modifymember - * @private - * @method _converse.ChatRoom#setAffiliations - * @param { Object[] } members - * @param { string } members[].jid - The JID of the user whose affiliation will change - * @param { Array } members[].affiliation - The new affiliation for this user - * @param { string } [members[].reason] - An optional reason for the affiliation change - * @returns { Promise } - */ - setAffiliations(members) { - const affiliations = [...new Set(members.map(m => m.affiliation))]; - return Promise.all(affiliations.map(a => this.setAffiliation(a, members))); - }, + return false; + }, - /** - * Send an IQ stanza to modify an occupant's role - * @private - * @method _converse.ChatRoom#setRole - * @param { _converse.ChatRoomOccupant } occupant - * @param { String } role - * @param { String } reason - * @param { function } onSuccess - callback for a succesful response - * @param { function } onError - callback for an error response - */ - setRole(occupant, role, reason, onSuccess, onError) { - const item = $build("item", { - 'nick': occupant.get('nick'), - role - }); - const iq = converse_muc_$iq({ - 'to': this.get('jid'), - 'type': 'set' - }).c("query", { - xmlns: converse_muc_Strophe.NS.MUC_ADMIN - }).cnode(item.node); + /** + * Set the subject for this {@link _converse.ChatRoom} + * @private + * @method _converse.ChatRoom#setSubject + * @param { String } value + */ + setSubject(value = '') { + core_api.send(Object(strophe["c" /* $msg */])({ + to: this.get('jid'), + from: core_converse.connection.jid, + type: 'groupchat' + }).c('subject', { + xmlns: 'jabber:client' + }).t(value).tree()); + }, - if (reason !== null) { - iq.c("reason", reason); - } + /** + * Is this a chat state notification that can be ignored, + * because it's old or because it's from us. + * @private + * @method _converse.ChatRoom#ignorableCSN + * @param { Object } attrs - The message attributes + */ + ignorableCSN(attrs) { + return attrs.chat_state && !attrs.body && (attrs.is_delayed || this.isOwnMessage(attrs)); + }, - return converse_core_api.sendIQ(iq).then(onSuccess).catch(onError); - }, + /** + * Determines whether the message is from ourselves by checking + * the `from` attribute. Doesn't check the `type` attribute. + * @private + * @method _converse.ChatRoom#isOwnMessage + * @param { Object|XMLElement|_converse.Message } msg + * @returns { boolean } + */ + isOwnMessage(msg) { + let from; - /** - * @private - * @method _converse.ChatRoom#getOccupant - * @param { String } nickname_or_jid - The nickname or JID of the occupant to be returned - * @returns { _converse.ChatRoomOccupant } - */ - getOccupant(nickname_or_jid) { - return utils_form.isValidJID(nickname_or_jid) ? this.getOccupantByJID(nickname_or_jid) : this.getOccupantByNickname(nickname_or_jid); - }, + if (lodash_es_isElement(msg)) { + from = msg.getAttribute('from'); + } else if (msg instanceof core_converse.Message) { + from = msg.get('from'); + } else { + from = msg.from; + } - /** - * Return an array of occupant models that have the required role - * @private - * @method _converse.ChatRoom#getOccupantsWithRole - * @param { String } role - * @returns { _converse.ChatRoomOccupant[] } - */ - getOccupantsWithRole(role) { - return this.getOccupantsSortedBy('nick').filter(o => o.get('role') === role).map(item => { - return { - 'jid': item.get('jid'), - 'nick': item.get('nick'), - 'role': item.get('role') - }; - }); - }, + return strophe["e" /* Strophe */].getResourceFromJid(from) == this.get('nick'); + }, - /** - * Return an array of occupant models that have the required affiliation - * @private - * @method _converse.ChatRoom#getOccupantsWithAffiliation - * @param { String } affiliation - * @returns { _converse.ChatRoomOccupant[] } - */ - getOccupantsWithAffiliation(affiliation) { - return this.getOccupantsSortedBy('nick').filter(o => o.get('affiliation') === affiliation).map(item => { - return { - 'jid': item.get('jid'), - 'nick': item.get('nick'), - 'affiliation': item.get('affiliation') - }; - }); - }, + getUpdatedMessageAttributes(message, attrs) { + const new_attrs = core_converse.ChatBox.prototype.getUpdatedMessageAttributes.call(this, message, attrs); - /** - * Return an array of occupant models, sorted according to the passed-in attribute. - * @private - * @method _converse.ChatRoom#getOccupantsSortedBy - * @param { String } attr - The attribute to sort the returned array by - * @returns { _converse.ChatRoomOccupant[] } - */ - getOccupantsSortedBy(attr) { - return Array.from(this.occupants.models).sort((a, b) => a.get(attr) < b.get(attr) ? -1 : a.get(attr) > b.get(attr) ? 1 : 0); - }, + if (this.isOwnMessage(attrs)) { + const stanza_id_keys = Object.keys(attrs).filter(k => k.startsWith('stanza_id')); + Object.assign(new_attrs, lodash_es_pick(attrs, stanza_id_keys)); - /** - * Sends an IQ stanza to the server, asking it for the relevant affiliation list . - * Returns an array of {@link MemberListItem} objects, representing occupants - * that have the given affiliation. - * See: https://xmpp.org/extensions/xep-0045.html#modifymember - * @private - * @method _converse.ChatRoom#getAffiliationList - * @param { ("admin"|"owner"|"member") } affiliation - * @returns { Promise<MemberListItem[]> } - */ - async getAffiliationList(affiliation) { - const iq = converse_muc_$iq({ - to: this.get('jid'), - type: "get" - }).c("query", { - xmlns: converse_muc_Strophe.NS.MUC_ADMIN - }).c("item", { - 'affiliation': affiliation - }); - const result = await converse_core_api.sendIQ(iq, null, false); + if (!message.get('received')) { + new_attrs.received = new Date().toISOString(); + } + } - if (result === null) { - const err_msg = "Error: timeout while fetching ".concat(affiliation, " list for MUC ").concat(this.get('jid')); - const err = new Error(err_msg); - headless_log.warn(err_msg); - headless_log.warn(result); - return err; - } + return new_attrs; + }, - if (utils_form.isErrorStanza(result)) { - const err_msg = "Error: not allowed to fetch ".concat(affiliation, " list for MUC ").concat(this.get('jid')); - const err = new Error(err_msg); - headless_log.warn(err_msg); - headless_log.warn(result); - return err; - } + /** + * Send a MUC-0410 MUC Self-Ping stanza to room to determine + * whether we're still joined. + * @async + * @private + * @method _converse.ChatRoom#isJoined + * @returns {Promise<boolean>} + */ + async isJoined() { + const jid = this.get('jid'); + const ping = Object(strophe["b" /* $iq */])({ + 'to': "".concat(jid, "/").concat(this.get('nick')), + 'type': 'get' + }).c('ping', { + 'xmlns': strophe["e" /* Strophe */].NS.PING + }); - return utils_muc.parseMemberListIQ(result).filter(p => p).sort((a, b) => a.nick < b.nick ? -1 : a.nick > b.nick ? 1 : 0); - }, + try { + await core_api.sendIQ(ping); + } catch (e) { + if (e === null) { + headless_log.warn("isJoined: Timeout error while checking whether we're joined to MUC: ".concat(jid)); + } else { + headless_log.warn("isJoined: Apparently we're no longer connected to MUC: ".concat(jid)); + } - /** - * Fetch the lists of users with the given affiliations. - * Then compute the delta between those users and - * the passed in members, and if it exists, send the delta - * to the XMPP server to update the member list. - * @private - * @method _converse.ChatRoom#updateMemberLists - * @param { object } members - Map of member jids and affiliations. - * @returns { Promise } - * A promise which is resolved once the list has been - * updated or once it's been established there's no need - * to update the list. - */ - async updateMemberLists(members) { - const all_affiliations = ['member', 'admin', 'owner']; - const aff_lists = await Promise.all(all_affiliations.map(a => this.getAffiliationList(a))); - const old_members = aff_lists.reduce((acc, val) => utils_form.isErrorObject(val) ? acc : [...val, ...acc], []); - await this.setAffiliations(utils_muc.computeAffiliationsDelta(true, false, members, old_members)); - await this.occupants.fetchMembers(); - }, + return false; + } - /** - * Given a nick name, save it to the model state, otherwise, look - * for a server-side reserved nickname or default configured - * nickname and if found, persist that to the model state. - * @private - * @method _converse.ChatRoom#getAndPersistNickname - * @returns { Promise<string> } A promise which resolves with the nickname - */ - async getAndPersistNickname(nick) { - nick = nick || this.get('nick') || (await this.getReservedNick()) || converse_core_converse.getDefaultMUCNickname(); + return true; + }, - if (nick) { - this.save({ - nick - }, { - 'silent': true - }); - } + /** + * Check whether we're still joined and re-join if not + * @async + * @private + * @method _converse.ChatRoom#rejoinIfNecessary + */ + async rejoinIfNecessary() { + if (!(await this.isJoined())) { + this.rejoin(); + return true; + } + }, - return nick; - }, + /** + * @private + * @method _converse.ChatRoom#shouldShowErrorMessage + * @returns {Promise<boolean>} + */ + async shouldShowErrorMessage(attrs) { + if (attrs['error_condition'] === 'not-acceptable' && (await this.rejoinIfNecessary())) { + return false; + } - /** - * Use service-discovery to ask the XMPP server whether - * this user has a reserved nickname for this groupchat. - * If so, we'll use that, otherwise we render the nickname form. - * @private - * @method _converse.ChatRoom#getReservedNick - * @returns { Promise<string> } A promise which resolves with the reserved nick or null - */ - async getReservedNick() { - const stanza = converse_muc_$iq({ - 'to': this.get('jid'), - 'from': converse_core_converse.connection.jid, - 'type': "get" - }).c("query", { - 'xmlns': converse_muc_Strophe.NS.DISCO_INFO, - 'node': 'x-roomuser-item' - }); - const result = await converse_core_api.sendIQ(stanza, null, false); + return core_converse.ChatBox.prototype.shouldShowErrorMessage.call(this, attrs); + }, - if (utils_form.isErrorObject(result)) { - throw result; - } + /** + * Looks whether we already have a moderation message for this + * incoming message. If so, it's considered "dangling" because + * it probably hasn't been applied to anything yet, given that + * the relevant message is only coming in now. + * @private + * @method _converse.ChatRoom#findDanglingModeration + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMUCMessage} + * @returns { _converse.ChatRoomMessage } + */ + findDanglingModeration(attrs) { + if (!this.messages.length) { + return null; + } // Only look for dangling moderation if there are newer + // messages than this one, since moderation come after. - const identity_el = result.querySelector('query[node="x-roomuser-item"] identity'); - return identity_el ? identity_el.getAttribute('name') : null; - }, - async registerNickname() { - // See https://xmpp.org/extensions/xep-0045.html#register - const nick = this.get('nick'); - const jid = this.get('jid'); - let iq, err_msg; + if (this.messages.last().get('time') > attrs.time) { + // Search from latest backwards + const messages = Array.from(this.messages.models); + const stanza_id = attrs["stanza_id ".concat(this.get('jid'))]; - try { - iq = await converse_core_api.sendIQ(converse_muc_$iq({ - 'to': jid, - 'from': converse_core_converse.connection.jid, - 'type': 'get' - }).c('query', { - 'xmlns': converse_muc_Strophe.NS.MUC_REGISTER - })); - } catch (e) { - if (converse_muc_sizzle("not-allowed[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), e).length) { - err_msg = __("You're not allowed to register yourself in this groupchat."); - } else if (converse_muc_sizzle("registration-required[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), e).length) { - err_msg = __("You're not allowed to register in this groupchat because it's members-only."); - } + if (!stanza_id) { + return null; + } - headless_log.error(e); - return err_msg; - } + messages.reverse(); + return messages.find(({ + attributes + }) => attributes.moderated === 'retracted' && attributes.moderated_id === stanza_id && attributes.moderated_by); + } + }, - const required_fields = converse_muc_sizzle('field required', iq).map(f => f.parentElement); + /** + * Handles message moderation based on the passed in attributes. + * @private + * @method _converse.ChatRoom#handleModeration + * @param { object } attrs - Attributes representing a received + * message, as returned by {@link st.parseMUCMessage} + * @returns { Boolean } Returns `true` or `false` depending on + * whether a message was moderated or not. + */ + async handleModeration(attrs) { + const MODERATION_ATTRIBUTES = ['editable', 'moderated', 'moderated_by', 'moderated_id', 'moderation_reason']; - if (required_fields.length > 1 && required_fields[0].getAttribute('var') !== 'muc#register_roomnick') { - return headless_log.error("Can't register the user register in the groupchat ".concat(jid, " due to the required fields")); - } + if (attrs.moderated === 'retracted') { + const query = {}; + const key = "stanza_id ".concat(this.get('jid')); + query[key] = attrs.moderated_id; + const message = this.messages.findWhere(query); - try { - await converse_core_api.sendIQ(converse_muc_$iq({ - 'to': jid, - 'from': converse_core_converse.connection.jid, - 'type': 'set' - }).c('query', { - 'xmlns': converse_muc_Strophe.NS.MUC_REGISTER - }).c('x', { - 'xmlns': converse_muc_Strophe.NS.XFORM, - 'type': 'submit' - }).c('field', { - 'var': 'FORM_TYPE' - }).c('value').t('http://jabber.org/protocol/muc#register').up().up().c('field', { - 'var': 'muc#register_roomnick' - }).c('value').t(nick)); - } catch (e) { - if (converse_muc_sizzle("service-unavailable[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), e).length) { - err_msg = __("Can't register your nickname in this groupchat, it doesn't support registration."); - } else if (converse_muc_sizzle("bad-request[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), e).length) { - err_msg = __("Can't register your nickname in this groupchat, invalid data form supplied."); - } + if (!message) { + attrs['dangling_moderation'] = true; + await this.createMessage(attrs); + return true; + } - headless_log.error(err_msg); - headless_log.error(e); - return err_msg; - } - }, + message.save(lodash_es_pick(attrs, MODERATION_ATTRIBUTES)); + return true; + } else { + // Check if we have dangling moderation message + const message = this.findDanglingModeration(attrs); - /** - * Given a presence stanza, update the occupant model based on its contents. - * @private - * @method _converse.ChatRoom#updateOccupantsOnPresence - * @param { XMLElement } pres - The presence stanza - */ - updateOccupantsOnPresence(pres) { - var _occupant$attributes, _occupant$attributes2; + if (message) { + const moderation_attrs = lodash_es_pick(message.attributes, MODERATION_ATTRIBUTES); + const new_attrs = Object.assign({ + 'dangling_moderation': false + }, attrs, moderation_attrs); + delete new_attrs['id']; // Delete id, otherwise a new cache entry gets created - const data = utils_stanza.parseMUCPresence(pres); + message.save(new_attrs); + return true; + } + } - if (data.type === 'error' || !data.jid && !data.nick) { - return true; - } + return false; + }, - const occupant = this.occupants.findOccupant(data); // Destroy an unavailable occupant if this isn't a nick change operation and if they're not affiliated + /** + * @param {String} actor - The nickname of the actor that caused the notification + * @param {String|Array<String>} states - The state or states representing the type of notificcation + */ + removeNotification(actor, states) { + const actors_per_state = this.notifications.toJSON(); + states = Array.isArray(states) ? states : [states]; + states.forEach(state => { + const existing_actors = Array.from(actors_per_state[state] || []); - if (data.type === 'unavailable' && occupant && !data.states.includes(converse.MUC_NICK_CHANGED_CODE) && !['admin', 'owner', 'member'].includes(data['affiliation'])) { - // Before destroying we set the new data, so that we can show the disconnection message - occupant.set(data); - occupant.destroy(); - return; - } + if (existing_actors.includes(actor)) { + const idx = existing_actors.indexOf(actor); + existing_actors.splice(idx, 1); + this.notifications.set(state, Array.from(existing_actors)); + } + }); + }, - const jid = data.jid || ''; - const attributes = Object.assign(data, { - 'jid': converse_muc_Strophe.getBareJidFromJid(jid) || (occupant === null || occupant === void 0 ? void 0 : (_occupant$attributes = occupant.attributes) === null || _occupant$attributes === void 0 ? void 0 : _occupant$attributes.jid), - 'resource': converse_muc_Strophe.getResourceFromJid(jid) || (occupant === null || occupant === void 0 ? void 0 : (_occupant$attributes2 = occupant.attributes) === null || _occupant$attributes2 === void 0 ? void 0 : _occupant$attributes2.resource) - }); + /** + * Update the notifications model by adding the passed in nickname + * to the array of nicknames that all match a particular state. + * + * Removes the nickname from any other states it might be associated with. + * + * The state can be a XEP-0085 Chat State or a XEP-0045 join/leave + * state. + * @param {String} actor - The nickname of the actor that causes the notification + * @param {String} state - The state representing the type of notificcation + */ + updateNotifications(actor, state) { + const actors_per_state = this.notifications.toJSON(); + const existing_actors = actors_per_state[state] || []; - if (occupant) { - occupant.save(attributes); - } else { - this.occupants.create(attributes); - } - }, + if (existing_actors.includes(actor)) { + return; + } - fetchFeaturesIfConfigurationChanged(stanza) { - // 104: configuration change - // 170: logging enabled - // 171: logging disabled - // 172: room no longer anonymous - // 173: room now semi-anonymous - // 174: room now fully anonymous - const codes = ['104', '170', '171', '172', '173', '174']; + const reducer = (out, s) => { + if (s === state) { + out[s] = [...existing_actors, actor]; + } else { + out[s] = (actors_per_state[s] || []).filter(a => a !== actor); + } - if (converse_muc_sizzle('status', stanza).filter(e => codes.includes(e.getAttribute('status'))).length) { - this.refreshDiscoInfo(); - } - }, + return out; + }; - /** - * Given two JIDs, which can be either user JIDs or MUC occupant JIDs, - * determine whether they belong to the same user. - * @private - * @method _converse.ChatRoom#isSameUser - * @param { String } jid1 - * @param { String } jid2 - * @returns { Boolean } - */ - isSameUser(jid1, jid2) { - const bare_jid1 = converse_muc_Strophe.getBareJidFromJid(jid1); - const bare_jid2 = converse_muc_Strophe.getBareJidFromJid(jid2); - const resource1 = converse_muc_Strophe.getResourceFromJid(jid1); - const resource2 = converse_muc_Strophe.getResourceFromJid(jid2); - - if (utils_form.isSameBareJID(jid1, jid2)) { - if (bare_jid1 === this.get('jid')) { - // MUC JIDs - return resource1 === resource2; - } else { - return true; - } - } else { - const occupant1 = bare_jid1 === this.get('jid') ? this.occupants.findOccupant({ - 'nick': resource1 - }) : this.occupants.findOccupant({ - 'jid': bare_jid1 - }); - const occupant2 = bare_jid2 === this.get('jid') ? this.occupants.findOccupant({ - 'nick': resource2 - }) : this.occupants.findOccupant({ - 'jid': bare_jid2 - }); - return occupant1 === occupant2; - } - }, + const actors_per_chat_state = converse.CHAT_STATES.reduce(reducer, {}); + const actors_per_traffic_state = converse.MUC_TRAFFIC_STATES_LIST.reduce(reducer, {}); + const actors_per_role_change = converse.MUC_ROLE_CHANGES_LIST.reduce(reducer, {}); + this.notifications.set(Object.assign(actors_per_chat_state, actors_per_traffic_state, actors_per_role_change)); + window.setTimeout(() => this.removeNotification(actor, state), 10000); + }, - async isSubjectHidden() { - const jids = await converse_core_api.user.settings.get('mucs_with_hidden_subject', []); - return jids.includes(this.get('jid')); - }, + /** + * Handler for all MUC messages sent to this groupchat. This method + * shouldn't be called directly, instead {@link _converse.ChatRoom#queueMessage} + * should be called. + * @private + * @method _converse.ChatRoom#onMessage + * @param { MessageAttributes } attrs - A promise which resolves to the message attributes. + */ + async onMessage(attrs) { + attrs = await attrs; - async toggleSubjectHiddenState() { - const muc_jid = this.get('jid'); - const jids = await converse_core_api.user.settings.get('mucs_with_hidden_subject', []); + if (utils_form.isErrorObject(attrs)) { + attrs.stanza && headless_log.error(attrs.stanza); + return headless_log.error(attrs.message); + } - if (jids.includes(this.get('jid'))) { - converse_core_api.user.settings.set('mucs_with_hidden_subject', jids.filter(jid => jid !== muc_jid)); - } else { - converse_core_api.user.settings.set('mucs_with_hidden_subject', [...jids, muc_jid]); - } - }, + const message = this.getDuplicateMessage(attrs); - /** - * Handle a possible subject change and return `true` if so. - * @private - * @method _converse.ChatRoom#handleSubjectChange - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMUCMessage} - */ - async handleSubjectChange(attrs) { - if (typeof attrs.subject === 'string' && !attrs.thread && !attrs.message) { - // https://xmpp.org/extensions/xep-0045.html#subject-mod - // ----------------------------------------------------- - // The subject is changed by sending a message of type "groupchat" to the <room@service>, - // where the <message/> MUST contain a <subject/> element that specifies the new subject but - // MUST NOT contain a <body/> element (or a <thread/> element). - const subject = attrs.subject; - const author = attrs.nick; - utils_form.safeSave(this, { - 'subject': { - author, - 'text': attrs.subject || '' - } - }); + if (message) { + return this.updateMessage(message, attrs); + } else if (attrs.is_valid_receipt_request || attrs.is_marker || this.ignorableCSN(attrs)) { + return; + } - if (!attrs.is_delayed && author) { - const message = subject ? __('Topic set by %1$s', author) : __('Topic cleared by %1$s', author); - const prev_msg = this.messages.last(); + if ((await this.handleRetraction(attrs)) || (await this.handleModeration(attrs)) || (await this.handleSubjectChange(attrs))) { + return this.removeNotification(attrs.nick, ['composing', 'paused']); + } - if ((prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('nick')) !== attrs.nick || (prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('type')) !== 'info' || (prev_msg === null || prev_msg === void 0 ? void 0 : prev_msg.get('message')) !== message) { - this.createMessage({ - message, - 'nick': attrs.nick, - 'type': 'info' - }); - } + this.setEditable(attrs, attrs.time); - if (await this.isSubjectHidden()) { - this.toggleSubjectHiddenState(); - } - } + if (attrs['chat_state']) { + this.updateNotifications(attrs.nick, attrs.chat_state); + } - return true; - } + if (utils_form.shouldCreateGroupchatMessage(attrs)) { + const msg = this.handleCorrection(attrs) || (await this.createMessage(attrs)); + this.removeNotification(attrs.nick, ['composing', 'paused']); + this.handleUnreadMessage(msg); + } + }, - return false; - }, + handleModifyError(pres) { + var _pres$querySelector; - /** - * Set the subject for this {@link _converse.ChatRoom} - * @private - * @method _converse.ChatRoom#setSubject - * @param { String } value - */ - setSubject(value = '') { - converse_core_api.send(converse_muc_$msg({ - to: this.get('jid'), - from: converse_core_converse.connection.jid, - type: "groupchat" - }).c("subject", { - xmlns: "jabber:client" - }).t(value).tree()); - }, + const text = (_pres$querySelector = pres.querySelector('error text')) === null || _pres$querySelector === void 0 ? void 0 : _pres$querySelector.textContent; - /** - * Is this a chat state notification that can be ignored, - * because it's old or because it's from us. - * @private - * @method _converse.ChatRoom#ignorableCSN - * @param { Object } attrs - The message attributes - */ - ignorableCSN(attrs) { - return attrs.chat_state && !attrs.body && (attrs.is_delayed || this.isOwnMessage(attrs)); - }, + if (text) { + if (this.session.get('connection_status') === converse.ROOMSTATUS.CONNECTING) { + this.setDisconnectionMessage(text); + } else { + const attrs = { + 'type': 'error', + 'message': text, + 'is_ephemeral': true + }; + this.createMessage(attrs); + } + } + }, - /** - * Determines whether the message is from ourselves by checking - * the `from` attribute. Doesn't check the `type` attribute. - * @private - * @method _converse.ChatRoom#isOwnMessage - * @param { Object|XMLElement|_converse.Message } msg - * @returns { boolean } - */ - isOwnMessage(msg) { - let from; + /** + * Handle a presence stanza that disconnects the user from the MUC + * @param { XMLElement } stanza + */ + handleDisconnection(stanza) { + var _item$querySelector; - if (lodash_es_isElement(msg)) { - from = msg.getAttribute('from'); - } else if (msg instanceof converse_core_converse.Message) { - from = msg.get('from'); - } else { - from = msg.from; - } + const is_self = stanza.querySelector("status[code='110']") !== null; + const x = sizzle_default()("x[xmlns=\"".concat(strophe["e" /* Strophe */].NS.MUC_USER, "\"]"), stanza).pop(); - return converse_muc_Strophe.getResourceFromJid(from) == this.get('nick'); - }, + if (!x) { + return; + } - getUpdatedMessageAttributes(message, attrs) { - // Overridden in converse-muc and converse-mam - const new_attrs = converse_core_converse.ChatBox.prototype.getUpdatedMessageAttributes.call(this, message, attrs); + const codes = sizzle_default()('status', x).map(s => s.getAttribute('code')); + const disconnection_codes = lodash_es_intersection(codes, Object.keys(core_converse.muc.disconnect_messages)); + const disconnected = is_self && disconnection_codes.length > 0; - if (this.isOwnMessage(attrs)) { - const stanza_id_keys = Object.keys(attrs).filter(k => k.startsWith('stanza_id')); - Object.assign(new_attrs, lodash_es_pick(attrs, stanza_id_keys)); + if (!disconnected) { + return; + } // By using querySelector we assume here there is + // one <item> per <x xmlns='http://jabber.org/protocol/muc#user'> + // element. This appears to be a safe assumption, since + // each <x/> element pertains to a single user. - if (!message.get('received')) { - new_attrs.received = new Date().toISOString(); - } - } - return new_attrs; - }, + const item = x.querySelector('item'); + const reason = item ? (_item$querySelector = item.querySelector('reason')) === null || _item$querySelector === void 0 ? void 0 : _item$querySelector.textContent : undefined; + const actor = item ? lodash_es_invoke(item.querySelector('actor'), 'getAttribute', 'nick') : undefined; + const message = core_converse.muc.disconnect_messages[disconnection_codes[0]]; + this.setDisconnectionMessage(message, reason, actor); + }, - /** - * Send a MUC-0410 MUC Self-Ping stanza to room to determine - * whether we're still joined. - * @async - * @private - * @method _converse.ChatRoom#isJoined - * @returns {Promise<boolean>} - */ - async isJoined() { - const ping = converse_muc_$iq({ - 'to': "".concat(this.get('jid'), "/").concat(this.get('nick')), - 'type': "get" - }).c("ping", { - 'xmlns': converse_muc_Strophe.NS.PING - }); + getActionInfoMessage(code, nick, actor) { + const __ = core_converse.__; - try { - await converse_core_api.sendIQ(ping); - } catch (e) { - if (e === null) { - headless_log.error("Timeout error while checking whether we're joined to MUC: ".concat(this.get('jid'))); - } else { - headless_log.error("Apparently we're no longer connected to MUC: ".concat(this.get('jid'))); - headless_log.error(e); - } + if (code === '301') { + return actor ? __('%1$s has been banned by %2$s', nick, actor) : __('%1$s has been banned', nick); + } else if (code === '303') { + return __("%1$s's nickname has changed", nick); + } else if (code === '307') { + return actor ? __('%1$s has been kicked out by %2$s', nick, actor) : __('%1$s has been kicked out', nick); + } else if (code === '321') { + return __('%1$s has been removed because of an affiliation change', nick); + } else if (code === '322') { + return __('%1$s has been removed for not being a member', nick); + } + }, - return false; - } + createAffiliationChangeMessage(occupant) { + const __ = core_converse.__; + const previous_affiliation = occupant._previousAttributes.affiliation; - return true; - }, + if (!previous_affiliation) { + // If no previous affiliation was set, then we don't + // interpret this as an affiliation change. + // For example, if muc_send_probes is true, then occupants + // are created based on incoming messages, in which case + // we don't yet know the affiliation + return; + } - /** - * Check whether we're still joined and re-join if not - * @async - * @private - * @method _converse.ChatRoom#rejoinIfNecessary - */ - async rejoinIfNecessary() { - if (!(await this.isJoined())) { - this.rejoin(); - return true; - } - }, + const current_affiliation = occupant.get('affiliation'); - /** - * @private - * @method _converse.ChatRoom#shouldShowErrorMessage - * @returns {Promise<boolean>} - */ - async shouldShowErrorMessage(attrs) { - if (attrs['error_condition'] === 'not-acceptable' && (await this.rejoinIfNecessary())) { - return false; - } + if (previous_affiliation === 'admin' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXADMIN)) { + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is no longer an admin of this groupchat', occupant.get('nick')) + }); + } else if (previous_affiliation === 'owner' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXOWNER)) { + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is no longer an owner of this groupchat', occupant.get('nick')) + }); + } else if (previous_affiliation === 'outcast' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXOUTCAST)) { + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is no longer banned from this groupchat', occupant.get('nick')) + }); + } - return converse_core_converse.ChatBox.prototype.shouldShowErrorMessage.call(this, attrs); - }, + if (current_affiliation === 'none' && previous_affiliation === 'member' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXMEMBER)) { + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is no longer a member of this groupchat', occupant.get('nick')) + }); + } - /** - * Looks whether we already have a moderation message for this - * incoming message. If so, it's considered "dangling" because - * it probably hasn't been applied to anything yet, given that - * the relevant message is only coming in now. - * @private - * @method _converse.ChatRoom#findDanglingModeration - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMUCMessage} - * @returns { _converse.ChatRoomMessage } - */ - findDanglingModeration(attrs) { - if (!this.messages.length) { - return null; - } // Only look for dangling moderation if there are newer - // messages than this one, since moderation come after. + if (current_affiliation === 'member' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.MEMBER)) { + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is now a member of this groupchat', occupant.get('nick')) + }); + } else if (current_affiliation === 'admin' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.ADMIN) || current_affiliation == 'owner' && core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.OWNER)) { + // For example: AppleJack is now an (admin|owner) of this groupchat + this.createMessage({ + 'type': 'info', + 'message': __('%1$s is now an %2$s of this groupchat', occupant.get('nick'), current_affiliation) + }); + } + }, + createRoleChangeMessage(occupant, changed) { + if (changed === 'none' || occupant.changed.affiliation) { + // We don't inform of role changes if they accompany affiliation changes. + return; + } - if (this.messages.last().get('time') > attrs.time) { - // Search from latest backwards - const messages = Array.from(this.messages.models); - const stanza_id = attrs["stanza_id ".concat(this.get('jid'))]; + const previous_role = occupant._previousAttributes.role; - if (!stanza_id) { - return null; - } + if (previous_role === 'moderator' && core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.DEOP)) { + this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.DEOP); + } else if (previous_role === 'visitor' && core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.VOICE)) { + this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.VOICE); + } - messages.reverse(); - return messages.find(({ - attributes - }) => attributes.moderated === 'retracted' && attributes.moderated_id === stanza_id && attributes.moderated_by); - } - }, + if (occupant.get('role') === 'visitor' && core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.MUTE)) { + this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.MUTE); + } else if (occupant.get('role') === 'moderator') { + if (!['owner', 'admin'].includes(occupant.get('affiliation')) && core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.OP)) { + // Oly show this message if the user isn't already + // an admin or owner, otherwise this isn't new information. + this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.OP); + } + } + }, - /** - * Handles message moderation based on the passed in attributes. - * @private - * @method _converse.ChatRoom#handleModeration - * @param { object } attrs - Attributes representing a received - * message, as returned by {@link st.parseMUCMessage} - * @returns { Boolean } Returns `true` or `false` depending on - * whether a message was moderated or not. - */ - async handleModeration(attrs) { - const MODERATION_ATTRIBUTES = ['editable', 'moderated', 'moderated_by', 'moderated_id', 'moderation_reason']; - - if (attrs.moderated === 'retracted') { - const query = {}; - const key = "stanza_id ".concat(this.get('jid')); - query[key] = attrs.moderated_id; - const message = this.messages.findWhere(query); - - if (!message) { - attrs['dangling_moderation'] = true; - await this.createMessage(attrs); - return true; - } + /** + * Create an info message based on a received MUC status code + * @private + * @method _converse.ChatRoom#createInfoMessage + * @param { string } code - The MUC status code + * @param { XMLElement } stanza - The original stanza that contains the code + * @param { Boolean } is_self - Whether this stanza refers to our own presence + */ + createInfoMessage(code, stanza, is_self) { + const __ = core_converse.__; + const data = { + 'type': 'info' + }; - message.save(lodash_es_pick(attrs, MODERATION_ATTRIBUTES)); - return true; - } else { - // Check if we have dangling moderation message - const message = this.findDanglingModeration(attrs); + if (!core_converse.isInfoVisible(code)) { + return; + } - if (message) { - const moderation_attrs = lodash_es_pick(message.attributes, MODERATION_ATTRIBUTES); - const new_attrs = Object.assign({ - 'dangling_moderation': false - }, attrs, moderation_attrs); - delete new_attrs['id']; // Delete id, otherwise a new cache entry gets created + if (code === '110' || code === '100' && !is_self) { + return; + } else if (code in core_converse.muc.info_messages) { + data.message = core_converse.muc.info_messages[code]; + } else if (!is_self && ACTION_INFO_CODES.includes(code)) { + var _item$querySelector2, _item$querySelector3; - message.save(new_attrs); - return true; - } - } + const nick = strophe["e" /* Strophe */].getResourceFromJid(stanza.getAttribute('from')); + const item = stanza.querySelector("x[xmlns=\"".concat(strophe["e" /* Strophe */].NS.MUC_USER, "\"] item")); + data.actor = item ? (_item$querySelector2 = item.querySelector('actor')) === null || _item$querySelector2 === void 0 ? void 0 : _item$querySelector2.getAttribute('nick') : undefined; + data.reason = item ? (_item$querySelector3 = item.querySelector('reason')) === null || _item$querySelector3 === void 0 ? void 0 : _item$querySelector3.textContent : undefined; + data.message = this.getActionInfoMessage(code, nick, data.actor); + } else if (is_self && code in core_converse.muc.new_nickname_messages) { + // XXX: Side-effect of setting the nick. Should ideally be refactored out of this method + let nick; - return false; - }, - - /** - * Queue an incoming message stanza meant for this {@link _converse.Chatroom} for processing. - * @async - * @private - * @method _converse.ChatRoom#queueMessage - * @param { Promise<MessageAttributes> } attrs - A promise which resolves to the message attributes - */ - queueMessage(attrs) { - var _this$messages; - - if ((_this$messages = this.messages) === null || _this$messages === void 0 ? void 0 : _this$messages.fetched) { - this.msg_chain = this.msg_chain || this.messages.fetched; - this.msg_chain = this.msg_chain.then(() => this.onMessage(attrs)); - return this.msg_chain; - } else { - this.message_queue.push(attrs); - return Promise.resolve(); - } - }, - - /** - * @param {String} actor - The nickname of the actor that caused the notification - * @param {String|Array<String>} states - The state or states representing the type of notificcation - */ - removeNotification(actor, states) { - const actors_per_state = this.notifications.toJSON(); - states = Array.isArray(states) ? states : [states]; - states.forEach(state => { - const existing_actors = Array.from(actors_per_state[state] || []); - - if (existing_actors.includes(actor)) { - const idx = existing_actors.indexOf(actor); - existing_actors.splice(idx, 1); - this.notifications.set(state, Array.from(existing_actors)); - } - }); - }, - - /** - * Update the notifications model by adding the passed in nickname - * to the array of nicknames that all match a particular state. - * - * Removes the nickname from any other states it might be associated with. - * - * The state can be a XEP-0085 Chat State or a XEP-0045 join/leave - * state. - * @param {String} actor - The nickname of the actor that causes the notification - * @param {String} state - The state representing the type of notificcation - */ - updateNotifications(actor, state) { - const actors_per_state = this.notifications.toJSON(); - const existing_actors = actors_per_state[state] || []; - - if (existing_actors.includes(actor)) { - return; - } + if (is_self && code === '210') { + nick = strophe["e" /* Strophe */].getResourceFromJid(stanza.getAttribute('from')); + } else if (is_self && code === '303') { + nick = stanza.querySelector("x[xmlns=\"".concat(strophe["e" /* Strophe */].NS.MUC_USER, "\"] item")).getAttribute('nick'); + } - const reducer = (out, s) => { - if (s === state) { - out[s] = [...existing_actors, actor]; - } else { - out[s] = (actors_per_state[s] || []).filter(a => a !== actor); - } + this.save('nick', nick); + data.message = __(core_converse.muc.new_nickname_messages[code], nick); + } - return out; - }; + if (data.message) { + if (code === '201' && this.messages.findWhere(data)) { + return; + } else if (code in core_converse.muc.info_messages && this.messages.length && this.messages.pop().get('message') === data.message) { + // XXX: very naive duplication checking + return; + } - const actors_per_chat_state = converse.CHAT_STATES.reduce(reducer, {}); - const actors_per_traffic_state = converse.MUC_TRAFFIC_STATES_LIST.reduce(reducer, {}); - const actors_per_role_change = converse.MUC_ROLE_CHANGES_LIST.reduce(reducer, {}); - this.notifications.set(Object.assign(actors_per_chat_state, actors_per_traffic_state, actors_per_role_change)); - window.setTimeout(() => this.removeNotification(actor, state), 10000); - }, + this.createMessage(data); + } + }, - /** - * Handler for all MUC messages sent to this groupchat. This method - * shouldn't be called directly, instead {@link _converse.ChatRoom#queueMessage} - * should be called. - * @private - * @method _converse.ChatRoom#onMessage - * @param { MessageAttributes } attrs - A promise which resolves to the message attributes. - */ - async onMessage(attrs) { - attrs = await attrs; + /** + * Create info messages based on a received presence or message stanza + * @private + * @method _converse.ChatRoom#createInfoMessages + * @param { XMLElement } stanza + */ + createInfoMessages(stanza) { + const codes = sizzle_default()("x[xmlns=\"".concat(strophe["e" /* Strophe */].NS.MUC_USER, "\"] status"), stanza).map(s => s.getAttribute('code')); - if (utils_form.isErrorObject(attrs)) { - attrs.stanza && headless_log.error(attrs.stanza); - return headless_log.error(attrs.message); - } + if (codes.includes('333') && codes.includes('307')) { + // See: https://github.com/xsf/xeps/pull/969/files#diff-ac5113766e59219806793c1f7d967f1bR4966 + codes.splice(codes.indexOf('307'), 1); + } - const message = this.getDuplicateMessage(attrs); + const is_self = codes.includes('110'); + codes.forEach(code => this.createInfoMessage(code, stanza, is_self)); + }, - if (message) { - return this.updateMessage(message, attrs); - } else if (attrs.is_valid_receipt_request || attrs.is_marker || this.ignorableCSN(attrs)) { - return; - } + setDisconnectionMessage(message, reason, actor) { + this.save({ + 'disconnection_message': message, + 'disconnection_reason': reason, + 'disconnection_actor': actor + }); + this.session.save({ + 'connection_status': converse.ROOMSTATUS.DISCONNECTED + }); + }, - if ((await this.handleRetraction(attrs)) || (await this.handleModeration(attrs)) || (await this.handleSubjectChange(attrs))) { - return this.removeNotification(attrs.nick, ['composing', 'paused']); - } + onNicknameClash(presence) { + const __ = core_converse.__; - this.setEditable(attrs, attrs.time); + if (core_api.settings.get('muc_nickname_from_jid')) { + const nick = presence.getAttribute('from').split('/')[1]; - if (attrs['chat_state']) { - this.updateNotifications(attrs.nick, attrs.chat_state); - } + if (nick === core_converse.getDefaultMUCNickname()) { + this.join(nick + '-2'); + } else { + const del = nick.lastIndexOf('-'); + const num = nick.substring(del + 1, nick.length); + this.join(nick.substring(0, del + 1) + String(Number(num) + 1)); + } + } else { + this.save({ + 'nickname_validation_message': __('The nickname you chose is reserved or ' + 'currently in use, please choose a different one.') + }); + this.session.save({ + 'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED + }); + } + }, - if (utils_form.shouldCreateGroupchatMessage(attrs)) { - const msg = this.handleCorrection(attrs) || (await this.createMessage(attrs)); - this.removeNotification(attrs.nick, ['composing', 'paused']); - this.handleUnreadMessage(msg); - } - }, + /** + * Parses a <presence> stanza with type "error" and sets the proper + * `connection_status` value for this {@link _converse.ChatRoom} as + * well as any additional output that can be shown to the user. + * @private + * @param { XMLElement } stanza - The presence stanza + */ + onErrorPresence(stanza) { + var _sizzle$pop; - handleModifyError(pres) { - var _pres$querySelector; + const __ = core_converse.__; + const error = stanza.querySelector('error'); + const error_type = error.getAttribute('type'); + const reason = (_sizzle$pop = sizzle_default()("text[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), error).pop()) === null || _sizzle$pop === void 0 ? void 0 : _sizzle$pop.textContent; - const text = (_pres$querySelector = pres.querySelector('error text')) === null || _pres$querySelector === void 0 ? void 0 : _pres$querySelector.textContent; + if (error_type === 'modify') { + this.handleModifyError(stanza); + } else if (error_type === 'auth') { + if (sizzle_default()("not-authorized[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), error).length) { + this.save({ + 'password_validation_message': reason || __('Password incorrect') + }); + this.session.save({ + 'connection_status': converse.ROOMSTATUS.PASSWORD_REQUIRED + }); + } - if (text) { - if (this.session.get('connection_status') === converse.ROOMSTATUS.CONNECTING) { - this.setDisconnectionMessage(text); - } else { - const attrs = { - 'type': 'error', - 'message': text, - 'is_ephemeral': true - }; - this.createMessage(attrs); - } - } - }, + if (error.querySelector('registration-required')) { + const message = __('You are not on the member list of this groupchat.'); - /** - * Handle a presence stanza that disconnects the user from the MUC - * @param { XMLElement } stanza - */ - handleDisconnection(stanza) { - var _item$querySelector; + this.setDisconnectionMessage(message, reason); + } else if (error.querySelector('forbidden')) { + const message = __('You have been banned from this groupchat.'); - const is_self = stanza.querySelector("status[code='110']") !== null; - const x = converse_muc_sizzle("x[xmlns=\"".concat(converse_muc_Strophe.NS.MUC_USER, "\"]"), stanza).pop(); + this.setDisconnectionMessage(message, reason); + } + } else if (error_type === 'cancel') { + if (error.querySelector('not-allowed')) { + const message = __('You are not allowed to create new groupchats.'); - if (!x) { - return; - } + this.setDisconnectionMessage(message, reason); + } else if (error.querySelector('not-acceptable')) { + const message = __("Your nickname doesn't conform to this groupchat's policies."); - const codes = converse_muc_sizzle('status', x).map(s => s.getAttribute('code')); - const disconnection_codes = lodash_es_intersection(codes, Object.keys(converse_core_converse.muc.disconnect_messages)); - const disconnected = is_self && disconnection_codes.length > 0; + this.setDisconnectionMessage(message, reason); + } else if (sizzle_default()("gone[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), error).length) { + var _sizzle$pop2; - if (!disconnected) { - return; - } // By using querySelector we assume here there is - // one <item> per <x xmlns='http://jabber.org/protocol/muc#user'> - // element. This appears to be a safe assumption, since - // each <x/> element pertains to a single user. + const moved_jid = (_sizzle$pop2 = sizzle_default()("gone[xmlns=\"".concat(strophe["e" /* Strophe */].NS.STANZAS, "\"]"), error).pop()) === null || _sizzle$pop2 === void 0 ? void 0 : _sizzle$pop2.textContent.replace(/^xmpp:/, '').replace(/\?join$/, ''); + this.save({ + moved_jid, + 'destroyed_reason': reason + }); + this.session.save({ + 'connection_status': converse.ROOMSTATUS.DESTROYED + }); + } else if (error.querySelector('conflict')) { + this.onNicknameClash(stanza); + } else if (error.querySelector('item-not-found')) { + const message = __('This groupchat does not (yet) exist.'); + this.setDisconnectionMessage(message, reason); + } else if (error.querySelector('service-unavailable')) { + const message = __('This groupchat has reached its maximum number of participants.'); - const item = x.querySelector('item'); - const reason = item ? (_item$querySelector = item.querySelector('reason')) === null || _item$querySelector === void 0 ? void 0 : _item$querySelector.textContent : undefined; - const actor = item ? lodash_es_invoke(item.querySelector('actor'), 'getAttribute', 'nick') : undefined; - const message = converse_core_converse.muc.disconnect_messages[disconnection_codes[0]]; - this.setDisconnectionMessage(message, reason, actor); - }, + this.setDisconnectionMessage(message, reason); + } else if (error.querySelector('remote-server-not-found')) { + const message = __('Remote server not found'); - getActionInfoMessage(code, nick, actor) { - if (code === '301') { - return actor ? __("%1$s has been banned by %2$s", nick, actor) : __("%1$s has been banned", nick); - } else if (code === '303') { - return __("%1$s\'s nickname has changed", nick); - } else if (code === '307') { - return actor ? __("%1$s has been kicked out by %2$s", nick, actor) : __("%1$s has been kicked out", nick); - } else if (code === '321') { - return __("%1$s has been removed because of an affiliation change", nick); - } else if (code === '322') { - return __("%1$s has been removed for not being a member", nick); - } - }, + const feedback = reason ? __('The explanation given is: "%1$s".', reason) : undefined; + this.setDisconnectionMessage(message, feedback); + } + } + }, - createAffiliationChangeMessage(occupant) { - const previous_affiliation = occupant._previousAttributes.affiliation; + /** + * Handles all MUC presence stanzas. + * @private + * @method _converse.ChatRoom#onPresence + * @param { XMLElement } stanza + */ + onPresence(stanza) { + if (stanza.getAttribute('type') === 'error') { + return this.onErrorPresence(stanza); + } - if (!previous_affiliation) { - // If no previous affiliation was set, then we don't - // interpret this as an affiliation change. - // For example, if muc_send_probes is true, then occupants - // are created based on incoming messages, in which case - // we don't yet know the affiliation - return; - } + this.createInfoMessages(stanza); - const current_affiliation = occupant.get('affiliation'); + if (stanza.querySelector("status[code='110']")) { + this.onOwnPresence(stanza); - if (previous_affiliation === 'admin' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXADMIN)) { - this.createMessage({ - 'type': 'info', - 'message': __("%1$s is no longer an admin of this groupchat", occupant.get('nick')) - }); - } else if (previous_affiliation === 'owner' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXOWNER)) { - this.createMessage({ - 'type': 'info', - 'message': __("%1$s is no longer an owner of this groupchat", occupant.get('nick')) - }); - } else if (previous_affiliation === 'outcast' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXOUTCAST)) { - this.createMessage({ - 'type': 'info', - 'message': __("%1$s is no longer banned from this groupchat", occupant.get('nick')) - }); - } + if (this.getOwnRole() !== 'none' && this.session.get('connection_status') === converse.ROOMSTATUS.CONNECTING) { + this.session.save('connection_status', converse.ROOMSTATUS.CONNECTED); + } + } else { + this.updateOccupantsOnPresence(stanza); + } + }, - if (current_affiliation === 'none' && previous_affiliation === 'member' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.EXMEMBER)) { - this.createMessage({ - 'type': 'info', - 'message': __("%1$s is no longer a member of this groupchat", occupant.get('nick')) - }); - } + /** + * Handles a received presence relating to the current user. + * + * For locked groupchats (which are by definition "new"), the + * groupchat will either be auto-configured or created instantly + * (with default config) or a configuration groupchat will be + * rendered. + * + * If the groupchat is not locked, then the groupchat will be + * auto-configured only if applicable and if the current + * user is the groupchat's owner. + * @private + * @method _converse.ChatRoom#onOwnPresence + * @param { XMLElement } pres - The stanza + */ + onOwnPresence(stanza) { + if (stanza.getAttribute('type') !== 'unavailable') { + const old_status = this.session.get('connection_status'); + + if (old_status !== converse.ROOMSTATUS.ENTERED) { + // Set connection_status before creating the occupant, but + // only trigger afterwards, so that plugins can access the + // occupant in their event handlers. + this.session.save('connection_status', converse.ROOMSTATUS.ENTERED, { + 'silent': true + }); + this.updateOccupantsOnPresence(stanza); + this.session.trigger('change:connection_status', this.session, old_status); + } else { + this.updateOccupantsOnPresence(stanza); + } + } else { + this.updateOccupantsOnPresence(stanza); + } - if (current_affiliation === 'member' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.MEMBER)) { - this.createMessage({ - 'type': 'info', - 'message': __("%1$s is now a member of this groupchat", occupant.get('nick')) - }); - } else if (current_affiliation === 'admin' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.ADMIN) || current_affiliation == 'owner' && converse_core_converse.isInfoVisible(converse.AFFILIATION_CHANGES.OWNER)) { - // For example: AppleJack is now an (admin|owner) of this groupchat - this.createMessage({ - 'type': 'info', - 'message': __('%1$s is now an %2$s of this groupchat', occupant.get('nick'), current_affiliation) - }); + if (stanza.getAttribute('type') === 'unavailable') { + this.handleDisconnection(stanza); + } else { + const locked_room = stanza.querySelector("status[code='201']"); + + if (locked_room) { + if (this.get('auto_configure')) { + this.autoConfigureChatRoom().then(() => this.refreshDiscoInfo()); + } else if (core_api.settings.get('muc_instant_rooms')) { + // Accept default configuration + this.sendConfiguration().then(() => this.refreshDiscoInfo()); + } else { + /** + * Triggered when a new room has been created which first needs to be configured + * and when `auto_configure` is set to `false`. + * Used by `_converse.ChatRoomView` in order to know when to render the + * configuration form for a new room. + * @event _converse.ChatRoom#configurationNeeded + * @example _converse.api.listen.on('configurationNeeded', () => { ... }); + */ + this.trigger('configurationNeeded'); + return; // We haven't yet entered the groupchat, so bail here. + } + } else if (!this.features.get('fetched')) { + // The features for this groupchat weren't fetched. + // That must mean it's a new groupchat without locking + // (in which case Prosody doesn't send a 201 status), + // otherwise the features would have been fetched in + // the "initialize" method already. + if (this.getOwnAffiliation() === 'owner' && this.get('auto_configure')) { + this.autoConfigureChatRoom().then(() => this.refreshDiscoInfo()); + } else { + this.getDiscoInfo(); } - }, + } + } - createRoleChangeMessage(occupant, changed) { - if (changed === "none" || occupant.changed.affiliation) { - // We don't inform of role changes if they accompany affiliation changes. - return; - } + this.session.save({ + 'connection_status': converse.ROOMSTATUS.ENTERED + }); + }, - const previous_role = occupant._previousAttributes.role; + /** + * Returns a boolean to indicate whether the current user + * was mentioned in a message. + * @private + * @method _converse.ChatRoom#isUserMentioned + * @param { String } - The text message + */ + isUserMentioned(message) { + const nick = this.get('nick'); - if (previous_role === 'moderator' && converse_core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.DEOP)) { - this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.DEOP); - } else if (previous_role === 'visitor' && converse_core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.VOICE)) { - this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.VOICE); - } + if (message.get('references').length) { + const mentions = message.get('references').filter(ref => ref.type === 'mention').map(ref => ref.value); + return mentions.includes(nick); + } else { + return new RegExp("\\b".concat(nick, "\\b")).test(message.get('message')); + } + }, - if (occupant.get('role') === 'visitor' && converse_core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.MUTE)) { - this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.MUTE); - } else if (occupant.get('role') === 'moderator') { - if (!['owner', 'admin'].includes(occupant.get('affiliation')) && converse_core_converse.isInfoVisible(converse.MUC_ROLE_CHANGES.OP)) { - // Oly show this message if the user isn't already - // an admin or owner, otherwise this isn't new information. - this.updateNotifications(occupant.get('nick'), converse.MUC_ROLE_CHANGES.OP); - } - } - }, + /* Given a newly received message, update the unread counter if necessary. + * @private + * @method _converse.ChatRoom#handleUnreadMessage + * @param { XMLElement } - The <messsage> stanza + */ + handleUnreadMessage(message) { + if (!(message === null || message === void 0 ? void 0 : message.get('body'))) { + return; + } - /** - * Create an info message based on a received MUC status code - * @private - * @method _converse.ChatRoom#createInfoMessage - * @param { string } code - The MUC status code - * @param { XMLElement } stanza - The original stanza that contains the code - * @param { Boolean } is_self - Whether this stanza refers to our own presence - */ - createInfoMessage(code, stanza, is_self) { - const data = { - 'type': 'info' + if (utils_form.isNewMessage(message)) { + if (this.isHidden()) { + const settings = { + 'num_unread_general': this.get('num_unread_general') + 1 }; - if (!converse_core_converse.isInfoVisible(code)) { - return; - } - - if (code === '110' || code === '100' && !is_self) { - return; - } else if (code in converse_core_converse.muc.info_messages) { - data.message = converse_core_converse.muc.info_messages[code]; - } else if (!is_self && ACTION_INFO_CODES.includes(code)) { - var _item$querySelector2, _item$querySelector3; - - const nick = converse_muc_Strophe.getResourceFromJid(stanza.getAttribute('from')); - const item = stanza.querySelector("x[xmlns=\"".concat(converse_muc_Strophe.NS.MUC_USER, "\"] item")); - data.actor = item ? (_item$querySelector2 = item.querySelector('actor')) === null || _item$querySelector2 === void 0 ? void 0 : _item$querySelector2.getAttribute('nick') : undefined; - data.reason = item ? (_item$querySelector3 = item.querySelector('reason')) === null || _item$querySelector3 === void 0 ? void 0 : _item$querySelector3.textContent : undefined; - data.message = this.getActionInfoMessage(code, nick, data.actor); - } else if (is_self && code in converse_core_converse.muc.new_nickname_messages) { - // XXX: Side-effect of setting the nick. Should ideally be refactored out of this method - let nick; - - if (is_self && code === '210') { - nick = converse_muc_Strophe.getResourceFromJid(stanza.getAttribute('from')); - } else if (is_self && code === '303') { - nick = stanza.querySelector("x[xmlns=\"".concat(converse_muc_Strophe.NS.MUC_USER, "\"] item")).getAttribute('nick'); - } - - this.save('nick', nick); - data.message = __(converse_core_converse.muc.new_nickname_messages[code], nick); + if (this.get('num_unread_general') === 0) { + settings['first_unread_id'] = message.get('id'); } - if (data.message) { - if (code === '201' && this.messages.findWhere(data)) { - return; - } else if (code in converse_core_converse.muc.info_messages && this.messages.length && this.messages.pop().get('message') === data.message) { - // XXX: very naive duplication checking - return; - } - - this.createMessage(data); + if (this.isUserMentioned(message)) { + settings.num_unread = this.get('num_unread') + 1; } - }, - - /** - * Create info messages based on a received presence or message stanza - * @private - * @method _converse.ChatRoom#createInfoMessages - * @param { XMLElement } stanza - */ - createInfoMessages(stanza) { - const codes = converse_muc_sizzle("x[xmlns=\"".concat(converse_muc_Strophe.NS.MUC_USER, "\"] status"), stanza).map(s => s.getAttribute('code')); - if (codes.includes('333') && codes.includes('307')) { - // See: https://github.com/xsf/xeps/pull/969/files#diff-ac5113766e59219806793c1f7d967f1bR4966 - codes.splice(codes.indexOf('307'), 1); - } + this.save(settings); + } else { + this.sendMarkerForMessage(message); + } + } + }, - const is_self = codes.includes('110'); - codes.forEach(code => this.createInfoMessage(code, stanza, is_self)); - }, + clearUnreadMsgCounter() { + if (this.get('num_unread_general') > 0 || this.get('num_unread') > 0) { + this.sendMarkerForMessage(this.messages.last()); + } - setDisconnectionMessage(message, reason, actor) { - this.save({ - 'disconnection_message': message, - 'disconnection_reason': reason, - 'disconnection_actor': actor - }); - this.session.save({ - 'connection_status': converse.ROOMSTATUS.DISCONNECTED - }); - }, + utils_form.safeSave(this, { + 'num_unread': 0, + 'num_unread_general': 0 + }); + } - onNicknameClash(presence) { - if (converse_core_api.settings.get('muc_nickname_from_jid')) { - const nick = presence.getAttribute('from').split('/')[1]; +}; +/* harmony default export */ var muc_muc = (ChatRoomMixin); +// CONCATENATED MODULE: ./src/headless/plugins/muc/occupant.js - if (nick === converse_core_converse.getDefaultMUCNickname()) { - this.join(nick + '-2'); - } else { - const del = nick.lastIndexOf("-"); - const num = nick.substring(del + 1, nick.length); - this.join(nick.substring(0, del + 1) + String(Number(num) + 1)); - } - } else { - this.save({ - 'nickname_validation_message': __("The nickname you chose is reserved or " + "currently in use, please choose a different one.") - }); - this.session.save({ - 'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED - }); - } - }, - /** - * Parses a <presence> stanza with type "error" and sets the proper - * `connection_status` value for this {@link _converse.ChatRoom} as - * well as any additional output that can be shown to the user. - * @private - * @param { XMLElement } stanza - The presence stanza - */ - onErrorPresence(stanza) { - var _sizzle$pop; - - const error = stanza.querySelector('error'); - const error_type = error.getAttribute('type'); - const reason = (_sizzle$pop = converse_muc_sizzle("text[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), error).pop()) === null || _sizzle$pop === void 0 ? void 0 : _sizzle$pop.textContent; - - if (error_type === 'modify') { - this.handleModifyError(stanza); - } else if (error_type === 'auth') { - if (converse_muc_sizzle("not-authorized[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), error).length) { - this.save({ - 'password_validation_message': reason || __("Password incorrect") - }); - this.session.save({ - 'connection_status': converse.ROOMSTATUS.PASSWORD_REQUIRED - }); - } - if (error.querySelector('registration-required')) { - const message = __('You are not on the member list of this groupchat.'); +/** + * Represents a participant in a MUC + * @class + * @namespace _converse.ChatRoomOccupant + * @memberOf _converse + */ - this.setDisconnectionMessage(message, reason); - } else if (error.querySelector('forbidden')) { - const message = __('You have been banned from this groupchat.'); +const ChatRoomOccupant = model_Model.extend({ + defaults: { + 'hats': [], + 'show': 'offline', + 'states': [] + }, - this.setDisconnectionMessage(message, reason); - } - } else if (error_type === 'cancel') { - if (error.querySelector('not-allowed')) { - const message = __('You are not allowed to create new groupchats.'); - - this.setDisconnectionMessage(message, reason); - } else if (error.querySelector('not-acceptable')) { - const message = __("Your nickname doesn't conform to this groupchat's policies."); - - this.setDisconnectionMessage(message, reason); - } else if (converse_muc_sizzle("gone[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), error).length) { - var _sizzle$pop2; - - const moved_jid = (_sizzle$pop2 = converse_muc_sizzle("gone[xmlns=\"".concat(converse_muc_Strophe.NS.STANZAS, "\"]"), error).pop()) === null || _sizzle$pop2 === void 0 ? void 0 : _sizzle$pop2.textContent.replace(/^xmpp:/, '').replace(/\?join$/, ''); - this.save({ - moved_jid, - 'destroyed_reason': reason - }); - this.session.save({ - 'connection_status': converse.ROOMSTATUS.DESTROYED - }); - } else if (error.querySelector('conflict')) { - this.onNicknameClash(stanza); - } else if (error.querySelector('item-not-found')) { - const message = __("This groupchat does not (yet) exist."); + initialize(attributes) { + this.set(Object.assign({ + 'id': utils_form.getUniqueId() + }, attributes)); + this.on('change:image_hash', this.onAvatarChanged, this); + }, - this.setDisconnectionMessage(message, reason); - } else if (error.querySelector('service-unavailable')) { - const message = __("This groupchat has reached its maximum number of participants."); + onAvatarChanged() { + const hash = this.get('image_hash'); + const vcards = []; - this.setDisconnectionMessage(message, reason); - } else if (error.querySelector('remote-server-not-found')) { - const message = __("Remote server not found"); + if (this.get('jid')) { + vcards.push(core_converse.vcards.findWhere({ + 'jid': this.get('jid') + })); + } - const feedback = reason ? __('The explanation given is: "%1$s".', reason) : undefined; - this.setDisconnectionMessage(message, feedback); - } - } - }, + vcards.push(core_converse.vcards.findWhere({ + 'jid': this.get('from') + })); + vcards.filter(v => v).forEach(vcard => { + if (hash && vcard.get('image_hash') !== hash) { + core_api.vcard.update(vcard, true); + } + }); + }, - /** - * Handles all MUC presence stanzas. - * @private - * @method _converse.ChatRoom#onPresence - * @param { XMLElement } stanza - */ - onPresence(stanza) { - if (stanza.getAttribute('type') === 'error') { - return this.onErrorPresence(stanza); - } + getDisplayName() { + return this.get('nick') || this.get('jid'); + }, - this.createInfoMessages(stanza); + isMember() { + return ['admin', 'owner', 'member'].includes(this.get('affiliation')); + }, - if (stanza.querySelector("status[code='110']")) { - this.onOwnPresence(stanza); + isModerator() { + return ['admin', 'owner'].includes(this.get('affiliation')) || this.get('role') === 'moderator'; + }, - if (this.getOwnRole() !== 'none' && this.session.get('connection_status') === converse.ROOMSTATUS.CONNECTING) { - this.session.save('connection_status', converse.ROOMSTATUS.CONNECTED); - } - } else { - this.updateOccupantsOnPresence(stanza); - } - }, + isSelf() { + return this.get('states').includes('110'); + } - /** - * Handles a received presence relating to the current user. - * - * For locked groupchats (which are by definition "new"), the - * groupchat will either be auto-configured or created instantly - * (with default config) or a configuration groupchat will be - * rendered. - * - * If the groupchat is not locked, then the groupchat will be - * auto-configured only if applicable and if the current - * user is the groupchat's owner. - * @private - * @method _converse.ChatRoom#onOwnPresence - * @param { XMLElement } pres - The stanza - */ - onOwnPresence(stanza) { - if (stanza.getAttribute('type') !== 'unavailable') { - const old_status = this.session.get('connection_status'); - - if (old_status !== converse.ROOMSTATUS.ENTERED) { - // Set connection_status before creating the occupant, but - // only trigger afterwards, so that plugins can access the - // occupant in their event handlers. - this.session.save('connection_status', converse.ROOMSTATUS.ENTERED, { - 'silent': true - }); - this.updateOccupantsOnPresence(stanza); - this.session.trigger('change:connection_status', this.session, old_status); - } else { - this.updateOccupantsOnPresence(stanza); - } - } else { - this.updateOccupantsOnPresence(stanza); - } +}); +/* harmony default export */ var muc_occupant = (ChatRoomOccupant); +// CONCATENATED MODULE: ./src/headless/plugins/muc/occupants.js - if (stanza.getAttribute('type') === 'unavailable') { - this.handleDisconnection(stanza); - } else { - const locked_room = stanza.querySelector("status[code='201']"); - - if (locked_room) { - if (this.get('auto_configure')) { - this.autoConfigureChatRoom().then(() => this.refreshDiscoInfo()); - } else if (converse_core_api.settings.get('muc_instant_rooms')) { - // Accept default configuration - this.sendConfiguration().then(() => this.refreshDiscoInfo()); - } else { - /** - * Triggered when a new room has been created which first needs to be configured - * and when `auto_configure` is set to `false`. - * Used by `_converse.ChatRoomView` in order to know when to render the - * configuration form for a new room. - * @event _converse.ChatRoom#configurationNeeded - * @example _converse.api.listen.on('configurationNeeded', () => { ... }); - */ - this.trigger('configurationNeeded'); - return; // We haven't yet entered the groupchat, so bail here. - } - } else if (!this.features.get('fetched')) { - // The features for this groupchat weren't fetched. - // That must mean it's a new groupchat without locking - // (in which case Prosody doesn't send a 201 status), - // otherwise the features would have been fetched in - // the "initialize" method already. - if (this.getOwnAffiliation() === 'owner' && this.get('auto_configure')) { - this.autoConfigureChatRoom().then(() => this.refreshDiscoInfo()); - } else { - this.getDiscoInfo(); - } - } - } - this.session.save({ - 'connection_status': converse.ROOMSTATUS.ENTERED - }); - }, - /** - * Returns a boolean to indicate whether the current user - * was mentioned in a message. - * @private - * @method _converse.ChatRoom#isUserMentioned - * @param { String } - The text message - */ - isUserMentioned(message) { - const nick = this.get('nick'); - if (message.get('references').length) { - const mentions = message.get('references').filter(ref => ref.type === 'mention').map(ref => ref.value); - return mentions.includes(nick); - } else { - return new RegExp("\\b".concat(nick, "\\b")).test(message.get('message')); - } - }, - /* Given a newly received message, update the unread counter if necessary. - * @private - * @method _converse.ChatRoom#handleUnreadMessage - * @param { XMLElement } - The <messsage> stanza - */ - handleUnreadMessage(message) { - if (!(message === null || message === void 0 ? void 0 : message.get('body'))) { - return; - } +const MUC_ROLE_WEIGHTS = { + 'moderator': 1, + 'participant': 2, + 'visitor': 3, + 'none': 2 +}; +/** + * A list of {@link _converse.ChatRoomOccupant} instances, representing participants in a MUC. + * @class + * @namespace _converse.ChatRoomOccupants + * @memberOf _converse + */ - if (utils_form.isNewMessage(message)) { - if (this.isHidden()) { - const settings = { - 'num_unread_general': this.get('num_unread_general') + 1 - }; +const ChatRoomOccupants = Collection.extend({ + model: muc_occupant, - if (this.get('num_unread_general') === 0) { - settings['first_unread_id'] = message.get('id'); - } + comparator(occupant1, occupant2) { + const role1 = occupant1.get('role') || 'none'; + const role2 = occupant2.get('role') || 'none'; - if (this.isUserMentioned(message)) { - settings.num_unread = this.get('num_unread') + 1; + if (MUC_ROLE_WEIGHTS[role1] === MUC_ROLE_WEIGHTS[role2]) { + const nick1 = occupant1.getDisplayName().toLowerCase(); + const nick2 = occupant2.getDisplayName().toLowerCase(); + return nick1 < nick2 ? -1 : nick1 > nick2 ? 1 : 0; + } else { + return MUC_ROLE_WEIGHTS[role1] < MUC_ROLE_WEIGHTS[role2] ? -1 : 1; + } + }, - converse_core_converse.incrementMsgCounter(); - } + getAutoFetchedAffiliationLists() { + const affs = core_api.settings.get('muc_fetch_members'); + return Array.isArray(affs) ? affs : affs ? ['member', 'admin', 'owner'] : []; + }, - this.save(settings); - } else { - this.sendMarkerForMessage(message); - } - } - }, + async fetchMembers() { + const affiliations = this.getAutoFetchedAffiliationLists(); - clearUnreadMsgCounter() { - if (this.get('num_unread_general') > 0 || this.get('num_unread') > 0) { - this.sendMarkerForMessage(this.messages.last()); - } + if (affiliations.length === 0) { + return; + } - utils_form.safeSave(this, { - 'num_unread': 0, - 'num_unread_general': 0 - }); + const aff_lists = await Promise.all(affiliations.map(a => this.chatroom.getAffiliationList(a))); + const new_members = aff_lists.reduce((acc, val) => utils_form.isErrorObject(val) ? acc : [...val, ...acc], []); + const known_affiliations = affiliations.filter(a => !utils_form.isErrorObject(aff_lists[affiliations.indexOf(a)])); + const new_jids = new_members.map(m => m.jid).filter(m => m !== undefined); + const new_nicks = new_members.map(m => !m.jid && m.nick || undefined).filter(m => m !== undefined); + const removed_members = this.filter(m => { + return known_affiliations.includes(m.get('affiliation')) && !new_nicks.includes(m.get('nick')) && !new_jids.includes(m.get('jid')); + }); + removed_members.forEach(occupant => { + if (occupant.get('jid') === core_converse.bare_jid) { + return; } + if (occupant.get('show') === 'offline') { + occupant.destroy(); + } else { + occupant.save('affiliation', null); + } }); - /** - * Represents a participant in a MUC - * @class - * @namespace _converse.ChatRoomOccupant - * @memberOf _converse - */ - - converse_core_converse.ChatRoomOccupant = model_Model.extend({ - defaults: { - 'hats': [], - 'show': 'offline', - 'states': [] - }, - - initialize(attributes) { - this.set(Object.assign({ - 'id': utils_form.getUniqueId() - }, attributes)); - this.on('change:image_hash', this.onAvatarChanged, this); - }, - - onAvatarChanged() { - const hash = this.get('image_hash'); - const vcards = []; - - if (this.get('jid')) { - vcards.push(converse_core_converse.vcards.findWhere({ - 'jid': this.get('jid') - })); - } - - vcards.push(converse_core_converse.vcards.findWhere({ - 'jid': this.get('from') - })); - vcards.filter(v => v).forEach(vcard => { - if (hash && vcard.get('image_hash') !== hash) { - converse_core_api.vcard.update(vcard, true); - } - }); - }, - - getDisplayName() { - return this.get('nick') || this.get('jid'); - }, - - isMember() { - return ['admin', 'owner', 'member'].includes(this.get('affiliation')); - }, - - isModerator() { - return ['admin', 'owner'].includes(this.get('affiliation')) || this.get('role') === 'moderator'; - }, + new_members.forEach(attrs => { + const occupant = attrs.jid ? this.findOccupant({ + 'jid': attrs.jid + }) : this.findOccupant({ + 'nick': attrs.nick + }); - isSelf() { - return this.get('states').includes('110'); + if (occupant) { + occupant.save(attrs); + } else { + this.create(attrs); } - }); /** - * A list of {@link _converse.ChatRoomOccupant} instances, representing participants in a MUC. - * @class - * @namespace _converse.ChatRoomOccupants - * @memberOf _converse + * Triggered once the member lists for this MUC have been fetched and processed. + * @event _converse#membersFetched + * @example _converse.api.listen.on('membersFetched', () => { ... }); */ - converse_core_converse.ChatRoomOccupants = collection_Collection.extend({ - model: converse_core_converse.ChatRoomOccupant, - - comparator(occupant1, occupant2) { - const role1 = occupant1.get('role') || 'none'; - const role2 = occupant2.get('role') || 'none'; - - if (MUC_ROLE_WEIGHTS[role1] === MUC_ROLE_WEIGHTS[role2]) { - const nick1 = occupant1.getDisplayName().toLowerCase(); - const nick2 = occupant2.getDisplayName().toLowerCase(); - return nick1 < nick2 ? -1 : nick1 > nick2 ? 1 : 0; - } else { - return MUC_ROLE_WEIGHTS[role1] < MUC_ROLE_WEIGHTS[role2] ? -1 : 1; - } - }, - - getAutoFetchedAffiliationLists() { - const affs = converse_core_api.settings.get('muc_fetch_members'); - return Array.isArray(affs) ? affs : affs ? ['member', 'admin', 'owner'] : []; - }, + core_api.trigger('membersFetched'); + }, - async fetchMembers() { - const affiliations = this.getAutoFetchedAffiliationLists(); + /** + * @typedef { Object} OccupantData + * @property { String } [jid] + * @property { String } [nick] + */ - if (affiliations.length === 0) { - return; - } + /** + * Try to find an existing occupant based on the passed in + * data object. + * + * If we have a JID, we use that as lookup variable, + * otherwise we use the nick. We don't always have both, + * but should have at least one or the other. + * @private + * @method _converse.ChatRoomOccupants#findOccupant + * @param { OccupantData } data + */ + findOccupant(data) { + const jid = strophe["e" /* Strophe */].getBareJidFromJid(data.jid); + return jid && this.findWhere({ + jid + }) || this.findWhere({ + 'nick': data.nick + }); + } - const aff_lists = await Promise.all(affiliations.map(a => this.chatroom.getAffiliationList(a))); - const new_members = aff_lists.reduce((acc, val) => utils_form.isErrorObject(val) ? acc : [...val, ...acc], []); - const known_affiliations = affiliations.filter(a => !utils_form.isErrorObject(aff_lists[affiliations.indexOf(a)])); - const new_jids = new_members.map(m => m.jid).filter(m => m !== undefined); - const new_nicks = new_members.map(m => !m.jid && m.nick || undefined).filter(m => m !== undefined); - const removed_members = this.filter(m => { - return known_affiliations.includes(m.get('affiliation')) && !new_nicks.includes(m.get('nick')) && !new_jids.includes(m.get('jid')); - }); - removed_members.forEach(occupant => { - if (occupant.get('jid') === converse_core_converse.bare_jid) { - return; - } +}); +/* harmony default export */ var occupants = (ChatRoomOccupants); +// CONCATENATED MODULE: ./src/headless/plugins/muc/api.js - if (occupant.get('show') === 'offline') { - occupant.destroy(); - } else { - occupant.save('affiliation', null); - } - }); - new_members.forEach(attrs => { - const occupant = attrs.jid ? this.findOccupant({ - 'jid': attrs.jid - }) : this.findOccupant({ - 'nick': attrs.nick - }); - if (occupant) { - occupant.save(attrs); - } else { - this.create(attrs); - } - }); - /** - * Triggered once the member lists for this MUC have been fetched and processed. - * @event _converse#membersFetched - * @example _converse.api.listen.on('membersFetched', () => { ... }); - */ - converse_core_api.trigger('membersFetched'); - }, - /** - * @typedef { Object} OccupantData - * @property { String } [jid] - * @property { String } [nick] - */ +/* harmony default export */ var muc_api = ({ + /** + * The "rooms" namespace groups methods relevant to chatrooms + * (aka groupchats). + * + * @namespace api.rooms + * @memberOf api + */ + rooms: { + /** + * Creates a new MUC chatroom (aka groupchat) + * + * Similar to {@link api.rooms.open}, but creates + * the chatroom in the background (i.e. doesn't cause a view to open). + * + * @method api.rooms.create + * @param {(string[]|string)} jid|jids The JID or array of + * JIDs of the chatroom(s) to create + * @param {object} [attrs] attrs The room attributes + * @returns {Promise} Promise which resolves with the Model representing the chat. + */ + create(jids, attrs = {}) { + attrs = typeof attrs === 'string' ? { + 'nick': attrs + } : attrs || {}; - /** - * Try to find an existing occupant based on the passed in - * data object. - * - * If we have a JID, we use that as lookup variable, - * otherwise we use the nick. We don't always have both, - * but should have at least one or the other. - * @private - * @method _converse.ChatRoomOccupants#findOccupant - * @param { OccupantData } data - */ - findOccupant(data) { - const jid = converse_muc_Strophe.getBareJidFromJid(data.jid); - return jid && this.findWhere({ - jid - }) || this.findWhere({ - 'nick': data.nick - }); + if (!attrs.nick && core_api.settings.get('muc_nickname_from_jid')) { + attrs.nick = strophe["e" /* Strophe */].getNodeFromJid(core_converse.bare_jid); } - }); - converse_core_converse.RoomsPanelModel = model_Model.extend({ - defaults: function defaults() { - return { - 'muc_domain': converse_core_api.settings.get('muc_domain'), - 'nick': converse_core_converse.getDefaultMUCNickname() - }; - }, - - setDomain(jid) { - if (!converse_core_api.settings.get('locked_muc_domain')) { - this.save('muc_domain', converse_muc_Strophe.getDomainFromJid(jid)); - } + if (jids === undefined) { + throw new TypeError('rooms.create: You need to provide at least one JID'); + } else if (typeof jids === 'string') { + return core_api.rooms.get(utils_form.getJIDFromURI(jids), attrs, true); } - }); + return jids.map(jid => core_api.rooms.get(utils_form.getJIDFromURI(jid), attrs, true)); + }, + /** - * A direct MUC invitation to join a groupchat has been received - * See XEP-0249: Direct MUC invitations. - * @private - * @method _converse.ChatRoom#onDirectMUCInvitation - * @param { XMLElement } message - The message stanza containing the invitation. + * Opens a MUC chatroom (aka groupchat) + * + * Similar to {@link api.chats.open}, but for groupchats. + * + * @method api.rooms.open + * @param {string} jid The room JID or JIDs (if not specified, all + * currently open rooms will be returned). + * @param {string} attrs A map containing any extra room attributes. + * @param {string} [attrs.nick] The current user's nickname for the MUC + * @param {boolean} [attrs.auto_configure] A boolean, indicating + * whether the room should be configured automatically or not. + * If set to `true`, then it makes sense to pass in configuration settings. + * @param {object} [attrs.roomconfig] A map of configuration settings to be used when the room gets + * configured automatically. Currently it doesn't make sense to specify + * `roomconfig` values if `auto_configure` is set to `false`. + * For a list of configuration values that can be passed in, refer to these values + * in the [XEP-0045 MUC specification](https://xmpp.org/extensions/xep-0045.html#registrar-formtype-owner). + * The values should be named without the `muc#roomconfig_` prefix. + * @param {boolean} [attrs.minimized] A boolean, indicating whether the room should be opened minimized or not. + * @param {boolean} [attrs.bring_to_foreground] A boolean indicating whether the room should be + * brought to the foreground and therefore replace the currently shown chat. + * If there is no chat currently open, then this option is ineffective. + * @param {Boolean} [force=false] - By default, a minimized + * room won't be maximized (in `overlayed` view mode) and in + * `fullscreen` view mode a newly opened room won't replace + * another chat already in the foreground. + * Set `force` to `true` if you want to force the room to be + * maximized or shown. + * @returns {Promise} Promise which resolves with the Model representing the chat. + * + * @example + * this.api.rooms.open('group@muc.example.com') + * + * @example + * // To return an array of rooms, provide an array of room JIDs: + * api.rooms.open(['group1@muc.example.com', 'group2@muc.example.com']) + * + * @example + * // To setup a custom nickname when joining the room, provide the optional nick argument: + * api.rooms.open('group@muc.example.com', {'nick': 'mycustomnick'}) + * + * @example + * // For example, opening a room with a specific default configuration: + * api.rooms.open( + * 'myroom@conference.example.org', + * { 'nick': 'coolguy69', + * 'auto_configure': true, + * 'roomconfig': { + * 'changesubject': false, + * 'membersonly': true, + * 'persistentroom': true, + * 'publicroom': true, + * 'roomdesc': 'Comfy room for hanging out', + * 'whois': 'anyone' + * } + * } + * ); */ + async open(jids, attrs = {}, force = false) { + await core_api.waitUntil('chatBoxesFetched'); - converse_core_converse.onDirectMUCInvitation = async function (message) { - const x_el = converse_muc_sizzle('x[xmlns="jabber:x:conference"]', message).pop(), - from = converse_muc_Strophe.getBareJidFromJid(message.getAttribute('from')), - room_jid = x_el.getAttribute('jid'), - reason = x_el.getAttribute('reason'); - let result; - - if (converse_core_api.settings.get('auto_join_on_invite')) { - result = true; + if (jids === undefined) { + const err_msg = 'rooms.open: You need to provide at least one JID'; + headless_log.error(err_msg); + throw new TypeError(err_msg); + } else if (typeof jids === 'string') { + const room = await core_api.rooms.get(jids, attrs, true); + room && room.maybeShow(force); + return room; } else { - // Invite request might come from someone not your roster list - let contact = converse_core_converse.roster.get(from); - - contact = contact ? contact.getDisplayName() : from; - - if (!reason) { - result = confirm(__("%1$s has invited you to join a groupchat: %2$s", contact, room_jid)); - } else { - result = confirm(__('%1$s has invited you to join a groupchat: %2$s, and left the following reason: "%3$s"', contact, room_jid, reason)); - } - } - - if (result === true) { - const chatroom = await openChatRoom(room_jid, { - 'password': x_el.getAttribute('password') - }); - - if (chatroom.session.get('connection_status') === converse.ROOMSTATUS.DISCONNECTED) { - converse_core_converse.chatboxes.get(room_jid).rejoin(); - } + const rooms = await Promise.all(jids.map(jid => core_api.rooms.get(jid, attrs, true))); + rooms.forEach(r => r.maybeShow(force)); + return rooms; } - }; - - if (converse_core_api.settings.get('allow_muc_invitations')) { - const registerDirectInvitationHandler = function registerDirectInvitationHandler() { - converse_core_converse.connection.addHandler(message => { - converse_core_converse.onDirectMUCInvitation(message); - - return true; - }, 'jabber:x:conference', 'message'); - }; + }, - converse_core_api.listen.on('connected', registerDirectInvitationHandler); - converse_core_api.listen.on('reconnected', registerDirectInvitationHandler); - } - /* Automatically join groupchats, based on the - * "auto_join_rooms" configuration setting, which is an array - * of strings (groupchat JIDs) or objects (with groupchat JID and other settings). + /** + * Fetches the object representing a MUC chatroom (aka groupchat) + * + * @method api.rooms.get + * @param {string} [jid] The room JID (if not specified, all rooms will be returned). + * @param {object} [attrs] A map containing any extra room attributes For example, if you want + * to specify a nickname and password, use `{'nick': 'bloodninja', 'password': 'secret'}`. + * @param {boolean} create A boolean indicating whether the room should be created + * if not found (default: `false`) + * @returns { Promise<_converse.ChatRoom> } + * @example + * api.waitUntil('roomsAutoJoined').then(() => { + * const create_if_not_found = true; + * api.rooms.get( + * 'group@muc.example.com', + * {'nick': 'dread-pirate-roberts'}, + * create_if_not_found + * ) + * }); */ + async get(jids, attrs = {}, create = false) { + async function _get(jid) { + jid = utils_form.getJIDFromURI(jid); + let model = await core_api.chatboxes.get(jid); + if (!model && create) { + model = await core_api.chatboxes.create(jid, attrs, core_converse.ChatRoom); + } else { + model = model && model.get('type') === core_converse.CHATROOMS_TYPE ? model : null; - async function autoJoinRooms() { - await Promise.all(converse_core_api.settings.get('auto_join_rooms').map(muc => { - if (typeof muc === 'string') { - if (converse_core_converse.chatboxes.where({ - 'jid': muc - }).length) { - return Promise.resolve(); + if (model && Object.keys(attrs).length) { + model.save(attrs); } - - return converse_core_api.rooms.open(muc); - } else if (lodash_es_isObject(muc)) { - return converse_core_api.rooms.open(muc.jid, converse_muc_objectSpread({}, muc)); - } else { - headless_log.error('Invalid muc criteria specified for "auto_join_rooms"'); - return Promise.resolve(); } - })); - /** - * Triggered once any rooms that have been configured to be automatically joined, - * specified via the _`auto_join_rooms` setting, have been entered. - * @event _converse#roomsAutoJoined - * @example _converse.api.listen.on('roomsAutoJoined', () => { ... }); - * @example _converse.api.waitUntil('roomsAutoJoined').then(() => { ... }); - */ - converse_core_api.trigger('roomsAutoJoined'); - } + return model; + } - async function onWindowStateChanged(data) { - if (data.state === 'visible' && converse_core_api.connection.connected()) { - const rooms = await converse_core_api.rooms.get(); - rooms.forEach(room => room.rejoinIfNecessary()); + if (jids === undefined) { + const chats = await core_api.chatboxes.get(); + return chats.filter(c => c.get('type') === core_converse.CHATROOMS_TYPE); + } else if (typeof jids === 'string') { + return _get(jids); } - } - /************************ BEGIN Event Handlers ************************/ + return Promise.all(jids.map(jid => _get(jid))); + } - converse_core_api.listen.on('beforeTearDown', () => { - const groupchats = converse_core_converse.chatboxes.where({ - 'type': converse_core_converse.CHATROOMS_TYPE - }); + } +}); +// CONCATENATED MODULE: ./src/headless/plugins/muc/index.js +/** + * @module converse-muc + * @copyright The Converse.js contributors + * @license Mozilla Public License (MPLv2) + * @description Implements the non-view logic for XEP-0045 Multi-User Chat + */ - groupchats.forEach(muc => utils_form.safeSave(muc.session, { - 'connection_status': converse.ROOMSTATUS.DISCONNECTED - })); - }); - converse_core_api.listen.on('windowStateChanged', onWindowStateChanged); - converse_core_api.listen.on('addClientFeatures', () => { - if (converse_core_api.settings.get('allow_muc')) { - converse_core_api.disco.own.features.add(converse_muc_Strophe.NS.MUC); - } - if (converse_core_api.settings.get('allow_muc_invitations')) { - converse_core_api.disco.own.features.add('jabber:x:conference'); // Invites - } - }); - converse_core_api.listen.on('chatBoxesFetched', autoJoinRooms); - converse_core_api.listen.on('beforeResourceBinding', () => { - converse_core_converse.connection.addHandler(stanza => { - const muc_jid = converse_muc_Strophe.getBareJidFromJid(stanza.getAttribute('from')); - if (!converse_core_converse.chatboxes.get(muc_jid)) { - converse_core_api.waitUntil('chatBoxesFetched').then(async () => { - const muc = converse_core_converse.chatboxes.get(muc_jid); - if (muc) { - await muc.initialized; - await muc.messages.fetched; - muc.message_handler.run(stanza); - } - }); - } - return true; - }, null, 'message', 'groupchat'); - }); - function disconnectChatRooms() { - /* When disconnecting, mark all groupchats as - * disconnected, so that they will be properly entered again - * when fetched from session storage. - */ - return converse_core_converse.chatboxes.filter(m => m.get('type') === converse_core_converse.CHATROOMS_TYPE).forEach(m => m.session.save({ - 'connection_status': converse.ROOMSTATUS.DISCONNECTED - })); - } - converse_core_api.listen.on('disconnected', disconnectChatRooms); - converse_core_api.listen.on('statusInitialized', () => { - window.addEventListener(converse_core_converse.unloadevent, () => { - const using_websocket = converse_core_api.connection.isType('websocket'); - if (using_websocket && (!converse_core_api.settings.get('enable_smacks') || !converse_core_converse.session.get('smacks_stream_id'))) { - // For non-SMACKS websocket connections, or non-resumeable - // connections, we disconnect all chatrooms when the page unloads. - // See issue #1111 - disconnectChatRooms(); - } - }); - }); - /************************ END Event Handlers ************************/ - /************************ BEGIN API ************************/ - converse.env.muc_utils = utils_muc; // We extend the default converse.js API to add methods specific to MUC groupchats. - Object.assign(converse_core_api, { - /** - * The "rooms" namespace groups methods relevant to chatrooms - * (aka groupchats). - * - * @namespace api.rooms - * @memberOf api - */ - rooms: { - /** - * Creates a new MUC chatroom (aka groupchat) - * - * Similar to {@link api.rooms.open}, but creates - * the chatroom in the background (i.e. doesn't cause a view to open). - * - * @method api.rooms.create - * @param {(string[]|string)} jid|jids The JID or array of - * JIDs of the chatroom(s) to create - * @param {object} [attrs] attrs The room attributes - * @returns {Promise} Promise which resolves with the Model representing the chat. - */ - create(jids, attrs = {}) { - attrs = typeof attrs === 'string' ? { - 'nick': attrs - } : attrs || {}; - if (!attrs.nick && converse_core_api.settings.get('muc_nickname_from_jid')) { - attrs.nick = converse_muc_Strophe.getNodeFromJid(converse_core_converse.bare_jid); - } - if (jids === undefined) { - throw new TypeError('rooms.create: You need to provide at least one JID'); - } else if (typeof jids === 'string') { - return converse_core_api.rooms.get(utils_form.getJIDFromURI(jids), attrs, true); - } - return jids.map(jid => converse_core_api.rooms.get(utils_form.getJIDFromURI(jid), attrs, true)); - }, - /** - * Opens a MUC chatroom (aka groupchat) - * - * Similar to {@link api.chats.open}, but for groupchats. - * - * @method api.rooms.open - * @param {string} jid The room JID or JIDs (if not specified, all - * currently open rooms will be returned). - * @param {string} attrs A map containing any extra room attributes. - * @param {string} [attrs.nick] The current user's nickname for the MUC - * @param {boolean} [attrs.auto_configure] A boolean, indicating - * whether the room should be configured automatically or not. - * If set to `true`, then it makes sense to pass in configuration settings. - * @param {object} [attrs.roomconfig] A map of configuration settings to be used when the room gets - * configured automatically. Currently it doesn't make sense to specify - * `roomconfig` values if `auto_configure` is set to `false`. - * For a list of configuration values that can be passed in, refer to these values - * in the [XEP-0045 MUC specification](https://xmpp.org/extensions/xep-0045.html#registrar-formtype-owner). - * The values should be named without the `muc#roomconfig_` prefix. - * @param {boolean} [attrs.minimized] A boolean, indicating whether the room should be opened minimized or not. - * @param {boolean} [attrs.bring_to_foreground] A boolean indicating whether the room should be - * brought to the foreground and therefore replace the currently shown chat. - * If there is no chat currently open, then this option is ineffective. - * @param {Boolean} [force=false] - By default, a minimized - * room won't be maximized (in `overlayed` view mode) and in - * `fullscreen` view mode a newly opened room won't replace - * another chat already in the foreground. - * Set `force` to `true` if you want to force the room to be - * maximized or shown. - * @returns {Promise} Promise which resolves with the Model representing the chat. - * - * @example - * this.api.rooms.open('group@muc.example.com') - * - * @example - * // To return an array of rooms, provide an array of room JIDs: - * api.rooms.open(['group1@muc.example.com', 'group2@muc.example.com']) - * - * @example - * // To setup a custom nickname when joining the room, provide the optional nick argument: - * api.rooms.open('group@muc.example.com', {'nick': 'mycustomnick'}) - * - * @example - * // For example, opening a room with a specific default configuration: - * api.rooms.open( - * 'myroom@conference.example.org', - * { 'nick': 'coolguy69', - * 'auto_configure': true, - * 'roomconfig': { - * 'changesubject': false, - * 'membersonly': true, - * 'persistentroom': true, - * 'publicroom': true, - * 'roomdesc': 'Comfy room for hanging out', - * 'whois': 'anyone' - * } - * } - * ); - */ - async open(jids, attrs, force = false) { - await converse_core_api.waitUntil('chatBoxesFetched'); +const ROLES = ['moderator', 'participant', 'visitor']; +const AFFILIATIONS = ['owner', 'admin', 'member', 'outcast', 'none']; +converse.AFFILIATION_CHANGES = { + OWNER: 'owner', + ADMIN: 'admin', + MEMBER: 'member', + EXADMIN: 'exadmin', + EXOWNER: 'exowner', + EXOUTCAST: 'exoutcast', + EXMEMBER: 'exmember' +}; +converse.AFFILIATION_CHANGES_LIST = Object.values(converse.AFFILIATION_CHANGES); +converse.MUC_TRAFFIC_STATES = { + ENTERED: 'entered', + EXITED: 'exited' +}; +converse.MUC_TRAFFIC_STATES_LIST = Object.values(converse.MUC_TRAFFIC_STATES); +converse.MUC_ROLE_CHANGES = { + OP: 'op', + DEOP: 'deop', + VOICE: 'voice', + MUTE: 'mute' +}; +converse.MUC_ROLE_CHANGES_LIST = Object.values(converse.MUC_ROLE_CHANGES); +converse.MUC_INFO_CODES = { + 'visibility_changes': ['100', '102', '103', '172', '173', '174'], + 'self': ['110'], + 'non_privacy_changes': ['104', '201'], + 'muc_logging_changes': ['170', '171'], + 'nickname_changes': ['210', '303'], + 'disconnect_messages': ['301', '307', '321', '322', '332', '333'], + 'affiliation_changes': [...converse.AFFILIATION_CHANGES_LIST], + 'join_leave_events': [...converse.MUC_TRAFFIC_STATES_LIST], + 'role_changes': [...converse.MUC_ROLE_CHANGES_LIST] +}; +const { + Strophe: plugins_muc_Strophe, + sizzle: plugins_muc_sizzle +} = converse.env; // Add Strophe Namespaces - if (jids === undefined) { - const err_msg = 'rooms.open: You need to provide at least one JID'; - headless_log.error(err_msg); - throw new TypeError(err_msg); - } else if (typeof jids === 'string') { - const room = await converse_core_api.rooms.get(jids, attrs, true); - room && room.maybeShow(force); - return room; - } else { - const rooms = await Promise.all(jids.map(jid => converse_core_api.rooms.get(jid, attrs, true))); - rooms.forEach(r => r.maybeShow(force)); - return rooms; - } - }, +plugins_muc_Strophe.addNamespace('MUC_ADMIN', plugins_muc_Strophe.NS.MUC + '#admin'); +plugins_muc_Strophe.addNamespace('MUC_OWNER', plugins_muc_Strophe.NS.MUC + '#owner'); +plugins_muc_Strophe.addNamespace('MUC_REGISTER', 'jabber:iq:register'); +plugins_muc_Strophe.addNamespace('MUC_ROOMCONF', plugins_muc_Strophe.NS.MUC + '#roomconfig'); +plugins_muc_Strophe.addNamespace('MUC_USER', plugins_muc_Strophe.NS.MUC + '#user'); +plugins_muc_Strophe.addNamespace('MUC_HATS', 'xmpp:prosody.im/protocol/hats:1'); +converse.MUC_NICK_CHANGED_CODE = '303'; +converse.ROOM_FEATURES = ['passwordprotected', 'unsecured', 'hidden', 'publicroom', 'membersonly', 'open', 'persistent', 'temporary', 'nonanonymous', 'semianonymous', 'moderated', 'unmoderated', 'mam_enabled']; // No longer used in code, but useful as reference. +// +// const ROOM_FEATURES_MAP = { +// 'passwordprotected': 'unsecured', +// 'unsecured': 'passwordprotected', +// 'hidden': 'publicroom', +// 'publicroom': 'hidden', +// 'membersonly': 'open', +// 'open': 'membersonly', +// 'persistent': 'temporary', +// 'temporary': 'persistent', +// 'nonanonymous': 'semianonymous', +// 'semianonymous': 'nonanonymous', +// 'moderated': 'unmoderated', +// 'unmoderated': 'moderated' +// }; - /** - * Fetches the object representing a MUC chatroom (aka groupchat) - * - * @method api.rooms.get - * @param {string} [jid] The room JID (if not specified, all rooms will be returned). - * @param {object} [attrs] A map containing any extra room attributes For example, if you want - * to specify a nickname and password, use `{'nick': 'bloodninja', 'password': 'secret'}`. - * @param {boolean} create A boolean indicating whether the room should be created - * if not found (default: `false`) - * @returns { Promise<_converse.ChatRoom> } - * @example - * api.waitUntil('roomsAutoJoined').then(() => { - * const create_if_not_found = true; - * api.rooms.get( - * 'group@muc.example.com', - * {'nick': 'dread-pirate-roberts'}, - * create_if_not_found - * ) - * }); - */ - async get(jids, attrs = {}, create = false) { - async function _get(jid) { - jid = utils_form.getJIDFromURI(jid); - let model = await converse_core_api.chatboxes.get(jid); +converse.ROOMSTATUS = { + CONNECTED: 0, + CONNECTING: 1, + NICKNAME_REQUIRED: 2, + PASSWORD_REQUIRED: 3, + DISCONNECTED: 4, + ENTERED: 5, + DESTROYED: 6 +}; - if (!model && create) { - model = await converse_core_api.chatboxes.create(jid, attrs, converse_core_converse.ChatRoom); - } else { - model = model && model.get('type') === converse_core_converse.CHATROOMS_TYPE ? model : null; +function disconnectChatRooms() { + /* When disconnecting, mark all groupchats as + * disconnected, so that they will be properly entered again + * when fetched from session storage. + */ + return core_converse.chatboxes.filter(m => m.get('type') === core_converse.CHATROOMS_TYPE).forEach(m => m.session.save({ + 'connection_status': converse.ROOMSTATUS.DISCONNECTED + })); +} - if (model && Object.keys(attrs).length) { - model.save(attrs); - } - } +async function muc_onWindowStateChanged(data) { + if (data.state === 'visible' && core_api.connection.connected()) { + const rooms = await core_api.rooms.get(); + rooms.forEach(room => room.rejoinIfNecessary()); + } +} - return model; - } +async function routeToRoom(jid) { + if (!utils_form.isValidMUCJID(jid)) { + return headless_log.warn("invalid jid \"".concat(jid, "\" provided in url fragment")); + } - if (jids === undefined) { - const chats = await converse_core_api.chatboxes.get(); - return chats.filter(c => c.get('type') === converse_core_converse.CHATROOMS_TYPE); - } else if (typeof jids === 'string') { - return _get(jids); - } + await core_api.waitUntil('roomsAutoJoined'); - return Promise.all(jids.map(jid => _get(jid))); + if (core_api.settings.get('allow_bookmarks')) { + await core_api.waitUntil('bookmarksInitialized'); + } + + core_api.rooms.open(jid); +} +/* Opens a groupchat, making sure that certain attributes + * are correct, for example that the "type" is set to + * "chatroom". + */ + + +async function openChatRoom(jid, settings) { + settings.type = core_converse.CHATROOMS_TYPE; + settings.id = jid; + const chatbox = await core_api.rooms.get(jid, settings, true); + chatbox.maybeShow(true); + return chatbox; +} +/* Automatically join groupchats, based on the + * "auto_join_rooms" configuration setting, which is an array + * of strings (groupchat JIDs) or objects (with groupchat JID and other settings). + */ + + +async function autoJoinRooms() { + await Promise.all(core_api.settings.get('auto_join_rooms').map(muc => { + if (typeof muc === 'string') { + if (core_converse.chatboxes.where({ + 'jid': muc + }).length) { + return Promise.resolve(); + } + + return core_api.rooms.open(muc); + } else if (lodash_es_isObject(muc)) { + return core_api.rooms.open(muc.jid, { ...muc + }); + } else { + headless_log.error('Invalid muc criteria specified for "auto_join_rooms"'); + return Promise.resolve(); + } + })); + /** + * Triggered once any rooms that have been configured to be automatically joined, + * specified via the _`auto_join_rooms` setting, have been entered. + * @event _converse#roomsAutoJoined + * @example _converse.api.listen.on('roomsAutoJoined', () => { ... }); + * @example _converse.api.waitUntil('roomsAutoJoined').then(() => { ... }); + */ + + core_api.trigger('roomsAutoJoined'); +} + +converse.plugins.add('converse-muc', { + /* Optional dependencies are other plugins which might be + * overridden or relied upon, and therefore need to be loaded before + * this plugin. They are called "optional" because they might not be + * available, in which case any overrides applicable to them will be + * ignored. + * + * It's possible however to make optional dependencies non-optional. + * If the setting "strict_plugin_dependencies" is set to true, + * an error will be raised if the plugin is not found. + * + * NB: These plugins need to have already been loaded via require.js. + */ + dependencies: ['converse-chatboxes', 'converse-chat', 'converse-disco', 'converse-controlbox'], + overrides: { + ChatBoxes: { + model(attrs, options) { + const { + _converse + } = this.__super__; + + if (attrs && attrs.type == _converse.CHATROOMS_TYPE) { + return new _converse.ChatRoom(attrs, options); + } else { + return this.__super__.model.apply(this, arguments); } + } + } + }, + + initialize() { + /* The initialize function gets called as soon as the plugin is + * loaded by converse.js's plugin machinery. + */ + const { + __, + ___ + } = core_converse; // Configuration values for this plugin + // ==================================== + // Refer to docs/source/configuration.rst for explanations of these + // configuration settings. + + core_api.settings.extend({ + 'allow_muc': true, + 'allow_muc_invitations': true, + 'auto_join_on_invite': false, + 'auto_join_rooms': [], + 'auto_register_muc_nickname': false, + 'hide_muc_participants': false, + 'locked_muc_domain': false, + 'muc_domain': undefined, + 'muc_fetch_members': true, + 'muc_history_max_stanzas': undefined, + 'muc_instant_rooms': true, + 'muc_nickname_from_jid': false, + 'muc_send_probes': false, + 'muc_show_info_messages': [...converse.MUC_INFO_CODES.visibility_changes, ...converse.MUC_INFO_CODES.self, ...converse.MUC_INFO_CODES.non_privacy_changes, ...converse.MUC_INFO_CODES.muc_logging_changes, ...converse.MUC_INFO_CODES.nickname_changes, ...converse.MUC_INFO_CODES.disconnect_messages, ...converse.MUC_INFO_CODES.affiliation_changes, ...converse.MUC_INFO_CODES.join_leave_events, ...converse.MUC_INFO_CODES.role_changes], + 'muc_show_logs_before_join': false + }); + core_api.promises.add(['roomsAutoJoined']); + + if (core_api.settings.get('locked_muc_domain') && typeof core_api.settings.get('muc_domain') !== 'string') { + throw new Error('Config Error: it makes no sense to set locked_muc_domain ' + 'to true when muc_domain is not set'); + } + + converse.env.muc_utils = utils_muc; + Object.assign(core_api, muc_api); + /* https://xmpp.org/extensions/xep-0045.html + * ---------------------------------------- + * 100 message Entering a groupchat Inform user that any occupant is allowed to see the user's full JID + * 101 message (out of band) Affiliation change Inform user that his or her affiliation changed while not in the groupchat + * 102 message Configuration change Inform occupants that groupchat now shows unavailable members + * 103 message Configuration change Inform occupants that groupchat now does not show unavailable members + * 104 message Configuration change Inform occupants that a non-privacy-related groupchat configuration change has occurred + * 110 presence Any groupchat presence Inform user that presence refers to one of its own groupchat occupants + * 170 message or initial presence Configuration change Inform occupants that groupchat logging is now enabled + * 171 message Configuration change Inform occupants that groupchat logging is now disabled + * 172 message Configuration change Inform occupants that the groupchat is now non-anonymous + * 173 message Configuration change Inform occupants that the groupchat is now semi-anonymous + * 174 message Configuration change Inform occupants that the groupchat is now fully-anonymous + * 201 presence Entering a groupchat Inform user that a new groupchat has been created + * 210 presence Entering a groupchat Inform user that the service has assigned or modified the occupant's roomnick + * 301 presence Removal from groupchat Inform user that he or she has been banned from the groupchat + * 303 presence Exiting a groupchat Inform all occupants of new groupchat nickname + * 307 presence Removal from groupchat Inform user that he or she has been kicked from the groupchat + * 321 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because of an affiliation change + * 322 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because the groupchat has been changed to members-only and the user is not a member + * 332 presence Removal from groupchat Inform user that he or she is being removed from the groupchat because of a system shutdown + */ + + core_converse.muc = { + info_messages: { + 100: __('This groupchat is not anonymous'), + 102: __('This groupchat now shows unavailable members'), + 103: __('This groupchat does not show unavailable members'), + 104: __('The groupchat configuration has changed'), + 170: __('Groupchat logging is now enabled'), + 171: __('Groupchat logging is now disabled'), + 172: __('This groupchat is now no longer anonymous'), + 173: __('This groupchat is now semi-anonymous'), + 174: __('This groupchat is now fully-anonymous'), + 201: __('A new groupchat has been created') + }, + new_nickname_messages: { + // XXX: Note the triple underscore function and not double underscore. + 210: ___('Your nickname has been automatically set to %1$s'), + 303: ___('Your nickname has been changed to %1$s') + }, + disconnect_messages: { + 301: __('You have been banned from this groupchat'), + 333: __('You have exited this groupchat due to a technical problem'), + 307: __('You have been kicked from this groupchat'), + 321: __('You have been removed from this groupchat because of an affiliation change'), + 322: __("You have been removed from this groupchat because the groupchat has changed to members-only and you're not a member"), + 332: __('You have been removed from this groupchat because the service hosting it is being shut down') + } + }; + /** + * Determines info message visibility based on + * muc_show_info_messages configuration setting + * @param {*} code + * @memberOf _converse + */ + + core_converse.isInfoVisible = function (code) { + const info_messages = core_api.settings.get('muc_show_info_messages'); + + if (info_messages.includes(code)) { + return true; } + + return false; + }; + + core_converse.router.route('converse/room?jid=:jid', routeToRoom); + + core_converse.ChatRoom = core_converse.ChatBox.extend(muc_muc); + core_converse.ChatRoomMessage = core_converse.Message.extend(muc_message); + core_converse.ChatRoomOccupants = occupants; + core_converse.ChatRoomOccupant = muc_occupant; + + core_converse.getDefaultMUCNickname = function () { + // XXX: if anything changes here, update the docs for the + // locked_muc_nickname setting. + if (!core_converse.xmppstatus) { + throw new Error("Can't call _converse.getDefaultMUCNickname before the statusInitialized has been fired."); + } + + const nick = core_converse.xmppstatus.getNickname(); + + if (nick) { + return nick; + } else if (core_api.settings.get('muc_nickname_from_jid')) { + return plugins_muc_Strophe.unescapeNode(plugins_muc_Strophe.getNodeFromJid(core_converse.bare_jid)); + } + }; + /** + * Collection which stores MUC messages + * @class + * @namespace _converse.ChatRoomMessages + * @memberOf _converse + */ + + + core_converse.ChatRoomMessages = Collection.extend({ + model: core_converse.ChatRoomMessage, + comparator: 'time' + }); + core_converse.RoomsPanelModel = model_Model.extend({ + defaults: function () { + return { + 'muc_domain': core_api.settings.get('muc_domain'), + 'nick': core_converse.getDefaultMUCNickname() + }; + }, + + setDomain(jid) { + if (!core_api.settings.get('locked_muc_domain')) { + this.save('muc_domain', plugins_muc_Strophe.getDomainFromJid(jid)); + } + } + + }); + /** + * A direct MUC invitation to join a groupchat has been received + * See XEP-0249: Direct MUC invitations. + * @private + * @method _converse.ChatRoom#onDirectMUCInvitation + * @param { XMLElement } message - The message stanza containing the invitation. + */ + + core_converse.onDirectMUCInvitation = async function (message) { + const x_el = plugins_muc_sizzle('x[xmlns="jabber:x:conference"]', message).pop(), + from = plugins_muc_Strophe.getBareJidFromJid(message.getAttribute('from')), + room_jid = x_el.getAttribute('jid'), + reason = x_el.getAttribute('reason'); + let result; + + if (core_api.settings.get('auto_join_on_invite')) { + result = true; + } else { + // Invite request might come from someone not your roster list + let contact = core_converse.roster.get(from); + + contact = contact ? contact.getDisplayName() : from; + + if (!reason) { + result = confirm(__('%1$s has invited you to join a groupchat: %2$s', contact, room_jid)); + } else { + result = confirm(__('%1$s has invited you to join a groupchat: %2$s, and left the following reason: "%3$s"', contact, room_jid, reason)); + } + } + + if (result === true) { + const chatroom = await openChatRoom(room_jid, { + 'password': x_el.getAttribute('password') + }); + + if (chatroom.session.get('connection_status') === converse.ROOMSTATUS.DISCONNECTED) { + core_converse.chatboxes.get(room_jid).rejoin(); + } + } + }; + + if (core_api.settings.get('allow_muc_invitations')) { + const registerDirectInvitationHandler = function () { + core_converse.connection.addHandler(message => { + core_converse.onDirectMUCInvitation(message); + + return true; + }, 'jabber:x:conference', 'message'); + }; + + core_api.listen.on('connected', registerDirectInvitationHandler); + core_api.listen.on('reconnected', registerDirectInvitationHandler); + } + /************************ BEGIN Event Handlers ************************/ + + + core_api.listen.on('beforeTearDown', () => { + const groupchats = core_converse.chatboxes.where({ + 'type': core_converse.CHATROOMS_TYPE + }); + + groupchats.forEach(muc => utils_form.safeSave(muc.session, { + 'connection_status': converse.ROOMSTATUS.DISCONNECTED + })); + }); + core_api.listen.on('windowStateChanged', muc_onWindowStateChanged); + core_api.listen.on('addClientFeatures', () => { + if (core_api.settings.get('allow_muc')) { + core_api.disco.own.features.add(plugins_muc_Strophe.NS.MUC); + } + + if (core_api.settings.get('allow_muc_invitations')) { + core_api.disco.own.features.add('jabber:x:conference'); // Invites + } + }); + core_api.listen.on('chatBoxesFetched', autoJoinRooms); + core_api.listen.on('beforeResourceBinding', () => { + core_converse.connection.addHandler(stanza => { + const muc_jid = plugins_muc_Strophe.getBareJidFromJid(stanza.getAttribute('from')); + + if (!core_converse.chatboxes.get(muc_jid)) { + core_api.waitUntil('chatBoxesFetched').then(async () => { + const muc = core_converse.chatboxes.get(muc_jid); + + if (muc) { + await muc.initialized; + muc.message_handler.run(stanza); + } + }); + } + + return true; + }, null, 'message', 'groupchat'); + }); + core_api.listen.on('disconnected', disconnectChatRooms); + core_api.listen.on('statusInitialized', () => { + window.addEventListener(core_converse.unloadevent, () => { + const using_websocket = core_api.connection.isType('websocket'); + + if (using_websocket && (!core_api.settings.get('enable_smacks') || !core_converse.session.get('smacks_stream_id'))) { + // For non-SMACKS websocket connections, or non-resumeable + // connections, we disconnect all chatrooms when the page unloads. + // See issue #1111 + disconnectChatRooms(); + } + }); }); - /************************ END API ************************/ } }); -// CONCATENATED MODULE: ./src/headless/converse-bookmarks.js +// CONCATENATED MODULE: ./src/headless/plugins/bookmarks.js /** * @module converse-bookmarks * @description @@ -79834,11 +83849,21 @@ converse.plugins.add('converse-muc', { const { - Strophe: converse_bookmarks_Strophe, - $iq: converse_bookmarks_$iq, - sizzle: converse_bookmarks_sizzle + Strophe: bookmarks_Strophe, + $iq: bookmarks_$iq, + sizzle: bookmarks_sizzle } = converse.env; -const converse_bookmarks_u = converse.env.utils; +const bookmarks_u = converse.env.utils; +bookmarks_Strophe.addNamespace('BOOKMARKS', 'storage:bookmarks'); + +function handleBookmarksPush(message) { + if (bookmarks_sizzle("event[xmlns=\"".concat(bookmarks_Strophe.NS.PUBSUB, "#event\"] items[node=\"").concat(bookmarks_Strophe.NS.BOOKMARKS, "\"]"), message).length) { + core_api.waitUntil('bookmarksInitialized').then(() => core_converse.bookmarks.createBookmarksFromStanza(message)).catch(e => headless_log.fatal(e)); + } + + return true; +} + converse.plugins.add('converse-bookmarks', { /* Plugin dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -79893,17 +83918,17 @@ converse.plugins.add('converse-bookmarks', { */ const { __ - } = converse_core_converse; // Configuration values for this plugin + } = core_converse; // Configuration values for this plugin // ==================================== // Refer to docs/source/configuration.rst for explanations of these // configuration settings. - converse_core_api.settings.extend({ + core_api.settings.extend({ allow_bookmarks: true, allow_public_bookmarks: false, muc_respect_autojoin: true }); - converse_core_api.promises.add('bookmarksInitialized'); + core_api.promises.add('bookmarksInitialized'); /** * Check if the user has a bookmark with a saved nickanme * for this groupchat and return it. @@ -79911,12 +83936,12 @@ converse.plugins.add('converse-bookmarks', { * @method _converse#getNicknameFromBookmark */ - converse_core_converse.getNicknameFromBookmark = function (jid) { - if (!converse_core_converse.bookmarks || !converse_core_api.settings.get('allow_bookmarks')) { + core_converse.getNicknameFromBookmark = function (jid) { + if (!core_converse.bookmarks || !core_api.settings.get('allow_bookmarks')) { return null; } - const bookmark = converse_core_converse.bookmarks.findWhere({ + const bookmark = core_converse.bookmarks.findWhere({ 'jid': jid }); @@ -79925,28 +83950,30 @@ converse.plugins.add('converse-bookmarks', { } }; - converse_core_converse.Bookmark = model_Model.extend({ + core_converse.Bookmark = model_Model.extend({ + idAttribute: 'jid', + getDisplayName() { - return converse_bookmarks_Strophe.xmlunescape(this.get('name')); + return bookmarks_Strophe.xmlunescape(this.get('name')); } }); - converse_core_converse.Bookmarks = collection_Collection.extend({ - model: converse_core_converse.Bookmark, + core_converse.Bookmarks = Collection.extend({ + model: core_converse.Bookmark, comparator: item => item.get('name').toLowerCase(), initialize() { this.on('add', bm => this.openBookmarkedRoom(bm).then(bm => this.markRoomAsBookmarked(bm)).catch(e => headless_log.fatal(e))); this.on('remove', this.markRoomAsUnbookmarked, this); this.on('remove', this.sendBookmarkStanza, this); - const cache_key = "converse.room-bookmarks".concat(converse_core_converse.bare_jid); + const cache_key = "converse.room-bookmarks".concat(core_converse.bare_jid); this.fetched_flag = cache_key + 'fetched'; - this.browserStorage = converse_core_converse.createStore(cache_key); + this.browserStorage = core_converse.createStore(cache_key); }, async openBookmarkedRoom(bookmark) { - if (converse_core_api.settings.get('muc_respect_autojoin') && bookmark.get('autojoin')) { - const groupchat = await converse_core_api.rooms.create(bookmark.get('jid'), { + if (core_api.settings.get('muc_respect_autojoin') && bookmark.get('autojoin')) { + const groupchat = await core_api.rooms.create(bookmark.get('jid'), { 'nick': bookmark.get('nick') }); groupchat.maybeShow(); @@ -79956,7 +83983,7 @@ converse.plugins.add('converse-bookmarks', { }, fetchBookmarks() { - const deferred = converse_bookmarks_u.getResolveablePromise(); + const deferred = bookmarks_u.getResolveablePromise(); if (window.sessionStorage.getItem(this.fetched_flag)) { this.fetch({ @@ -79976,17 +84003,17 @@ converse.plugins.add('converse-bookmarks', { }, sendBookmarkStanza() { - const stanza = converse_bookmarks_$iq({ + const stanza = bookmarks_$iq({ 'type': 'set', - 'from': converse_core_converse.connection.jid + 'from': core_converse.connection.jid }).c('pubsub', { - 'xmlns': converse_bookmarks_Strophe.NS.PUBSUB + 'xmlns': bookmarks_Strophe.NS.PUBSUB }).c('publish', { - 'node': 'storage:bookmarks' + 'node': bookmarks_Strophe.NS.BOOKMARKS }).c('item', { 'id': 'current' }).c('storage', { - 'xmlns': 'storage:bookmarks' + 'xmlns': bookmarks_Strophe.NS.BOOKMARKS }); this.forEach(model => { stanza.c('conference', { @@ -79997,7 +84024,7 @@ converse.plugins.add('converse-bookmarks', { }); stanza.up().up().up(); stanza.c('publish-options').c('x', { - 'xmlns': converse_bookmarks_Strophe.NS.XFORM, + 'xmlns': bookmarks_Strophe.NS.XFORM, 'type': 'submit' }).c('field', { 'var': 'FORM_TYPE', @@ -80007,32 +84034,32 @@ converse.plugins.add('converse-bookmarks', { }).c('value').t('true').up().up().c('field', { 'var': 'pubsub#access_model' }).c('value').t('whitelist'); - return converse_core_api.sendIQ(stanza); + return core_api.sendIQ(stanza); }, onBookmarkError(iq, options) { headless_log.error("Error while trying to add bookmark"); headless_log.error(iq); - converse_core_api.alert('error', __('Error'), [__("Sorry, something went wrong while trying to save your bookmark.")]); + core_api.alert('error', __('Error'), [__("Sorry, something went wrong while trying to save your bookmark.")]); this.findWhere({ 'jid': options.jid }).destroy(); }, fetchBookmarksFromServer(deferred) { - const stanza = converse_bookmarks_$iq({ - 'from': converse_core_converse.connection.jid, + const stanza = bookmarks_$iq({ + 'from': core_converse.connection.jid, 'type': 'get' }).c('pubsub', { - 'xmlns': converse_bookmarks_Strophe.NS.PUBSUB + 'xmlns': bookmarks_Strophe.NS.PUBSUB }).c('items', { - 'node': 'storage:bookmarks' + 'node': bookmarks_Strophe.NS.BOOKMARKS }); - converse_core_api.sendIQ(stanza).then(iq => this.onBookmarksReceived(deferred, iq)).catch(iq => this.onBookmarksReceivedError(deferred, iq)); + core_api.sendIQ(stanza).then(iq => this.onBookmarksReceived(deferred, iq)).catch(iq => this.onBookmarksReceivedError(deferred, iq)); }, markRoomAsBookmarked(bookmark) { - const groupchat = converse_core_converse.chatboxes.get(bookmark.get('jid')); + const groupchat = core_converse.chatboxes.get(bookmark.get('jid')); if (groupchat !== undefined) { groupchat.save('bookmarked', true); @@ -80040,7 +84067,7 @@ converse.plugins.add('converse-bookmarks', { }, markRoomAsUnbookmarked(bookmark) { - const groupchat = converse_core_converse.chatboxes.get(bookmark.get('jid')); + const groupchat = core_converse.chatboxes.get(bookmark.get('jid')); if (groupchat !== undefined) { groupchat.save('bookmarked', false); @@ -80048,17 +84075,20 @@ converse.plugins.add('converse-bookmarks', { }, createBookmarksFromStanza(stanza) { - const bookmarks = converse_bookmarks_sizzle("items[node=\"storage:bookmarks\"] item storage[xmlns=\"storage:bookmarks\"] conference", stanza); - bookmarks.forEach(bookmark => { - var _bookmark$querySelect; + const xmlns = bookmarks_Strophe.NS.BOOKMARKS; + const sel = "items[node=\"".concat(xmlns, "\"] item storage[xmlns=\"").concat(xmlns, "\"] conference"); + bookmarks_sizzle(sel, stanza).forEach(el => { + var _el$querySelector; - const jid = bookmark.getAttribute('jid'); - this.create({ + const jid = el.getAttribute('jid'); + const bookmark = this.get(jid); + const attrs = { 'jid': jid, - 'name': bookmark.getAttribute('name') || jid, - 'autojoin': bookmark.getAttribute('autojoin') === 'true', - 'nick': ((_bookmark$querySelect = bookmark.querySelector('nick')) === null || _bookmark$querySelect === void 0 ? void 0 : _bookmark$querySelect.textContent) || '' - }); + 'name': el.getAttribute('name') || jid, + 'autojoin': el.getAttribute('autojoin') === 'true', + 'nick': ((_el$querySelector = el.querySelector('nick')) === null || _el$querySelector === void 0 ? void 0 : _el$querySelector.textContent) || '' + }; + bookmark ? bookmark.save(attrs) : this.create(attrs); }); }, @@ -80074,7 +84104,7 @@ converse.plugins.add('converse-bookmarks', { onBookmarksReceivedError(deferred, iq) { if (iq === null) { headless_log.error('Error: timeout while fetching bookmarks'); - converse_core_api.alert('error', __('Timeout Error'), [__("The server did not return your bookmarks within the allowed time. " + "You can reload the page to request them again.")]); + core_api.alert('error', __('Timeout Error'), [__("The server did not return your bookmarks within the allowed time. " + "You can reload the page to request them again.")]); } else if (deferred) { if (iq.querySelector('error[type="cancel"] item-not-found')) { // Not an exception, the user simply doesn't have any bookmarks. @@ -80092,34 +84122,34 @@ converse.plugins.add('converse-bookmarks', { }, getUnopenedBookmarks() { - return this.filter(b => !converse_core_converse.chatboxes.get(b.get('jid'))); + return this.filter(b => !core_converse.chatboxes.get(b.get('jid'))); } }); - converse_core_converse.BookmarksList = model_Model.extend({ + core_converse.BookmarksList = model_Model.extend({ defaults: { - "toggle-state": converse_core_converse.OPENED + "toggle-state": core_converse.OPENED } }); - converse_core_converse.checkBookmarksSupport = async function () { - const identity = await converse_core_api.disco.getIdentity('pubsub', 'pep', converse_core_converse.bare_jid); + core_converse.checkBookmarksSupport = async function () { + const identity = await core_api.disco.getIdentity('pubsub', 'pep', core_converse.bare_jid); - if (converse_core_converse.allow_public_bookmarks) { + if (core_converse.allow_public_bookmarks) { return !!identity; } else { - return converse_core_api.disco.supports(converse_bookmarks_Strophe.NS.PUBSUB + '#publish-options', converse_core_converse.bare_jid); + return core_api.disco.supports(bookmarks_Strophe.NS.PUBSUB + '#publish-options', core_converse.bare_jid); } }; - const initBookmarks = async function initBookmarks() { - if (!converse_core_api.settings.get('allow_bookmarks')) { + const initBookmarks = async function () { + if (!core_api.settings.get('allow_bookmarks')) { return; } - if (await converse_core_converse.checkBookmarksSupport()) { - converse_core_converse.bookmarks = new converse_core_converse.Bookmarks(); - await converse_core_converse.bookmarks.fetchBookmarks(); + if (await core_converse.checkBookmarksSupport()) { + core_converse.bookmarks = new core_converse.Bookmarks(); + await core_converse.bookmarks.fetchBookmarks(); /** * Triggered once the _converse.Bookmarks collection * has been created and cached bookmarks have been fetched. @@ -80127,39 +84157,42 @@ converse.plugins.add('converse-bookmarks', { * @example _converse.api.listen.on('bookmarksInitialized', () => { ... }); */ - converse_core_api.trigger('bookmarksInitialized'); + core_api.trigger('bookmarksInitialized'); } }; - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.bookmarks !== undefined) { - converse_core_converse.bookmarks.clearStore({ + core_api.listen.on('addClientFeatures', () => { + if (core_api.settings.get('allow_bookmarks')) { + core_api.disco.own.features.add(bookmarks_Strophe.NS.BOOKMARKS + '+notify'); + } + }); + core_api.listen.on('clearSession', () => { + if (core_converse.bookmarks !== undefined) { + core_converse.bookmarks.clearStore({ 'silent': true }); - window.sessionStorage.removeItem(converse_core_converse.bookmarks.fetched_flag); - delete converse_core_converse.bookmarks; + window.sessionStorage.removeItem(core_converse.bookmarks.fetched_flag); + delete core_converse.bookmarks; } }); - converse_core_api.listen.on('reconnected', initBookmarks); - converse_core_api.listen.on('connected', async () => { + core_api.listen.on('reconnected', initBookmarks); + core_api.listen.on('connected', async () => { // Add a handler for bookmarks pushed from other connected clients - converse_core_converse.connection.addHandler(message => { - if (converse_bookmarks_sizzle('event[xmlns="' + converse_bookmarks_Strophe.NS.PUBSUB + '#event"] items[node="storage:bookmarks"]', message).length) { - converse_core_api.waitUntil('bookmarksInitialized').then(() => converse_core_converse.bookmarks.createBookmarksFromStanza(message)).catch(e => headless_log.fatal(e)); - } - }, null, 'message', 'headline', null, converse_core_converse.bare_jid); - - await Promise.all([converse_core_api.waitUntil('chatBoxesFetched')]); + const { + connection + } = core_converse; + connection.addHandler(handleBookmarksPush, null, 'message', 'headline', null, core_converse.bare_jid); + await Promise.all([core_api.waitUntil('chatBoxesFetched')]); initBookmarks(); }); } }); // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/bosh.js -var bosh = __webpack_require__(115); +var bosh = __webpack_require__(154); -// CONCATENATED MODULE: ./src/headless/converse-bosh.js +// CONCATENATED MODULE: ./src/headless/plugins/bosh.js /** * @module converse-bosh * @copyright The Converse.js contributors @@ -80171,16 +84204,16 @@ var bosh = __webpack_require__(115); const { - Strophe: converse_bosh_Strophe + Strophe: bosh_Strophe } = converse.env; const BOSH_SESSION_ID = 'converse.bosh-session'; converse.plugins.add('converse-bosh', { enabled() { - return !converse_core_converse.api.settings.get("blacklisted_plugins").includes('converse-bosh'); + return !core_converse.api.settings.get("blacklisted_plugins").includes('converse-bosh'); }, initialize() { - converse_core_api.settings.extend({ + core_api.settings.extend({ bosh_service_url: undefined, prebind_url: null }); @@ -80188,61 +84221,61 @@ converse.plugins.add('converse-bosh', { async function initBOSHSession() { const id = BOSH_SESSION_ID; - if (!converse_core_converse.bosh_session) { - converse_core_converse.bosh_session = new model_Model({ + if (!core_converse.bosh_session) { + core_converse.bosh_session = new model_Model({ id }); - converse_core_converse.bosh_session.browserStorage = converse_core_converse.createStore(id, "session"); - await new Promise(resolve => converse_core_converse.bosh_session.fetch({ + core_converse.bosh_session.browserStorage = core_converse.createStore(id, "session"); + await new Promise(resolve => core_converse.bosh_session.fetch({ 'success': resolve, 'error': resolve })); } - if (converse_core_converse.jid) { - if (converse_core_converse.bosh_session.get('jid') !== converse_core_converse.jid) { - const jid = await converse_core_converse.setUserJID(converse_core_converse.jid); + if (core_converse.jid) { + if (core_converse.bosh_session.get('jid') !== core_converse.jid) { + const jid = await core_converse.setUserJID(core_converse.jid); - converse_core_converse.bosh_session.clear({ + core_converse.bosh_session.clear({ 'silent': true }); - converse_core_converse.bosh_session.save({ + core_converse.bosh_session.save({ jid }); } } else { // Keepalive - const jid = converse_core_converse.bosh_session.get('jid'); + const jid = core_converse.bosh_session.get('jid'); - jid && (await converse_core_converse.setUserJID(jid)); + jid && (await core_converse.setUserJID(jid)); } - return converse_core_converse.bosh_session; + return core_converse.bosh_session; } - converse_core_converse.startNewPreboundBOSHSession = function () { - if (!converse_core_api.settings.get('prebind_url')) { + core_converse.startNewPreboundBOSHSession = function () { + if (!core_api.settings.get('prebind_url')) { throw new Error("startNewPreboundBOSHSession: If you use prebind then you MUST supply a prebind_url"); } const xhr = new XMLHttpRequest(); - xhr.open('GET', converse_core_api.settings.get('prebind_url'), true); + xhr.open('GET', core_api.settings.get('prebind_url'), true); xhr.setRequestHeader('Accept', 'application/json, text/javascript'); xhr.onload = async function () { if (xhr.status >= 200 && xhr.status < 400) { const data = JSON.parse(xhr.responseText); - const jid = await converse_core_converse.setUserJID(data.jid); + const jid = await core_converse.setUserJID(data.jid); - converse_core_converse.connection.attach(jid, data.sid, data.rid, converse_core_converse.connection.onConnectStatusChanged); + core_converse.connection.attach(jid, data.sid, data.rid, core_converse.connection.onConnectStatusChanged); } else { xhr.onerror(); } }; xhr.onerror = function () { - delete converse_core_converse.connection; + delete core_converse.connection; /** * Triggered when fetching prebind tokens failed * @event _converse#noResumeableBOSHSession @@ -80250,22 +84283,22 @@ converse.plugins.add('converse-bosh', { * @example _converse.api.listen.on('noResumeableBOSHSession', _converse => { ... }); */ - converse_core_api.trigger('noResumeableBOSHSession', converse_core_converse); + core_api.trigger('noResumeableBOSHSession', core_converse); }; xhr.send(); }; - converse_core_converse.restoreBOSHSession = async function () { + core_converse.restoreBOSHSession = async function () { const jid = (await initBOSHSession()).get('jid'); - if (jid && converse_core_converse.connection._proto instanceof converse_bosh_Strophe.Bosh) { + if (jid && core_converse.connection._proto instanceof bosh_Strophe.Bosh) { try { - converse_core_converse.connection.restore(jid, converse_core_converse.connection.onConnectStatusChanged); + core_converse.connection.restore(jid, core_converse.connection.onConnectStatusChanged); return true; } catch (e) { - !converse_core_converse.isTestEnv() && headless_log.warn("Could not restore session for jid: " + jid + " Error message: " + e.message); + !core_converse.isTestEnv() && headless_log.warn("Could not restore session for jid: " + jid + " Error message: " + e.message); return false; } } @@ -80275,32 +84308,32 @@ converse.plugins.add('converse-bosh', { /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.bosh_session === undefined) { + core_api.listen.on('clearSession', () => { + if (core_converse.bosh_session === undefined) { // Remove manually, even if we don't have the corresponding // model, to avoid trying to reconnect to a stale BOSH session const id = BOSH_SESSION_ID; sessionStorage.removeItem(id); sessionStorage.removeItem("".concat(id, "-").concat(id)); } else { - converse_core_converse.bosh_session.destroy(); + core_converse.bosh_session.destroy(); - delete converse_core_converse.bosh_session; + delete core_converse.bosh_session; } }); - converse_core_api.listen.on('setUserJID', () => { - if (converse_core_converse.bosh_session !== undefined) { - converse_core_converse.bosh_session.save({ - 'jid': converse_core_converse.jid + core_api.listen.on('setUserJID', () => { + if (core_converse.bosh_session !== undefined) { + core_converse.bosh_session.save({ + 'jid': core_converse.jid }); } }); - converse_core_api.listen.on('addClientFeatures', () => converse_core_api.disco.own.features.add(converse_bosh_Strophe.NS.BOSH)); + core_api.listen.on('addClientFeatures', () => core_api.disco.own.features.add(bosh_Strophe.NS.BOSH)); /************************ END Event Handlers ************************/ /************************ BEGIN API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * This namespace lets you access the BOSH tokens * @@ -80315,14 +84348,14 @@ converse.plugins.add('converse-bosh', { * @example _converse.api.tokens.get('rid'); */ get(id) { - if (converse_core_converse.connection === undefined) { + if (core_converse.connection === undefined) { return null; } if (id.toLowerCase() === 'rid') { - return converse_core_converse.connection.rid || converse_core_converse.connection._proto.rid; + return core_converse.connection.rid || core_converse.connection._proto.rid; } else if (id.toLowerCase() === 'sid') { - return converse_core_converse.connection.sid || converse_core_converse.connection._proto.sid; + return core_converse.connection.sid || core_converse.connection._proto.sid; } } @@ -80335,7 +84368,7 @@ converse.plugins.add('converse-bosh', { // EXTERNAL MODULE: ./src/headless/node_modules/strophe.js/src/sha1.js var sha1 = __webpack_require__(7); -// CONCATENATED MODULE: ./src/headless/converse-caps.js +// CONCATENATED MODULE: ./src/headless/plugins/caps.js /** * @module converse-caps * @copyright 2020, the Converse.js contributors @@ -80344,10 +84377,10 @@ var sha1 = __webpack_require__(7); const { - Strophe: converse_caps_Strophe, - $build: converse_caps_$build + Strophe: caps_Strophe, + $build } = converse.env; -converse_caps_Strophe.addNamespace('CAPS', "http://jabber.org/protocol/caps"); +caps_Strophe.addNamespace('CAPS', "http://jabber.org/protocol/caps"); function propertySort(array, property) { return array.sort((a, b) => { @@ -80377,8 +84410,8 @@ function generateVerificationString(_converse) { } function createCapsNode(_converse) { - return converse_caps_$build("c", { - 'xmlns': converse_caps_Strophe.NS.CAPS, + return $build("c", { + 'xmlns': caps_Strophe.NS.CAPS, 'hash': "sha-1", 'node': "https://conversejs.org", 'ver': generateVerificationString(_converse) @@ -80401,7 +84434,7 @@ converse.plugins.add('converse-caps', { } } }); -// CONCATENATED MODULE: ./src/headless/converse-carbons.js +// CONCATENATED MODULE: ./src/headless/plugins/carbons.js /** * @module converse-carbons * @copyright The Converse.js contributors @@ -80415,46 +84448,57 @@ converse.plugins.add('converse-caps', { * See XEP-0280 https://xmpp.org/extensions/xep-0280.html#enabling */ -function enableCarbons() { - var _converse$session; +function enableCarbons(reconnecting) { + var _converse$session2; + + if (reconnecting) { + var _converse$session; + + (_converse$session = core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.set({ + 'carbons_enabled': false + }); + } - if (!converse_core_api.settings.get("message_carbons") || ((_converse$session = converse_core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.get('carbons_enabled'))) { + if (!core_api.settings.get("message_carbons") || ((_converse$session2 = core_converse.session) === null || _converse$session2 === void 0 ? void 0 : _converse$session2.get('carbons_enabled'))) { return; } const carbons_iq = new strophe["e" /* Strophe */].Builder('iq', { - 'from': converse_core_converse.connection.jid, + 'from': core_converse.connection.jid, 'id': 'enablecarbons', 'type': 'set' }).c('enable', { xmlns: strophe["e" /* Strophe */].NS.CARBONS }); - converse_core_converse.connection.addHandler(iq => { + core_converse.connection.addHandler(iq => { if (iq.querySelectorAll('error').length > 0) { headless_log.warn('An error occurred while trying to enable message carbons.'); } else { - converse_core_converse.session.save({ + core_converse.session.set({ 'carbons_enabled': true }); headless_log.debug('Message carbons have been enabled.'); } + + core_converse.session.save(); // Gather multiple sets into one save + }, null, "iq", null, "enablecarbons"); - converse_core_converse.connection.send(carbons_iq); + core_converse.connection.send(carbons_iq); } converse.plugins.add('converse-carbons', { initialize() { - converse_core_api.settings.extend({ + core_api.settings.extend({ message_carbons: true }); - converse_core_api.listen.on('afterResourceBinding', () => enableCarbons()); + core_api.listen.on('afterResourceBinding', enableCarbons); } }); -// CONCATENATED MODULE: ./src/headless/converse-chatboxes.js +// CONCATENATED MODULE: ./src/headless/plugins/chatboxes.js /** * @module converse-chatboxes * @copyright 2020, the Converse.js contributors @@ -80465,12 +84509,12 @@ converse.plugins.add('converse-carbons', { const { - Strophe: converse_chatboxes_Strophe + Strophe: chatboxes_Strophe } = converse.env; -converse_chatboxes_Strophe.addNamespace('MESSAGE_CORRECT', 'urn:xmpp:message-correct:0'); -converse_chatboxes_Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts'); -converse_chatboxes_Strophe.addNamespace('REFERENCE', 'urn:xmpp:reference:0'); -converse_chatboxes_Strophe.addNamespace('MARKERS', 'urn:xmpp:chat-markers:0'); +chatboxes_Strophe.addNamespace('MESSAGE_CORRECT', 'urn:xmpp:message-correct:0'); +chatboxes_Strophe.addNamespace('RECEIPTS', 'urn:xmpp:receipts'); +chatboxes_Strophe.addNamespace('REFERENCE', 'urn:xmpp:reference:0'); +chatboxes_Strophe.addNamespace('MARKERS', 'urn:xmpp:chat-markers:0'); converse.plugins.add('converse-chatboxes', { dependencies: ["converse-emoji", "converse-roster", "converse-vcard"], @@ -80478,57 +84522,27 @@ converse.plugins.add('converse-chatboxes', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.promises.add(['chatBoxesFetched', 'chatBoxesInitialized', 'privateChatsAutoJoined']); - let msg_counter = 0; - - converse_core_converse.incrementMsgCounter = function () { - msg_counter += 1; - const title = document.title; - - if (!title) { - return; - } - - if (title.search(/^Messages \(\d+\) /) === -1) { - document.title = "Messages (".concat(msg_counter, ") ").concat(title); - } else { - document.title = title.replace(/^Messages \(\d+\) /, "Messages (".concat(msg_counter, ") ")); - } - }; - - converse_core_converse.clearMsgCounter = function () { - msg_counter = 0; - const title = document.title; - - if (!title) { - return; - } - - if (title.search(/^Messages \(\d+\) /) !== -1) { - document.title = title.replace(/^Messages \(\d+\) /, ""); - } - }; - - converse_core_converse.ChatBoxes = collection_Collection.extend({ + core_api.promises.add(['chatBoxesFetched', 'chatBoxesInitialized', 'privateChatsAutoJoined']); + core_converse.ChatBoxes = Collection.extend({ comparator: 'time_opened', model(attrs, options) { - return new converse_core_converse.ChatBox(attrs, options); + return new core_converse.ChatBox(attrs, options); }, onChatBoxesFetched(collection) { collection.filter(c => !c.isValid()).forEach(c => c.destroy()); /** - * Triggered when a message stanza is been received and processed. + * Triggered once all chat boxes have been recreated from the browser cache * @event _converse#chatBoxesFetched * @type { object } * @property { _converse.ChatBox | _converse.ChatRoom } chatbox * @property { XMLElement } stanza - * @example _converse.api.listen.on('message', obj => { ... }); + * @example _converse.api.listen.on('chatBoxesFetched', obj => { ... }); * @example _converse.api.waitUntil('chatBoxesFetched').then(() => { ... }); */ - converse_core_api.trigger('chatBoxesFetched'); + core_api.trigger('chatBoxesFetched'); }, onConnected(reconnecting) { @@ -80536,7 +84550,7 @@ converse.plugins.add('converse-chatboxes', { return; } - this.browserStorage = converse_core_converse.createStore("converse.chatboxes-".concat(converse_core_converse.bare_jid)); + this.browserStorage = core_converse.createStore("converse.chatboxes-".concat(core_converse.bare_jid)); this.fetch({ 'add': true, 'success': c => this.onChatBoxesFetched(c) @@ -80546,7 +84560,7 @@ converse.plugins.add('converse-chatboxes', { }); async function createChatBox(jid, attrs, Model) { - jid = converse_chatboxes_Strophe.getBareJidFromJid(jid.toLowerCase()); + jid = chatboxes_Strophe.getBareJidFromJid(jid.toLowerCase()); Object.assign(attrs, { 'jid': jid, 'id': jid @@ -80555,7 +84569,7 @@ converse.plugins.add('converse-chatboxes', { try { chatbox = new Model(attrs, { - 'collection': converse_core_converse.chatboxes + 'collection': core_converse.chatboxes }); } catch (e) { headless_log.error(e); @@ -80569,21 +84583,20 @@ converse.plugins.add('converse-chatboxes', { return null; } - converse_core_converse.chatboxes.add(chatbox); + core_converse.chatboxes.add(chatbox); - await chatbox.messages.fetched; return chatbox; } /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('addClientFeatures', () => { - converse_core_api.disco.own.features.add(converse_chatboxes_Strophe.NS.MESSAGE_CORRECT); - converse_core_api.disco.own.features.add(converse_chatboxes_Strophe.NS.HTTPUPLOAD); - converse_core_api.disco.own.features.add(converse_chatboxes_Strophe.NS.OUTOFBAND); + core_api.listen.on('addClientFeatures', () => { + core_api.disco.own.features.add(chatboxes_Strophe.NS.MESSAGE_CORRECT); + core_api.disco.own.features.add(chatboxes_Strophe.NS.HTTPUPLOAD); + core_api.disco.own.features.add(chatboxes_Strophe.NS.OUTOFBAND); }); - converse_core_api.listen.on('pluginsInitialized', () => { - converse_core_converse.chatboxes = new converse_core_converse.ChatBoxes(); + core_api.listen.on('pluginsInitialized', () => { + core_converse.chatboxes = new core_converse.ChatBoxes(); /** * Triggered once the _converse.ChatBoxes collection has been initialized. * @event _converse#chatBoxesInitialized @@ -80591,16 +84604,15 @@ converse.plugins.add('converse-chatboxes', { * @example _converse.api.waitUntil('chatBoxesInitialized').then(() => { ... }); */ - converse_core_api.trigger('chatBoxesInitialized'); + core_api.trigger('chatBoxesInitialized'); }); - converse_core_api.listen.on('presencesInitialized', reconnecting => converse_core_converse.chatboxes.onConnected(reconnecting)); - converse_core_api.listen.on('reconnected', () => converse_core_converse.chatboxes.forEach(m => m.onReconnection())); - converse_core_api.listen.on('windowStateChanged', d => d.state === 'visible' && converse_core_converse.clearMsgCounter()); + core_api.listen.on('presencesInitialized', reconnecting => core_converse.chatboxes.onConnected(reconnecting)); + core_api.listen.on('reconnected', () => core_converse.chatboxes.forEach(m => m.onReconnection())); /************************ END Event Handlers ************************/ /************************ BEGIN API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * The "chatboxes" namespace. * @@ -80615,7 +84627,7 @@ converse.plugins.add('converse-chatboxes', { * @param { Model } model - The type of chatbox that should be created */ async create(jids = [], attrs = {}, model) { - await converse_core_api.waitUntil('chatBoxesFetched'); + await core_api.waitUntil('chatBoxesFetched'); if (typeof jids === 'string') { return createChatBox(jids, attrs, model); @@ -80629,15 +84641,15 @@ converse.plugins.add('converse-chatboxes', { * @param { String|String[] } jids - A JID or array of JIDs */ async get(jids) { - await converse_core_api.waitUntil('chatBoxesFetched'); + await core_api.waitUntil('chatBoxesFetched'); if (jids === undefined) { - return converse_core_converse.chatboxes.models; + return core_converse.chatboxes.models; } else if (typeof jids === 'string') { - return converse_core_converse.chatboxes.get(jids.toLowerCase()); + return core_converse.chatboxes.get(jids.toLowerCase()); } else { jids = jids.map(j => j.toLowerCase()); - return converse_core_converse.chatboxes.models.filter(m => jids.includes(m.get('jid'))); + return core_converse.chatboxes.models.filter(m => jids.includes(m.get('jid'))); } } @@ -80647,7 +84659,7 @@ converse.plugins.add('converse-chatboxes', { } }); -// CONCATENATED MODULE: ./src/headless/converse-headlines.js +// CONCATENATED MODULE: ./src/headless/plugins/headlines.js /** * @module converse-headlines * @copyright 2020, the Converse.js contributors @@ -80700,23 +84712,24 @@ converse.plugins.add('converse-headlines', { * @namespace _converse.HeadlinesBox * @memberOf _converse */ - converse_core_converse.HeadlinesBox = converse_core_converse.ChatBox.extend({ + core_converse.HeadlinesBox = core_converse.ChatBox.extend({ defaults() { return { 'bookmarked': false, - 'hidden': ['mobile', 'fullscreen'].includes(converse_core_api.settings.get("view_mode")), + 'hidden': ['mobile', 'fullscreen'].includes(core_api.settings.get("view_mode")), 'message_type': 'headline', 'num_unread': 0, 'time_opened': this.get('time_opened') || new Date().getTime(), - 'type': converse_core_converse.HEADLINES_TYPE + 'type': core_converse.HEADLINES_TYPE }; }, - initialize() { - this.initMessages(); + async initialize() { this.set({ 'box_id': "box-".concat(this.get('jid')) }); + this.initMessages(); + await this.fetchMessages(); /** * Triggered once a {@link _converse.HeadlinesBox} has been created and initialized. * @event _converse#headlinesBoxInitialized @@ -80724,7 +84737,7 @@ converse.plugins.add('converse-headlines', { * @example _converse.api.listen.on('headlinesBoxInitialized', model => { ... }); */ - converse_core_api.trigger('headlinesBoxInitialized', this); + core_api.trigger('headlinesBoxInitialized', this); } }); @@ -80734,7 +84747,7 @@ converse.plugins.add('converse-headlines', { if (utils_stanza.isHeadline(stanza) || utils_stanza.isServerMessage(stanza)) { const from_jid = stanza.getAttribute('from'); - if (from_jid.includes('@') && !converse_core_converse.roster.get(from_jid) && !converse_core_api.settings.get("allow_non_roster_messaging")) { + if (from_jid.includes('@') && !core_converse.roster.get(from_jid) && !core_api.settings.get("allow_non_roster_messaging")) { return; } @@ -80743,16 +84756,16 @@ converse.plugins.add('converse-headlines', { return; } - const chatbox = converse_core_converse.chatboxes.create({ + const chatbox = core_converse.chatboxes.create({ 'id': from_jid, 'jid': from_jid, - 'type': converse_core_converse.HEADLINES_TYPE, + 'type': core_converse.HEADLINES_TYPE, 'from': from_jid }); - const attrs = await utils_stanza.parseMessage(stanza, converse_core_converse); + const attrs = await utils_stanza.parseMessage(stanza, core_converse); await chatbox.createMessage(attrs); - converse_core_api.trigger('message', { + core_api.trigger('message', { chatbox, stanza, attrs @@ -80763,16 +84776,16 @@ converse.plugins.add('converse-headlines', { function registerHeadlineHandler() { - converse_core_converse.connection.addHandler(message => onHeadlineMessage(message) || true, null, 'message'); + core_converse.connection.addHandler(message => onHeadlineMessage(message) || true, null, 'message'); } - converse_core_api.listen.on('connected', registerHeadlineHandler); - converse_core_api.listen.on('reconnected', registerHeadlineHandler); + core_api.listen.on('connected', registerHeadlineHandler); + core_api.listen.on('reconnected', registerHeadlineHandler); /************************ END Event Handlers ************************/ /************************ BEGIN API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * The "headlines" namespace, which is used for headline-channels * which are read-only channels containing messages of type @@ -80793,12 +84806,12 @@ converse.plugins.add('converse-headlines', { */ async get(jids, attrs = {}, create = false) { async function _get(jid) { - let model = await converse_core_api.chatboxes.get(jid); + let model = await core_api.chatboxes.get(jid); if (!model && create) { - model = await converse_core_api.chatboxes.create(jid, attrs, converse_core_converse.HeadlinesBox); + model = await core_api.chatboxes.create(jid, attrs, core_converse.HeadlinesBox); } else { - model = model && model.get('type') === converse_core_converse.HEADLINES_TYPE ? model : null; + model = model && model.get('type') === core_converse.HEADLINES_TYPE ? model : null; if (model && Object.keys(attrs).length) { model.save(attrs); @@ -80809,8 +84822,8 @@ converse.plugins.add('converse-headlines', { } if (jids === undefined) { - const chats = await converse_core_api.chatboxes.get(); - return chats.filter(c => c.get('type') === converse_core_converse.HEADLINES_TYPE); + const chats = await core_api.chatboxes.get(); + return chats.filter(c => c.get('type') === core_converse.HEADLINES_TYPE); } else if (typeof jids === 'string') { return _get(jids); } @@ -80824,7 +84837,7 @@ converse.plugins.add('converse-headlines', { } }); -// CONCATENATED MODULE: ./src/headless/converse-rsm.js +// CONCATENATED MODULE: ./src/headless/shared/rsm.js /** * @module converse-rsm * @copyright The Converse.js contributors @@ -80836,10 +84849,10 @@ converse.plugins.add('converse-headlines', { const { - Strophe: converse_rsm_Strophe, - $build: converse_rsm_$build + Strophe: rsm_Strophe, + $build: rsm_$build } = converse.env; -converse_rsm_Strophe.addNamespace('RSM', 'http://jabber.org/protocol/rsm'); +rsm_Strophe.addNamespace('RSM', 'http://jabber.org/protocol/rsm'); /** * @typedef { Object } RSMQueryParameters * [XEP-0059 RSM](https://xmpp.org/extensions/xep-0059.html) Attributes that can be used to filter query results @@ -80851,18 +84864,18 @@ converse_rsm_Strophe.addNamespace('RSM', 'http://jabber.org/protocol/rsm'); const RSM_QUERY_PARAMETERS = ['after', 'before', 'index', 'max']; -const converse_rsm_toNumber = v => Number(v); +const rsm_toNumber = v => Number(v); -const converse_rsm_toString = v => v.toString(); +const rsm_toString = v => v.toString(); const RSM_TYPES = { - 'after': converse_rsm_toString, - 'before': converse_rsm_toString, - 'count': converse_rsm_toNumber, - 'first': converse_rsm_toString, - 'index': converse_rsm_toNumber, - 'last': converse_rsm_toString, - 'max': converse_rsm_toNumber + 'after': rsm_toString, + 'before': rsm_toString, + 'count': rsm_toNumber, + 'first': rsm_toString, + 'index': rsm_toNumber, + 'last': rsm_toString, + 'max': rsm_toNumber }; const isUndefined = x => typeof x === 'undefined'; // This array contains both query attributes and response attributes @@ -80874,7 +84887,7 @@ const RSM_ATTRIBUTES = Object.keys(RSM_TYPES); * @class RSM */ -class converse_rsm_RSM { +class rsm_RSM { static getQueryParameters(options = {}) { return lodash_es_pick(options, RSM_QUERY_PARAMETERS); } @@ -80887,7 +84900,7 @@ class converse_rsm_RSM { const elem = set.getElementsByTagName(attr)[0]; if (!isUndefined(elem) && elem !== null) { - result[attr] = RSM_TYPES[attr](converse_rsm_Strophe.getText(elem)); + result[attr] = RSM_TYPES[attr](rsm_Strophe.getText(elem)); if (attr == 'first') { result.index = RSM_TYPES['index'](elem.getAttribute('index')); @@ -80905,8 +84918,8 @@ class converse_rsm_RSM { constructor(options = {}) { - this.query = converse_rsm_RSM.getQueryParameters(options); - this.result = options.xml ? converse_rsm_RSM.parseXMLResult(options.xml) : {}; + this.query = rsm_RSM.getQueryParameters(options); + this.result = options.xml ? rsm_RSM.parseXMLResult(options.xml) : {}; } /** * Returns a `<set>` XML element that confirms to XEP-0059 Result Set Management. @@ -80917,8 +84930,8 @@ class converse_rsm_RSM { toXML() { - const xml = converse_rsm_$build('set', { - xmlns: converse_rsm_Strophe.NS.RSM + const xml = rsm_$build('set', { + xmlns: rsm_Strophe.NS.RSM }); const reducer = (xml, a) => !isUndefined(this.query[a]) ? xml.c(a).t((this.query[a] || '').toString()).up() : xml; @@ -80932,7 +84945,7 @@ class converse_rsm_RSM { before, max }); - return new converse_rsm_RSM(options); + return new rsm_RSM(options); } previous(max, after) { @@ -80941,19 +84954,13 @@ class converse_rsm_RSM { before: this.result.first, max }); - return new converse_rsm_RSM(options); + return new rsm_RSM(options); } } -converse_core_converse.RSM_ATTRIBUTES = RSM_ATTRIBUTES; -converse_core_converse.RSM = converse_rsm_RSM; -// CONCATENATED MODULE: ./src/headless/converse-mam.js -function converse_mam_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function converse_mam_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { converse_mam_ownKeys(Object(source), true).forEach(function (key) { converse_mam_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { converse_mam_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function converse_mam_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - +core_converse.RSM_ATTRIBUTES = RSM_ATTRIBUTES; +core_converse.RSM = rsm_RSM; +// CONCATENATED MODULE: ./src/headless/plugins/mam.js /** * @module converse-mam * @description XEP-0313 Message Archive Management @@ -80966,16 +84973,15 @@ function converse_mam_defineProperty(obj, key, value) { if (key in obj) { Object - const { - Strophe: converse_mam_Strophe, - $iq: converse_mam_$iq, + Strophe: mam_Strophe, + $iq: mam_$iq, dayjs } = converse.env; const { - NS: converse_mam_NS -} = converse_mam_Strophe; -const converse_mam_u = converse.env.utils; + NS: mam_NS +} = mam_Strophe; +const mam_u = converse.env.utils; /** * The MUC utils object. Contains utility functions related to multi-user chat. * @mixin MAMEnabledChat @@ -80996,7 +85002,7 @@ const MAMEnabledChat = { // must have been received *after* connection and we instead must query // for earlier messages - if (most_recent_msg && !converse_core_api.settings.get('clear_messages_on_reconnection')) { + if (most_recent_msg && !core_api.settings.get('clear_messages_on_reconnection')) { const stanza_id = most_recent_msg.get("stanza_id ".concat(this.get('jid'))); if (stanza_id) { @@ -81016,11 +85022,11 @@ const MAMEnabledChat = { }, async handleMAMResult(result, query, options, page_direction) { - await converse_core_api.emojis.initialize(); + await core_api.emojis.initialize(); - const is_muc = this.get('type') === converse_core_converse.CHATROOMS_TYPE; + const is_muc = this.get('type') === core_converse.CHATROOMS_TYPE; - result.messages = result.messages.map(s => is_muc ? utils_stanza.parseMUCMessage(s, this, converse_core_converse) : utils_stanza.parseMessage(s, converse_core_converse)); + result.messages = result.messages.map(s => is_muc ? utils_stanza.parseMUCMessage(s, this, core_converse) : utils_stanza.parseMessage(s, core_converse)); /** * Synchronous event which allows listeners to first do some * work based on the MAM result before calling the handlers here. @@ -81032,14 +85038,14 @@ const MAMEnabledChat = { 'chatbox': this, 'messages': result.messages }; - await converse_core_api.trigger('MAMResult', data, { + await core_api.trigger('MAMResult', data, { 'synchronous': true }); result.messages.forEach(m => this.queueMessage(m)); if (result.error) { - const event_id = result.error.retry_event_id = converse_mam_u.getUniqueId(); - converse_core_api.listen.once(event_id, () => this.fetchArchivedMessages(options, page_direction)); + const event_id = result.error.retry_event_id = mam_u.getUniqueId(); + core_api.listen.once(event_id, () => this.fetchArchivedMessages(options, page_direction)); this.createMessageFromError(result.error); } }, @@ -81069,21 +85075,21 @@ const MAMEnabledChat = { return; } - const is_muc = this.get('type') === converse_core_converse.CHATROOMS_TYPE; + const is_muc = this.get('type') === core_converse.CHATROOMS_TYPE; - const mam_jid = is_muc ? this.get('jid') : converse_core_converse.bare_jid; + const mam_jid = is_muc ? this.get('jid') : core_converse.bare_jid; - if (!(await converse_core_api.disco.supports(converse_mam_NS.MAM, mam_jid))) { + if (!(await core_api.disco.supports(mam_NS.MAM, mam_jid))) { return; } - const max = converse_core_api.settings.get('archived_messages_page_size'); + const max = core_api.settings.get('archived_messages_page_size'); const query = Object.assign({ 'groupchat': is_muc, 'max': max, 'with': this.get('jid') }, options); - const result = await converse_core_api.archive.query(query); + const result = await core_api.archive.query(query); await this.handleMAMResult(result, query, options, page_direction); if (page_direction && result.rsm && !result.complete) { @@ -81108,16 +85114,16 @@ converse.plugins.add('converse-mam', { /* The initialize function gets called as soon as the plugin is * loaded by Converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ archived_messages_page_size: '50', message_archiving: undefined, // Supported values are 'always', 'never', 'roster' (https://xmpp.org/extensions/xep-0313.html#prefs) message_archiving_timeout: 20000 // Time (in milliseconds) to wait before aborting MAM request }); - Object.assign(converse_core_converse.ChatBox.prototype, MAMEnabledChat); + Object.assign(core_converse.ChatBox.prototype, MAMEnabledChat); - converse_core_converse.onMAMError = function (iq) { + core_converse.onMAMError = function (iq) { if (iq === null || iq === void 0 ? void 0 : iq.querySelectorAll('feature-not-implemented').length) { headless_log.warn("Message Archive Management (XEP-0313) not supported by ".concat(iq.getAttribute('from'))); } else { @@ -81126,7 +85132,7 @@ converse.plugins.add('converse-mam', { } }; - converse_core_converse.onMAMPreferences = function (iq, feature) { + core_converse.onMAMPreferences = function (iq, feature) { /* Handle returned IQ stanza containing Message Archive * Management (XEP-0313) preferences. * @@ -81137,29 +85143,29 @@ converse.plugins.add('converse-mam', { * Per JID preferences will be set in chat boxes, so it'll * probbaly be handled elsewhere in any case. */ - const preference = sizzle_default()("prefs[xmlns=\"".concat(converse_mam_NS.MAM, "\"]"), iq).pop(); + const preference = sizzle_default()("prefs[xmlns=\"".concat(mam_NS.MAM, "\"]"), iq).pop(); const default_pref = preference.getAttribute('default'); - if (default_pref !== converse_core_api.settings.get('message_archiving')) { - const stanza = converse_mam_$iq({ + if (default_pref !== core_api.settings.get('message_archiving')) { + const stanza = mam_$iq({ 'type': 'set' }).c('prefs', { - 'xmlns': converse_mam_NS.MAM, - 'default': converse_core_api.settings.get('message_archiving') + 'xmlns': mam_NS.MAM, + 'default': core_api.settings.get('message_archiving') }); Array.from(preference.children).forEach(child => stanza.cnode(child).up()); // XXX: Strictly speaking, the server should respond with the updated prefs // (see example 18: https://xmpp.org/extensions/xep-0313.html#config) // but Prosody doesn't do this, so we don't rely on it. - converse_core_api.sendIQ(stanza).then(() => feature.save({ + core_api.sendIQ(stanza).then(() => feature.save({ 'preferences': { - 'default': converse_core_api.settings.get('message_archiving') + 'default': core_api.settings.get('message_archiving') } - })).catch(converse_core_converse.onMAMError); + })).catch(core_converse.onMAMError); } else { feature.save({ 'preferences': { - 'default': converse_core_api.settings.get('message_archiving') + 'default': core_api.settings.get('message_archiving') } }); } @@ -81168,21 +85174,21 @@ converse.plugins.add('converse-mam', { function getMAMPrefsFromFeature(feature) { const prefs = feature.get('preferences') || {}; - if (feature.get('var') !== converse_mam_NS.MAM || converse_core_api.settings.get('message_archiving') === undefined) { + if (feature.get('var') !== mam_NS.MAM || core_api.settings.get('message_archiving') === undefined) { return; } - if (prefs['default'] !== converse_core_api.settings.get('message_archiving')) { - converse_core_api.sendIQ(converse_mam_$iq({ + if (prefs['default'] !== core_api.settings.get('message_archiving')) { + core_api.sendIQ(mam_$iq({ 'type': 'get' }).c('prefs', { - 'xmlns': converse_mam_NS.MAM - })).then(iq => converse_core_converse.onMAMPreferences(iq, feature)).catch(converse_core_converse.onMAMError); + 'xmlns': mam_NS.MAM + })).then(iq => core_converse.onMAMPreferences(iq, feature)).catch(core_converse.onMAMError); } } function preMUCJoinMAMFetch(room) { - if (!converse_core_api.settings.get('muc_show_logs_before_join') || !room.features.get('mam_enabled') || room.get('prejoin_mam_fetched')) { + if (!core_api.settings.get('muc_show_logs_before_join') || !room.features.get('mam_enabled') || room.get('prejoin_mam_fetched')) { return; } @@ -81194,30 +85200,30 @@ converse.plugins.add('converse-mam', { /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('addClientFeatures', () => converse_core_api.disco.own.features.add(converse_mam_NS.MAM)); - converse_core_api.listen.on('serviceDiscovered', getMAMPrefsFromFeature); - converse_core_api.listen.on('chatRoomViewInitialized', view => { - if (converse_core_api.settings.get('muc_show_logs_before_join')) { + core_api.listen.on('addClientFeatures', () => core_api.disco.own.features.add(mam_NS.MAM)); + core_api.listen.on('serviceDiscovered', getMAMPrefsFromFeature); + core_api.listen.on('chatRoomViewInitialized', view => { + if (core_api.settings.get('muc_show_logs_before_join')) { preMUCJoinMAMFetch(view.model); // If we want to show MAM logs before entering the MUC, we need // to be informed once it's clear that this MUC supports MAM. view.model.features.on('change:mam_enabled', () => preMUCJoinMAMFetch(view.model)); } }); - converse_core_api.listen.on('enteredNewRoom', room => room.features.get('mam_enabled') && room.fetchNewestMessages()); - converse_core_api.listen.on('chatReconnected', chat => { + core_api.listen.on('enteredNewRoom', room => room.features.get('mam_enabled') && room.fetchNewestMessages()); + core_api.listen.on('chatReconnected', chat => { // XXX: For MUCs, we listen to enteredNewRoom instead - if (chat.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { + if (chat.get('type') === core_converse.PRIVATE_CHAT_TYPE) { chat.fetchNewestMessages(); } }); - converse_core_api.listen.on('afterMessagesFetched', chat => { + core_api.listen.on('afterMessagesFetched', chat => { // XXX: We don't want to query MAM every time this is triggered // since it's not necessary when the chat is restored from cache. // (given that BOSH or SMACKS will ensure that you get messages // sent during the reload). // With MUCs we can listen for `enteredNewRoom`. - if (chat.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE && !converse_core_converse.connection.restored) { + if (chat.get('type') === core_converse.PRIVATE_CHAT_TYPE && !core_converse.connection.restored) { chat.fetchNewestMessages(); } }); @@ -81225,7 +85231,7 @@ converse.plugins.add('converse-mam', { /************************ BEGIN API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * The [XEP-0313](https://xmpp.org/extensions/xep-0313.html) Message Archive Management API * @@ -81412,7 +85418,7 @@ converse.plugins.add('converse-mam', { * */ async query(options) { - if (!converse_core_api.connection.connected()) { + if (!core_api.connection.connected()) { throw new Error('Can\'t call `api.archive.query` before having established an XMPP session'); } @@ -81428,30 +85434,30 @@ converse.plugins.add('converse-mam', { attrs.to = options['with']; } - const jid = attrs.to || converse_core_converse.bare_jid; - const supported = await converse_core_api.disco.supports(converse_mam_NS.MAM, jid); + const jid = attrs.to || core_converse.bare_jid; + const supported = await core_api.disco.supports(mam_NS.MAM, jid); if (!supported) { - headless_log.warn("Did not fetch MAM archive for ".concat(jid, " because it doesn't support ").concat(converse_mam_NS.MAM)); + headless_log.warn("Did not fetch MAM archive for ".concat(jid, " because it doesn't support ").concat(mam_NS.MAM)); return { 'messages': [] }; } - const queryid = converse_mam_u.getUniqueId(); - const stanza = converse_mam_$iq(attrs).c('query', { - 'xmlns': converse_mam_NS.MAM, + const queryid = mam_u.getUniqueId(); + const stanza = mam_$iq(attrs).c('query', { + 'xmlns': mam_NS.MAM, 'queryid': queryid }); if (options) { stanza.c('x', { - 'xmlns': converse_mam_NS.XFORM, + 'xmlns': mam_NS.XFORM, 'type': 'submit' }).c('field', { 'var': 'FORM_TYPE', 'type': 'hidden' - }).c('value').t(converse_mam_NS.MAM).up().up(); + }).c('value').t(mam_NS.MAM).up().up(); if (options['with'] && !options.groupchat) { stanza.c('field', { @@ -81473,7 +85479,7 @@ converse.plugins.add('converse-mam', { } }); stanza.up(); - const rsm = new converse_rsm_RSM(options); + const rsm = new rsm_RSM(options); if (Object.keys(rsm.query).length) { stanza.cnode(rsm.toXML()); @@ -81482,49 +85488,49 @@ converse.plugins.add('converse-mam', { const messages = []; - const message_handler = converse_core_converse.connection.addHandler(stanza => { - const result = sizzle_default()("message > result[xmlns=\"".concat(converse_mam_NS.MAM, "\"]"), stanza).pop(); + const message_handler = core_converse.connection.addHandler(stanza => { + const result = sizzle_default()("message > result[xmlns=\"".concat(mam_NS.MAM, "\"]"), stanza).pop(); if (result === undefined || result.getAttribute('queryid') !== queryid) { return true; } - const from = stanza.getAttribute('from') || converse_core_converse.bare_jid; + const from = stanza.getAttribute('from') || core_converse.bare_jid; if (options.groupchat) { if (from !== options['with']) { headless_log.warn("Ignoring alleged groupchat MAM message from ".concat(stanza.getAttribute('from'))); return true; } - } else if (from !== converse_core_converse.bare_jid) { + } else if (from !== core_converse.bare_jid) { headless_log.warn("Ignoring alleged MAM message from ".concat(stanza.getAttribute('from'))); return true; } messages.push(stanza); return true; - }, converse_mam_NS.MAM); + }, mam_NS.MAM); let error; - const iq_result = await converse_core_api.sendIQ(stanza, converse_core_api.settings.get('message_archiving_timeout'), false); + const iq_result = await core_api.sendIQ(stanza, core_api.settings.get('message_archiving_timeout'), false); if (iq_result === null) { const { __ - } = converse_core_converse; + } = core_converse; const err_msg = __("Timeout while trying to fetch archived messages."); headless_log.error(err_msg); - error = new converse_core_converse.TimeoutError(err_msg); + error = new core_converse.TimeoutError(err_msg); return { messages, error }; - } else if (converse_mam_u.isErrorStanza(iq_result)) { + } else if (mam_u.isErrorStanza(iq_result)) { const { __ - } = converse_core_converse; + } = core_converse; const err_msg = __('An error occurred while querying for archived messages.'); @@ -81537,17 +85543,17 @@ converse.plugins.add('converse-mam', { }; } - converse_core_converse.connection.deleteHandler(message_handler); + core_converse.connection.deleteHandler(message_handler); let rsm; - const fin = iq_result && sizzle_default()("fin[xmlns=\"".concat(converse_mam_NS.MAM, "\"]"), iq_result).pop(); + const fin = iq_result && sizzle_default()("fin[xmlns=\"".concat(mam_NS.MAM, "\"]"), iq_result).pop(); const complete = (fin === null || fin === void 0 ? void 0 : fin.getAttribute('complete')) === 'true'; - const set = sizzle_default()("set[xmlns=\"".concat(converse_mam_NS.RSM, "\"]"), fin).pop(); + const set = sizzle_default()("set[xmlns=\"".concat(mam_NS.RSM, "\"]"), fin).pop(); if (set) { - rsm = new converse_rsm_RSM(converse_mam_objectSpread(converse_mam_objectSpread({}, options), {}, { + rsm = new rsm_RSM({ ...options, 'xml': set - })); + }); } /** * @typedef { Object } MAMQueryResult @@ -81574,7 +85580,7 @@ converse.plugins.add('converse-mam', { } }); -// CONCATENATED MODULE: ./src/headless/converse-ping.js +// CONCATENATED MODULE: ./src/headless/plugins/ping.js /** * @module converse-ping * @description @@ -81586,18 +85592,18 @@ converse.plugins.add('converse-mam', { const { - Strophe: converse_ping_Strophe, - $iq: converse_ping_$iq + Strophe: ping_Strophe, + $iq: ping_$iq } = converse.env; -const converse_ping_u = converse.env.utils; -converse_ping_Strophe.addNamespace('PING', "urn:xmpp:ping"); +const ping_u = converse.env.utils; +ping_Strophe.addNamespace('PING', "urn:xmpp:ping"); converse.plugins.add('converse-ping', { initialize() { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ let lastStanzaDate; - converse_core_api.settings.extend({ + core_api.settings.extend({ ping_interval: 60 //in seconds }); @@ -81606,28 +85612,28 @@ converse.plugins.add('converse-ping', { lastStanzaDate = new Date(); const from = ping.getAttribute('from'); const id = ping.getAttribute('id'); - const iq = converse_ping_$iq({ + const iq = ping_$iq({ type: 'result', to: from, id: id }); - converse_core_converse.connection.sendIQ(iq); + core_converse.connection.sendIQ(iq); return true; } function registerPongHandler() { - if (converse_core_converse.connection.disco !== undefined) { - converse_core_api.disco.own.features.add(converse_ping_Strophe.NS.PING); + if (core_converse.connection.disco !== undefined) { + core_api.disco.own.features.add(ping_Strophe.NS.PING); } - return converse_core_converse.connection.addHandler(pong, converse_ping_Strophe.NS.PING, "iq", "get"); + return core_converse.connection.addHandler(pong, ping_Strophe.NS.PING, "iq", "get"); } function registerPingHandler() { - converse_core_converse.connection.addHandler(() => { - if (converse_core_api.settings.get('ping_interval') > 0) { + core_converse.connection.addHandler(() => { + if (core_api.settings.get('ping_interval') > 0) { // Handler on each stanza, saves the received date // in order to ping only when needed. lastStanzaDate = new Date(); @@ -81637,15 +85643,15 @@ converse.plugins.add('converse-ping', { } setTimeout(() => { - if (converse_core_api.settings.get('ping_interval') > 0) { + if (core_api.settings.get('ping_interval') > 0) { const now = new Date(); if (!lastStanzaDate) { lastStanzaDate = now; } - if ((now - lastStanzaDate) / 1000 > converse_core_api.settings.get('ping_interval')) { - return converse_core_api.ping(); + if ((now - lastStanzaDate) / 1000 > core_api.settings.get('ping_interval')) { + return core_api.ping(); } return true; @@ -81653,27 +85659,27 @@ converse.plugins.add('converse-ping', { }, 1000); /************************ BEGIN Event Handlers ************************/ - const onConnected = function onConnected() { + const onConnected = function () { // Wrapper so that we can spy on registerPingHandler in tests registerPongHandler(); registerPingHandler(); }; - converse_core_api.listen.on('connected', onConnected); - converse_core_api.listen.on('reconnected', onConnected); + core_api.listen.on('connected', onConnected); + core_api.listen.on('reconnected', onConnected); function onWindowStateChanged(data) { - if (data.state === 'visible' && converse_core_api.connection.connected()) { - converse_core_api.ping(null, 5000); + if (data.state === 'visible' && core_api.connection.connected()) { + core_api.ping(null, 5000); } } - converse_core_api.listen.on('windowStateChanged', onWindowStateChanged); + core_api.listen.on('windowStateChanged', onWindowStateChanged); /************************ END Event Handlers ************************/ /************************ BEGIN API ************************/ - Object.assign(converse_core_api, { + Object.assign(core_api, { /** * Pings the service represented by the passed in JID by sending an IQ stanza. * @private @@ -81688,25 +85694,25 @@ converse.plugins.add('converse-ping', { // // const feature = _converse.disco_entities[_converse.domain].features.findWhere({'var': Strophe.NS.PING}); lastStanzaDate = new Date(); - jid = jid || converse_ping_Strophe.getDomainFromJid(converse_core_converse.bare_jid); + jid = jid || ping_Strophe.getDomainFromJid(core_converse.bare_jid); - if (converse_core_converse.connection) { - const iq = converse_ping_$iq({ + if (core_converse.connection) { + const iq = ping_$iq({ 'type': 'get', 'to': jid, - 'id': converse_ping_u.getUniqueId('ping') + 'id': ping_u.getUniqueId('ping') }).c('ping', { - 'xmlns': converse_ping_Strophe.NS.PING + 'xmlns': ping_Strophe.NS.PING }); - const result = await converse_core_api.sendIQ(iq, timeout || 10000, false); + const result = await core_api.sendIQ(iq, timeout || 10000, false); if (result === null) { headless_log.warn("Timeout while pinging ".concat(jid)); - if (jid === converse_ping_Strophe.getDomainFromJid(converse_core_converse.bare_jid)) { - converse_core_api.connection.reconnect(); + if (jid === ping_Strophe.getDomainFromJid(core_converse.bare_jid)) { + core_api.connection.reconnect(); } - } else if (converse_ping_u.isErrorStanza(result)) { + } else if (ping_u.isErrorStanza(result)) { headless_log.error("Error while pinging ".concat(jid)); headless_log.error(result); } @@ -81721,7 +85727,7 @@ converse.plugins.add('converse-ping', { } }); -// CONCATENATED MODULE: ./src/headless/converse-pubsub.js +// CONCATENATED MODULE: ./src/headless/plugins/pubsub.js /** * @module converse-pubsub * @copyright The Converse.js contributors @@ -81731,17 +85737,17 @@ converse.plugins.add('converse-ping', { const { - Strophe: converse_pubsub_Strophe, - $iq: converse_pubsub_$iq + Strophe: pubsub_Strophe, + $iq: pubsub_$iq } = converse.env; -converse_pubsub_Strophe.addNamespace('PUBSUB_ERROR', converse_pubsub_Strophe.NS.PUBSUB + "#errors"); +pubsub_Strophe.addNamespace('PUBSUB_ERROR', pubsub_Strophe.NS.PUBSUB + "#errors"); converse.plugins.add('converse-pubsub', { dependencies: ["converse-disco"], initialize() { /************************ BEGIN API ************************/ // We extend the default converse.js API to add methods specific to MUC groupchats. - Object.assign(converse_core_converse.api, { + Object.assign(core_converse.api, { /** * The "pubsub" namespace groups methods relevant to PubSub * @@ -81764,27 +85770,27 @@ converse.plugins.add('converse-pubsub', { * the publish options precondication cannot be met. */ async 'publish'(jid, node, item, options, strict_options = true) { - const stanza = converse_pubsub_$iq({ - 'from': converse_core_converse.bare_jid, + const stanza = pubsub_$iq({ + 'from': core_converse.bare_jid, 'type': 'set', 'to': jid }).c('pubsub', { - 'xmlns': converse_pubsub_Strophe.NS.PUBSUB + 'xmlns': pubsub_Strophe.NS.PUBSUB }).c('publish', { 'node': node }).cnode(item.tree()).up().up(); if (options) { - jid = jid || converse_core_converse.bare_jid; + jid = jid || core_converse.bare_jid; - if (await converse_core_api.disco.supports(converse_pubsub_Strophe.NS.PUBSUB + '#publish-options', jid)) { + if (await core_api.disco.supports(pubsub_Strophe.NS.PUBSUB + '#publish-options', jid)) { stanza.c('publish-options').c('x', { - 'xmlns': converse_pubsub_Strophe.NS.XFORM, + 'xmlns': pubsub_Strophe.NS.XFORM, 'type': 'submit' }).c('field', { 'var': 'FORM_TYPE', 'type': 'hidden' - }).c('value').t("".concat(converse_pubsub_Strophe.NS.PUBSUB, "#publish-options")).up().up(); + }).c('value').t("".concat(pubsub_Strophe.NS.PUBSUB, "#publish-options")).up().up(); Object.keys(options).forEach(k => stanza.c('field', { 'var': k }).c('value').t(options[k]).up().up()); @@ -81794,15 +85800,15 @@ converse.plugins.add('converse-pubsub', { } try { - await converse_core_api.sendIQ(stanza); + await core_api.sendIQ(stanza); } catch (iq) { - if (iq instanceof Element && strict_options && iq.querySelector("precondition-not-met[xmlns=\"".concat(converse_pubsub_Strophe.NS.PUBSUB_ERROR, "\"]"))) { + if (iq instanceof Element && strict_options && iq.querySelector("precondition-not-met[xmlns=\"".concat(pubsub_Strophe.NS.PUBSUB_ERROR, "\"]"))) { // The publish-options precondition couldn't be // met. We re-publish but without publish-options. const el = stanza.nodeTree; el.querySelector('publish-options').outerHTML = ''; headless_log.warn("PubSub: Republishing without publish options. ".concat(el.outerHTML)); - await converse_core_api.sendIQ(el); + await core_api.sendIQ(el); } else { throw iq; } @@ -81895,7 +85901,7 @@ function isNaN_isNaN(value) { /* harmony default export */ var lodash_es_isNaN = (isNaN_isNaN); -// CONCATENATED MODULE: ./src/headless/converse-status.js +// CONCATENATED MODULE: ./src/headless/plugins/status.js /** * @module converse-status * @copyright The Converse.js contributors @@ -81905,13 +85911,13 @@ function isNaN_isNaN(value) { const { - Strophe: converse_status_Strophe, - $build: converse_status_$build, - $pres: converse_status_$pres + Strophe: status_Strophe, + $build: status_$build, + $pres } = converse.env; converse.plugins.add('converse-status', { initialize() { - converse_core_api.settings.extend({ + core_api.settings.extend({ auto_away: 0, // Seconds after which user status is set to 'away' auto_xa: 0, @@ -81921,11 +85927,11 @@ converse.plugins.add('converse-status', { default_state: 'online', priority: 0 }); - converse_core_api.promises.add(['statusInitialized']); - converse_core_converse.XMPPStatus = model_Model.extend({ + core_api.promises.add(['statusInitialized']); + core_converse.XMPPStatus = model_Model.extend({ defaults() { return { - "status": converse_core_api.settings.get("default_state") + "status": core_api.settings.get("default_state") }; }, @@ -81936,13 +85942,13 @@ converse.plugins.add('converse-status', { } if ('status' in item.changed || 'status_message' in item.changed) { - converse_core_api.user.presence.send(this.get('status'), null, this.get('status_message')); + core_api.user.presence.send(this.get('status'), null, this.get('status_message')); } }); }, getNickname() { - return converse_core_converse.nickname; + return core_converse.nickname; }, getFullname() { @@ -81951,7 +85957,7 @@ converse.plugins.add('converse-status', { }, constructPresence(type, to = null, status_message) { - type = typeof type === 'string' ? type : this.get('status') || converse_core_api.settings.get("default_state"); + type = typeof type === 'string' ? type : this.get('status') || core_api.settings.get("default_state"); status_message = typeof status_message === 'string' ? status_message : this.get('status_message'); let presence; const attrs = { @@ -81960,28 +85966,28 @@ converse.plugins.add('converse-status', { if (type === 'unavailable' || type === 'probe' || type === 'error' || type === 'unsubscribe' || type === 'unsubscribed' || type === 'subscribe' || type === 'subscribed') { attrs['type'] = type; - presence = converse_status_$pres(attrs); + presence = $pres(attrs); } else if (type === 'offline') { attrs['type'] = 'unavailable'; - presence = converse_status_$pres(attrs); + presence = $pres(attrs); } else if (type === 'online') { - presence = converse_status_$pres(attrs); + presence = $pres(attrs); } else { - presence = converse_status_$pres(attrs).c('show').t(type).up(); + presence = $pres(attrs).c('show').t(type).up(); } if (status_message) { presence.c('status').t(status_message).up(); } - const priority = converse_core_api.settings.get("priority"); + const priority = core_api.settings.get("priority"); presence.c('priority').t(lodash_es_isNaN(Number(priority)) ? 0 : priority).up(); - if (converse_core_converse.idle) { + if (core_converse.idle) { const idle_since = new Date(); - idle_since.setSeconds(idle_since.getSeconds() - converse_core_converse.idle_seconds); + idle_since.setSeconds(idle_since.getSeconds() - core_converse.idle_seconds); presence.c('idle', { - xmlns: converse_status_Strophe.NS.IDLE, + xmlns: status_Strophe.NS.IDLE, since: idle_since.toISOString() }); } @@ -81998,114 +86004,114 @@ converse.plugins.add('converse-status', { * @param { String } stat - The user's chat status */ - converse_core_converse.sendCSI = function (stat) { - converse_core_api.send(converse_status_$build(stat, { - xmlns: converse_status_Strophe.NS.CSI + core_converse.sendCSI = function (stat) { + core_api.send(status_$build(stat, { + xmlns: status_Strophe.NS.CSI })); - converse_core_converse.inactive = stat === converse_core_converse.INACTIVE ? true : false; + core_converse.inactive = stat === core_converse.INACTIVE ? true : false; }; - converse_core_converse.onUserActivity = function () { + core_converse.onUserActivity = function () { var _converse$connection; /* Resets counters and flags relating to CSI and auto_away/auto_xa */ - if (converse_core_converse.idle_seconds > 0) { - converse_core_converse.idle_seconds = 0; + if (core_converse.idle_seconds > 0) { + core_converse.idle_seconds = 0; } - if (!((_converse$connection = converse_core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.authenticated)) { + if (!((_converse$connection = core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.authenticated)) { // We can't send out any stanzas when there's no authenticated connection. // This can happen when the connection reconnects. return; } - if (converse_core_converse.inactive) { - converse_core_converse.sendCSI(converse_core_converse.ACTIVE); + if (core_converse.inactive) { + core_converse.sendCSI(core_converse.ACTIVE); } - if (converse_core_converse.idle) { - converse_core_converse.idle = false; - converse_core_api.user.presence.send(); + if (core_converse.idle) { + core_converse.idle = false; + core_api.user.presence.send(); } - if (converse_core_converse.auto_changed_status === true) { - converse_core_converse.auto_changed_status = false; // XXX: we should really remember the original state here, and + if (core_converse.auto_changed_status === true) { + core_converse.auto_changed_status = false; // XXX: we should really remember the original state here, and // then set it back to that... - converse_core_converse.xmppstatus.set('status', converse_core_api.settings.get("default_state")); + core_converse.xmppstatus.set('status', core_api.settings.get("default_state")); } }; - converse_core_converse.onEverySecond = function () { + core_converse.onEverySecond = function () { var _converse$connection2; /* An interval handler running every second. * Used for CSI and the auto_away and auto_xa features. */ - if (!((_converse$connection2 = converse_core_converse.connection) === null || _converse$connection2 === void 0 ? void 0 : _converse$connection2.authenticated)) { + if (!((_converse$connection2 = core_converse.connection) === null || _converse$connection2 === void 0 ? void 0 : _converse$connection2.authenticated)) { // We can't send out any stanzas when there's no authenticated connection. // This can happen when the connection reconnects. return; } - const stat = converse_core_converse.xmppstatus.get('status'); + const stat = core_converse.xmppstatus.get('status'); - converse_core_converse.idle_seconds++; + core_converse.idle_seconds++; - if (converse_core_api.settings.get("csi_waiting_time") > 0 && converse_core_converse.idle_seconds > converse_core_api.settings.get("csi_waiting_time") && !converse_core_converse.inactive) { - converse_core_converse.sendCSI(converse_core_converse.INACTIVE); + if (core_api.settings.get("csi_waiting_time") > 0 && core_converse.idle_seconds > core_api.settings.get("csi_waiting_time") && !core_converse.inactive) { + core_converse.sendCSI(core_converse.INACTIVE); } - if (converse_core_api.settings.get("idle_presence_timeout") > 0 && converse_core_converse.idle_seconds > converse_core_api.settings.get("idle_presence_timeout") && !converse_core_converse.idle) { - converse_core_converse.idle = true; - converse_core_api.user.presence.send(); + if (core_api.settings.get("idle_presence_timeout") > 0 && core_converse.idle_seconds > core_api.settings.get("idle_presence_timeout") && !core_converse.idle) { + core_converse.idle = true; + core_api.user.presence.send(); } - if (converse_core_api.settings.get("auto_away") > 0 && converse_core_converse.idle_seconds > converse_core_api.settings.get("auto_away") && stat !== 'away' && stat !== 'xa' && stat !== 'dnd') { - converse_core_converse.auto_changed_status = true; + if (core_api.settings.get("auto_away") > 0 && core_converse.idle_seconds > core_api.settings.get("auto_away") && stat !== 'away' && stat !== 'xa' && stat !== 'dnd') { + core_converse.auto_changed_status = true; - converse_core_converse.xmppstatus.set('status', 'away'); - } else if (converse_core_api.settings.get("auto_xa") > 0 && converse_core_converse.idle_seconds > converse_core_api.settings.get("auto_xa") && stat !== 'xa' && stat !== 'dnd') { - converse_core_converse.auto_changed_status = true; + core_converse.xmppstatus.set('status', 'away'); + } else if (core_api.settings.get("auto_xa") > 0 && core_converse.idle_seconds > core_api.settings.get("auto_xa") && stat !== 'xa' && stat !== 'dnd') { + core_converse.auto_changed_status = true; - converse_core_converse.xmppstatus.set('status', 'xa'); + core_converse.xmppstatus.set('status', 'xa'); } }; - converse_core_converse.registerIntervalHandler = function () { + core_converse.registerIntervalHandler = function () { /* Set an interval of one second and register a handler for it. * Required for the auto_away, auto_xa and csi_waiting_time features. */ - if (converse_core_api.settings.get("auto_away") < 1 && converse_core_api.settings.get("auto_xa") < 1 && converse_core_api.settings.get("csi_waiting_time") < 1 && converse_core_api.settings.get("idle_presence_timeout") < 1) { + if (core_api.settings.get("auto_away") < 1 && core_api.settings.get("auto_xa") < 1 && core_api.settings.get("csi_waiting_time") < 1 && core_api.settings.get("idle_presence_timeout") < 1) { // Waiting time of less then one second means features aren't used. return; } - converse_core_converse.idle_seconds = 0; - converse_core_converse.auto_changed_status = false; // Was the user's status changed by Converse? + core_converse.idle_seconds = 0; + core_converse.auto_changed_status = false; // Was the user's status changed by Converse? const { unloadevent - } = converse_core_converse; - window.addEventListener('click', converse_core_converse.onUserActivity); - window.addEventListener('focus', converse_core_converse.onUserActivity); - window.addEventListener('keypress', converse_core_converse.onUserActivity); - window.addEventListener('mousemove', converse_core_converse.onUserActivity); - window.addEventListener(unloadevent, converse_core_converse.onUserActivity, { + } = core_converse; + window.addEventListener('click', core_converse.onUserActivity); + window.addEventListener('focus', core_converse.onUserActivity); + window.addEventListener('keypress', core_converse.onUserActivity); + window.addEventListener('mousemove', core_converse.onUserActivity); + window.addEventListener(unloadevent, core_converse.onUserActivity, { 'once': true, 'passive': true }); window.addEventListener(unloadevent, () => { var _converse$session; - return (_converse$session = converse_core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.save('active', false); + return (_converse$session = core_converse.session) === null || _converse$session === void 0 ? void 0 : _converse$session.save('active', false); }); - converse_core_converse.everySecondTrigger = window.setInterval(converse_core_converse.onEverySecond, 1000); + core_converse.everySecondTrigger = window.setInterval(core_converse.onEverySecond, 1000); }; - converse_core_api.listen.on('presencesInitialized', reconnecting => { + core_api.listen.on('presencesInitialized', reconnecting => { if (!reconnecting) { - converse_core_converse.registerIntervalHandler(); + core_converse.registerIntervalHandler(); } }); @@ -82116,24 +86122,24 @@ converse.plugins.add('converse-status', { * @example _converse.api.listen.on('statusInitialized', status => { ... }); * @example _converse.api.waitUntil('statusInitialized').then(() => { ... }); */ - converse_core_api.trigger('statusInitialized', reconnecting); + core_api.trigger('statusInitialized', reconnecting); } function initStatus(reconnecting) { // If there's no xmppstatus obj, then we were never connected to // begin with, so we set reconnecting to false. - reconnecting = converse_core_converse.xmppstatus === undefined ? false : reconnecting; + reconnecting = core_converse.xmppstatus === undefined ? false : reconnecting; if (reconnecting) { onStatusInitialized(reconnecting); } else { - const id = "converse.xmppstatus-".concat(converse_core_converse.bare_jid); - converse_core_converse.xmppstatus = new converse_core_converse.XMPPStatus({ + const id = "converse.xmppstatus-".concat(core_converse.bare_jid); + core_converse.xmppstatus = new core_converse.XMPPStatus({ 'id': id }); - converse_core_converse.xmppstatus.browserStorage = converse_core_converse.createStore(id, "session"); + core_converse.xmppstatus.browserStorage = core_converse.createStore(id, "session"); - converse_core_converse.xmppstatus.fetch({ + core_converse.xmppstatus.fetch({ 'success': () => onStatusInitialized(reconnecting), 'error': () => onStatusInitialized(reconnecting), 'silent': true @@ -82143,21 +86149,21 @@ converse.plugins.add('converse-status', { /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.shouldClearCache() && converse_core_converse.xmppstatus) { - converse_core_converse.xmppstatus.destroy(); + core_api.listen.on('clearSession', () => { + if (core_converse.shouldClearCache() && core_converse.xmppstatus) { + core_converse.xmppstatus.destroy(); - delete converse_core_converse.xmppstatus; - converse_core_api.promises.add(['statusInitialized']); + delete core_converse.xmppstatus; + core_api.promises.add(['statusInitialized']); } }); - converse_core_api.listen.on('connected', () => initStatus(false)); - converse_core_api.listen.on('reconnected', () => initStatus(true)); + core_api.listen.on('connected', () => initStatus(false)); + core_api.listen.on('reconnected', () => initStatus(true)); /************************ END Event Handlers ************************/ /************************ BEGIN API ************************/ - Object.assign(converse_core_converse.api.user, { + Object.assign(core_converse.api.user, { /** * @namespace _converse.api.user.presence * @memberOf _converse.api.user @@ -82171,8 +86177,8 @@ converse.plugins.add('converse-status', { * @param { String } [status] - An optional status message */ async send(type, to, status) { - await converse_core_api.waitUntil('statusInitialized'); - converse_core_api.send(converse_core_converse.xmppstatus.constructPresence(type, to, status)); + await core_api.waitUntil('statusInitialized'); + core_api.send(core_converse.xmppstatus.constructPresence(type, to, status)); } }, @@ -82190,8 +86196,8 @@ converse.plugins.add('converse-status', { * @example _converse.api.user.status.get(); */ async get() { - await converse_core_api.waitUntil('statusInitialized'); - return converse_core_converse.xmppstatus.get('status'); + await core_api.waitUntil('statusInitialized'); + return core_converse.xmppstatus.get('status'); }, /** @@ -82210,7 +86216,7 @@ converse.plugins.add('converse-status', { 'status': value }; - if (!Object.keys(converse_core_converse.STATUS_WEIGHTS).includes(value)) { + if (!Object.keys(core_converse.STATUS_WEIGHTS).includes(value)) { throw new Error('Invalid availability value. See https://xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2.1'); } @@ -82218,9 +86224,9 @@ converse.plugins.add('converse-status', { data.status_message = message; } - await converse_core_api.waitUntil('statusInitialized'); + await core_api.waitUntil('statusInitialized'); - converse_core_converse.xmppstatus.save(data); + core_converse.xmppstatus.save(data); }, /** @@ -82237,8 +86243,8 @@ converse.plugins.add('converse-status', { * @example const message = _converse.api.user.status.message.get() */ async get() { - await converse_core_api.waitUntil('statusInitialized'); - return converse_core_converse.xmppstatus.get('status_message'); + await core_api.waitUntil('statusInitialized'); + return core_converse.xmppstatus.get('status_message'); }, /** @@ -82248,9 +86254,9 @@ converse.plugins.add('converse-status', { * @example _converse.api.user.status.message.set('In a meeting'); */ async set(status) { - await converse_core_api.waitUntil('statusInitialized'); + await core_api.waitUntil('statusInitialized'); - converse_core_converse.xmppstatus.save({ + core_converse.xmppstatus.save({ status_message: status }); } @@ -82345,7 +86351,7 @@ function sum(array) { /* harmony default export */ var lodash_es_sum = (sum); -// CONCATENATED MODULE: ./src/headless/converse-roster.js +// CONCATENATED MODULE: ./src/headless/plugins/roster.js /** * @module converse-roster * @copyright The Converse.js contributors @@ -82358,13 +86364,13 @@ function sum(array) { const { - Strophe: converse_roster_Strophe, - $iq: converse_roster_$iq, - $pres: converse_roster_$pres, - dayjs: converse_roster_dayjs, - sizzle: converse_roster_sizzle + Strophe: roster_Strophe, + $iq: roster_$iq, + $pres: roster_$pres, + dayjs: roster_dayjs, + sizzle: roster_sizzle } = converse.env; -const converse_roster_u = converse.env.utils; +const roster_u = converse.env.utils; converse.plugins.add('converse-roster', { dependencies: ['converse-status'], @@ -82374,30 +86380,30 @@ converse.plugins.add('converse-roster', { */ const { __ - } = converse_core_converse; - converse_core_api.settings.extend({ + } = core_converse; + core_api.settings.extend({ 'allow_contact_requests': true, 'auto_subscribe': false, 'synchronize_availability': true }); - converse_core_api.promises.add(['cachedRoster', 'roster', 'rosterContactsFetched', 'rosterGroupsFetched', 'rosterInitialized']); - converse_core_converse.HEADER_CURRENT_CONTACTS = __('My contacts'); - converse_core_converse.HEADER_PENDING_CONTACTS = __('Pending contacts'); - converse_core_converse.HEADER_REQUESTING_CONTACTS = __('Contact requests'); - converse_core_converse.HEADER_UNGROUPED = __('Ungrouped'); - converse_core_converse.HEADER_UNREAD = __('New messages'); + core_api.promises.add(['cachedRoster', 'roster', 'rosterContactsFetched', 'rosterGroupsFetched', 'rosterInitialized']); + core_converse.HEADER_CURRENT_CONTACTS = __('My contacts'); + core_converse.HEADER_PENDING_CONTACTS = __('Pending contacts'); + core_converse.HEADER_REQUESTING_CONTACTS = __('Contact requests'); + core_converse.HEADER_UNGROUPED = __('Ungrouped'); + core_converse.HEADER_UNREAD = __('New messages'); const HEADER_WEIGHTS = {}; - HEADER_WEIGHTS[converse_core_converse.HEADER_UNREAD] = 0; - HEADER_WEIGHTS[converse_core_converse.HEADER_REQUESTING_CONTACTS] = 1; - HEADER_WEIGHTS[converse_core_converse.HEADER_CURRENT_CONTACTS] = 2; - HEADER_WEIGHTS[converse_core_converse.HEADER_UNGROUPED] = 3; - HEADER_WEIGHTS[converse_core_converse.HEADER_PENDING_CONTACTS] = 4; + HEADER_WEIGHTS[core_converse.HEADER_UNREAD] = 0; + HEADER_WEIGHTS[core_converse.HEADER_REQUESTING_CONTACTS] = 1; + HEADER_WEIGHTS[core_converse.HEADER_CURRENT_CONTACTS] = 2; + HEADER_WEIGHTS[core_converse.HEADER_UNGROUPED] = 3; + HEADER_WEIGHTS[core_converse.HEADER_PENDING_CONTACTS] = 4; - converse_core_converse.registerPresenceHandler = function () { - converse_core_converse.unregisterPresenceHandler(); + core_converse.registerPresenceHandler = function () { + core_converse.unregisterPresenceHandler(); - converse_core_converse.presence_ref = converse_core_converse.connection.addHandler(presence => { - converse_core_converse.roster.presenceHandler(presence); + core_converse.presence_ref = core_converse.connection.addHandler(presence => { + core_converse.roster.presenceHandler(presence); return true; }, null, 'presence', null); @@ -82412,8 +86418,8 @@ converse.plugins.add('converse-roster', { */ - converse_core_converse.rejectPresenceSubscription = function (jid, message) { - const pres = converse_roster_$pres({ + core_converse.rejectPresenceSubscription = function (jid, message) { + const pres = roster_$pres({ to: jid, type: "unsubscribed" }); @@ -82422,12 +86428,12 @@ converse.plugins.add('converse-roster', { pres.c("status").t(message); } - converse_core_api.send(pres); + core_api.send(pres); }; - converse_core_converse.sendInitialPresence = function () { - if (converse_core_converse.send_initial_presence) { - converse_core_api.user.presence.send(); + core_converse.sendInitialPresence = function () { + if (core_converse.send_initial_presence) { + core_api.user.presence.send(); } }; /** @@ -82441,13 +86447,13 @@ converse.plugins.add('converse-roster', { */ - converse_core_converse.populateRoster = async function (ignore_cache = false) { + core_converse.populateRoster = async function (ignore_cache = false) { if (ignore_cache) { - converse_core_converse.send_initial_presence = true; + core_converse.send_initial_presence = true; } try { - await converse_core_converse.rostergroups.fetchRosterGroups(); + await core_converse.rostergroups.fetchRosterGroups(); /** * Triggered once roster groups have been fetched. Used by the * `converse-rosterview.js` plugin to know when it can start alphabetically @@ -82457,23 +86463,23 @@ converse.plugins.add('converse-roster', { * @example _converse.api.waitUntil('rosterGroupsFetched').then(() => { ... }); */ - converse_core_api.trigger('rosterGroupsFetched'); - await converse_core_converse.roster.fetchRosterContacts(); - converse_core_api.trigger('rosterContactsFetched'); + core_api.trigger('rosterGroupsFetched'); + await core_converse.roster.fetchRosterContacts(); + core_api.trigger('rosterContactsFetched'); } catch (reason) { headless_log.error(reason); } finally { - converse_core_converse.sendInitialPresence(); + core_converse.sendInitialPresence(); } }; const Resource = model_Model.extend({ 'idAttribute': 'name' }); - const Resources = collection_Collection.extend({ + const Resources = Collection.extend({ 'model': Resource }); - converse_core_converse.Presence = model_Model.extend({ + core_converse.Presence = model_Model.extend({ defaults: { 'show': 'offline' }, @@ -82481,7 +86487,7 @@ converse.plugins.add('converse-roster', { initialize() { this.resources = new Resources(); const id = "converse.identities-".concat(this.get('jid')); - this.resources.browserStorage = converse_core_converse.createStore(id, "session"); + this.resources.browserStorage = core_converse.createStore(id, "session"); this.listenTo(this.resources, 'update', this.onResourcesChanged); this.listenTo(this.resources, 'change', this.onResourcesChanged); }, @@ -82517,15 +86523,15 @@ converse.plugins.add('converse-roster', { */ addResource(presence) { const jid = presence.getAttribute('from'), - name = converse_roster_Strophe.getResourceFromJid(jid), - delay = converse_roster_sizzle("delay[xmlns=\"".concat(converse_roster_Strophe.NS.DELAY, "\"]"), presence).pop(), + name = roster_Strophe.getResourceFromJid(jid), + delay = roster_sizzle("delay[xmlns=\"".concat(roster_Strophe.NS.DELAY, "\"]"), presence).pop(), priority = lodash_es_propertyOf(presence.querySelector('priority'))('textContent') || 0, resource = this.resources.get(name), settings = { 'name': name, 'priority': lodash_es_isNaN(parseInt(priority, 10)) ? 0 : parseInt(priority, 10), 'show': lodash_es_propertyOf(presence.querySelector('show'))('textContent') || 'online', - 'timestamp': delay ? converse_roster_dayjs(delay.getAttribute('stamp')).toISOString() : new Date().toISOString() + 'timestamp': delay ? roster_dayjs(delay.getAttribute('stamp')).toISOString() : new Date().toISOString() }; if (resource) { @@ -82551,8 +86557,8 @@ converse.plugins.add('converse-roster', { } }); - converse_core_converse.Presences = collection_Collection.extend({ - model: converse_core_converse.Presence + core_converse.Presences = Collection.extend({ + model: core_converse.Presence }); /** * @class @@ -82560,28 +86566,28 @@ converse.plugins.add('converse-roster', { * @memberOf _converse */ - converse_core_converse.RosterContact = model_Model.extend({ + core_converse.RosterContact = model_Model.extend({ defaults: { 'chat_state': undefined, - 'image': converse_core_converse.DEFAULT_IMAGE, - 'image_type': converse_core_converse.DEFAULT_IMAGE_TYPE, + 'image': core_converse.DEFAULT_IMAGE, + 'image_type': core_converse.DEFAULT_IMAGE_TYPE, 'num_unread': 0, 'status': undefined }, async initialize(attributes) { - this.initialized = converse_roster_u.getResolveablePromise(); + this.initialized = roster_u.getResolveablePromise(); this.setPresence(); const { jid } = attributes; - const bare_jid = converse_roster_Strophe.getBareJidFromJid(jid).toLowerCase(); + const bare_jid = roster_Strophe.getBareJidFromJid(jid).toLowerCase(); attributes.jid = bare_jid; this.set(Object.assign({ 'groups': [], 'id': bare_jid, 'jid': bare_jid, - 'user_id': converse_roster_Strophe.getNodeFromJid(jid) + 'user_id': roster_Strophe.getNodeFromJid(jid) }, attributes)); /** * When a contact's presence status has changed. @@ -82591,7 +86597,7 @@ converse.plugins.add('converse-roster', { * @example _converse.api.listen.on('contactPresenceChanged', contact => { ... }); */ - this.listenTo(this.presence, 'change:show', () => converse_core_api.trigger('contactPresenceChanged', this)); + this.listenTo(this.presence, 'change:show', () => core_api.trigger('contactPresenceChanged', this)); this.listenTo(this.presence, 'change:show', () => this.trigger('presenceChanged')); /** * Synchronous event which provides a hook for further initializing a RosterContact @@ -82599,7 +86605,7 @@ converse.plugins.add('converse-roster', { * @param { _converse.RosterContact } contact */ - await converse_core_api.trigger('rosterContactInitialized', this, { + await core_api.trigger('rosterContactInitialized', this, { 'Synchronous': true }); this.initialized.resolve(); @@ -82607,16 +86613,16 @@ converse.plugins.add('converse-roster', { setPresence() { const jid = this.get('jid'); - this.presence = converse_core_converse.presences.findWhere({ + this.presence = core_converse.presences.findWhere({ 'jid': jid - }) || converse_core_converse.presences.create({ + }) || core_converse.presences.create({ 'jid': jid }); }, openChat() { const attrs = this.attributes; - converse_core_api.chats.open(attrs.jid, attrs, true); + core_api.chats.open(attrs.jid, attrs, true); }, /** @@ -82658,7 +86664,7 @@ converse.plugins.add('converse-roster', { * reason for the subscription request. */ subscribe(message) { - const pres = converse_roster_$pres({ + const pres = roster_$pres({ to: this.get('jid'), type: "subscribe" }); @@ -82667,15 +86673,15 @@ converse.plugins.add('converse-roster', { pres.c("status").t(message).up(); } - const nick = converse_core_converse.xmppstatus.getNickname() || converse_core_converse.xmppstatus.getFullname(); + const nick = core_converse.xmppstatus.getNickname() || core_converse.xmppstatus.getFullname(); if (nick) { pres.c('nick', { - 'xmlns': converse_roster_Strophe.NS.NICK + 'xmlns': roster_Strophe.NS.NICK }).t(nick).up(); } - converse_core_api.send(pres); + core_api.send(pres); this.save('ask', "subscribe"); // ask === 'subscribe' Means we have asked to subscribe to them. return this; @@ -82690,7 +86696,7 @@ converse.plugins.add('converse-roster', { * @method _converse.RosterContacts#ackSubscribe */ ackSubscribe() { - converse_core_api.send(converse_roster_$pres({ + core_api.send(roster_$pres({ 'type': 'subscribe', 'to': this.get('jid') })); @@ -82707,7 +86713,7 @@ converse.plugins.add('converse-roster', { * @param { String } jid - The Jabber ID of the user who is unsubscribing */ ackUnsubscribe() { - converse_core_api.send(converse_roster_$pres({ + core_api.send(roster_$pres({ 'type': 'unsubscribe', 'to': this.get('jid') })); @@ -82722,7 +86728,7 @@ converse.plugins.add('converse-roster', { * @param { String } message - Optional message to send to the person being unauthorized */ unauthorize(message) { - converse_core_converse.rejectPresenceSubscription(this.get('jid'), message); + core_converse.rejectPresenceSubscription(this.get('jid'), message); return this; }, @@ -82734,7 +86740,7 @@ converse.plugins.add('converse-roster', { * @param { String } message - Optional message to send to the person being authorized */ authorize(message) { - const pres = converse_roster_$pres({ + const pres = roster_$pres({ 'to': this.get('jid'), 'type': "subscribed" }); @@ -82743,7 +86749,7 @@ converse.plugins.add('converse-roster', { pres.c("status").t(message); } - converse_core_api.send(pres); + core_api.send(pres); return this; }, @@ -82754,15 +86760,15 @@ converse.plugins.add('converse-roster', { * @returns { Promise } */ removeFromRoster() { - const iq = converse_roster_$iq({ + const iq = roster_$iq({ type: 'set' }).c('query', { - xmlns: converse_roster_Strophe.NS.ROSTER + xmlns: roster_Strophe.NS.ROSTER }).c('item', { jid: this.get('jid'), subscription: "remove" }); - return converse_core_api.sendIQ(iq); + return core_api.sendIQ(iq); } }); @@ -82772,8 +86778,8 @@ converse.plugins.add('converse-roster', { * @memberOf _converse */ - converse_core_converse.RosterContacts = collection_Collection.extend({ - model: converse_core_converse.RosterContact, + core_converse.RosterContacts = Collection.extend({ + model: core_converse.RosterContact, comparator(contact1, contact2) { // Groups are sorted alphabetically, ignoring case. @@ -82782,12 +86788,12 @@ converse.plugins.add('converse-roster', { const status1 = contact1.presence.get('show') || 'offline'; const status2 = contact2.presence.get('show') || 'offline'; - if (converse_core_converse.STATUS_WEIGHTS[status1] === converse_core_converse.STATUS_WEIGHTS[status2]) { + if (core_converse.STATUS_WEIGHTS[status1] === core_converse.STATUS_WEIGHTS[status2]) { const name1 = contact1.getDisplayName().toLowerCase(); const name2 = contact2.getDisplayName().toLowerCase(); return name1 < name2 ? -1 : name1 > name2 ? 1 : 0; } else { - return converse_core_converse.STATUS_WEIGHTS[status1] < converse_core_converse.STATUS_WEIGHTS[status2] ? -1 : 1; + return core_converse.STATUS_WEIGHTS[status1] < core_converse.STATUS_WEIGHTS[status2] ? -1 : 1; } }, @@ -82802,11 +86808,11 @@ converse.plugins.add('converse-roster', { registerRosterHandler() { // Register a handler for roster IQ "set" stanzas, which update // roster contacts. - converse_core_converse.connection.addHandler(iq => { - converse_core_converse.roster.onRosterPush(iq); + core_converse.connection.addHandler(iq => { + core_converse.roster.onRosterPush(iq); return true; - }, converse_roster_Strophe.NS.ROSTER, 'iq', "set"); + }, roster_Strophe.NS.ROSTER, 'iq', "set"); }, registerRosterXHandler() { @@ -82814,15 +86820,15 @@ converse.plugins.add('converse-roster', { // used to suggest roster contacts to a user. let t = 0; - converse_core_converse.connection.addHandler(function (msg) { + core_converse.connection.addHandler(function (msg) { window.setTimeout(function () { - converse_core_converse.connection.flush(); + core_converse.connection.flush(); - converse_core_converse.roster.subscribeToSuggestedItems.bind(converse_core_converse.roster)(msg); + core_converse.roster.subscribeToSuggestedItems.bind(core_converse.roster)(msg); }, t); t += msg.querySelectorAll('item').length * 250; return true; - }, converse_roster_Strophe.NS.ROSTERX, 'message', null); + }, roster_Strophe.NS.ROSTERX, 'message', null); }, /** @@ -82841,15 +86847,15 @@ converse.plugins.add('converse-roster', { }); }); - if (converse_roster_u.isErrorObject(result)) { + if (roster_u.isErrorObject(result)) { headless_log.error(result); // Force a full roster refresh - converse_core_converse.session.set('roster_cached', false); + core_converse.session.set('roster_cached', false); this.data.save('version', undefined); } - if (converse_core_converse.session.get('roster_cached')) { + if (core_converse.session.get('roster_cached')) { /** * The contacts roster has been retrieved from the local cache (`sessionStorage`). * @event _converse#cachedRoster @@ -82857,24 +86863,24 @@ converse.plugins.add('converse-roster', { * @example _converse.api.listen.on('cachedRoster', (items) => { ... }); * @example _converse.api.waitUntil('cachedRoster').then(items => { ... }); */ - converse_core_api.trigger('cachedRoster', result); + core_api.trigger('cachedRoster', result); } else { - converse_core_converse.send_initial_presence = true; - return converse_core_converse.roster.fetchFromServer(); + core_converse.send_initial_presence = true; + return core_converse.roster.fetchFromServer(); } }, subscribeToSuggestedItems(msg) { Array.from(msg.querySelectorAll('item')).forEach(item => { if (item.getAttribute('action') === 'add') { - converse_core_converse.roster.addAndSubscribe(item.getAttribute('jid'), converse_core_converse.xmppstatus.getNickname() || converse_core_converse.xmppstatus.getFullname()); + core_converse.roster.addAndSubscribe(item.getAttribute('jid'), core_converse.xmppstatus.getNickname() || core_converse.xmppstatus.getFullname()); } }); return true; }, isSelf(jid) { - return converse_roster_u.isSameBareJID(jid, converse_core_converse.connection.jid); + return roster_u.isSameBareJID(jid, core_converse.connection.jid); }, /** @@ -82891,7 +86897,7 @@ converse.plugins.add('converse-roster', { async addAndSubscribe(jid, name, groups, message, attributes) { const contact = await this.addContactToRoster(jid, name, groups, attributes); - if (contact instanceof converse_core_converse.RosterContact) { + if (contact instanceof core_converse.RosterContact) { contact.subscribe(message); } }, @@ -82908,16 +86914,16 @@ converse.plugins.add('converse-roster', { */ sendContactAddIQ(jid, name, groups) { name = name ? name : null; - const iq = converse_roster_$iq({ + const iq = roster_$iq({ 'type': 'set' }).c('query', { - 'xmlns': converse_roster_Strophe.NS.ROSTER + 'xmlns': roster_Strophe.NS.ROSTER }).c('item', { jid, name }); groups.forEach(g => iq.c('group').t(g).up()); - return converse_core_api.sendIQ(iq); + return core_api.sendIQ(iq); }, /** @@ -82932,7 +86938,7 @@ converse.plugins.add('converse-roster', { * @param { Object } attributes - Any additional attributes to be stored on the user's model. */ async addContactToRoster(jid, name, groups, attributes) { - await converse_core_api.waitUntil('rosterContactsFetched'); + await core_api.waitUntil('rosterContactsFetched'); groups = groups || []; try { @@ -82958,18 +86964,18 @@ converse.plugins.add('converse-roster', { async subscribeBack(bare_jid, presence) { const contact = this.get(bare_jid); - if (contact instanceof converse_core_converse.RosterContact) { + if (contact instanceof core_converse.RosterContact) { contact.authorize().subscribe(); } else { var _sizzle$pop; // Can happen when a subscription is retried or roster was deleted - const nickname = ((_sizzle$pop = converse_roster_sizzle("nick[xmlns=\"".concat(converse_roster_Strophe.NS.NICK, "\"]"), presence).pop()) === null || _sizzle$pop === void 0 ? void 0 : _sizzle$pop.textContent) || null; + const nickname = ((_sizzle$pop = roster_sizzle("nick[xmlns=\"".concat(roster_Strophe.NS.NICK, "\"]"), presence).pop()) === null || _sizzle$pop === void 0 ? void 0 : _sizzle$pop.textContent) || null; const contact = await this.addContactToRoster(bare_jid, nickname, [], { 'subscription': 'from' }); - if (contact instanceof converse_core_converse.RosterContact) { + if (contact instanceof core_converse.RosterContact) { contact.authorize().subscribe(); } } @@ -82991,7 +86997,7 @@ converse.plugins.add('converse-roster', { const id = iq.getAttribute('id'); const from = iq.getAttribute('from'); - if (from && from !== converse_core_converse.bare_jid) { + if (from && from !== core_converse.bare_jid) { // https://tools.ietf.org/html/rfc6121#page-15 // // A receiving client MUST ignore the stanza unless it has no 'from' @@ -83002,14 +87008,14 @@ converse.plugins.add('converse-roster', { return; } - converse_core_api.send(converse_roster_$iq({ + core_api.send(roster_$iq({ type: 'result', id, - from: converse_core_converse.connection.jid + from: core_converse.connection.jid })); - const query = converse_roster_sizzle("query[xmlns=\"".concat(converse_roster_Strophe.NS.ROSTER, "\"]"), iq).pop(); + const query = roster_sizzle("query[xmlns=\"".concat(roster_Strophe.NS.ROSTER, "\"]"), iq).pop(); this.data.save('version', query.getAttribute('ver')); - const items = converse_roster_sizzle("item", query); + const items = roster_sizzle("item", query); if (items.length > 1) { headless_log.error(iq); @@ -83030,12 +87036,12 @@ converse.plugins.add('converse-roster', { * @example _converse.api.listen.on('rosterPush', iq => { ... }); */ - converse_core_api.trigger('rosterPush', iq); + core_api.trigger('rosterPush', iq); return; }, rosterVersioningSupported() { - return converse_core_api.disco.stream.getFeature('ver', 'urn:xmpp:features:rosterver') && this.data.get('version'); + return core_api.disco.stream.getFeature('ver', 'urn:xmpp:features:rosterver') && this.data.get('version'); }, /** @@ -83045,11 +87051,11 @@ converse.plugins.add('converse-roster', { * @returns {promise} */ async fetchFromServer() { - const stanza = converse_roster_$iq({ + const stanza = roster_$iq({ 'type': 'get', - 'id': converse_roster_u.getUniqueId('roster') + 'id': roster_u.getUniqueId('roster') }).c('query', { - xmlns: converse_roster_Strophe.NS.ROSTER + xmlns: roster_Strophe.NS.ROSTER }); if (this.rosterVersioningSupported()) { @@ -83058,24 +87064,24 @@ converse.plugins.add('converse-roster', { }); } - const iq = await converse_core_api.sendIQ(stanza, null, false); + const iq = await core_api.sendIQ(stanza, null, false); if (iq.getAttribute('type') !== 'error') { - const query = converse_roster_sizzle("query[xmlns=\"".concat(converse_roster_Strophe.NS.ROSTER, "\"]"), iq).pop(); + const query = roster_sizzle("query[xmlns=\"".concat(roster_Strophe.NS.ROSTER, "\"]"), iq).pop(); if (query) { - const items = converse_roster_sizzle("item", query); + const items = roster_sizzle("item", query); items.forEach(item => this.updateContact(item)); this.data.save('version', query.getAttribute('ver')); } - } else if (!converse_roster_u.isServiceUnavailableError(iq)) { + } else if (!roster_u.isServiceUnavailableError(iq)) { // Some unknown error happened, so we will try to fetch again if the page reloads. headless_log.error(iq); headless_log.error("Error while trying to fetch roster from the server"); return; } - converse_core_converse.session.save('roster_cached', true); + core_converse.session.save('roster_cached', true); /** * When the roster has been received from the XMPP server. * See also the `cachedRoster` event further up, which gets called instead of @@ -83087,7 +87093,7 @@ converse.plugins.add('converse-roster', { */ - converse_core_api.trigger('roster', iq); + core_api.trigger('roster', iq); }, /* Update or create RosterContact models based on the given `item` XML @@ -83138,8 +87144,8 @@ converse.plugins.add('converse-roster', { createRequestingContact(presence) { var _sizzle$pop2; - const bare_jid = converse_roster_Strophe.getBareJidFromJid(presence.getAttribute('from')); - const nickname = ((_sizzle$pop2 = converse_roster_sizzle("nick[xmlns=\"".concat(converse_roster_Strophe.NS.NICK, "\"]"), presence).pop()) === null || _sizzle$pop2 === void 0 ? void 0 : _sizzle$pop2.textContent) || null; + const bare_jid = roster_Strophe.getBareJidFromJid(presence.getAttribute('from')); + const nickname = ((_sizzle$pop2 = roster_sizzle("nick[xmlns=\"".concat(roster_Strophe.NS.NICK, "\"]"), presence).pop()) === null || _sizzle$pop2 === void 0 ? void 0 : _sizzle$pop2.textContent) || null; const user_data = { 'jid': bare_jid, 'subscription': 'none', @@ -83154,19 +87160,19 @@ converse.plugins.add('converse-roster', { * @example _converse.api.listen.on('contactRequest', contact => { ... }); */ - converse_core_api.trigger('contactRequest', this.create(user_data)); + core_api.trigger('contactRequest', this.create(user_data)); }, handleIncomingSubscription(presence) { const jid = presence.getAttribute('from'), - bare_jid = converse_roster_Strophe.getBareJidFromJid(jid), + bare_jid = roster_Strophe.getBareJidFromJid(jid), contact = this.get(bare_jid); - if (!converse_core_api.settings.get('allow_contact_requests')) { - converse_core_converse.rejectPresenceSubscription(jid, __("This client does not allow presence subscriptions")); + if (!core_api.settings.get('allow_contact_requests')) { + core_converse.rejectPresenceSubscription(jid, __("This client does not allow presence subscriptions")); } - if (converse_core_api.settings.get('auto_subscribe')) { + if (core_api.settings.get('auto_subscribe')) { if (!contact || contact.get('subscription') !== 'to') { this.subscribeBack(bare_jid, presence); } else { @@ -83187,16 +87193,16 @@ converse.plugins.add('converse-roster', { handleOwnPresence(presence) { const jid = presence.getAttribute('from'), - resource = converse_roster_Strophe.getResourceFromJid(jid), + resource = roster_Strophe.getResourceFromJid(jid), presence_type = presence.getAttribute('type'); - if (converse_core_converse.connection.jid !== jid && presence_type !== 'unavailable' && (converse_core_api.settings.get('synchronize_availability') === true || converse_core_api.settings.get('synchronize_availability') === resource)) { + if (core_converse.connection.jid !== jid && presence_type !== 'unavailable' && (core_api.settings.get('synchronize_availability') === true || core_api.settings.get('synchronize_availability') === resource)) { // Another resource has changed its status and // synchronize_availability option set to update, // we'll update ours as well. const show = lodash_es_propertyOf(presence.querySelector('show'))('textContent') || 'online'; - converse_core_converse.xmppstatus.save({ + core_converse.xmppstatus.save({ 'status': show }, { 'silent': true @@ -83205,13 +87211,13 @@ converse.plugins.add('converse-roster', { const status_message = lodash_es_propertyOf(presence.querySelector('status'))('textContent'); if (status_message) { - converse_core_converse.xmppstatus.save({ + core_converse.xmppstatus.save({ 'status_message': status_message }); } } - if (converse_core_converse.jid === jid && presence_type === 'unavailable') { + if (core_converse.jid === jid && presence_type === 'unavailable') { // XXX: We've received an "unavailable" presence from our // own resource. Apparently this happens due to a // Prosody bug, whereby we send an IQ stanza to remove @@ -83226,7 +87232,7 @@ converse.plugins.add('converse-roster', { // // As a workaround for now we simply send our presence again, // otherwise we're treated as offline. - converse_core_api.user.presence.send(); + core_api.user.presence.send(); } }, @@ -83238,11 +87244,11 @@ converse.plugins.add('converse-roster', { } const jid = presence.getAttribute('from'), - bare_jid = converse_roster_Strophe.getBareJidFromJid(jid); + bare_jid = roster_Strophe.getBareJidFromJid(jid); if (this.isSelf(bare_jid)) { return this.handleOwnPresence(presence); - } else if (converse_roster_sizzle("query[xmlns=\"".concat(converse_roster_Strophe.NS.MUC, "\"]"), presence).length) { + } else if (roster_sizzle("query[xmlns=\"".concat(roster_Strophe.NS.MUC, "\"]"), presence).length) { return; // Ignore MUC } @@ -83264,7 +87270,7 @@ converse.plugins.add('converse-roster', { } else if (presence_type === 'subscribe') { this.handleIncomingSubscription(presence); } else if (presence_type === 'unavailable' && contact) { - const resource = converse_roster_Strophe.getResourceFromJid(jid); + const resource = roster_Strophe.getResourceFromJid(jid); contact.presence.removeResource(resource); } else if (contact) { // presence_type is undefined @@ -83273,14 +87279,14 @@ converse.plugins.add('converse-roster', { } }); - converse_core_converse.RosterGroup = model_Model.extend({ + core_converse.RosterGroup = model_Model.extend({ initialize(attributes) { this.set(Object.assign({ description: __('Click to hide these contacts'), - state: converse_core_converse.OPENED + state: core_converse.OPENED }, attributes)); // Collection of contacts belonging to this group. - this.contacts = new converse_core_converse.RosterContacts(); + this.contacts = new core_converse.RosterContacts(); } }); @@ -83290,8 +87296,8 @@ converse.plugins.add('converse-roster', { * @memberOf _converse */ - converse_core_converse.RosterGroups = collection_Collection.extend({ - model: converse_core_converse.RosterGroup, + core_converse.RosterGroups = Collection.extend({ + model: core_converse.RosterGroup, comparator(a, b) { a = a.get('name'); @@ -83306,10 +87312,10 @@ converse.plugins.add('converse-roster', { } else if (a_is_special && b_is_special) { return WEIGHTS[a] < WEIGHTS[b] ? -1 : WEIGHTS[a] > WEIGHTS[b] ? 1 : 0; } else if (!a_is_special && b_is_special) { - const a_header = converse_core_converse.HEADER_CURRENT_CONTACTS; + const a_header = core_converse.HEADER_CURRENT_CONTACTS; return WEIGHTS[a_header] < WEIGHTS[b] ? -1 : WEIGHTS[a_header] > WEIGHTS[b] ? 1 : 0; } else if (a_is_special && !b_is_special) { - const b_header = converse_core_converse.HEADER_CURRENT_CONTACTS; + const b_header = core_converse.HEADER_CURRENT_CONTACTS; return WEIGHTS[a] < WEIGHTS[b_header] ? -1 : WEIGHTS[a] > WEIGHTS[b_header] ? 1 : 0; } }, @@ -83334,18 +87340,18 @@ converse.plugins.add('converse-roster', { }); - converse_core_converse.unregisterPresenceHandler = function () { - if (converse_core_converse.presence_ref !== undefined) { - converse_core_converse.connection.deleteHandler(converse_core_converse.presence_ref); + core_converse.unregisterPresenceHandler = function () { + if (core_converse.presence_ref !== undefined) { + core_converse.connection.deleteHandler(core_converse.presence_ref); - delete converse_core_converse.presence_ref; + delete core_converse.presence_ref; } }; /******************** Event Handlers ********************/ function updateUnreadCounter(chatbox) { - const contact = converse_core_converse.roster && converse_core_converse.roster.findWhere({ + const contact = core_converse.roster && core_converse.roster.findWhere({ 'jid': chatbox.get('jid') }); @@ -83356,22 +87362,22 @@ converse.plugins.add('converse-roster', { } } - converse_core_api.listen.on('chatBoxesInitialized', () => { - converse_core_converse.chatboxes.on('change:num_unread', updateUnreadCounter); + core_api.listen.on('chatBoxesInitialized', () => { + core_converse.chatboxes.on('change:num_unread', updateUnreadCounter); - converse_core_converse.chatboxes.on('add', chatbox => { - if (chatbox.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { + core_converse.chatboxes.on('add', chatbox => { + if (chatbox.get('type') === core_converse.PRIVATE_CHAT_TYPE) { chatbox.setRosterContact(chatbox.get('jid')); } }); }); - converse_core_api.listen.on('beforeTearDown', () => converse_core_converse.unregisterPresenceHandler()); - converse_core_api.waitUntil('rosterContactsFetched').then(() => { - converse_core_converse.roster.on('add', contact => { + core_api.listen.on('beforeTearDown', () => core_converse.unregisterPresenceHandler()); + core_api.waitUntil('rosterContactsFetched').then(() => { + core_converse.roster.on('add', contact => { /* When a new contact is added, check if we already have a * chatbox open for it, and if so attach it to the chatbox. */ - const chatbox = converse_core_converse.chatboxes.findWhere({ + const chatbox = core_converse.chatboxes.findWhere({ 'jid': contact.get('jid') }); @@ -83382,39 +87388,39 @@ converse.plugins.add('converse-roster', { }); async function clearPresences() { - converse_core_converse.presences && (await converse_core_converse.presences.clearStore()); + core_converse.presences && (await core_converse.presences.clearStore()); } - converse_core_api.listen.on('streamResumptionFailed', () => converse_core_converse.session.set('roster_cached', false)); - converse_core_api.listen.on('clearSession', async () => { + core_api.listen.on('streamResumptionFailed', () => core_converse.session.set('roster_cached', false)); + core_api.listen.on('clearSession', async () => { await clearPresences(); - if (converse_core_converse.shouldClearCache()) { - if (converse_core_converse.rostergroups) { - await converse_core_converse.rostergroups.clearStore(); - delete converse_core_converse.rostergroups; + if (core_converse.shouldClearCache()) { + if (core_converse.rostergroups) { + await core_converse.rostergroups.clearStore(); + delete core_converse.rostergroups; } - if (converse_core_converse.roster) { - lodash_es_invoke(converse_core_converse, 'roster.data.destroy'); - await converse_core_converse.roster.clearStore(); - delete converse_core_converse.roster; + if (core_converse.roster) { + lodash_es_invoke(core_converse, 'roster.data.destroy'); + await core_converse.roster.clearStore(); + delete core_converse.roster; } } }); - converse_core_api.listen.on('statusInitialized', async reconnecting => { + core_api.listen.on('statusInitialized', async reconnecting => { if (reconnecting) { // When reconnecting and not resuming a previous session, // we clear all cached presence data, since it might be stale // and we'll receive new presence updates - !converse_core_converse.connection.hasResumed() && (await clearPresences()); + !core_converse.connection.hasResumed() && (await clearPresences()); } else { - converse_core_converse.presences = new converse_core_converse.Presences(); - const id = "converse.presences-".concat(converse_core_converse.bare_jid); - converse_core_converse.presences.browserStorage = converse_core_converse.createStore(id, "session"); // We might be continuing an existing session, so we fetch + core_converse.presences = new core_converse.Presences(); + const id = "converse.presences-".concat(core_converse.bare_jid); + core_converse.presences.browserStorage = core_converse.createStore(id, "session"); // We might be continuing an existing session, so we fetch // cached presence data. - converse_core_converse.presences.fetch(); + core_converse.presences.fetch(); } /** * Triggered once the _converse.Presences collection has been @@ -83427,26 +87433,26 @@ converse.plugins.add('converse-roster', { */ - converse_core_api.trigger('presencesInitialized', reconnecting); + core_api.trigger('presencesInitialized', reconnecting); }); async function initRoster() { // Initialize the Bakcbone collections that represent the contats // roster and the roster groups. - await converse_core_api.waitUntil('VCardsInitialized'); - converse_core_converse.roster = new converse_core_converse.RosterContacts(); - let id = "converse.contacts-".concat(converse_core_converse.bare_jid); - converse_core_converse.roster.browserStorage = converse_core_converse.createStore(id); - converse_core_converse.roster.data = new model_Model(); - id = "converse-roster-model-".concat(converse_core_converse.bare_jid); - converse_core_converse.roster.data.id = id; - converse_core_converse.roster.data.browserStorage = converse_core_converse.createStore(id); - - converse_core_converse.roster.data.fetch(); - - id = "converse.roster.groups".concat(converse_core_converse.bare_jid); - converse_core_converse.rostergroups = new converse_core_converse.RosterGroups(); - converse_core_converse.rostergroups.browserStorage = converse_core_converse.createStore(id); + await core_api.waitUntil('VCardsInitialized'); + core_converse.roster = new core_converse.RosterContacts(); + let id = "converse.contacts-".concat(core_converse.bare_jid); + core_converse.roster.browserStorage = core_converse.createStore(id); + core_converse.roster.data = new model_Model(); + id = "converse-roster-model-".concat(core_converse.bare_jid); + core_converse.roster.data.id = id; + core_converse.roster.data.browserStorage = core_converse.createStore(id); + + core_converse.roster.data.fetch(); + + id = "converse.roster.groups".concat(core_converse.bare_jid); + core_converse.rostergroups = new core_converse.RosterGroups(); + core_converse.rostergroups.browserStorage = core_converse.createStore(id); /** * Triggered once the `_converse.RosterContacts` and `_converse.RosterGroups` have * been created, but not yet populated with data. @@ -83456,10 +87462,10 @@ converse.plugins.add('converse-roster', { * @example _converse.api.waitUntil('rosterInitialized').then(() => { ... }); */ - converse_core_api.trigger('rosterInitialized'); + core_api.trigger('rosterInitialized'); } - converse_core_api.listen.on('presencesInitialized', async reconnecting => { + core_api.listen.on('presencesInitialized', async reconnecting => { if (reconnecting) { /** * Similar to `rosterInitialized`, but instead pertaining to reconnection. @@ -83468,21 +87474,21 @@ converse.plugins.add('converse-roster', { * @event _converse#rosterReadyAfterReconnection * @example _converse.api.listen.on('rosterReadyAfterReconnection', () => { ... }); */ - converse_core_api.trigger('rosterReadyAfterReconnection'); + core_api.trigger('rosterReadyAfterReconnection'); } else { await initRoster(); } - converse_core_converse.roster.onConnected(); + core_converse.roster.onConnected(); - converse_core_converse.registerPresenceHandler(); + core_converse.registerPresenceHandler(); - converse_core_converse.populateRoster(!converse_core_converse.connection.restored); + core_converse.populateRoster(!core_converse.connection.restored); }); /************************ API ************************/ // API methods only available to plugins - Object.assign(converse_core_converse.api, { + Object.assign(core_converse.api, { /** * @namespace _converse.api.contacts * @memberOf _converse.api @@ -83521,12 +87527,12 @@ converse.plugins.add('converse-roster', { * }); */ async get(jids) { - await converse_core_api.waitUntil('rosterContactsFetched'); + await core_api.waitUntil('rosterContactsFetched'); - const _getter = jid => converse_core_converse.roster.get(converse_roster_Strophe.getBareJidFromJid(jid)); + const _getter = jid => core_converse.roster.get(roster_Strophe.getBareJidFromJid(jid)); if (jids === undefined) { - jids = converse_core_converse.roster.pluck('jid'); + jids = core_converse.roster.pluck('jid'); } else if (typeof jids === 'string') { return _getter(jids); } @@ -83546,13 +87552,13 @@ converse.plugins.add('converse-roster', { * _converse.api.contacts.add('buddy@example.com', 'Buddy') */ async add(jid, name) { - await converse_core_api.waitUntil('rosterContactsFetched'); + await core_api.waitUntil('rosterContactsFetched'); if (typeof jid !== 'string' || !jid.includes('@')) { throw new TypeError('contacts.add: invalid jid'); } - return converse_core_converse.roster.addAndSubscribe(jid, name); + return core_converse.roster.addAndSubscribe(jid, name); } } @@ -83560,7 +87566,7 @@ converse.plugins.add('converse-roster', { } }); -// CONCATENATED MODULE: ./src/headless/converse-smacks.js +// CONCATENATED MODULE: ./src/headless/plugins/smacks.js /** * @module converse-smacks * @copyright The Converse.js contributors @@ -83570,284 +87576,290 @@ converse.plugins.add('converse-roster', { const { - Strophe: converse_smacks_Strophe + Strophe: smacks_Strophe } = converse.env; -const converse_smacks_u = converse.env.utils; -converse_smacks_Strophe.addNamespace('SM', 'urn:xmpp:sm:3'); -converse.plugins.add('converse-smacks', { - initialize() { - // Configuration values for this plugin - // ==================================== - // Refer to docs/source/configuration.rst for explanations of these - // configuration settings. - converse_core_api.settings.extend({ - 'enable_smacks': true, - 'smacks_max_unacked_stanzas': 5 - }); - - function isStreamManagementSupported() { - if (converse_core_api.connection.isType('bosh') && !converse_core_converse.isTestEnv()) { - return false; - } +const smacks_u = converse.env.utils; +smacks_Strophe.addNamespace('SM', 'urn:xmpp:sm:3'); - return converse_core_api.disco.stream.getFeature('sm', converse_smacks_Strophe.NS.SM); - } +function isStreamManagementSupported() { + if (core_api.connection.isType('bosh') && !core_converse.isTestEnv()) { + return false; + } - function handleAck(el) { - if (!converse_core_converse.session.get('smacks_enabled')) { - return true; - } + return core_api.disco.stream.getFeature('sm', smacks_Strophe.NS.SM); +} - const handled = parseInt(el.getAttribute('h'), 10); +function handleAck(el) { + if (!core_converse.session.get('smacks_enabled')) { + return true; + } - const last_known_handled = converse_core_converse.session.get('num_stanzas_handled_by_server'); + const handled = parseInt(el.getAttribute('h'), 10); - const delta = handled - last_known_handled; + const last_known_handled = core_converse.session.get('num_stanzas_handled_by_server'); - if (delta < 0) { - const err_msg = "New reported stanza count lower than previous. " + "New: ".concat(handled, " - Previous: ").concat(last_known_handled); - headless_log.error(err_msg); - } + const delta = handled - last_known_handled; - const unacked_stanzas = converse_core_converse.session.get('unacked_stanzas'); + if (delta < 0) { + const err_msg = "New reported stanza count lower than previous. " + "New: ".concat(handled, " - Previous: ").concat(last_known_handled); + headless_log.error(err_msg); + } - if (delta > unacked_stanzas.length) { - const err_msg = "Higher reported acknowledge count than unacknowledged stanzas. " + "Reported Acknowledged Count: ".concat(delta, " -") + "Unacknowledged Stanza Count: ".concat(unacked_stanzas.length, " -") + "New: ".concat(handled, " - Previous: ").concat(last_known_handled); - headless_log.error(err_msg); - } + const unacked_stanzas = core_converse.session.get('unacked_stanzas'); - converse_core_converse.session.save({ - 'num_stanzas_handled_by_server': handled, - 'num_stanzas_since_last_ack': 0, - 'unacked_stanzas': unacked_stanzas.slice(delta) - }); + if (delta > unacked_stanzas.length) { + const err_msg = "Higher reported acknowledge count than unacknowledged stanzas. " + "Reported Acknowledged Count: ".concat(delta, " -") + "Unacknowledged Stanza Count: ".concat(unacked_stanzas.length, " -") + "New: ".concat(handled, " - Previous: ").concat(last_known_handled); + headless_log.error(err_msg); + } - return true; - } + core_converse.session.save({ + 'num_stanzas_handled_by_server': handled, + 'num_stanzas_since_last_ack': 0, + 'unacked_stanzas': unacked_stanzas.slice(delta) + }); - function sendAck() { - if (converse_core_converse.session.get('smacks_enabled')) { - const h = converse_core_converse.session.get('num_stanzas_handled'); + return true; +} - const stanza = converse_smacks_u.toStanza("<a xmlns=\"".concat(converse_smacks_Strophe.NS.SM, "\" h=\"").concat(h, "\"/>")); - converse_core_api.send(stanza); - } +function sendAck() { + if (core_converse.session.get('smacks_enabled')) { + const h = core_converse.session.get('num_stanzas_handled'); - return true; - } + const stanza = smacks_u.toStanza("<a xmlns=\"".concat(smacks_Strophe.NS.SM, "\" h=\"").concat(h, "\"/>")); + core_api.send(stanza); + } - function stanzaHandler(el) { - if (converse_core_converse.session.get('smacks_enabled')) { - if (converse_smacks_u.isTagEqual(el, 'iq') || converse_smacks_u.isTagEqual(el, 'presence') || converse_smacks_u.isTagEqual(el, 'message')) { - const h = converse_core_converse.session.get('num_stanzas_handled'); + return true; +} - converse_core_converse.session.save('num_stanzas_handled', h + 1); - } - } +function stanzaHandler(el) { + if (core_converse.session.get('smacks_enabled')) { + if (smacks_u.isTagEqual(el, 'iq') || smacks_u.isTagEqual(el, 'presence') || smacks_u.isTagEqual(el, 'message')) { + const h = core_converse.session.get('num_stanzas_handled'); - return true; + core_converse.session.save('num_stanzas_handled', h + 1); } + } - function initSessionData() { - converse_core_converse.session.save({ - 'smacks_enabled': converse_core_converse.session.get('smacks_enabled') || false, - 'num_stanzas_handled': converse_core_converse.session.get('num_stanzas_handled') || 0, - 'num_stanzas_handled_by_server': converse_core_converse.session.get('num_stanzas_handled_by_server') || 0, - 'num_stanzas_since_last_ack': converse_core_converse.session.get('num_stanzas_since_last_ack') || 0, - 'unacked_stanzas': converse_core_converse.session.get('unacked_stanzas') || [] - }); - } + return true; +} - function resetSessionData() { - converse_core_converse.session && converse_core_converse.session.save({ - 'smacks_enabled': false, - 'num_stanzas_handled': 0, - 'num_stanzas_handled_by_server': 0, - 'num_stanzas_since_last_ack': 0, - 'unacked_stanzas': [] - }); - } +function initSessionData() { + core_converse.session.save({ + 'smacks_enabled': core_converse.session.get('smacks_enabled') || false, + 'num_stanzas_handled': core_converse.session.get('num_stanzas_handled') || 0, + 'num_stanzas_handled_by_server': core_converse.session.get('num_stanzas_handled_by_server') || 0, + 'num_stanzas_since_last_ack': core_converse.session.get('num_stanzas_since_last_ack') || 0, + 'unacked_stanzas': core_converse.session.get('unacked_stanzas') || [] + }); +} - function saveSessionData(el) { - const data = { - 'smacks_enabled': true - }; +function resetSessionData() { + core_converse.session && core_converse.session.save({ + 'smacks_enabled': false, + 'num_stanzas_handled': 0, + 'num_stanzas_handled_by_server': 0, + 'num_stanzas_since_last_ack': 0, + 'unacked_stanzas': [] + }); +} - if (['1', 'true'].includes(el.getAttribute('resume'))) { - data['smacks_stream_id'] = el.getAttribute('id'); - } +function saveSessionData(el) { + const data = { + 'smacks_enabled': true + }; - converse_core_converse.session.save(data); + if (['1', 'true'].includes(el.getAttribute('resume'))) { + data['smacks_stream_id'] = el.getAttribute('id'); + } - return true; - } + core_converse.session.save(data); - function onFailedStanza(el) { - if (el.querySelector('item-not-found')) { - // Stream resumption must happen before resource binding but - // enabling a new stream must happen after resource binding. - // Since resumption failed, we simply continue. - // - // After resource binding, sendEnableStanza will be called - // based on the afterResourceBinding event. - headless_log.warn('Could not resume previous SMACKS session, session id not found. ' + 'A new session will be established.'); - } else { - headless_log.error('Failed to enable stream management'); - headless_log.error(el.outerHTML); - } + return true; +} - resetSessionData(); - /** - * Triggered when the XEP-0198 stream could not be resumed. - * @event _converse#streamResumptionFailed - */ +function onFailedStanza(el) { + if (el.querySelector('item-not-found')) { + // Stream resumption must happen before resource binding but + // enabling a new stream must happen after resource binding. + // Since resumption failed, we simply continue. + // + // After resource binding, sendEnableStanza will be called + // based on the afterResourceBinding event. + headless_log.warn('Could not resume previous SMACKS session, session id not found. ' + 'A new session will be established.'); + } else { + headless_log.error('Failed to enable stream management'); + headless_log.error(el.outerHTML); + } - converse_core_api.trigger('streamResumptionFailed'); - return true; - } + resetSessionData(); + /** + * Triggered when the XEP-0198 stream could not be resumed. + * @event _converse#streamResumptionFailed + */ - function resendUnackedStanzas() { - const stanzas = converse_core_converse.session.get('unacked_stanzas'); // We clear the unacked_stanzas array because it'll get populated - // again in `onStanzaSent` + core_api.trigger('streamResumptionFailed'); + return true; +} +function resendUnackedStanzas() { + const stanzas = core_converse.session.get('unacked_stanzas'); // We clear the unacked_stanzas array because it'll get populated + // again in `onStanzaSent` - converse_core_converse.session.save('unacked_stanzas', []); // XXX: Currently we're resending *all* unacked stanzas, including - // IQ[type="get"] stanzas that longer have handlers (because the - // page reloaded or we reconnected, causing removal of handlers). - // - // *Side-note:* Is it necessary to clear handlers upon reconnection? - // - // I've considered not resending those stanzas, but then keeping - // track of what's been sent and ack'd and their order gets - // prohibitively complex. - // - // It's unclear how much of a problem this poses. - // - // Two possible solutions are running @converse/headless as a - // service worker or handling IQ[type="result"] stanzas - // differently, more like push stanzas, so that they don't need - // explicit handlers. + core_converse.session.save('unacked_stanzas', []); // XXX: Currently we're resending *all* unacked stanzas, including + // IQ[type="get"] stanzas that longer have handlers (because the + // page reloaded or we reconnected, causing removal of handlers). + // + // *Side-note:* Is it necessary to clear handlers upon reconnection? + // + // I've considered not resending those stanzas, but then keeping + // track of what's been sent and ack'd and their order gets + // prohibitively complex. + // + // It's unclear how much of a problem this poses. + // + // Two possible solutions are running @converse/headless as a + // service worker or handling IQ[type="result"] stanzas + // differently, more like push stanzas, so that they don't need + // explicit handlers. - stanzas.forEach(s => converse_core_api.send(s)); - } - function onResumedStanza(el) { - saveSessionData(el); - handleAck(el); - resendUnackedStanzas(); - converse_core_converse.connection.do_bind = false; // No need to bind our resource anymore + stanzas.forEach(s => core_api.send(s)); +} + +function onResumedStanza(el) { + saveSessionData(el); + handleAck(el); + resendUnackedStanzas(); + core_converse.connection.do_bind = false; // No need to bind our resource anymore - converse_core_converse.connection.authenticated = true; - converse_core_converse.connection.restored = true; + core_converse.connection.authenticated = true; + core_converse.connection.restored = true; - converse_core_converse.connection._changeConnectStatus(converse_smacks_Strophe.Status.CONNECTED, null); - } + core_converse.connection._changeConnectStatus(smacks_Strophe.Status.CONNECTED, null); +} - async function sendResumeStanza() { - const promise = converse_smacks_u.getResolveablePromise(); +async function sendResumeStanza() { + const promise = smacks_u.getResolveablePromise(); - converse_core_converse.connection._addSysHandler(el => promise.resolve(onResumedStanza(el)), converse_smacks_Strophe.NS.SM, 'resumed'); + core_converse.connection._addSysHandler(el => promise.resolve(onResumedStanza(el)), smacks_Strophe.NS.SM, 'resumed'); - converse_core_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), converse_smacks_Strophe.NS.SM, 'failed'); + core_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), smacks_Strophe.NS.SM, 'failed'); - const previous_id = converse_core_converse.session.get('smacks_stream_id'); + const previous_id = core_converse.session.get('smacks_stream_id'); - const h = converse_core_converse.session.get('num_stanzas_handled'); + const h = core_converse.session.get('num_stanzas_handled'); - const stanza = converse_smacks_u.toStanza("<resume xmlns=\"".concat(converse_smacks_Strophe.NS.SM, "\" h=\"").concat(h, "\" previd=\"").concat(previous_id, "\"/>")); - converse_core_api.send(stanza); + const stanza = smacks_u.toStanza("<resume xmlns=\"".concat(smacks_Strophe.NS.SM, "\" h=\"").concat(h, "\" previd=\"").concat(previous_id, "\"/>")); + core_api.send(stanza); - converse_core_converse.connection.flush(); + core_converse.connection.flush(); - await promise; - } + await promise; +} - async function sendEnableStanza() { - if (!converse_core_api.settings.get('enable_smacks') || converse_core_converse.session.get('smacks_enabled')) { - return; - } +async function sendEnableStanza() { + if (!core_api.settings.get('enable_smacks') || core_converse.session.get('smacks_enabled')) { + return; + } - if (await isStreamManagementSupported()) { - const promise = converse_smacks_u.getResolveablePromise(); + if (await isStreamManagementSupported()) { + const promise = smacks_u.getResolveablePromise(); - converse_core_converse.connection._addSysHandler(el => promise.resolve(saveSessionData(el)), converse_smacks_Strophe.NS.SM, 'enabled'); + core_converse.connection._addSysHandler(el => promise.resolve(saveSessionData(el)), smacks_Strophe.NS.SM, 'enabled'); - converse_core_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), converse_smacks_Strophe.NS.SM, 'failed'); + core_converse.connection._addSysHandler(el => promise.resolve(onFailedStanza(el)), smacks_Strophe.NS.SM, 'failed'); - const resume = converse_core_api.connection.isType('websocket') || converse_core_converse.isTestEnv(); + const resume = core_api.connection.isType('websocket') || core_converse.isTestEnv(); - const stanza = converse_smacks_u.toStanza("<enable xmlns=\"".concat(converse_smacks_Strophe.NS.SM, "\" resume=\"").concat(resume, "\"/>")); - converse_core_api.send(stanza); + const stanza = smacks_u.toStanza("<enable xmlns=\"".concat(smacks_Strophe.NS.SM, "\" resume=\"").concat(resume, "\"/>")); + core_api.send(stanza); - converse_core_converse.connection.flush(); + core_converse.connection.flush(); - await promise; - } - } + await promise; + } +} - async function enableStreamManagement() { - if (!converse_core_api.settings.get('enable_smacks')) { - return; - } +const smacks_handlers = []; - if (!(await isStreamManagementSupported())) { - return; - } +async function enableStreamManagement() { + if (!core_api.settings.get('enable_smacks')) { + return; + } - converse_core_converse.connection.addHandler(stanzaHandler); + if (!(await isStreamManagementSupported())) { + return; + } - converse_core_converse.connection.addHandler(sendAck, converse_smacks_Strophe.NS.SM, 'r'); + const conn = core_converse.connection; - converse_core_converse.connection.addHandler(handleAck, converse_smacks_Strophe.NS.SM, 'a'); + while (smacks_handlers.length) { + conn.deleteHandler(smacks_handlers.pop()); + } - if (converse_core_converse.session.get('smacks_stream_id')) { - await sendResumeStanza(); - } else { - resetSessionData(); - } - } + smacks_handlers.push(conn.addHandler(stanzaHandler)); + smacks_handlers.push(conn.addHandler(sendAck, smacks_Strophe.NS.SM, 'r')); + smacks_handlers.push(conn.addHandler(handleAck, smacks_Strophe.NS.SM, 'a')); - function onStanzaSent(stanza) { - if (!converse_core_converse.session) { - headless_log.warn('No _converse.session!'); - return; - } + if (core_converse.session.get('smacks_stream_id')) { + await sendResumeStanza(); + } else { + resetSessionData(); + } +} - if (!converse_core_converse.session.get('smacks_enabled')) { - return; - } +function onStanzaSent(stanza) { + if (!core_converse.session) { + headless_log.warn('No _converse.session!'); + return; + } - if (converse_smacks_u.isTagEqual(stanza, 'iq') || converse_smacks_u.isTagEqual(stanza, 'presence') || converse_smacks_u.isTagEqual(stanza, 'message')) { - const stanza_string = converse_smacks_Strophe.serialize(stanza); + if (!core_converse.session.get('smacks_enabled')) { + return; + } - converse_core_converse.session.save('unacked_stanzas', (converse_core_converse.session.get('unacked_stanzas') || []).concat([stanza_string])); + if (smacks_u.isTagEqual(stanza, 'iq') || smacks_u.isTagEqual(stanza, 'presence') || smacks_u.isTagEqual(stanza, 'message')) { + const stanza_string = smacks_Strophe.serialize(stanza); - const max_unacked = converse_core_api.settings.get('smacks_max_unacked_stanzas'); + core_converse.session.save('unacked_stanzas', (core_converse.session.get('unacked_stanzas') || []).concat([stanza_string])); - if (max_unacked > 0) { - const num = converse_core_converse.session.get('num_stanzas_since_last_ack') + 1; + const max_unacked = core_api.settings.get('smacks_max_unacked_stanzas'); - if (num % max_unacked === 0) { - // Request confirmation of sent stanzas - converse_core_api.send(converse_smacks_u.toStanza("<r xmlns=\"".concat(converse_smacks_Strophe.NS.SM, "\"/>"))); - } + if (max_unacked > 0) { + const num = core_converse.session.get('num_stanzas_since_last_ack') + 1; - converse_core_converse.session.save({ - 'num_stanzas_since_last_ack': num - }); - } + if (num % max_unacked === 0) { + // Request confirmation of sent stanzas + core_api.send(smacks_u.toStanza("<r xmlns=\"".concat(smacks_Strophe.NS.SM, "\"/>"))); } + + core_converse.session.save({ + 'num_stanzas_since_last_ack': num + }); } + } +} - converse_core_api.listen.on('userSessionInitialized', initSessionData); - converse_core_api.listen.on('beforeResourceBinding', enableStreamManagement); - converse_core_api.listen.on('afterResourceBinding', sendEnableStanza); - converse_core_api.listen.on('send', onStanzaSent); +converse.plugins.add('converse-smacks', { + initialize() { + // Configuration values for this plugin + // ==================================== + // Refer to docs/source/configuration.rst for explanations of these + // configuration settings. + core_api.settings.extend({ + 'enable_smacks': true, + 'smacks_max_unacked_stanzas': 5 + }); + core_api.listen.on('afterResourceBinding', sendEnableStanza); + core_api.listen.on('beforeResourceBinding', enableStreamManagement); + core_api.listen.on('send', onStanzaSent); + core_api.listen.on('userSessionInitialized', initSessionData); } }); -// CONCATENATED MODULE: ./src/headless/converse-vcard.js +// CONCATENATED MODULE: ./src/headless/plugins/vcard.js /** * @module converse-vcard * @copyright The Converse.js contributors @@ -83859,11 +87871,11 @@ converse.plugins.add('converse-smacks', { const { - Strophe: converse_vcard_Strophe, - $iq: converse_vcard_$iq, - dayjs: converse_vcard_dayjs + Strophe: vcard_Strophe, + $iq: vcard_$iq, + dayjs: vcard_dayjs } = converse.env; -const converse_vcard_u = converse.env.utils; +const vcard_u = converse.env.utils; converse.plugins.add('converse-vcard', { dependencies: ["converse-status", "converse-roster"], overrides: { @@ -83921,7 +87933,7 @@ converse.plugins.add('converse-vcard', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.promises.add('VCardsInitialized'); + core_api.promises.add('VCardsInitialized'); /** * Represents a VCard * @class @@ -83929,10 +87941,10 @@ converse.plugins.add('converse-vcard', { * @memberOf _converse */ - converse_core_converse.VCard = model_Model.extend({ + core_converse.VCard = model_Model.extend({ defaults: { - 'image': converse_core_converse.DEFAULT_IMAGE, - 'image_type': converse_core_converse.DEFAULT_IMAGE_TYPE + 'image': core_converse.DEFAULT_IMAGE, + 'image_type': core_converse.DEFAULT_IMAGE_TYPE }, set(key, val, options) { @@ -83948,8 +87960,8 @@ converse.plugins.add('converse-vcard', { } if ('image' in attrs && !attrs['image']) { - attrs['image'] = converse_core_converse.DEFAULT_IMAGE; - attrs['image_type'] = converse_core_converse.DEFAULT_IMAGE_TYPE; + attrs['image'] = core_converse.DEFAULT_IMAGE; + attrs['image_type'] = core_converse.DEFAULT_IMAGE_TYPE; return model_Model.prototype.set.call(this, attrs, options); } else { return model_Model.prototype.set.apply(this, arguments); @@ -83961,11 +87973,11 @@ converse.plugins.add('converse-vcard', { } }); - converse_core_converse.VCards = collection_Collection.extend({ - model: converse_core_converse.VCard, + core_converse.VCards = Collection.extend({ + model: core_converse.VCard, initialize() { - this.on('add', vcard => vcard.get('jid') && converse_core_api.vcard.update(vcard)); + this.on('add', vcard => vcard.get('jid') && core_api.vcard.update(vcard)); } }); @@ -83992,16 +88004,16 @@ converse.plugins.add('converse-vcard', { } if (result.image) { - const buffer = converse_vcard_u.base64ToArrayBuffer(result['image']); + const buffer = vcard_u.base64ToArrayBuffer(result['image']); const ab = await crypto.subtle.digest('SHA-1', buffer); - result['image_hash'] = converse_vcard_u.arrayBufferToHex(ab); + result['image_hash'] = vcard_u.arrayBufferToHex(ab); } return result; } function createStanza(type, jid, vcard_el) { - const iq = converse_vcard_$iq(jid ? { + const iq = vcard_$iq(jid ? { 'type': type, 'to': jid } : { @@ -84010,7 +88022,7 @@ converse.plugins.add('converse-vcard', { if (!vcard_el) { iq.c("vCard", { - 'xmlns': converse_vcard_Strophe.NS.VCARD + 'xmlns': vcard_Strophe.NS.VCARD }); } else { iq.cnode(vcard_el); @@ -84020,11 +88032,11 @@ converse.plugins.add('converse-vcard', { } async function getVCard(_converse, jid) { - const to = converse_vcard_Strophe.getBareJidFromJid(jid) === _converse.bare_jid ? null : jid; + const to = vcard_Strophe.getBareJidFromJid(jid) === _converse.bare_jid ? null : jid; let iq; try { - iq = await converse_core_api.sendIQ(createStanza("get", to)); + iq = await core_api.sendIQ(createStanza("get", to)); } catch (iq) { return { 'stanza': iq, @@ -84039,7 +88051,7 @@ converse.plugins.add('converse-vcard', { async function setVCardOnModel(model) { let jid; - if (model instanceof converse_core_converse.Message) { + if (model instanceof core_converse.Message) { if (model.get('type') === 'error') { return; } @@ -84049,13 +88061,13 @@ converse.plugins.add('converse-vcard', { jid = model.get('jid'); } - await converse_core_api.waitUntil('VCardsInitialized'); - model.vcard = converse_core_converse.vcards.findWhere({ + await core_api.waitUntil('VCardsInitialized'); + model.vcard = core_converse.vcards.findWhere({ 'jid': jid }); if (!model.vcard) { - model.vcard = converse_core_converse.vcards.create({ + model.vcard = core_converse.vcards.create({ 'jid': jid }); } @@ -84067,17 +88079,17 @@ converse.plugins.add('converse-vcard', { var _message$collection; const chatbox = message === null || message === void 0 ? void 0 : (_message$collection = message.collection) === null || _message$collection === void 0 ? void 0 : _message$collection.chatbox; - const nick = converse_vcard_Strophe.getResourceFromJid(message.get('from')); + const nick = vcard_Strophe.getResourceFromJid(message.get('from')); if (chatbox && chatbox.get('nick') === nick) { - return converse_core_converse.xmppstatus.vcard; + return core_converse.xmppstatus.vcard; } else { const jid = message.occupant && message.occupant.get('jid') || message.get('from'); if (jid) { - return converse_core_converse.vcards.findWhere({ + return core_converse.vcards.findWhere({ jid - }) || converse_core_converse.vcards.create({ + }) || core_converse.vcards.create({ jid }); } else { @@ -84088,7 +88100,7 @@ converse.plugins.add('converse-vcard', { } async function setVCardOnMUCMessage(message) { - await converse_core_api.waitUntil('VCardsInitialized'); + await core_api.waitUntil('VCardsInitialized'); if (['error', 'info'].includes(message.get('type'))) { return; @@ -84097,23 +88109,23 @@ converse.plugins.add('converse-vcard', { } } - converse_core_converse.initVCardCollection = async function () { - converse_core_converse.vcards = new converse_core_converse.VCards(); - converse_core_converse.vcards.browserStorage = converse_core_converse.createStore("".concat(converse_core_converse.bare_jid, "-converse.vcards")); + core_converse.initVCardCollection = async function () { + core_converse.vcards = new core_converse.VCards(); + core_converse.vcards.browserStorage = core_converse.createStore("".concat(core_converse.bare_jid, "-converse.vcards")); await new Promise(resolve => { - converse_core_converse.vcards.fetch({ + core_converse.vcards.fetch({ 'success': resolve, 'error': resolve }, { 'silent': true }); }); - const vcards = converse_core_converse.vcards; + const vcards = core_converse.vcards; - if (converse_core_converse.session) { - const jid = converse_core_converse.session.get('bare_jid'); + if (core_converse.session) { + const jid = core_converse.session.get('bare_jid'); - converse_core_converse.xmppstatus.vcard = vcards.findWhere({ + core_converse.xmppstatus.vcard = vcards.findWhere({ 'jid': jid }) || vcards.create({ 'jid': jid @@ -84125,34 +88137,34 @@ converse.plugins.add('converse-vcard', { */ - converse_core_api.trigger('VCardsInitialized'); + core_api.trigger('VCardsInitialized'); }; function clearVCardsSession() { - if (converse_core_converse.shouldClearCache()) { - converse_core_api.promises.add('VCardsInitialized'); + if (core_converse.shouldClearCache()) { + core_api.promises.add('VCardsInitialized'); - if (converse_core_converse.vcards) { - converse_core_converse.vcards.clearStore(); + if (core_converse.vcards) { + core_converse.vcards.clearStore(); - delete converse_core_converse.vcards; + delete core_converse.vcards; } } } /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('chatBoxInitialized', m => setVCardOnModel(m)); - converse_core_api.listen.on('chatRoomInitialized', m => setVCardOnModel(m)); - converse_core_api.listen.on('chatRoomMessageInitialized', m => setVCardOnMUCMessage(m)); - converse_core_api.listen.on('addClientFeatures', () => converse_core_api.disco.own.features.add(converse_vcard_Strophe.NS.VCARD)); - converse_core_api.listen.on('clearSession', () => clearVCardsSession()); - converse_core_api.listen.on('messageInitialized', m => setVCardOnModel(m)); - converse_core_api.listen.on('rosterContactInitialized', m => setVCardOnModel(m)); - converse_core_api.listen.on('statusInitialized', converse_core_converse.initVCardCollection); + core_api.listen.on('chatBoxInitialized', m => setVCardOnModel(m)); + core_api.listen.on('chatRoomInitialized', m => setVCardOnModel(m)); + core_api.listen.on('chatRoomMessageInitialized', m => setVCardOnMUCMessage(m)); + core_api.listen.on('addClientFeatures', () => core_api.disco.own.features.add(vcard_Strophe.NS.VCARD)); + core_api.listen.on('clearSession', () => clearVCardsSession()); + core_api.listen.on('messageInitialized', m => setVCardOnModel(m)); + core_api.listen.on('rosterContactInitialized', m => setVCardOnModel(m)); + core_api.listen.on('statusInitialized', core_converse.initVCardCollection); /************************ BEGIN API ************************/ - Object.assign(converse_core_converse.api, { + Object.assign(core_converse.api, { /** * The XEP-0054 VCard API * @@ -84189,16 +88201,16 @@ converse.plugins.add('converse-vcard', { } const div = document.createElement('div'); - const vcard_el = converse_vcard_u.toStanza("\n <vCard xmlns=\"vcard-temp\">\n <FN>".concat(data.fn, "</FN>\n <NICKNAME>").concat(data.nickname, "</NICKNAME>\n <URL>").concat(data.url, "</URL>\n <ROLE>").concat(data.role, "</ROLE>\n <EMAIL><INTERNET/><PREF/><USERID>").concat(data.email, "</USERID></EMAIL>\n <PHOTO>\n <TYPE>").concat(data.image_type, "</TYPE>\n <BINVAL>").concat(data.image, "</BINVAL>\n </PHOTO>\n </vCard>"), div); + const vcard_el = vcard_u.toStanza("\n <vCard xmlns=\"vcard-temp\">\n <FN>".concat(data.fn, "</FN>\n <NICKNAME>").concat(data.nickname, "</NICKNAME>\n <URL>").concat(data.url, "</URL>\n <ROLE>").concat(data.role, "</ROLE>\n <EMAIL><INTERNET/><PREF/><USERID>").concat(data.email, "</USERID></EMAIL>\n <PHOTO>\n <TYPE>").concat(data.image_type, "</TYPE>\n <BINVAL>").concat(data.image, "</BINVAL>\n </PHOTO>\n </vCard>"), div); let result; try { - result = await converse_core_api.sendIQ(createStanza("set", jid, vcard_el)); + result = await core_api.sendIQ(createStanza("set", jid, vcard_el)); } catch (e) { throw e; } - await converse_core_api.vcard.update(jid, true); + await core_api.vcard.update(jid, true); return result; }, @@ -84224,15 +88236,15 @@ converse.plugins.add('converse-vcard', { */ get(model, force) { if (typeof model === 'string') { - return getVCard(converse_core_converse, model); - } else if (force || !model.get('vcard_updated') || !converse_vcard_dayjs(model.get('vcard_error')).isSame(new Date(), "day")) { + return getVCard(core_converse, model); + } else if (force || !model.get('vcard_updated') || !vcard_dayjs(model.get('vcard_error')).isSame(new Date(), "day")) { const jid = model.get('jid'); if (!jid) { headless_log.error("No JID to get vcard for"); } - return getVCard(converse_core_converse, jid); + return getVCard(core_converse, jid); } else { return Promise.resolve({}); } @@ -84256,7 +88268,7 @@ converse.plugins.add('converse-vcard', { */ async update(model, force) { const data = await this.get(model, force); - model = typeof model === 'string' ? converse_core_converse.vcards.findWhere({ + model = typeof model === 'string' ? core_converse.vcards.findWhere({ 'jid': model }) : model; @@ -84317,7 +88329,7 @@ converse.plugins.add('converse-vcard', { /* harmony default export */ var headless = (converse); // EXTERNAL MODULE: ./node_modules/jed/jed.js -var jed = __webpack_require__(53); +var jed = __webpack_require__(67); var jed_default = /*#__PURE__*/__webpack_require__.n(jed); // CONCATENATED MODULE: ./src/i18n/index.js @@ -84407,6 +88419,7 @@ async function fetchTranslations(_converse) { api, locale } = _converse; + const dayjs_locale = locale.toLowerCase().replace('_', '-'); if (!isConverseLocale(locale, api.settings.get("locales")) || locale === 'en') { return; @@ -84414,9 +88427,9 @@ async function fetchTranslations(_converse) { const { default: data - } = await __webpack_require__(406)("./".concat(locale, "/LC_MESSAGES/converse.po")); - await __webpack_require__(407)("./".concat(locale.toLowerCase().replace('_', '-'))); - dayjs_min_default.a.locale(getLocale(locale, l => dayjs_min_default.a.locale(l))); + } = await __webpack_require__(494)("./".concat(locale, "/LC_MESSAGES/converse.po")); + await __webpack_require__(495)("./".concat(dayjs_locale)); + dayjs_min_default.a.locale(getLocale(dayjs_locale, l => dayjs_min_default.a.locale(l))); jed_instance = new jed_default.a(data); } @@ -84445,15 +88458,15 @@ Object.assign(i18n, { }, async initialize() { - if (converse_core_converse.isTestEnv()) { - converse_core_converse.locale = 'en'; + if (core_converse.isTestEnv()) { + core_converse.locale = 'en'; } else { try { - converse_core_converse.locale = i18n.getLocale(converse_core_api.settings.get('i18n'), converse_core_api.settings.get("locales")); - await fetchTranslations(converse_core_converse); + core_converse.locale = i18n.getLocale(core_api.settings.get('i18n'), core_api.settings.get("locales")); + await fetchTranslations(core_converse); } catch (e) { headless_log.fatal(e.message); - converse_core_converse.locale = 'en'; + core_converse.locale = 'en'; } } }, @@ -84464,7 +88477,7 @@ Object.assign(i18n, { }); const i18n_ = i18n.__; -// CONCATENATED MODULE: ./src/converse-registry.js +// CONCATENATED MODULE: ./src/shared/registry.js const registry = {}; @@ -84472,7 +88485,7 @@ function define(name, constructor) { this.registry[name] = constructor; } -function converse_registry_register() { +function registry_register() { Object.keys(registry).forEach(name => { if (!customElements.get(name)) { customElements.define(name, registry[name]); @@ -84480,12 +88493,12 @@ function converse_registry_register() { }); } -converse_core_api.elements = { +core_api.elements = { registry, define, - register: converse_registry_register + register: registry_register }; -// CONCATENATED MODULE: ./src/converse-autocomplete.js +// CONCATENATED MODULE: ./src/plugins/autocomplete.js /** * @module converse-autocomplete * @copyright Lea Verou and the Converse.js contributors @@ -84496,16 +88509,15 @@ converse_core_api.elements = { */ -converse.MENTION_BOUNDARIES = ['"', '(', '<', '#', '!', '\\', '/', '+', '~', '[', '{', '^', '>']; -const converse_autocomplete_u = converse.env.utils; -const FILTER_CONTAINS = function FILTER_CONTAINS(text, input) { - return RegExp(converse_autocomplete_helpers.regExpEscape(input.trim()), "i").test(text); +const autocomplete_u = converse.env.utils; +const FILTER_CONTAINS = function (text, input) { + return RegExp(autocomplete_helpers.regExpEscape(input.trim()), "i").test(text); }; -const FILTER_STARTSWITH = function FILTER_STARTSWITH(text, input) { - return RegExp("^" + converse_autocomplete_helpers.regExpEscape(input.trim()), "i").test(text); +const FILTER_STARTSWITH = function (text, input) { + return RegExp("^" + autocomplete_helpers.regExpEscape(input.trim()), "i").test(text); }; -const SORT_BY_LENGTH = function SORT_BY_LENGTH(a, b) { +const SORT_BY_LENGTH = function (a, b) { if (a.length !== b.length) { return a.length - b.length; } @@ -84513,7 +88525,7 @@ const SORT_BY_LENGTH = function SORT_BY_LENGTH(a, b) { return a < b ? -1 : 1; }; -const SORT_BY_QUERY_POSITION = function SORT_BY_QUERY_POSITION(a, b) { +const SORT_BY_QUERY_POSITION = function (a, b) { const query = a.query.toLowerCase(); const x = a.label.toLowerCase().indexOf(query); const y = b.label.toLowerCase().indexOf(query); @@ -84543,7 +88555,7 @@ const ITEM = (text, input) => { return element; }; -const converse_autocomplete_helpers = { +const autocomplete_helpers = { getElement(expr, el) { return typeof expr === "string" ? (el || document).querySelector(expr) : expr || null; }, @@ -84578,8 +88590,8 @@ const converse_autocomplete_helpers = { return s.replace(/[-\\^$*+?.()|[\]{}]/g, "\\$&"); }, - isMention(word, ac_triggers, mention_boundaries) { - return ac_triggers.includes(word[0]) || mention_boundaries.includes(word[0]) && ac_triggers.includes(word[1]); + isMention(word, ac_triggers) { + return ac_triggers.includes(word[0]) || autocomplete_u.isMentionBoundary(word[0]) && ac_triggers.includes(word[1]); } }; @@ -84621,11 +88633,11 @@ class Suggestion extends String { } -class converse_autocomplete_AutoComplete { +class autocomplete_AutoComplete { constructor(el, config = {}) { this.is_opened = false; - if (converse_autocomplete_u.hasClass('suggestion-box', el)) { + if (autocomplete_u.hasClass('suggestion-box', el)) { this.container = el; } else { this.container = el.querySelector('.suggestion-box'); @@ -84688,9 +88700,9 @@ class converse_autocomplete_AutoComplete { "mouseover": ev => this.onMouseOver(ev) } }; - converse_autocomplete_helpers.bind(this.input, this._events.input); - converse_autocomplete_helpers.bind(this.input.form, this._events.form); - converse_autocomplete_helpers.bind(this.ul, this._events.ul); + autocomplete_helpers.bind(this.input, this._events.input); + autocomplete_helpers.bind(this.input.form, this._events.form); + autocomplete_helpers.bind(this.ul, this._events.ul); } set list(list) { @@ -84702,7 +88714,7 @@ class converse_autocomplete_AutoComplete { var _helpers$getElement; // Element or CSS selector - const children = ((_helpers$getElement = converse_autocomplete_helpers.getElement(list)) === null || _helpers$getElement === void 0 ? void 0 : _helpers$getElement.children) || []; + const children = ((_helpers$getElement = autocomplete_helpers.getElement(list)) === null || _helpers$getElement === void 0 ? void 0 : _helpers$getElement.children) || []; this._list = Array.from(children).filter(el => !el.disabled).map(el => { const text = el.textContent.trim(); const value = el.value || text; @@ -84744,7 +88756,7 @@ class converse_autocomplete_AutoComplete { insertValue(suggestion) { if (this.match_current_word) { - converse_autocomplete_u.replaceCurrentWord(this.input, suggestion.value, converse.MENTION_BOUNDARIES); + autocomplete_u.replaceCurrentWord(this.input, suggestion.value); } else { this.input.value = suggestion.value; } @@ -84763,8 +88775,8 @@ class converse_autocomplete_AutoComplete { destroy() { //remove events from the input and its form - converse_autocomplete_helpers.unbind(this.input, this._events.input); - converse_autocomplete_helpers.unbind(this.input.form, this._events.form); + autocomplete_helpers.unbind(this.input, this._events.input); + autocomplete_helpers.unbind(this.input.form, this._events.form); this.input.removeAttribute("aria-autocomplete"); } @@ -84803,7 +88815,7 @@ class converse_autocomplete_AutoComplete { select(selected) { if (selected) { - this.index = converse_autocomplete_u.siblingIndex(selected); + this.index = autocomplete_u.siblingIndex(selected); } else { selected = this.ul.children[this.index]; } @@ -84822,7 +88834,7 @@ class converse_autocomplete_AutoComplete { } onMouseOver(ev) { - const li = converse_autocomplete_u.ancestor(ev.target, 'li'); + const li = autocomplete_u.ancestor(ev.target, 'li'); if (li) { this.goto(Array.prototype.slice.call(this.ul.children).indexOf(li)); @@ -84834,7 +88846,7 @@ class converse_autocomplete_AutoComplete { return; // Only select on left click } - const li = converse_autocomplete_u.ancestor(ev.target, 'li'); + const li = autocomplete_u.ancestor(ev.target, 'li'); if (li) { ev.preventDefault(); @@ -84873,9 +88885,9 @@ class converse_autocomplete_AutoComplete { this.auto_completing = true; } else if (ev.key === "Backspace") { - const word = converse_autocomplete_u.getCurrentWord(ev.target, ev.target.selectionEnd - 1); + const word = autocomplete_u.getCurrentWord(ev.target, ev.target.selectionEnd - 1); - if (converse_autocomplete_helpers.isMention(word, this.ac_triggers, converse.MENTION_BOUNDARIES)) { + if (autocomplete_helpers.isMention(word, this.ac_triggers)) { this.auto_completing = true; } } @@ -84894,14 +88906,14 @@ class converse_autocomplete_AutoComplete { return; } - let value = this.match_current_word ? converse_autocomplete_u.getCurrentWord(this.input) : this.input.value; - const contains_trigger = converse_autocomplete_helpers.isMention(value, this.ac_triggers, converse.MENTION_BOUNDARIES); + let value = this.match_current_word ? autocomplete_u.getCurrentWord(this.input) : this.input.value; + const contains_trigger = autocomplete_helpers.isMention(value, this.ac_triggers); if (contains_trigger) { this.auto_completing = true; if (!this.include_triggers.includes(ev.key)) { - value = converse.MENTION_BOUNDARIES.includes(value[0]) ? value.slice('2') : value.slice('1'); + value = autocomplete_u.isMentionBoundary(value[0]) ? value.slice('2') : value.slice('1'); } } @@ -84938,13 +88950,13 @@ class converse_autocomplete_AutoComplete { } // Make it an event emitter -Object.assign(converse_autocomplete_AutoComplete.prototype, Events); +Object.assign(autocomplete_AutoComplete.prototype, Events); converse.plugins.add("converse-autocomplete", { initialize() { const _converse = this._converse; _converse.FILTER_CONTAINS = FILTER_CONTAINS; _converse.FILTER_STARTSWITH = FILTER_STARTSWITH; - _converse.AutoComplete = converse_autocomplete_AutoComplete; + _converse.AutoComplete = autocomplete_AutoComplete; } }); @@ -84952,7 +88964,7 @@ converse.plugins.add("converse-autocomplete", { function bookmarks_list_templateObject2() { const data = bookmarks_list_taggedTemplateLiteral(["\n <div class=\"list-container list-container--bookmarks ", "\">\n <a class=\"list-toggle bookmarks-toggle controlbox-padded\"\n title=\"", "\"\n @click=", ">\n\n <span class=\"fa ", "\">\n </span> ", "</a>\n <div class=\"items-list bookmarks rooms-list ", "\">\n ", "\n </div>\n </div>\n "]); - bookmarks_list_templateObject2 = function _templateObject2() { + bookmarks_list_templateObject2 = function () { return data; }; @@ -84962,7 +88974,7 @@ function bookmarks_list_templateObject2() { function bookmarks_list_templateObject() { const data = bookmarks_list_taggedTemplateLiteral(["\n <div class=\"list-item controlbox-padded room-item available-chatroom d-flex flex-row ", "\" data-room-jid=\"", "\">\n <a class=\"list-item-link open-room w-100\" data-room-jid=\"", "\"\n title=\"", "\"\n @click=", ">", "</a>\n\n <a class=\"list-item-action remove-bookmark fa fa-bookmark align-self-center ", "\"\n data-room-jid=\"", "\"\n data-bookmark-name=\"", "\"\n title=\"", "\"\n @click=", "></a>\n </div>\n "]); - bookmarks_list_templateObject = function _templateObject() { + bookmarks_list_templateObject = function () { return data; }; @@ -84995,7 +89007,7 @@ const bookmark_item = o => { function muc_bookmark_form_templateObject() { const data = muc_bookmark_form_taggedTemplateLiteral(["\n <form class=\"converse-form chatroom-form\" @submit=", ">\n <legend>", "</legend>\n <fieldset class=\"form-group\">\n <label for=\"converse_muc_bookmark_name\">", "</label>\n <input class=\"form-control\" type=\"text\" value=\"", "\" name=\"name\" required=\"required\" id=\"converse_muc_bookmark_name\"/>\n </fieldset>\n <fieldset class=\"form-group\">\n <label for=\"converse_muc_bookmark_nick\">", "</label>\n <input class=\"form-control\" type=\"text\" name=\"nick\" value=\"", "\" id=\"converse_muc_bookmark_nick\"/>\n </fieldset>\n <fieldset class=\"form-group form-check\">\n <input class=\"form-check-input\" id=\"converse_muc_bookmark_autojoin\" type=\"checkbox\" name=\"autojoin\"/>\n <label class=\"form-check-label\" for=\"converse_muc_bookmark_autojoin\">", "</label>\n </fieldset>\n <fieldset class=\"form-group\">\n <input class=\"btn btn-primary\" type=\"submit\" value=\"", "\">\n <input class=\"btn btn-secondary button-cancel\" type=\"button\" value=\"", "\" @click=", ">\n </fieldset>\n </form>\n "]); - muc_bookmark_form_templateObject = function _templateObject() { + muc_bookmark_form_templateObject = function () { return data; }; @@ -85047,7 +89059,7 @@ const paddedLt = /^\s*</; // Caches a local reference to `Element.prototype` for const ElementProto = typeof Element !== 'undefined' && Element.prototype || {}; -const view_indexOf = function indexOf(array, item) { +const view_indexOf = function (array, item) { for (let i = 0, len = array.length; i < len; i++) if (array[i] === item) return i; return -1; @@ -85055,7 +89067,7 @@ const view_indexOf = function indexOf(array, item) { // if an existing element is not provided... -const view_View = function View(options) { +const View = function (options) { this.cid = lodash_es_uniqueId('view'); this._domEvents = []; this.preinitialize.apply(this, arguments); @@ -85065,28 +89077,28 @@ const view_View = function View(options) { this.initialize.apply(this, arguments); }; -view_View.extend = inherits; // Cached regex to split keys for `delegate`. +View.extend = inherits; // Cached regex to split keys for `delegate`. const delegateEventSplitter = /^(\S+)\s*(.*)$/; // List of view options to be set as properties. const viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; // Set up all inheritable **View** properties and methods. -Object.assign(view_View.prototype, Events, { +Object.assign(View.prototype, Events, { // The default `tagName` of a View's element is `"div"`. tagName: 'div', - $: function $(selector) { + $: function (selector) { return this.el.querySelectorAll(selector); }, // preinitialize is an empty function by default. You can override it with a function // or object. preinitialize will run before any instantiation logic is run in the View - preinitialize: function preinitialize() {}, + preinitialize: function () {}, // Initialize is an empty function by default. Override it with your own // initialization logic. - initialize: function initialize() {}, + initialize: function () {}, // **render** is the core function that your view should override, in order // to populate its element (`this.el`), with the appropriate HTML. The // convention is for **render** to always return `this`. - render: function render() { + render: function () { lodash_es_isFunction(this.beforeRender) && this.beforeRender(); lodash_es_isFunction(this.toHTML) && render_render(this.toHTML(), this.el); lodash_es_isFunction(this.afterRender) && this.afterRender(); @@ -85094,7 +89106,7 @@ Object.assign(view_View.prototype, Events, { }, // Remove this view by taking the element out of the DOM, and removing any // applicable Backbone.Events listeners. - remove: function remove() { + remove: function () { this._removeElement(); this.stopListening(); @@ -85103,13 +89115,13 @@ Object.assign(view_View.prototype, Events, { // Remove this view's element from the document and all event listeners // attached to it. Exposed for subclasses using an alternative DOM // manipulation API. - _removeElement: function _removeElement() { + _removeElement: function () { this.undelegateEvents(); if (this.el.parentNode) this.el.parentNode.removeChild(this.el); }, // Change the view's element (`this.el` property) and re-delegate the // view's events on the new element. - setElement: function setElement(element) { + setElement: function (element) { this.undelegateEvents(); this._setElement(element); @@ -85120,7 +89132,7 @@ Object.assign(view_View.prototype, Events, { // Apply the `element` to the view. `element` can be a CSS selector, // a string of HTML, or an Element node. If passed a NodeList or CSS // selector, uses just the first match. - _setElement: function _setElement(element) { + _setElement: function (element) { if (typeof element == 'string') { if (paddedLt.test(element)) { const el = document.createElement('div'); @@ -85148,7 +89160,7 @@ Object.assign(view_View.prototype, Events, { // pairs. Callbacks will be bound to the view, with `this` set properly. // Uses event delegation for efficiency. // Omitting the selector binds the event to `this.el`. - delegateEvents: function delegateEvents(events) { + delegateEvents: function (events) { events || (events = lodash_es_result(this, 'events')); if (!events) return this; this.undelegateEvents(); @@ -85171,7 +89183,7 @@ Object.assign(view_View.prototype, Events, { // the event's `delegateTarget` property is set to it and the return the // result of calling bound `listener` with the parameters given to the // handler. - delegate: function delegate(eventName, selector, listener) { + delegate: function (eventName, selector, listener) { const root = this.el; if (!root) { @@ -85226,7 +89238,7 @@ Object.assign(view_View.prototype, Events, { // Clears all callbacks previously bound to the view by `delegateEvents`. // You usually don't need to use this, but may wish to if you have multiple // Backbone views attached to the same DOM element. - undelegateEvents: function undelegateEvents() { + undelegateEvents: function () { if (this.el) { for (let i = 0, len = this._domEvents.length; i < len; i++) { const item = this._domEvents[i]; @@ -85240,7 +89252,7 @@ Object.assign(view_View.prototype, Events, { }, // A finer-grained `undelegateEvents` for removing a single delegated event. // `selector` and `listener` are both optional. - undelegate: function undelegate(eventName, selector, listener) { + undelegate: function (eventName, selector, listener) { if (typeof selector === 'function') { listener = selector; selector = null; @@ -85269,14 +89281,14 @@ Object.assign(view_View.prototype, Events, { }, // Produces a DOM element to be assigned to your view. Exposed for // subclasses using an alternative DOM manipulation API. - _createElement: function _createElement(tagName) { + _createElement: function (tagName) { return document.createElement(tagName); }, // Ensure that the View has a DOM element to render into. // If `this.el` is a string, pass it through `$()`, take the first // matching element, and re-assign it to `el`. Otherwise, create // an element from the `id`, `className` and `tagName` properties. - _ensureElement: function _ensureElement() { + _ensureElement: function () { if (!this.el) { const attrs = lodash_es_assignIn({}, lodash_es_result(this, 'attributes')); if (this.id) attrs.id = lodash_es_result(this, 'id'); @@ -85290,7 +89302,7 @@ Object.assign(view_View.prototype, Events, { }, // Set attributes from a hash on this view's element. Exposed for // subclasses using an alternative DOM manipulation API. - _setAttributes: function _setAttributes(attrs) { + _setAttributes: function (attrs) { for (const attr in attrs) { attr in this.el ? this.el[attr] = attrs[attr] : this.el.setAttribute(attr, attrs[attr]); } @@ -85339,7 +89351,7 @@ var invokeMap = _baseRest(function(collection, path, args) { /* harmony default export */ var lodash_es_invokeMap = (invokeMap); -// CONCATENATED MODULE: ./src/converse-bookmark-views.js +// CONCATENATED MODULE: ./src/plugins/bookmark-views.js /** * @module converse-bookmark-views * @description Converse.js plugin which adds views for XEP-0048 bookmarks @@ -85355,9 +89367,9 @@ var invokeMap = _baseRest(function(collection, path, args) { const { - Strophe: converse_bookmark_views_Strophe + Strophe: bookmark_views_Strophe } = converse.env; -const converse_bookmark_views_u = converse.env.utils; +const bookmark_views_u = converse.env.utils; converse.plugins.add('converse-bookmark-views', { /* Plugin dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -85379,10 +89391,10 @@ converse.plugins.add('converse-bookmark-views', { // ==================================== // Refer to docs/source/configuration.rst for explanations of these // configuration settings. - converse_core_api.settings.extend({ + core_api.settings.extend({ hide_open_bookmarks: true }); - Object.assign(converse_core_converse, { + Object.assign(core_converse, { removeBookmarkViaEvent(ev) { /* Remove a bookmark as determined by the passed in * event. @@ -85392,7 +89404,7 @@ converse.plugins.add('converse-bookmark-views', { const jid = ev.target.getAttribute('data-room-jid'); if (confirm(i18n_("Are you sure you want to remove the bookmark \"%1$s\"?", name))) { - lodash_es_invokeMap(converse_core_converse.bookmarks.where({ + lodash_es_invokeMap(core_converse.bookmarks.where({ 'jid': jid }), model_Model.prototype.destroy); } @@ -85404,11 +89416,11 @@ converse.plugins.add('converse-bookmark-views', { */ ev.preventDefault(); const jid = ev.target.getAttribute('data-room-jid'); - converse_core_api.rooms.open(jid, { + core_api.rooms.open(jid, { 'bring_to_foreground': true }); - converse_core_converse.chatboxviews.get(jid).renderBookmarkForm(); + core_converse.chatboxviews.get(jid).renderBookmarkForm(); } }); @@ -85418,8 +89430,8 @@ converse.plugins.add('converse-bookmark-views', { * @private */ setBookmarkState() { - if (converse_core_converse.bookmarks !== undefined) { - const models = converse_core_converse.bookmarks.where({ + if (core_converse.bookmarks !== undefined) { + const models = core_converse.bookmarks.where({ 'jid': this.model.get('jid') }); @@ -85435,7 +89447,7 @@ converse.plugins.add('converse-bookmark-views', { this.hideChatRoomContents(); if (!this.bookmark_form) { - this.bookmark_form = new converse_core_converse.MUCBookmarkForm({ + this.bookmark_form = new core_converse.MUCBookmarkForm({ 'model': this.model, 'chatroomview': this }); @@ -85443,13 +89455,13 @@ converse.plugins.add('converse-bookmark-views', { container_el.insertAdjacentElement('beforeend', this.bookmark_form.el); } - converse_bookmark_views_u.showElement(this.bookmark_form.el); + bookmark_views_u.showElement(this.bookmark_form.el); }, toggleBookmark(ev) { ev === null || ev === void 0 ? void 0 : ev.preventDefault(); - const models = converse_core_converse.bookmarks.where({ + const models = core_converse.bookmarks.where({ 'jid': this.model.get('jid') }); @@ -85461,8 +89473,8 @@ converse.plugins.add('converse-bookmark-views', { } }; - Object.assign(converse_core_converse.ChatRoomView.prototype, bookmarkableChatRoomView); - converse_core_converse.MUCBookmarkForm = view_View.extend({ + Object.assign(core_converse.ChatRoomView.prototype, bookmarkableChatRoomView); + core_converse.MUCBookmarkForm = View.extend({ className: 'muc-bookmark-form chatroom-form-container', initialize(attrs) { @@ -85482,7 +89494,7 @@ converse.plugins.add('converse-bookmark-views', { ev.preventDefault(); - converse_core_converse.bookmarks.createBookmark({ + core_converse.bookmarks.createBookmark({ 'jid': this.model.get('jid'), 'autojoin': ((_ev$target$querySelec = ev.target.querySelector('input[name="autojoin"]')) === null || _ev$target$querySelec === void 0 ? void 0 : _ev$target$querySelec.checked) || false, 'name': (_ev$target$querySelec2 = ev.target.querySelector('input[name=name]')) === null || _ev$target$querySelec2 === void 0 ? void 0 : _ev$target$querySelec2.value, @@ -85498,19 +89510,19 @@ converse.plugins.add('converse-bookmark-views', { } }); - converse_core_converse.BookmarksView = view_View.extend({ + core_converse.BookmarksView = View.extend({ tagName: 'span', initialize() { this.listenTo(this.model, 'add', this.render); this.listenTo(this.model, 'remove', this.render); - this.listenTo(converse_core_converse.chatboxes, 'add', this.render); - this.listenTo(converse_core_converse.chatboxes, 'remove', this.render); - const id = "converse.room-bookmarks".concat(converse_core_converse.bare_jid, "-list-model"); - this.list_model = new converse_core_converse.BookmarksList({ + this.listenTo(core_converse.chatboxes, 'add', this.render); + this.listenTo(core_converse.chatboxes, 'remove', this.render); + const id = "converse.room-bookmarks".concat(core_converse.bare_jid, "-list-model"); + this.list_model = new core_converse.BookmarksList({ id }); - this.list_model.browserStorage = converse_core_converse.createStore(id); + this.list_model.browserStorage = core_converse.createStore(id); const render = () => { this.render(); @@ -85524,10 +89536,10 @@ converse.plugins.add('converse-bookmark-views', { }, toHTML() { - const is_hidden = b => !!(converse_core_api.settings.get('hide_open_bookmarks') && converse_core_converse.chatboxes.get(b.get('jid'))); + const is_hidden = b => !!(core_api.settings.get('hide_open_bookmarks') && core_converse.chatboxes.get(b.get('jid'))); return bookmarks_list({ - '_converse': converse_core_converse, + '_converse': core_converse, 'bookmarks': this.model, 'hidden': this.model.getUnopenedBookmarks().length && true, 'is_hidden': is_hidden, @@ -85539,9 +89551,9 @@ converse.plugins.add('converse-bookmark-views', { }, insertIntoControlBox() { - const controlboxview = converse_core_converse.chatboxviews.get('controlbox'); + const controlboxview = core_converse.chatboxviews.get('controlbox'); - if (controlboxview !== undefined && !converse_bookmark_views_u.rootContains(converse_core_converse.root, this.el)) { + if (controlboxview !== undefined && !bookmark_views_u.rootContains(core_converse.root, this.el)) { const el = controlboxview.el.querySelector('.list-container--bookmarks'); el && el.parentNode.replaceChild(this.el, el); } @@ -85552,12 +89564,12 @@ converse.plugins.add('converse-bookmark-views', { const name = ev.target.textContent; const jid = ev.target.getAttribute('data-room-jid'); const data = { - 'name': name || converse_bookmark_views_Strophe.unescapeNode(converse_bookmark_views_Strophe.getNodeFromJid(jid)) || jid + 'name': name || bookmark_views_Strophe.unescapeNode(bookmark_views_Strophe.getNodeFromJid(jid)) || jid }; - converse_core_api.rooms.open(jid, data, true); + core_api.rooms.open(jid, data, true); }, - removeBookmark: converse_core_converse.removeBookmarkViaEvent, + removeBookmark: core_converse.removeBookmarkViaEvent, toggleBookmarksList(ev) { if (ev && ev.preventDefault) { @@ -85566,19 +89578,19 @@ converse.plugins.add('converse-bookmark-views', { const icon_el = ev.target.matches('.fa') ? ev.target : ev.target.querySelector('.fa'); - if (converse_bookmark_views_u.hasClass('fa-caret-down', icon_el)) { - converse_bookmark_views_u.slideIn(this.el.querySelector('.bookmarks')); + if (bookmark_views_u.hasClass('fa-caret-down', icon_el)) { + bookmark_views_u.slideIn(this.el.querySelector('.bookmarks')); this.list_model.save({ - 'toggle-state': converse_core_converse.CLOSED + 'toggle-state': core_converse.CLOSED }); icon_el.classList.remove("fa-caret-down"); icon_el.classList.add("fa-caret-right"); } else { icon_el.classList.remove("fa-caret-right"); icon_el.classList.add("fa-caret-down"); - converse_bookmark_views_u.slideOut(this.el.querySelector('.bookmarks')); + bookmark_views_u.slideOut(this.el.querySelector('.bookmarks')); this.list_model.save({ - 'toggle-state': converse_core_converse.OPENED + 'toggle-state': core_converse.OPENED }); } } @@ -85586,10 +89598,10 @@ converse.plugins.add('converse-bookmark-views', { }); /************************ BEGIN Event Handlers ************************/ - const initBookmarkViews = async function initBookmarkViews() { - await converse_core_api.waitUntil('roomsPanelRendered'); - converse_core_converse.bookmarksview = new converse_core_converse.BookmarksView({ - 'model': converse_core_converse.bookmarks + const initBookmarkViews = async function () { + await core_api.waitUntil('roomsPanelRendered'); + core_converse.bookmarksview = new core_converse.BookmarksView({ + 'model': core_converse.bookmarks }); /** * Triggered once the _converse.Bookmarks collection and _converse.BookmarksView view @@ -85598,11 +89610,11 @@ converse.plugins.add('converse-bookmark-views', { * @example _converse.api.listen.on('bookmarkViewsInitialized', () => { ... }); */ - converse_core_api.trigger('bookmarkViewsInitialized'); + core_api.trigger('bookmarkViewsInitialized'); }; - converse_core_api.listen.on('getHeadingButtons', (view, buttons) => { - if (converse_core_converse.allow_bookmarks && view.model.get('type') === converse_core_converse.CHATROOMS_TYPE) { + core_api.listen.on('getHeadingButtons', (view, buttons) => { + if (core_converse.allow_bookmarks && view.model.get('type') === core_converse.CHATROOMS_TYPE) { const bookmarked = view.model.get('bookmarked'); const data = { 'i18n_title': bookmarked ? i18n_('Unbookmark this groupchat') : i18n_('Bookmark this groupchat'), @@ -85615,135 +89627,186 @@ converse.plugins.add('converse-bookmark-views', { const names = buttons.map(t => t.name); const idx = names.indexOf('details'); - const data_promise = converse_core_converse.checkBookmarksSupport().then(s => s ? data : ''); + const data_promise = core_converse.checkBookmarksSupport().then(s => s ? data : ''); return idx > -1 ? [...buttons.slice(0, idx), data_promise, ...buttons.slice(idx)] : [data_promise, ...buttons]; } return buttons; }); - converse_core_api.listen.on('bookmarksInitialized', initBookmarkViews); - converse_core_api.listen.on('chatRoomViewInitialized', view => view.setBookmarkState()); + core_api.listen.on('bookmarksInitialized', initBookmarkViews); + core_api.listen.on('chatRoomViewInitialized', view => view.setBookmarkState()); /************************ END Event Handlers ************************/ } }); -// EXTERNAL MODULE: ./node_modules/bootstrap.native/dist/bootstrap-native.js -var bootstrap_native = __webpack_require__(27); -var bootstrap_native_default = /*#__PURE__*/__webpack_require__.n(bootstrap_native); +// EXTERNAL MODULE: ./node_modules/urijs/src/URI.js +var URI = __webpack_require__(35); +var URI_default = /*#__PURE__*/__webpack_require__.n(URI); -// CONCATENATED MODULE: ./src/templates/alert.js -function alert_templateObject() { - const data = alert_taggedTemplateLiteral(["<div class=\"alert ", "\" role=\"alert\"><p>", "</p></div>"]); +// CONCATENATED MODULE: ./src/templates/audio.js +function audio_templateObject() { + const data = audio_taggedTemplateLiteral(["\n <audio controls src=\"", "\"></audio>\n <a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>\n"]); - alert_templateObject = function _templateObject() { + audio_templateObject = function () { return data; }; return data; } -function alert_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function audio_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var templates_alert = (o => lit_html_html(alert_templateObject(), o.type, o.message)); -// CONCATENATED MODULE: ./src/templates/buttons.js -function buttons_templateObject2() { - const data = buttons_taggedTemplateLiteral(["<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"", "\"><span aria-hidden=\"true\">\xD7</span></button>"]); +/* harmony default export */ var audio = (o => lit_html_html(audio_templateObject(), o.url, o.url, o.label_download)); +// CONCATENATED MODULE: ./src/templates/file.js +function file_templateObject() { + const data = file_taggedTemplateLiteral(["<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>"]); - buttons_templateObject2 = function _templateObject2() { + file_templateObject = function () { return data; }; return data; } -function buttons_templateObject() { - const data = buttons_taggedTemplateLiteral(["<button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">", "</button>"]); +function file_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - buttons_templateObject = function _templateObject() { - return data; - }; - return data; -} +/* harmony default export */ var templates_file = (o => lit_html_html(file_templateObject(), o.url, o.label_download)); +// EXTERNAL MODULE: ./src/templates/form_captcha.html +var form_captcha = __webpack_require__(170); +var form_captcha_default = /*#__PURE__*/__webpack_require__.n(form_captcha); -function buttons_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +// EXTERNAL MODULE: ./src/templates/form_checkbox.html +var form_checkbox = __webpack_require__(171); +var form_checkbox_default = /*#__PURE__*/__webpack_require__.n(form_checkbox); +// EXTERNAL MODULE: ./src/templates/form_input.html +var form_input = __webpack_require__(64); +var form_input_default = /*#__PURE__*/__webpack_require__.n(form_input); +// EXTERNAL MODULE: ./src/templates/form_select.html +var form_select = __webpack_require__(172); +var form_select_default = /*#__PURE__*/__webpack_require__.n(form_select); -const modal_close_button = lit_html_html(buttons_templateObject(), i18n_('Close')); -const modal_header_close_button = lit_html_html(buttons_templateObject2(), i18n_('Close')); -// CONCATENATED MODULE: ./src/templates/alert_modal.js -function alert_modal_templateObject2() { - const data = alert_modal_taggedTemplateLiteral(["<p>", "</p>"]); +// EXTERNAL MODULE: ./src/templates/form_textarea.html +var form_textarea = __webpack_require__(173); +var form_textarea_default = /*#__PURE__*/__webpack_require__.n(form_textarea); + +// EXTERNAL MODULE: ./src/templates/form_url.html +var form_url = __webpack_require__(174); +var form_url_default = /*#__PURE__*/__webpack_require__.n(form_url); + +// EXTERNAL MODULE: ./src/templates/form_username.html +var form_username = __webpack_require__(65); +var form_username_default = /*#__PURE__*/__webpack_require__.n(form_username); - alert_modal_templateObject2 = function _templateObject2() { +// CONCATENATED MODULE: ./src/templates/directives/image.js +function image_templateObject() { + const data = image_taggedTemplateLiteral(["<a href=\"", "\"\n class=\"chat-image__link\"\n target=\"_blank\"\n rel=\"noopener\"\n ><img class=\"chat-image img-thumbnail\" src=\"", "\" @click=", " @error=", " @load=", "/></a>"]); + + image_templateObject = function () { return data; }; return data; } -function alert_modal_templateObject() { - const data = alert_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header ", "\">\n <h5 class=\"modal-title\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n ", "\n </div>\n </div>\n </div>\n"]); +function image_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + +/** + * lit-html directive which attempts to render an <img> element from a URL. + * It will fall back to rendering an <a> element if it can't. + * + * @param { String } src - The value that will be assigned to the `src` attribute of the `<img>` element. + * @param { String } href - The value that will be assigned to the `href` attribute of the `<img>` element. + * @param { Function } onLoad - A callback function to be called once the image has loaded. + * @param { Function } onClick - A callback function to be called once the image has been clicked. +*/ + +const renderImage = directive_directive((src, href, onLoad, onClick) => part => { + function onError() { + const u = converse.env.utils; + + if (u.isURLWithImageExtension(src)) { + part.setValue(u.convertUrlToHyperlink(href)); + part.commit(); + } else { + // Before giving up and falling back to just rendering a hyperlink, + // we attach `.png` and try one more time. + // This works with some Imgur URLs + part.setValue(renderImage("".concat(src, ".png"), href, onLoad, onClick)); + part.commit(); + } + } + + part.setValue(lit_html_html(image_templateObject(), href, src, onClick, onError, onLoad)); +}); +// CONCATENATED MODULE: ./src/templates/image.js +function templates_image_templateObject() { + const data = templates_image_taggedTemplateLiteral(["", ""]); - alert_modal_templateObject = function _templateObject() { + templates_image_templateObject = function () { return data; }; return data; } -function alert_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function templates_image_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +/* harmony default export */ var templates_image = (o => lit_html_html(templates_image_templateObject(), renderImage(o.url, o.url, o.onLoad, o.onClick))); +// EXTERNAL MODULE: ./src/templates/select_option.html +var select_option = __webpack_require__(175); +var select_option_default = /*#__PURE__*/__webpack_require__.n(select_option); -/* harmony default export */ var alert_modal = (o => lit_html_html(alert_modal_templateObject(), o.level, o.title, modal_header_close_button, o.messages.map(message => lit_html_html(alert_modal_templateObject2(), message)))); -// CONCATENATED MODULE: ./src/templates/prompt.js -function prompt_templateObject3() { - const data = prompt_taggedTemplateLiteral(["<p>", "</p>"]); +// CONCATENATED MODULE: ./src/templates/video.js +function video_templateObject() { + const data = video_taggedTemplateLiteral(["<video controls preload=\"metadata\" src=\"", "\" style=\"max-height: 50vh\"></video>"]); - prompt_templateObject3 = function _templateObject3() { + video_templateObject = function () { return data; }; return data; } -function prompt_templateObject2() { - const data = prompt_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header ", "\">\n <h5 class=\"modal-title\">", "</h5>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">\xD7</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form converse-form--modal confirm\" action=\"#\">\n <div class=\"form-group\">\n ", "\n </div>\n ", "\n <div class=\"form-group\">\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n <input type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\" value=\"", "\"/>\n </div>\n </form>\n </div>\n </div>\n </div>\n"]); +function video_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + +/* harmony default export */ var video = (o => lit_html_html(video_templateObject(), o.url)); +// CONCATENATED MODULE: ./src/utils/html.js +function html_templateObject2() { + const data = html_taggedTemplateLiteral(["<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>"]); - prompt_templateObject2 = function _templateObject2() { + html_templateObject2 = function () { return data; }; return data; } -function prompt_templateObject() { - const data = prompt_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label>\n ", "\n <input type=\"text\"\n name=\"", "\"\n class=\"", " form-control form-control--labeled\"\n ?required=\"", "\"\n placeholder=\"", "\" />\n </label>\n </div>\n"]); +function html_templateObject() { + const data = html_taggedTemplateLiteral(["\n <a target=\"_blank\"\n rel=\"noopener\"\n @click=", "\n href=\"", "\">", "</a>"]); - prompt_templateObject = function _templateObject() { + html_templateObject = function () { return data; }; return data; } -function prompt_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -const tpl_field = f => lit_html_html(prompt_templateObject(), f.label || '', f.name, f.challenge_failed ? 'error' : '', f.required, f.placeholder); +function html_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var templates_prompt = (o => lit_html_html(prompt_templateObject2(), o.level || '', o.title, o.messages.map(message => lit_html_html(prompt_templateObject3(), message)), o.fields.map(f => tpl_field(f)), i18n_('OK'), i18n_('Cancel'))); -// CONCATENATED MODULE: ./src/converse-modal.js /** - * @module converse-modal - * @copyright The Converse.js contributors + * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) + * @description This is the DOM/HTML utilities module. */ @@ -85755,563 +89818,409 @@ const tpl_field = f => lit_html_html(prompt_templateObject(), f.label || '', f.n -const { - sizzle: converse_modal_sizzle -} = converse.env; -const converse_modal_u = converse.env.utils; -let converse_modal_converse; -const BootstrapModal = view_View.extend({ - className: "modal", - events: { - 'click .nav-item .nav-link': 'switchTab' - }, - initialize() { - this.render(); - this.el.setAttribute('tabindex', '-1'); - this.el.setAttribute('role', 'dialog'); - this.el.setAttribute('aria-hidden', 'true'); - const label_id = this.el.querySelector('.modal-title').getAttribute('id'); - label_id && this.el.setAttribute('aria-labelledby', label_id); - this.insertIntoDOM(); - const Modal = bootstrap_native_default.a.Modal; - this.modal = new Modal(this.el, { - backdrop: true, - keyboard: true - }); - this.el.addEventListener('hide.bs.modal', () => converse_modal_u.removeClass('selected', this.trigger_el), false); - }, - insertIntoDOM() { - const container_el = converse_modal_converse.chatboxviews.el.querySelector("#converse-modals"); - container_el.insertAdjacentElement('beforeEnd', this.el); - }, - switchTab(ev) { - ev.stopPropagation(); - ev.preventDefault(); - converse_modal_sizzle('.nav-link.active', this.el).forEach(el => { - converse_modal_u.removeClass('active', this.el.querySelector(el.getAttribute('href'))); - converse_modal_u.removeClass('active', el); - }); - converse_modal_u.addClass('active', ev.target); - converse_modal_u.addClass('active', this.el.querySelector(ev.target.getAttribute('href'))); - }, - alert(message, type = 'primary') { - const body = this.el.querySelector('.modal-alert'); - if (body === null) { - headless_log.error("Could not find a .modal-alert element in the modal to show an alert message in!"); - return; - } // FIXME: Instead of adding the alert imperatively, we should - // find a way to let the modal rerender with an alert message +const APPROVED_URL_PROTOCOLS = ['http', 'https', 'xmpp', 'mailto']; - render_render(templates_alert({ - 'type': "alert-".concat(type), - 'message': message - }), body); - const el = body.firstElementChild; - setTimeout(() => { - converse_modal_u.addClass('fade-out', el); - setTimeout(() => converse_modal_u.removeElement(el), 600); - }, 5000); - }, +function getAutoCompleteProperty(name, options) { + return { + 'muc#roomconfig_lang': 'language', + 'muc#roomconfig_roomsecret': (options === null || options === void 0 ? void 0 : options.new_password) ? 'new-password' : 'current-password' + }[name]; +} - show(ev) { - if (ev) { - ev.preventDefault(); - this.trigger_el = ev.target; - this.trigger_el.classList.add('selected'); - } +const XFORM_TYPE_MAP = { + 'text-private': 'password', + 'text-single': 'text', + 'fixed': 'label', + 'boolean': 'checkbox', + 'hidden': 'hidden', + 'jid-multi': 'textarea', + 'list-single': 'dropdown', + 'list-multi': 'dropdown' +}; - this.modal.show(); +function slideOutWrapup(el) { + /* Wrapup function for slideOut. */ + el.removeAttribute('data-slider-marker'); + el.classList.remove('collapsed'); + el.style.overflow = ""; + el.style.height = ""; +} + +function getURI(url) { + try { + return url instanceof URI_default.a ? url : new URI_default.a(url); + } catch (error) { + headless_log.debug(error); + return null; } +} -}); -const Confirm = BootstrapModal.extend({ - events: { - 'submit .confirm': 'onConfimation' - }, +function checkTLS(uri) { + return window.location.protocol === 'http:' || window.location.protocol === 'https:' && uri.protocol().toLowerCase() === "https"; +} - initialize() { - this.confirmation = converse_modal_u.getResolveablePromise(); - BootstrapModal.prototype.initialize.apply(this, arguments); - this.listenTo(this.model, 'change', this.render); - this.el.addEventListener('closed.bs.modal', () => this.confirmation.reject(), false); - }, +function checkFileTypes(types, url) { + const uri = getURI(url); - toHTML() { - return templates_prompt(this.model.toJSON()); - }, + if (uri === null || !checkTLS(uri)) { + return false; + } - afterRender() { - if (!this.close_handler_registered) { - this.el.addEventListener('closed.bs.modal', () => { - if (!this.confirmation.isResolved) { - this.confirmation.reject(); - } - }, false); - this.close_handler_registered = true; - } - }, + const filename = uri.filename().toLowerCase(); + return !!types.filter(ext => filename.endsWith(ext)).length; +} - onConfimation(ev) { - ev.preventDefault(); - const form_data = new FormData(ev.target); - const fields = (this.model.get('fields') || []).map(field => { - const value = form_data.get(field.name).trim(); - field.value = value; +utils_core.isAudioURL = url => checkFileTypes(['.ogg', '.mp3', '.m4a'], url); - if (field.challenge) { - field.challenge_failed = value !== field.challenge; - } +utils_core.isVideoURL = url => checkFileTypes(['.mp4', '.webm'], url); - return field; - }); +utils_core.isURLWithImageExtension = url => checkFileTypes(['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.svg'], url); - if (fields.filter(c => c.challenge_failed).length) { - this.model.set('fields', fields); // Setting an array doesn't trigger a change event +utils_core.isImageURL = url => { + const regex = core_api.settings.get('image_urls_regex'); + return (regex === null || regex === void 0 ? void 0 : regex.test(url)) || utils_core.isURLWithImageExtension(url); +}; - this.model.trigger('change'); - return; - } +utils_core.isImageDomainAllowed = url => { + const show_images_inline = core_api.settings.get('show_images_inline'); - this.confirmation.resolve(fields); - this.modal.hide(); + if (!Array.isArray(show_images_inline)) { + return true; } -}); -const Alert = BootstrapModal.extend({ - initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); - this.listenTo(this.model, 'change', this.render); - }, + try { + const image_domain = getURI(url).domain(); + return show_images_inline.includes(image_domain); + } catch (error) { + headless_log.debug(error); + return true; + } +}; - toHTML() { - return alert_modal(Object.assign({ - __: i18n_ - }, this.model.toJSON())); +function getFileName(uri) { + try { + return decodeURI(uri.filename()); + } catch (error) { + headless_log.debug(error); + return uri.filename(); } +} -}); -converse.plugins.add('converse-modal', { - initialize() { - converse_modal_converse = this._converse; - /************************ BEGIN Event Listeners ************************/ +function renderAudioURL(_converse, uri) { + const { + __ + } = _converse; + return audio({ + 'url': uri.toString(), + 'label_download': __('Download audio file "%1$s"', getFileName(uri)) + }); +} - converse_modal_converse.api.listen.on('disconnect', () => { - const container = document.querySelector("#converse-modals"); +function renderImageURL(_converse, uri) { + const { + __ + } = _converse; + return templates_file({ + 'url': uri.toString(), + 'label_download': __('Download image file "%1$s"', getFileName(uri)) + }); +} - if (container) { - container.innerHTML = ''; - } - }); - /************************ BEGIN API ************************/ - // We extend the default converse.js API to add methods specific to MUC chat rooms. +function renderFileURL(_converse, uri) { + const { + __ + } = _converse; + return templates_file({ + 'url': uri.toString(), + 'label_download': __('Download file "%1$s"', getFileName(uri)) + }); +} +/** + * Returns the markup for a URL that points to a downloadable asset + * (such as a video, image or audio file). + * @method u#getOOBURLMarkup + * @param { String } url + * @returns { String } + */ - let alert; - Object.assign(converse_modal_converse.api, { - /** - * Show a confirm modal to the user. - * @method _converse.api.confirm - * @param { String } title - The header text for the confirmation dialog - * @param { (String[]|String) } messages - The text to show to the user - * @param { Array<Field> } fields - An object representing a fields presented to the user. - * @property { String } Field.label - The form label for the input field. - * @property { String } Field.name - The name for the input field. - * @property { String } [Field.challenge] - A challenge value that must be provided by the user. - * @property { String } [Field.placeholder] - The placeholder for the input field. - * @property { Boolean} [Field.required] - Whether the field is required or not - * @returns { Promise<Array|false> } A promise which resolves with an array of - * filled in fields or `false` if the confirm dialog was closed or canceled. - */ - async confirm(title, messages = [], fields = []) { - if (typeof messages === 'string') { - messages = [messages]; - } +utils_core.getOOBURLMarkup = function (_converse, url) { + const uri = getURI(url); - const model = new model_Model({ - title, - messages, - fields, - 'type': 'confirm' - }); - const confirm = new Confirm({ - model - }); - confirm.show(); - let result; + if (uri === null) { + return url; + } - try { - result = await confirm.confirmation; - } catch (e) { - result = false; - } + if (utils_core.isVideoURL(uri)) { + return video({ + url + }); + } else if (utils_core.isAudioURL(uri)) { + return renderAudioURL(_converse, uri); + } else if (utils_core.isImageURL(uri)) { + return renderImageURL(_converse, uri); + } else { + return renderFileURL(_converse, uri); + } +}; +/** + * Applies some resistance to `value` around the `default_value`. + * If value is close enough to `default_value`, then it is returned, otherwise + * `value` is returned. + * @method u#applyDragResistance + * @param { Integer } value + * @param { Integer } default_value + * @returns { Integer } + */ - confirm.remove(); - return result; - }, - /** - * Show a prompt modal to the user. - * @method _converse.api.prompt - * @param { String } title - The header text for the prompt - * @param { (String[]|String) } messages - The prompt text to show to the user - * @param { String } placeholder - The placeholder text for the prompt input - * @returns { Promise<String|false> } A promise which resolves with the text provided by the - * user or `false` if the user canceled the prompt. - */ - async prompt(title, messages = [], placeholder = '') { - if (typeof messages === 'string') { - messages = [messages]; - } - - const model = new model_Model({ - title, - messages, - 'fields': [{ - 'name': 'reason', - 'placeholder': placeholder - }], - 'type': 'prompt' - }); - const prompt = new Confirm({ - model - }); - prompt.show(); - let result; - - try { - var _await$prompt$confirm; - - result = (_await$prompt$confirm = (await prompt.confirmation).pop()) === null || _await$prompt$confirm === void 0 ? void 0 : _await$prompt$confirm.value; - } catch (e) { - result = false; - } +utils_core.applyDragResistance = function (value, default_value) { + if (value === undefined) { + return undefined; + } else if (default_value === undefined) { + return value; + } - prompt.remove(); - return result; - }, + const resistance = 10; - /** - * Show an alert modal to the user. - * @method _converse.api.alert - * @param { ('info'|'warn'|'error') } type - The type of alert. - * @param { String } title - The header text for the alert. - * @param { (String[]|String) } messages - The alert text to show to the user. - */ - alert(type, title, messages) { - if (typeof messages === 'string') { - messages = [messages]; - } + if (value !== default_value && Math.abs(value - default_value) < resistance) { + return default_value; + } - let level; + return value; +}; +/** + * Return the height of the passed in DOM element, + * based on the heights of its children. + * @method u#calculateElementHeight + * @param {HTMLElement} el + * @returns {integer} + */ - if (type === 'error') { - level = 'alert-danger'; - } else if (type === 'info') { - level = 'alert-info'; - } else if (type === 'warn') { - level = 'alert-warning'; - } - if (alert === undefined) { - const model = new model_Model({ - 'title': title, - 'messages': messages, - 'level': level, - 'type': 'alert' - }); - alert = new Alert({ - model - }); - } else { - alert.model.set({ - 'title': title, - 'messages': messages, - 'level': level - }); - } +utils_core.calculateElementHeight = function (el) { + return Array.from(el.children).reduce((result, child) => result + child.offsetHeight, 0); +}; - alert.show(); - } +utils_core.getNextElement = function (el, selector = '*') { + let next_el = el.nextElementSibling; - }); + while (next_el !== null && !sizzle_default.a.matchesSelector(next_el, selector)) { + next_el = next_el.nextElementSibling; } -}); -// CONCATENATED MODULE: ./src/templates/image_modal.js -function image_modal_templateObject() { - const data = image_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog fit-content\" role=\"document\">\n <div class=\"modal-content fit-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"message-versions-modal-label\">", "<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a></h4>\n ", "\n </div>\n <div class=\"modal-body fit-content\">\n <img class=\"chat-image\" src=\"", "\"/>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n"]); - - image_modal_templateObject = function _templateObject() { - return data; - }; + return next_el; +}; - return data; -} +utils_core.getPreviousElement = function (el, selector = '*') { + let prev_el = el.previousElementSibling; -function image_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + while (prev_el !== null && !sizzle_default.a.matchesSelector(prev_el, selector)) { + prev_el = prev_el.previousElementSibling; + } + return prev_el; +}; +utils_core.getFirstChildElement = function (el, selector = '*') { + let first_el = el.firstElementChild; + while (first_el !== null && !sizzle_default.a.matchesSelector(first_el, selector)) { + first_el = first_el.nextElementSibling; + } -/* harmony default export */ var image_modal = (o => lit_html_html(image_modal_templateObject(), i18n_('Image: '), o.src, o.src, modal_header_close_button, o.src, modal_close_button)); -// CONCATENATED MODULE: ./src/modals/image.js + return first_el; +}; +utils_core.getLastChildElement = function (el, selector = '*') { + let last_el = el.lastElementChild; -/* harmony default export */ var modals_image = (BootstrapModal.extend({ - toHTML() { - return image_modal({ - 'src': this.src - }); + while (last_el !== null && !sizzle_default.a.matchesSelector(last_el, selector)) { + last_el = last_el.previousElementSibling; } -})); -// EXTERNAL MODULE: ./node_modules/urijs/src/URI.js -var URI = __webpack_require__(28); -var URI_default = /*#__PURE__*/__webpack_require__.n(URI); + return last_el; +}; -// CONCATENATED MODULE: ./node_modules/lit-html/directives/until.js +utils_core.hasClass = function (className, el) { + return el instanceof Element && el.classList.contains(className); +}; + +utils_core.toggleClass = function (className, el) { + utils_core.hasClass(className, el) ? utils_core.removeClass(className, el) : utils_core.addClass(className, el); +}; /** - * @license - * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. - * This code may only be used under the BSD style license found at - * http://polymer.github.io/LICENSE.txt - * The complete set of authors may be found at - * http://polymer.github.io/AUTHORS.txt - * The complete set of contributors may be found at - * http://polymer.github.io/CONTRIBUTORS.txt - * Code distributed by Google as part of the polymer project is also - * subject to an additional IP rights grant found at - * http://polymer.github.io/PATENTS.txt + * Add a class to an element. + * @method u#addClass + * @param {string} className + * @param {Element} el */ -const _state = new WeakMap(); -// Effectively infinity, but a SMI. -const _infinity = 0x7fffffff; +utils_core.addClass = function (className, el) { + el instanceof Element && el.classList.add(className); + return el; +}; /** - * Renders one of a series of values, including Promises, to a Part. - * - * Values are rendered in priority order, with the first argument having the - * highest priority and the last argument having the lowest priority. If a - * value is a Promise, low-priority values will be rendered until it resolves. - * - * The priority of values can be used to create placeholder content for async - * data. For example, a Promise with pending content can be the first, - * highest-priority, argument, and a non_promise loading indicator template can - * be used as the second, lower-priority, argument. The loading indicator will - * render immediately, and the primary content will render when the Promise - * resolves. - * - * Example: - * - * const content = fetch('./content.txt').then(r => r.text()); - * html`${until(content, html`<span>Loading...</span>`)}` + * Remove a class from an element. + * @method u#removeClass + * @param {string} className + * @param {Element} el */ -const until = directive_directive((...args) => (part) => { - let state = _state.get(part); - if (state === undefined) { - state = { - lastRenderedIndex: _infinity, - values: [], - }; - _state.set(part, state); - } - const previousValues = state.values; - let previousLength = previousValues.length; - state.values = args; - for (let i = 0; i < args.length; i++) { - // If we've rendered a higher-priority value already, stop. - if (i > state.lastRenderedIndex) { - break; - } - const value = args[i]; - // Render non-Promise values immediately - if (isPrimitive(value) || - typeof value.then !== 'function') { - part.setValue(value); - state.lastRenderedIndex = i; - // Since a lower-priority value will never overwrite a higher-priority - // synchronous value, we can stop processing now. - break; - } - // If this is a Promise we've already handled, skip it. - if (i < previousLength && value === previousValues[i]) { - continue; - } - // We have a Promise that we haven't seen before, so priorities may have - // changed. Forget what we rendered before. - state.lastRenderedIndex = _infinity; - previousLength = 0; - Promise.resolve(value).then((resolvedValue) => { - const index = state.values.indexOf(value); - // If state.values doesn't contain the value, we've re-rendered without - // the value, so don't render it. Then, only render if the value is - // higher-priority than what's already been rendered. - if (index > -1 && index < state.lastRenderedIndex) { - state.lastRenderedIndex = index; - part.setValue(resolvedValue); - part.commit(); - } - }); - } -}); -//# sourceMappingURL=until.js.map -// CONCATENATED MODULE: ./src/templates/directives/body.js -function _templateObject4() { - const data = body_taggedTemplateLiteral(["", ""]); - - _templateObject4 = function _templateObject4() { - return data; - }; - - return data; -} - -function body_templateObject3() { - const data = body_taggedTemplateLiteral(["", ""]); - - body_templateObject3 = function _templateObject3() { - return data; - }; - - return data; -} - -function body_templateObject2() { - const data = body_taggedTemplateLiteral(["<span class=\"mention\">", "</span>"]); - body_templateObject2 = function _templateObject2() { - return data; - }; - return data; -} +utils_core.removeClass = function (className, el) { + el instanceof Element && el.classList.remove(className); + return el; +}; -function body_templateObject() { - const data = body_taggedTemplateLiteral(["<span class=\"mention mention--self badge badge-info\">", "</span>"]); +utils_core.removeElement = function (el) { + el instanceof Element && el.parentNode && el.parentNode.removeChild(el); + return el; +}; - body_templateObject = function _templateObject() { - return data; - }; +utils_core.getElementFromTemplateResult = function (tr) { + const div = document.createElement('div'); + render_render(tr, div); + return div.firstElementChild; +}; - return data; -} +utils_core.showElement = el => { + utils_core.removeClass('collapsed', el); + utils_core.removeClass('hidden', el); +}; -function body_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +utils_core.hideElement = function (el) { + el instanceof Element && el.classList.add('hidden'); + return el; +}; +utils_core.ancestor = function (el, selector) { + let parent = el; + while (parent !== null && !sizzle_default.a.matchesSelector(parent, selector)) { + parent = parent.parentElement; + } + return parent; +}; +/** + * Return the element's siblings until one matches the selector. + * @private + * @method u#nextUntil + * @param { HTMLElement } el + * @param { String } selector + */ +utils_core.nextUntil = function (el, selector) { + const matches = []; + let sibling_el = el.nextElementSibling; + while (sibling_el !== null && !sibling_el.matches(selector)) { + matches.push(sibling_el); + sibling_el = sibling_el.nextElementSibling; + } -const body_u = converse.env.utils; + return matches; +}; /** - * @class MessageText - * A String subclass that is used to represent the rich text - * of a chat message. - * - * The "rich" parts of the text is represented by lit-html TemplateResult - * objects which are added via the {@link MessageText.addTemplateResult} - * method and saved as metadata. - * - * By default Converse adds TemplateResults to support emojis, hyperlinks, - * images, map URIs and mentions. - * - * 3rd party plugins can listen for the `beforeMessageBodyTransformed` - * and/or `afterMessageBodyTransformed` events and then call - * `addTemplateResult` on the MessageText instance in order to add their own - * rich features. + * Helper method that replace HTML-escaped symbols with equivalent characters + * (e.g. transform occurrences of '&' to '&') + * @private + * @method u#unescapeHTML + * @param { String } string - a String containing the HTML-escaped symbols. */ -class body_MessageText extends String { - /** - * Create a new {@link MessageText} instance. - * @param { String } text - The plain text that was received from the `<message>` stanza. - */ - constructor(text) { - super(text); - this.references = []; - } - /** - * The "rich" markup parts of a chat message are represented by lit-html - * TemplateResult objects. - * - * This method can be used to add new template results to this message's - * text. - * - * @method MessageText.addTemplateResult - * @param { Number } begin - The starting index of the plain message text - * which is being replaced with markup. - * @param { Number } end - The ending index of the plain message text - * which is being replaced with markup. - * @param { Object } template - The lit-html TemplateResult instance - */ +utils_core.unescapeHTML = function (string) { + var div = document.createElement('div'); + div.innerHTML = string; + return div.innerText; +}; - addTemplateResult(begin, end, template) { - this.references.push({ - begin, - end, - template - }); - } +utils_core.escapeHTML = function (string) { + return string.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """); +}; - isMeCommand() { - const text = this.toString(); +utils_core.convertToImageTag = function (url, onLoad, onClick) { + return templates_image({ + url, + onClick, + onLoad + }); +}; - if (!text) { - return false; - } +function onClickXMPPURI(ev) { + ev.preventDefault(); + core_api.rooms.open(ev.target.href); +} - return text.startsWith('/me '); +utils_core.convertURIoHyperlink = function (uri, urlAsTyped) { + let normalized_url = uri.normalize()._string; + + const pretty_url = uri._parts.urn ? normalized_url : uri.readable(); + const visible_url = urlAsTyped || pretty_url; + + if (!uri._parts.protocol && !normalized_url.startsWith('http://') && !normalized_url.startsWith('https://')) { + normalized_url = 'http://' + normalized_url; } - static replaceText(text) { - return convertASCII2Emoji(text.replace(/\n\n+/g, '\n\n')); + if (uri._parts.protocol === 'xmpp' && uri._parts.query === 'join') { + return lit_html_html(html_templateObject(), onClickXMPPURI, normalized_url, visible_url); } - marshall() { - let list = [this.toString()]; - this.references.sort((a, b) => b.begin - a.begin).forEach(ref => { - const text = list.shift(); - list = [text.slice(0, ref.begin), ref.template, text.slice(ref.end), ...list]; - }); // Subtract `/me ` from 3rd person messages + return lit_html_html(html_templateObject2(), normalized_url, visible_url); +}; - if (this.isMeCommand()) list[0] = list[0].substring(4); +function isProtocolApproved(protocol, safeProtocolsList = APPROVED_URL_PROTOCOLS) { + return !!safeProtocolsList.includes(protocol); +} // Will return false if URL is malformed or contains disallowed characters - const isString = s => typeof s === 'string'; - return list.reduce((acc, i) => isString(i) ? [...acc, body_MessageText.replaceText(i)] : [...acc, i], []); +function isUrlValid(urlString) { + try { + const url = new URL(urlString); + return !!url; + } catch (error) { + return false; } - } -function addMapURLs(text) { - const regex = /geo:([\-0-9.]+),([\-0-9.]+)(?:,([\-0-9.]+))?(?:\?(.*))?/g; - const matches = text.matchAll(regex); +utils_core.convertUrlToHyperlink = function (url) { + const http_url = RegExp('^w{3}.', 'ig').test(url) ? "http://".concat(url) : url; + const uri = getURI(url); - for (const m of matches) { - text.addTemplateResult(m.index, m.index + m.input.length, body_u.convertUrlToHyperlink(m.input.replace(regex, converse_core_converse.geouri_replacement))); + if (uri !== null && isUrlValid(http_url) && (isProtocolApproved(uri._parts.protocol) || !uri._parts.protocol)) { + return this.convertURIoHyperlink(uri, url); } -} -function addHyperlinks(text, onImgLoad, onImgClick) { + return url; +}; + +utils_core.filterQueryParamsFromURL = function (url) { + const paramsArray = core_api.settings.get("filter_url_query_params"); + if (!paramsArray) return url; + const parsed_uri = getURI(url); + return parsed_uri.removeQuery(paramsArray).toString(); +}; + +utils_core.addHyperlinks = function (text) { const objs = []; + const parse_options = { + 'start': /\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi + }; try { - const parse_options = { - 'start': /\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi - }; URI_default.a.withinString(text, (url, start, end) => { objs.push({ url, @@ -86322,1788 +90231,2101 @@ function addHyperlinks(text, onImgLoad, onImgClick) { }, parse_options); } catch (error) { headless_log.debug(error); - return; + return [text]; } - const show_images = converse_core_api.settings.get('show_images_inline'); - objs.forEach(url_obj => { - const url_text = text.slice(url_obj.start, url_obj.end); - const filtered_url = body_u.filterQueryParamsFromURL(url_text); - text.addTemplateResult(url_obj.start, url_obj.end, show_images && body_u.isImageURL(url_text) && body_u.isImageDomainAllowed(url_text) ? body_u.convertToImageTag(filtered_url, onImgLoad, onImgClick) : body_u.convertUrlToHyperlink(filtered_url)); - }); -} + let list = [text]; -async function addEmojis(text) { - await converse_core_api.emojis.initialize(); - const references = [...getShortnameReferences(text.toString()), ...getCodePointReferences(text.toString())]; - references.forEach(e => { - text.addTemplateResult(e.begin, e.end, getEmojiMarkup(e, { - 'add_title_wrapper': true - })); - }); -} + if (objs.length) { + objs.sort((a, b) => b.start - a.start).forEach(url_obj => { + const text = list.shift(); + const url_text = text.slice(url_obj.start, url_obj.end); + list = [text.slice(0, url_obj.start), utils_core.convertUrlToHyperlink(url_text), text.slice(url_obj.end), ...list]; + }); + } else { + list = [text]; + } -const tpl_mention_with_nick = o => lit_html_html(body_templateObject(), o.mention); + return list; +}; -const tpl_mention = o => lit_html_html(body_templateObject2(), o.mention); +utils_core.httpToGeoUri = function (text, _converse) { + const replacement = 'geo:$1,$2'; + return text.replace(_converse.api.settings.get("geouri_regex"), replacement); +}; -function addReferences(text, model) { - var _model$get; +utils_core.slideInAllElements = function (elements, duration = 300) { + return Promise.all(Array.from(elements).map(e => utils_core.slideIn(e, duration))); +}; - const nick = model.collection.chatbox.get('nick'); - (_model$get = model.get('references')) === null || _model$get === void 0 ? void 0 : _model$get.forEach(ref => { - const mention = text.slice(ref.begin, ref.end); +utils_core.slideToggleElement = function (el, duration) { + if (utils_core.hasClass('collapsed', el) || utils_core.hasClass('hidden', el)) { + return utils_core.slideOut(el, duration); + } else { + return utils_core.slideIn(el, duration); + } +}; +/** + * Shows/expands an element by sliding it out of itself + * @private + * @method u#slideOut + * @param { HTMLElement } el - The HTML string + * @param { Number } duration - The duration amount in milliseconds + */ - if (mention === nick) { - text.addTemplateResult(ref.begin, ref.end, tpl_mention_with_nick({ - mention - })); - } else { - text.addTemplateResult(ref.begin, ref.end, tpl_mention({ - mention - })); + +utils_core.slideOut = function (el, duration = 200) { + return new Promise((resolve, reject) => { + if (!el) { + const err = "An element needs to be passed in to slideOut"; + headless_log.warn(err); + reject(new Error(err)); + return; } - }); -} -class body_MessageBodyRenderer { - constructor(component) { - var _u$ancestor; + const marker = el.getAttribute('data-slider-marker'); - this.model = component.model; - this.component = component; - this.chatview = (_u$ancestor = body_u.ancestor(this.component, 'converse-chat-message')) === null || _u$ancestor === void 0 ? void 0 : _u$ancestor.chatview; // We jot down whether we were scrolled down before rendering, because when an - // image loads, it triggers 'scroll' and the chat will be marked as scrolled, - // which is technically true, but not what we want because the user - // didn't initiate the scrolling. + if (marker) { + el.removeAttribute('data-slider-marker'); + window.cancelAnimationFrame(marker); + } - this.was_scrolled_up = this.chatview.model.get('scrolled'); - this.text = this.component.model.getMessageText(); - } + const end_height = utils_core.calculateElementHeight(el); - scrollDownOnImageLoad() { - if (!this.was_scrolled_up) { - this.chatview.scrollDown(); + if (window.converse_disable_effects) { + // Effects are disabled (for tests) + el.style.height = end_height + 'px'; + slideOutWrapup(el); + resolve(); + return; } - } - async transform() { - const text = new body_MessageText(this.text); - /** - * Synchronous event which provides a hook for transforming a chat message's body text - * before the default transformations have been applied. - * @event _converse#beforeMessageBodyTransformed - * @param { _converse.Message } model - The model representing the message - * @param { MessageText } text - A {@link MessageText } instance. You - * can call {@link MessageText#addTemplateResult } on it in order to - * add TemplateResult objects meant to render rich parts of the - * message. - * @example _converse.api.listen.on('beforeMessageBodyTransformed', (view, text) => { ... }); - */ + if (!utils_core.hasClass('collapsed', el) && !utils_core.hasClass('hidden', el)) { + resolve(); + return; + } - await converse_core_api.trigger('beforeMessageBodyTransformed', this.model, text, { - 'Synchronous': true - }); - addHyperlinks(text, () => this.scrollDownOnImageLoad(), ev => this.component.showImageModal(ev)); - addMapURLs(text); - await addEmojis(text); - addReferences(text, this.model); - /** - * Synchronous event which provides a hook for transforming a chat message's body text - * after the default transformations have been applied. - * @event _converse#afterMessageBodyTransformed - * @param { _converse.Message } model - The model representing the message - * @param { MessageText } text - A {@link MessageText } instance. You - * can call {@link MessageText#addTemplateResult} on it in order to - * add TemplateResult objects meant to render rich parts of the - * message. - * @example _converse.api.listen.on('afterMessageBodyTransformed', (view, text) => { ... }); - */ + const steps = duration / 17; // We assume 17ms per animation which is ~60FPS - await converse_core_api.trigger('afterMessageBodyTransformed', this.model, text, { - 'Synchronous': true - }); - return text.marshall(); - } + let height = 0; - render() { - return lit_html_html(body_templateObject3(), until(this.transform(), lit_html_html(_templateObject4(), this.text))); - } + function draw() { + height += end_height / steps; -} + if (height < end_height) { + el.style.height = height + 'px'; + el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); + } else { + // We recalculate the height to work around an apparent + // browser bug where browsers don't know the correct + // offsetHeight beforehand. + el.removeAttribute('data-slider-marker'); + el.style.height = utils_core.calculateElementHeight(el) + 'px'; + el.style.overflow = ""; + el.style.height = ""; + resolve(); + } + } -const renderBodyText = directive_directive(component => part => { - var _model$collection; + el.style.height = '0'; + el.style.overflow = 'hidden'; + el.classList.remove('hidden'); + el.classList.remove('collapsed'); + el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); + }); +}; - const renderer = new body_MessageBodyRenderer(component); - part.setValue(renderer.render()); - const model = component.model; - (_model$collection = model.collection) === null || _model$collection === void 0 ? void 0 : _model$collection.trigger('rendered', model); -}); -// CONCATENATED MODULE: ./src/components/message-body.js +utils_core.slideIn = function (el, duration = 200) { + /* Hides/collapses an element by sliding it into itself. */ + return new Promise((resolve, reject) => { + if (!el) { + const err = "An element needs to be passed in to slideIn"; + headless_log.warn(err); + return reject(new Error(err)); + } else if (utils_core.hasClass('collapsed', el)) { + return resolve(el); + } else if (window.converse_disable_effects) { + // Effects are disabled (for tests) + el.classList.add('collapsed'); + el.style.height = ""; + return resolve(el); + } + const marker = el.getAttribute('data-slider-marker'); + if (marker) { + el.removeAttribute('data-slider-marker'); + window.cancelAnimationFrame(marker); + } + const original_height = el.offsetHeight, + steps = duration / 17; // We assume 17ms per animation which is ~60FPS + let height = original_height; + el.style.overflow = 'hidden'; -class message_body_MessageBody extends element_CustomElement { - static get properties() { - return { - model: { - type: Object - }, - is_me_message: { - type: Boolean - }, - text: { - type: String + function draw() { + height -= original_height / steps; + + if (height > 0) { + el.style.height = height + 'px'; + el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); + } else { + el.removeAttribute('data-slider-marker'); + el.classList.add('collapsed'); + el.style.height = ""; + resolve(el); } - }; - } + } - showImageModal(ev) { - ev.preventDefault(); + el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); + }); +}; - if (this.image_modal === undefined) { - this.image_modal = new modals_image(); - } +function afterAnimationEnds(el, callback) { + el.classList.remove('visible'); - this.image_modal.src = ev.target.src; - this.image_modal.render(); - this.image_modal.show(ev); + if (lodash_es_isFunction(callback)) { + callback(); } +} - render() { - return renderBodyText(this); +utils_core.isInDOM = function (el) { + return document.querySelector('body').contains(el); +}; + +utils_core.isVisible = function (el) { + if (el === null) { + return false; } -} -converse_core_api.elements.define('converse-chat-message-body', message_body_MessageBody); -// CONCATENATED MODULE: ./src/templates/audio.js -function audio_templateObject() { - const data = audio_taggedTemplateLiteral(["\n <audio controls src=\"", "\"></audio>\n <a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>\n"]); + if (utils_core.hasClass('hidden', el)) { + return false; + } // XXX: Taken from jQuery's "visible" implementation - audio_templateObject = function _templateObject() { - return data; - }; - return data; -} - -function audio_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0; +}; +utils_core.fadeIn = function (el, callback) { + if (!el) { + headless_log.warn("An element needs to be passed in to fadeIn"); + } -/* harmony default export */ var audio = (o => lit_html_html(audio_templateObject(), o.url, o.url, o.label_download)); -// CONCATENATED MODULE: ./src/templates/file.js -function file_templateObject() { - const data = file_taggedTemplateLiteral(["<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>"]); + if (window.converse_disable_effects) { + el.classList.remove('hidden'); + return afterAnimationEnds(el, callback); + } - file_templateObject = function _templateObject() { - return data; - }; + if (utils_core.hasClass('hidden', el)) { + el.classList.add('visible'); + el.classList.remove('hidden'); + el.addEventListener("webkitAnimationEnd", () => afterAnimationEnds(el, callback)); + el.addEventListener("animationend", () => afterAnimationEnds(el, callback)); + el.addEventListener("oanimationend", () => afterAnimationEnds(el, callback)); + } else { + afterAnimationEnds(el, callback); + } +}; +/** + * Takes a field in XMPP XForm (XEP-004: Data Forms) format + * and turns it into an HTML field. + * Returns either text or a DOM element (which is not ideal, but fine for now). + * @private + * @method u#xForm2webForm + * @param { XMLElement } field - the field to convert + */ - return data; -} -function file_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +utils_core.xForm2webForm = function (field, stanza, options) { + if (field.getAttribute('type') === 'list-single' || field.getAttribute('type') === 'list-multi') { + const values = utils_core.queryChildren(field, 'value').map(el => el === null || el === void 0 ? void 0 : el.textContent); + const options = utils_core.queryChildren(field, 'option').map(option => { + var _option$querySelector; + const value = (_option$querySelector = option.querySelector('value')) === null || _option$querySelector === void 0 ? void 0 : _option$querySelector.textContent; + return select_option_default()({ + 'value': value, + 'label': option.getAttribute('label'), + 'selected': values.includes(value), + 'required': !!field.querySelector('required') + }); + }); + return form_select_default()({ + 'id': utils_core.getUniqueId(), + 'name': field.getAttribute('var'), + 'label': field.getAttribute('label'), + 'options': options.join(''), + 'multiple': field.getAttribute('type') === 'list-multi', + 'required': !!field.querySelector('required') + }); + } else if (field.getAttribute('type') === 'fixed') { + var _field$querySelector; -/* harmony default export */ var templates_file = (o => lit_html_html(file_templateObject(), o.url, o.label_download)); -// EXTERNAL MODULE: ./src/templates/form_captcha.html -var form_captcha = __webpack_require__(129); -var form_captcha_default = /*#__PURE__*/__webpack_require__.n(form_captcha); + const text = (_field$querySelector = field.querySelector('value')) === null || _field$querySelector === void 0 ? void 0 : _field$querySelector.textContent; + return '<p class="form-help">' + text + '</p>'; + } else if (field.getAttribute('type') === 'jid-multi') { + var _field$querySelector2; -// EXTERNAL MODULE: ./src/templates/form_checkbox.html -var form_checkbox = __webpack_require__(130); -var form_checkbox_default = /*#__PURE__*/__webpack_require__.n(form_checkbox); + return form_textarea_default()({ + 'name': field.getAttribute('var'), + 'label': field.getAttribute('label') || '', + 'value': (_field$querySelector2 = field.querySelector('value')) === null || _field$querySelector2 === void 0 ? void 0 : _field$querySelector2.textContent, + 'required': !!field.querySelector('required') + }); + } else if (field.getAttribute('type') === 'boolean') { + var _field$querySelector3; -// EXTERNAL MODULE: ./src/templates/form_input.html -var form_input = __webpack_require__(50); -var form_input_default = /*#__PURE__*/__webpack_require__.n(form_input); + const value = (_field$querySelector3 = field.querySelector('value')) === null || _field$querySelector3 === void 0 ? void 0 : _field$querySelector3.textContent; + return form_checkbox_default()({ + 'id': utils_core.getUniqueId(), + 'name': field.getAttribute('var'), + 'label': field.getAttribute('label') || '', + 'checked': (value === "1" || value === "true") && 'checked="1"' || '', + 'required': !!field.querySelector('required') + }); + } else if (field.getAttribute('var') === 'url') { + var _field$querySelector4; -// EXTERNAL MODULE: ./src/templates/form_select.html -var form_select = __webpack_require__(131); -var form_select_default = /*#__PURE__*/__webpack_require__.n(form_select); + return form_url_default()({ + 'label': field.getAttribute('label') || '', + 'value': (_field$querySelector4 = field.querySelector('value')) === null || _field$querySelector4 === void 0 ? void 0 : _field$querySelector4.textContent + }); + } else if (field.getAttribute('var') === 'username') { + var _field$querySelector5; -// EXTERNAL MODULE: ./src/templates/form_textarea.html -var form_textarea = __webpack_require__(132); -var form_textarea_default = /*#__PURE__*/__webpack_require__.n(form_textarea); + return form_username_default()({ + 'domain': ' @' + options.domain, + 'name': field.getAttribute('var'), + 'type': XFORM_TYPE_MAP[field.getAttribute('type')], + 'label': field.getAttribute('label') || '', + 'value': (_field$querySelector5 = field.querySelector('value')) === null || _field$querySelector5 === void 0 ? void 0 : _field$querySelector5.textContent, + 'required': !!field.querySelector('required') + }); + } else if (field.getAttribute('var') === 'ocr') { + // Captcha + const uri = field.querySelector('uri'); + const el = sizzle_default()('data[cid="' + uri.textContent.replace(/^cid:/, '') + '"]', stanza)[0]; + return form_captcha_default()({ + 'label': field.getAttribute('label'), + 'name': field.getAttribute('var'), + 'data': el === null || el === void 0 ? void 0 : el.textContent, + 'type': uri.getAttribute('type'), + 'required': !!field.querySelector('required') + }); + } else { + var _field$querySelector6; -// EXTERNAL MODULE: ./src/templates/form_url.html -var form_url = __webpack_require__(133); -var form_url_default = /*#__PURE__*/__webpack_require__.n(form_url); + const name = field.getAttribute('var'); + return form_input_default()({ + 'id': utils_core.getUniqueId(), + 'label': field.getAttribute('label') || '', + 'name': name, + 'fixed_username': options === null || options === void 0 ? void 0 : options.fixed_username, + 'autocomplete': getAutoCompleteProperty(name, options), + 'placeholder': null, + 'required': !!field.querySelector('required'), + 'type': XFORM_TYPE_MAP[field.getAttribute('type')], + 'value': (_field$querySelector6 = field.querySelector('value')) === null || _field$querySelector6 === void 0 ? void 0 : _field$querySelector6.textContent + }); + } +}; -// EXTERNAL MODULE: ./src/templates/form_username.html -var form_username = __webpack_require__(51); -var form_username_default = /*#__PURE__*/__webpack_require__.n(form_username); +/* harmony default export */ var utils_html = (utils_core); +// CONCATENATED MODULE: ./src/shared/dom-navigator.js +/** + * @module dom-navigator + * @description A class for navigating the DOM with the keyboard + * This module started as a fork of Rubens Mariuzzo's dom-navigator. + * @copyright Rubens Mariuzzo, JC Brand + */ -// CONCATENATED MODULE: ./src/templates/directives/image.js -function image_templateObject() { - const data = image_taggedTemplateLiteral(["<a href=\"", "\"\n class=\"chat-image__link\"\n target=\"_blank\"\n rel=\"noopener\"\n ><img class=\"chat-image img-thumbnail\" src=\"", "\" @click=", " @error=", " @load=", "/></a>"]); - image_templateObject = function _templateObject() { - return data; - }; +const { + keycodes +} = converse; +/** + * Indicates if a given element is fully visible in the viewport. + * @param { Element } el The element to check. + * @return { Boolean } True if the given element is fully visible in the viewport, otherwise false. + */ - return data; +function inViewport(el) { + const rect = el.getBoundingClientRect(); + return rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth; } +/** + * Return the absolute offset top of an element. + * @param el { Element } The element. + * @return { Number } The offset top. + */ -function image_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function absoluteOffsetTop(el) { + let offsetTop = 0; + do { + if (!isNaN(el.offsetTop)) { + offsetTop += el.offsetTop; + } + } while (el = el.offsetParent); + return offsetTop; +} /** - * lit-html directive which attempts to render an <img> element from a URL. - * It will fall back to rendering an <a> element if it can't. - * - * @param { String } src - The value that will be assigned to the `src` attribute of the `<img>` element. - * @param { String } href - The value that will be assigned to the `href` attribute of the `<img>` element. - * @param { Function } onLoad - A callback function to be called once the image has loaded. - * @param { Function } onClick - A callback function to be called once the image has been clicked. -*/ + * Return the absolute offset left of an element. + * @param el { Element } The element. + * @return { Number } The offset left. + */ -const renderImage = directive_directive((src, href, onLoad, onClick) => part => { - function onError() { - const u = converse.env.utils; - if (u.isURLWithImageExtension(src)) { - part.setValue(u.convertUrlToHyperlink(href)); - part.commit(); - } else { - // Before giving up and falling back to just rendering a hyperlink, - // we attach `.png` and try one more time. - // This works with some Imgur URLs - part.setValue(renderImage("".concat(src, ".png"), href, onLoad, onClick)); - part.commit(); +function absoluteOffsetLeft(el) { + let offsetLeft = 0; + + do { + if (!isNaN(el.offsetLeft)) { + offsetLeft += el.offsetLeft; } + } while (el = el.offsetParent); + + return offsetLeft; +} +/** + * Adds the ability to navigate the DOM with the arrow keys + * @class DOMNavigator + */ + + +class dom_navigator_DOMNavigator { + /** + * Directions. + * @returns {{left: string, up: string, right: string, down: string}} + * @constructor + */ + static get DIRECTION() { + return { + down: 'down', + end: 'end', + home: 'home', + left: 'left', + right: 'right', + up: 'up' + }; } + /** + * The default options for the DOM navigator. + * @returns {{ + * down: number, + * getSelector: null, + * jump_to_picked: null, + * jump_to_picked_direction: null, + * jump_to_picked_selector: string, + * left: number, + * onSelected: null, + * right: number, + * selected: string, + * up: number + * }} + */ - part.setValue(lit_html_html(image_templateObject(), href, src, onClick, onError, onLoad)); -}); -// CONCATENATED MODULE: ./src/templates/image.js -function templates_image_templateObject() { - const data = templates_image_taggedTemplateLiteral(["", ""]); - templates_image_templateObject = function _templateObject() { - return data; - }; + static get DEFAULTS() { + return { + home: ["".concat(keycodes.SHIFT, "+").concat(keycodes.UP_ARROW)], + end: ["".concat(keycodes.SHIFT, "+").concat(keycodes.DOWN_ARROW)], + up: [keycodes.UP_ARROW], + down: [keycodes.DOWN_ARROW], + left: [keycodes.LEFT_ARROW, "".concat(keycodes.SHIFT, "+").concat(keycodes.TAB)], + right: [keycodes.RIGHT_ARROW, keycodes.TAB], + getSelector: null, + jump_to_picked: null, + jump_to_picked_direction: null, + jump_to_picked_selector: 'picked', + onSelected: null, + selected: 'selected', + selector: 'li' + }; + } - return data; -} + static getClosestElement(els, getDistance) { + const next = els.reduce((prev, curr) => { + const current_distance = getDistance(curr); -function templates_image_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + if (current_distance < prev.distance) { + return { + distance: current_distance, + element: curr + }; + } + return prev; + }, { + distance: Infinity + }); + return next.element; + } + /** + * Create a new DOM Navigator. + * @param { Element } container The container of the element to navigate. + * @param { Object } options The options to configure the DOM navigator. + * @param { Function } options.getSelector + * @param { Number } [options.down] - The keycode for navigating down + * @param { Number } [options.left] - The keycode for navigating left + * @param { Number } [options.right] - The keycode for navigating right + * @param { Number } [options.up] - The keycode for navigating up + * @param { String } [options.selected] - The class that should be added to the currently selected DOM element. + * @param { String } [options.jump_to_picked] - A selector, which if + * matched by the next element being navigated to, based on the direction + * given by `jump_to_picked_direction`, will cause navigation + * to jump to the element that matches the `jump_to_picked_selector`. + * For example, this is useful when navigating to tabs. You want to + * immediately navigate to the currently active tab instead of just + * navigating to the first tab. + * @param { String } [options.jump_to_picked_selector=picked] - The selector + * indicating the currently picked element to jump to. + * @param { String } [options.jump_to_picked_direction] - The direction for + * which jumping to the picked element should be enabled. + * @param { Function } [options.onSelected] - The callback function which + * should be called when en element gets selected. + * @constructor + */ -/* harmony default export */ var templates_image = (o => lit_html_html(templates_image_templateObject(), renderImage(o.url, o.url, o.onLoad, o.onClick))); -// EXTERNAL MODULE: ./src/templates/select_option.html -var select_option = __webpack_require__(134); -var select_option_default = /*#__PURE__*/__webpack_require__.n(select_option); + constructor(container, options) { + this.doc = window.document; + this.container = container; + this.scroll_container = options.scroll_container || container; + this.options = Object.assign({}, dom_navigator_DOMNavigator.DEFAULTS, options); + this.init(); + } + /** + * Initialize the navigator. + */ -// CONCATENATED MODULE: ./src/templates/video.js -function video_templateObject() { - const data = video_taggedTemplateLiteral(["<video controls preload=\"metadata\" src=\"", "\" style=\"max-height: 50vh\"></video>"]); - video_templateObject = function _templateObject() { - return data; - }; + init() { + this.selected = null; + this.keydownHandler = null; + this.elements = {}; // Create hotkeys map. - return data; -} + this.keys = {}; + this.options.down.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.down); + this.options.end.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.end); + this.options.home.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.home); + this.options.left.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.left); + this.options.right.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.right); + this.options.up.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.up); + } + /** + * Enable this navigator. + */ -function video_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + enable() { + this.getElements(); -/* harmony default export */ var video = (o => lit_html_html(video_templateObject(), o.url)); -// CONCATENATED MODULE: ./src/utils/html.js -function html_templateObject2() { - const data = html_taggedTemplateLiteral(["<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a>"]); + this.keydownHandler = event => this.handleKeydown(event); - html_templateObject2 = function _templateObject2() { - return data; - }; + this.doc.addEventListener('keydown', this.keydownHandler); + this.enabled = true; + } + /** + * Disable this navigator. + */ - return data; -} -function html_templateObject() { - const data = html_taggedTemplateLiteral(["\n <a target=\"_blank\"\n rel=\"noopener\"\n @click=", "\n href=\"", "\">", "</a>"]); + disable() { + if (this.keydownHandler) { + this.doc.removeEventListener('keydown', this.keydownHandler); + } - html_templateObject = function _templateObject() { - return data; - }; + this.unselect(); + this.elements = {}; + this.enabled = false; + } + /** + * Destroy this navigator removing any event registered and any other data. + */ - return data; -} -function html_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + destroy() { + this.disable(); -/** - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - * @description This is the DOM/HTML utilities module. - */ + if (this.container.domNavigator) { + delete this.container.domNavigator; + } + } + /** + * @param {'down'|'right'|'left'|'up'} direction + * @returns { HTMLElement } + */ + getNextElement(direction) { + let el; + if (direction === dom_navigator_DOMNavigator.DIRECTION.home) { + el = this.getElements(direction)[0]; + } else if (direction === dom_navigator_DOMNavigator.DIRECTION.end) { + el = Array.from(this.getElements(direction)).pop(); + } else if (this.selected) { + if (direction === dom_navigator_DOMNavigator.DIRECTION.right) { + const els = this.getElements(direction); + el = els.slice(els.indexOf(this.selected))[1]; + } else if (direction == dom_navigator_DOMNavigator.DIRECTION.left) { + const els = this.getElements(direction); + el = els.slice(0, els.indexOf(this.selected)).pop() || this.selected; + } else if (direction == dom_navigator_DOMNavigator.DIRECTION.down) { + const left = this.selected.offsetLeft; + const top = this.selected.offsetTop + this.selected.offsetHeight; + const els = this.elementsAfter(0, top); + const getDistance = el => Math.abs(el.offsetLeft - left) + Math.abs(el.offsetTop - top); + el = dom_navigator_DOMNavigator.getClosestElement(els, getDistance); + } else if (direction == dom_navigator_DOMNavigator.DIRECTION.up) { + const left = this.selected.offsetLeft; + const top = this.selected.offsetTop - 1; + const els = this.elementsBefore(Infinity, top); + const getDistance = el => Math.abs(left - el.offsetLeft) + Math.abs(top - el.offsetTop); + el = dom_navigator_DOMNavigator.getClosestElement(els, getDistance); + } else { + throw new Error("getNextElement: invalid direction value"); + } + } else { + if (direction === dom_navigator_DOMNavigator.DIRECTION.right || direction === dom_navigator_DOMNavigator.DIRECTION.down) { + // If nothing is selected, we pretend that the first element is + // selected, so we return the next. + el = this.getElements(direction)[1]; + } else { + el = this.getElements(direction)[0]; + } + } + if (this.options.jump_to_picked && el && el.matches(this.options.jump_to_picked) && direction === this.options.jump_to_picked_direction) { + el = this.container.querySelector(this.options.jump_to_picked_selector) || el; + } + return el; + } + /** + * Select the given element. + * @param { Element } el The DOM element to select. + * @param { string } [direction] The direction. + */ + select(el, direction) { + if (!el || el === this.selected) { + return; + } + this.unselect(); + direction && this.scrollTo(el, direction); + if (el.matches('input')) { + el.focus(); + } else { + utils_html.addClass(this.options.selected, el); + } + this.selected = el; + this.options.onSelected && this.options.onSelected(el); + } + /** + * Remove the current selection + */ + unselect() { + if (this.selected) { + utils_html.removeClass(this.options.selected, this.selected); + delete this.selected; + } + } + /** + * Scroll the container to an element. + * @param { HTMLElement } el The destination element. + * @param { String } direction The direction of the current navigation. + * @return void. + */ + scrollTo(el, direction) { + if (!this.inScrollContainerViewport(el)) { + const container = this.scroll_container; -const APPROVED_URL_PROTOCOLS = ['http', 'https', 'xmpp', 'mailto']; + if (!container.contains(el)) { + return; + } -function getAutoCompleteProperty(name, options) { - return { - 'muc#roomconfig_lang': 'language', - 'muc#roomconfig_roomsecret': (options === null || options === void 0 ? void 0 : options.new_password) ? 'new-password' : 'current-password' - }[name]; -} + switch (direction) { + case dom_navigator_DOMNavigator.DIRECTION.left: + container.scrollLeft = el.offsetLeft - container.offsetLeft; + container.scrollTop = el.offsetTop - container.offsetTop; + break; -const XFORM_TYPE_MAP = { - 'text-private': 'password', - 'text-single': 'text', - 'fixed': 'label', - 'boolean': 'checkbox', - 'hidden': 'hidden', - 'jid-multi': 'textarea', - 'list-single': 'dropdown', - 'list-multi': 'dropdown' -}; + case dom_navigator_DOMNavigator.DIRECTION.up: + container.scrollTop = el.offsetTop - container.offsetTop; + break; -function slideOutWrapup(el) { - /* Wrapup function for slideOut. */ - el.removeAttribute('data-slider-marker'); - el.classList.remove('collapsed'); - el.style.overflow = ""; - el.style.height = ""; -} + case dom_navigator_DOMNavigator.DIRECTION.right: + container.scrollLeft = el.offsetLeft - container.offsetLeft - (container.offsetWidth - el.offsetWidth); + container.scrollTop = el.offsetTop - container.offsetTop - (container.offsetHeight - el.offsetHeight); + break; -function getURI(url) { - try { - return url instanceof URI_default.a ? url : new URI_default.a(url); - } catch (error) { - headless_log.debug(error); - return null; - } -} + case dom_navigator_DOMNavigator.DIRECTION.down: + container.scrollTop = el.offsetTop - container.offsetTop - (container.offsetHeight - el.offsetHeight); + break; + } + } else if (!inViewport(el)) { + switch (direction) { + case dom_navigator_DOMNavigator.DIRECTION.left: + document.body.scrollLeft = absoluteOffsetLeft(el) - document.body.offsetLeft; + break; -function checkTLS(uri) { - return window.location.protocol === 'http:' || window.location.protocol === 'https:' && uri.protocol().toLowerCase() === "https"; -} + case dom_navigator_DOMNavigator.DIRECTION.up: + document.body.scrollTop = absoluteOffsetTop(el) - document.body.offsetTop; + break; -function checkFileTypes(types, url) { - const uri = getURI(url); + case dom_navigator_DOMNavigator.DIRECTION.right: + document.body.scrollLeft = absoluteOffsetLeft(el) - document.body.offsetLeft - (document.documentElement.clientWidth - el.offsetWidth); + break; - if (uri === null || !checkTLS(uri)) { - return false; + case dom_navigator_DOMNavigator.DIRECTION.down: + document.body.scrollTop = absoluteOffsetTop(el) - document.body.offsetTop - (document.documentElement.clientHeight - el.offsetHeight); + break; + } + } } + /** + * Indicate if an element is in the container viewport. + * @param { HTMLElement } el The element to check. + * @return { Boolean } true if the given element is in the container viewport, otherwise false. + */ - const filename = uri.filename().toLowerCase(); - return !!types.filter(ext => filename.endsWith(ext)).length; -} -utils_core.isAudioURL = url => checkFileTypes(['.ogg', '.mp3', '.m4a'], url); + inScrollContainerViewport(el) { + const container = this.scroll_container; // Check on left side. -utils_core.isVideoURL = url => checkFileTypes(['.mp4', '.webm'], url); + if (el.offsetLeft - container.scrollLeft < container.offsetLeft) { + return false; + } // Check on top side. -utils_core.isURLWithImageExtension = url => checkFileTypes(['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.svg'], url); -utils_core.isImageURL = url => { - const regex = converse_core_api.settings.get('image_urls_regex'); - return (regex === null || regex === void 0 ? void 0 : regex.test(url)) || utils_core.isURLWithImageExtension(url); -}; + if (el.offsetTop - container.scrollTop < container.offsetTop) { + return false; + } // Check on right side. -utils_core.isImageDomainAllowed = url => { - const show_images_inline = converse_core_api.settings.get('show_images_inline'); - if (!Array.isArray(show_images_inline)) { + if (el.offsetLeft + el.offsetWidth - container.scrollLeft > container.offsetLeft + container.offsetWidth) { + return false; + } // Check on down side. + + + if (el.offsetTop + el.offsetHeight - container.scrollTop > container.offsetTop + container.offsetHeight) { + return false; + } + return true; } + /** + * Find and store the navigable elements + */ - try { - const image_domain = getURI(url).domain(); - return show_images_inline.includes(image_domain); - } catch (error) { - headless_log.debug(error); - return true; + + getElements(direction) { + const selector = this.options.getSelector ? this.options.getSelector(direction) : this.options.selector; + + if (!this.elements[selector]) { + this.elements[selector] = Array.from(this.container.querySelectorAll(selector)); + } + + return this.elements[selector]; } -}; + /** + * Return an array of navigable elements after an offset. + * @param { number } left The left offset. + * @param { number } top The top offset. + * @return { Array } An array of elements. + */ -function getFileName(uri) { - try { - return decodeURI(uri.filename()); - } catch (error) { - headless_log.debug(error); - return uri.filename(); + + elementsAfter(left, top) { + return this.getElements(dom_navigator_DOMNavigator.DIRECTION.down).filter(el => el.offsetLeft >= left && el.offsetTop >= top); } -} + /** + * Return an array of navigable elements before an offset. + * @param { number } left The left offset. + * @param { number } top The top offset. + * @return { Array } An array of elements. + */ -function renderAudioURL(_converse, uri) { - const { - __ - } = _converse; - return audio({ - 'url': uri.toString(), - 'label_download': __('Download audio file "%1$s"', getFileName(uri)) - }); -} -function renderImageURL(_converse, uri) { - const { - __ - } = _converse; - return templates_file({ - 'url': uri.toString(), - 'label_download': __('Download image file "%1$s"', getFileName(uri)) - }); + elementsBefore(left, top) { + return this.getElements(dom_navigator_DOMNavigator.DIRECTION.up).filter(el => el.offsetLeft <= left && el.offsetTop <= top); + } + /** + * Handle the key down event. + * @param { Event } event The event object. + */ + + + handleKeydown(ev) { + const keys = keycodes; + const direction = ev.shiftKey ? this.keys["".concat(keys.SHIFT, "+").concat(ev.which)] : this.keys[ev.which]; + + if (direction) { + ev.preventDefault(); + ev.stopPropagation(); + const next = this.getNextElement(direction, ev); + this.select(next, direction); + } + } + } -function renderFileURL(_converse, uri) { - const { - __ - } = _converse; - return templates_file({ - 'url': uri.toString(), - 'label_download': __('Download file "%1$s"', getFileName(uri)) - }); +/* harmony default export */ var dom_navigator = (dom_navigator_DOMNavigator); +// CONCATENATED MODULE: ./node_modules/lit-html/directives/until.js +/** + * @license + * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. + * This code may only be used under the BSD style license found at + * http://polymer.github.io/LICENSE.txt + * The complete set of authors may be found at + * http://polymer.github.io/AUTHORS.txt + * The complete set of contributors may be found at + * http://polymer.github.io/CONTRIBUTORS.txt + * Code distributed by Google as part of the polymer project is also + * subject to an additional IP rights grant found at + * http://polymer.github.io/PATENTS.txt + */ + + +const _state = new WeakMap(); +// Effectively infinity, but a SMI. +const _infinity = 0x7fffffff; +/** + * Renders one of a series of values, including Promises, to a Part. + * + * Values are rendered in priority order, with the first argument having the + * highest priority and the last argument having the lowest priority. If a + * value is a Promise, low-priority values will be rendered until it resolves. + * + * The priority of values can be used to create placeholder content for async + * data. For example, a Promise with pending content can be the first, + * highest-priority, argument, and a non_promise loading indicator template can + * be used as the second, lower-priority, argument. The loading indicator will + * render immediately, and the primary content will render when the Promise + * resolves. + * + * Example: + * + * const content = fetch('./content.txt').then(r => r.text()); + * html`${until(content, html`<span>Loading...</span>`)}` + */ +const until = directive_directive((...args) => (part) => { + let state = _state.get(part); + if (state === undefined) { + state = { + lastRenderedIndex: _infinity, + values: [], + }; + _state.set(part, state); + } + const previousValues = state.values; + let previousLength = previousValues.length; + state.values = args; + for (let i = 0; i < args.length; i++) { + // If we've rendered a higher-priority value already, stop. + if (i > state.lastRenderedIndex) { + break; + } + const value = args[i]; + // Render non-Promise values immediately + if (isPrimitive(value) || + typeof value.then !== 'function') { + part.setValue(value); + state.lastRenderedIndex = i; + // Since a lower-priority value will never overwrite a higher-priority + // synchronous value, we can stop processing now. + break; + } + // If this is a Promise we've already handled, skip it. + if (i < previousLength && value === previousValues[i]) { + continue; + } + // We have a Promise that we haven't seen before, so priorities may have + // changed. Forget what we rendered before. + state.lastRenderedIndex = _infinity; + previousLength = 0; + Promise.resolve(value).then((resolvedValue) => { + const index = state.values.indexOf(value); + // If state.values doesn't contain the value, we've re-rendered without + // the value, so don't render it. Then, only render if the value is + // higher-priority than what's already been rendered. + if (index > -1 && index < state.lastRenderedIndex) { + state.lastRenderedIndex = index; + part.setValue(resolvedValue); + part.commit(); + } + }); + } +}); +//# sourceMappingURL=until.js.map +// CONCATENATED MODULE: ./src/components/dropdown.js +function dropdown_templateObject() { + const data = dropdown_taggedTemplateLiteral(["\n <div class=\"dropleft\">\n <button type=\"button\" class=\"btn btn--transparent btn--standalone\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <i class=\"", " only-icon\"></i>\n </button>\n <div class=\"dropdown-menu\">\n ", "\n </div>\n </div>\n "]); + + dropdown_templateObject = function () { + return data; + }; + + return data; } -/** - * Returns the markup for a URL that points to a downloadable asset - * (such as a video, image or audio file). - * @method u#getOOBURLMarkup - * @param { String } url - * @returns { String } - */ +function dropdown_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -utils_core.getOOBURLMarkup = function (_converse, url) { - const uri = getURI(url); - if (uri === null) { - return url; - } - if (utils_core.isVideoURL(uri)) { - return video({ - url - }); - } else if (utils_core.isAudioURL(uri)) { - return renderAudioURL(_converse, uri); - } else if (utils_core.isImageURL(uri)) { - return renderImageURL(_converse, uri); - } else { - return renderFileURL(_converse, uri); - } -}; -/** - * Applies some resistance to `value` around the `default_value`. - * If value is close enough to `default_value`, then it is returned, otherwise - * `value` is returned. - * @method u#applyDragResistance - * @param { Integer } value - * @param { Integer } default_value - * @returns { Integer } - */ -utils_core.applyDragResistance = function (value, default_value) { - if (value === undefined) { - return undefined; - } else if (default_value === undefined) { - return value; + +const dropdown_u = converse.env.utils; +class dropdown_BaseDropdown extends element_CustomElement { + firstUpdated() { + this.menu = this.querySelector('.dropdown-menu'); + this.dropdown = this.firstElementChild; + this.button = this.dropdown.querySelector('button'); + this.dropdown.addEventListener('click', ev => this.toggleMenu(ev)); + this.dropdown.addEventListener('keyup', ev => this.handleKeyUp(ev)); + document.addEventListener('click', ev => !this.contains(ev.composedPath()[0]) && this.hideMenu(ev)); } - const resistance = 10; + hideMenu() { + var _this$button, _this$button2; - if (value !== default_value && Math.abs(value - default_value) < resistance) { - return default_value; + dropdown_u.removeClass('show', this.menu); + (_this$button = this.button) === null || _this$button === void 0 ? void 0 : _this$button.setAttribute('aria-expanded', false); + (_this$button2 = this.button) === null || _this$button2 === void 0 ? void 0 : _this$button2.blur(); } - return value; -}; -/** - * Return the height of the passed in DOM element, - * based on the heights of its children. - * @method u#calculateElementHeight - * @param {HTMLElement} el - * @returns {integer} - */ + showMenu() { + dropdown_u.addClass('show', this.menu); + this.button.setAttribute('aria-expanded', true); + } + toggleMenu(ev) { + ev.preventDefault(); -utils_core.calculateElementHeight = function (el) { - return Array.from(el.children).reduce((result, child) => result + child.offsetHeight, 0); -}; + if (dropdown_u.hasClass('show', this.menu)) { + this.hideMenu(); + } else { + this.showMenu(); + } + } -utils_core.getNextElement = function (el, selector = '*') { - let next_el = el.nextElementSibling; + handleKeyUp(ev) { + if (ev.keyCode === converse.keycodes.ESCAPE) { + this.hideMenu(); + } else if (ev.keyCode === converse.keycodes.DOWN_ARROW && this.navigator && !this.navigator.enabled) { + this.enableArrowNavigation(ev); + } + } - while (next_el !== null && !sizzle_default.a.matchesSelector(next_el, selector)) { - next_el = next_el.nextElementSibling; +} +class dropdown_DropdownList extends dropdown_BaseDropdown { + static get properties() { + return { + 'icon_classes': { + type: String + }, + 'items': { + type: Array + } + }; } - return next_el; -}; + render() { + const icon_classes = this.icon_classes || "fa fa-bars"; + return lit_html_html(dropdown_templateObject(), icon_classes, this.items.map(b => until(b, ''))); + } -utils_core.getPreviousElement = function (el, selector = '*') { - let prev_el = el.previousElementSibling; + hideMenu() { + super.hideMenu(); + this.navigator.disable(); + } - while (prev_el !== null && !sizzle_default.a.matchesSelector(prev_el, selector)) { - prev_el = prev_el.previousElementSibling; + firstUpdated() { + super.firstUpdated(); + this.initArrowNavigation(); } - return prev_el; -}; + initArrowNavigation() { + if (!this.navigator) { + const options = { + 'selector': '.dropdown-item', + 'onSelected': el => el.focus() + }; + this.navigator = new dom_navigator(this.menu, options); + } + } -utils_core.getFirstChildElement = function (el, selector = '*') { - let first_el = el.firstElementChild; + enableArrowNavigation(ev) { + if (ev) { + ev.preventDefault(); + ev.stopPropagation(); + } - while (first_el !== null && !sizzle_default.a.matchesSelector(first_el, selector)) { - first_el = first_el.nextElementSibling; + this.navigator.enable(); + this.navigator.select(this.menu.firstElementChild); } - return first_el; -}; - -utils_core.getLastChildElement = function (el, selector = '*') { - let last_el = el.lastElementChild; + handleKeyUp(ev) { + super.handleKeyUp(ev); - while (last_el !== null && !sizzle_default.a.matchesSelector(last_el, selector)) { - last_el = last_el.previousElementSibling; + if (ev.keyCode === converse.keycodes.DOWN_ARROW && !this.navigator.enabled) { + this.enableArrowNavigation(ev); + } } - return last_el; -}; +} +core_api.elements.define('converse-dropdown', dropdown_DropdownList); +// CONCATENATED MODULE: ./src/components/message-actions.js +function message_actions_templateObject3() { + const data = message_actions_taggedTemplateLiteral(["<converse-dropdown class=\"chat-msg__actions\" .items=", "></converse-dropdown>"]); -utils_core.hasClass = function (className, el) { - return el instanceof Element && el.classList.contains(className); -}; + message_actions_templateObject3 = function () { + return data; + }; -utils_core.toggleClass = function (className, el) { - utils_core.hasClass(className, el) ? utils_core.removeClass(className, el) : utils_core.addClass(className, el); -}; -/** - * Add a class to an element. - * @method u#addClass - * @param {string} className - * @param {Element} el - */ + return data; +} +function message_actions_templateObject2() { + const data = message_actions_taggedTemplateLiteral(["\n <button class=\"chat-msg__action ", "\" @click=", ">\n <converse-icon class=\"", "\"\n path-prefix=\"", "\"\n color=\"var(--text-color-lighten-15-percent)\"\n size=\"1em\"></converse-icon>\n ", "\n </button>\n "]); -utils_core.addClass = function (className, el) { - el instanceof Element && el.classList.add(className); - return el; -}; -/** - * Remove a class from an element. - * @method u#removeClass - * @param {string} className - * @param {Element} el - */ + message_actions_templateObject2 = function () { + return data; + }; + return data; +} -utils_core.removeClass = function (className, el) { - el instanceof Element && el.classList.remove(className); - return el; -}; +function message_actions_templateObject() { + const data = message_actions_taggedTemplateLiteral(["", ""]); -utils_core.removeElement = function (el) { - el instanceof Element && el.parentNode && el.parentNode.removeChild(el); - return el; -}; + message_actions_templateObject = function () { + return data; + }; -utils_core.getElementFromTemplateResult = function (tr) { - const div = document.createElement('div'); - render_render(tr, div); - return div.firstElementChild; -}; + return data; +} -utils_core.showElement = el => { - utils_core.removeClass('collapsed', el); - utils_core.removeClass('hidden', el); -}; +function message_actions_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -utils_core.hideElement = function (el) { - el instanceof Element && el.classList.add('hidden'); - return el; -}; -utils_core.ancestor = function (el, selector) { - let parent = el; - while (parent !== null && !sizzle_default.a.matchesSelector(parent, selector)) { - parent = parent.parentElement; - } - return parent; -}; -/** - * Return the element's siblings until one matches the selector. - * @private - * @method u#nextUntil - * @param { HTMLElement } el - * @param { String } selector - */ -utils_core.nextUntil = function (el, selector) { - const matches = []; - let sibling_el = el.nextElementSibling; - while (sibling_el !== null && !sibling_el.matches(selector)) { - matches.push(sibling_el); - sibling_el = sibling_el.nextElementSibling; +class message_actions_MessageActions extends element_CustomElement { + static get properties() { + return { + chatview: { + type: Object + }, + model: { + type: Object + }, + editable: { + type: Boolean + }, + correcting: { + type: Boolean + }, + message_type: { + type: String + }, + is_retracted: { + type: Boolean + } + }; } - return matches; -}; -/** - * Helper method that replace HTML-escaped symbols with equivalent characters - * (e.g. transform occurrences of '&' to '&') - * @private - * @method u#unescapeHTML - * @param { String } string - a String containing the HTML-escaped symbols. - */ - - -utils_core.unescapeHTML = function (string) { - var div = document.createElement('div'); - div.innerHTML = string; - return div.innerText; -}; - -utils_core.escapeHTML = function (string) { - return string.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """); -}; - -utils_core.convertToImageTag = function (url, onLoad, onClick) { - return templates_image({ - url, - onClick, - onLoad - }); -}; - -utils_core.convertURIoHyperlink = function (uri, urlAsTyped) { - let normalized_url = uri.normalize()._string; - - const pretty_url = uri._parts.urn ? normalized_url : uri.readable(); - const visible_url = urlAsTyped || pretty_url; - - if (!uri._parts.protocol && !normalized_url.startsWith('http://') && !normalized_url.startsWith('https://')) { - normalized_url = 'http://' + normalized_url; + render() { + return lit_html_html(message_actions_templateObject(), until(this.renderActions(), '')); } - if (uri._parts.protocol === 'xmpp' && uri._parts.query === 'join') { - return lit_html_html(html_templateObject(), ev => converse_core_api.rooms.open(ev.target.href), normalized_url, visible_url); + static getActionsDropdownItem(o) { + return lit_html_html(message_actions_templateObject2(), o.button_class, o.handler, o.icon_class, core_api.settings.get("assets_path"), o.i18n_text); } - return lit_html_html(html_templateObject2(), normalized_url, visible_url); -}; - -function isProtocolApproved(protocol, safeProtocolsList = APPROVED_URL_PROTOCOLS) { - return !!safeProtocolsList.includes(protocol); -} // Will return false if URL is malformed or contains disallowed characters - - -function isUrlValid(urlString) { - try { - const url = new URL(urlString); - return !!url; - } catch (error) { - return false; + onMessageEditButtonClicked(ev) { + ev.preventDefault(); + this.chatview.onMessageEditButtonClicked(this.model); } -} - -utils_core.convertUrlToHyperlink = function (url) { - const http_url = RegExp('^w{3}.', 'ig').test(url) ? "http://".concat(url) : url; - const uri = getURI(url); - if (uri !== null && isUrlValid(http_url) && (isProtocolApproved(uri._parts.protocol) || !uri._parts.protocol)) { - return this.convertURIoHyperlink(uri, url); + onMessageRetractButtonClicked(ev) { + ev.preventDefault(); + this.chatview.onMessageRetractButtonClicked(this.model); } - return url; -}; + async getActionButtons() { + const buttons = []; -utils_core.filterQueryParamsFromURL = function (url) { - const paramsArray = converse_core_api.settings.get("filter_url_query_params"); - if (!paramsArray) return url; - const parsed_uri = getURI(url); - return parsed_uri.removeQuery(paramsArray).toString(); -}; + if (this.editable) { + buttons.push({ + 'i18n_text': this.correcting ? i18n_('Cancel Editing') : i18n_('Edit'), + 'handler': ev => this.onMessageEditButtonClicked(ev), + 'button_class': 'chat-msg__action-edit', + 'icon_class': 'fa fa-pencil-alt', + 'name': 'edit' + }); + } -utils_core.addHyperlinks = function (text) { - const objs = []; - const parse_options = { - 'start': /\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi - }; + const may_be_moderated = this.model.get('type') === 'groupchat' && (await this.model.mayBeModerated()); + const retractable = !this.is_retracted && (this.model.mayBeRetracted() || may_be_moderated); - try { - URI_default.a.withinString(text, (url, start, end) => { - objs.push({ - url, - start, - end + if (retractable) { + buttons.push({ + 'i18n_text': i18n_('Retract'), + 'handler': ev => this.onMessageRetractButtonClicked(ev), + 'button_class': 'chat-msg__action-retract', + 'icon_class': 'fas fa-trash-alt', + 'name': 'retract' }); - return url; - }, parse_options); - } catch (error) { - headless_log.debug(error); - return [text]; + } + /** + * *Hook* which allows plugins to add more message action buttons + * @event _converse#getMessageActionButtons + * @example + * api.listen.on('getMessageActionButtons', (el, buttons) => { + * buttons.push({ + * 'i18n_text': 'Foo', + * 'handler': ev => alert('Foo!'), + * 'button_class': 'chat-msg__action-foo', + * 'icon_class': 'fa fa-check', + * 'name': 'foo' + * }); + * return buttons; + * }); + */ + + + return core_api.hook('getMessageActionButtons', this, buttons); } - let list = [text]; + async renderActions() { + const buttons = await this.getActionButtons(); + const items = buttons.map(b => message_actions_MessageActions.getActionsDropdownItem(b)); - if (objs.length) { - objs.sort((a, b) => b.start - a.start).forEach(url_obj => { - const text = list.shift(); - const url_text = text.slice(url_obj.start, url_obj.end); - list = [text.slice(0, url_obj.start), utils_core.convertUrlToHyperlink(url_text), text.slice(url_obj.end), ...list]; - }); - } else { - list = [text]; + if (items.length) { + return lit_html_html(message_actions_templateObject3(), items); + } else { + return ''; + } } - return list; -}; +} -utils_core.httpToGeoUri = function (text, _converse) { - const replacement = 'geo:$1,$2'; - return text.replace(_converse.api.settings.get("geouri_regex"), replacement); -}; +core_api.elements.define('converse-message-actions', message_actions_MessageActions); +// EXTERNAL MODULE: ./node_modules/bootstrap.native/dist/bootstrap-native.js +var bootstrap_native = __webpack_require__(34); +var bootstrap_native_default = /*#__PURE__*/__webpack_require__.n(bootstrap_native); -utils_core.slideInAllElements = function (elements, duration = 300) { - return Promise.all(Array.from(elements).map(e => utils_core.slideIn(e, duration))); -}; +// CONCATENATED MODULE: ./src/templates/alert.js +function alert_templateObject() { + const data = alert_taggedTemplateLiteral(["<div class=\"alert ", "\" role=\"alert\"><p>", "</p></div>"]); -utils_core.slideToggleElement = function (el, duration) { - if (utils_core.hasClass('collapsed', el) || utils_core.hasClass('hidden', el)) { - return utils_core.slideOut(el, duration); - } else { - return utils_core.slideIn(el, duration); - } -}; -/** - * Shows/expands an element by sliding it out of itself - * @private - * @method u#slideOut - * @param { HTMLElement } el - The HTML string - * @param { Number } duration - The duration amount in milliseconds - */ + alert_templateObject = function () { + return data; + }; + return data; +} -utils_core.slideOut = function (el, duration = 200) { - return new Promise((resolve, reject) => { - if (!el) { - const err = "An element needs to be passed in to slideOut"; - headless_log.warn(err); - reject(new Error(err)); - return; - } +function alert_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - const marker = el.getAttribute('data-slider-marker'); - if (marker) { - el.removeAttribute('data-slider-marker'); - window.cancelAnimationFrame(marker); - } +/* harmony default export */ var templates_alert = (o => lit_html_html(alert_templateObject(), o.type, o.message)); +// CONCATENATED MODULE: ./src/modals/base.js - const end_height = utils_core.calculateElementHeight(el); - if (window.converse_disable_effects) { - // Effects are disabled (for tests) - el.style.height = end_height + 'px'; - slideOutWrapup(el); - resolve(); - return; - } - if (!utils_core.hasClass('collapsed', el) && !utils_core.hasClass('hidden', el)) { - resolve(); - return; - } - const steps = duration / 17; // We assume 17ms per animation which is ~60FPS - let height = 0; - function draw() { - height += end_height / steps; +const { + sizzle: base_sizzle +} = converse.env; +const base_u = converse.env.utils; +const BaseModal = View.extend({ + className: "modal", + persistent: false, + // Whether this modal should persist in the DOM once it's been closed + events: { + 'click .nav-item .nav-link': 'switchTab' + }, - if (height < end_height) { - el.style.height = height + 'px'; - el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); - } else { - // We recalculate the height to work around an apparent - // browser bug where browsers don't know the correct - // offsetHeight beforehand. - el.removeAttribute('data-slider-marker'); - el.style.height = utils_core.calculateElementHeight(el) + 'px'; - el.style.overflow = ""; - el.style.height = ""; - resolve(); - } + initialize(options) { + if (!this.id) { + throw new Error("Each modal class must have a unique id attribute"); } - el.style.height = '0'; - el.style.overflow = 'hidden'; - el.classList.remove('hidden'); - el.classList.remove('collapsed'); - el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); - }); -}; + this.render(); // Allow properties to be set via passed in options -utils_core.slideIn = function (el, duration = 200) { - /* Hides/collapses an element by sliding it into itself. */ - return new Promise((resolve, reject) => { - if (!el) { - const err = "An element needs to be passed in to slideIn"; - headless_log.warn(err); - return reject(new Error(err)); - } else if (utils_core.hasClass('collapsed', el)) { - return resolve(el); - } else if (window.converse_disable_effects) { - // Effects are disabled (for tests) - el.classList.add('collapsed'); - el.style.height = ""; - return resolve(el); - } + Object.assign(this, options); + this.el.setAttribute('tabindex', '-1'); + this.el.setAttribute('role', 'dialog'); + this.el.setAttribute('aria-hidden', 'true'); + const label_id = this.el.querySelector('.modal-title').getAttribute('id'); + label_id && this.el.setAttribute('aria-labelledby', label_id); + this.insertIntoDOM(); + const Modal = bootstrap_native_default.a.Modal; + this.modal = new Modal(this.el, { + backdrop: true, + keyboard: true + }); + this.el.addEventListener('hide.bs.modal', () => this.onHide(), false); + }, - const marker = el.getAttribute('data-slider-marker'); + onHide() { + base_u.removeClass('selected', this.trigger_el); + !this.persistent && core_api.modal.remove(this); + }, - if (marker) { - el.removeAttribute('data-slider-marker'); - window.cancelAnimationFrame(marker); - } + insertIntoDOM() { + const container_el = core_converse.chatboxviews.el.querySelector("#converse-modals"); - const original_height = el.offsetHeight, - steps = duration / 17; // We assume 17ms per animation which is ~60FPS + container_el.insertAdjacentElement('beforeEnd', this.el); + }, - let height = original_height; - el.style.overflow = 'hidden'; + switchTab(ev) { + ev.stopPropagation(); + ev.preventDefault(); + base_sizzle('.nav-link.active', this.el).forEach(el => { + base_u.removeClass('active', this.el.querySelector(el.getAttribute('href'))); + base_u.removeClass('active', el); + }); + base_u.addClass('active', ev.target); + base_u.addClass('active', this.el.querySelector(ev.target.getAttribute('href'))); + }, - function draw() { - height -= original_height / steps; + alert(message, type = 'primary') { + const body = this.el.querySelector('.modal-alert'); - if (height > 0) { - el.style.height = height + 'px'; - el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); - } else { - el.removeAttribute('data-slider-marker'); - el.classList.add('collapsed'); - el.style.height = ""; - resolve(el); - } - } + if (body === null) { + headless_log.error("Could not find a .modal-alert element in the modal to show an alert message in!"); + return; + } // FIXME: Instead of adding the alert imperatively, we should + // find a way to let the modal rerender with an alert message - el.setAttribute('data-slider-marker', window.requestAnimationFrame(draw)); - }); -}; -function afterAnimationEnds(el, callback) { - el.classList.remove('visible'); + render_render(templates_alert({ + 'type': "alert-".concat(type), + 'message': message + }), body); + const el = body.firstElementChild; + setTimeout(() => { + base_u.addClass('fade-out', el); + setTimeout(() => base_u.removeElement(el), 600); + }, 5000); + }, - if (lodash_es_isFunction(callback)) { - callback(); + show(ev) { + if (ev) { + ev.preventDefault(); + this.trigger_el = ev.target; + this.trigger_el.classList.add('selected'); + } + + this.modal.show(); } + +}); +/* harmony default export */ var modals_base = (BaseModal); +// CONCATENATED MODULE: ./src/modals/templates/buttons.js +function buttons_templateObject2() { + const data = buttons_taggedTemplateLiteral(["<button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"", "\"><span aria-hidden=\"true\">\xD7</span></button>"]); + + buttons_templateObject2 = function () { + return data; + }; + + return data; } -utils_core.isInDOM = function (el) { - return document.querySelector('body').contains(el); -}; +function buttons_templateObject() { + const data = buttons_taggedTemplateLiteral(["<button type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\">", "</button>"]); -utils_core.isVisible = function (el) { - if (el === null) { - return false; - } + buttons_templateObject = function () { + return data; + }; - if (utils_core.hasClass('hidden', el)) { - return false; - } // XXX: Taken from jQuery's "visible" implementation + return data; +} +function buttons_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0; -}; -utils_core.fadeIn = function (el, callback) { - if (!el) { - headless_log.warn("An element needs to be passed in to fadeIn"); - } - if (window.converse_disable_effects) { - el.classList.remove('hidden'); - return afterAnimationEnds(el, callback); - } +const modal_close_button = lit_html_html(buttons_templateObject(), i18n_('Close')); +const modal_header_close_button = lit_html_html(buttons_templateObject2(), i18n_('Close')); +// CONCATENATED MODULE: ./src/modals/templates/image.js +function modals_templates_image_templateObject() { + const data = modals_templates_image_taggedTemplateLiteral(["\n <div class=\"modal-dialog fit-content\" role=\"document\">\n <div class=\"modal-content fit-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"message-versions-modal-label\">", "<a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a></h4>\n ", "\n </div>\n <div class=\"modal-body modal-body--image fit-content\">\n <img class=\"chat-image\" src=\"", "\" @load=", ">\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>"]); - if (utils_core.hasClass('hidden', el)) { - el.classList.add('visible'); - el.classList.remove('hidden'); - el.addEventListener("webkitAnimationEnd", () => afterAnimationEnds(el, callback)); - el.addEventListener("animationend", () => afterAnimationEnds(el, callback)); - el.addEventListener("oanimationend", () => afterAnimationEnds(el, callback)); - } else { - afterAnimationEnds(el, callback); - } -}; -/** - * Takes a field in XMPP XForm (XEP-004: Data Forms) format - * and turns it into an HTML field. - * Returns either text or a DOM element (which is not ideal, but fine for now). - * @private - * @method u#xForm2webForm - * @param { XMLElement } field - the field to convert - */ + modals_templates_image_templateObject = function () { + return data; + }; + return data; +} -utils_core.xForm2webForm = function (field, stanza, options) { - if (field.getAttribute('type') === 'list-single' || field.getAttribute('type') === 'list-multi') { - const values = utils_core.queryChildren(field, 'value').map(el => el === null || el === void 0 ? void 0 : el.textContent); - const options = utils_core.queryChildren(field, 'option').map(option => { - var _option$querySelector; +function modals_templates_image_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - const value = (_option$querySelector = option.querySelector('value')) === null || _option$querySelector === void 0 ? void 0 : _option$querySelector.textContent; - return select_option_default()({ - 'value': value, - 'label': option.getAttribute('label'), - 'selected': values.includes(value), - 'required': !!field.querySelector('required') - }); - }); - return form_select_default()({ - 'id': utils_core.getUniqueId(), - 'name': field.getAttribute('var'), - 'label': field.getAttribute('label'), - 'options': options.join(''), - 'multiple': field.getAttribute('type') === 'list-multi', - 'required': !!field.querySelector('required') - }); - } else if (field.getAttribute('type') === 'fixed') { - var _field$querySelector; - const text = (_field$querySelector = field.querySelector('value')) === null || _field$querySelector === void 0 ? void 0 : _field$querySelector.textContent; - return '<p class="form-help">' + text + '</p>'; - } else if (field.getAttribute('type') === 'jid-multi') { - var _field$querySelector2; - return form_textarea_default()({ - 'name': field.getAttribute('var'), - 'label': field.getAttribute('label') || '', - 'value': (_field$querySelector2 = field.querySelector('value')) === null || _field$querySelector2 === void 0 ? void 0 : _field$querySelector2.textContent, - 'required': !!field.querySelector('required') - }); - } else if (field.getAttribute('type') === 'boolean') { - var _field$querySelector3; - const value = (_field$querySelector3 = field.querySelector('value')) === null || _field$querySelector3 === void 0 ? void 0 : _field$querySelector3.textContent; - return form_checkbox_default()({ - 'id': utils_core.getUniqueId(), - 'name': field.getAttribute('var'), - 'label': field.getAttribute('label') || '', - 'checked': (value === "1" || value === "true") && 'checked="1"' || '', - 'required': !!field.querySelector('required') - }); - } else if (field.getAttribute('var') === 'url') { - var _field$querySelector4; +/* harmony default export */ var modals_templates_image = (o => { + return lit_html_html(modals_templates_image_templateObject(), i18n_('Image: '), o.src, o.src, modal_header_close_button, o.src, o.onload, modal_close_button); +}); +// CONCATENATED MODULE: ./src/modals/image.js - return form_url_default()({ - 'label': field.getAttribute('label') || '', - 'value': (_field$querySelector4 = field.querySelector('value')) === null || _field$querySelector4 === void 0 ? void 0 : _field$querySelector4.textContent - }); - } else if (field.getAttribute('var') === 'username') { - var _field$querySelector5; - return form_username_default()({ - 'domain': ' @' + options.domain, - 'name': field.getAttribute('var'), - 'type': XFORM_TYPE_MAP[field.getAttribute('type')], - 'label': field.getAttribute('label') || '', - 'value': (_field$querySelector5 = field.querySelector('value')) === null || _field$querySelector5 === void 0 ? void 0 : _field$querySelector5.textContent, - 'required': !!field.querySelector('required') - }); - } else if (field.getAttribute('var') === 'ocr') { - // Captcha - const uri = field.querySelector('uri'); - const el = sizzle_default()('data[cid="' + uri.textContent.replace(/^cid:/, '') + '"]', stanza)[0]; - return form_captcha_default()({ - 'label': field.getAttribute('label'), - 'name': field.getAttribute('var'), - 'data': el === null || el === void 0 ? void 0 : el.textContent, - 'type': uri.getAttribute('type'), - 'required': !!field.querySelector('required') - }); - } else { - var _field$querySelector6; +/* harmony default export */ var modals_image = (modals_base.extend({ + id: 'image-modal', - const name = field.getAttribute('var'); - return form_input_default()({ - 'id': utils_core.getUniqueId(), - 'label': field.getAttribute('label') || '', - 'name': name, - 'fixed_username': options === null || options === void 0 ? void 0 : options.fixed_username, - 'autocomplete': getAutoCompleteProperty(name, options), - 'placeholder': null, - 'required': !!field.querySelector('required'), - 'type': XFORM_TYPE_MAP[field.getAttribute('type')], - 'value': (_field$querySelector6 = field.querySelector('value')) === null || _field$querySelector6 === void 0 ? void 0 : _field$querySelector6.textContent + toHTML() { + return modals_templates_image({ + 'src': this.src, + 'onload': ev => ev.target.parentElement.style.height = "".concat(ev.target.height, "px") }); } -}; -/* harmony default export */ var utils_html = (utils_core); -// CONCATENATED MODULE: ./src/dom-navigator.js -/** - * @module dom-navigator - * @description A class for navigating the DOM with the keyboard - * This module started as a fork of Rubens Mariuzzo's dom-navigator. - * @copyright Rubens Mariuzzo, JC Brand - */ +})); +// CONCATENATED MODULE: ./src/templates/directives/styling.js +function styling_templateObject2() { + const data = styling_taggedTemplateLiteral(["", ""]); + styling_templateObject2 = function () { + return data; + }; -const { - keycodes -} = converse; -/** - * Indicates if a given element is fully visible in the viewport. - * @param { Element } el The element to check. - * @return { Boolean } True if the given element is fully visible in the viewport, otherwise false. - */ + return data; +} -function inViewport(el) { - const rect = el.getBoundingClientRect(); - return rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth; +function styling_templateObject() { + const data = styling_taggedTemplateLiteral(["", ""]); + + styling_templateObject = function () { + return data; + }; + + return data; } -/** - * Return the absolute offset top of an element. - * @param el { Element } The element. - * @return { Number } The offset top. - */ +function styling_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -function absoluteOffsetTop(el) { - let offsetTop = 0; - do { - if (!isNaN(el.offsetTop)) { - offsetTop += el.offsetTop; - } - } while (el = el.offsetParent); - return offsetTop; + + +async function styling_transform(t) { + await t.addTemplates(); + return t.payload; +} + +function styling_renderer(text, model, offset) { + const t = new text_MessageText(text, model, offset, false); + return lit_html_html(styling_templateObject(), until(styling_transform(t), lit_html_html(styling_templateObject2(), t))); } -/** - * Return the absolute offset left of an element. - * @param el { Element } The element. - * @return { Number } The offset left. - */ +const renderStylingDirectiveBody = directive_directive((text, model, offset) => p => p.setValue(styling_renderer(text, model, offset))); +// CONCATENATED MODULE: ./src/shared/message/styling.js +function _templateObject6() { + const data = message_styling_taggedTemplateLiteral(["<span class=\"styling-directive\">*</span><b>", "</b><span class=\"styling-directive\">*</span>"]); -function absoluteOffsetLeft(el) { - let offsetLeft = 0; + _templateObject6 = function () { + return data; + }; - do { - if (!isNaN(el.offsetLeft)) { - offsetLeft += el.offsetLeft; - } - } while (el = el.offsetParent); + return data; +} - return offsetLeft; +function _templateObject5() { + const data = message_styling_taggedTemplateLiteral(["<span class=\"styling-directive\">~</span><del>", "</del><span class=\"styling-directive\">~</span>"]); + + _templateObject5 = function () { + return data; + }; + + return data; } -/** - * Adds the ability to navigate the DOM with the arrow keys - * @class DOMNavigator - */ +function _templateObject4() { + const data = message_styling_taggedTemplateLiteral(["<blockquote>", "</blockquote>"]); -class dom_navigator_DOMNavigator { - /** - * Directions. - * @returns {{left: string, up: string, right: string, down: string}} - * @constructor - */ - static get DIRECTION() { - return { - down: 'down', - end: 'end', - home: 'home', - left: 'left', - right: 'right', - up: 'up' - }; - } - /** - * The default options for the DOM navigator. - * @returns {{ - * down: number, - * getSelector: null, - * jump_to_picked: null, - * jump_to_picked_direction: null, - * jump_to_picked_selector: string, - * left: number, - * onSelected: null, - * right: number, - * selected: string, - * up: number - * }} - */ + _templateObject4 = function () { + return data; + }; + return data; +} - static get DEFAULTS() { - return { - home: ["".concat(keycodes.SHIFT, "+").concat(keycodes.UP_ARROW)], - end: ["".concat(keycodes.SHIFT, "+").concat(keycodes.DOWN_ARROW)], - up: [keycodes.UP_ARROW], - down: [keycodes.DOWN_ARROW], - left: [keycodes.LEFT_ARROW, "".concat(keycodes.SHIFT, "+").concat(keycodes.TAB)], - right: [keycodes.RIGHT_ARROW, keycodes.TAB], - getSelector: null, - jump_to_picked: null, - jump_to_picked_direction: null, - jump_to_picked_selector: 'picked', - onSelected: null, - selected: 'selected', - selector: 'li' - }; - } +function styling_templateObject3() { + const data = message_styling_taggedTemplateLiteral(["<div class=\"styling-directive\">```</div><code class=\"block\">", "</code><div class=\"styling-directive\">```</div>"], ["<div class=\"styling-directive\">\\`\\`\\`</div><code class=\"block\">", "</code><div class=\"styling-directive\">\\`\\`\\`</div>"]); - static getClosestElement(els, getDistance) { - const next = els.reduce((prev, curr) => { - const current_distance = getDistance(curr); + styling_templateObject3 = function () { + return data; + }; - if (current_distance < prev.distance) { - return { - distance: current_distance, - element: curr - }; - } + return data; +} - return prev; - }, { - distance: Infinity - }); - return next.element; - } - /** - * Create a new DOM Navigator. - * @param { Element } container The container of the element to navigate. - * @param { Object } options The options to configure the DOM navigator. - * @param { Function } options.getSelector - * @param { Number } [options.down] - The keycode for navigating down - * @param { Number } [options.left] - The keycode for navigating left - * @param { Number } [options.right] - The keycode for navigating right - * @param { Number } [options.up] - The keycode for navigating up - * @param { String } [options.selected] - The class that should be added to the currently selected DOM element. - * @param { String } [options.jump_to_picked] - A selector, which if - * matched by the next element being navigated to, based on the direction - * given by `jump_to_picked_direction`, will cause navigation - * to jump to the element that matches the `jump_to_picked_selector`. - * For example, this is useful when navigating to tabs. You want to - * immediately navigate to the currently active tab instead of just - * navigating to the first tab. - * @param { String } [options.jump_to_picked_selector=picked] - The selector - * indicating the currently picked element to jump to. - * @param { String } [options.jump_to_picked_direction] - The direction for - * which jumping to the picked element should be enabled. - * @param { Function } [options.onSelected] - The callback function which - * should be called when en element gets selected. - * @constructor - */ +function message_styling_templateObject2() { + const data = message_styling_taggedTemplateLiteral(["<span class=\"styling-directive\">`</span><code>", "</code><span class=\"styling-directive\">`</span>"], ["<span class=\"styling-directive\">\\`</span><code>", "</code><span class=\"styling-directive\">\\`</span>"]); + message_styling_templateObject2 = function () { + return data; + }; - constructor(container, options) { - this.doc = window.document; - this.container = container; - this.scroll_container = options.scroll_container || container; - this.options = Object.assign({}, dom_navigator_DOMNavigator.DEFAULTS, options); - this.init(); - } - /** - * Initialize the navigator. - */ + return data; +} +function message_styling_templateObject() { + const data = message_styling_taggedTemplateLiteral(["<span class=\"styling-directive\">_</span><i>", "</i><span class=\"styling-directive\">_</span>"]); - init() { - this.selected = null; - this.keydownHandler = null; - this.elements = {}; // Create hotkeys map. + message_styling_templateObject = function () { + return data; + }; - this.keys = {}; - this.options.down.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.down); - this.options.end.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.end); - this.options.home.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.home); - this.options.left.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.left); - this.options.right.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.right); - this.options.up.forEach(key => this.keys[key] = dom_navigator_DOMNavigator.DIRECTION.up); - } - /** - * Enable this navigator. - */ + return data; +} +function message_styling_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - enable() { - this.getElements(); +/** + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + * @description Utility functions to help with parsing XEP-393 message styling hints + * @todo Other parsing helpers can be made more abstract and placed here. + */ - this.keydownHandler = event => this.handleKeydown(event); - this.doc.addEventListener('keydown', this.keydownHandler); - this.enabled = true; +const styling_directives = ['*', '_', '~', '`', '```', '>']; +const styling_map = { + '*': { + 'name': 'strong', + 'type': 'span' + }, + '_': { + 'name': 'emphasis', + 'type': 'span' + }, + '~': { + 'name': 'strike', + 'type': 'span' + }, + '`': { + 'name': 'preformatted', + 'type': 'span' + }, + '```': { + 'name': 'preformatted_block', + 'type': 'block' + }, + '>': { + 'name': 'quote', + 'type': 'block' } - /** - * Disable this navigator. - */ +}; +const dont_escape = ['_', '>', '`', '~']; +const styling_templates = { + // m is the chatbox model + // i is the offset of this directive relative to the start of the original message + 'emphasis': (txt, m, i) => lit_html_html(message_styling_templateObject(), renderStylingDirectiveBody(txt, m, i)), + 'preformatted': txt => lit_html_html(message_styling_templateObject2(), txt), + 'preformatted_block': txt => lit_html_html(styling_templateObject3(), txt), + 'quote': (txt, m, i) => lit_html_html(_templateObject4(), renderStylingDirectiveBody(txt, m, i)), + 'strike': (txt, m, i) => lit_html_html(_templateObject5(), renderStylingDirectiveBody(txt, m, i)), + 'strong': (txt, m, i) => lit_html_html(_templateObject6(), renderStylingDirectiveBody(txt, m, i)) +}; +/** + * Checks whether a given character "d" at index "i" of "text" is a valid opening or closing directive. + * @param { String } d - The potential directive + * @param { String } text - The text in which the directive appears + * @param { Number } i - The directive index + * @param { Boolean } opening - Check for a valid opening or closing directive + */ +function isValidDirective(d, text, i, opening) { + // Ignore directives that are parts of words + // More info on the Regexes used here: https://javascript.info/regexp-unicode#unicode-properties-p + if (opening) { + const regex = RegExp(dont_escape.includes(d) ? "^(\\p{L}|\\p{N})".concat(d) : "^(\\p{L}|\\p{N})\\".concat(d), 'u'); - disable() { - if (this.keydownHandler) { - this.doc.removeEventListener('keydown', this.keydownHandler); + if (i > 1 && regex.test(text.slice(i - 1))) { + return false; } - this.unselect(); - this.elements = {}; - this.enabled = false; - } - /** - * Destroy this navigator removing any event registered and any other data. - */ - + const is_quote = isQuoteDirective(d); - destroy() { - this.disable(); + if (is_quote && i > 0 && text[i - 1] !== '\n') { + // Quote directives must be on newlines + return false; + } else if (!is_quote && d === text[i + 1]) { + // Immediately followed by another directive of the same type + return false; + } + } else { + const regex = RegExp(dont_escape.includes(d) ? "^".concat(d, "(\\p{L}|\\p{N})") : "^\\".concat(d, "(\\p{L}|\\p{N})"), 'u'); - if (this.container.domNavigator) { - delete this.container.domNavigator; + if (i < text.length - 1 && regex.test(text.slice(i))) { + return false; } } - /** - * @param {'down'|'right'|'left'|'up'} direction - * @returns { HTMLElement } - */ + return true; +} +/** + * Given a specific index "i" of "text", return the directive it matches or + * null otherwise. + * @param { String } text - The text in which the directive appears + * @param { Number } i - The directive index + * @param { Boolean } opening - Whether we're looking for an opening or closing directive + */ - getNextElement(direction) { - let el; - if (direction === dom_navigator_DOMNavigator.DIRECTION.home) { - el = this.getElements(direction)[0]; - } else if (direction === dom_navigator_DOMNavigator.DIRECTION.end) { - el = Array.from(this.getElements(direction)).pop(); - } else if (this.selected) { - if (direction === dom_navigator_DOMNavigator.DIRECTION.right) { - const els = this.getElements(direction); - el = els.slice(els.indexOf(this.selected))[1]; - } else if (direction == dom_navigator_DOMNavigator.DIRECTION.left) { - const els = this.getElements(direction); - el = els.slice(0, els.indexOf(this.selected)).pop() || this.selected; - } else if (direction == dom_navigator_DOMNavigator.DIRECTION.down) { - const left = this.selected.offsetLeft; - const top = this.selected.offsetTop + this.selected.offsetHeight; - const els = this.elementsAfter(0, top); +function getDirective(text, i, opening = true) { + let d; - const getDistance = el => Math.abs(el.offsetLeft - left) + Math.abs(el.offsetTop - top); + if (/(^```\s*\n|^```\s*$)/.test(text.slice(i)) && (i === 0 || text[i - 1] === '\n' || text[i - 1] === '>')) { + d = text.slice(i, i + 3); + } else if (styling_directives.includes(text.slice(i, i + 1))) { + d = text.slice(i, i + 1); + if (!isValidDirective(d, text, i, opening)) return null; + } else { + return null; + } - el = dom_navigator_DOMNavigator.getClosestElement(els, getDistance); - } else if (direction == dom_navigator_DOMNavigator.DIRECTION.up) { - const left = this.selected.offsetLeft; - const top = this.selected.offsetTop - 1; - const els = this.elementsBefore(Infinity, top); + return d; +} +/** + * Given an opening directive "d", an index "i" and the text, check whether + * we've found the closing directive. + * @param { String } d -The directive + * @param { Number } i - The directive index + * @param { String } text -The text in which the directive appears + */ - const getDistance = el => Math.abs(left - el.offsetLeft) + Math.abs(top - el.offsetTop); - el = dom_navigator_DOMNavigator.getClosestElement(els, getDistance); - } else { - throw new Error("getNextElement: invalid direction value"); - } - } else { - if (direction === dom_navigator_DOMNavigator.DIRECTION.right || direction === dom_navigator_DOMNavigator.DIRECTION.down) { - // If nothing is selected, we pretend that the first element is - // selected, so we return the next. - el = this.getElements(direction)[1]; - } else { - el = this.getElements(direction)[0]; - } - } +function isDirectiveEnd(d, i, text) { + const dtype = styling_map[d].type; // directive type - if (this.options.jump_to_picked && el && el.matches(this.options.jump_to_picked) && direction === this.options.jump_to_picked_direction) { - el = this.container.querySelector(this.options.jump_to_picked_selector) || el; - } + return i === text.length || getDirective(text, i, false) === d || dtype === 'span' && text[i] === '\n'; +} +/** + * Given a directive "d", which occurs in "text" at index "i", check that it + * has a valid closing directive and return the length from start to end of the + * directive. + * @param { String } d -The directive + * @param { Number } i - The directive index + * @param { String } text -The text in which the directive appears + */ - return el; + +function getDirectiveLength(d, text, i) { + if (!d) { + return 0; } - /** - * Select the given element. - * @param { Element } el The DOM element to select. - * @param { string } [direction] The direction. - */ + const begin = i; + i += d.length; - select(el, direction) { - if (!el || el === this.selected) { - return; + if (isQuoteDirective(d)) { + i += text.slice(i).split(/\n[^>]/).shift().length; + return i - begin; + } else if (styling_map[d].type === 'span') { + const line = text.slice(i + 1).split('\n').shift(); + let j = 0; + let idx = line.indexOf(d); + + while (idx !== -1) { + if (isDirectiveEnd(d, i + 1 + idx, text)) return idx + 1 + 2 * d.length; + idx = line.indexOf(d, j++); } - this.unselect(); - direction && this.scrollTo(el, direction); + return 0; + } else { + const substring = text.slice(i + 1); + let j; + let idx = substring.indexOf(d); - if (el.matches('input')) { - el.focus(); - } else { - utils_html.addClass(this.options.selected, el); + while (idx !== -1) { + if (isDirectiveEnd(d, i + 1 + idx, text)) return idx + 1 + 2 * d.length; + idx = substring.indexOf(d, j++); } - this.selected = el; - this.options.onSelected && this.options.onSelected(el); + return 0; } - /** - * Remove the current selection - */ +} +function getDirectiveAndLength(text, i) { + const d = getDirective(text, i); + const length = d ? getDirectiveLength(d, text, i) : 0; + return length > 0 ? { + d, + length + } : {}; +} +const isQuoteDirective = d => ['>', '>'].includes(d); +function getDirectiveTemplate(d, text, model, offset) { + const template = styling_templates[styling_map[d].name]; - unselect() { - if (this.selected) { - utils_html.removeClass(this.options.selected, this.selected); - delete this.selected; + if (isQuoteDirective(d)) { + const newtext = text.replace(/\n>/g, '\n') // Don't show the directive itself + .replace(/\n$/, ''); // Trim line-break at the end + + return template(newtext, model, offset); + } else { + return template(text, model, offset); + } +} +function containsDirectives(text) { + for (let i = 0; i < styling_directives.length; i++) { + if (text.includes(styling_directives[i])) { + return true; } } - /** - * Scroll the container to an element. - * @param { HTMLElement } el The destination element. - * @param { String } direction The direction of the current navigation. - * @return void. - */ - - - scrollTo(el, direction) { - if (!this.inScrollContainerViewport(el)) { - const container = this.scroll_container; +} +// CONCATENATED MODULE: ./src/shared/message/text.js +function text_templateObject2() { + const data = text_taggedTemplateLiteral(["<span class=\"mention\">", "</span>"]); - if (!container.contains(el)) { - return; - } + text_templateObject2 = function () { + return data; + }; - switch (direction) { - case dom_navigator_DOMNavigator.DIRECTION.left: - container.scrollLeft = el.offsetLeft - container.offsetLeft; - container.scrollTop = el.offsetTop - container.offsetTop; - break; + return data; +} - case dom_navigator_DOMNavigator.DIRECTION.up: - container.scrollTop = el.offsetTop - container.offsetTop; - break; +function text_templateObject() { + const data = text_taggedTemplateLiteral(["<span class=\"mention mention--self badge badge-info\">", "</span>"]); - case dom_navigator_DOMNavigator.DIRECTION.right: - container.scrollLeft = el.offsetLeft - container.offsetLeft - (container.offsetWidth - el.offsetWidth); - container.scrollTop = el.offsetTop - container.offsetTop - (container.offsetHeight - el.offsetHeight); - break; + text_templateObject = function () { + return data; + }; - case dom_navigator_DOMNavigator.DIRECTION.down: - container.scrollTop = el.offsetTop - container.offsetTop - (container.offsetHeight - el.offsetHeight); - break; - } - } else if (!inViewport(el)) { - switch (direction) { - case dom_navigator_DOMNavigator.DIRECTION.left: - document.body.scrollLeft = absoluteOffsetLeft(el) - document.body.offsetLeft; - break; + return data; +} - case dom_navigator_DOMNavigator.DIRECTION.up: - document.body.scrollTop = absoluteOffsetTop(el) - document.body.offsetTop; - break; +function text_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - case dom_navigator_DOMNavigator.DIRECTION.right: - document.body.scrollLeft = absoluteOffsetLeft(el) - document.body.offsetLeft - (document.documentElement.clientWidth - el.offsetWidth); - break; - case dom_navigator_DOMNavigator.DIRECTION.down: - document.body.scrollTop = absoluteOffsetTop(el) - document.body.offsetTop - (document.documentElement.clientHeight - el.offsetHeight); - break; - } - } - } - /** - * Indicate if an element is in the container viewport. - * @param { HTMLElement } el The element to check. - * @return { Boolean } true if the given element is in the container viewport, otherwise false. - */ - inScrollContainerViewport(el) { - const container = this.scroll_container; // Check on left side. - if (el.offsetLeft - container.scrollLeft < container.offsetLeft) { - return false; - } // Check on top side. - if (el.offsetTop - container.scrollTop < container.offsetTop) { - return false; - } // Check on right side. +const text_u = converse.env.utils; +const text_isString = s => typeof s === 'string'; - if (el.offsetLeft + el.offsetWidth - container.scrollLeft > container.offsetLeft + container.offsetWidth) { - return false; - } // Check on down side. +const tpl_mention_with_nick = o => lit_html_html(text_templateObject(), o.mention); +const tpl_mention = o => lit_html_html(text_templateObject2(), o.mention); +/** + * @class MessageText + * A String subclass that is used to represent the rich text + * of a chat message. + * + * The "rich" parts of the text is represented by lit-html TemplateResult + * objects which are added via the {@link MessageText.addTemplateResult} + * method and saved as metadata. + * + * By default Converse adds TemplateResults to support emojis, hyperlinks, + * images, map URIs and mentions. + * + * 3rd party plugins can listen for the `beforeMessageBodyTransformed` + * and/or `afterMessageBodyTransformed` events and then call + * `addTemplateResult` on the MessageText instance in order to add their own + * rich features. + */ - if (el.offsetTop + el.offsetHeight - container.scrollTop > container.offsetTop + container.offsetHeight) { - return false; - } - return true; +class text_MessageText extends String { + /** + * Create a new {@link MessageText} instance. + * @param { String } text - The text to be annotated + * @param { Message } model - The model representing the message to which + * this MessageText instance belongs + * @param { Integer } offset - The offset of this particular piece of text + * from the start of the original message text. This is necessary because + * MessageText instances can be nested when templates call directives + * which create new MessageText instances (as happens with XEP-393 styling directives). + * @param { Boolean } show_images - Whether image URLs should be rendered as <img> tags. + * @param { Function } onImgLoad - Callback for when an inline rendered image has been loaded + * @param { Function } onImgClick - Callback for when an inline rendered image has been clicked + */ + constructor(text, model, offset = 0, show_images, onImgLoad, onImgClick) { + super(text); + this.model = model; + this.offset = offset; + this.onImgClick = onImgClick; + this.onImgLoad = onImgLoad; + this.references = []; + this.show_images = show_images; + this.payload = []; } /** - * Find and store the navigable elements + * Look for `http` URIs and return templates that render them as URL links + * @param { String } text + * @param { Integer } offset - The index of the passed in text relative to + * the start of the message body text. */ - getElements(direction) { - const selector = this.options.getSelector ? this.options.getSelector(direction) : this.options.selector; + addHyperlinks(text, offset) { + const objs = []; - if (!this.elements[selector]) { - this.elements[selector] = Array.from(this.container.querySelectorAll(selector)); + try { + const parse_options = { + 'start': /\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi + }; + URI_default.a.withinString(text, (url, start, end) => { + objs.push({ + url, + start, + end + }); + return url; + }, parse_options); + } catch (error) { + headless_log.debug(error); + return; } - return this.elements[selector]; + objs.forEach(url_obj => { + const url_text = text.slice(url_obj.start, url_obj.end); + const filtered_url = text_u.filterQueryParamsFromURL(url_text); + this.addTemplateResult(url_obj.start + offset, url_obj.end + offset, this.show_images && text_u.isImageURL(url_text) && text_u.isImageDomainAllowed(url_text) ? text_u.convertToImageTag(filtered_url, this.onImgLoad, this.onImgClick) : text_u.convertUrlToHyperlink(filtered_url)); + }); } /** - * Return an array of navigable elements after an offset. - * @param { number } left The left offset. - * @param { number } top The top offset. - * @return { Array } An array of elements. + * Look for `geo` URIs and return templates that render them as URL links + * @param { String } text + * @param { Integer } offset - The index of the passed in text relative to + * the start of the message body text. */ - elementsAfter(left, top) { - return this.getElements(dom_navigator_DOMNavigator.DIRECTION.down).filter(el => el.offsetLeft >= left && el.offsetTop >= top); + addMapURLs(text, offset) { + const regex = /geo:([\-0-9.]+),([\-0-9.]+)(?:,([\-0-9.]+))?(?:\?(.*))?/g; + const matches = text.matchAll(regex); + + for (const m of matches) { + this.addTemplateResult(m.index + offset, m.index + m[0].length + offset, text_u.convertUrlToHyperlink(m[0].replace(regex, core_converse.geouri_replacement))); + } } /** - * Return an array of navigable elements before an offset. - * @param { number } left The left offset. - * @param { number } top The top offset. - * @return { Array } An array of elements. + * Look for emojis (shortnames or unicode) and add templates for rendering them. + * @param { String } text + * @param { Integer } offset - The index of the passed in text relative to + * the start of the message body text. */ - elementsBefore(left, top) { - return this.getElements(dom_navigator_DOMNavigator.DIRECTION.up).filter(el => el.offsetLeft <= left && el.offsetTop <= top); + addEmojis(text, offset) { + const references = [...getShortnameReferences(text.toString()), ...getCodePointReferences(text.toString())]; + references.forEach(e => { + this.addTemplateResult(e.begin + offset, e.end + offset, getEmojiMarkup(e, { + 'add_title_wrapper': true + })); + }); } /** - * Handle the key down event. - * @param { Event } event The event object. + * Look for mentions included as XEP-0372 references and add templates for + * rendering them. + * @param { String } text + * @param { Integer } local_offset - The index of the passed in text relative to + * the start of this MessageText instance (which is not necessarily the same as the + * offset from the start of the original message stanza's body text). */ - handleKeydown(ev) { - const keys = keycodes; - const direction = ev.shiftKey ? this.keys["".concat(keys.SHIFT, "+").concat(ev.which)] : this.keys[ev.which]; + addMentions(text, local_offset) { + var _this$model$get; - if (direction) { - ev.preventDefault(); - ev.stopPropagation(); - const next = this.getNextElement(direction, ev); - this.select(next, direction); + const full_offset = local_offset + this.offset; + + if (!this.model.collection) { + // This model doesn't belong to a collection anymore, so it must be + // have been removed in the meantime and can be ignored. + headless_log.debug('addMentions: ignoring dangling model'); + return; } - } -} + const nick = this.model.collection.chatbox.get('nick'); + (_this$model$get = this.model.get('references')) === null || _this$model$get === void 0 ? void 0 : _this$model$get.forEach(ref => { + const begin = Number(ref.begin) - full_offset; -/* harmony default export */ var dom_navigator = (dom_navigator_DOMNavigator); -// CONCATENATED MODULE: ./src/components/dropdown.js -function dropdown_templateObject() { - const data = dropdown_taggedTemplateLiteral(["\n <div class=\"dropleft\">\n <button type=\"button\" class=\"btn btn--transparent btn--standalone\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\n <i class=\"", " only-icon\"></i>\n </button>\n <div class=\"dropdown-menu\">\n ", "\n </div>\n </div>\n "]); + if (begin < 0 || begin >= full_offset + text.length) { + return; + } - dropdown_templateObject = function _templateObject() { - return data; - }; + const end = Number(ref.end) - full_offset; + const mention = text.slice(begin, end); - return data; -} + if (mention === nick) { + this.addTemplateResult(begin + local_offset, end + local_offset, tpl_mention_with_nick({ + mention + })); + } else { + this.addTemplateResult(begin + local_offset, end + local_offset, tpl_mention({ + mention + })); + } + }); + } + /** + * Look for XEP-0393 styling directives and add templates for rendering + * them. + */ -function dropdown_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + addStyling() { + if (this.model.get('is_unstyled') || !core_api.settings.get('allow_message_styling')) { + return; + } + let i = 0; + const references = []; + if (containsDirectives(this)) { + while (i < this.length) { + const { + d, + length + } = getDirectiveAndLength(this, i); + + if (d && length) { + const is_quote = isQuoteDirective(d); + const end = i + length; + const slice_end = is_quote ? end : end - d.length; + let slice_begin = d === '```' ? i + d.length + 1 : i + d.length; + + if (is_quote && this[slice_begin] === ' ') { + // Trim leading space inside codeblock + slice_begin += 1; + } + const offset = slice_begin; + const text = this.slice(slice_begin, slice_end); + references.push({ + 'begin': i, + 'template': getDirectiveTemplate(d, text, this.model, offset), + end + }); + i = end; + } + i++; + } + } -const dropdown_u = converse.env.utils; -class dropdown_BaseDropdown extends element_CustomElement { - firstUpdated() { - this.menu = this.querySelector('.dropdown-menu'); - this.dropdown = this.firstElementChild; - this.button = this.dropdown.querySelector('button'); - this.dropdown.addEventListener('click', ev => this.toggleMenu(ev)); - this.dropdown.addEventListener('keyup', ev => this.handleKeyUp(ev)); - document.addEventListener('click', ev => !this.contains(ev.composedPath()[0]) && this.hideMenu(ev)); + references.forEach(ref => this.addTemplateResult(ref.begin, ref.end, ref.template)); } - hideMenu() { - var _this$button, _this$button2; - - dropdown_u.removeClass('show', this.menu); - (_this$button = this.button) === null || _this$button === void 0 ? void 0 : _this$button.setAttribute('aria-expanded', false); - (_this$button2 = this.button) === null || _this$button2 === void 0 ? void 0 : _this$button2.blur(); + trimMeMessage() { + if (this.offset === 0) { + // Subtract `/me ` from 3rd person messages + if (this.isMeCommand()) { + this.payload[0] = this.payload[0].substring(4); + } + } } + /** + * Look for plaintext (i.e. non-templated) sections of this MessageText + * instance and add references via the passed in function. + * @param { Function } func + */ - showMenu() { - dropdown_u.addClass('show', this.menu); - this.button.setAttribute('aria-expanded', true); - } - toggleMenu(ev) { - ev.preventDefault(); + addAnnotations(func) { + const payload = this.marshall(); + let idx = 0; // The text index of the element in the payload - if (dropdown_u.hasClass('show', this.menu)) { - this.hideMenu(); - } else { - this.showMenu(); + for (const text of payload) { + if (!text) { + continue; + } else if (text_isString(text)) { + func.call(this, text, idx); + idx += text.length; + } else { + idx = text.end; + } } } + /** + * Parse the text and add template references for rendering the "rich" parts. + * + * @param { MessageText } text + * @param { Boolean } show_images - Should URLs of images be rendered as `<img>` tags? + * @param { Function } onImgLoad + * @param { Function } onImgClick + **/ - handleKeyUp(ev) { - if (ev.keyCode === converse.keycodes.ESCAPE) { - this.hideMenu(); - } else if (ev.keyCode === converse.keycodes.DOWN_ARROW && this.navigator && !this.navigator.enabled) { - this.enableArrowNavigation(ev); - } - } -} -class dropdown_DropdownList extends dropdown_BaseDropdown { - static get properties() { - return { - 'icon_classes': { - type: String - }, - 'items': { - type: Array - } - }; - } + async addTemplates() { + /** + * Synchronous event which provides a hook for transforming a chat message's body text + * before the default transformations have been applied. + * @event _converse#beforeMessageBodyTransformed + * @param { MessageText } text - A {@link MessageText } instance. You + * can call {@link MessageText#addTemplateResult } on it in order to + * add TemplateResult objects meant to render rich parts of the message. + * @example _converse.api.listen.on('beforeMessageBodyTransformed', (view, text) => { ... }); + */ + await core_api.trigger('beforeMessageBodyTransformed', this, { + 'Synchronous': true + }); + this.addStyling(); + this.addAnnotations(this.addMentions); + this.addAnnotations(this.addHyperlinks); + this.addAnnotations(this.addMapURLs); + await core_api.emojis.initialize(); + this.addAnnotations(this.addEmojis); + /** + * Synchronous event which provides a hook for transforming a chat message's body text + * after the default transformations have been applied. + * @event _converse#afterMessageBodyTransformed + * @param { MessageText } text - A {@link MessageText } instance. You + * can call {@link MessageText#addTemplateResult} on it in order to + * add TemplateResult objects meant to render rich parts of the message. + * @example _converse.api.listen.on('afterMessageBodyTransformed', (view, text) => { ... }); + */ - render() { - const icon_classes = this.icon_classes || "fa fa-bars"; - return lit_html_html(dropdown_templateObject(), icon_classes, this.items.map(b => until(b, ''))); + await core_api.trigger('afterMessageBodyTransformed', this, { + 'Synchronous': true + }); + this.payload = this.marshall(); + this.trimMeMessage(); + this.payload = this.payload.map(item => text_isString(item) ? item : item.template); } + /** + * The "rich" markup parts of a chat message are represented by lit-html + * TemplateResult objects. + * + * This method can be used to add new template results to this message's + * text. + * + * @method MessageText.addTemplateResult + * @param { Number } begin - The starting index of the plain message text + * which is being replaced with markup. + * @param { Number } end - The ending index of the plain message text + * which is being replaced with markup. + * @param { Object } template - The lit-html TemplateResult instance + */ - hideMenu() { - super.hideMenu(); - this.navigator.disable(); - } - firstUpdated() { - super.firstUpdated(); - this.initArrowNavigation(); + addTemplateResult(begin, end, template) { + this.references.push({ + begin, + end, + template + }); } - initArrowNavigation() { - if (!this.navigator) { - const options = { - 'selector': '.dropdown-item', - 'onSelected': el => el.focus() - }; - this.navigator = new dom_navigator(this.menu, options); - } - } + isMeCommand() { + const text = this.toString(); - enableArrowNavigation(ev) { - if (ev) { - ev.preventDefault(); - ev.stopPropagation(); + if (!text) { + return false; } - this.navigator.enable(); - this.navigator.select(this.menu.firstElementChild); + return text.startsWith('/me '); } - handleKeyUp(ev) { - super.handleKeyUp(ev); + static replaceText(text) { + return convertASCII2Emoji(text.replace(/\n\n+/g, '\n\n')); + } + /** + * Take the annotations and return an array of text and TemplateResult + * instances to be rendered to the DOM. + * @method MessageText#marshall + */ - if (ev.keyCode === converse.keycodes.DOWN_ARROW && !this.navigator.enabled) { - this.enableArrowNavigation(ev); - } + + marshall() { + let list = [this.toString()]; + this.references.sort((a, b) => b.begin - a.begin).forEach(ref => { + const text = list.shift(); + list = [text.slice(0, ref.begin), ref, text.slice(ref.end), ...list]; + }); + return list.reduce((acc, i) => text_isString(i) ? [...acc, text_MessageText.replaceText(i)] : [...acc, i], []); } } -converse_core_api.elements.define('converse-dropdown', dropdown_DropdownList); -// CONCATENATED MODULE: ./src/components/message-actions.js -function message_actions_templateObject3() { - const data = message_actions_taggedTemplateLiteral(["<converse-dropdown class=\"chat-msg__actions\" .items=", "></converse-dropdown>"]); +// CONCATENATED MODULE: ./src/templates/directives/body.js +function body_templateObject2() { + const data = body_taggedTemplateLiteral(["", ""]); - message_actions_templateObject3 = function _templateObject3() { + body_templateObject2 = function () { return data; }; return data; } -function message_actions_templateObject2() { - const data = message_actions_taggedTemplateLiteral(["\n <button class=\"chat-msg__action ", "\" @click=", ">\n <converse-icon class=\"", "\"\n path-prefix=\"", "\"\n color=\"var(--text-color-lighten-15-percent)\"\n size=\"1em\"></converse-icon>\n ", "\n </button>\n "]); +function body_templateObject() { + const data = body_taggedTemplateLiteral(["", ""]); - message_actions_templateObject2 = function _templateObject2() { + body_templateObject = function () { return data; }; return data; } -function message_actions_templateObject() { - const data = message_actions_taggedTemplateLiteral(["", ""]); +function body_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + - message_actions_templateObject = function _templateObject() { - return data; - }; - return data; -} -function message_actions_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +const body_u = converse.env.utils; + +class body_MessageBodyRenderer { + constructor(component) { + var _u$ancestor; + this.model = component.model; + this.component = component; + this.chatview = (_u$ancestor = body_u.ancestor(this.component, 'converse-chat-message')) === null || _u$ancestor === void 0 ? void 0 : _u$ancestor.chatview; // We jot down whether we were scrolled down before rendering, because when an + // image loads, it triggers 'scroll' and the chat will be marked as scrolled, + // which is technically true, but not what we want because the user + // didn't initiate the scrolling. + this.was_scrolled_up = this.chatview.model.get('scrolled'); + this.text = this.component.model.getMessageText(); + } + scrollDownOnImageLoad() { + if (!this.was_scrolled_up) { + this.chatview.scrollDown(); + } + } + async transform() { + const show_images = core_api.settings.get('show_images_inline'); + const offset = 0; + const text = new text_MessageText(this.text, this.model, offset, show_images, () => this.scrollDownOnImageLoad(), ev => this.component.showImageModal(ev)); + await text.addTemplates(); + return text.payload; + } + render() { + return lit_html_html(body_templateObject(), until(this.transform(), lit_html_html(body_templateObject2(), this.text))); + } -class message_actions_MessageActions extends element_CustomElement { +} + +const renderBodyText = directive_directive(component => part => { + var _model$collection; + + const renderer = new body_MessageBodyRenderer(component); + part.setValue(renderer.render()); + const model = component.model; + (_model$collection = model.collection) === null || _model$collection === void 0 ? void 0 : _model$collection.trigger('rendered', model); +}); +// CONCATENATED MODULE: ./src/components/message-body.js + + + + + +class message_body_MessageBody extends element_CustomElement { static get properties() { return { - chatview: { - type: Object - }, model: { type: Object }, - editable: { - type: Boolean - }, - correcting: { + is_me_message: { type: Boolean }, - message_type: { + text: { type: String - }, - is_retracted: { - type: Boolean } }; } - render() { - return lit_html_html(message_actions_templateObject(), until(this.renderActions(), '')); - } - - static getActionsDropdownItem(o) { - return lit_html_html(message_actions_templateObject2(), o.button_class, o.handler, o.icon_class, converse_core_api.settings.get("assets_path"), o.i18n_text); - } - - onMessageEditButtonClicked(ev) { - ev.preventDefault(); - this.chatview.onMessageEditButtonClicked(this.model); - } - - onMessageRetractButtonClicked(ev) { + showImageModal(ev) { + // eslint-disable-line class-methods-use-this ev.preventDefault(); - this.chatview.onMessageRetractButtonClicked(this.model); + core_api.modal.create(modals_image, { + 'src': ev.target.src + }, ev).show(ev); } - async renderActions() { - const buttons = []; - - if (this.editable) { - buttons.push({ - 'i18n_text': this.correcting ? i18n_('Cancel Editing') : i18n_('Edit'), - 'handler': ev => this.onMessageEditButtonClicked(ev), - 'button_class': 'chat-msg__action-edit', - 'icon_class': 'fa fa-pencil-alt', - 'name': 'edit' - }); - } - - const may_be_moderated = this.model.get('type') === 'groupchat' && (await this.model.mayBeModerated()); - const retractable = !this.is_retracted && (this.model.mayBeRetracted() || may_be_moderated); - - if (retractable) { - buttons.push({ - 'i18n_text': i18n_('Retract'), - 'handler': ev => this.onMessageRetractButtonClicked(ev), - 'button_class': 'chat-msg__action-retract', - 'icon_class': 'fas fa-trash-alt', - 'name': 'retract' - }); - } - - const items = buttons.map(b => message_actions_MessageActions.getActionsDropdownItem(b)); - - if (items.length) { - return lit_html_html(message_actions_templateObject3(), items); - } else { - return ''; - } + render() { + return renderBodyText(this); } } +core_api.elements.define('converse-chat-message-body', message_body_MessageBody); +// CONCATENATED MODULE: ./src/modals/templates/message-versions.js +function message_versions_templateObject2() { + const data = message_versions_taggedTemplateLiteral(["<p class=\"older-msg\"><time>", "</time>: ", "</p>"]); -converse_core_api.elements.define('converse-message-actions', message_actions_MessageActions); -// CONCATENATED MODULE: ./src/templates/message_versions_modal.js -function message_versions_modal_templateObject2() { - const data = message_versions_modal_taggedTemplateLiteral(["<p class=\"older-msg\"><time>", "</time>: ", "</p>"]); - - message_versions_modal_templateObject2 = function _templateObject2() { + message_versions_templateObject2 = function () { return data; }; return data; } -function message_versions_modal_templateObject() { - const data = message_versions_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"message-versions-modal-label\">", "</h4>\n ", "\n </div>\n <div class=\"modal-body\">\n <h4>Older versions</h4>\n ", "\n <hr/>\n <h4>Current version</h4>\n <p>", "</p>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n"]); +function message_versions_templateObject() { + const data = message_versions_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"message-versions-modal-label\">", "</h4>\n ", "\n </div>\n <div class=\"modal-body\">\n <h4>Older versions</h4>\n ", "\n <hr/>\n <h4>Current version</h4>\n <p>", "</p>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n"]); - message_versions_modal_templateObject = function _templateObject() { + message_versions_templateObject = function () { return data; }; return data; } -function message_versions_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function message_versions_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var message_versions_modal = (o => lit_html_html(message_versions_modal_templateObject(), i18n_('Message versions'), modal_header_close_button, Object.keys(o.older_versions).map(k => lit_html_html(message_versions_modal_templateObject2(), dayjs_min_default()(k).format('MMM D, YYYY, HH:mm:ss'), o.older_versions[k])), o.message, modal_close_button)); +/* harmony default export */ var message_versions = (o => lit_html_html(message_versions_templateObject(), i18n_('Message versions'), modal_header_close_button, Object.keys(o.older_versions).map(k => lit_html_html(message_versions_templateObject2(), dayjs_min_default()(k).format('MMM D, YYYY, HH:mm:ss'), o.older_versions[k])), o.message, modal_close_button)); // CONCATENATED MODULE: ./src/modals/message-versions.js -/* harmony default export */ var message_versions = (BootstrapModal.extend({ - // FIXME: this isn't globally unique +/* harmony default export */ var modals_message_versions = (modals_base.extend({ id: "message-versions-modal", toHTML() { - return message_versions_modal(this.model.toJSON()); + return message_versions(this.model.toJSON()); } })); // EXTERNAL MODULE: ./node_modules/filesize/lib/filesize.min.js -var lib_filesize_min = __webpack_require__(135); +var lib_filesize_min = __webpack_require__(176); var lib_filesize_min_default = /*#__PURE__*/__webpack_require__.n(lib_filesize_min); // CONCATENATED MODULE: ./src/templates/avatar.js function avatar_templateObject() { const data = avatar_taggedTemplateLiteral(["\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"avatar ", "\" width=\"", "\" height=\"", "\">\n <image width=\"", "\" height=\"", "\" preserveAspectRatio=\"xMidYMid meet\" href=\"", "\"/>\n </svg>"]); - avatar_templateObject = function _templateObject() { + avatar_templateObject = function () { return data; }; @@ -88118,7 +92340,7 @@ const getImgHref = (image, image_type) => { return image.startsWith('data:') ? image : "data:".concat(image_type, ";base64,").concat(image); }; -/* harmony default export */ var avatar = (o => lit_html_html(avatar_templateObject(), o.classes, o.width, o.height, o.width, o.height, getImgHref(o.image, o.image_type))); +/* harmony default export */ var templates_avatar = (o => lit_html_html(avatar_templateObject(), o.classes, o.width, o.height, o.width, o.height, getImgHref(o.image, o.image_type))); // CONCATENATED MODULE: ./src/templates/directives/avatar.js @@ -88130,13 +92352,13 @@ const renderAvatar = directive_directive(o => part => { 'image_type': o.image_type, 'width': o.height || 36 }; - part.setValue(avatar(data)); + part.setValue(templates_avatar(data)); }); // CONCATENATED MODULE: ./src/templates/chat_message.js -function _templateObject5() { +function chat_message_templateObject5() { const data = chat_message_taggedTemplateLiteral(["\n <time timestamp=\"", "\" class=\"chat-msg__time\">", "</time> \n <span class=\"chat-msg__author\">", "", "</span> "]); - _templateObject5 = function _templateObject5() { + chat_message_templateObject5 = function () { return data; }; @@ -88146,7 +92368,7 @@ function _templateObject5() { function chat_message_templateObject4() { const data = chat_message_taggedTemplateLiteral(["<span class=\"fa fa-lock\"></span>"]); - chat_message_templateObject4 = function _templateObject4() { + chat_message_templateObject4 = function () { return data; }; @@ -88154,9 +92376,9 @@ function chat_message_templateObject4() { } function chat_message_templateObject3() { - const data = chat_message_taggedTemplateLiteral(["\n <span class=\"chat-msg__heading\">\n <span class=\"chat-msg__author\">", "</span>\n ", "\n ", "\n </span>"]); + const data = chat_message_taggedTemplateLiteral(["\n <span class=\"chat-msg__heading\">\n <span class=\"chat-msg__author\"><a class=\"show-msg-author-modal\" @click=", ">", "</a></span>\n ", "\n ", "\n </span>"]); - chat_message_templateObject3 = function _templateObject3() { + chat_message_templateObject3 = function () { return data; }; @@ -88166,7 +92388,7 @@ function chat_message_templateObject3() { function chat_message_templateObject2() { const data = chat_message_taggedTemplateLiteral(["<div class=\"message separator\"><hr class=\"separator\"><span class=\"separator-text\">", "</span></div>"]); - chat_message_templateObject2 = function _templateObject2() { + chat_message_templateObject2 = function () { return data; }; @@ -88174,9 +92396,9 @@ function chat_message_templateObject2() { } function chat_message_templateObject() { - const data = chat_message_taggedTemplateLiteral(["\n ", "\n <div class=\"message chat-msg ", "\"\n data-isodate=\"", "\"\n data-msgid=\"", "\"\n data-from=\"", "\"\n data-encrypted=\"", "\">\n\n ", "\n <div class=\"chat-msg__content chat-msg__content--", " ", "\">\n\n ", "\n <div class=\"chat-msg__body chat-msg__body--", " ", " ", "\">\n <div class=\"chat-msg__message\">\n ", "\n ", "\n </div>\n <converse-message-actions\n .chatview=", "\n .model=", "\n ?correcting=\"", "\"\n ?editable=\"", "\"\n ?is_retracted=\"", "\"\n message_type=\"", "\"></converse-message-actions>\n </div>\n </div>\n </div>"]); + const data = chat_message_taggedTemplateLiteral(["\n ", "\n <div class=\"message chat-msg ", "\"\n data-isodate=\"", "\"\n data-msgid=\"", "\"\n data-from=\"", "\"\n data-encrypted=\"", "\">\n\n <!-- Anchor to allow us to scroll the message into view -->\n <a id=\"", "\"></a>\n\n <a class=\"show-msg-author-modal\" @click=", ">", "</a>\n <div class=\"chat-msg__content chat-msg__content--", " ", "\">\n\n ", "\n <div class=\"chat-msg__body chat-msg__body--", " ", " ", "\">\n <div class=\"chat-msg__message\">\n ", "\n ", "\n </div>\n <converse-message-actions\n .chatview=", "\n .model=", "\n ?correcting=\"", "\"\n ?editable=\"", "\"\n ?is_retracted=\"", "\"\n message_type=\"", "\"></converse-message-actions>\n </div>\n </div>\n </div>"]); - chat_message_templateObject = function _templateObject() { + chat_message_templateObject = function () { return data; }; @@ -88188,16 +92410,16 @@ function chat_message_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = st -/* harmony default export */ var chat_message = (o => { +/* harmony default export */ var templates_chat_message = (o => { const i18n_new_messages = i18n_('New messages'); - return lit_html_html(chat_message_templateObject(), o.is_first_unread ? lit_html_html(chat_message_templateObject2(), i18n_new_messages) : '', o.getExtraMessageClasses(), o.time, o.msgid, o.from, o.is_encrypted, o.shouldShowAvatar() ? renderAvatar(o.getAvatarData()) : '', o.sender, o.is_me_message ? 'chat-msg__content--action' : '', !o.is_me_message ? lit_html_html(chat_message_templateObject3(), o.username, o.renderAvatarByline(), o.is_encrypted ? lit_html_html(chat_message_templateObject4()) : '') : '', o.message_type, o.received ? 'chat-msg__body--received' : '', o.is_delayed ? 'chat-msg__body--delayed' : '', o.is_me_message ? lit_html_html(_templateObject5(), o.time, o.pretty_time, o.is_me_message ? '**' : '', o.username) : '', o.is_retracted ? o.renderRetraction() : o.renderMessageText(), o.chatview, o.model, o.correcting, o.editable, o.is_retracted, o.message_type); + return lit_html_html(chat_message_templateObject(), o.is_first_unread ? lit_html_html(chat_message_templateObject2(), i18n_new_messages) : '', o.getExtraMessageClasses(), o.time, o.msgid, o.from, o.is_encrypted, o.msgid, o.showUserModal, o.shouldShowAvatar() ? renderAvatar(o.getAvatarData()) : '', o.sender, o.is_me_message ? 'chat-msg__content--action' : '', !o.is_me_message ? lit_html_html(chat_message_templateObject3(), o.showUserModal, o.username, o.renderAvatarByline(), o.is_encrypted ? lit_html_html(chat_message_templateObject4()) : '') : '', o.message_type, o.received ? 'chat-msg__body--received' : '', o.is_delayed ? 'chat-msg__body--delayed' : '', o.is_me_message ? lit_html_html(chat_message_templateObject5(), o.edited || o.time, o.pretty_time, o.is_me_message ? '**' : '', o.username) : '', o.is_retracted ? o.renderRetraction() : o.renderMessageText(), o.chatview, o.model, o.correcting, o.editable, o.is_retracted, o.message_type); }); // CONCATENATED MODULE: ./src/templates/spinner.js function spinner_templateObject() { const data = spinner_taggedTemplateLiteral(["<span class=\"spinner fa fa-spinner centered ", "\"/>"]); - spinner_templateObject = function _templateObject() { + spinner_templateObject = function () { return data; }; @@ -88212,7 +92434,7 @@ function spinner_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings function _templateObject15() { const data = message_taggedTemplateLiteral(["<span class=\"badge badge-secondary\">", "</span>"]); - _templateObject15 = function _templateObject15() { + _templateObject15 = function () { return data; }; @@ -88222,7 +92444,7 @@ function _templateObject15() { function _templateObject14() { const data = message_taggedTemplateLiteral(["\n ", "\n <time timestamp=\"", "\" class=\"chat-msg__time\">", "</time>\n "]); - _templateObject14 = function _templateObject14() { + _templateObject14 = function () { return data; }; @@ -88232,7 +92454,7 @@ function _templateObject14() { function _templateObject13() { const data = message_taggedTemplateLiteral(["<div class=\"chat-msg__media\">", "</div>"]); - _templateObject13 = function _templateObject13() { + _templateObject13 = function () { return data; }; @@ -88242,7 +92464,7 @@ function _templateObject13() { function _templateObject12() { const data = message_taggedTemplateLiteral(["<i title=\"", "\" class=\"fa fa-edit chat-msg__edit-modal\" @click=", "></i>"]); - _templateObject12 = function _templateObject12() { + _templateObject12 = function () { return data; }; @@ -88252,7 +92474,7 @@ function _templateObject12() { function _templateObject11() { const data = message_taggedTemplateLiteral(["<span class=\"fa fa-check chat-msg__receipt\"></span>"]); - _templateObject11 = function _templateObject11() { + _templateObject11 = function () { return data; }; @@ -88262,7 +92484,7 @@ function _templateObject11() { function _templateObject10() { const data = message_taggedTemplateLiteral(["<div class=\"chat-msg__subject\">", "</div>"]); - _templateObject10 = function _templateObject10() { + _templateObject10 = function () { return data; }; @@ -88272,7 +92494,7 @@ function _templateObject10() { function _templateObject9() { const data = message_taggedTemplateLiteral(["\n ", "\n ", "\n <span>\n <converse-chat-message-body\n class=\"chat-msg__text ", " ", "\"\n .model=\"", "\"\n ?is_me_message=\"", "\"\n ?is_only_emojis=\"", "\"\n ?is_spoiler=\"", "\"\n ?is_spoiler_visible=\"", "\"\n text=\"", "\"></converse-chat-message-body>\n ", "\n ", "\n </span>\n ", "\n <div class=\"chat-msg__error\">", "</div>\n "]); - _templateObject9 = function _templateObject9() { + _templateObject9 = function () { return data; }; @@ -88282,7 +92504,7 @@ function _templateObject9() { function _templateObject8() { const data = message_taggedTemplateLiteral(["\n <div class=\"chat-msg__spoiler-hint\">\n <span class=\"spoiler-hint\">", "</span>\n <a class=\"badge badge-info spoiler-toggle\" href=\"#\" @click=", ">\n <i class=\"fa ", "\"></i>\n ", "\n </a>\n </div>\n "]); - _templateObject8 = function _templateObject8() { + _templateObject8 = function () { return data; }; @@ -88292,17 +92514,17 @@ function _templateObject8() { function _templateObject7() { const data = message_taggedTemplateLiteral(["<q class=\"chat-msg--retracted__reason\">", "</q>"]); - _templateObject7 = function _templateObject7() { + _templateObject7 = function () { return data; }; return data; } -function _templateObject6() { +function message_templateObject6() { const data = message_taggedTemplateLiteral(["\n <div>", "</div>\n ", "\n "]); - _templateObject6 = function _templateObject6() { + message_templateObject6 = function () { return data; }; @@ -88312,7 +92534,7 @@ function _templateObject6() { function message_templateObject5() { const data = message_taggedTemplateLiteral(["\n <div class=\"message chat-msg\">\n ", "\n <div class=\"chat-msg__content\">\n <span class=\"chat-msg__text\">", " <strong>", "</strong>, ", "</span>\n <progress value=\"", "\"/>\n </div>\n </div>"]); - message_templateObject5 = function _templateObject5() { + message_templateObject5 = function () { return data; }; @@ -88322,7 +92544,7 @@ function message_templateObject5() { function message_templateObject4() { const data = message_taggedTemplateLiteral(["<a class=\"retry\" @click=", ">", "</a>"]); - message_templateObject4 = function _templateObject4() { + message_templateObject4 = function () { return data; }; @@ -88332,7 +92554,7 @@ function message_templateObject4() { function message_templateObject3() { const data = message_taggedTemplateLiteral(["<q class=\"reason\">", "</q>"]); - message_templateObject3 = function _templateObject3() { + message_templateObject3 = function () { return data; }; @@ -88342,7 +92564,7 @@ function message_templateObject3() { function message_templateObject2() { const data = message_taggedTemplateLiteral(["<q class=\"reason\">", "</q>"]); - message_templateObject2 = function _templateObject2() { + message_templateObject2 = function () { return data; }; @@ -88352,7 +92574,7 @@ function message_templateObject2() { function message_templateObject() { const data = message_taggedTemplateLiteral(["\n <div class=\"message chat-info chat-", "\"\n data-isodate=\"", "\"\n data-type=\"", "\"\n data-value=\"", "\">\n\n <div class=\"chat-info__message\">\n ", "\n </div>\n ", "\n ", "\n ", "\n </div>\n "]); - message_templateObject = function _templateObject() { + message_templateObject = function () { return data; }; @@ -88377,9 +92599,9 @@ function message_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings const { - Strophe: message_Strophe + Strophe: components_message_Strophe } = converse.env; -const message_u = converse.env.utils; +const components_message_u = converse.env.utils; class message_Message extends element_CustomElement { static get properties() { return { @@ -88495,8 +92717,8 @@ class message_Message extends element_CustomElement { } render() { - const format = converse_core_api.settings.get('time_format'); - this.pretty_time = dayjs_min_default()(this.time).format(format); + const format = core_api.settings.get('time_format'); + this.pretty_time = dayjs_min_default()(this.edited || this.time).format(format); if (this.show_spinner) { return spinner(); @@ -88550,18 +92772,18 @@ class message_Message extends element_CustomElement { } renderChatMessage() { - return chat_message(this); + return templates_chat_message(this); } shouldShowAvatar() { - return converse_core_api.settings.get('show_message_avatar') && !this.is_me_message && this.type !== 'headline'; + return core_api.settings.get('show_message_avatar') && !this.is_me_message && this.type !== 'headline'; } getAvatarData() { var _this$model$vcard, _this$model$vcard2; - const image_type = ((_this$model$vcard = this.model.vcard) === null || _this$model$vcard === void 0 ? void 0 : _this$model$vcard.get('image_type')) || converse_core_converse.DEFAULT_IMAGE_TYPE; - const image_data = ((_this$model$vcard2 = this.model.vcard) === null || _this$model$vcard2 === void 0 ? void 0 : _this$model$vcard2.get('image')) || converse_core_converse.DEFAULT_IMAGE; + const image_type = ((_this$model$vcard = this.model.vcard) === null || _this$model$vcard === void 0 ? void 0 : _this$model$vcard.get('image_type')) || core_converse.DEFAULT_IMAGE_TYPE; + const image_data = ((_this$model$vcard2 = this.model.vcard) === null || _this$model$vcard2 === void 0 ? void 0 : _this$model$vcard2.get('image')) || core_converse.DEFAULT_IMAGE; const image = "data:" + image_type + ";base64," + image_data; return { 'classes': 'chat-msg__avatar', @@ -88573,7 +92795,7 @@ class message_Message extends element_CustomElement { async onRetryClicked() { this.show_spinner = true; - await converse_core_api.trigger(this.retry_event_id, { + await core_api.trigger(this.retry_event_id, { 'synchronous': true }); this.model.destroy(); @@ -88618,7 +92840,7 @@ class message_Message extends element_CustomElement { this.model.mod = chatbox.occupants.findOccupant({ 'jid': retracted_by_mod }) || chatbox.occupants.findOccupant({ - 'nick': message_Strophe.getResourceFromJid(retracted_by_mod) + 'nick': components_message_Strophe.getResourceFromJid(retracted_by_mod) }); } @@ -88631,7 +92853,7 @@ class message_Message extends element_CustomElement { renderRetraction() { const retraction_text = this.is_retracted ? this.getRetractionText() : null; - return lit_html_html(_templateObject6(), retraction_text, this.moderation_reason ? lit_html_html(_templateObject7(), this.moderation_reason) : ''); + return lit_html_html(message_templateObject6(), retraction_text, this.moderation_reason ? lit_html_html(_templateObject7(), this.moderation_reason) : ''); } renderMessageText() { @@ -88645,18 +92867,28 @@ class message_Message extends element_CustomElement { const tpl_spoiler_hint = lit_html_html(_templateObject8(), this.spoiler_hint, this.toggleSpoilerMessage, this.is_spoiler_visible ? 'fa-eye-slash' : 'fa-eye', this.is_spoiler_visible ? i18n_show_less : i18n_show); const spoiler_classes = this.is_spoiler ? "spoiler ".concat(this.is_spoiler_visible ? '' : 'hidden') : ''; - return lit_html_html(_templateObject9(), this.is_spoiler ? tpl_spoiler_hint : '', this.subject ? lit_html_html(_templateObject10(), this.subject) : '', this.is_only_emojis ? 'chat-msg__text--larger' : '', spoiler_classes, this.model, this.is_me_message, this.is_only_emojis, this.is_spoiler, this.is_spoiler_visible, this.model.getMessageText(), this.received && !this.is_me_message && !is_groupchat_message ? lit_html_html(_templateObject11()) : '', this.edited ? lit_html_html(_templateObject12(), i18n_edited, this.showMessageVersionsModal) : '', this.oob_url ? lit_html_html(_templateObject13(), message_u.getOOBURLMarkup(converse_core_converse, this.oob_url)) : '', this.error_text || this.error); + return lit_html_html(_templateObject9(), this.is_spoiler ? tpl_spoiler_hint : '', this.subject ? lit_html_html(_templateObject10(), this.subject) : '', this.is_only_emojis ? 'chat-msg__text--larger' : '', spoiler_classes, this.model, this.is_me_message, this.is_only_emojis, this.is_spoiler, this.is_spoiler_visible, this.model.getMessageText(), this.received && !this.is_me_message && !is_groupchat_message ? lit_html_html(_templateObject11()) : '', this.edited ? lit_html_html(_templateObject12(), i18n_edited, this.showMessageVersionsModal) : '', this.oob_url ? lit_html_html(_templateObject13(), components_message_u.getOOBURLMarkup(core_converse, this.oob_url)) : '', this.error_text || this.error); } renderAvatarByline() { - return lit_html_html(_templateObject14(), this.hats.map(h => lit_html_html(_templateObject15(), h.title)), this.time, this.pretty_time); + return lit_html_html(_templateObject14(), this.hats.map(h => lit_html_html(_templateObject15(), h.title)), this.edited || this.time, this.pretty_time); + } + + showUserModal(ev) { + if (this.model.get('sender') === 'me') { + core_converse.xmppstatusview.showProfileModal(ev); + } else if (this.message_type === 'groupchat') { + this.chatview.showOccupantDetailsModal(ev, this.model); + } else { + this.chatview.showUserDetailsModal(ev, this.model); + } } showMessageVersionsModal(ev) { ev.preventDefault(); if (this.message_versions_modal === undefined) { - this.message_versions_modal = new message_versions({ + this.message_versions_modal = new modals_message_versions({ 'model': this.model }); } @@ -88672,12 +92904,12 @@ class message_Message extends element_CustomElement { } } -converse_core_api.elements.define('converse-chat-message', message_Message); +core_api.elements.define('converse-chat-message', message_Message); // CONCATENATED MODULE: ./src/templates/new_day.js function new_day_templateObject() { const data = new_day_taggedTemplateLiteral(["\n <div class=\"message date-separator\" data-isodate=\"", "\">\n <hr class=\"separator\"/>\n <time class=\"separator-text\" datetime=\"", "\"><span>", "</span></time>\n </div>\n"]); - new_day_templateObject = function _templateObject() { + new_day_templateObject = function () { return data; }; @@ -89108,7 +93340,7 @@ const repeat = directive_directive((items, keyFnOrTemplate, template) => { function message_history_templateObject3() { const data = message_history_taggedTemplateLiteral(["<div class=\"empty-history-feedback form-help\"><span>", "</span></div>"]); - message_history_templateObject3 = function _templateObject3() { + message_history_templateObject3 = function () { return data; }; @@ -89118,7 +93350,7 @@ function message_history_templateObject3() { function message_history_templateObject2() { const data = message_history_taggedTemplateLiteral(["", ""]); - message_history_templateObject2 = function _templateObject2() { + message_history_templateObject2 = function () { return data; }; @@ -89128,7 +93360,7 @@ function message_history_templateObject2() { function message_history_templateObject() { const data = message_history_taggedTemplateLiteral(["\n <converse-chat-message\n .chatview=", "\n .hats=", "\n .model=", "\n ?correcting=", "\n ?editable=", "\n ?has_mentions=", "\n ?is_delayed=", "\n ?is_encrypted=", "\n ?is_first_unread=", "\n ?is_me_message=", "\n ?is_only_emojis=", "\n ?is_retracted=", "\n ?is_spoiler=", "\n ?is_spoiler_visible=", "\n ?retractable=", "\n edited=", "\n error=", "\n error_text=", "\n filename=", "\n filesize=", "\n from=", "\n message_type=", "\n moderated_by=", "\n moderation_reason=", "\n msgid=", "\n occupant_affiliation=", "\n occupant_role=", "\n oob_url=", "\n pretty_type=", "\n progress=", "\n reason=", "\n received=", "\n retry_event_id=", "\n sender=", "\n spoiler_hint=", "\n subject=", "\n time=", "\n username=", "></converse-chat-message>\n"]); - message_history_templateObject = function _templateObject() { + message_history_templateObject = function () { return data; }; @@ -89165,13 +93397,16 @@ function getDayIndicator(model) { 'datestring': day_date.format("dddd MMM Do YYYY") }); } -} +} // This is set to _converse so that it can be overriden. An attempt was made to use +// a hook instead, but hook returns a promise and it forces the asynchronicity up +// to the render method. + -function getHats(model) { +core_converse.getHats = function (model) { if (model.get('type') === 'groupchat') { var _model$occupant; - const allowed_hats = converse_core_api.settings.get('muc_hats').filter(hat => hat).map(hat => hat.toLowerCase()); + const allowed_hats = core_api.settings.get('muc_hats').filter(hat => hat).map(hat => hat.toLowerCase()); let vcard_roles = []; if (allowed_hats.includes('vcard_roles')) { @@ -89183,38 +93418,21 @@ function getHats(model) { const muc_role = model.occupant ? [model.occupant.get('role')] : []; const muc_affiliation = model.occupant ? [model.occupant.get('affiliation')] : []; - let affiliation_role_hats = [...muc_role, ...muc_affiliation].filter(hat => hat).filter(hat => allowed_hats.includes(hat.toLowerCase())).map(hat => ({ + const affiliation_role_hats = [...muc_role, ...muc_affiliation].filter(hat => hat).filter(hat => allowed_hats.includes(hat.toLowerCase())).map(hat => ({ title: hat })); - const hat_conversions = converse_core_api.settings.get('role_affiliation_hat_conversions') || ''; - - if (hat_conversions) { - const role_affiliations = Object.keys(hat_conversions); - affiliation_role_hats = affiliation_role_hats.map(hat => { - const role_affiliations = Object.keys(hat_conversions); - - if (role_affiliations.includes(hat.title)) { - return { - title: hat_conversions[hat.title] - }; - } else { - return hat; - } - }); - } - const hats = allowed_hats.includes('xep317') ? ((_model$occupant = model.occupant) === null || _model$occupant === void 0 ? void 0 : _model$occupant.get('hats')) || [] : []; return [...hats, ...vcard_roles, ...affiliation_role_hats]; } return []; -} +}; function getDerivedMessageProps(chatbox, model) { const is_groupchat = model.get('type') === 'groupchat'; return { 'has_mentions': is_groupchat && model.get('sender') === 'them' && chatbox.isUserMentioned(model), - 'hats': getHats(model), + 'hats': core_converse.getHats(model), 'is_first_unread': chatbox.get('first_unread_id') === model.get('id'), 'is_me_message': model.isMeCommand(), 'is_retracted': model.get('retracted') || model.get('moderated') === 'retracted', @@ -89239,7 +93457,6 @@ class message_history_MessageHistory extends element_CustomElement { } renderMessage(model) { - // XXX: leaky abstraction "is_only_key" from converse-omemo if (model.get('dangling_retraction') || model.get('is_only_key')) { return ''; } @@ -89254,9 +93471,9 @@ class message_history_MessageHistory extends element_CustomElement { } } -converse_core_api.elements.define('converse-message-history', message_history_MessageHistory); +core_api.elements.define('converse-message-history', message_history_MessageHistory); // EXTERNAL MODULE: ./node_modules/xss/dist/xss.js -var xss = __webpack_require__(16); +var xss = __webpack_require__(18); var xss_default = /*#__PURE__*/__webpack_require__.n(xss); // CONCATENATED MODULE: ./node_modules/lit-html/directives/unsafe-html.js @@ -89308,7 +93525,7 @@ const unsafeHTML = directive_directive((value) => (part) => { function chat_content_templateObject() { const data = chat_content_taggedTemplateLiteral(["\n <converse-message-history\n .chatview=", "\n .messages=", ">\n </converse-message-history>\n <div class=\"chat-content__notifications\">", "</div>\n "]); - chat_content_templateObject = function _templateObject() { + chat_content_templateObject = function () { return data; }; @@ -89346,12 +93563,12 @@ class chat_content_ChatContent extends element_CustomElement { } } -converse_core_api.elements.define('converse-chat-content', chat_content_ChatContent); +core_api.elements.define('converse-chat-content', chat_content_ChatContent); // CONCATENATED MODULE: ./src/components/icons.js function icons_templateObject2() { const data = icons_taggedTemplateLiteral(["<svg .style=\"", "\"> <use href=\"", "\"> </use> </svg>"]); - icons_templateObject2 = function _templateObject2() { + icons_templateObject2 = function () { return data; }; @@ -89361,7 +93578,7 @@ function icons_templateObject2() { function icons_templateObject() { const data = icons_taggedTemplateLiteral(["\n :host {\n display: inline-block;\n padding: 0;\n margin: 0;\n }\n "]); - icons_templateObject = function _templateObject() { + icons_templateObject = function () { return data; }; @@ -89424,7 +93641,7 @@ customElements.define("converse-icon", icons_ConverseIcon); function help_messages_templateObject2() { const data = help_messages_taggedTemplateLiteral(["<div class=\"message chat-", "\" data-isodate=\"", "\">", "</div>"]); - help_messages_templateObject2 = function _templateObject2() { + help_messages_templateObject2 = function () { return data; }; @@ -89434,7 +93651,7 @@ function help_messages_templateObject2() { function help_messages_templateObject() { const data = help_messages_taggedTemplateLiteral(["<converse-icon class=\"fas fa-times close-chat-help\"\n @click=", "\n path-prefix=\"", "\"\n size=\"1em\"></converse-icon>"]); - help_messages_templateObject = function _templateObject() { + help_messages_templateObject = function () { return data; }; @@ -89469,7 +93686,7 @@ class help_messages_ChatHelp extends element_CustomElement { render() { const isodate = new Date().toISOString(); - return [lit_html_html(help_messages_templateObject(), this.close, converse_core_api.settings.get("assets_path")), ...this.messages.map(m => this.renderHelpMessage({ + return [lit_html_html(help_messages_templateObject(), this.close, core_api.settings.get("assets_path")), ...this.messages.map(m => this.renderHelpMessage({ isodate, 'markup': xss_default.a.filterXSS(m, { 'whiteList': { @@ -89490,12 +93707,12 @@ class help_messages_ChatHelp extends element_CustomElement { } } -converse_core_api.elements.define('converse-chat-help', help_messages_ChatHelp); +core_api.elements.define('converse-chat-help', help_messages_ChatHelp); // CONCATENATED MODULE: ./src/templates/emoji_picker.js function emoji_picker_templateObject9() { const data = emoji_picker_taggedTemplateLiteral(["<converse-emoji-picker-content\n .chatview=", "\n .model=", "\n .search_results=\"", "\"\n current_skintone=\"", "\"\n query=\"", "\"></converse-emoji-picker-content>"]); - emoji_picker_templateObject9 = function _templateObject9() { + emoji_picker_templateObject9 = function () { return data; }; @@ -89505,7 +93722,7 @@ function emoji_picker_templateObject9() { function emoji_picker_templateObject8() { const data = emoji_picker_taggedTemplateLiteral(["\n <div class=\"emoji-picker__header\">\n <input class=\"form-control emoji-search\" name=\"emoji-search\" placeholder=\"", "\"\n .value=", "\n @keydown=", "\n @blur=", "\n @focus=", ">\n ", "\n </div>\n ", "\n\n <div class=\"emoji-skintone-picker\">\n <label>Skin tone</label>\n <ul>", "</ul>\n </div>"]); - emoji_picker_templateObject8 = function _templateObject8() { + emoji_picker_templateObject8 = function () { return data; }; @@ -89515,7 +93732,7 @@ function emoji_picker_templateObject8() { function emoji_picker_templateObject7() { const data = emoji_picker_taggedTemplateLiteral(["\n <li data-skintone=\"", "\" class=\"emoji-skintone ", "\">\n <a class=\"pick-skintone\" href=\"#\" data-skintone=\"", "\" @click=", ">", "</a>\n </li>"]); - emoji_picker_templateObject7 = function _templateObject7() { + emoji_picker_templateObject7 = function () { return data; }; @@ -89525,7 +93742,7 @@ function emoji_picker_templateObject7() { function emoji_picker_templateObject6() { const data = emoji_picker_taggedTemplateLiteral(["\n <span ?hidden=", " class=\"emoji-lists__container emoji-lists__container--browse\">\n ", "\n </span>"]); - emoji_picker_templateObject6 = function _templateObject6() { + emoji_picker_templateObject6 = function () { return data; }; @@ -89535,7 +93752,7 @@ function emoji_picker_templateObject6() { function emoji_picker_templateObject5() { const data = emoji_picker_taggedTemplateLiteral(["\n <a id=\"emoji-picker-", "\" class=\"emoji-category__heading\" data-category=\"", "\">", "</a>\n <ul class=\"emoji-picker\" data-category=\"", "\">\n ", "\n </ul>"]); - emoji_picker_templateObject5 = function _templateObject5() { + emoji_picker_templateObject5 = function () { return data; }; @@ -89545,7 +93762,7 @@ function emoji_picker_templateObject5() { function emoji_picker_templateObject4() { const data = emoji_picker_taggedTemplateLiteral(["\n <span ?hidden=", " class=\"emoji-lists__container emojis-lists__container--search\">\n <a id=\"emoji-picker-search-results\" class=\"emoji-category__heading\">", "</a>\n <ul class=\"emoji-picker\">\n ", "\n </ul>\n </span>\n "]); - emoji_picker_templateObject4 = function _templateObject4() { + emoji_picker_templateObject4 = function () { return data; }; @@ -89555,7 +93772,7 @@ function emoji_picker_templateObject4() { function emoji_picker_templateObject3() { const data = emoji_picker_taggedTemplateLiteral(["\n <li class=\"emoji insert-emoji ", "\" data-emoji=\"", "\" title=\"", "\">\n <a href=\"#\" @click=", " data-emoji=\"", "\">", "</a>\n </li>\n "]); - emoji_picker_templateObject3 = function _templateObject3() { + emoji_picker_templateObject3 = function () { return data; }; @@ -89565,7 +93782,7 @@ function emoji_picker_templateObject3() { function emoji_picker_templateObject2() { const data = emoji_picker_taggedTemplateLiteral(["<ul>", "</ul>"]); - emoji_picker_templateObject2 = function _templateObject2() { + emoji_picker_templateObject2 = function () { return data; }; @@ -89575,7 +93792,7 @@ function emoji_picker_templateObject2() { function emoji_picker_templateObject() { const data = emoji_picker_taggedTemplateLiteral(["\n <li data-category=\"", "\"\n class=\"emoji-category ", " ", "\"\n title=\"", "\">\n\n <a class=\"pick-category\"\n @click=", "\n href=\"#emoji-picker-", "\"\n data-category=\"", "\">", " </a>\n </li>\n "]); - emoji_picker_templateObject = function _templateObject() { + emoji_picker_templateObject = function () { return data; }; @@ -89590,11 +93807,11 @@ function emoji_picker_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = st const emoji_picker_u = converse.env.utils; const emoji_category = o => { - return lit_html_html(emoji_picker_templateObject(), o.category, o.category, o.current_category === o.category ? 'picked' : '', i18n_(converse_core_converse.emoji_category_labels[o.category]), o.onCategoryPicked, o.category, o.category, o.emoji); + return lit_html_html(emoji_picker_templateObject(), o.category, o.category, o.current_category === o.category ? 'picked' : '', i18n_(core_converse.emoji_category_labels[o.category]), o.onCategoryPicked, o.category, o.category, o.emoji); }; const emoji_picker_header = o => { - const cats = converse_core_api.settings.get('emoji_categories'); + const cats = core_api.settings.get('emoji_categories'); const transform = c => cats[c] ? emoji_category(Object.assign({ 'category': c, @@ -89617,13 +93834,13 @@ const tpl_search_results = o => { }; const emojis_for_category = o => { - return lit_html_html(emoji_picker_templateObject5(), o.category, o.category, i18n_(converse_core_api.settings.get('emoji_category_labels')[o.category]), o.category, Object.values(converse.emojis.json[o.category]).map(emoji => emoji_item(Object.assign({ + return lit_html_html(emoji_picker_templateObject5(), o.category, o.category, i18n_(core_api.settings.get('emoji_category_labels')[o.category]), o.category, Object.values(converse.emojis.json[o.category]).map(emoji => emoji_item(Object.assign({ emoji }, o)))); }; const tpl_all_emojis = o => { - const cats = converse_core_api.settings.get('emoji_categories'); + const cats = core_api.settings.get('emoji_categories'); return lit_html_html(emoji_picker_templateObject6(), o.query, Object.keys(cats).map(c => cats[c] ? emojis_for_category(Object.assign({ 'category': c }, o)) : '')); @@ -89645,7 +93862,7 @@ const tpl_emoji_picker = o => { function emoji_picker_content_templateObject() { const data = emoji_picker_content_taggedTemplateLiteral(["\n <div class=\"emoji-picker__lists\">\n ", "\n ", "\n </div>\n "]); - emoji_picker_content_templateObject = function _templateObject() { + emoji_picker_content_templateObject = function () { return data; }; @@ -89761,7 +93978,7 @@ class emoji_picker_content_EmojiPickerContent extends element_CustomElement { } } - if (this.query && !converse_core_converse.FILTER_CONTAINS(shortname, this.query)) { + if (this.query && !core_converse.FILTER_CONTAINS(shortname, this.query)) { return true; } @@ -89769,12 +93986,12 @@ class emoji_picker_content_EmojiPickerContent extends element_CustomElement { } } -converse_core_api.elements.define('converse-emoji-picker-content', emoji_picker_content_EmojiPickerContent); +core_api.elements.define('converse-emoji-picker-content', emoji_picker_content_EmojiPickerContent); // CONCATENATED MODULE: ./src/components/emoji-picker.js function components_emoji_picker_templateObject2() { const data = components_emoji_picker_taggedTemplateLiteral(["\n <converse-emoji-picker\n .chatview=", "\n .model=", "\n ?render_emojis=", "\n current_category=\"", "\"\n current_skintone=\"", "\"\n query=\"", "\"\n ></converse-emoji-picker>"]); - components_emoji_picker_templateObject2 = function _templateObject2() { + components_emoji_picker_templateObject2 = function () { return data; }; @@ -89784,7 +94001,7 @@ function components_emoji_picker_templateObject2() { function components_emoji_picker_templateObject() { const data = components_emoji_picker_taggedTemplateLiteral(["\n <div class=\"dropup\">\n <button class=\"toggle-emojis\"\n title=\"", "\"\n data-toggle=\"dropdown\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\">\n <converse-icon\n class=\"fa fa-smile \"\n path-prefix=\"", "\"\n size=\"1em\"></converse-icon>\n </button>\n <div class=\"dropdown-menu\">\n ", "\n </div>\n </div>"]); - components_emoji_picker_templateObject = function _templateObject() { + components_emoji_picker_templateObject = function () { return data; }; @@ -89901,7 +94118,7 @@ class emoji_picker_EmojiPicker extends element_CustomElement { updateSearchResults(changed) { const old_query = changed.get('query'); - const contains = converse_core_converse.FILTER_CONTAINS; + const contains = core_converse.FILTER_CONTAINS; if (this.query) { if (this.query === old_query) { @@ -89999,7 +94216,7 @@ class emoji_picker_EmojiPicker extends element_CustomElement { if (ev.keyCode === converse.keycodes.TAB) { if (ev.target.value) { ev.preventDefault(); - const match = converse.emojis.shortnames.find(sn => converse_core_converse.FILTER_CONTAINS(sn, ev.target.value)); + const match = converse.emojis.shortnames.find(sn => core_converse.FILTER_CONTAINS(sn, ev.target.value)); match && this.model.set({ 'query': match }); @@ -90117,12 +94334,12 @@ class emoji_picker_EmojiDropdown extends dropdown_BaseDropdown { initModel() { if (!this.init_promise) { this.init_promise = (async () => { - await converse_core_api.emojis.initialize(); - const id = "converse.emoji-".concat(converse_core_converse.bare_jid, "-").concat(this.chatview.model.get('jid')); - this.model = new converse_core_converse.EmojiPicker({ + await core_api.emojis.initialize(); + const id = "converse.emoji-".concat(core_converse.bare_jid, "-").concat(this.chatview.model.get('jid')); + this.model = new core_converse.EmojiPicker({ 'id': id }); - this.model.browserStorage = converse_core_converse.createStore(id); + this.model.browserStorage = core_converse.createStore(id); await new Promise(resolve => this.model.fetch({ 'success': resolve, 'error': resolve @@ -90139,7 +94356,7 @@ class emoji_picker_EmojiDropdown extends dropdown_BaseDropdown { } render() { - return lit_html_html(components_emoji_picker_templateObject(), i18n_('Insert emojis'), converse_core_api.settings.get('assets_path'), until(this.initModel().then(() => lit_html_html(components_emoji_picker_templateObject2(), this.chatview, this.model, this.render_emojis, this.model.get('current_category') || '', this.model.get('current_skintone') || '', this.model.get('query') || '')), '')); + return lit_html_html(components_emoji_picker_templateObject(), i18n_('Insert emojis'), core_api.settings.get('assets_path'), until(this.initModel().then(() => lit_html_html(components_emoji_picker_templateObject2(), this.chatview, this.model, this.render_emojis, this.model.get('current_category') || '', this.model.get('current_skintone') || '', this.model.get('query') || '')), '')); } connectedCallback() { @@ -90178,13 +94395,13 @@ class emoji_picker_EmojiDropdown extends dropdown_BaseDropdown { } } -converse_core_api.elements.define('converse-emoji-dropdown', emoji_picker_EmojiDropdown); -converse_core_api.elements.define('converse-emoji-picker', emoji_picker_EmojiPicker); +core_api.elements.define('converse-emoji-dropdown', emoji_picker_EmojiDropdown); +core_api.elements.define('converse-emoji-picker', emoji_picker_EmojiPicker); // CONCATENATED MODULE: ./src/components/toolbar.js function toolbar_templateObject11() { const data = toolbar_taggedTemplateLiteral(["", ""]); - toolbar_templateObject11 = function _templateObject11() { + toolbar_templateObject11 = function () { return data; }; @@ -90194,7 +94411,7 @@ function toolbar_templateObject11() { function toolbar_templateObject10() { const data = toolbar_taggedTemplateLiteral(["\n <button class=\"toggle-compose-spoiler\"\n title=\"", "\"\n @click=", ">\n <converse-icon class=\"fa ", "\"\n path-prefix=\"", "\"\n size=\"1em\"></converse-icon>\n </button>"]); - toolbar_templateObject10 = function _templateObject10() { + toolbar_templateObject10 = function () { return data; }; @@ -90204,7 +94421,7 @@ function toolbar_templateObject10() { function toolbar_templateObject9() { const data = toolbar_taggedTemplateLiteral(["\n <button title=\"", "\" @click=", ">\n <converse-icon class=\"fa fa-paperclip\"\n path-prefix=\"", "\"\n size=\"1em\"></converse-icon>\n </button>\n <input type=\"file\" @change=", " class=\"fileupload\" multiple=\"\" style=\"display:none\"/>"]); - toolbar_templateObject9 = function _templateObject9() { + toolbar_templateObject9 = function () { return data; }; @@ -90214,7 +94431,7 @@ function toolbar_templateObject9() { function toolbar_templateObject8() { const data = toolbar_taggedTemplateLiteral(["\n <button class=\"toggle_occupants right\"\n title=\"", "\"\n @click=", ">\n <converse-icon class=\"fa ", "\"\n path-prefix=\"", "\" size=\"1em\"></converse-icon>\n </button>"]); - toolbar_templateObject8 = function _templateObject8() { + toolbar_templateObject8 = function () { return data; }; @@ -90224,7 +94441,7 @@ function toolbar_templateObject8() { function toolbar_templateObject7() { const data = toolbar_taggedTemplateLiteral(["", ""]); - toolbar_templateObject7 = function _templateObject7() { + toolbar_templateObject7 = function () { return data; }; @@ -90234,7 +94451,7 @@ function toolbar_templateObject7() { function toolbar_templateObject6() { const data = toolbar_taggedTemplateLiteral(["<span class=\"right message-limit\" title=\"", "\">", "</span>"]); - toolbar_templateObject6 = function _templateObject6() { + toolbar_templateObject6 = function () { return data; }; @@ -90244,7 +94461,7 @@ function toolbar_templateObject6() { function toolbar_templateObject5() { const data = toolbar_taggedTemplateLiteral(["\n <button class=\"toggle-call\" @click=", " title=\"", "\">\n <converse-icon class=\"fa fa-phone\" path-prefix=\"/dist\" size=\"1em\"></converse-icon>\n </button>"]); - toolbar_templateObject5 = function _templateObject5() { + toolbar_templateObject5 = function () { return data; }; @@ -90254,7 +94471,7 @@ function toolbar_templateObject5() { function toolbar_templateObject4() { const data = toolbar_taggedTemplateLiteral(["<converse-emoji-dropdown .chatview=", "></converse-dropdown>"]); - toolbar_templateObject4 = function _templateObject4() { + toolbar_templateObject4 = function () { return data; }; @@ -90264,7 +94481,7 @@ function toolbar_templateObject4() { function toolbar_templateObject3() { const data = toolbar_taggedTemplateLiteral(["<button type=\"submit\" class=\"btn send-button fa fa-paper-plane\" title=\"", "\"></button>"]); - toolbar_templateObject3 = function _templateObject3() { + toolbar_templateObject3 = function () { return data; }; @@ -90274,7 +94491,7 @@ function toolbar_templateObject3() { function toolbar_templateObject2() { const data = toolbar_taggedTemplateLiteral(["<span class=\"toolbar-buttons\">", "</span>"]); - toolbar_templateObject2 = function _templateObject2() { + toolbar_templateObject2 = function () { return data; }; @@ -90284,7 +94501,7 @@ function toolbar_templateObject2() { function toolbar_templateObject() { const data = toolbar_taggedTemplateLiteral(["\n ", "\n ", "\n "]); - toolbar_templateObject = function _templateObject() { + toolbar_templateObject = function () { return data; }; @@ -90364,7 +94581,7 @@ class toolbar_ChatToolbar extends element_CustomElement { const i18n_chars_remaining = i18n_('Message characters remaining'); - const message_limit = converse_core_api.settings.get('message_limit'); + const message_limit = core_api.settings.get('message_limit'); if (message_limit) { buttons.push(lit_html_html(toolbar_templateObject6(), i18n_chars_remaining, this.message_limit)); @@ -90374,7 +94591,7 @@ class toolbar_ChatToolbar extends element_CustomElement { buttons.push(this.getSpoilerButton()); } - const http_upload_promise = converse_core_api.disco.supports(toolbar_Strophe.NS.HTTPUPLOAD, converse_core_converse.domain); + const http_upload_promise = core_api.disco.supports(toolbar_Strophe.NS.HTTPUPLOAD, core_converse.domain); buttons.push(lit_html_html(toolbar_templateObject7(), until(http_upload_promise.then(is_supported => this.getHTTPUploadButton(is_supported)), ''))); if (this.show_occupants_toggle) { @@ -90382,22 +94599,29 @@ class toolbar_ChatToolbar extends element_CustomElement { const i18n_show_occupants = i18n_('Show participants'); - buttons.push(lit_html_html(toolbar_templateObject8(), this.hidden_occupants ? i18n_show_occupants : i18n_hide_occupants, this.toggleOccupants, this.hidden_occupants ? "fa-angle-double-left" : "fa-angle-double-right", converse_core_api.settings.get('assets_path'))); + buttons.push(lit_html_html(toolbar_templateObject8(), this.hidden_occupants ? i18n_show_occupants : i18n_hide_occupants, this.toggleOccupants, this.hidden_occupants ? "fa-angle-double-left" : "fa-angle-double-right", core_api.settings.get('assets_path'))); } /** * *Hook* which allows plugins to add more buttons to a chat's toolbar * @event _converse#getToolbarButtons + * @example + * api.listen.on('getToolbarButtons', (toolbar_el, buttons) { + * buttons.push(html` + * <button @click=${() => alert('Foo!')}>Foo</button>` + * ); + * return buttons; + * } */ - return converse_core_converse.api.hook('getToolbarButtons', this, buttons); + return core_converse.api.hook('getToolbarButtons', this, buttons); } getHTTPUploadButton(is_supported) { if (is_supported) { const i18n_choose_file = i18n_('Choose a file to send'); - return lit_html_html(toolbar_templateObject9(), i18n_choose_file, this.toggleFileUpload, converse_core_api.settings.get('assets_path'), this.onFileSelection); + return lit_html_html(toolbar_templateObject9(), i18n_choose_file, this.toggleFileUpload, core_api.settings.get('assets_path'), this.onFileSelection); } else { return ''; } @@ -90418,13 +94642,13 @@ class toolbar_ChatToolbar extends element_CustomElement { i18n_toggle_spoiler = i18n_("Click to write your message as a spoiler"); } - const markup = lit_html_html(toolbar_templateObject10(), i18n_toggle_spoiler, this.toggleComposeSpoilerMessage, this.composing_spoiler ? 'fa-eye-slash' : 'fa-eye', converse_core_api.settings.get('assets_path')); + const markup = lit_html_html(toolbar_templateObject10(), i18n_toggle_spoiler, this.toggleComposeSpoilerMessage, this.composing_spoiler ? 'fa-eye-slash' : 'fa-eye', core_api.settings.get('assets_path')); if (this.is_groupchat) { return markup; } else { const contact_jid = model.get('jid'); - const spoilers_promise = Promise.all(model.presence.resources.map(r => converse_core_api.disco.supports(toolbar_Strophe.NS.SPOILER, "".concat(contact_jid, "/").concat(r.get('name'))))).then(results => results.reduce((acc, val) => acc && val, true)); + const spoilers_promise = Promise.all(model.presence.resources.map(r => core_api.disco.supports(toolbar_Strophe.NS.SPOILER, "".concat(contact_jid, "/").concat(r.get('name'))))).then(results => results.reduce((acc, val) => acc && val, true)); return lit_html_html(toolbar_templateObject11(), until(spoilers_promise.then(() => markup), '')); } } @@ -90473,8 +94697,8 @@ class toolbar_ChatToolbar extends element_CustomElement { * @example _converse.api.listen.on('callButtonClicked', (connection, model) => { ... }); */ - converse_core_api.trigger('callButtonClicked', { - connection: converse_core_converse.connection, + core_api.trigger('callButtonClicked', { + connection: core_converse.connection, model: this.model }); } @@ -90493,18 +94717,45 @@ window.customElements.define('converse-chat-toolbar', toolbar_ChatToolbar); class converse_ConverseRoot extends HTMLElement { async connectedCallback() { - await converse_core_api.waitUntil('initialized'); + await core_api.waitUntil('initialized'); converse.insertInto(this); } } customElements.define('converse-root', converse_ConverseRoot); +// CONCATENATED MODULE: ./src/shared/avatar.js + + +const avatar_u = converse.env.utils; +const AvatarMixin = { + renderAvatar(el) { + el = el || this.el; + const avatar_el = el.querySelector('canvas.avatar, svg.avatar'); + + if (avatar_el === null) { + return; + } + + if (this.model.vcard) { + const data = { + 'classes': avatar_el.getAttribute('class'), + 'width': avatar_el.getAttribute('width'), + 'height': avatar_el.getAttribute('height'), + 'image_type': this.model.vcard.get('image_type'), + 'image': this.model.vcard.get('image') + }; + avatar_el.outerHTML = avatar_u.getElementFromTemplateResult(templates_avatar(data)).outerHTML; + } + } + +}; +/* harmony default export */ var shared_avatar = (AvatarMixin); // CONCATENATED MODULE: ./src/templates/background_logo.js function background_logo_templateObject() { const data = background_logo_taggedTemplateLiteral(["\n <div class=\"inner-content converse-brand row\">\n <div class=\"converse-brand__padding\"></div>\n <div class=\"converse-brand__heading\">\n <svg height=\"200px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 364 364\"\n version=\"1.1\">\n <title>Logo Converse</title>\n <defs>\n <linearGradient id=\"gradient\" x1=\"92.14\" y1=\"27.64\" x2=\"267.65\" y2=\"331.62\" gradientUnits=\"userSpaceOnUse\">\n <stop offset=\"0\" stop-color=\"#fff1d1\"/>\n <stop offset=\"0.05\" stop-color=\"#fae8c1\"/>\n <stop offset=\"0.15\" stop-color=\"#f0d5a1\"/>\n <stop offset=\"0.27\" stop-color=\"#e7c687\"/>\n <stop offset=\"0.4\" stop-color=\"#e1bb72\"/>\n <stop offset=\"0.54\" stop-color=\"#dcb264\"/>\n <stop offset=\"0.71\" stop-color=\"#daad5c\"/>\n <stop offset=\"1\" stop-color=\"#d9ac59\"/>\n </linearGradient>\n <filter id=\"shadow\">\n <feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"2.3\" result=\"blur1\"/>\n <feOffset in=\"blur1\" dx=\"3\" dy=\"3\" result=\"blur2\"/>\n <feColorMatrix in=\"blur2\" type=\"matrix\" result=\"blur3\"\n values=\"1 0 0 0 0.1\n 0 1 0 0 0.1\n 0 0 1 0 0.1\n 0 0 0 1 0\"/>\n <feMerge>\n <feMergeNode in=\"blur3\"/>\n <feMergeNode in=\"SourceGraphic\"/>\n </feMerge>\n </filter>\n </defs>\n <g filter=\"url(#shadow)\">\n <path d=\"M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z\" fill=\"#d9ac59\"/>\n <path d=\"M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z\" fill=\"url(#gradient)\"/>\n </g>\n </svg>\n <span class=\"converse-brand__text\">\n <span>converse<span class=\"subdued\">.js</span></span>\n <p class=\"byline\">messaging freedom</p>\n </span>\n </div>\n </div>"]); - background_logo_templateObject = function _templateObject() { + background_logo_templateObject = function () { return data; }; @@ -90569,7 +94820,7 @@ const unsafeSVG = directive_directive((value) => (part) => { function font_awesome_templateObject2() { const data = font_awesome_taggedTemplateLiteral(["", ""]); - font_awesome_templateObject2 = function _templateObject2() { + font_awesome_templateObject2 = function () { return data; }; @@ -90579,7 +94830,7 @@ function font_awesome_templateObject2() { function font_awesome_templateObject() { const data = font_awesome_taggedTemplateLiteral(["", ""]); - font_awesome_templateObject = function _templateObject() { + font_awesome_templateObject = function () { return data; }; @@ -90595,7 +94846,7 @@ function font_awesome_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = st class font_awesome_FontAwesome extends element_CustomElement { constructor() { super(); - const promise = __webpack_require__.e(/* import() | icons */ 138).then(__webpack_require__.t.bind(null, 459, 7)); + const promise = __webpack_require__.e(/* import() | icons */ 138).then(__webpack_require__.t.bind(null, 548, 7)); this.data = promise.then(d => lit_html_html(font_awesome_templateObject(), unsafeSVG(d.default()))); } @@ -90610,7 +94861,7 @@ window.customElements.define('converse-fontawesome', font_awesome_FontAwesome); function converse_templateObject() { const data = converse_taggedTemplateLiteral(["\n <div class=\"converse-chatboxes row no-gutters\"></div>\n <div id=\"converse-modals\" class=\"modals\"></div>\n <converse-fontawesome></converse-fontawesome>\n"]); - converse_templateObject = function _templateObject() { + converse_templateObject = function () { return data; }; @@ -92110,7 +96361,7 @@ var without = _baseRest(function(array, values) { -const overview_Overview = function Overview(options) { +const Overview = function (options) { /* An Overview is a View that contains and keeps track of sub-views. * Kind of like what a Collection is to a Model. */ @@ -92138,7 +96389,7 @@ const overview_Overview = function Overview(options) { this.remove = id => { if (typeof id === "undefined") { - new view_View().remove.apply(this); + new View().remove.apply(this); } const view = this.views[id]; @@ -92155,7 +96406,7 @@ const overview_Overview = function Overview(options) { return this; }; - view_View.apply(this, Array.prototype.slice.apply(arguments)); + View.apply(this, Array.prototype.slice.apply(arguments)); }; const methods = { @@ -92192,15 +96443,15 @@ const methods = { without: lodash_es_without }; Object.keys(methods).forEach(name => { - overview_Overview.prototype[name] = function () { + Overview.prototype[name] = function () { const args = Array.prototype.slice.call(arguments); args.unshift(this.views); return methods[name].apply(this, args); }; }); -Object.assign(overview_Overview.prototype, view_View.prototype); -overview_Overview.extend = view_View.extend; -const OrderedListView = overview_Overview.extend({ +Object.assign(Overview.prototype, View.prototype); +Overview.extend = View.extend; +const OrderedListView = Overview.extend({ /* An OrderedListView is a special type of Overview which adds some * methods and conventions for rendering an ordered list of elements. */ @@ -92289,68 +96540,36 @@ const OrderedListView = overview_Overview.extend({ }); -// CONCATENATED MODULE: ./src/converse-chatboxviews.js -/** - * @module converse-chatboxviews - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - */ - - - - +// CONCATENATED MODULE: ./src/plugins/chatboxviews/view.js -const converse_chatboxviews_u = converse.env.utils; -const AvatarMixin = { - renderAvatar(el) { - el = el || this.el; - const avatar_el = el.querySelector('canvas.avatar, svg.avatar'); - - if (avatar_el === null) { - return; - } - - if (this.model.vcard) { - const data = { - 'classes': avatar_el.getAttribute('class'), - 'width': avatar_el.getAttribute('width'), - 'height': avatar_el.getAttribute('height'), - 'image_type': this.model.vcard.get('image_type'), - 'image': this.model.vcard.get('image') - }; - avatar_el.outerHTML = converse_chatboxviews_u.getElementFromTemplateResult(avatar(data)).outerHTML; - } - } - -}; -const ViewWithAvatar = view_View.extend(AvatarMixin); -const ChatBoxViews = overview_Overview.extend({ +const view_u = converse.env.utils; +const ChatBoxViews = Overview.extend({ _ensureElement() { /* Override method from backbone.js - * If the #conversejs element doesn't exist, create it. - */ + * If the #conversejs element doesn't exist, create it. + */ if (this.el) { this.setElement(lodash_es_result(this, 'el'), false); } else { - let el = converse_core_converse.root.querySelector('#conversejs'); + let el = core_converse.root.querySelector('#conversejs'); if (el === null) { el = document.createElement('div'); el.setAttribute('id', 'conversejs'); - converse_chatboxviews_u.addClass("theme-".concat(converse_core_api.settings.get('theme')), el); + view_u.addClass("theme-".concat(core_api.settings.get('theme')), el); - const body = converse_core_converse.root.querySelector('body'); + const body = core_converse.root.querySelector('body'); if (body) { body.appendChild(el); } else { // Perhaps inside a web component? - converse_core_converse.root.appendChild(el); + core_converse.root.appendChild(el); } } @@ -92359,7 +96578,7 @@ const ChatBoxViews = overview_Overview.extend({ }, initialize() { - this.listenTo(this.model, "destroy", this.removeChat); + this.listenTo(this.model, 'destroy', this.removeChat); const bg = document.getElementById('conversejs-bg'); if (bg && !bg.innerHTML.trim()) { @@ -92367,10 +96586,10 @@ const ChatBoxViews = overview_Overview.extend({ } const body = document.querySelector('body'); - body.classList.add("converse-".concat(converse_core_api.settings.get("view_mode"))); - this.el.classList.add("converse-".concat(converse_core_api.settings.get("view_mode"))); + body.classList.add("converse-".concat(core_api.settings.get('view_mode'))); + this.el.classList.add("converse-".concat(core_api.settings.get('view_mode'))); - if (converse_core_api.settings.get("singleton")) { + if (core_api.settings.get('singleton')) { this.el.classList.add("converse-singleton"); } @@ -92384,7 +96603,7 @@ const ChatBoxViews = overview_Overview.extend({ this.row_el = this.el.querySelector('.row'); }, - /*( + /** * Add a new DOM element (likely a chat box) into the * the row managed by this overview. * @param { HTMLElement } el @@ -92404,10 +96623,23 @@ const ChatBoxViews = overview_Overview.extend({ } }); +/* harmony default export */ var chatboxviews_view = (ChatBoxViews); +// CONCATENATED MODULE: ./src/plugins/chatboxviews/index.js +/** + * @module converse-chatboxviews + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ + + + + + + function onChatBoxViewsInitialized() { - converse_core_converse.chatboxviews = new converse_core_converse.ChatBoxViews({ - 'model': converse_core_converse.chatboxes + core_converse.chatboxviews = new core_converse.ChatBoxViews({ + 'model': core_converse.chatboxes }); /** * Triggered once the _converse.ChatBoxViews view-colleciton has been initialized @@ -92415,39 +96647,7 @@ function onChatBoxViewsInitialized() { * @example _converse.api.listen.on('chatBoxViewsInitialized', () => { ... }); */ - converse_core_api.trigger('chatBoxViewsInitialized'); -} - -function hideChat(view) { - if (view.model.get('id') === 'controlbox') { - return; - } - - converse_chatboxviews_u.safeSave(view.model, { - 'hidden': true - }); - view.hide(); -} - -function beforeShowingChatView(view) { - if (converse_core_converse.isUniView()) { - /* We only have one chat visible at any one - * time. So before opening a chat, we make sure all other - * chats are hidden. - */ - Object.values(converse_core_converse.chatboxviews.xget(view.model.get('id'))).filter(v => !v.model.get('hidden')).forEach(hideChat); - - if (view.model.get('hidden')) { - return new Promise(resolve => { - converse_chatboxviews_u.safeSave(view.model, { - 'hidden': false - }, { - 'success': resolve, - 'failure': resolve - }); - }); - } - } + core_api.trigger('chatBoxViewsInitialized'); } function calculateViewportHeightUnit() { @@ -92456,31 +96656,30 @@ function calculateViewportHeightUnit() { } converse.plugins.add('converse-chatboxviews', { - dependencies: ["converse-chatboxes", "converse-vcard"], + dependencies: ['converse-chatboxes', 'converse-vcard'], initialize() { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.elements.register(); - converse_core_api.promises.add(['chatBoxViewsInitialized']); // Configuration values for this plugin + core_api.elements.register(); + core_api.promises.add(['chatBoxViewsInitialized']); // Configuration values for this plugin // ==================================== // Refer to docs/source/configuration.rst for explanations of these // configuration settings. - converse_core_api.settings.extend({ + core_api.settings.extend({ 'animate': true, 'theme': 'default' }); - converse_core_converse.ViewWithAvatar = ViewWithAvatar; - converse_core_converse.ChatBoxViews = ChatBoxViews; + core_converse.ViewWithAvatar = View.extend(shared_avatar); + core_converse.ChatBoxViews = chatboxviews_view; /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('beforeShowingChatView', beforeShowingChatView); - converse_core_api.listen.on('chatBoxesInitialized', onChatBoxViewsInitialized); - converse_core_api.listen.on('cleanup', () => delete converse_core_converse.chatboxviews); - converse_core_api.listen.on('clearSession', () => converse_core_converse.chatboxviews.closeAllChatBoxes()); - converse_core_api.listen.on('chatBoxViewsInitialized', calculateViewportHeightUnit); + core_api.listen.on('chatBoxesInitialized', onChatBoxViewsInitialized); + core_api.listen.on('cleanup', () => delete core_converse.chatboxviews); + core_api.listen.on('clearSession', () => core_converse.chatboxviews.closeAllChatBoxes()); + core_api.listen.on('chatBoxViewsInitialized', calculateViewportHeightUnit); window.addEventListener('resize', calculateViewportHeightUnit); /************************ END Event Handlers ************************/ @@ -92500,13 +96699,13 @@ converse.plugins.add('converse-chatboxviews', { insertInto(container) { var _converse$chatboxview; - const el = (_converse$chatboxview = converse_core_converse.chatboxviews) === null || _converse$chatboxview === void 0 ? void 0 : _converse$chatboxview.el; + const el = (_converse$chatboxview = core_converse.chatboxviews) === null || _converse$chatboxview === void 0 ? void 0 : _converse$chatboxview.el; if (el && !container.contains(el)) { container.insertAdjacentElement('afterBegin', el); - converse_core_api.chatviews.get().filter(v => v.model.get('id') !== 'controlbox').forEach(v => v.maintainScrollTop()); + core_api.chatviews.get().filter(v => v.model.get('id') !== 'controlbox').forEach(v => v.maintainScrollTop()); } else if (!el) { - throw new Error("Cannot insert non-existing #conversejs element into the DOM"); + throw new Error('Cannot insert non-existing #conversejs element into the DOM'); } } @@ -92514,253 +96713,469 @@ converse.plugins.add('converse-chatboxviews', { } }); -// CONCATENATED MODULE: ./src/templates/chatbox.js -function chatbox_templateObject() { - const data = chatbox_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head chat-head-chatbox row no-gutters\"></div>\n <div class=\"chat-body\">\n <div class=\"chat-content ", "\" aria-live=\"polite\">\n <div class=\"chat-content__messages\" @scroll=", "></div>\n <div class=\"chat-content__help\"></div>\n </div>\n <div class=\"bottom-panel\">\n <div class=\"message-form-container\">\n </div>\n </div>\n </div>\n"]); +// CONCATENATED MODULE: ./src/modals/templates/alert.js +function alert_templateObject2() { + const data = templates_alert_taggedTemplateLiteral(["<p>", "</p>"]); - chatbox_templateObject = function _templateObject() { + alert_templateObject2 = function () { return data; }; return data; } -function chatbox_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - +function templates_alert_templateObject() { + const data = templates_alert_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header ", "\">\n <h5 class=\"modal-title\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n ", "\n </div>\n </div>\n </div>\n"]); -/* harmony default export */ var templates_chatbox = (o => lit_html_html(chatbox_templateObject(), o.show_send_button ? 'chat-content-sendbutton' : '', o.markScrolled)); -// CONCATENATED MODULE: ./src/templates/chatbox_head.js -function chatbox_head_templateObject6() { - const data = chatbox_head_taggedTemplateLiteral(["<p class=\"chat-head__desc\">", "</p>"]); - - chatbox_head_templateObject6 = function _templateObject6() { + templates_alert_templateObject = function () { return data; }; return data; } -function chatbox_head_templateObject5() { - const data = chatbox_head_taggedTemplateLiteral(["<converse-dropdown .items=", "></converse-dropdown>"]); +function templates_alert_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - chatbox_head_templateObject5 = function _templateObject5() { - return data; - }; - return data; -} -function chatbox_head_templateObject4() { - const data = chatbox_head_taggedTemplateLiteral(["<a href=\"", "\" target=\"_blank\" rel=\"noopener\" class=\"user\">", "</a>"]); +/* harmony default export */ var modals_templates_alert = (o => lit_html_html(templates_alert_templateObject(), o.level, o.title, modal_header_close_button, o.messages.map(message => lit_html_html(alert_templateObject2(), message)))); +// CONCATENATED MODULE: ./src/modals/alert.js - chatbox_head_templateObject4 = function _templateObject4() { - return data; - }; - return data; -} -function chatbox_head_templateObject3() { - const data = chatbox_head_taggedTemplateLiteral(["<span class=\"mr-2\">", "</span>"]); +const Alert = modals_base.extend({ + id: 'alert-modal', + + initialize() { + modals_base.prototype.initialize.apply(this, arguments); + this.listenTo(this.model, 'change', this.render); + }, + + toHTML() { + return modals_templates_alert(Object.assign({ + __: i18n_ + }, this.model.toJSON())); + } + +}); +/* harmony default export */ var modals_alert = (Alert); +// CONCATENATED MODULE: ./src/modals/templates/prompt.js +function prompt_templateObject3() { + const data = prompt_taggedTemplateLiteral(["<p>", "</p>"]); - chatbox_head_templateObject3 = function _templateObject3() { + prompt_templateObject3 = function () { return data; }; return data; } -function chatbox_head_templateObject2() { - const data = chatbox_head_taggedTemplateLiteral(["<div class=\"chatbox-navback\"><i class=\"fa fa-arrow-left\"></i></div>"]); +function prompt_templateObject2() { + const data = prompt_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header ", "\">\n <h5 class=\"modal-title\">", "</h5>\n <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">\xD7</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form converse-form--modal confirm\" action=\"#\">\n <div class=\"form-group\">\n ", "\n </div>\n ", "\n <div class=\"form-group\">\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n <input type=\"button\" class=\"btn btn-secondary\" data-dismiss=\"modal\" value=\"", "\"/>\n </div>\n </form>\n </div>\n </div>\n </div>\n"]); - chatbox_head_templateObject2 = function _templateObject2() { + prompt_templateObject2 = function () { return data; }; return data; } -function chatbox_head_templateObject() { - const data = chatbox_head_taggedTemplateLiteral(["\n <div class=\"chatbox-title ", "\">\n <div class=\"chatbox-title--row\">\n ", "\n ", "\n <div class=\"chatbox-title__text\" title=\"", "\">\n ", "\n </div>\n </div>\n <div class=\"chatbox-title__buttons row no-gutters\">\n ", "\n ", "\n </div>\n </div>\n ", "\n "]); +function prompt_templateObject() { + const data = prompt_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label>\n ", "\n <input type=\"text\"\n name=\"", "\"\n class=\"", " form-control form-control--labeled\"\n ?required=\"", "\"\n placeholder=\"", "\" />\n </label>\n </div>\n"]); - chatbox_head_templateObject = function _templateObject() { + prompt_templateObject = function () { return data; }; return data; } -function chatbox_head_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function prompt_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +const tpl_field = f => lit_html_html(prompt_templateObject(), f.label || '', f.name, f.challenge_failed ? 'error' : '', f.required, f.placeholder); -/* harmony default export */ var chatbox_head = (o => { - const i18n_profile = i18n_('The User\'s Profile Image'); +/* harmony default export */ var templates_prompt = (o => lit_html_html(prompt_templateObject2(), o.level || '', o.title, o.messages.map(message => lit_html_html(prompt_templateObject3(), message)), o.fields.map(f => tpl_field(f)), i18n_('OK'), i18n_('Cancel'))); +// CONCATENATED MODULE: ./src/modals/confirm.js - const avatar_data = { - 'alt_text': i18n_profile, - 'extra_classes': '', - 'height': 40, - 'width': 40 - }; - const tpl_standalone_btns = o => o.standalone_btns.reverse().map(b => until(b, '')); - return lit_html_html(chatbox_head_templateObject(), o.status ? '' : "chatbox-title--no-desc", !o._converse.api.settings.get("singleton") ? lit_html_html(chatbox_head_templateObject2()) : '', o.type !== o._converse.HEADLINES_TYPE ? lit_html_html(chatbox_head_templateObject3(), avatar(Object.assign({}, o, avatar_data))) : '', o.jid, o.url ? lit_html_html(chatbox_head_templateObject4(), o.url, o.display_name) : o.display_name, o.dropdown_btns.length ? lit_html_html(chatbox_head_templateObject5(), o.dropdown_btns) : '', o.standalone_btns.length ? tpl_standalone_btns(o) : '', o.status ? lit_html_html(chatbox_head_templateObject6(), o.status) : ''); +const confirm_u = converse.env.utils; +const Confirm = modals_base.extend({ + id: 'confirm-modal', + events: { + 'submit .confirm': 'onConfimation' + }, + + initialize() { + this.confirmation = confirm_u.getResolveablePromise(); + modals_base.prototype.initialize.apply(this, arguments); + this.listenTo(this.model, 'change', this.render); + this.el.addEventListener('closed.bs.modal', () => this.confirmation.reject(), false); + }, + + toHTML() { + return templates_prompt(this.model.toJSON()); + }, + + afterRender() { + if (!this.close_handler_registered) { + this.el.addEventListener('closed.bs.modal', () => { + if (!this.confirmation.isResolved) { + this.confirmation.reject(); + } + }, false); + this.close_handler_registered = true; + } + }, + + onConfimation(ev) { + ev.preventDefault(); + const form_data = new FormData(ev.target); + const fields = (this.model.get('fields') || []).map(field => { + const value = form_data.get(field.name).trim(); + field.value = value; + + if (field.challenge) { + field.challenge_failed = value !== field.challenge; + } + + return field; + }); + + if (fields.filter(c => c.challenge_failed).length) { + this.model.set('fields', fields); // Setting an array doesn't trigger a change event + + this.model.trigger('change'); + return; + } + + this.confirmation.resolve(fields); + this.modal.hide(); + } + }); -// CONCATENATED MODULE: ./src/templates/chatbox_message_form.js -function chatbox_message_form_templateObject() { - const data = chatbox_message_form_taggedTemplateLiteral(["\n <div class=\"new-msgs-indicator hidden\">\u25BC ", " \u25BC</div>\n <form class=\"setNicknameButtonForm hidden\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"Join\"/>\n </form>\n <form class=\"sendXMPPMessage\">\n <span class=\"chat-toolbar no-text-select\"></span>\n <input type=\"text\" placeholder=\"", "\" value=\"", "\" class=\"", " spoiler-hint\"/>\n\n <div class=\"suggestion-box\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <textarea\n type=\"text\"\n class=\"chat-textarea suggestion-box__input\n ", "\n ", "\"\n placeholder=\"", "\">", "</textarea>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </form>\n"]); +/* harmony default export */ var modals_confirm = (Confirm); +// CONCATENATED MODULE: ./src/plugins/modal.js +/** + * @module converse-modal + * @copyright The Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ - chatbox_message_form_templateObject = function _templateObject() { - return data; - }; - return data; -} -function chatbox_message_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var chatbox_message_form = (o => lit_html_html(chatbox_message_form_templateObject(), o.unread_msgs, o.label_spoiler_hint || '', o.hint_value || '', o.composing_spoiler ? '' : 'hidden', o.show_send_button ? 'chat-textarea-send-button' : '', o.composing_spoile ? 'spoiler' : '', o.label_message, o.message_value || '')); -// CONCATENATED MODULE: ./src/templates/toolbar.js -function templates_toolbar_templateObject() { - const data = templates_toolbar_taggedTemplateLiteral(["\n <converse-chat-toolbar\n .chatview=", "\n .model=", "\n ?composing_spoiler=\"", "\"\n ?hidden_occupants=\"", "\"\n ?is_groupchat=\"", "\"\n ?show_call_button=\"", "\"\n ?show_emoji_button=\"", "\"\n ?show_occupants_toggle=\"", "\"\n ?show_send_button=\"", "\"\n ?show_spoiler_button=\"", "\"\n ?show_toolbar=\"", "\"\n message_limit=\"", "\"\n ></converse-chat-toolbar>\n "]); +converse.env.BootstrapModal = modals_base; // expose to plugins - templates_toolbar_templateObject = function _templateObject() { - return data; - }; +let modals = []; +const modal_api = { + /** + * API namespace for methods relating to modals + * @namespace _converse.api.modal + * @memberOf _converse.api + */ + modal: { + /** + * Shows a modal of type `ModalClass` to the user. + * Will create a new instance of that class if an existing one isn't + * found. + * @param { Class } ModalClass + * @param { Object } [properties] - Optional properties that will be + * set on a newly created modal instance (if no pre-existing modal was + * found). + * @param { Event } [event] - The DOM event that causes the modal to be shown. + */ + show(ModalClass, properties, ev) { + const modal = this.get(ModalClass.id) || this.create(ModalClass, properties); + modal.show(ev); + return modal; + }, - return data; -} + /** + * Return a modal with the passed-in identifier, if it exists. + * @param { String } id + */ + get(id) { + return modals.filter(m => m.id == id).pop(); + }, -function templates_toolbar_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + /** + * Create a modal of the passed-in type. + * @param { Class } ModalClass + * @param { Object } [properties] - Optional properties that will be + * set on the modal instance. + */ + create(ModalClass, properties) { + const modal = new ModalClass(properties); + modals.push(modal); + return modal; + }, + /** + * Remove a particular modal + * @param { View } modal + */ + remove(modal) { + modals = modals.filter(m => m !== modal); + modal.remove(); + }, + /** + * Remove all modals + */ + removeAll() { + modals.forEach(m => m.remove()); + modals = []; + } + + }, + + /** + * Show a confirm modal to the user. + * @method _converse.api.confirm + * @param { String } title - The header text for the confirmation dialog + * @param { (String[]|String) } messages - The text to show to the user + * @param { Array<Field> } fields - An object representing a fields presented to the user. + * @property { String } Field.label - The form label for the input field. + * @property { String } Field.name - The name for the input field. + * @property { String } [Field.challenge] - A challenge value that must be provided by the user. + * @property { String } [Field.placeholder] - The placeholder for the input field. + * @property { Boolean} [Field.required] - Whether the field is required or not + * @returns { Promise<Array|false> } A promise which resolves with an array of + * filled in fields or `false` if the confirm dialog was closed or canceled. + */ + async confirm(title, messages = [], fields = []) { + if (typeof messages === 'string') { + messages = [messages]; + } + + const model = new model_Model({ + title, + messages, + fields, + 'type': 'confirm' + }); + const confirm = new modals_confirm({ + model + }); + confirm.show(); + let result; + + try { + result = await confirm.confirmation; + } catch (e) { + result = false; + } + + confirm.remove(); + return result; + }, + + /** + * Show a prompt modal to the user. + * @method _converse.api.prompt + * @param { String } title - The header text for the prompt + * @param { (String[]|String) } messages - The prompt text to show to the user + * @param { String } placeholder - The placeholder text for the prompt input + * @returns { Promise<String|false> } A promise which resolves with the text provided by the + * user or `false` if the user canceled the prompt. + */ + async prompt(title, messages = [], placeholder = '') { + if (typeof messages === 'string') { + messages = [messages]; + } + + const model = new model_Model({ + title, + messages, + 'fields': [{ + 'name': 'reason', + 'placeholder': placeholder + }], + 'type': 'prompt' + }); + const prompt = new modals_confirm({ + model + }); + prompt.show(); + let result; + + try { + var _await$prompt$confirm; + + result = (_await$prompt$confirm = (await prompt.confirmation).pop()) === null || _await$prompt$confirm === void 0 ? void 0 : _await$prompt$confirm.value; + } catch (e) { + result = false; + } + + prompt.remove(); + return result; + }, + + /** + * Show an alert modal to the user. + * @method _converse.api.alert + * @param { ('info'|'warn'|'error') } type - The type of alert. + * @param { String } title - The header text for the alert. + * @param { (String[]|String) } messages - The alert text to show to the user. + */ + alert(type, title, messages) { + if (typeof messages === 'string') { + messages = [messages]; + } + + let level; + + if (type === 'error') { + level = 'alert-danger'; + } else if (type === 'info') { + level = 'alert-info'; + } else if (type === 'warn') { + level = 'alert-warning'; + } + + const model = new model_Model({ + 'title': title, + 'messages': messages, + 'level': level, + 'type': 'alert' + }); + core_api.modal.show(modals_alert, { + model + }); + } + +}; +converse.plugins.add('converse-modal', { + initialize() { + core_api.listen.on('disconnect', () => { + const container = document.querySelector("#converse-modals"); + + if (container) { + container.innerHTML = ''; + } + }); + core_api.listen.on('clearSession', () => core_api.modal.removeAll()); + Object.assign(core_converse.api, modal_api); + } -/* harmony default export */ var toolbar = (o => { - const message_limit = converse_core_api.settings.get('message_limit'); - const show_call_button = converse_core_api.settings.get('visible_toolbar_buttons').call; - const show_emoji_button = converse_core_api.settings.get('visible_toolbar_buttons').emoji; - const show_send_button = converse_core_api.settings.get('show_send_button'); - const show_spoiler_button = converse_core_api.settings.get('visible_toolbar_buttons').spoiler; - const show_toolbar = converse_core_api.settings.get('show_toolbar'); - return lit_html_html(templates_toolbar_templateObject(), o.chatview, o.model, o.composing_spoiler, o.hidden_occupants, o.is_groupchat, show_call_button, show_emoji_button, o.show_occupants_toggle, show_send_button, show_spoiler_button, show_toolbar, message_limit); }); -// CONCATENATED MODULE: ./src/templates/user_details_modal.js -function user_details_modal_templateObject11() { - const data = user_details_modal_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); +// CONCATENATED MODULE: ./src/modals/templates/user-details.js +function user_details_templateObject11() { + const data = user_details_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); - user_details_modal_templateObject11 = function _templateObject11() { + user_details_templateObject11 = function () { return data; }; return data; } -function user_details_modal_templateObject10() { - const data = user_details_modal_taggedTemplateLiteral(["<p><label>", ":</label> <a href=\"mailto:", "\">", "</a></p>"]); +function user_details_templateObject10() { + const data = user_details_taggedTemplateLiteral(["<p><label>", ":</label> <a href=\"mailto:", "\">", "</a></p>"]); - user_details_modal_templateObject10 = function _templateObject10() { + user_details_templateObject10 = function () { return data; }; return data; } -function user_details_modal_templateObject9() { - const data = user_details_modal_taggedTemplateLiteral(["<p><label>", ":</label> <a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a></p>"]); +function user_details_templateObject9() { + const data = user_details_taggedTemplateLiteral(["<p><label>", ":</label> <a target=\"_blank\" rel=\"noopener\" href=\"", "\">", "</a></p>"]); - user_details_modal_templateObject9 = function _templateObject9() { + user_details_templateObject9 = function () { return data; }; return data; } -function user_details_modal_templateObject8() { - const data = user_details_modal_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); +function user_details_templateObject8() { + const data = user_details_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); - user_details_modal_templateObject8 = function _templateObject8() { + user_details_templateObject8 = function () { return data; }; return data; } -function user_details_modal_templateObject7() { - const data = user_details_modal_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); +function user_details_templateObject7() { + const data = user_details_taggedTemplateLiteral(["<p><label>", ":</label> ", "</p>"]); - user_details_modal_templateObject7 = function _templateObject7() { + user_details_templateObject7 = function () { return data; }; return data; } -function user_details_modal_templateObject6() { - const data = user_details_modal_taggedTemplateLiteral(["<div class=\"mb-4\">", "</div>"]); +function user_details_templateObject6() { + const data = user_details_taggedTemplateLiteral(["<div class=\"mb-4\">", "</div>"]); - user_details_modal_templateObject6 = function _templateObject6() { + user_details_templateObject6 = function () { return data; }; return data; } -function user_details_modal_templateObject5() { - const data = user_details_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"user-details-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n ", "\n ", "\n <p><label>", ":</label> <a href=\"xmpp:", "\">", "</a></p>\n ", "\n ", "\n ", "\n ", "\n\n ", "\n </div>\n <div class=\"modal-footer\">\n ", "\n <button type=\"button\" class=\"btn btn-info refresh-contact\"><i class=\"fa fa-refresh\"> </i>", "</button>\n ", "\n\n </div>\n </div>\n </div>\n "]); +function user_details_templateObject5() { + const data = user_details_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"user-details-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n ", "\n ", "\n <p><label>", ":</label> <a href=\"xmpp:", "\">", "</a></p>\n ", "\n ", "\n ", "\n ", "\n\n ", "\n </div>\n <div class=\"modal-footer\">\n ", "\n <button type=\"button\" class=\"btn btn-info refresh-contact\"><i class=\"fa fa-refresh\"> </i>", "</button>\n ", "\n\n </div>\n </div>\n </div>\n "]); - user_details_modal_templateObject5 = function _templateObject5() { + user_details_templateObject5 = function () { return data; }; return data; } -function user_details_modal_templateObject4() { - const data = user_details_modal_taggedTemplateLiteral(["\n <button type=\"button\" @click=\"", "\" class=\"btn btn-danger remove-contact\">\n <i class=\"far fa-trash-alt\"></i>", "\n </button>\n "]); +function user_details_templateObject4() { + const data = user_details_taggedTemplateLiteral(["\n <button type=\"button\" @click=\"", "\" class=\"btn btn-danger remove-contact\">\n <i class=\"far fa-trash-alt\"></i>", "\n </button>\n "]); - user_details_modal_templateObject4 = function _templateObject4() { + user_details_templateObject4 = function () { return data; }; return data; } -function user_details_modal_templateObject3() { - const data = user_details_modal_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); +function user_details_templateObject3() { + const data = user_details_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); - user_details_modal_templateObject3 = function _templateObject3() { + user_details_templateObject3 = function () { return data; }; return data; } -function user_details_modal_templateObject2() { - const data = user_details_modal_taggedTemplateLiteral(["\n <hr/>\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item active\">", "</li>\n ", "\n </ul>\n "]); +function user_details_templateObject2() { + const data = user_details_taggedTemplateLiteral(["\n <hr/>\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item active\">", "</li>\n ", "\n </ul>\n "]); - user_details_modal_templateObject2 = function _templateObject2() { + user_details_templateObject2 = function () { return data; }; return data; } -function user_details_modal_templateObject() { - const data = user_details_modal_taggedTemplateLiteral(["\n <li class=\"list-group-item\">\n <form class=\"fingerprint-trust\">\n <div class=\"btn-group btn-group-toggle\">\n <label class=\"btn btn--small ", "\">\n <input type=\"radio\" name=\"", "\" value=\"1\" ?checked=", ">", "\n </label>\n <label class=\"btn btn--small ", "\">\n <input type=\"radio\" name=\"", "\" value=\"-1\" ?checked=", ">", "\n </label>\n </div>\n <code class=\"fingerprint\">", "</code>\n </form>\n </li>\n "]); +function user_details_templateObject() { + const data = user_details_taggedTemplateLiteral(["\n <li class=\"list-group-item\">\n <form class=\"fingerprint-trust\">\n <div class=\"btn-group btn-group-toggle\">\n <label class=\"btn btn--small ", "\">\n <input type=\"radio\" name=\"", "\" value=\"1\" ?checked=", ">", "\n </label>\n <label class=\"btn btn--small ", "\">\n <input type=\"radio\" name=\"", "\" value=\"-1\" ?checked=", ">", "\n </label>\n </div>\n <code class=\"fingerprint\">", "</code>\n </form>\n </li>\n "]); - user_details_modal_templateObject = function _templateObject() { + user_details_templateObject = function () { return data; }; return data; } -function user_details_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function user_details_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } @@ -92773,7 +97188,7 @@ const device_fingerprint = o => { const i18n_untrusted = i18n_('Untrusted'); if (o.device.get('bundle') && o.device.get('bundle').fingerprint) { - return lit_html_html(user_details_modal_templateObject(), o.device.get('trusted') !== -1 ? 'btn-primary active' : 'btn-secondary', o.device.get('id'), o.device.get('trusted') !== -1, i18n_trusted, o.device.get('trusted') !== -1 ? 'btn-primary active' : 'btn-secondary', o.device.get('id'), o.device.get('trusted') === -1, i18n_untrusted, o.utils.formatFingerprint(o.device.get('bundle').fingerprint)); + return lit_html_html(user_details_templateObject(), o.device.get('trusted') !== -1 ? 'btn-primary active' : 'btn-secondary', o.device.get('id'), o.device.get('trusted') !== -1, i18n_trusted, o.device.get('trusted') !== -1 ? 'btn-primary active' : 'btn-secondary', o.device.get('id'), o.device.get('trusted') === -1, i18n_untrusted, o.utils.formatFingerprint(o.device.get('bundle').fingerprint)); } else { return ''; } @@ -92785,18 +97200,18 @@ const fingerprints = o => { const i18n_no_devices = i18n_("No OMEMO-enabled devices found"); const devices = o.view.devicelist.devices; - return lit_html_html(user_details_modal_templateObject2(), i18n_fingerprints, devices.length ? devices.map(device => device_fingerprint(Object.assign({ + return lit_html_html(user_details_templateObject2(), i18n_fingerprints, devices.length ? devices.map(device => device_fingerprint(Object.assign({ device - }, o))) : lit_html_html(user_details_modal_templateObject3(), i18n_no_devices)); + }, o))) : lit_html_html(user_details_templateObject3(), i18n_no_devices)); }; const remove_button = o => { const i18n_remove_contact = i18n_('Remove as contact'); - return lit_html_html(user_details_modal_templateObject4(), o.removeContact, i18n_remove_contact); + return lit_html_html(user_details_templateObject4(), o.removeContact, i18n_remove_contact); }; -/* harmony default export */ var user_details_modal = (o => { +/* harmony default export */ var user_details = (o => { const i18n_address = i18n_('XMPP Address'); const i18n_email = i18n_('Email'); @@ -92819,79 +97234,310 @@ const remove_button = o => { 'height': '120', 'width': '120' }; - return lit_html_html(user_details_modal_templateObject5(), o.display_name, modal_header_close_button, o.image ? lit_html_html(user_details_modal_templateObject6(), avatar(Object.assign(o, avatar_data))) : '', o.fullname ? lit_html_html(user_details_modal_templateObject7(), i18n_full_name, o.fullname) : '', i18n_address, o.jid, o.jid, o.nickname ? lit_html_html(user_details_modal_templateObject8(), i18n_nickname, o.nickname) : '', o.url ? lit_html_html(user_details_modal_templateObject9(), i18n_url, o.url, o.url) : '', o.email ? lit_html_html(user_details_modal_templateObject10(), i18n_email, o.email, o.email) : '', o.role ? lit_html_html(user_details_modal_templateObject11(), i18n_role, o.role) : '', o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse) ? fingerprints(o) : '', modal_close_button, i18n_refresh, o.allow_contact_removal && o.is_roster_contact ? remove_button(o) : ''); + return lit_html_html(user_details_templateObject5(), o.display_name, modal_header_close_button, o.image ? lit_html_html(user_details_templateObject6(), templates_avatar(Object.assign(o, avatar_data))) : '', o.fullname ? lit_html_html(user_details_templateObject7(), i18n_full_name, o.fullname) : '', i18n_address, o.jid, o.jid, o.nickname ? lit_html_html(user_details_templateObject8(), i18n_nickname, o.nickname) : '', o.url ? lit_html_html(user_details_templateObject9(), i18n_url, o.url, o.url) : '', o.email ? lit_html_html(user_details_templateObject10(), i18n_email, o.email, o.email) : '', o.role ? lit_html_html(user_details_templateObject11(), i18n_role, o.role) : '', o._converse.pluggable.plugins['converse-omemo'].enabled(o._converse) ? fingerprints(o) : '', modal_close_button, i18n_refresh, o.allow_contact_removal && o.is_roster_contact ? remove_button(o) : ''); }); -// CONCATENATED MODULE: ./src/converse-chatview.js -function converse_chatview_templateObject4() { - const data = converse_chatview_taggedTemplateLiteral(["<a href=\"#\"\n class=\"dropdown-item ", "\"\n @click=", "\n title=\"", "\"><i class=\"fa ", "\"></i>", "</a>"]); +// CONCATENATED MODULE: ./src/modals/user-details.js - converse_chatview_templateObject4 = function _templateObject4() { + + + + +const user_details_u = converse.env.utils; + +function removeContact(contact) { + contact.removeFromRoster(() => contact.destroy(), e => { + e && headless_log.error(e); + core_api.alert('error', i18n_('Error'), [i18n_('Sorry, there was an error while trying to remove %1$s as a contact.', contact.getDisplayName())]); + }); +} + +const UserDetailsModal = modals_base.extend({ + id: 'user-details-modal', + persistent: true, + events: { + 'click button.refresh-contact': 'refreshContact', + 'click .fingerprint-trust .btn input': 'toggleDeviceTrust' + }, + + initialize() { + modals_base.prototype.initialize.apply(this, arguments); + this.model.rosterContactAdded.then(() => this.registerContactEventHandlers()); + this.listenTo(this.model, 'change', this.render); + this.registerContactEventHandlers(); + /** + * Triggered once the UserDetailsModal has been initialized + * @event _converse#userDetailsModalInitialized + * @type { _converse.ChatBox } + * @example _converse.api.listen.on('userDetailsModalInitialized', chatbox => { ... }); + */ + + core_api.trigger('userDetailsModalInitialized', this.model); + }, + + toHTML() { + var _this$model; + + const vcard = (_this$model = this.model) === null || _this$model === void 0 ? void 0 : _this$model.vcard; + const vcard_json = vcard ? vcard.toJSON() : {}; + return user_details(Object.assign(this.model.toJSON(), vcard_json, { + '_converse': core_converse, + 'allow_contact_removal': core_api.settings.get('allow_contact_removal'), + 'display_name': this.model.getDisplayName(), + 'is_roster_contact': this.model.contact !== undefined, + 'removeContact': ev => this.removeContact(ev), + 'view': this, + 'utils': user_details_u + })); + }, + + registerContactEventHandlers() { + if (this.model.contact !== undefined) { + this.listenTo(this.model.contact, 'change', this.render); + this.listenTo(this.model.contact.vcard, 'change', this.render); + this.model.contact.on('destroy', () => { + delete this.model.contact; + this.render(); + }); + } + }, + + async refreshContact(ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + } + + const refresh_icon = this.el.querySelector('.fa-refresh'); + user_details_u.addClass('fa-spin', refresh_icon); + + try { + await core_api.vcard.update(this.model.contact.vcard, true); + } catch (e) { + headless_log.fatal(e); + this.alert(i18n_('Sorry, something went wrong while trying to refresh'), 'danger'); + } + + user_details_u.removeClass('fa-spin', refresh_icon); + }, + + removeContact(ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + } + + if (!core_api.settings.get('allow_contact_removal')) { + return; + } + + const result = confirm(i18n_("Are you sure you want to remove this contact?")); + + if (result === true) { + // XXX: The `dismissHandler` in bootstrap.native tries to + // reference the remove button after it's been cleared from + // the DOM, so we delay removing the contact to give it time. + setTimeout(() => removeContact(this.model.contact), 1); + this.modal.hide(); + } + } + +}); +core_converse.UserDetailsModal = UserDetailsModal; +/* harmony default export */ var modals_user_details = (UserDetailsModal); +// CONCATENATED MODULE: ./src/templates/chatbox.js +function chatbox_templateObject() { + const data = chatbox_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head chat-head-chatbox row no-gutters\"></div>\n <div class=\"chat-body\">\n <div class=\"chat-content ", "\" aria-live=\"polite\">\n <div class=\"chat-content__messages\" @scroll=", "></div>\n <div class=\"chat-content__help\"></div>\n </div>\n <div class=\"bottom-panel\">\n <div class=\"message-form-container\">\n </div>\n </div>\n </div>\n"]); + + chatbox_templateObject = function () { + return data; + }; + + return data; +} + +function chatbox_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + +/* harmony default export */ var templates_chatbox = (o => lit_html_html(chatbox_templateObject(), o.show_send_button ? 'chat-content-sendbutton' : '', o.markScrolled)); +// CONCATENATED MODULE: ./src/templates/chatbox_head.js +function chatbox_head_templateObject7() { + const data = chatbox_head_taggedTemplateLiteral(["<p class=\"chat-head__desc\">", "</p>"]); + + chatbox_head_templateObject7 = function () { return data; }; return data; } -function converse_chatview_templateObject3() { - const data = converse_chatview_taggedTemplateLiteral(["<a href=\"#\"\n class=\"chatbox-btn ", " fa ", "\"\n @click=", "\n title=\"", "\"></a>"]); +function chatbox_head_templateObject6() { + const data = chatbox_head_taggedTemplateLiteral(["<converse-dropdown .items=", "></converse-dropdown>"]); - converse_chatview_templateObject3 = function _templateObject3() { + chatbox_head_templateObject6 = function () { return data; }; return data; } -function converse_chatview_templateObject2() { - const data = converse_chatview_taggedTemplateLiteral(["\n <converse-chat-content\n .chatview=", "\n .messages=", "\n notifications=", ">\n </converse-chat-content>"]); +function chatbox_head_templateObject5() { + const data = chatbox_head_taggedTemplateLiteral(["<a class=\"user show-msg-author-modal\" @click=", ">", "</a>"]); - converse_chatview_templateObject2 = function _templateObject2() { + chatbox_head_templateObject5 = function () { return data; }; return data; } -function converse_chatview_templateObject() { - const data = converse_chatview_taggedTemplateLiteral(["<converse-chat-help\n .model=", "\n .messages=", "\n ?hidden=", "\n type=\"info\"\n chat_type=\"", "\"></converse-chat-help>"]); +function chatbox_head_templateObject4() { + const data = chatbox_head_taggedTemplateLiteral(["<a class=\"show-msg-author-modal\" @click=", ">", "</a>"]); - converse_chatview_templateObject = function _templateObject() { + chatbox_head_templateObject4 = function () { return data; }; return data; } -function converse_chatview_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function chatbox_head_templateObject3() { + const data = chatbox_head_taggedTemplateLiteral(["<div class=\"chatbox-navback\"><i class=\"fa fa-arrow-left\"></i></div>"]); -/** - * @module converse-chatview - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - */ + chatbox_head_templateObject3 = function () { + return data; + }; + + return data; +} + +function chatbox_head_templateObject2() { + const data = chatbox_head_taggedTemplateLiteral(["\n <div class=\"chatbox-title ", "\">\n <div class=\"chatbox-title--row\">\n ", "\n ", "\n <div class=\"chatbox-title__text\" title=\"", "\">\n ", "\n </div>\n </div>\n <div class=\"chatbox-title__buttons row no-gutters\">\n ", "\n ", "\n </div>\n </div>\n ", "\n "]); + + chatbox_head_templateObject2 = function () { + return data; + }; + + return data; +} + +function chatbox_head_templateObject() { + const data = chatbox_head_taggedTemplateLiteral(["<span class=\"mr-2\">", "</span>"]); + chatbox_head_templateObject = function () { + return data; + }; + return data; +} +function chatbox_head_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +/* harmony default export */ var chatbox_head = (o => { + const tpl_standalone_btns = o => o.standalone_btns.reverse().map(b => until(b, '')); + const avatar = lit_html_html(chatbox_head_templateObject(), renderAvatar(o.avatar_data)); + return lit_html_html(chatbox_head_templateObject2(), o.status ? '' : "chatbox-title--no-desc", !core_converse.api.settings.get("singleton") ? lit_html_html(chatbox_head_templateObject3()) : '', o.type !== core_converse.HEADLINES_TYPE ? lit_html_html(chatbox_head_templateObject4(), o.showUserDetailsModal, avatar) : '', o.jid, o.type !== core_converse.HEADLINES_TYPE ? lit_html_html(chatbox_head_templateObject5(), o.showUserDetailsModal, o.display_name) : o.display_name, o.dropdown_btns.length ? lit_html_html(chatbox_head_templateObject6(), o.dropdown_btns) : '', o.standalone_btns.length ? tpl_standalone_btns(o) : '', o.status ? lit_html_html(chatbox_head_templateObject7(), o.status) : ''); +}); +// CONCATENATED MODULE: ./src/templates/chatbox_message_form.js +function chatbox_message_form_templateObject() { + const data = chatbox_message_form_taggedTemplateLiteral(["\n <div class=\"new-msgs-indicator hidden\">\u25BC ", " \u25BC</div>\n <form class=\"setNicknameButtonForm hidden\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"Join\"/>\n </form>\n <form class=\"sendXMPPMessage\">\n <span class=\"chat-toolbar no-text-select\"></span>\n <input type=\"text\" placeholder=\"", "\" value=\"", "\" class=\"", " spoiler-hint\"/>\n\n <div class=\"suggestion-box\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <textarea\n type=\"text\"\n class=\"chat-textarea suggestion-box__input\n ", "\n ", "\"\n placeholder=\"", "\">", "</textarea>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </form>\n"]); + chatbox_message_form_templateObject = function () { + return data; + }; + return data; +} +function chatbox_message_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + +/* harmony default export */ var chatbox_message_form = (o => lit_html_html(chatbox_message_form_templateObject(), o.unread_msgs, o.label_spoiler_hint || '', o.hint_value || '', o.composing_spoiler ? '' : 'hidden', o.show_send_button ? 'chat-textarea-send-button' : '', o.composing_spoile ? 'spoiler' : '', o.label_message, o.message_value || '')); +// CONCATENATED MODULE: ./src/templates/toolbar.js +function templates_toolbar_templateObject() { + const data = templates_toolbar_taggedTemplateLiteral(["\n <converse-chat-toolbar\n .chatview=", "\n .model=", "\n ?composing_spoiler=\"", "\"\n ?hidden_occupants=\"", "\"\n ?is_groupchat=\"", "\"\n ?show_call_button=\"", "\"\n ?show_emoji_button=\"", "\"\n ?show_occupants_toggle=\"", "\"\n ?show_send_button=\"", "\"\n ?show_spoiler_button=\"", "\"\n ?show_toolbar=\"", "\"\n message_limit=\"", "\"\n ></converse-chat-toolbar>\n "]); + + templates_toolbar_templateObject = function () { + return data; + }; + return data; +} +function templates_toolbar_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +/* harmony default export */ var toolbar = (o => { + const message_limit = core_api.settings.get('message_limit'); + const show_call_button = core_api.settings.get('visible_toolbar_buttons').call; + const show_emoji_button = core_api.settings.get('visible_toolbar_buttons').emoji; + const show_send_button = core_api.settings.get('show_send_button'); + const show_spoiler_button = core_api.settings.get('visible_toolbar_buttons').spoiler; + const show_toolbar = core_api.settings.get('show_toolbar'); + return lit_html_html(templates_toolbar_templateObject(), o.chatview, o.model, o.composing_spoiler, o.hidden_occupants, o.is_groupchat, show_call_button, show_emoji_button, o.show_occupants_toggle, show_send_button, show_spoiler_button, show_toolbar, message_limit); +}); +// CONCATENATED MODULE: ./src/plugins/chatview/view.js +function view_templateObject4() { + const data = view_taggedTemplateLiteral(["\n <a href=\"#\" class=\"dropdown-item ", "\" @click=", " title=\"", "\"\n ><i class=\"fa ", "\"></i>", "</a\n >\n "]); + view_templateObject4 = function () { + return data; + }; + + return data; +} + +function view_templateObject3() { + const data = view_taggedTemplateLiteral(["\n <a\n href=\"#\"\n class=\"chatbox-btn ", " fa ", "\"\n @click=", "\n title=\"", "\"\n ></a>\n "]); + + view_templateObject3 = function () { + return data; + }; + + return data; +} + +function view_templateObject2() { + const data = view_taggedTemplateLiteral(["\n <converse-chat-content .chatview=", " .messages=", " notifications=", ">\n </converse-chat-content>\n "]); + + view_templateObject2 = function () { + return data; + }; + + return data; +} + +function view_templateObject() { + const data = view_taggedTemplateLiteral(["\n <converse-chat-help\n .model=", "\n .messages=", "\n ?hidden=", "\n type=\"info\"\n chat_type=\"", "\"\n ></converse-chat-help>\n "]); + + view_templateObject = function () { + return data; + }; + + return data; +} + +function view_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + + + + + + + + + + +const chatview_view_u = converse.env.utils; const { - Strophe: converse_chatview_Strophe, - dayjs: converse_chatview_dayjs + dayjs: view_dayjs } = converse.env; -const converse_chatview_u = converse.env.utils; /** * The View of an open/ongoing chat conversation. * @class @@ -92899,7 +97545,7 @@ const converse_chatview_u = converse.env.utils; * @memberOf _converse */ -const ChatBoxView = view_View.extend({ +const ChatBoxView = View.extend({ length: 200, className: 'chatbox hidden', is_chatroom: false, @@ -92944,8 +97590,10 @@ const ChatBoxView = view_View.extend({ this.listenTo(this.model.messages, 'reset', this.renderChatHistory); this.listenTo(this.model.notifications, 'change', this.renderNotifications); this.listenTo(this.model, 'change:show_help_messages', this.renderHelpMessages); - await this.updateAfterMessagesFetched(); + await this.model.messages.fetched; + this.insertIntoDOM(); this.model.maybeShow(); + this.scrollDown(); /** * Triggered once the {@link _converse.ChatBoxView} has been initialized * @event _converse#chatBoxViewInitialized @@ -92953,7 +97601,7 @@ const ChatBoxView = view_View.extend({ * @example _converse.api.listen.on('chatBoxViewInitialized', view => { ... }); */ - converse_core_api.trigger('chatBoxViewInitialized', this); + core_api.trigger('chatBoxViewInitialized', this); }, initDebounced() { @@ -92961,7 +97609,7 @@ const ChatBoxView = view_View.extend({ this.debouncedScrollDown = lodash_es_debounce(this.scrollDown, 100); // For tests that use Jasmine.Clock we want to turn of // debouncing, since setTimeout breaks. - if (converse_core_api.settings.get('debounced_content_rendering')) { + if (core_api.settings.get('debounced_content_rendering')) { this.renderChatHistory = lodash_es_debounce(() => this.renderChatContent(false), 100); this.renderNotifications = lodash_es_debounce(() => this.renderChatContent(true), 100); } else { @@ -92989,7 +97637,7 @@ const ChatBoxView = view_View.extend({ onMessageAdded(message) { this.renderChatHistory(); - if (converse_chatview_u.isNewMessage(message)) { + if (chatview_view_u.isNewMessage(message)) { if (message.get('sender') === 'me') { // We remove the "scrolled" flag so that the chat area // gets scrolled down. We always want to scroll down @@ -93003,11 +97651,11 @@ const ChatBoxView = view_View.extend({ }, getNotifications() { - if (this.model.notifications.get('chat_state') === converse_core_converse.COMPOSING) { + if (this.model.notifications.get('chat_state') === core_converse.COMPOSING) { return i18n_('%1$s is typing', this.model.getDisplayName()); - } else if (this.model.notifications.get('chat_state') === converse_core_converse.PAUSED) { + } else if (this.model.notifications.get('chat_state') === core_converse.PAUSED) { return i18n_('%1$s has stopped typing', this.model.getDisplayName()); - } else if (this.model.notifications.get('chat_state') === converse_core_converse.GONE) { + } else if (this.model.notifications.get('chat_state') === core_converse.GONE) { return i18n_('%1$s has gone away', this.model.getDisplayName()); } else { return ''; @@ -93019,13 +97667,13 @@ const ChatBoxView = view_View.extend({ }, renderHelpMessages() { - render_render(lit_html_html(converse_chatview_templateObject(), this.model, this.getHelpMessages(), !this.model.get('show_help_messages'), this.model.get('type')), this.help_container); + render_render(lit_html_html(view_templateObject(), this.model, this.getHelpMessages(), !this.model.get('show_help_messages'), this.model.get('type')), this.help_container); }, renderChatContent(msgs_by_ref = false) { if (!this.tpl_chat_content) { this.tpl_chat_content = o => { - return lit_html_html(converse_chatview_templateObject2(), this, o.messages, o.notifications); + return lit_html_html(view_templateObject2(), this, o.messages, o.notifications); }; } @@ -93038,7 +97686,7 @@ const ChatBoxView = view_View.extend({ }, renderToolbar() { - if (!converse_core_api.settings.get('show_toolbar')) { + if (!core_api.settings.get('show_toolbar')) { return this; } @@ -93054,7 +97702,7 @@ const ChatBoxView = view_View.extend({ * @example _converse.api.listen.on('renderToolbar', view => { ... }); */ - converse_core_api.trigger('renderToolbar', this); + core_api.trigger('renderToolbar', this); return this; }, @@ -93067,8 +97715,8 @@ const ChatBoxView = view_View.extend({ 'label_message': this.model.get('composing_spoiler') ? i18n_('Hidden message') : i18n_('Message'), 'label_spoiler_hint': i18n_('Optional hint'), 'message_value': (_this$el$querySelecto2 = this.el.querySelector('.chat-textarea')) === null || _this$el$querySelecto2 === void 0 ? void 0 : _this$el$querySelecto2.value, - 'show_send_button': converse_core_api.settings.get('show_send_button'), - 'show_toolbar': converse_core_api.settings.get('show_toolbar'), + 'show_send_button': core_api.settings.get('show_send_button'), + 'show_toolbar': core_api.settings.get('show_toolbar'), 'unread_msgs': i18n_('You have unread messages') })), form_container); this.el.addEventListener('focusin', ev => this.emitFocused(ev)); @@ -93077,23 +97725,18 @@ const ChatBoxView = view_View.extend({ }, showControlBox() { - // Used in mobile view, to navigate back to the controlbox - const view = converse_core_converse.chatboxviews.get('controlbox'); + var _converse$chatboxview; - view.show(); + // Used in mobile view, to navigate back to the controlbox + (_converse$chatboxview = core_converse.chatboxviews.get('controlbox')) === null || _converse$chatboxview === void 0 ? void 0 : _converse$chatboxview.show(); this.hide(); }, showUserDetailsModal(ev) { ev.preventDefault(); - - if (this.user_details_modal === undefined) { - this.user_details_modal = new converse_core_converse.UserDetailsModal({ - model: this.model - }); - } - - this.user_details_modal.show(ev); + core_api.modal.show(modals_user_details, { + model: this.model + }, ev); }, onDragOver(evt) { @@ -93118,12 +97761,12 @@ const ChatBoxView = view_View.extend({ async getHeadingStandaloneButton(promise_or_data) { const data = await promise_or_data; - return lit_html_html(converse_chatview_templateObject3(), data.a_class, data.icon_class, data.handler, data.i18n_title); + return lit_html_html(view_templateObject3(), data.a_class, data.icon_class, data.handler, data.i18n_title); }, async getHeadingDropdownItem(promise_or_data) { const data = await promise_or_data; - return lit_html_html(converse_chatview_templateObject4(), data.a_class, data.handler, data.i18n_title, data.icon_class, data.i18n_text); + return lit_html_html(view_templateObject4(), data.a_class, data.handler, data.i18n_title, data.icon_class, data.i18n_text); }, async generateHeadingTemplate() { @@ -93131,14 +97774,24 @@ const ChatBoxView = view_View.extend({ const vcard = (_this$model = this.model) === null || _this$model === void 0 ? void 0 : _this$model.vcard; const vcard_json = vcard ? vcard.toJSON() : {}; + + const i18n_profile = i18n_("The User's Profile Image"); + + const avatar_data = Object.assign({ + 'alt_text': i18n_profile, + 'extra_classes': '', + 'height': 40, + 'width': 40 + }, vcard_json); const heading_btns = await this.getHeadingButtons(); const standalone_btns = heading_btns.filter(b => b.standalone); const dropdown_btns = heading_btns.filter(b => !b.standalone); - return chatbox_head(Object.assign(vcard_json, this.model.toJSON(), { - '_converse': converse_core_converse, + return chatbox_head(Object.assign(this.model.toJSON(), { + avatar_data, + 'display_name': this.model.getDisplayName(), 'dropdown_btns': dropdown_btns.map(b => this.getHeadingDropdownItem(b)), - 'standalone_btns': standalone_btns.map(b => this.getHeadingStandaloneButton(b)), - 'display_name': this.model.getDisplayName() + 'showUserDetailsModal': ev => this.showUserDetailsModal(ev), + 'standalone_btns': standalone_btns.map(b => this.getHeadingStandaloneButton(b)) })); }, @@ -93157,10 +97810,10 @@ const ChatBoxView = view_View.extend({ 'i18n_title': i18n_('See more information about this person'), 'icon_class': 'fa-id-card', 'name': 'details', - 'standalone': converse_core_api.settings.get("view_mode") === 'overlayed' + 'standalone': core_api.settings.get('view_mode') === 'overlayed' }]; - if (!converse_core_api.settings.get("singleton")) { + if (!core_api.settings.get('singleton')) { buttons.push({ 'a_class': 'close-chatbox-button', 'handler': ev => this.close(ev), @@ -93168,16 +97821,28 @@ const ChatBoxView = view_View.extend({ 'i18n_title': i18n_('Close and end this conversation'), 'icon_class': 'fa-times', 'name': 'close', - 'standalone': converse_core_api.settings.get("view_mode") === 'overlayed' + 'standalone': core_api.settings.get('view_mode') === 'overlayed' }); } /** * *Hook* which allows plugins to add more buttons to a chat's heading. * @event _converse#getHeadingButtons + * @example + * api.listen.on('getHeadingButtons', (view, buttons) => { + * buttons.push({ + * 'i18n_title': __('Foo'), + * 'i18n_text': __('Foo Bar'), + * 'handler': ev => alert('Foo!'), + * 'a_class': 'toggle-foo', + * 'icon_class': 'fa-foo', + * 'name': 'foo' + * }); + * return buttons; + * }); */ - return converse_core_converse.api.hook('getHeadingButtons', this, buttons); + return core_converse.api.hook('getHeadingButtons', this, buttons); }, getToolbarOptions() { @@ -93185,22 +97850,6 @@ const ChatBoxView = view_View.extend({ return {}; }, - async updateAfterMessagesFetched() { - await this.model.messages.fetched; - this.renderChatContent(); - this.insertIntoDOM(); - this.scrollDown(); - /** - * Triggered whenever a `_converse.ChatBox` instance has fetched its messages from - * `sessionStorage` but **NOT** from the server. - * @event _converse#afterMessagesFetched - * @type {_converse.ChatBoxView | _converse.ChatRoomView} - * @example _converse.api.listen.on('afterMessagesFetched', view => { ... }); - */ - - converse_core_api.trigger('afterMessagesFetched', this.model); - }, - /** * Scrolls the chat down, *if* appropriate. * @@ -93211,7 +97860,9 @@ const ChatBoxView = view_View.extend({ * - An optional message that serves as the cause for needing to scroll down. */ maybeScrollDown(message) { - if (message.get("sender") === "me" && !message.get('is_archived') || !this.model.isHidden()) { + const new_own_msg = !(message === null || message === void 0 ? void 0 : message.get('is_archived')) && (message === null || message === void 0 ? void 0 : message.get('sender')) === 'me'; + + if ((new_own_msg || !this.model.get('scrolled')) && !this.model.isHidden()) { this.debouncedScrollDown(); } }, @@ -93230,7 +97881,7 @@ const ChatBoxView = view_View.extend({ ev === null || ev === void 0 ? void 0 : (_ev$stopPropagation = ev.stopPropagation) === null || _ev$stopPropagation === void 0 ? void 0 : _ev$stopPropagation.call(ev); if (this.model.get('scrolled')) { - converse_chatview_u.safeSave(this.model, { + chatview_view_u.safeSave(this.model, { 'scrolled': false, 'scrollTop': null }); @@ -93264,7 +97915,7 @@ const ChatBoxView = view_View.extend({ }, insertIntoDOM() { - converse_core_converse.chatboxviews.insertRowColumn(this.el); + core_converse.chatboxviews.insertRowColumn(this.el); /** * Triggered once the _converse.ChatBoxView has been inserted into the DOM * @event _converse#chatBoxInsertedIntoDOM @@ -93273,13 +97924,13 @@ const ChatBoxView = view_View.extend({ */ - converse_core_api.trigger('chatBoxInsertedIntoDOM', this); + core_api.trigger('chatBoxInsertedIntoDOM', this); return this; }, addSpinner(append = false) { if (this.el.querySelector('.spinner') === null) { - const el = converse_chatview_u.getElementFromTemplateResult(spinner()); + const el = chatview_view_u.getElementFromTemplateResult(spinner()); if (append) { this.content.insertAdjacentElement('beforeend', el); @@ -93291,7 +97942,7 @@ const ChatBoxView = view_View.extend({ }, clearSpinner() { - this.content.querySelectorAll('.spinner').forEach(converse_chatview_u.removeElement); + this.content.querySelectorAll('.spinner').forEach(chatview_view_u.removeElement); }, onStatusMessageChanged(item) { @@ -93305,20 +97956,12 @@ const ChatBoxView = view_View.extend({ * @example _converse.api.listen.on('contactStatusMessageChanged', obj => { ... }); */ - converse_core_api.trigger('contactStatusMessageChanged', { + core_api.trigger('contactStatusMessageChanged', { 'contact': item.attributes, 'message': item.get('status') }); }, - shouldShowOnTextMessage() { - if (converse_core_converse.isUniView()) { - return false; - } else { - return !converse_chatview_u.isVisible(this.el); - } - }, - /** * Given a message element, determine wether it should be * marked as a followup message to the previous element. @@ -93336,35 +97979,35 @@ const ChatBoxView = view_View.extend({ markFollowups(el) { const from = el.getAttribute('data-from'); const previous_el = el.previousElementSibling; - const date = converse_chatview_dayjs(el.getAttribute('data-isodate')); + const date = view_dayjs(el.getAttribute('data-isodate')); const next_el = el.nextElementSibling; - if (!converse_chatview_u.hasClass('chat-msg--action', el) && !converse_chatview_u.hasClass('chat-msg--action', previous_el) && !converse_chatview_u.hasClass('chat-info', el) && !converse_chatview_u.hasClass('chat-info', previous_el) && previous_el.getAttribute('data-from') === from && date.isBefore(converse_chatview_dayjs(previous_el.getAttribute('data-isodate')).add(10, 'minutes')) && el.getAttribute('data-encrypted') === previous_el.getAttribute('data-encrypted')) { - converse_chatview_u.addClass('chat-msg--followup', el); + if (!chatview_view_u.hasClass('chat-msg--action', el) && !chatview_view_u.hasClass('chat-msg--action', previous_el) && !chatview_view_u.hasClass('chat-info', el) && !chatview_view_u.hasClass('chat-info', previous_el) && previous_el.getAttribute('data-from') === from && date.isBefore(view_dayjs(previous_el.getAttribute('data-isodate')).add(10, 'minutes')) && el.getAttribute('data-encrypted') === previous_el.getAttribute('data-encrypted')) { + chatview_view_u.addClass('chat-msg--followup', el); } if (!next_el) { return; } - if (!converse_chatview_u.hasClass('chat-msg--action', el) && converse_chatview_u.hasClass('chat-info', el) && next_el.getAttribute('data-from') === from && converse_chatview_dayjs(next_el.getAttribute('data-isodate')).isBefore(date.add(10, 'minutes')) && el.getAttribute('data-encrypted') === next_el.getAttribute('data-encrypted')) { - converse_chatview_u.addClass('chat-msg--followup', next_el); + if (!chatview_view_u.hasClass('chat-msg--action', el) && chatview_view_u.hasClass('chat-info', el) && next_el.getAttribute('data-from') === from && view_dayjs(next_el.getAttribute('data-isodate')).isBefore(date.add(10, 'minutes')) && el.getAttribute('data-encrypted') === next_el.getAttribute('data-encrypted')) { + chatview_view_u.addClass('chat-msg--followup', next_el); } else { - converse_chatview_u.removeClass('chat-msg--followup', next_el); + chatview_view_u.removeClass('chat-msg--followup', next_el); } }, parseMessageForCommands(text) { - const match = text.replace(/^\s*/, "").match(/^\/(.*)\s*$/); + const match = text.replace(/^\s*/, '').match(/^\/(.*)\s*$/); if (match) { - if (match[1] === "clear") { + if (match[1] === 'clear') { this.clearMessages(); return true; - } else if (match[1] === "close") { + } else if (match[1] === 'close') { this.close(); return true; - } else if (match[1] === "help") { + } else if (match[1] === 'help') { this.model.set({ 'show_help_messages': true }); @@ -93380,15 +98023,15 @@ const ChatBoxView = view_View.extend({ const textarea = this.el.querySelector('.chat-textarea'); const message_text = textarea.value.trim(); - if (converse_core_api.settings.get('message_limit') && message_text.length > converse_core_api.settings.get('message_limit') || !message_text.replace(/\s/g, '').length) { + if (core_api.settings.get('message_limit') && message_text.length > core_api.settings.get('message_limit') || !message_text.replace(/\s/g, '').length) { return; } - if (!converse_core_converse.connection.authenticated) { + if (!core_converse.connection.authenticated) { const err_msg = i18n_('Sorry, the connection has been lost, and your message could not be sent'); - converse_core_api.alert('error', i18n_('Error'), err_msg); - converse_core_api.connection.reconnect(); + core_api.alert('error', i18n_('Error'), err_msg); + core_api.connection.reconnect(); return; } @@ -93400,7 +98043,7 @@ const ChatBoxView = view_View.extend({ spoiler_hint = hint_el.value; } - converse_chatview_u.addClass('disabled', textarea); + chatview_view_u.addClass('disabled', textarea); textarea.setAttribute('disabled', 'disabled'); (_this$el$querySelecto3 = this.el.querySelector('converse-emoji-dropdown')) === null || _this$el$querySelecto3 === void 0 ? void 0 : _this$el$querySelecto3.hideMenu(); const is_command = this.parseMessageForCommands(message_text); @@ -93409,7 +98052,7 @@ const ChatBoxView = view_View.extend({ if (is_command || message) { hint_el.value = ''; textarea.value = ''; - converse_chatview_u.removeClass('correcting', textarea); + chatview_view_u.removeClass('correcting', textarea); textarea.style.height = 'auto'; this.updateCharCounter(textarea.value); } @@ -93421,41 +98064,41 @@ const ChatBoxView = view_View.extend({ * @type { _converse.Message } * @example _converse.api.listen.on('messageSend', message => { ... }); */ - converse_core_api.trigger('messageSend', message); + core_api.trigger('messageSend', message); } - if (converse_core_api.settings.get("view_mode") === 'overlayed') { + if (core_api.settings.get('view_mode') === 'overlayed') { // XXX: Chrome flexbug workaround. The .chat-content area // doesn't resize when the textarea is resized to its original size. this.msgs_container.parentElement.style.display = 'none'; } textarea.removeAttribute('disabled'); - converse_chatview_u.removeClass('disabled', textarea); + chatview_view_u.removeClass('disabled', textarea); - if (converse_core_api.settings.get("view_mode") === 'overlayed') { + if (core_api.settings.get('view_mode') === 'overlayed') { // XXX: Chrome flexbug workaround. this.msgs_container.parentElement.style.display = ''; } // Suppress events, otherwise superfluous CSN gets set // immediately after the message, causing rate-limiting issues. - this.model.setChatState(converse_core_converse.ACTIVE, { + this.model.setChatState(core_converse.ACTIVE, { 'silent': true }); textarea.focus(); }, updateCharCounter(chars) { - if (converse_core_api.settings.get('message_limit')) { + if (core_api.settings.get('message_limit')) { const message_limit = this.el.querySelector('.message-limit'); - const counter = converse_core_api.settings.get('message_limit') - chars.length; + const counter = core_api.settings.get('message_limit') - chars.length; message_limit.textContent = counter; if (counter < 1) { - converse_chatview_u.addClass('error', message_limit); + chatview_view_u.addClass('error', message_limit); } else { - converse_chatview_u.removeClass('error', message_limit); + chatview_view_u.removeClass('error', message_limit); } } }, @@ -93519,7 +98162,7 @@ const ChatBoxView = view_View.extend({ if (!ev.shiftKey && !ev.altKey && !ev.metaKey) { if (ev.keyCode === converse.keycodes.TAB) { - const value = converse_chatview_u.getCurrentWord(ev.target, null, /(:.*?:)/g); + const value = chatview_view_u.getCurrentWord(ev.target, null, /(:.*?:)/g); if (value.startsWith(':') && this.autocompleteInPicker(ev.target, value)) { ev.preventDefault(); @@ -93535,10 +98178,10 @@ const ChatBoxView = view_View.extend({ } else if (ev.keyCode === converse.keycodes.UP_ARROW && !ev.target.selectionEnd) { const textarea = this.el.querySelector('.chat-textarea'); - if (!textarea.value || converse_chatview_u.hasClass('correcting', textarea)) { + if (!textarea.value || chatview_view_u.hasClass('correcting', textarea)) { return this.editEarlierMessage(); } - } else if (ev.keyCode === converse.keycodes.DOWN_ARROW && ev.target.selectionEnd === ev.target.value.length && converse_chatview_u.hasClass('correcting', this.el.querySelector('.chat-textarea'))) { + } else if (ev.keyCode === converse.keycodes.DOWN_ARROW && ev.target.selectionEnd === ev.target.value.length && chatview_view_u.hasClass('correcting', this.el.querySelector('.chat-textarea'))) { return this.editLaterMessage(); } } @@ -93547,10 +98190,10 @@ const ChatBoxView = view_View.extend({ return; } - if (this.model.get('chat_state') !== converse_core_converse.COMPOSING) { + if (this.model.get('chat_state') !== core_converse.COMPOSING) { // Set chat state to composing if keyCode is not a forward-slash // (which would imply an internal command and not a message). - this.model.setChatState(converse_core_converse.COMPOSING); + this.model.setChatState(core_converse.COMPOSING); } }, @@ -93581,15 +98224,15 @@ const ChatBoxView = view_View.extend({ return headless_log.error("onMessageRetractButtonClicked called for someone else's message!"); } - const retraction_warning = i18n_("Be aware that other XMPP/Jabber clients (and servers) may " + "not yet support retractions and that this message may not " + "be removed everywhere."); + const retraction_warning = i18n_('Be aware that other XMPP/Jabber clients (and servers) may ' + 'not yet support retractions and that this message may not ' + 'be removed everywhere.'); const messages = [i18n_('Are you sure you want to retract this message?')]; - if (converse_core_api.settings.get('show_retraction_warning')) { + if (core_api.settings.get('show_retraction_warning')) { messages[1] = retraction_warning; } - const result = await converse_core_api.confirm(i18n_('Confirm'), messages); + const result = await core_api.confirm(i18n_('Confirm'), messages); if (result) { this.model.retractOwnMessage(message); @@ -93603,7 +98246,7 @@ const ChatBoxView = view_View.extend({ const unsent_text = (_this$el$querySelecto4 = this.el.querySelector('.chat-textarea')) === null || _this$el$querySelecto4 === void 0 ? void 0 : _this$el$querySelecto4.value; if (unsent_text && (!currently_correcting || currently_correcting.get('message') !== unsent_text)) { - if (!confirm(i18n_("You have an unsent message which will be lost if you continue. Are you sure?"))) { + if (!confirm(i18n_('You have an unsent message which will be lost if you continue. Are you sure?'))) { return; } } @@ -93611,7 +98254,7 @@ const ChatBoxView = view_View.extend({ if (currently_correcting !== message) { currently_correcting === null || currently_correcting === void 0 ? void 0 : currently_correcting.save('correcting', false); message.save('correcting', true); - this.insertIntoTextArea(converse_chatview_u.prefixMentions(message), true, true); + this.insertIntoTextArea(chatview_view_u.prefixMentions(message), true, true); } else { message.save('correcting', false); this.insertIntoTextArea('', true, false); @@ -93637,7 +98280,7 @@ const ChatBoxView = view_View.extend({ } if (message) { - this.insertIntoTextArea(converse_chatview_u.prefixMentions(message), true, true); + this.insertIntoTextArea(chatview_view_u.prefixMentions(message), true, true); message.save('correcting', true); } else { this.insertIntoTextArea('', true, false); @@ -93665,7 +98308,7 @@ const ChatBoxView = view_View.extend({ message = message || this.getOwnMessages().reverse().find(m => m.get('editable')); if (message) { - this.insertIntoTextArea(converse_chatview_u.prefixMentions(message), true, true); + this.insertIntoTextArea(chatview_view_u.prefixMentions(message), true, true); message.save('correcting', true); } }, @@ -93684,7 +98327,7 @@ const ChatBoxView = view_View.extend({ ev.preventDefault(); } - const result = confirm(i18n_("Are you sure you want to clear the messages from this conversation?")); + const result = confirm(i18n_('Are you sure you want to clear the messages from this conversation?')); if (result === true) { await this.model.clearMessages(); @@ -93709,9 +98352,9 @@ const ChatBoxView = view_View.extend({ const textarea = this.el.querySelector('.chat-textarea'); if (correcting) { - converse_chatview_u.addClass('correcting', textarea); + chatview_view_u.addClass('correcting', textarea); } else { - converse_chatview_u.removeClass('correcting', textarea); + chatview_view_u.removeClass('correcting', textarea); } if (replace) { @@ -93731,7 +98374,7 @@ const ChatBoxView = view_View.extend({ } this.updateCharCounter(textarea.value); - converse_chatview_u.placeCaretAtEnd(textarea); + chatview_view_u.placeCaretAtEnd(textarea); }, onPresenceChanged(item) { @@ -93739,7 +98382,7 @@ const ChatBoxView = view_View.extend({ const fullname = this.model.getDisplayName(); let text; - if (converse_chatview_u.isVisible(this.el)) { + if (chatview_view_u.isVisible(this.el)) { if (show === 'offline') { text = i18n_('%1$s has gone offline', fullname); } else if (show === 'away') { @@ -93762,14 +98405,14 @@ const ChatBoxView = view_View.extend({ ev.preventDefault(); } - if (converse_core_converse.router.history.getFragment() === "converse/chat?jid=" + this.model.get('jid')) { - converse_core_converse.router.navigate(''); + if (core_converse.router.history.getFragment() === 'converse/chat?jid=' + this.model.get('jid')) { + core_converse.router.navigate(''); } - if (converse_core_api.connection.connected()) { + if (core_api.connection.connected()) { // Immediately sending the chat state, because the // model is going to be destroyed afterwards. - this.model.setChatState(converse_core_converse.INACTIVE); + this.model.setChatState(core_converse.INACTIVE); this.model.sendChatState(); } @@ -93782,7 +98425,7 @@ const ChatBoxView = view_View.extend({ * @example _converse.api.listen.on('chatBoxClosed', view => { ... }); */ - converse_core_api.trigger('chatBoxClosed', this); + core_api.trigger('chatBoxClosed', this); return this; }, @@ -93799,7 +98442,7 @@ const ChatBoxView = view_View.extend({ */ - converse_core_api.trigger('chatBoxBlurred', this, ev); + core_api.trigger('chatBoxBlurred', this, ev); }, emitFocused(ev) { @@ -93815,7 +98458,7 @@ const ChatBoxView = view_View.extend({ */ - converse_core_api.trigger('chatBoxFocused', this, ev); + core_api.trigger('chatBoxFocused', this, ev); }, focus() { @@ -93829,7 +98472,7 @@ const ChatBoxView = view_View.extend({ }, maybeFocus() { - converse_core_api.settings.get('auto_focus') && this.focus(); + core_api.settings.get('auto_focus') && this.focus(); }, hide() { @@ -93839,37 +98482,32 @@ const ChatBoxView = view_View.extend({ afterShown() { this.model.clearUnreadMsgCounter(); - this.model.setChatState(converse_core_converse.ACTIVE); + this.model.setChatState(core_converse.ACTIVE); this.scrollDown(); this.maybeFocus(); }, show() { - if (converse_chatview_u.isVisible(this.el)) { - this.maybeFocus(); + if (this.model.get('hidden')) { + headless_log.debug("Not showing chat ".concat(this.model.get('jid'), " because it's set as hidden")); return; } - /** - * Triggered just before a {@link _converse.ChatBoxView} or {@link _converse.ChatRoomView} - * will be shown. - * @event _converse#beforeShowingChatView - * @type {object} - * @property { _converse.ChatBoxView | _converse.ChatRoomView } view - */ - - converse_core_api.trigger('beforeShowingChatView', this); + if (chatview_view_u.isVisible(this.el)) { + this.maybeFocus(); + return; + } - if (converse_core_api.settings.get('animate')) { - converse_chatview_u.fadeIn(this.el, () => this.afterShown()); + if (core_api.settings.get('animate')) { + chatview_view_u.fadeIn(this.el, () => this.afterShown()); } else { - converse_chatview_u.showElement(this.el); + chatview_view_u.showElement(this.el); this.afterShown(); } }, showNewMessagesIndicator() { - converse_chatview_u.showElement(this.el.querySelector('.new-msgs-indicator')); + chatview_view_u.showElement(this.el.querySelector('.new-msgs-indicator')); }, hideNewMessagesIndicator() { @@ -93890,7 +98528,7 @@ const ChatBoxView = view_View.extend({ * which debounces this method by 100ms. * @private */ - _markScrolled: function _markScrolled(ev) { + _markScrolled: function (ev) { let scrolled = true; let scrollTop = null; const is_at_bottom = this.msgs_container.scrollTop + this.msgs_container.clientHeight >= this.msgs_container.scrollHeight - 62; // sigh... @@ -93905,12 +98543,12 @@ const ChatBoxView = view_View.extend({ * @property { _converse.ChatBoxView | _converse.ChatRoomView } view * @example _converse.api.listen.on('chatBoxScrolledUp', obj => { ... }); */ - converse_core_api.trigger('chatBoxScrolledUp', this); + core_api.trigger('chatBoxScrolledUp', this); } else { scrollTop = ev.target.scrollTop; } - converse_chatview_u.safeSave(this.model, { + chatview_view_u.safeSave(this.model, { scrolled, scrollTop }); @@ -93926,7 +98564,13 @@ const ChatBoxView = view_View.extend({ onScrolledDown() { this.hideNewMessagesIndicator(); - !this.model.isHidden() && this.model.clearUnreadMsgCounter(); + + if (!this.model.isHidden()) { + this.model.clearUnreadMsgCounter(); // Clear location hash if set to one of the messages in our history + + const hash = window.location.hash; + hash && this.model.messages.get(hash.slice(1)) && core_converse.router.history.navigate(); + } /** * Triggered once the chat's message area has been scrolled down to the bottom. * @event _converse#chatBoxScrolledDown @@ -93935,7 +98579,8 @@ const ChatBoxView = view_View.extend({ * @example _converse.api.listen.on('chatBoxScrolledDown', obj => { ... }); */ - converse_core_api.trigger('chatBoxScrolledDown', { + + core_api.trigger('chatBoxScrolledDown', { 'chatbox': this.model }); // TODO: clean up }, @@ -93949,7 +98594,7 @@ const ChatBoxView = view_View.extend({ } } } else if (state === 'hidden') { - this.model.setChatState(converse_core_converse.INACTIVE, { + this.model.setChatState(core_converse.INACTIVE, { 'silent': true }); this.model.sendChatState(); @@ -93957,6 +98602,85 @@ const ChatBoxView = view_View.extend({ } }); +/* harmony default export */ var chatview_view = (ChatBoxView); +// CONCATENATED MODULE: ./src/plugins/chatview/api.js + +/* harmony default export */ var chatview_api = ({ + /** + * The "chatview" namespace groups methods pertaining to views + * for one-on-one chats. + * + * @namespace _converse.api.chatviews + * @memberOf _converse.api + */ + chatviews: { + /** + * Get the view of an already open chat. + * @method _converse.api.chatviews.get + * @param { Array.string | string } jids + * @returns { _converse.ChatBoxView|undefined } The chat should already be open, otherwise `undefined` will be returned. + * @example + * // To return a single view, provide the JID of the contact: + * _converse.api.chatviews.get('buddy@example.com') + * @example + * // To return an array of views, provide an array of JIDs: + * _converse.api.chatviews.get(['buddy1@example.com', 'buddy2@example.com']) + */ + get(jids) { + if (jids === undefined) { + return Object.values(core_converse.chatboxviews.getAll()); + } + + if (typeof jids === 'string') { + return core_converse.chatboxviews.get(jids); + } + + return jids.map(jid => core_converse.chatboxviews.get(jid)); + } + + } +}); +// CONCATENATED MODULE: ./src/plugins/chatview/index.js +/** + * @module converse-chatview + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ + + + + + + + + +const { + Strophe: chatview_Strophe +} = converse.env; + +function chatview_onWindowStateChanged(data) { + if (core_converse.chatboxviews) { + core_converse.chatboxviews.forEach(view => { + if (view.model.get('id') !== 'controlbox') { + view.onWindowStateChanged(data.state); + } + }); + } +} + +function chatview_onChatBoxViewsInitialized() { + const views = core_converse.chatboxviews; + + core_converse.chatboxes.on('add', async item => { + if (!views.get(item.get('id')) && item.get('type') === core_converse.PRIVATE_CHAT_TYPE) { + await item.initialized; + views.add(item.get('id'), new core_converse.ChatBoxView({ + model: item + })); + } + }); +} + converse.plugins.add('converse-chatview', { /* Plugin dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -93968,20 +98692,19 @@ converse.plugins.add('converse-chatview', { * * NB: These plugins need to have already been loaded via require.js. */ - dependencies: ["converse-chatboxviews", "converse-chat", "converse-disco", "converse-modal"], + dependencies: ['converse-chatboxviews', 'converse-chat', 'converse-disco', 'converse-modal'], initialize() { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'auto_focus': true, 'debounced_content_rendering': true, 'filter_url_query_params': null, 'image_urls_regex': null, 'message_limit': 0, 'muc_hats': ['xep317'], - 'role_affiliation_hat_conversions': {}, 'show_images_inline': true, 'show_message_avatar': true, 'show_retraction_warning': true, @@ -93996,167 +98719,11 @@ converse.plugins.add('converse-chatview', { 'spoiler': true } }); - converse_core_converse.ChatBoxView = ChatBoxView; - converse_core_converse.UserDetailsModal = BootstrapModal.extend({ - id: "user-details-modal", - events: { - 'click button.refresh-contact': 'refreshContact', - 'click .fingerprint-trust .btn input': 'toggleDeviceTrust' - }, - - initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); - this.model.rosterContactAdded.then(() => this.registerContactEventHandlers()); - this.listenTo(this.model, 'change', this.render); - this.registerContactEventHandlers(); - /** - * Triggered once the _converse.UserDetailsModal has been initialized - * @event _converse#userDetailsModalInitialized - * @type { _converse.ChatBox } - * @example _converse.api.listen.on('userDetailsModalInitialized', chatbox => { ... }); - */ - - converse_core_api.trigger('userDetailsModalInitialized', this.model); - }, - - toHTML() { - var _this$model2; - - const vcard = (_this$model2 = this.model) === null || _this$model2 === void 0 ? void 0 : _this$model2.vcard; - const vcard_json = vcard ? vcard.toJSON() : {}; - return user_details_modal(Object.assign(this.model.toJSON(), vcard_json, { - '_converse': converse_core_converse, - 'allow_contact_removal': converse_core_api.settings.get('allow_contact_removal'), - 'display_name': this.model.getDisplayName(), - 'is_roster_contact': this.model.contact !== undefined, - 'removeContact': ev => this.removeContact(ev), - 'view': this, - 'utils': converse_chatview_u - })); - }, - - registerContactEventHandlers() { - if (this.model.contact !== undefined) { - this.listenTo(this.model.contact, 'change', this.render); - this.listenTo(this.model.contact.vcard, 'change', this.render); - this.model.contact.on('destroy', () => { - delete this.model.contact; - this.render(); - }); - } - }, - - async refreshContact(ev) { - if (ev && ev.preventDefault) { - ev.preventDefault(); - } - - const refresh_icon = this.el.querySelector('.fa-refresh'); - converse_chatview_u.addClass('fa-spin', refresh_icon); - - try { - await converse_core_api.vcard.update(this.model.contact.vcard, true); - } catch (e) { - headless_log.fatal(e); - this.alert(i18n_('Sorry, something went wrong while trying to refresh'), 'danger'); - } - - converse_chatview_u.removeClass('fa-spin', refresh_icon); - }, - - removeContact(ev) { - if (ev && ev.preventDefault) { - ev.preventDefault(); - } - - if (!converse_core_api.settings.get('allow_contact_removal')) { - return; - } - - const result = confirm(i18n_("Are you sure you want to remove this contact?")); - - if (result === true) { - this.modal.hide(); // XXX: This is annoying but necessary to get tests to pass. - // The `dismissHandler` in bootstrap.native tries to - // reference the remove button after it's been cleared from - // the DOM, so we delay removing the contact to give it time. - - setTimeout(() => { - this.model.contact.removeFromRoster(() => this.model.contact.destroy(), err => { - headless_log.error(err); - converse_core_api.alert('error', i18n_('Error'), [i18n_('Sorry, there was an error while trying to remove %1$s as a contact.', this.model.contact.getDisplayName())]); - }); - }, 1); - } - } - - }); - converse_core_api.listen.on('chatBoxViewsInitialized', () => { - const views = converse_core_converse.chatboxviews; - - converse_core_converse.chatboxes.on('add', async item => { - if (!views.get(item.get('id')) && item.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { - await item.initialized; - views.add(item.get('id'), new converse_core_converse.ChatBoxView({ - model: item - })); - } - }); - }); - /************************ BEGIN Event Handlers ************************/ - - function onWindowStateChanged(data) { - if (converse_core_converse.chatboxviews) { - converse_core_converse.chatboxviews.forEach(view => { - if (view.model.get('id') !== 'controlbox') { - view.onWindowStateChanged(data.state); - } - }); - } - } - - converse_core_api.listen.on('windowStateChanged', onWindowStateChanged); - converse_core_api.listen.on('connected', () => converse_core_api.disco.own.features.add(converse_chatview_Strophe.NS.SPOILER)); - /************************ END Event Handlers ************************/ - - /************************ BEGIN API ************************/ - - Object.assign(converse_core_api, { - /** - * The "chatview" namespace groups methods pertaining to views - * for one-on-one chats. - * - * @namespace _converse.api.chatviews - * @memberOf _converse.api - */ - chatviews: { - /** - * Get the view of an already open chat. - * @method _converse.api.chatviews.get - * @param { Array.string | string } jids - * @returns { _converse.ChatBoxView|undefined } The chat should already be open, otherwise `undefined` will be returned. - * @example - * // To return a single view, provide the JID of the contact: - * _converse.api.chatviews.get('buddy@example.com') - * @example - * // To return an array of views, provide an array of JIDs: - * _converse.api.chatviews.get(['buddy1@example.com', 'buddy2@example.com']) - */ - get(jids) { - if (jids === undefined) { - return Object.values(converse_core_converse.chatboxviews.getAll()); - } - - if (typeof jids === 'string') { - return converse_core_converse.chatboxviews.get(jids); - } - - return jids.map(jid => converse_core_converse.chatboxviews.get(jid)); - } - - } - }); - /************************ END API ************************/ + Object.assign(core_api, chatview_api); + core_converse.ChatBoxView = chatview_view; + core_api.listen.on('chatBoxViewsInitialized', chatview_onChatBoxViewsInitialized); + core_api.listen.on('windowStateChanged', chatview_onWindowStateChanged); + core_api.listen.on('connected', () => core_api.disco.own.features.add(chatview_Strophe.NS.SPOILER)); } }); @@ -94758,178 +99325,560 @@ const lit_haunted_virtual = makeVirtual(); -// CONCATENATED MODULE: ./src/components/brand-heading.js -function brand_heading_templateObject3() { - const data = brand_heading_taggedTemplateLiteral(["\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\"><a target=\"_blank\" rel=\"nofollow\" href=\"https://conversejs.org\">Open Source</a> XMPP chat client brought to you by <a target=\"_blank\" rel=\"nofollow\" href=\"https://opkode.com\">Opkode</a> </p>\n <p class=\"brand-subtitle\"><a target=\"_blank\" rel=\"nofollow\" href=\"https://hosted.weblate.org/projects/conversejs/#languages\">Translate</a> it into your own language</p>"]); +// CONCATENATED MODULE: ./src/components/brand-heading.js +function brand_heading_templateObject3() { + const data = brand_heading_taggedTemplateLiteral(["\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\"><a target=\"_blank\" rel=\"nofollow\" href=\"https://conversejs.org\">Open Source</a> XMPP chat client brought to you by <a target=\"_blank\" rel=\"nofollow\" href=\"https://opkode.com\">Opkode</a> </p>\n <p class=\"brand-subtitle\"><a target=\"_blank\" rel=\"nofollow\" href=\"https://hosted.weblate.org/projects/conversejs/#languages\">Translate</a> it into your own language</p>"]); + + brand_heading_templateObject3 = function () { + return data; + }; + + return data; +} + +function brand_heading_templateObject2() { + const data = brand_heading_taggedTemplateLiteral(["<p class=\"byline\">messaging freedom</p>"]); + + brand_heading_templateObject2 = function () { + return data; + }; + + return data; +} + +function brand_heading_templateObject() { + const data = brand_heading_taggedTemplateLiteral(["\n <a class=\"brand-heading\" href=\"https://conversejs.org\" target=\"_blank\" rel=\"noopener\">\n <span class=\"brand-name-wrapper ", "\">\n <svg class=\"converse-svg-logo\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 364 364\">\n <title>Converse</title>\n <g class=\"cls-1\" id=\"g904\">\n <g data-name=\"Layer 2\">\n <g data-name=\"Layer 7\">\n <path\n class=\"cls-3\"\n d=\"M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z\" />\n <path\n class=\"cls-4\"\n d=\"M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z\" />\n </g>\n </g>\n </g>\n </svg>\n <span class=\"brand-name\">\n <span class=\"brand-name__text\">converse<span class=\"subdued\">.js</span></span>\n ", "\n </span>\n </span>\n </a>\n ", "\n "]); + + brand_heading_templateObject = function () { + return data; + }; + + return data; +} + +function brand_heading_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + +const ConverseBrandHeading = o => { + const is_fullscreen = core_api.settings.get('view_mode') === 'fullscreen'; + return lit_html_html(brand_heading_templateObject(), is_fullscreen ? 'brand-name-wrapper--fullscreen' : '', is_fullscreen ? lit_html_html(brand_heading_templateObject2()) : '', is_fullscreen ? lit_html_html(brand_heading_templateObject3(), o.version_name) : ''); +}; +core_api.elements.define('converse-brand-heading', lit_haunted_component(ConverseBrandHeading, { + 'useShadowDOM': false +})); +// CONCATENATED MODULE: ./src/plugins/controlbox/model.js + +const { + dayjs: model_dayjs +} = converse.env; +/** + * Mixin which turns a ChatBox model into a ControlBox model. + * + * The ControlBox is the section of the chat that contains the open groupchats, + * bookmarks and roster. + * + * In `overlayed` `view_mode` it's a box like the chat boxes, in `fullscreen` + * `view_mode` it's a left-aligned sidebar. + * @mixin + */ + +const ControlBoxMixin = { + defaults() { + return { + 'bookmarked': false, + 'box_id': 'controlbox', + 'chat_state': undefined, + 'closed': !core_api.settings.get('show_controlbox_by_default'), + 'num_unread': 0, + 'time_opened': this.get('time_opened') || new Date().getTime(), + 'type': core_converse.CONTROLBOX_TYPE, + 'url': '' + }; + }, + + initialize() { + if (this.get('id') === 'controlbox') { + this.set({ + 'time_opened': model_dayjs(0).valueOf() + }); + } else { + core_converse.ChatBox.prototype.initialize.apply(this, arguments); + } + }, + + validate(attrs) { + if (attrs.type === core_converse.CONTROLBOX_TYPE) { + if (core_api.settings.get('view_mode') === 'embedded' && core_api.settings.get('singleton')) { + return 'Controlbox not relevant in embedded view mode'; + } + + return; + } + + return core_converse.ChatBox.prototype.validate.call(this, attrs); + }, + + maybeShow(force) { + if (!force && this.get('id') === 'controlbox') { + // Must return the chatbox + return this; + } + + return core_converse.ChatBox.prototype.maybeShow.call(this, force); + }, + + onReconnection: function onReconnection() {} +}; +/* harmony default export */ var controlbox_model = (ControlBoxMixin); +// CONCATENATED MODULE: ./src/plugins/controlbox/pane.js + + +const ControlBoxPane = View.extend({ + tagName: 'div', + className: 'controlbox-pane', + + initialize() { + /** + * Triggered once the {@link _converse.ControlBoxPane} has been initialized + * @event _converse#controlBoxPaneInitialized + * @type { _converse.ControlBoxPane } + * @example _converse.api.listen.on('controlBoxPaneInitialized', view => { ... }); + */ + core_api.trigger('controlBoxPaneInitialized', this); + } + +}); +/* harmony default export */ var pane = (ControlBoxPane); +// EXTERNAL MODULE: ./src/plugins/controlbox/templates/toggle.html +var toggle = __webpack_require__(177); +var toggle_default = /*#__PURE__*/__webpack_require__.n(toggle); + +// CONCATENATED MODULE: ./src/plugins/controlbox/utils.js + +function addControlBox() { + const m = new core_converse.ControlBox({ + 'id': 'controlbox' + }); + return core_converse.chatboxes.add(m); +} +// CONCATENATED MODULE: ./src/plugins/controlbox/toggle.js + + + + + + +const toggle_u = converse.env.utils; +const ControlBoxToggle = View.extend({ + tagName: 'a', + className: 'toggle-controlbox hidden', + id: 'toggle-controlbox', + events: { + 'click': 'onClick' + }, + attributes: { + 'href': "#" + }, + + initialize() { + core_converse.chatboxviews.insertRowColumn(this.render().el); + + core_api.waitUntil('initialized').then(this.render.bind(this)).catch(e => headless_log.fatal(e)); + }, + + render() { + // We let the render method of ControlBoxView decide whether + // the ControlBox or the Toggle must be shown. This prevents + // artifacts (i.e. on page load the toggle is shown only to then + // seconds later be hidden in favor of the controlbox). + this.el.innerHTML = toggle_default()({ + 'label_toggle': core_api.connection.connected() ? i18n_('Chat Contacts') : i18n_('Toggle chat') + }); + return this; + }, + + hide(callback) { + if (toggle_u.isVisible(this.el)) { + toggle_u.hideElement(this.el); + callback(); + } + }, + + show(callback) { + if (!toggle_u.isVisible(this.el)) { + toggle_u.fadeIn(this.el, callback); + } + }, + + showControlBox() { + let controlbox = core_converse.chatboxes.get('controlbox'); + + if (!controlbox) { + controlbox = addControlBox(); + } + + if (core_api.connection.connected()) { + controlbox.save({ + 'closed': false + }); + } else { + controlbox.trigger('show'); + } + }, + + onClick(e) { + e.preventDefault(); + + if (toggle_u.isVisible(core_converse.root.querySelector("#controlbox"))) { + const controlbox = core_converse.chatboxes.get('controlbox'); + + if (core_api.connection.connected) { + controlbox.save({ + closed: true + }); + } else { + controlbox.trigger('hide'); + } + } else { + this.showControlBox(); + } + } + +}); +/* harmony default export */ var controlbox_toggle = (ControlBoxToggle); +// CONCATENATED MODULE: ./src/plugins/controlbox/templates/controlbox.js +function controlbox_templateObject2() { + const data = controlbox_taggedTemplateLiteral(["<a class=\"chatbox-btn close-chatbox-button fa fa-times\"></a>"]); + + controlbox_templateObject2 = function () { + return data; + }; + + return data; +} + +function controlbox_templateObject() { + const data = controlbox_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head controlbox-head\">\n ", "\n </div>\n <div class=\"controlbox-panes\"></div>\n </div>"]); + + controlbox_templateObject = function () { + return data; + }; + + return data; +} + +function controlbox_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + +/* harmony default export */ var templates_controlbox = (o => lit_html_html(controlbox_templateObject(), o.sticky_controlbox ? '' : lit_html_html(controlbox_templateObject2()))); +// CONCATENATED MODULE: ./src/plugins/controlbox/view.js + + + +const controlbox_view_u = converse.env.utils; +/** + * Mixin which turns a ChatBoxView into a ControlBoxView. + * + * The ControlBox is the section of the chat that contains the open groupchats, + * bookmarks and roster. + * + * In `overlayed` `view_mode` it's a box like the chat boxes, in `fullscreen` + * `view_mode` it's a left-aligned sidebar. + * @mixin + */ + +const ControlBoxViewMixin = { + tagName: 'div', + className: 'chatbox', + id: 'controlbox', + events: { + 'click a.close-chatbox-button': 'close' + }, + + initialize() { + if (core_converse.controlboxtoggle === undefined) { + core_converse.controlboxtoggle = new core_converse.ControlBoxToggle(); + } + + core_converse.controlboxtoggle.el.insertAdjacentElement('afterend', this.el); + + this.listenTo(this.model, 'change:connected', this.onConnected); + this.listenTo(this.model, 'destroy', this.hide); + this.listenTo(this.model, 'hide', this.hide); + this.listenTo(this.model, 'show', this.show); + this.listenTo(this.model, 'change:closed', this.ensureClosedState); + this.render(); + /** + * Triggered when the _converse.ControlBoxView has been initialized and therefore + * exists. The controlbox contains the login and register forms when the user is + * logged out and a list of the user's contacts and group chats when logged in. + * @event _converse#controlBoxInitialized + * @type { _converse.ControlBoxView } + * @example _converse.api.listen.on('controlBoxInitialized', view => { ... }); + */ + + core_api.trigger('controlBoxInitialized', this); + }, + + render() { + if (this.model.get('connected')) { + if (this.model.get('closed') === undefined) { + this.model.set('closed', !core_api.settings.get('show_controlbox_by_default')); + } + } + + const tpl_result = templates_controlbox({ + 'sticky_controlbox': core_api.settings.get('sticky_controlbox'), + ...this.model.toJSON() + }); + render_render(tpl_result, this.el); + + if (!this.model.get('closed')) { + this.show(); + } else { + this.hide(); + } + + const connection = (core_converse === null || core_converse === void 0 ? void 0 : core_converse.connection) || {}; + + if (!connection.connected || !connection.authenticated || connection.disconnecting) { + this.renderLoginPanel(); + } else if (this.model.get('connected')) { + this.renderControlBoxPane(); + } + + return this; + }, + + onConnected() { + if (this.model.get('connected')) { + this.render(); + } + }, + + renderLoginPanel() { + this.el.classList.add('logged-out'); + + if (this.loginpanel) { + this.loginpanel.render(); + } else { + this.loginpanel = new core_converse.LoginPanel({ + 'model': new core_converse.LoginPanelModel() + }); + const panes = this.el.querySelector('.controlbox-panes'); + panes.innerHTML = ''; + panes.appendChild(this.loginpanel.render().el); + } - brand_heading_templateObject3 = function _templateObject3() { - return data; - }; + this.loginpanel.initPopovers(); + return this; + }, - return data; -} + /** + * Renders the "Contacts" panel of the controlbox. + * This will only be called after the user has already been logged in. + * @private + * @method _converse.ControlBoxView.renderControlBoxPane + */ + renderControlBoxPane() { + if (this.loginpanel) { + this.loginpanel.remove(); + delete this.loginpanel; + } -function brand_heading_templateObject2() { - const data = brand_heading_taggedTemplateLiteral(["<p class=\"byline\">messaging freedom</p>"]); + if (this.controlbox_pane && controlbox_view_u.isVisible(this.controlbox_pane.el)) { + return; + } - brand_heading_templateObject2 = function _templateObject2() { - return data; - }; + this.el.classList.remove('logged-out'); + this.controlbox_pane = new core_converse.ControlBoxPane(); + this.el.querySelector('.controlbox-panes').insertAdjacentElement('afterBegin', this.controlbox_pane.el); + }, - return data; -} + async close(ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + } -function brand_heading_templateObject() { - const data = brand_heading_taggedTemplateLiteral(["\n <a class=\"brand-heading\" href=\"https://conversejs.org\" target=\"_blank\" rel=\"noopener\">\n <span class=\"brand-name-wrapper ", "\">\n <svg class=\"converse-svg-logo\"\n xmlns:svg=\"http://www.w3.org/2000/svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 364 364\">\n <title>Converse</title>\n <g class=\"cls-1\" id=\"g904\">\n <g data-name=\"Layer 2\">\n <g data-name=\"Layer 7\">\n <path\n class=\"cls-3\"\n d=\"M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z\" />\n <path\n class=\"cls-4\"\n d=\"M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z\" />\n </g>\n </g>\n </g>\n </svg>\n <span class=\"brand-name\">\n <span class=\"brand-name__text\">converse<span class=\"subdued\">.js</span></span>\n ", "\n </span>\n </span>\n </a>\n ", "\n "]); + if ((ev === null || ev === void 0 ? void 0 : ev.name) === 'closeAllChatBoxes' && (core_converse.disconnection_cause !== core_converse.LOGOUT || core_api.settings.get('show_controlbox_by_default'))) { + return; + } - brand_heading_templateObject = function _templateObject() { - return data; - }; + if (core_api.settings.get('sticky_controlbox')) { + return; + } - return data; -} + const connection = (core_converse === null || core_converse === void 0 ? void 0 : core_converse.connection) || {}; -function brand_heading_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + if (connection.connected && !connection.disconnecting) { + await new Promise((resolve, reject) => { + return this.model.save({ + 'closed': true + }, { + 'success': resolve, + 'error': reject, + 'wait': true + }); + }); + } else { + this.model.trigger('hide'); + } + core_api.trigger('controlBoxClosed', this); + return this; + }, + ensureClosedState() { + if (this.model.get('closed')) { + this.hide(); + } else { + this.show(); + } + }, + hide(callback) { + if (core_api.settings.get('sticky_controlbox')) { + return; + } -const ConverseBrandHeading = o => { - const is_fullscreen = converse_core_api.settings.get('view_mode') === 'fullscreen'; - return lit_html_html(brand_heading_templateObject(), is_fullscreen ? 'brand-name-wrapper--fullscreen' : '', is_fullscreen ? lit_html_html(brand_heading_templateObject2()) : '', is_fullscreen ? lit_html_html(brand_heading_templateObject3(), o.version_name) : ''); -}; -converse_core_api.elements.define('converse-brand-heading', lit_haunted_component(ConverseBrandHeading, { - 'useShadowDOM': false -})); -// CONCATENATED MODULE: ./src/templates/controlbox.js -function controlbox_templateObject2() { - const data = controlbox_taggedTemplateLiteral(["<a class=\"chatbox-btn close-chatbox-button fa fa-times\"></a>"]); + controlbox_view_u.addClass('hidden', this.el); + core_api.trigger('chatBoxClosed', this); - controlbox_templateObject2 = function _templateObject2() { - return data; - }; + if (!core_api.connection.connected()) { + core_converse.controlboxtoggle.render(); + } - return data; -} + core_converse.controlboxtoggle.show(callback); -function controlbox_templateObject() { - const data = controlbox_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head controlbox-head\">\n ", "\n </div>\n <div class=\"controlbox-panes\"></div>\n </div>"]); + return this; + }, - controlbox_templateObject = function _templateObject() { - return data; - }; + onControlBoxToggleHidden() { + this.model.set('closed', false); + this.el.classList.remove('hidden'); + /** + * Triggered once the controlbox has been opened + * @event _converse#controlBoxOpened + * @type {_converse.ControlBox} + */ - return data; -} + core_api.trigger('controlBoxOpened', this); + }, -function controlbox_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + show() { + core_converse.controlboxtoggle.hide(() => this.onControlBoxToggleHidden()); + return this; + }, -/* harmony default export */ var templates_controlbox = (o => lit_html_html(controlbox_templateObject(), o.sticky_controlbox ? '' : lit_html_html(controlbox_templateObject2()))); -// EXTERNAL MODULE: ./src/templates/controlbox_toggle.html -var controlbox_toggle = __webpack_require__(136); -var controlbox_toggle_default = /*#__PURE__*/__webpack_require__.n(controlbox_toggle); + showHelpMessages() { + return; + } -// CONCATENATED MODULE: ./src/templates/login_panel.js -function login_panel_templateObject8() { - const data = login_panel_taggedTemplateLiteral(["\n <converse-brand-heading></converse-brand-heading>\n <form id=\"converse-login\" class=\"converse-form\" method=\"post\">\n <div class=\"conn-feedback fade-in ", "\">\n <p class=\"feedback-subject\">", "</p>\n <p class=\"feedback-message ", "\">", "</p>\n </div>\n ", "\n </form>\n"]); +}; +/* harmony default export */ var controlbox_view = (ControlBoxViewMixin); +// CONCATENATED MODULE: ./src/plugins/controlbox/templates/loginpanel.js +function loginpanel_templateObject8() { + const data = loginpanel_taggedTemplateLiteral(["\n <converse-brand-heading></converse-brand-heading>\n <form id=\"converse-login\" class=\"converse-form\" method=\"post\">\n <div class=\"conn-feedback fade-in ", "\">\n <p class=\"feedback-subject\">", "</p>\n <p class=\"feedback-message ", "\">", "</p>\n </div>\n ", "\n </form>\n"]); - login_panel_templateObject8 = function _templateObject8() { + loginpanel_templateObject8 = function () { return data; }; return data; } -function login_panel_templateObject7() { - const data = login_panel_taggedTemplateLiteral(["<p>", "</p>"]); +function loginpanel_templateObject7() { + const data = loginpanel_taggedTemplateLiteral(["<p>", "</p>"]); - login_panel_templateObject7 = function _templateObject7() { + loginpanel_templateObject7 = function () { return data; }; return data; } -function login_panel_templateObject6() { - const data = login_panel_taggedTemplateLiteral(["<input class=\"btn btn-primary login-anon\" type=\"submit\" value=\"", "\">"]); +function loginpanel_templateObject6() { + const data = loginpanel_taggedTemplateLiteral(["<input class=\"btn btn-primary login-anon\" type=\"submit\" value=\"", "\">"]); - login_panel_templateObject6 = function _templateObject6() { + loginpanel_templateObject6 = function () { return data; }; return data; } -function login_panel_templateObject5() { - const data = login_panel_taggedTemplateLiteral(["\n ", "\n ", "\n ", "\n "]); +function loginpanel_templateObject5() { + const data = loginpanel_taggedTemplateLiteral(["\n ", "\n ", "\n ", "\n "]); - login_panel_templateObject5 = function _templateObject5() { + loginpanel_templateObject5 = function () { return data; }; return data; } -function login_panel_templateObject4() { - const data = login_panel_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label for=\"converse-login-jid\">", ":</label>\n <input id=\"converse-login-jid\"\n ?autofocus=", "\n required\n class=\"form-control\"\n type=\"text\"\n name=\"jid\"\n placeholder=\"", "\"/>\n </div>\n ", "\n ", "\n <fieldset class=\"buttons\">\n <input class=\"btn btn-primary\" type=\"submit\" value=\"", "\"/>\n </fieldset>\n ", "\n "]); +function loginpanel_templateObject4() { + const data = loginpanel_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label for=\"converse-login-jid\">", ":</label>\n <input id=\"converse-login-jid\"\n ?autofocus=", "\n required\n class=\"form-control\"\n type=\"text\"\n name=\"jid\"\n placeholder=\"", "\"/>\n </div>\n ", "\n ", "\n <fieldset class=\"buttons\">\n <input class=\"btn btn-primary\" type=\"submit\" value=\"", "\"/>\n </fieldset>\n ", "\n "]); - login_panel_templateObject4 = function _templateObject4() { + loginpanel_templateObject4 = function () { return data; }; return data; } -function login_panel_templateObject3() { - const data = login_panel_taggedTemplateLiteral(["\n <fieldset class=\"switch-form\">\n <p>", "</p>\n <p><a class=\"register-account toggle-register-login\" href=\"#converse/register\">", "</a></p>\n </fieldset>\n "]); +function loginpanel_templateObject3() { + const data = loginpanel_taggedTemplateLiteral(["\n <fieldset class=\"switch-form\">\n <p>", "</p>\n <p><a class=\"register-account toggle-register-login\" href=\"#converse/register\">", "</a></p>\n </fieldset>\n "]); - login_panel_templateObject3 = function _templateObject3() { + loginpanel_templateObject3 = function () { return data; }; return data; } -function login_panel_templateObject2() { - const data = login_panel_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label for=\"converse-login-password\">", "</label>\n <input id=\"converse-login-password\" class=\"form-control\" required=\"required\" type=\"password\" name=\"password\" placeholder=\"", "\"/>\n </div>\n "]); +function loginpanel_templateObject2() { + const data = loginpanel_taggedTemplateLiteral(["\n <div class=\"form-group\">\n <label for=\"converse-login-password\">", "</label>\n <input id=\"converse-login-password\" class=\"form-control\" required=\"required\" type=\"password\" name=\"password\" placeholder=\"", "\"/>\n </div>\n "]); - login_panel_templateObject2 = function _templateObject2() { + loginpanel_templateObject2 = function () { return data; }; return data; } -function login_panel_templateObject() { - const data = login_panel_taggedTemplateLiteral(["\n <div class=\"form-group form-check login-trusted\">\n <input id=\"converse-login-trusted\" type=\"checkbox\" class=\"form-check-input\" name=\"trusted\" ?checked=", ">\n <label for=\"converse-login-trusted\" class=\"form-check-label login-trusted__desc\">", "</label>\n <i class=\"fa fa-info-circle\" data-toggle=\"popover\"\n data-title=\"Trusted device?\"\n data-content=\"", "\"></i>\n </div>\n "]); +function loginpanel_templateObject() { + const data = loginpanel_taggedTemplateLiteral(["\n <div class=\"form-group form-check login-trusted\">\n <input id=\"converse-login-trusted\" type=\"checkbox\" class=\"form-check-input\" name=\"trusted\" ?checked=", ">\n <label for=\"converse-login-trusted\" class=\"form-check-label login-trusted__desc\">", "</label>\n <i class=\"fa fa-info-circle\" data-toggle=\"popover\"\n data-title=\"Trusted device?\"\n data-content=\"", "\"></i>\n </div>\n "]); - login_panel_templateObject = function _templateObject() { + loginpanel_templateObject = function () { return data; }; return data; } -function login_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function loginpanel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -const trust_checkbox = o => { +const trust_checkbox = checked => { const i18n_hint_trusted = i18n_('To improve performance, we cache your data in this browser. ' + 'Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. ' + 'It\'s important that you explicitly log out, otherwise not all cached data might be deleted. ' + 'Please note, when using an untrusted device, OMEMO encryption is NOT available.'); const i18n_trusted = i18n_('This is a trusted device'); - return lit_html_html(login_panel_templateObject(), o._converse.config.get('trusted'), i18n_trusted, i18n_hint_trusted); + return lit_html_html(loginpanel_templateObject(), checked, i18n_trusted, i18n_hint_trusted); }; const password_input = () => { const i18n_password = i18n_('Password'); - return lit_html_html(login_panel_templateObject2(), i18n_password, i18n_password); + return lit_html_html(loginpanel_templateObject2(), i18n_password, i18n_password); }; const register_link = () => { @@ -94937,12 +99886,11 @@ const register_link = () => { const i18n_hint_no_account = i18n_("Don't have a chat account?"); - return lit_html_html(login_panel_templateObject3(), i18n_hint_no_account, i18n_create_account); + return lit_html_html(loginpanel_templateObject3(), i18n_hint_no_account, i18n_create_account); }; -const show_register_link = o => { - const _converse = o._converse; - return _converse.allow_registration && !converse_core_api.settings.get("auto_login") && _converse.pluggable.plugins['converse-register'].enabled(_converse); +const show_register_link = () => { + return core_converse.allow_registration && !core_api.settings.get("auto_login") && core_converse.pluggable.plugins['converse-register'].enabled(core_converse); }; const auth_fields = o => { @@ -94950,7 +99898,7 @@ const auth_fields = o => { const i18n_xmpp_address = i18n_("XMPP Address"); - return lit_html_html(login_panel_templateObject4(), i18n_xmpp_address, converse_core_api.settings.get('auto_focus') ? true : false, o.placeholder_username, o.authentication !== o.EXTERNAL ? password_input() : '', o.show_trust_checkbox ? trust_checkbox(o) : '', i18n_login, show_register_link(o) ? register_link(o) : ''); + return lit_html_html(loginpanel_templateObject4(), i18n_xmpp_address, core_api.settings.get('auto_focus') ? true : false, o.placeholder_username, o.authentication !== o.EXTERNAL ? password_input() : '', o.show_trust_checkbox ? trust_checkbox(o.show_trust_checkbox === 'off' ? false : true) : '', i18n_login, show_register_link() ? register_link(o) : ''); }; const form_fields = o => { @@ -94958,54 +99906,31 @@ const form_fields = o => { const i18n_anon_login = i18n_('Click here to log in anonymously'); - return lit_html_html(login_panel_templateObject5(), o.authentication == o.LOGIN || o.authentication == o.EXTERNAL ? auth_fields(o) : '', o.authentication == o.ANONYMOUS ? lit_html_html(login_panel_templateObject6(), i18n_anon_login) : '', o.authentication == o.PREBIND ? lit_html_html(login_panel_templateObject7(), i18n_disconnected) : ''); + return lit_html_html(loginpanel_templateObject5(), o.authentication == o.LOGIN || o.authentication == o.EXTERNAL ? auth_fields(o) : '', o.authentication == o.ANONYMOUS ? lit_html_html(loginpanel_templateObject6(), i18n_anon_login) : '', o.authentication == o.PREBIND ? lit_html_html(loginpanel_templateObject7(), i18n_disconnected) : ''); }; -/* harmony default export */ var templates_login_panel = (o => lit_html_html(login_panel_templateObject8(), !o.conn_feedback_subject ? 'hidden' : o.conn_feedback_class, o.conn_feedback_subject, !o.conn_feedback_message ? 'hidden' : '', o.conn_feedback_message, o._converse.CONNECTION_STATUS[o.connection_status] === 'CONNECTING' ? spinner({ +/* harmony default export */ var loginpanel = (o => lit_html_html(loginpanel_templateObject8(), !o.conn_feedback_subject ? 'hidden' : o.conn_feedback_class, o.conn_feedback_subject, !o.conn_feedback_message ? 'hidden' : '', o.conn_feedback_message, core_converse.CONNECTION_STATUS[o.connection_status] === 'CONNECTING' ? spinner({ 'classes': 'hor_centered' }) : form_fields(o))); -// CONCATENATED MODULE: ./src/converse-controlbox.js -function converse_controlbox_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function converse_controlbox_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { converse_controlbox_ownKeys(Object(source), true).forEach(function (key) { converse_controlbox_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { converse_controlbox_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function converse_controlbox_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/** - * @module converse-controlbox - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - */ - - - - - - +// CONCATENATED MODULE: ./src/plugins/controlbox/loginpanel.js +const loginpanel_u = converse.env.utils; const { - Strophe: converse_controlbox_Strophe, - dayjs: converse_controlbox_dayjs + Strophe: loginpanel_Strophe } = converse.env; -const converse_controlbox_u = converse.env.utils; -const CONNECTION_STATUS_CSS_CLASS = { - 'Error': 'error', - 'Connecting': 'info', - 'Connection failure': 'error', - 'Authenticating': 'info', - 'Authentication failure': 'error', - 'Connected': 'info', - 'Disconnected': 'error', - 'Disconnecting': 'warn', - 'Attached': 'info', - 'Redirect': 'info', - 'Reconnecting': 'warn' -}; +const REPORTABLE_STATUSES = [0, // ERROR' +1, // CONNECTING +2, // CONNFAIL +3, // AUTHENTICATING +4, // AUTHFAIL +7, // DISCONNECTING +10 // RECONNECTING +]; const PRETTY_CONNECTION_STATUS = { 0: 'Error', 1: 'Connecting', @@ -95019,630 +99944,327 @@ const PRETTY_CONNECTION_STATUS = { 9: 'Redirect', 10: 'Reconnecting' }; -const REPORTABLE_STATUSES = [0, // ERROR' -1, // CONNECTING -2, // CONNFAIL -3, // AUTHENTICATING -4, // AUTHFAIL -7, // DISCONNECTING -10 // RECONNECTING -]; -converse.plugins.add('converse-controlbox', { - /* Plugin dependencies are other plugins which might be - * overridden or relied upon, and therefore need to be loaded before - * this plugin. - * - * If the setting "strict_plugin_dependencies" is set to true, - * an error will be raised if the plugin is not found. By default it's - * false, which means these plugins are only loaded opportunistically. - * - * NB: These plugins need to have already been loaded via require.js. - */ - dependencies: ["converse-modal", "converse-chatboxes", "converse-chat", "converse-rosterview", "converse-chatview"], - - enabled(_converse) { - return !_converse.api.settings.get("singleton"); +const CONNECTION_STATUS_CSS_CLASS = { + 'Error': 'error', + 'Connecting': 'info', + 'Connection failure': 'error', + 'Authenticating': 'info', + 'Authentication failure': 'error', + 'Connected': 'info', + 'Disconnected': 'error', + 'Disconnecting': 'warn', + 'Attached': 'info', + 'Redirect': 'info', + 'Reconnecting': 'warn' +}; +const LoginPanelModel = model_Model.extend({ + defaults: { + // Passed-by-reference. Fine in this case because there's + // only one such model. + 'errors': [] + } +}); +const LoginPanel = View.extend({ + tagName: 'div', + id: "converse-login-panel", + className: 'controlbox-pane fade-in row no-gutters', + events: { + 'submit form#converse-login': 'authenticate', + 'change input': 'validate' }, - overrides: { - // Overrides mentioned here will be picked up by converse.js's - // plugin architecture they will replace existing methods on the - // relevant objects or classes. - // - // New functions which don't exist yet can also be added. - ChatBoxes: { - model(attrs, options) { - const { - _converse - } = this.__super__; - - if (attrs && attrs.id == 'controlbox') { - return new _converse.ControlBox(attrs, options); - } else { - return this.__super__.model.apply(this, arguments); - } - } + initialize() { + this.listenTo(this.model, 'change', this.render); + this.listenTo(core_converse.connfeedback, 'change', this.render); + this.render(); + }, - } + toHTML() { + const connection_status = core_converse.connfeedback.get('connection_status'); + + let feedback_class, pretty_status; + + if (REPORTABLE_STATUSES.includes(connection_status)) { + pretty_status = PRETTY_CONNECTION_STATUS[connection_status]; + feedback_class = CONNECTION_STATUS_CSS_CLASS[pretty_status]; + } + + return loginpanel(Object.assign(this.model.toJSON(), { + '_converse': core_converse, + 'ANONYMOUS': core_converse.ANONYMOUS, + 'EXTERNAL': core_converse.EXTERNAL, + 'LOGIN': core_converse.LOGIN, + 'PREBIND': core_converse.PREBIND, + 'auto_login': core_api.settings.get('auto_login'), + 'authentication': core_api.settings.get("authentication"), + 'connection_status': connection_status, + 'conn_feedback_class': feedback_class, + 'conn_feedback_subject': pretty_status, + 'conn_feedback_message': core_converse.connfeedback.get('message'), + 'placeholder_username': (core_api.settings.get('locked_domain') || core_api.settings.get('default_domain')) && i18n_('Username') || i18n_('user@domain'), + 'show_trust_checkbox': core_api.settings.get('allow_user_trust_override') + })); }, - initialize() { - /* The initialize function gets called as soon as the plugin is - * loaded by converse.js's plugin machinery. - */ - converse_core_api.settings.extend({ - allow_logout: true, - default_domain: undefined, - locked_domain: undefined, - show_controlbox_by_default: false, - sticky_controlbox: false + initPopovers() { + Array.from(this.el.querySelectorAll('[data-title]')).forEach(el => { + new bootstrap_native_default.a.Popover(el, { + 'trigger': core_api.settings.get("view_mode") === 'mobile' && 'click' || 'hover', + 'dismissible': core_api.settings.get("view_mode") === 'mobile' && true || false, + 'container': this.el.parentElement.parentElement.parentElement + }); }); - converse_core_api.promises.add('controlBoxInitialized'); - converse_core_converse.ControlBox = converse_core_converse.ChatBox.extend({ - defaults() { - return { - 'bookmarked': false, - 'box_id': 'controlbox', - 'chat_state': undefined, - 'closed': !converse_core_api.settings.get('show_controlbox_by_default'), - 'num_unread': 0, - 'time_opened': this.get('time_opened') || new Date().getTime(), - 'type': converse_core_converse.CONTROLBOX_TYPE, - 'url': '' - }; - }, - - initialize() { - if (this.get('id') === 'controlbox') { - this.set({ - 'time_opened': converse_controlbox_dayjs(0).valueOf() - }); - } else { - converse_core_converse.ChatBox.prototype.initialize.apply(this, arguments); - } - }, - - validate(attrs) { - if (attrs.type === converse_core_converse.CONTROLBOX_TYPE) { - if (converse_core_api.settings.get("view_mode") === 'embedded' && converse_core_api.settings.get("singleton")) { - return 'Controlbox not relevant in embedded view mode'; - } - - return; - } - - return converse_core_converse.ChatBox.prototype.validate.call(this, attrs); - }, - - maybeShow(force) { - if (!force && this.get('id') === 'controlbox') { - // Must return the chatbox - return this; - } - - return converse_core_converse.ChatBox.prototype.maybeShow.call(this, force); - }, + }, - onReconnection: function onReconnection() {} - }); + validate() { + const form = this.el.querySelector('form'); + const jid_element = form.querySelector('input[name=jid]'); - function addControlBox() { - const m = new converse_core_converse.ControlBox({ - 'id': 'controlbox' - }); - return converse_core_converse.chatboxes.add(m); + if (jid_element.value && !core_api.settings.get('locked_domain') && !core_api.settings.get('default_domain') && !loginpanel_u.isValidJID(jid_element.value)) { + jid_element.setCustomValidity(i18n_('Please enter a valid XMPP address')); + return false; } - converse_core_converse.ControlBoxView = converse_core_converse.ChatBoxView.extend({ - tagName: 'div', - className: 'chatbox', - id: 'controlbox', - events: { - 'click a.close-chatbox-button': 'close' - }, - - initialize() { - if (converse_core_converse.controlboxtoggle === undefined) { - converse_core_converse.controlboxtoggle = new converse_core_converse.ControlBoxToggle(); - } - - converse_core_converse.controlboxtoggle.el.insertAdjacentElement('afterend', this.el); - - this.listenTo(this.model, 'change:connected', this.onConnected); - this.listenTo(this.model, 'destroy', this.hide); - this.listenTo(this.model, 'hide', this.hide); - this.listenTo(this.model, 'show', this.show); - this.listenTo(this.model, 'change:closed', this.ensureClosedState); - this.render(); - /** - * Triggered when the _converse.ControlBoxView has been initialized and therefore - * exists. The controlbox contains the login and register forms when the user is - * logged out and a list of the user's contacts and group chats when logged in. - * @event _converse#controlBoxInitialized - * @type { _converse.ControlBoxView } - * @example _converse.api.listen.on('controlBoxInitialized', view => { ... }); - */ - - converse_core_api.trigger('controlBoxInitialized', this); - }, - - render() { - if (this.model.get('connected')) { - if (this.model.get('closed') === undefined) { - this.model.set('closed', !converse_core_api.settings.get('show_controlbox_by_default')); - } - } - - const tpl_result = templates_controlbox(converse_controlbox_objectSpread({ - 'sticky_controlbox': converse_core_api.settings.get('sticky_controlbox') - }, this.model.toJSON())); - render_render(tpl_result, this.el); - - if (!this.model.get('closed')) { - this.show(); - } else { - this.hide(); - } - - const connection = (converse_core_converse === null || converse_core_converse === void 0 ? void 0 : converse_core_converse.connection) || {}; - - if (!connection.connected || !connection.authenticated || connection.disconnecting) { - this.renderLoginPanel(); - } else if (this.model.get('connected')) { - this.renderControlBoxPane(); - } - - return this; - }, - - onConnected() { - if (this.model.get('connected')) { - this.render(); - } - }, - - renderLoginPanel() { - this.el.classList.add("logged-out"); - - if (this.loginpanel) { - this.loginpanel.render(); - } else { - this.loginpanel = new converse_core_converse.LoginPanel({ - 'model': new converse_core_converse.LoginPanelModel() - }); - const panes = this.el.querySelector('.controlbox-panes'); - panes.innerHTML = ''; - panes.appendChild(this.loginpanel.render().el); - } - - this.loginpanel.initPopovers(); - return this; - }, - - /** - * Renders the "Contacts" panel of the controlbox. - * This will only be called after the user has already been logged in. - * @private - * @method _converse.ControlBoxView.renderControlBoxPane - */ - renderControlBoxPane() { - if (this.loginpanel) { - this.loginpanel.remove(); - delete this.loginpanel; - } - - if (this.controlbox_pane && converse_controlbox_u.isVisible(this.controlbox_pane.el)) { - return; - } - - this.el.classList.remove("logged-out"); - this.controlbox_pane = new converse_core_converse.ControlBoxPane(); - this.el.querySelector('.controlbox-panes').insertAdjacentElement('afterBegin', this.controlbox_pane.el); - }, - - async close(ev) { - if (ev && ev.preventDefault) { - ev.preventDefault(); - } - - if ((ev === null || ev === void 0 ? void 0 : ev.name) === 'closeAllChatBoxes' && (converse_core_converse.disconnection_cause !== converse_core_converse.LOGOUT || converse_core_api.settings.get('show_controlbox_by_default'))) { - return; - } - - if (converse_core_api.settings.get('sticky_controlbox')) { - return; - } - - const connection = (converse_core_converse === null || converse_core_converse === void 0 ? void 0 : converse_core_converse.connection) || {}; - - if (connection.connected && !connection.disconnecting) { - await new Promise((resolve, reject) => { - return this.model.save({ - 'closed': true - }, { - 'success': resolve, - 'error': reject, - 'wait': true - }); - }); - } else { - this.model.trigger('hide'); - } - - converse_core_api.trigger('controlBoxClosed', this); - return this; - }, - - ensureClosedState() { - if (this.model.get('closed')) { - this.hide(); - } else { - this.show(); - } - }, - - hide(callback) { - if (converse_core_api.settings.get('sticky_controlbox')) { - return; - } - - converse_controlbox_u.addClass('hidden', this.el); - converse_core_api.trigger('chatBoxClosed', this); + jid_element.setCustomValidity(''); + return true; + }, - if (!converse_core_api.connection.connected()) { - converse_core_converse.controlboxtoggle.render(); - } + /** + * Authenticate the user based on a form submission event. + * @param { Event } ev + */ + authenticate(ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + } - converse_core_converse.controlboxtoggle.show(callback); + if (core_api.settings.get("authentication") === core_converse.ANONYMOUS) { + return this.connect(core_converse.jid, null); + } - return this; - }, + if (!this.validate()) { + return; + } - onControlBoxToggleHidden() { - this.model.set('closed', false); - this.el.classList.remove('hidden'); - /** - * Triggered once the controlbox has been opened - * @event _converse#controlBoxOpened - * @type {_converse.ControlBox} - */ + const form_data = new FormData(ev.target); - converse_core_api.trigger('controlBoxOpened', this); - }, + core_converse.config.save({ + 'trusted': form_data.get('trusted') && true || false + }); - show() { - converse_core_converse.controlboxtoggle.hide(() => this.onControlBoxToggleHidden()); + let jid = form_data.get('jid'); - return this; - }, + if (core_api.settings.get('locked_domain')) { + const last_part = '@' + core_api.settings.get('locked_domain'); - showHelpMessages() { - return; + if (jid.endsWith(last_part)) { + jid = jid.substr(0, jid.length - last_part.length); } - }); - converse_core_converse.LoginPanelModel = model_Model.extend({ - defaults: { - // Passed-by-reference. Fine in this case because there's - // only one such model. - 'errors': [] - } - }); - converse_core_converse.LoginPanel = view_View.extend({ - tagName: 'div', - id: "converse-login-panel", - className: 'controlbox-pane fade-in row no-gutters', - events: { - 'submit form#converse-login': 'authenticate', - 'change input': 'validate' - }, + jid = loginpanel_Strophe.escapeNode(jid) + last_part; + } else if (core_api.settings.get('default_domain') && !jid.includes('@')) { + jid = jid + '@' + core_api.settings.get('default_domain'); + } - initialize() { - this.listenTo(this.model, 'change', this.render); - this.listenTo(converse_core_converse.connfeedback, 'change', this.render); - this.render(); - }, + this.connect(jid, form_data.get('password')); + }, - toHTML() { - const connection_status = converse_core_converse.connfeedback.get('connection_status'); - - let feedback_class, pretty_status; - - if (REPORTABLE_STATUSES.includes(connection_status)) { - pretty_status = PRETTY_CONNECTION_STATUS[connection_status]; - feedback_class = CONNECTION_STATUS_CSS_CLASS[pretty_status]; - } - - return templates_login_panel(Object.assign(this.model.toJSON(), { - '_converse': converse_core_converse, - 'ANONYMOUS': converse_core_converse.ANONYMOUS, - 'EXTERNAL': converse_core_converse.EXTERNAL, - 'LOGIN': converse_core_converse.LOGIN, - 'PREBIND': converse_core_converse.PREBIND, - 'auto_login': converse_core_api.settings.get('auto_login'), - 'authentication': converse_core_api.settings.get("authentication"), - 'connection_status': connection_status, - 'conn_feedback_class': feedback_class, - 'conn_feedback_subject': pretty_status, - 'conn_feedback_message': converse_core_converse.connfeedback.get('message'), - 'placeholder_username': (converse_core_api.settings.get('locked_domain') || converse_core_api.settings.get('default_domain')) && i18n_('Username') || i18n_('user@domain'), - 'show_trust_checkbox': converse_core_converse.trusted !== 'on' && converse_core_converse.trusted !== 'off' - })); - }, + connect(jid, password) { + if (["converse/login", "converse/register"].includes(core_converse.router.history.getFragment())) { + core_converse.router.navigate('', { + 'replace': true + }); + } - initPopovers() { - Array.from(this.el.querySelectorAll('[data-title]')).forEach(el => { - new bootstrap_native_default.a.Popover(el, { - 'trigger': converse_core_api.settings.get("view_mode") === 'mobile' && 'click' || 'hover', - 'dismissible': converse_core_api.settings.get("view_mode") === 'mobile' && true || false, - 'container': this.el.parentElement.parentElement.parentElement - }); - }); - }, + core_converse.connection && core_converse.connection.reset(); + core_api.user.login(jid, password); + } - validate() { - const form = this.el.querySelector('form'); - const jid_element = form.querySelector('input[name=jid]'); +}); +// CONCATENATED MODULE: ./src/plugins/controlbox/api.js - if (jid_element.value && !converse_core_api.settings.get('locked_domain') && !converse_core_api.settings.get('default_domain') && !converse_controlbox_u.isValidJID(jid_element.value)) { - jid_element.setCustomValidity(i18n_('Please enter a valid XMPP address')); - return false; - } +/* harmony default export */ var controlbox_api = ({ + /** + * The "controlbox" namespace groups methods pertaining to the + * controlbox view + * + * @namespace _converse.api.controlbox + * @memberOf _converse.api + */ + controlbox: { + /** + * Opens the controlbox + * @method _converse.api.controlbox.open + * @returns { Promise<_converse.ControlBox> } + */ + async open() { + await core_api.waitUntil('chatBoxesFetched'); + const model = (await core_api.chatboxes.get('controlbox')) || core_api.chatboxes.create('controlbox', {}, core_converse.Controlbox); + model.trigger('show'); + return model; + }, - jid_element.setCustomValidity(''); - return true; - }, + /** + * Returns the controlbox view. + * @method _converse.api.controlbox.get + * @returns { View } View representing the controlbox + * @example const view = _converse.api.controlbox.get(); + */ + get() { + return core_converse.chatboxviews.get('controlbox'); + } - authenticate(ev) { - /* Authenticate the user based on a form submission event. - */ - if (ev && ev.preventDefault) { - ev.preventDefault(); - } + } +}); +// CONCATENATED MODULE: ./src/plugins/controlbox/index.js +/** + * @module converse-controlbox + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ - if (converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { - return this.connect(converse_core_converse.jid, null); - } - if (!this.validate()) { - return; - } - const form_data = new FormData(ev.target); - if (converse_core_converse.trusted === 'on' || converse_core_converse.trusted === 'off') { - converse_core_converse.config.save({ - 'trusted': converse_core_converse.trusted === 'on', - 'storage': converse_core_converse.trusted === 'on' ? 'persistent' : 'session' - }); - } else { - converse_core_converse.config.save({ - 'trusted': form_data.get('trusted') && true || false, - 'storage': form_data.get('trusted') ? 'persistent' : 'session' - }); - } - let jid = form_data.get('jid'); - if (converse_core_api.settings.get('locked_domain')) { - const last_part = '@' + converse_core_api.settings.get('locked_domain'); - if (jid.endsWith(last_part)) { - jid = jid.substr(0, jid.length - last_part.length); - } - jid = converse_controlbox_Strophe.escapeNode(jid) + last_part; - } else if (converse_core_api.settings.get('default_domain') && !jid.includes('@')) { - jid = jid + '@' + converse_core_api.settings.get('default_domain'); - } - this.connect(jid, form_data.get('password')); - }, - connect(jid, password) { - if (["converse/login", "converse/register"].includes(converse_core_converse.router.history.getFragment())) { - converse_core_converse.router.navigate('', { - 'replace': true - }); - } - converse_core_converse.connection && converse_core_converse.connection.reset(); - converse_core_api.user.login(jid, password); - } +const controlbox_u = converse.env.utils; - }); - converse_core_converse.ControlBoxPane = view_View.extend({ - tagName: 'div', - className: 'controlbox-pane', +function controlbox_onChatBoxViewsInitialized() { + core_converse.chatboxes.on('add', item => { + if (item.get('type') === core_converse.CONTROLBOX_TYPE) { + const views = core_converse.chatboxviews; + const view = views.get(item.get('id')); - initialize() { - /** - * Triggered once the {@link _converse.ControlBoxPane} has been initialized - * @event _converse#controlBoxPaneInitialized - * @type { _converse.ControlBoxPane } - * @example _converse.api.listen.on('controlBoxPaneInitialized', view => { ... }); - */ - converse_core_api.trigger('controlBoxPaneInitialized', this); + if (view) { + view.model = item; + view.initialize(); + } else { + views.add(item.get('id'), new core_converse.ControlBoxView({ + model: item + })); } + } + }); +} - }); - converse_core_converse.ControlBoxToggle = view_View.extend({ - tagName: 'a', - className: 'toggle-controlbox hidden', - id: 'toggle-controlbox', - events: { - 'click': 'onClick' - }, - attributes: { - 'href': "#" - }, - - initialize() { - converse_core_converse.chatboxviews.insertRowColumn(this.render().el); - - converse_core_api.waitUntil('initialized').then(this.render.bind(this)).catch(e => headless_log.fatal(e)); - }, +function disconnect() { + /* Upon disconnection, set connected to `false`, so that if + * we reconnect, "onConnected" will be called, + * to fetch the roster again and to send out a presence stanza. + */ + const view = core_converse.chatboxviews.get('controlbox'); - render() { - // We let the render method of ControlBoxView decide whether - // the ControlBox or the Toggle must be shown. This prevents - // artifacts (i.e. on page load the toggle is shown only to then - // seconds later be hidden in favor of the controlbox). - this.el.innerHTML = controlbox_toggle_default()({ - 'label_toggle': converse_core_api.connection.connected() ? i18n_('Chat Contacts') : i18n_('Toggle chat') - }); - return this; - }, + view.model.set({ + 'connected': false + }); + return view; +} - hide(callback) { - if (converse_controlbox_u.isVisible(this.el)) { - converse_controlbox_u.hideElement(this.el); - callback(); - } - }, +function controlbox_clearSession() { + const chatboxviews = core_converse === null || core_converse === void 0 ? void 0 : core_converse.chatboxviews; + const view = chatboxviews && chatboxviews.get('controlbox'); - show(callback) { - if (!converse_controlbox_u.isVisible(this.el)) { - converse_controlbox_u.fadeIn(this.el, callback); - } - }, + if (view) { + controlbox_u.safeSave(view.model, { + 'connected': false + }); - showControlBox() { - let controlbox = converse_core_converse.chatboxes.get('controlbox'); + if (view === null || view === void 0 ? void 0 : view.controlbox_pane) { + view.controlbox_pane.remove(); + delete view.controlbox_pane; + } + } +} - if (!controlbox) { - controlbox = addControlBox(); - } +function onChatBoxesFetched() { + const controlbox = core_converse.chatboxes.get('controlbox') || addControlBox(); + controlbox.save({ + 'connected': true + }); +} - if (converse_core_api.connection.connected()) { - controlbox.save({ - 'closed': false - }); - } else { - controlbox.trigger('show'); - } - }, +converse.plugins.add('converse-controlbox', { + /* Plugin dependencies are other plugins which might be + * overridden or relied upon, and therefore need to be loaded before + * this plugin. + * + * If the setting "strict_plugin_dependencies" is set to true, + * an error will be raised if the plugin is not found. By default it's + * false, which means these plugins are only loaded opportunistically. + * + * NB: These plugins need to have already been loaded via require.js. + */ + dependencies: ['converse-modal', 'converse-chatboxes', 'converse-chat', 'converse-rosterview', 'converse-chatview'], - onClick(e) { - e.preventDefault(); + enabled(_converse) { + return !_converse.api.settings.get('singleton'); + }, - if (converse_controlbox_u.isVisible(converse_core_converse.root.querySelector("#controlbox"))) { - const controlbox = converse_core_converse.chatboxes.get('controlbox'); + overrides: { + // Overrides mentioned here will be picked up by converse.js's + // plugin architecture they will replace existing methods on the + // relevant objects or classes. + // + // New functions which don't exist yet can also be added. + ChatBoxes: { + model(attrs, options) { + const { + _converse + } = this.__super__; - if (converse_core_api.connection.connected) { - controlbox.save({ - closed: true - }); - } else { - controlbox.trigger('hide'); - } + if (attrs && attrs.id == 'controlbox') { + return new _converse.ControlBox(attrs, options); } else { - this.showControlBox(); + return this.__super__.model.apply(this, arguments); } } - }); - /******************** Event Handlers ********************/ - - converse_core_api.listen.on('cleanup', () => delete converse_core_converse.controlboxtoggle); - converse_core_api.listen.on('chatBoxViewsInitialized', () => { - converse_core_converse.chatboxes.on('add', item => { - if (item.get('type') === converse_core_converse.CONTROLBOX_TYPE) { - const views = converse_core_converse.chatboxviews; - const view = views.get(item.get('id')); - - if (view) { - view.model = item; - view.initialize(); - } else { - views.add(item.get('id'), new converse_core_converse.ControlBoxView({ - model: item - })); - } - } - }); - }); - converse_core_api.listen.on('clearSession', () => { - const chatboxviews = converse_core_converse === null || converse_core_converse === void 0 ? void 0 : converse_core_converse.chatboxviews; - const view = chatboxviews && chatboxviews.get('controlbox'); - - if (view) { - converse_controlbox_u.safeSave(view.model, { - 'connected': false - }); + } + }, - if (view === null || view === void 0 ? void 0 : view.controlbox_pane) { - view.controlbox_pane.remove(); - delete view.controlbox_pane; - } - } - }); - converse_core_api.waitUntil('chatBoxViewsInitialized').then(addControlBox).catch(e => headless_log.fatal(e)); - converse_core_api.listen.on('chatBoxesFetched', () => { - const controlbox = converse_core_converse.chatboxes.get('controlbox') || addControlBox(); - controlbox.save({ - 'connected': true - }); + initialize() { + /* The initialize function gets called as soon as the plugin is + * loaded by converse.js's plugin machinery. + */ + core_api.settings.extend({ + allow_logout: true, + allow_user_trust_override: true, + default_domain: undefined, + locked_domain: undefined, + show_controlbox_by_default: false, + sticky_controlbox: false }); + core_api.promises.add('controlBoxInitialized'); + Object.assign(core_api, controlbox_api); + core_converse.ControlBox = core_converse.ChatBox.extend(controlbox_model); + core_converse.ControlBoxView = core_converse.ChatBoxView.extend(controlbox_view); + core_converse.LoginPanelModel = LoginPanelModel; + core_converse.LoginPanel = LoginPanel; + core_converse.ControlBoxPane = pane; + core_converse.ControlBoxToggle = controlbox_toggle; + /******************** Event Handlers ********************/ - const disconnect = function disconnect() { - /* Upon disconnection, set connected to `false`, so that if - * we reconnect, "onConnected" will be called, - * to fetch the roster again and to send out a presence stanza. - */ - const view = converse_core_converse.chatboxviews.get('controlbox'); - - view.model.set({ - 'connected': false - }); - return view; - }; - - converse_core_api.listen.on('disconnected', () => disconnect().renderLoginPanel()); - converse_core_api.listen.on('will-reconnect', disconnect); - /************************ API ************************/ - - Object.assign(converse_core_api, { - /** - * The "controlbox" namespace groups methods pertaining to the - * controlbox view - * - * @namespace _converse.api.controlbox - * @memberOf _converse.api - */ - controlbox: { - /** - * Opens the controlbox - * @method _converse.api.controlbox.open - * @returns { Promise<_converse.ControlBox> } - */ - async open() { - await converse_core_api.waitUntil('chatBoxesFetched'); - const model = (await converse_core_api.chatboxes.get('controlbox')) || converse_core_api.chatboxes.create('controlbox', {}, converse_core_converse.Controlbox); - model.trigger('show'); - return model; - }, - - /** - * Returns the controlbox view. - * @method _converse.api.controlbox.get - * @returns { View } View representing the controlbox - * @example const view = _converse.api.controlbox.get(); - */ - get() { - return converse_core_converse.chatboxviews.get('controlbox'); - } - - } - }); + core_api.listen.on('chatBoxViewsInitialized', controlbox_onChatBoxViewsInitialized); + core_api.listen.on('chatBoxesFetched', onChatBoxesFetched); + core_api.listen.on('cleanup', () => delete core_converse.controlboxtoggle); + core_api.listen.on('clearSession', controlbox_clearSession); + core_api.listen.on('disconnected', () => disconnect().renderLoginPanel()); + core_api.listen.on('will-reconnect', disconnect); + core_api.waitUntil('chatBoxViewsInitialized').then(addControlBox).catch(e => headless_log.fatal(e)); } }); // EXTERNAL MODULE: ./src/templates/dragresize.html -var dragresize = __webpack_require__(137); +var dragresize = __webpack_require__(178); var dragresize_default = /*#__PURE__*/__webpack_require__.n(dragresize); -// CONCATENATED MODULE: ./src/converse-dragresize.js +// CONCATENATED MODULE: ./src/plugins/dragresize.js /** * @module converse-dragresize * @copyright 2020, the Converse.js contributors @@ -95653,7 +100275,7 @@ var dragresize_default = /*#__PURE__*/__webpack_require__.n(dragresize); -const converse_dragresize_u = converse.env.utils; +const dragresize_u = converse.env.utils; function renderDragResizeHandles(_converse, view) { const flyout = view.el.querySelector('.box-flyout'); @@ -95691,8 +100313,8 @@ converse.plugins.add('converse-dragresize', { width = this.get('width'); const save = this.get('id') === 'controlbox' ? a => this.set(a) : a => this.save(a); save({ - 'height': converse_dragresize_u.applyDragResistance(height, this.get('default_height')), - 'width': converse_dragresize_u.applyDragResistance(width, this.get('default_width')) + 'height': dragresize_u.applyDragResistance(height, this.get('default_height')), + 'width': dragresize_u.applyDragResistance(width, this.get('default_width')) }); return result; } @@ -95782,7 +100404,7 @@ converse.plugins.add('converse-dragresize', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'allow_dragresize': true }); const dragResizable = { @@ -95815,7 +100437,7 @@ converse.plugins.add('converse-dragresize', { this.prev_pageY = 0; this.prev_pageX = 0; - if ((_converse$connection = converse_core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connected) { + if ((_converse$connection = core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connected) { this.height = this.model.get('height'); this.width = this.model.get('width'); } @@ -95826,7 +100448,7 @@ converse.plugins.add('converse-dragresize', { resizeChatBox(ev) { let diff; - if (converse_core_converse.resizing.direction.indexOf('top') === 0) { + if (core_converse.resizing.direction.indexOf('top') === 0) { diff = ev.pageY - this.prev_pageY; if (diff) { @@ -95836,7 +100458,7 @@ converse.plugins.add('converse-dragresize', { } } - if (converse_core_converse.resizing.direction.includes('left')) { + if (core_converse.resizing.direction.includes('left')) { diff = this.prev_pageX - ev.pageX; if (diff) { @@ -95864,7 +100486,7 @@ converse.plugins.add('converse-dragresize', { setChatBoxHeight(height) { if (height) { - height = converse_dragresize_u.applyDragResistance(height, this.model.get('default_height')) + 'px'; + height = dragresize_u.applyDragResistance(height, this.model.get('default_height')) + 'px'; } else { height = ""; } @@ -95878,7 +100500,7 @@ converse.plugins.add('converse-dragresize', { setChatBoxWidth(width) { if (width) { - width = converse_dragresize_u.applyDragResistance(width, this.model.get('default_width')) + 'px'; + width = dragresize_u.applyDragResistance(width, this.model.get('default_width')) + 'px'; } else { width = ""; } @@ -95909,7 +100531,7 @@ converse.plugins.add('converse-dragresize', { }, onStartVerticalResize(ev, trigger = true) { - if (!converse_core_api.settings.get('allow_dragresize')) { + if (!core_api.settings.get('allow_dragresize')) { return true; } @@ -95918,7 +100540,7 @@ converse.plugins.add('converse-dragresize', { const flyout = this.el.querySelector('.box-flyout'), style = window.getComputedStyle(flyout); this.height = parseInt(style.height.replace(/px$/, ''), 10); - converse_core_converse.resizing = { + core_converse.resizing = { 'chatbox': this, 'direction': 'top' }; @@ -95930,12 +100552,12 @@ converse.plugins.add('converse-dragresize', { * @event _converse#startVerticalResize * @example _converse.api.listen.on('startVerticalResize', (view) => { ... }); */ - converse_core_api.trigger('startVerticalResize', this); + core_api.trigger('startVerticalResize', this); } }, onStartHorizontalResize(ev, trigger = true) { - if (!converse_core_api.settings.get('allow_dragresize')) { + if (!core_api.settings.get('allow_dragresize')) { return true; } @@ -95943,7 +100565,7 @@ converse.plugins.add('converse-dragresize', { const flyout = this.el.querySelector('.box-flyout'), style = window.getComputedStyle(flyout); this.width = parseInt(style.width.replace(/px$/, ''), 10); - converse_core_converse.resizing = { + core_converse.resizing = { 'chatbox': this, 'direction': 'left' }; @@ -95955,27 +100577,27 @@ converse.plugins.add('converse-dragresize', { * @event _converse#startHorizontalResize * @example _converse.api.listen.on('startHorizontalResize', (view) => { ... }); */ - converse_core_api.trigger('startHorizontalResize', this); + core_api.trigger('startHorizontalResize', this); } }, onStartDiagonalResize(ev) { this.onStartHorizontalResize(ev, false); this.onStartVerticalResize(ev, false); - converse_core_converse.resizing.direction = 'topleft'; + core_converse.resizing.direction = 'topleft'; /** * Triggered once the user starts to diagonally resize a {@link _converse.ChatBoxView} * @event _converse#startDiagonalResize * @example _converse.api.listen.on('startDiagonalResize', (view) => { ... }); */ - converse_core_api.trigger('startDiagonalResize', this); + core_api.trigger('startDiagonalResize', this); } }; - Object.assign(converse_core_converse.ChatBoxView.prototype, dragResizable); + Object.assign(core_converse.ChatBoxView.prototype, dragResizable); - converse_dragresize_u.applyDragResistance = function (value, default_value) { + dragresize_u.applyDragResistance = function (value, default_value) { /* This method applies some resistance around the * default_value. If value is close enough to * default_value, then default_value is returned instead. @@ -95996,43 +100618,43 @@ converse.plugins.add('converse-dragresize', { }; function onMouseMove(ev) { - if (!converse_core_converse.resizing || !converse_core_api.settings.get('allow_dragresize')) { + if (!core_converse.resizing || !core_api.settings.get('allow_dragresize')) { return true; } ev.preventDefault(); - converse_core_converse.resizing.chatbox.resizeChatBox(ev); + core_converse.resizing.chatbox.resizeChatBox(ev); } function onMouseUp(ev) { - if (!converse_core_converse.resizing || !converse_core_api.settings.get('allow_dragresize')) { + if (!core_converse.resizing || !core_api.settings.get('allow_dragresize')) { return true; } ev.preventDefault(); - const height = converse_dragresize_u.applyDragResistance(converse_core_converse.resizing.chatbox.height, converse_core_converse.resizing.chatbox.model.get('default_height')); - const width = converse_dragresize_u.applyDragResistance(converse_core_converse.resizing.chatbox.width, converse_core_converse.resizing.chatbox.model.get('default_width')); + const height = dragresize_u.applyDragResistance(core_converse.resizing.chatbox.height, core_converse.resizing.chatbox.model.get('default_height')); + const width = dragresize_u.applyDragResistance(core_converse.resizing.chatbox.width, core_converse.resizing.chatbox.model.get('default_width')); - if (converse_core_api.connection.connected()) { - converse_core_converse.resizing.chatbox.model.save({ + if (core_api.connection.connected()) { + core_converse.resizing.chatbox.model.save({ 'height': height }); - converse_core_converse.resizing.chatbox.model.save({ + core_converse.resizing.chatbox.model.save({ 'width': width }); } else { - converse_core_converse.resizing.chatbox.model.set({ + core_converse.resizing.chatbox.model.set({ 'height': height }); - converse_core_converse.resizing.chatbox.model.set({ + core_converse.resizing.chatbox.model.set({ 'width': width }); } - converse_core_converse.resizing = null; + core_converse.resizing = null; } /************************ BEGIN Event Handlers ************************/ @@ -96047,14 +100669,14 @@ converse.plugins.add('converse-dragresize', { document.removeEventListener('mouseup', onMouseUp); } - converse_core_api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers); - converse_core_api.listen.on('unregisteredGlobalEventHandlers', unregisterGlobalEventHandlers); - converse_core_api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions()); + core_api.listen.on('registeredGlobalEventHandlers', registerGlobalEventHandlers); + core_api.listen.on('unregisteredGlobalEventHandlers', unregisterGlobalEventHandlers); + core_api.listen.on('beforeShowingChatView', view => view.initDragResize().setDimensions()); /************************ END Event Handlers ************************/ } }); -// CONCATENATED MODULE: ./src/converse-singleton.js +// CONCATENATED MODULE: ./src/plugins/singleton.js /** * @module converse-singleton * @copyright JC Brand @@ -96071,7 +100693,7 @@ converse.plugins.add('converse-singleton', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'allow_logout': false, // No point in logging out when we have auto_login as true. 'allow_muc_invitations': false, @@ -96080,17 +100702,17 @@ converse.plugins.add('converse-singleton', { 'hide_muc_server': true }); - if (!Array.isArray(converse_core_api.settings.get('auto_join_rooms')) && !Array.isArray(converse_core_api.settings.get('auto_join_private_chats'))) { + if (!Array.isArray(core_api.settings.get('auto_join_rooms')) && !Array.isArray(core_api.settings.get('auto_join_private_chats'))) { throw new Error("converse-singleton: auto_join_rooms must be an Array"); } - if (converse_core_api.settings.get('auto_join_rooms').length > 1 || converse_core_api.settings.get('auto_join_private_chats').length > 1) { + if (core_api.settings.get('auto_join_rooms').length > 1 || core_api.settings.get('auto_join_private_chats').length > 1) { throw new Error("It doesn't make sense to have singleton set to true and " + "auto_join_rooms or auto_join_private_chats set to more then one, " + "since only one chat room may be open at any time."); } } }); -// CONCATENATED MODULE: ./src/converse-fullscreen.js +// CONCATENATED MODULE: ./src/plugins/fullscreen.js /** * @module converse-fullscreen * @license Mozilla Public License (MPLv2) @@ -96107,7 +100729,7 @@ converse.plugins.add('converse-fullscreen', { }, initialize() { - converse_core_api.settings.extend({ + core_api.settings.extend({ chatview_avatar_height: 50, chatview_avatar_width: 50, hide_open_bookmarks: true, @@ -96117,7 +100739,7 @@ converse.plugins.add('converse-fullscreen', { } }); -// CONCATENATED MODULE: ./src/converse-mam-views.js +// CONCATENATED MODULE: ./src/plugins/mam-views.js /** * @module converse-mam-views * @description @@ -96130,12 +100752,14 @@ converse.plugins.add('converse-mam-views', { dependencies: ['converse-mam', 'converse-chatview', 'converse-muc-views'], initialize() { - converse_core_api.listen.on('chatBoxScrolledUp', async view => { + core_api.listen.on('chatBoxScrolledUp', async view => { if (view.model.messages.length) { + const is_groupchat = view.model.get('type') === core_converse.CHATROOMS_TYPE; + const oldest_message = view.model.getOldestMessage(); if (oldest_message) { - const by_jid = view.model.get('jid'); + const by_jid = is_groupchat ? view.model.get('jid') : core_converse.bare_jid; const stanza_id = oldest_message && oldest_message.get("stanza_id ".concat(by_jid)); view.addSpinner(); @@ -96149,7 +100773,7 @@ converse.plugins.add('converse-mam-views', { }); } - view.clearSpinner(); + view.clearSpinner(); // _converse.router.history.navigate(`#${oldest_message.get('msgid')}`); } } }); @@ -96160,7 +100784,7 @@ converse.plugins.add('converse-mam-views', { function trimmed_chat_templateObject2() { const data = trimmed_chat_taggedTemplateLiteral(["<span class=\"message-count badge badge-light\">", "</span>"]); - trimmed_chat_templateObject2 = function _templateObject2() { + trimmed_chat_templateObject2 = function () { return data; }; @@ -96170,7 +100794,7 @@ function trimmed_chat_templateObject2() { function trimmed_chat_templateObject() { const data = trimmed_chat_taggedTemplateLiteral(["\n <div class=\"chat-head-", " chat-head row no-gutters\">\n <a class=\"restore-chat w-100 align-self-center\" title=\"", "\" @click=", ">\n ", "\n ", "\n </a>\n <a class=\"chatbox-btn close-chatbox-button fa fa-times\" @click=", "></a>\n </div>"]); - trimmed_chat_templateObject = function _templateObject() { + trimmed_chat_templateObject = function () { return data; }; @@ -96222,7 +100846,7 @@ class minimized_chat_MinimizedChat extends element_CustomElement { close(ev) { ev === null || ev === void 0 ? void 0 : ev.preventDefault(); - const view = converse_core_converse.chatboxviews.get(this.model.get('id')); + const view = core_converse.chatboxviews.get(this.model.get('id')); if (view) { // This will call model.destroy(), removing it from the @@ -96230,7 +100854,7 @@ class minimized_chat_MinimizedChat extends element_CustomElement { view.close(); } else { this.model.destroy(); - converse_core_api.trigger('chatBoxClosed', this); + core_api.trigger('chatBoxClosed', this); } } @@ -96240,12 +100864,12 @@ class minimized_chat_MinimizedChat extends element_CustomElement { } } -converse_core_api.elements.define('converse-minimized-chat', minimized_chat_MinimizedChat); +core_api.elements.define('converse-minimized-chat', minimized_chat_MinimizedChat); // CONCATENATED MODULE: ./src/templates/chats_panel.js function chats_panel_templateObject2() { const data = chats_panel_taggedTemplateLiteral(["<converse-minimized-chat\n .model=", "\n title=", "\n type=", "\n num_unread=", "></converse-minimized-chat>"]); - chats_panel_templateObject2 = function _templateObject2() { + chats_panel_templateObject2 = function () { return data; }; @@ -96255,7 +100879,7 @@ function chats_panel_templateObject2() { function chats_panel_templateObject() { const data = chats_panel_taggedTemplateLiteral(["<div id=\"minimized-chats\" class=\"", "\">\n <a id=\"toggle-minimized-chats\" class=\"row no-gutters\" @click=", ">\n ", " ", "\n <span class=\"unread-message-count ", "\" href=\"#\">", "</span>\n </a>\n <div class=\"flyout minimized-chats-flyout row no-gutters ", "\">\n ", "\n </div>\n </div>"]); - chats_panel_templateObject = function _templateObject() { + chats_panel_templateObject = function () { return data; }; @@ -96267,7 +100891,7 @@ function chats_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = str /* harmony default export */ var chats_panel = (o => lit_html_html(chats_panel_templateObject(), o.chats.length ? '' : 'hidden', o.toggle, o.num_minimized, i18n_('Minimized'), !o.num_unread ? 'unread-message-count-hidden' : '', o.num_unread, o.collapsed ? 'hidden' : '', o.chats.map(chat => lit_html_html(chats_panel_templateObject2(), chat, chat.getDisplayName(), chat.get('type'), chat.get('num_unread'))))); -// CONCATENATED MODULE: ./src/converse-minimize.js +// CONCATENATED MODULE: ./src/plugins/minimize.js /** * @module converse-minimize * @copyright 2020, the Converse.js contributors @@ -96283,9 +100907,9 @@ function chats_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = str const { - dayjs: converse_minimize_dayjs + dayjs: minimize_dayjs } = converse.env; -const converse_minimize_u = converse.env.utils; +const minimize_u = converse.env.utils; converse.plugins.add('converse-minimize', { /* Optional dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -96323,7 +100947,7 @@ converse.plugins.add('converse-minimize', { this.save({ 'minimized': this.get('minimized') || false, - 'time_minimized': this.get('time_minimized') || converse_minimize_dayjs() + 'time_minimized': this.get('time_minimized') || minimize_dayjs() }); }, @@ -96359,10 +100983,6 @@ converse.plugins.add('converse-minimize', { return this.model.get('minimized') || this.__super__.isNewMessageHidden.apply(this, arguments); }, - shouldShowOnTextMessage() { - return !this.model.get('minimized') && this.__super__.shouldShowOnTextMessage.apply(this, arguments); - }, - setChatBoxHeight(height) { if (!this.model.get('minimized')) { return this.__super__.setChatBoxHeight.call(this, height); @@ -96382,26 +101002,26 @@ converse.plugins.add('converse-minimize', { /* The initialize function gets called as soon as the plugin is * loaded by Converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'no_trimming': false }); const minimizableChatBox = { maximize() { - converse_minimize_u.safeSave(this, { + minimize_u.safeSave(this, { 'minimized': false, 'time_opened': new Date().getTime() }); }, minimize() { - converse_minimize_u.safeSave(this, { + minimize_u.safeSave(this, { 'minimized': true, 'time_minimized': new Date().toISOString() }); } }; - Object.assign(converse_core_converse.ChatBox.prototype, minimizableChatBox); + Object.assign(core_converse.ChatBox.prototype, minimizableChatBox); const minimizableChatBoxView = { /** * Handler which gets called when a {@link _converse#ChatBox} has it's @@ -96430,7 +101050,7 @@ converse.plugins.add('converse-minimize', { * @example _converse.api.listen.on('chatBoxMaximized', view => { ... }); */ - converse_core_api.trigger('chatBoxMaximized', this); + core_api.trigger('chatBoxMaximized', this); return this; }, @@ -96471,7 +101091,7 @@ converse.plugins.add('converse-minimize', { * @example _converse.api.listen.on('chatBoxMinimized', view => { ... }); */ - converse_core_api.trigger('chatBoxMinimized', this); + core_api.trigger('chatBoxMinimized', this); return this; }, @@ -96497,20 +101117,20 @@ converse.plugins.add('converse-minimize', { } }; - Object.assign(converse_core_converse.ChatBoxView.prototype, minimizableChatBoxView); + Object.assign(core_converse.ChatBoxView.prototype, minimizableChatBoxView); const chatTrimmer = { getChatBoxWidth(view) { if (view.model.get('id') === 'controlbox') { const controlbox = this.get('controlbox'); // We return the width of the controlbox or its toggle, // depending on which is visible. - if (!controlbox || !converse_minimize_u.isVisible(controlbox.el)) { - return converse_minimize_u.getOuterWidth(converse_core_converse.controlboxtoggle.el, true); + if (!controlbox || !minimize_u.isVisible(controlbox.el)) { + return minimize_u.getOuterWidth(core_converse.controlboxtoggle.el, true); } else { - return converse_minimize_u.getOuterWidth(controlbox.el, true); + return minimize_u.getOuterWidth(controlbox.el, true); } - } else if (!view.model.get('minimized') && converse_minimize_u.isVisible(view.el)) { - return converse_minimize_u.getOuterWidth(view.el, true); + } else if (!view.model.get('minimized') && minimize_u.isVisible(view.el)) { + return minimize_u.getOuterWidth(view.el, true); } return 0; @@ -96520,19 +101140,19 @@ converse.plugins.add('converse-minimize', { return this.filter(view => // The controlbox can take a while to close, // so we need to check its state. That's why we checked // the 'closed' state. - !view.model.get('minimized') && !view.model.get('closed') && converse_minimize_u.isVisible(view.el)); + !view.model.get('minimized') && !view.model.get('closed') && minimize_u.isVisible(view.el)); }, getMinimizedWidth() { var _converse$minimized_c; - const minimized_el = (_converse$minimized_c = converse_core_converse.minimized_chats) === null || _converse$minimized_c === void 0 ? void 0 : _converse$minimized_c.el; - return this.model.pluck('minimized').includes(true) ? converse_minimize_u.getOuterWidth(minimized_el, true) : 0; + const minimized_el = (_converse$minimized_c = core_converse.minimized_chats) === null || _converse$minimized_c === void 0 ? void 0 : _converse$minimized_c.el; + return this.model.pluck('minimized').includes(true) ? minimize_u.getOuterWidth(minimized_el, true) : 0; }, getBoxesWidth(newchat) { const new_id = newchat ? newchat.model.get('id') : null; - const newchat_width = newchat ? converse_minimize_u.getOuterWidth(newchat.el, true) : 0; + const newchat_width = newchat ? minimize_u.getOuterWidth(newchat.el, true) : 0; return Object.values(this.xget(new_id)).reduce((memo, view) => memo + this.getChatBoxWidth(view), newchat_width); }, @@ -96548,7 +101168,7 @@ converse.plugins.add('converse-minimize', { async trimChats(newchat) { var _converse$minimized_c2; - if (converse_core_api.settings.get('no_trimming') || !converse_core_api.connection.connected() || converse_core_api.settings.get("view_mode") !== 'overlayed') { + if (core_api.settings.get('no_trimming') || !core_api.connection.connected() || core_api.settings.get("view_mode") !== 'overlayed') { return; } @@ -96558,7 +101178,7 @@ converse.plugins.add('converse-minimize', { return; } - const body_width = converse_minimize_u.getOuterWidth(document.querySelector('body'), true); + const body_width = minimize_u.getOuterWidth(document.querySelector('body'), true); if (this.getChatBoxWidth(shown_chats[0]) === body_width) { // If the chats shown are the same width as the body, @@ -96567,8 +101187,8 @@ converse.plugins.add('converse-minimize', { return; } - await converse_core_api.waitUntil('minimizedChatsInitialized'); - const minimized_el = (_converse$minimized_c2 = converse_core_converse.minimized_chats) === null || _converse$minimized_c2 === void 0 ? void 0 : _converse$minimized_c2.el; + await core_api.waitUntil('minimizedChatsInitialized'); + const minimized_el = (_converse$minimized_c2 = core_converse.minimized_chats) === null || _converse$minimized_c2 === void 0 ? void 0 : _converse$minimized_c2.el; if (minimized_el) { while (this.getMinimizedWidth() + this.getBoxesWidth(newchat) > body_width) { @@ -96613,14 +101233,14 @@ converse.plugins.add('converse-minimize', { } }; - Object.assign(converse_core_converse.ChatBoxViews.prototype, chatTrimmer); - converse_core_api.promises.add('minimizedChatsInitialized'); - converse_core_converse.MinimizedChatsToggle = model_Model.extend({ + Object.assign(core_converse.ChatBoxViews.prototype, chatTrimmer); + core_api.promises.add('minimizedChatsInitialized'); + core_converse.MinimizedChatsToggle = model_Model.extend({ defaults: { 'collapsed': false } }); - converse_core_converse.MinimizedChats = view_View.extend({ + core_converse.MinimizedChats = View.extend({ tagName: 'span', async initialize() { @@ -96655,16 +101275,16 @@ converse.plugins.add('converse-minimize', { render_render(chats_panel(data), this.el); if (!this.el.parentElement) { - converse_core_converse.chatboxviews.insertRowColumn(this.el); + core_converse.chatboxviews.insertRowColumn(this.el); } }, async initToggle() { - const id = "converse.minchatstoggle-".concat(converse_core_converse.bare_jid); - this.minchats = new converse_core_converse.MinimizedChatsToggle({ + const id = "converse.minchatstoggle-".concat(core_converse.bare_jid); + this.minchats = new core_converse.MinimizedChatsToggle({ id }); - this.minchats.browserStorage = converse_core_converse.createStore(id); + this.minchats.browserStorage = core_converse.createStore(id); await new Promise(resolve => this.minchats.fetch({ 'success': resolve, 'error': resolve @@ -96683,9 +101303,9 @@ converse.plugins.add('converse-minimize', { function initMinimizedChats() { var _converse$minimized_c3; - (_converse$minimized_c3 = converse_core_converse.minimized_chats) === null || _converse$minimized_c3 === void 0 ? void 0 : _converse$minimized_c3.remove(); - converse_core_converse.minimized_chats = new converse_core_converse.MinimizedChats({ - model: converse_core_converse.chatboxes + (_converse$minimized_c3 = core_converse.minimized_chats) === null || _converse$minimized_c3 === void 0 ? void 0 : _converse$minimized_c3.remove(); + core_converse.minimized_chats = new core_converse.MinimizedChats({ + model: core_converse.chatboxes }); /** * Triggered once the _converse.MinimizedChats instance has been initialized @@ -96693,7 +101313,7 @@ converse.plugins.add('converse-minimize', { * @example _converse.api.listen.on('minimizedChatsInitialized', () => { ... }); */ - converse_core_api.trigger('minimizedChatsInitialized'); + core_api.trigger('minimizedChatsInitialized'); } function addMinimizeButtonToChat(view, buttons) { @@ -96704,7 +101324,7 @@ converse.plugins.add('converse-minimize', { 'i18n_title': i18n_('Minimize this chat'), 'icon_class': "fa-minus", 'name': 'minimize', - 'standalone': converse_core_converse.api.settings.get("view_mode") === 'overlayed' + 'standalone': core_converse.api.settings.get("view_mode") === 'overlayed' }; const names = buttons.map(t => t.name); const idx = names.indexOf('close'); @@ -96719,7 +101339,7 @@ converse.plugins.add('converse-minimize', { 'i18n_title': i18n_('Minimize this groupchat'), 'icon_class': "fa-minus", 'name': 'minimize', - 'standalone': converse_core_converse.api.settings.get("view_mode") === 'overlayed' + 'standalone': core_converse.api.settings.get("view_mode") === 'overlayed' }; const names = buttons.map(t => t.name); const idx = names.indexOf('signout'); @@ -96728,240 +101348,395 @@ converse.plugins.add('converse-minimize', { /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('chatBoxInsertedIntoDOM', view => converse_core_converse.chatboxviews.trimChats(view)); - converse_core_api.listen.on('connected', () => initMinimizedChats()); - converse_core_api.listen.on('controlBoxOpened', view => converse_core_converse.chatboxviews.trimChats(view)); - converse_core_api.listen.on('chatBoxViewInitialized', v => v.listenTo(v.model, 'change:minimized', v.onMinimizedChanged)); - converse_core_api.listen.on('chatRoomViewInitialized', view => { + core_api.listen.on('chatBoxInsertedIntoDOM', view => core_converse.chatboxviews.trimChats(view)); + core_api.listen.on('connected', () => initMinimizedChats()); + core_api.listen.on('controlBoxOpened', view => core_converse.chatboxviews.trimChats(view)); + core_api.listen.on('chatBoxViewInitialized', v => v.listenTo(v.model, 'change:minimized', v.onMinimizedChanged)); + core_api.listen.on('chatRoomViewInitialized', view => { view.listenTo(view.model, 'change:minimized', view.onMinimizedChanged); view.model.get('minimized') && view.hide(); }); - converse_core_api.listen.on('getHeadingButtons', (view, buttons) => { - if (view.model.get('type') === converse_core_converse.CHATROOMS_TYPE) { + core_api.listen.on('getHeadingButtons', (view, buttons) => { + if (view.model.get('type') === core_converse.CHATROOMS_TYPE) { return addMinimizeButtonToMUC(view, buttons); } else { return addMinimizeButtonToChat(view, buttons); } }); - const debouncedTrimChats = lodash_es_debounce(() => converse_core_converse.chatboxviews.trimChats(), 250); - converse_core_api.listen.on('registeredGlobalEventHandlers', () => window.addEventListener("resize", debouncedTrimChats)); - converse_core_api.listen.on('unregisteredGlobalEventHandlers', () => window.removeEventListener("resize", debouncedTrimChats)); + const debouncedTrimChats = lodash_es_debounce(() => core_converse.chatboxviews.trimChats(), 250); + core_api.listen.on('registeredGlobalEventHandlers', () => window.addEventListener("resize", debouncedTrimChats)); + core_api.listen.on('unregisteredGlobalEventHandlers', () => window.removeEventListener("resize", debouncedTrimChats)); /************************ END Event Handlers ************************/ } }); -// CONCATENATED MODULE: ./src/templates/add_chatroom_modal.js -function add_chatroom_modal_templateObject4() { - const data = add_chatroom_modal_taggedTemplateLiteral(["<div class=\"form-group\">", "</div>"]); +// CONCATENATED MODULE: ./src/templates/occupant.js +function occupant_templateObject6() { + const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-secondary\">", "</span>"]); - add_chatroom_modal_templateObject4 = function _templateObject4() { + occupant_templateObject6 = function () { return data; }; return data; } -function add_chatroom_modal_templateObject3() { - const data = add_chatroom_modal_taggedTemplateLiteral(["<label class=\"roomid-policy-error\">", "</label>"]); +function occupant_templateObject5() { + const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); - add_chatroom_modal_templateObject3 = function _templateObject3() { + occupant_templateObject5 = function () { return data; }; return data; } -function add_chatroom_modal_templateObject2() { - const data = add_chatroom_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"add-chatroom-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form add-chatroom\">\n <div class=\"form-group\">\n <label for=\"chatroom\">", ":</label>\n ", "\n <input type=\"text\" required=\"required\" name=\"chatroom\" class=\"form-control roomjid-input\" placeholder=\"", "\"/>\n </div>\n ", "\n ", "\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"", "\" ?disabled=", ">\n </form>\n </div>\n </div>\n </div>\n "]); +function occupant_templateObject4() { + const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); - add_chatroom_modal_templateObject2 = function _templateObject2() { + occupant_templateObject4 = function () { return data; }; return data; } -function add_chatroom_modal_templateObject() { - const data = add_chatroom_modal_taggedTemplateLiteral(["\n <div class=\"form-group\" >\n <label for=\"nickname\">", ":</label>\n <input type=\"text\" title=\"", "\" required=\"required\" name=\"nickname\" value=\"", "\" class=\"form-control\"/>\n </div>\n "]); +function occupant_templateObject3() { + const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); - add_chatroom_modal_templateObject = function _templateObject() { + occupant_templateObject3 = function () { return data; }; return data; } -function add_chatroom_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function occupant_templateObject2() { + const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-groupchat\">", "</span>"]); + occupant_templateObject2 = function () { + return data; + }; + return data; +} +function occupant_templateObject() { + const data = occupant_taggedTemplateLiteral(["\n <li class=\"occupant\" id=\"", "\" title=\"", "\">\n <div class=\"row no-gutters\">\n <div class=\"col-auto\">\n <div class=\"occupant-status occupant-", " circle\" title=\"", "\"></div>\n </div>\n <div class=\"col occupant-nick-badge\">\n <span class=\"occupant-nick\">", "</span>\n <span class=\"occupant-badges\">\n ", "\n ", "\n ", "\n ", "\n ", "\n </span>\n </div>\n </div>\n </li>\n "]); + occupant_templateObject = function () { + return data; + }; + return data; +} +function occupant_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -const nickname_input = o => { - const i18n_nickname = i18n_('Nickname'); - const i18n_required_field = i18n_('This field is required'); - return lit_html_html(add_chatroom_modal_templateObject(), i18n_nickname, i18n_required_field, o.nick || ''); + +const occupant_title = o => { + const i18n_moderator_hint = i18n_('This user is a moderator.'); + + const i18n_participant_hint = i18n_('This user can send messages in this groupchat.'); + + const i18n_visitor_hint = i18n_('This user can NOT send messages in this groupchat.'); + + const spaced_jid = "".concat(o.jid, " ") || false; + + if (o.role === "moderator") { + return "".concat(spaced_jid).concat(i18n_moderator_hint, " ").concat(o.hint_occupant); + } else if (o.role === "participant") { + return "".concat(spaced_jid).concat(i18n_participant_hint, " ").concat(o.hint_occupant); + } else if (o.role === "visitor") { + return "".concat(spaced_jid).concat(i18n_visitor_hint, " ").concat(o.hint_occupant); + } else if (!["visitor", "participant", "moderator"].includes(o.role)) { + return "".concat(spaced_jid).concat(o.hint_occupant); + } }; -/* harmony default export */ var add_chatroom_modal = (o => { - const i18n_join = i18n_('Join'); +/* harmony default export */ var templates_occupant = (o => { + const i18n_owner = i18n_('Owner'); - const i18n_enter = i18n_('Enter a new Groupchat'); + const i18n_admin = i18n_('Admin'); - return lit_html_html(add_chatroom_modal_templateObject2(), i18n_enter, modal_header_close_button, o.label_room_address, o.muc_roomid_policy_error_msg ? lit_html_html(add_chatroom_modal_templateObject3(), o.muc_roomid_policy_error_msg) : '', o.chatroom_placeholder, o.muc_roomid_policy_hint ? lit_html_html(add_chatroom_modal_templateObject4(), unsafeHTML(xss_default.a.filterXSS(o.muc_roomid_policy_hint, { - 'whiteList': { - b: [], - br: [], - em: [] - } - }))) : '', !o._converse.locked_muc_nickname ? nickname_input(o) : '', i18n_join || '', o.muc_roomid_policy_error_msg); + const i18n_member = i18n_('Member'); + + const i18n_moderator = i18n_('Moderator'); + + const i18n_visitor = i18n_('Visitor'); + + return lit_html_html(occupant_templateObject(), o.id, occupant_title(o), o.show, o.hint_show, o.nick || o.jid, o.affiliation === "owner" ? lit_html_html(occupant_templateObject2(), i18n_owner) : '', o.affiliation === "admin" ? lit_html_html(occupant_templateObject3(), i18n_admin) : '', o.affiliation === "member" ? lit_html_html(occupant_templateObject4(), i18n_member) : '', o.role === "moderator" ? lit_html_html(occupant_templateObject5(), i18n_moderator) : '', o.role === "visitor" ? lit_html_html(occupant_templateObject6(), i18n_visitor) : ''); }); -// EXTERNAL MODULE: ./node_modules/strophe.js/src/strophe.js -var src_strophe = __webpack_require__(20); +// CONCATENATED MODULE: ./src/templates/muc_sidebar.js +function muc_sidebar_templateObject() { + const data = muc_sidebar_taggedTemplateLiteral(["\n <div class=\"occupants-header\">\n <i class=\"hide-occupants fa fa-times\"></i>\n <div class=\"occupants-header--title\">\n <span class=\"occupants-heading\">", "</span>\n </div>\n </div>\n <div class=\"dragresize dragresize-occupants-left\"></div>\n <ul class=\"occupant-list\">", "</ul>\n "]); -// CONCATENATED MODULE: ./src/modals/add-muc.js + muc_sidebar_templateObject = function () { + return data; + }; + return data; +} +function muc_sidebar_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -const add_muc_u = converse.env.utils; -/* harmony default export */ var add_muc = (BootstrapModal.extend({ - id: 'add-chatroom-modal', - events: { - 'submit form.add-chatroom': 'openChatRoom', - 'keyup .roomjid-input': 'checkRoomidPolicy', - 'change .roomjid-input': 'checkRoomidPolicy' - }, - initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); - this.listenTo(this.model, 'change:muc_domain', this.render); - this.muc_roomid_policy_error_msg = null; - }, +const PRETTY_CHAT_STATUS = { + 'offline': 'Offline', + 'unavailable': 'Unavailable', + 'xa': 'Extended Away', + 'away': 'Away', + 'dnd': 'Do not disturb', + 'chat': 'Chattty', + 'online': 'Online' +}; +/* harmony default export */ var muc_sidebar = (o => { + const i18n_occupant_hint = occupant => i18n_('Click to mention %1$s in your message.', occupant.get('nick')); - toHTML() { - let placeholder = ''; + const i18n_participants = i18n_('Participants'); - if (!converse_core_api.settings.get('locked_muc_domain')) { - const muc_domain = this.model.get('muc_domain') || converse_core_api.settings.get('muc_domain'); - placeholder = muc_domain ? "name@".concat(muc_domain) : i18n_('name@conference.example.org'); - } + const occupant_tpls = o.occupants.map(occupant => { + return templates_occupant(Object.assign({ + 'jid': '', + 'hint_show': PRETTY_CHAT_STATUS[occupant.get('show')], + 'hint_occupant': i18n_occupant_hint(occupant) + }, occupant.toJSON())); + }); + return lit_html_html(muc_sidebar_templateObject(), i18n_participants, occupant_tpls); +}); +// CONCATENATED MODULE: ./src/components/muc-sidebar.js - return add_chatroom_modal(Object.assign(this.model.toJSON(), { - '_converse': converse_core_converse, - 'label_room_address': converse_core_api.settings.get('muc_domain') ? i18n_('Groupchat name') : i18n_('Groupchat address'), - 'chatroom_placeholder': placeholder, - 'muc_roomid_policy_error_msg': this.muc_roomid_policy_error_msg, - 'muc_roomid_policy_hint': converse_core_api.settings.get('muc_roomid_policy_hint') + + + +const muc_sidebar_u = converse.env.utils; +class muc_sidebar_MUCSidebar extends element_CustomElement { + static get properties() { + return { + chatroom: { + type: Object + }, + occupants: { + type: Object + } + }; + } + + connectedCallback() { + super.connectedCallback(); + this.listenTo(this.occupants, 'add', this.requestUpdate); + this.listenTo(this.occupants, 'remove', this.requestUpdate); + this.listenTo(this.occupants, 'change', this.requestUpdate); + } + + render() { + const tpl = muc_sidebar(Object.assign(this.chatroom.toJSON(), { + 'occupants': [...this.occupants.models] })); - }, + return tpl; + } - afterRender() { - this.el.addEventListener('shown.bs.modal', () => { - this.el.querySelector('input[name="chatroom"]').focus(); - }, false); + shouldShow() { + return !this.chatroom.get('hidden_occupants') && this.chatroom.session.get('connection_status') === converse.ROOMSTATUS.ENTERED; + } + + setVisibility() { + // TODO: We're still manually showing/hiding stuff in ChatRoomView, + // eventually we want everything to render declaratively, after which this + // method won't be necessary anymore + this.shouldShow() ? muc_sidebar_u.showElement(this) : muc_sidebar_u.hideElement(this); + } + +} +core_api.elements.define('converse-muc-sidebar', muc_sidebar_MUCSidebar); +// CONCATENATED MODULE: ./src/templates/muc_config_form.js +function muc_config_form_templateObject2() { + const data = muc_config_form_taggedTemplateLiteral(["<p class=\"form-help\">", "</p>"]); + + muc_config_form_templateObject2 = function () { + return data; + }; + + return data; +} + +function muc_config_form_templateObject() { + const data = muc_config_form_taggedTemplateLiteral(["\n <form class=\"converse-form chatroom-form\" autocomplete=\"off\" @submit=", ">\n <fieldset class=\"form-group\">\n <legend>", "</legend>\n ", "\n <!-- Fields are generated internally, with xForm2webForm -->\n ", "\n </fieldset>\n <fieldset>\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\">\n <input type=\"button\" class=\"btn btn-secondary button-cancel\" value=\"", "\" @click=", ">\n </fieldset>\n </form>\n "]); + + muc_config_form_templateObject = function () { + return data; + }; + + return data; +} + +function muc_config_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + +/* harmony default export */ var muc_config_form = (o => { + const i18n_save = i18n_('Save'); + + const i18n_cancel = i18n_('Cancel'); + + return lit_html_html(muc_config_form_templateObject(), o.submitConfigForm, o.title, o.title !== o.instructions ? lit_html_html(muc_config_form_templateObject2(), o.instructions) : '', o.fields.map(field => unsafeHTML(field)), i18n_save, i18n_cancel, o.closeConfigForm); +}); +// CONCATENATED MODULE: ./src/plugins/muc-views/config-form.js + + + + + +const { + sizzle: config_form_sizzle +} = converse.env; +const config_form_u = converse.env.utils; +const MUCConfigForm = View.extend({ + className: 'chatroom-form-container muc-config-form', + + initialize(attrs) { + this.chatroomview = attrs.chatroomview; + this.listenTo(this.chatroomview.model.features, 'change:passwordprotected', this.render); + this.listenTo(this.chatroomview.model.features, 'change:config_stanza', this.render); + this.render(); }, - parseRoomDataFromEvent(form) { - const data = new FormData(form); - const jid = data.get('chatroom'); - let nick; + toHTML() { + var _stanza$querySelector, _stanza$querySelector2; - if (converse_core_api.settings.get('locked_muc_nickname')) { - nick = converse_core_converse.getDefaultMUCNickname(); + const stanza = config_form_u.toStanza(this.model.get('config_stanza')); + const whitelist = core_api.settings.get('roomconfig_whitelist'); + let fields = config_form_sizzle('field', stanza); - if (!nick) { - throw new Error("Using locked_muc_nickname but no nickname found!"); - } - } else { - nick = data.get('nickname').trim(); + if (whitelist.length) { + fields = fields.filter(f => whitelist.includes(f.getAttribute('var'))); } - return { - 'jid': jid, - 'nick': nick + const password_protected = this.model.features.get('passwordprotected'); + const options = { + 'new_password': !password_protected, + 'fixed_username': this.model.get('jid') }; + return muc_config_form({ + 'closeConfigForm': ev => this.closeConfigForm(ev), + 'fields': fields.map(f => config_form_u.xForm2webForm(f, stanza, options)), + 'instructions': (_stanza$querySelector = stanza.querySelector('instructions')) === null || _stanza$querySelector === void 0 ? void 0 : _stanza$querySelector.textContent, + 'submitConfigForm': ev => this.submitConfigForm(ev), + 'title': (_stanza$querySelector2 = stanza.querySelector('title')) === null || _stanza$querySelector2 === void 0 ? void 0 : _stanza$querySelector2.textContent + }); }, - openChatRoom(ev) { + async submitConfigForm(ev) { ev.preventDefault(); - const data = this.parseRoomDataFromEvent(ev.target); + const inputs = config_form_sizzle(':input:not([type=button]):not([type=submit])', ev.target); + const config_array = inputs.map(config_form_u.webForm2xForm).filter(f => f); - if (data.nick === "") { - // Make sure defaults apply if no nick is provided. - data.nick = undefined; - } + try { + await this.model.sendConfiguration(config_array); + } catch (e) { + headless_log.error(e); - let jid; + const message = i18n_("Sorry, an error occurred while trying to submit the config form.") + " " + i18n_("Check your browser's developer console for details."); - if (converse_core_api.settings.get('locked_muc_domain') || converse_core_api.settings.get('muc_domain') && !add_muc_u.isValidJID(data.jid)) { - jid = "".concat(src_strophe["b" /* Strophe */].escapeNode(data.jid), "@").concat(converse_core_api.settings.get('muc_domain')); - } else { - jid = data.jid; - this.model.setDomain(jid); + core_api.alert('error', i18n_('Error'), message); } - converse_core_api.rooms.open(jid, Object.assign(data, { - jid - }), true); - this.modal.hide(); - ev.target.reset(); + await this.model.refreshDiscoInfo(); + this.chatroomview.closeForm(); }, - checkRoomidPolicy() { - if (converse_core_api.settings.get('muc_roomid_policy') && converse_core_api.settings.get('muc_domain')) { - let jid = this.el.querySelector('.roomjid-input').value; + closeConfigForm(ev) { + ev.preventDefault(); + this.chatroomview.closeForm(); + } - if (converse.locked_muc_domain || !add_muc_u.isValidJID(jid)) { - jid = "".concat(src_strophe["b" /* Strophe */].escapeNode(jid), "@").concat(converse_core_api.settings.get('muc_domain')); - } +}); +/* harmony default export */ var config_form = (MUCConfigForm); +// CONCATENATED MODULE: ./src/templates/muc_password_form.js +function muc_password_form_templateObject() { + const data = muc_password_form_taggedTemplateLiteral(["\n <form class=\"converse-form chatroom-form converse-centered-form\" @submit=", ">\n <fieldset class=\"form-group\">\n <label>", "</label>\n <p class=\"validation-message\">", "</p>\n <input class=\"hidden-username\" type=\"text\" autocomplete=\"username\" value=\"", "\"></input>\n <input type=\"password\"\n name=\"password\"\n required=\"required\"\n class=\"form-control ", "\"\n placeholder=\"", "\"/>\n </fieldset>\n <fieldset class=\"form-group\">\n <input class=\"btn btn-primary\" type=\"submit\" value=\"", "\"/>\n </fieldset>\n </form>\n "]); - const roomid = src_strophe["b" /* Strophe */].getNodeFromJid(jid); - const roomdomain = src_strophe["b" /* Strophe */].getDomainFromJid(jid); + muc_password_form_templateObject = function () { + return data; + }; - if (converse_core_api.settings.get('muc_domain') !== roomdomain || converse_core_api.settings.get('muc_roomid_policy').test(roomid)) { - this.muc_roomid_policy_error_msg = null; - } else { - this.muc_roomid_policy_error_msg = i18n_('Groupchat id is invalid.'); - } + return data; +} - this.render(); - } +function muc_password_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + +/* harmony default export */ var muc_password_form = (o => { + const i18n_heading = i18n_('This groupchat requires a password'); + + const i18n_password = i18n_('Password: '); + + const i18n_submit = i18n_('Submit'); + + return lit_html_html(muc_password_form_templateObject(), o.submitPassword, i18n_heading, o.validation_message, o.jid, o.validation_message ? 'error' : '', i18n_password, i18n_submit); +}); +// CONCATENATED MODULE: ./src/plugins/muc-views/password-form.js + + +const MUCPasswordForm = View.extend({ + className: 'chatroom-form-container muc-password-form', + + initialize(attrs) { + this.chatroomview = attrs.chatroomview; + this.listenTo(this.model, 'change:validation_message', this.render); + this.render(); + }, + + toHTML() { + return muc_password_form({ + 'jid': this.model.get('jid'), + 'submitPassword': ev => this.submitPassword(ev), + 'validation_message': this.model.get('validation_message') + }); + }, + + submitPassword(ev) { + ev.preventDefault(); + const password = this.el.querySelector('input[type=password]').value; + this.chatroomview.model.join(this.chatroomview.model.get('nick'), password); + this.model.set('validation_message', null); } -})); -// CONCATENATED MODULE: ./src/templates/muc_invite_modal.js -function muc_invite_modal_templateObject2() { - const data = muc_invite_modal_taggedTemplateLiteral(["<div class=\"error error-feedback\">", "</div>"]); +}); +/* harmony default export */ var password_form = (MUCPasswordForm); +// CONCATENATED MODULE: ./src/modals/templates/muc-invite.js +function muc_invite_templateObject2() { + const data = muc_invite_taggedTemplateLiteral(["<div class=\"error error-feedback\">", "</div>"]); - muc_invite_modal_templateObject2 = function _templateObject2() { + muc_invite_templateObject2 = function () { return data; }; return data; } -function muc_invite_modal_templateObject() { - const data = muc_invite_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"add-chatroom-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"suggestion-box room-invite\">\n <form @submit=", ">\n <div class=\"form-group\">\n <label class=\"clearfix\" for=\"invitee_jids\">", ":</label>\n ", "\n <input class=\"form-control suggestion-box__input\"\n required=\"required\"\n name=\"invitee_jids\"\n id=\"invitee_jids\"\n placeholder=\"", "\"\n type=\"text\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n <ul class=\"suggestion-box__results suggestion-box__results--below\" hidden=\"\"></ul>\n </div>\n <div class=\"form-group\">\n <label>", ":</label>\n <textarea class=\"form-control\" name=\"reason\"></textarea>\n </div>\n <div class=\"form-group\">\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n "]); +function muc_invite_templateObject() { + const data = muc_invite_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"add-chatroom-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"suggestion-box room-invite\">\n <form @submit=", ">\n <div class=\"form-group\">\n <label class=\"clearfix\" for=\"invitee_jids\">", ":</label>\n ", "\n <input class=\"form-control suggestion-box__input\"\n required=\"required\"\n name=\"invitee_jids\"\n id=\"invitee_jids\"\n placeholder=\"", "\"\n type=\"text\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n <ul class=\"suggestion-box__results suggestion-box__results--below\" hidden=\"\"></ul>\n </div>\n <div class=\"form-group\">\n <label>", ":</label>\n <textarea class=\"form-control\" name=\"reason\"></textarea>\n </div>\n <div class=\"form-group\">\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n "]); - muc_invite_modal_templateObject = function _templateObject() { + muc_invite_templateObject = function () { return data; }; return data; } -function muc_invite_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function muc_invite_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var muc_invite_modal = (o => { +/* harmony default export */ var muc_invite = (o => { const i18n_invite = i18n_('Invite'); const i18n_invite_heading = i18n_('Invite someone to this groupchat'); @@ -96974,24 +101749,24 @@ function muc_invite_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw const i18n_reason = i18n_('Optional reason for the invitation'); - return lit_html_html(muc_invite_modal_templateObject(), i18n_invite_heading, modal_header_close_button, o.submitInviteForm, i18n_invite_label, o.invalid_invite_jid ? lit_html_html(muc_invite_modal_templateObject2(), i18n_error_message) : '', i18n_jid_placeholder, i18n_reason, i18n_invite); + return lit_html_html(muc_invite_templateObject(), i18n_invite_heading, modal_header_close_button, o.submitInviteForm, i18n_invite_label, o.invalid_invite_jid ? lit_html_html(muc_invite_templateObject2(), i18n_error_message) : '', i18n_jid_placeholder, i18n_reason, i18n_invite); }); // CONCATENATED MODULE: ./src/modals/muc-invite.js const muc_invite_u = converse.env.utils; -/* harmony default export */ var muc_invite = (BootstrapModal.extend({ +/* harmony default export */ var modals_muc_invite = (modals_base.extend({ id: "muc-invite-modal", initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); + modals_base.prototype.initialize.apply(this, arguments); this.listenTo(this.model, 'change', this.render); this.initInviteWidget(); }, toHTML() { - return muc_invite_modal(Object.assign(this.model.toJSON(), { + return muc_invite(Object.assign(this.model.toJSON(), { 'submitInviteForm': ev => this.submitInviteForm(ev) })); }, @@ -97001,13 +101776,13 @@ const muc_invite_u = converse.env.utils; this.invite_auto_complete.destroy(); } - const list = converse_core_converse.roster.map(i => ({ + const list = core_converse.roster.map(i => ({ 'label': i.getDisplayName(), 'value': i.get('jid') })); const el = this.el.querySelector('.suggestion-box').parentElement; - this.invite_auto_complete = new converse_core_converse.AutoComplete(el, { + this.invite_auto_complete = new core_converse.AutoComplete(el, { 'min_chars': 1, 'list': list }); @@ -97032,288 +101807,11 @@ const muc_invite_u = converse.env.utils; } })); -// CONCATENATED MODULE: ./src/templates/list_chatrooms_modal.js -function list_chatrooms_modal_templateObject5() { - const data = list_chatrooms_modal_taggedTemplateLiteral(["<li class=\"list-group-item active\">", "</li>"]); - - list_chatrooms_modal_templateObject5 = function _templateObject5() { - return data; - }; - - return data; -} - -function list_chatrooms_modal_templateObject4() { - const data = list_chatrooms_modal_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); - - list_chatrooms_modal_templateObject4 = function _templateObject4() { - return data; - }; - - return data; -} - -function list_chatrooms_modal_templateObject3() { - const data = list_chatrooms_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"list-chatrooms-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body d-flex flex-column\">\n <span class=\"modal-alert\"></span>\n ", "\n <ul class=\"available-chatrooms list-group\">\n ", "\n ", "\n ", "\n </ul>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n "]); - - list_chatrooms_modal_templateObject3 = function _templateObject3() { - return data; - }; - - return data; -} - -function list_chatrooms_modal_templateObject2() { - const data = list_chatrooms_modal_taggedTemplateLiteral(["\n <li class=\"room-item list-group-item\">\n <div class=\"available-chatroom d-flex flex-row\">\n <a class=\"open-room available-room w-100\"\n @click=", "\n data-room-jid=\"", "\"\n data-room-name=\"", "\"\n title=\"", "\"\n href=\"#\">", "</a>\n <a class=\"right room-info icon-room-info\"\n @click=", "\n data-room-jid=\"", "\"\n title=\"", "\"\n href=\"#\"></a>\n </div>\n </li>\n "]); - - list_chatrooms_modal_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function list_chatrooms_modal_templateObject() { - const data = list_chatrooms_modal_taggedTemplateLiteral(["\n <form class=\"converse-form list-chatrooms\"\n @submit=", ">\n <div class=\"form-group\">\n <label for=\"chatroom\">", ":</label>\n <input type=\"text\"\n @change=", "\n value=\"", "\"\n required=\"required\"\n name=\"server\"\n class=\"form-control\"\n placeholder=\"", "\"/>\n </div>\n <input type=\"submit\" class=\"btn btn-primary\" name=\"list\" value=\"", "\"/>\n </form>\n "]); - - list_chatrooms_modal_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function list_chatrooms_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - - - - -const list_chatrooms_modal_form = o => { - const i18n_query = i18n_('Show groupchats'); - - const i18n_server_address = i18n_('Server address'); - - return lit_html_html(list_chatrooms_modal_templateObject(), o.submitForm, i18n_server_address, o.setDomainFromEvent, o.muc_domain || '', o.server_placeholder, i18n_query); -}; - -const tpl_item = (o, item) => { - const i18n_info_title = i18n_('Show more information on this groupchat'); - - const i18n_open_title = i18n_('Click to open this groupchat'); - - return lit_html_html(list_chatrooms_modal_templateObject2(), o.openRoom, item.jid, item.name, i18n_open_title, item.name || item.jid, o.toggleRoomInfo, item.jid, i18n_info_title); -}; - -/* harmony default export */ var list_chatrooms_modal = (o => { - const i18n_list_chatrooms = i18n_('Query for Groupchats'); - - return lit_html_html(list_chatrooms_modal_templateObject3(), i18n_list_chatrooms, modal_header_close_button, o.show_form ? list_chatrooms_modal_form(o) : '', o.loading_items ? lit_html_html(list_chatrooms_modal_templateObject4(), spinner()) : '', o.feedback_text ? lit_html_html(list_chatrooms_modal_templateObject5(), o.feedback_text) : '', repeat(o.items, item => item.jid, item => tpl_item(o, item)), modal_close_button); -}); -// EXTERNAL MODULE: ./src/templates/room_description.html -var room_description = __webpack_require__(138); -var room_description_default = /*#__PURE__*/__webpack_require__.n(room_description); - -// CONCATENATED MODULE: ./src/modals/muc-list.js - - - - - - - - - - - -const muc_list_u = converse.env.utils; -/* Insert groupchat info (based on returned #disco IQ stanza) - * @function insertRoomInfo - * @param { HTMLElement } el - The HTML DOM element that contains the info. - * @param { XMLElement } stanza - The IQ stanza containing the groupchat info. - */ - -function insertRoomInfo(el, stanza) { - var _head, _head2; - - // All MUC features found here: https://xmpp.org/registrar/disco-features.html - el.querySelector('span.spinner').remove(); - el.querySelector('a.room-info').classList.add('selected'); - el.insertAdjacentHTML('beforeEnd', room_description_default()({ - 'jid': stanza.getAttribute('from'), - 'desc': (_head = lodash_es_head(sizzle_default()('field[var="muc#roominfo_description"] value', stanza))) === null || _head === void 0 ? void 0 : _head.textContent, - 'occ': (_head2 = lodash_es_head(sizzle_default()('field[var="muc#roominfo_occupants"] value', stanza))) === null || _head2 === void 0 ? void 0 : _head2.textContent, - 'hidden': sizzle_default()('feature[var="muc_hidden"]', stanza).length, - 'membersonly': sizzle_default()('feature[var="muc_membersonly"]', stanza).length, - 'moderated': sizzle_default()('feature[var="muc_moderated"]', stanza).length, - 'nonanonymous': sizzle_default()('feature[var="muc_nonanonymous"]', stanza).length, - 'open': sizzle_default()('feature[var="muc_open"]', stanza).length, - 'passwordprotected': sizzle_default()('feature[var="muc_passwordprotected"]', stanza).length, - 'persistent': sizzle_default()('feature[var="muc_persistent"]', stanza).length, - 'publicroom': sizzle_default()('feature[var="muc_publicroom"]', stanza).length, - 'semianonymous': sizzle_default()('feature[var="muc_semianonymous"]', stanza).length, - 'temporary': sizzle_default()('feature[var="muc_temporary"]', stanza).length, - 'unmoderated': sizzle_default()('feature[var="muc_unmoderated"]', stanza).length, - 'label_desc': i18n_('Description:'), - 'label_jid': i18n_('Groupchat Address (JID):'), - 'label_occ': i18n_('Participants:'), - 'label_features': i18n_('Features:'), - 'label_requires_auth': i18n_('Requires authentication'), - 'label_hidden': i18n_('Hidden'), - 'label_requires_invite': i18n_('Requires an invitation'), - 'label_moderated': i18n_('Moderated'), - 'label_non_anon': i18n_('Non-anonymous'), - 'label_open_room': i18n_('Open'), - 'label_permanent_room': i18n_('Permanent'), - 'label_public': i18n_('Public'), - 'label_semi_anon': i18n_('Semi-anonymous'), - 'label_temp_room': i18n_('Temporary'), - 'label_unmoderated': i18n_('Unmoderated') - })); -} -/** - * Show/hide extra information about a groupchat in a listing. - * @function toggleRoomInfo - * @param { Event } - */ - - -function toggleRoomInfo(ev) { - const parent_el = muc_list_u.ancestor(ev.target, '.room-item'); - const div_el = parent_el.querySelector('div.room-info'); - - if (div_el) { - muc_list_u.slideIn(div_el).then(muc_list_u.removeElement); - parent_el.querySelector('a.room-info').classList.remove('selected'); - } else { - parent_el.insertAdjacentElement('beforeend', muc_list_u.getElementFromTemplateResult(spinner())); - converse_core_api.disco.info(ev.target.getAttribute('data-room-jid'), null).then(stanza => insertRoomInfo(parent_el, stanza)).catch(e => headless_log.error(e)); - } -} - -/* harmony default export */ var muc_list = (BootstrapModal.extend({ - id: "list-chatrooms-modal", - - initialize() { - this.items = []; - this.loading_items = false; - BootstrapModal.prototype.initialize.apply(this, arguments); - - if (converse_core_api.settings.get('muc_domain') && !this.model.get('muc_domain')) { - this.model.save('muc_domain', converse_core_api.settings.get('muc_domain')); - } - - this.listenTo(this.model, 'change:muc_domain', this.onDomainChange); - this.el.addEventListener('shown.bs.modal', () => converse_core_api.settings.get('locked_muc_domain') ? this.updateRoomsList() : this.el.querySelector('input[name="server"]').focus()); - }, - - toHTML() { - const muc_domain = this.model.get('muc_domain') || converse_core_api.settings.get('muc_domain'); - return list_chatrooms_modal(Object.assign(this.model.toJSON(), { - 'show_form': !converse_core_api.settings.get('locked_muc_domain'), - 'server_placeholder': muc_domain ? muc_domain : i18n_('conference.example.org'), - 'items': this.items, - 'loading_items': this.loading_items, - 'openRoom': ev => this.openRoom(ev), - 'setDomainFromEvent': ev => this.setDomainFromEvent(ev), - 'submitForm': ev => this.showRooms(ev), - 'toggleRoomInfo': ev => this.toggleRoomInfo(ev) - })); - }, - - openRoom(ev) { - ev.preventDefault(); - const jid = ev.target.getAttribute('data-room-jid'); - const name = ev.target.getAttribute('data-room-name'); - this.modal.hide(); - converse_core_api.rooms.open(jid, { - 'name': name - }, true); - }, - - toggleRoomInfo(ev) { - ev.preventDefault(); - toggleRoomInfo(ev); - }, - - onDomainChange() { - converse_core_api.settings.get('auto_list_rooms') && this.updateRoomsList(); - }, - - /** - * Handle the IQ stanza returned from the server, containing - * all its public groupchats. - * @private - * @method _converse.ChatRoomView#onRoomsFound - * @param { HTMLElement } iq - */ - onRoomsFound(iq) { - this.loading_items = false; - const rooms = iq ? sizzle_default()('query item', iq) : []; - - if (rooms.length) { - this.model.set({ - 'feedback_text': i18n_('Groupchats found') - }, { - 'silent': true - }); - this.items = rooms.map(utils_stanza.getAttributes); - } else { - this.items = []; - this.model.set({ - 'feedback_text': i18n_('No groupchats found') - }, { - 'silent': true - }); - } - - this.render(); - return true; - }, - - /** - * Send an IQ stanza to the server asking for all groupchats - * @private - * @method _converse.ChatRoomView#updateRoomsList - */ - updateRoomsList() { - const iq = Object(src_strophe["a" /* $iq */])({ - 'to': this.model.get('muc_domain'), - 'from': converse_core_converse.connection.jid, - 'type': "get" - }).c("query", { - xmlns: src_strophe["b" /* Strophe */].NS.DISCO_ITEMS - }); - converse_core_api.sendIQ(iq).then(iq => this.onRoomsFound(iq)).catch(() => this.onRoomsFound()); - }, - - showRooms(ev) { - ev.preventDefault(); - this.loading_items = true; - this.render(); - const data = new FormData(ev.target); - this.model.setDomain(data.get('server')); - this.updateRoomsList(); - }, - - setDomainFromEvent(ev) { - this.model.setDomain(ev.target.value); - }, - - setNick(ev) { - this.model.save({ - nick: ev.target.value - }); - } - -})); -// CONCATENATED MODULE: ./src/templates/moderator_tools_modal.js +// CONCATENATED MODULE: ./src/modals/templates/moderator-tools.js function _templateObject21() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); + const data = moderator_tools_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); - _templateObject21 = function _templateObject21() { + _templateObject21 = function () { return data; }; @@ -97321,9 +101819,9 @@ function _templateObject21() { } function _templateObject20() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); + const data = moderator_tools_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); - _templateObject20 = function _templateObject20() { + _templateObject20 = function () { return data; }; @@ -97331,9 +101829,9 @@ function _templateObject20() { } function _templateObject19() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<div class=\"row\"><div class=\"col pt-2\"><p class=\"helptext pb-3\">", "</p></div></div>"]); + const data = moderator_tools_taggedTemplateLiteral(["<div class=\"row\"><div class=\"col pt-2\"><p class=\"helptext pb-3\">", "</p></div></div>"]); - _templateObject19 = function _templateObject19() { + _templateObject19 = function () { return data; }; @@ -97341,9 +101839,9 @@ function _templateObject19() { } function _templateObject18() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<input class=\"form-control\" .value=\"", "\" @keyup=", " type=\"text\" name=\"filter\" placeholder=\"", "\"/>"]); + const data = moderator_tools_taggedTemplateLiteral(["<input class=\"form-control\" .value=\"", "\" @keyup=", " type=\"text\" name=\"filter\" placeholder=\"", "\"/>"]); - _templateObject18 = function _templateObject18() { + _templateObject18 = function () { return data; }; @@ -97351,9 +101849,9 @@ function _templateObject18() { } function _templateObject17() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); + const data = moderator_tools_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); - _templateObject17 = function _templateObject17() { + _templateObject17 = function () { return data; }; @@ -97361,166 +101859,166 @@ function _templateObject17() { } function _templateObject16() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); + const data = moderator_tools_taggedTemplateLiteral(["<li class=\"list-group-item\">", "</li>"]); - _templateObject16 = function _templateObject16() { + _templateObject16 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject15() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); +function moderator_tools_templateObject15() { + const data = moderator_tools_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); - moderator_tools_modal_templateObject15 = function _templateObject15() { + moderator_tools_templateObject15 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject14() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<div class=\"row\"><div class=\"col pt-2\"><p class=\"helptext pb-3\">", "</p></div></div>"]); +function moderator_tools_templateObject14() { + const data = moderator_tools_taggedTemplateLiteral(["<div class=\"row\"><div class=\"col pt-2\"><p class=\"helptext pb-3\">", "</p></div></div>"]); - moderator_tools_modal_templateObject14 = function _templateObject14() { + moderator_tools_templateObject14 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject13() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<input class=\"form-control\" .value=\"", "\" @keyup=", " type=\"text\" name=\"filter\" placeholder=\"", "\"/>"]); +function moderator_tools_templateObject13() { + const data = moderator_tools_taggedTemplateLiteral(["<input class=\"form-control\" .value=\"", "\" @keyup=", " type=\"text\" name=\"filter\" placeholder=\"", "\"/>"]); - moderator_tools_modal_templateObject13 = function _templateObject13() { + moderator_tools_templateObject13 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject12() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"converse-modtools-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body d-flex flex-column\">\n <span class=\"modal-alert\"></span>\n\n ", "\n\n <div class=\"tab-content\">\n <div class=\"tab-pane tab-pane--columns ", "\" id=\"affiliations-tabpanel\" role=\"tabpanel\" aria-labelledby=\"affiliations-tab\">\n <form class=\"converse-form query-affiliation\" @submit=", ">\n <p class=\"helptext pb-3\">", "</p>\n <div class=\"form-group\">\n <label for=\"affiliation\">\n <strong>", ":</strong>\n </label>\n <div class=\"row\">\n <div class=\"col\">\n <select class=\"custom-select select-affiliation\" name=\"affiliation\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"users_with_affiliation\" value=\"", "\"/>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col mt-3\">\n ", "\n </div>\n </div>\n\n ", "\n </div>\n </form>\n <div class=\"scrollable-container\">\n <ul class=\"list-group list-group--users\">\n ", "\n ", "\n\n ", "\n </ul>\n </div>\n </div>\n\n <div class=\"tab-pane tab-pane--columns ", "\" id=\"roles-tabpanel\" role=\"tabpanel\" aria-labelledby=\"roles-tab\">\n <form class=\"converse-form query-role\" @submit=", ">\n <p class=\"helptext pb-3\">", "</p>\n <div class=\"form-group\">\n <label for=\"role\"><strong>", ":</strong></label>\n <div class=\"row\">\n <div class=\"col\">\n <select class=\"custom-select select-role\" name=\"role\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"users_with_role\" value=\"", "\"/>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col mt-3\">\n ", "\n </div>\n </div>\n\n ", "\n </div>\n </form>\n <div class=\"scrollable-container\">\n <ul class=\"list-group list-group--users\">\n ", "\n ", "\n ", "\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>"]); +function moderator_tools_templateObject12() { + const data = moderator_tools_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"converse-modtools-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body d-flex flex-column\">\n <span class=\"modal-alert\"></span>\n\n ", "\n\n <div class=\"tab-content\">\n <div class=\"tab-pane tab-pane--columns ", "\" id=\"affiliations-tabpanel\" role=\"tabpanel\" aria-labelledby=\"affiliations-tab\">\n <form class=\"converse-form query-affiliation\" @submit=", ">\n <p class=\"helptext pb-3\">", "</p>\n <div class=\"form-group\">\n <label for=\"affiliation\">\n <strong>", ":</strong>\n </label>\n <div class=\"row\">\n <div class=\"col\">\n <select class=\"custom-select select-affiliation\" name=\"affiliation\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"users_with_affiliation\" value=\"", "\"/>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col mt-3\">\n ", "\n </div>\n </div>\n\n ", "\n </div>\n </form>\n <div class=\"scrollable-container\">\n <ul class=\"list-group list-group--users\">\n ", "\n ", "\n\n ", "\n </ul>\n </div>\n </div>\n\n <div class=\"tab-pane tab-pane--columns ", "\" id=\"roles-tabpanel\" role=\"tabpanel\" aria-labelledby=\"roles-tab\">\n <form class=\"converse-form query-role\" @submit=", ">\n <p class=\"helptext pb-3\">", "</p>\n <div class=\"form-group\">\n <label for=\"role\"><strong>", ":</strong></label>\n <div class=\"row\">\n <div class=\"col\">\n <select class=\"custom-select select-role\" name=\"role\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"users_with_role\" value=\"", "\"/>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col mt-3\">\n ", "\n </div>\n </div>\n\n ", "\n </div>\n </form>\n <div class=\"scrollable-container\">\n <ul class=\"list-group list-group--users\">\n ", "\n ", "\n ", "\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>"]); - moderator_tools_modal_templateObject12 = function _templateObject12() { + moderator_tools_templateObject12 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject11() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"affiliations-tab\" href=\"#affiliations-tabpanel\" aria-controls=\"affiliations-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">Affiliations</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"roles-tab\" href=\"#roles-tabpanel\" aria-controls=\"roles-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">Roles</a>\n </li>\n </ul>\n"]); +function moderator_tools_templateObject11() { + const data = moderator_tools_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"affiliations-tab\" href=\"#affiliations-tabpanel\" aria-controls=\"affiliations-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">Affiliations</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"roles-tab\" href=\"#roles-tabpanel\" aria-controls=\"roles-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">Roles</a>\n </li>\n </ul>\n"]); - moderator_tools_modal_templateObject11 = function _templateObject11() { + moderator_tools_templateObject11 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject10() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<a href=\"#\" data-form=\"affiliation-form\" class=\"toggle-form right fa fa-wrench\" @click=", "></a>"]); +function moderator_tools_templateObject10() { + const data = moderator_tools_taggedTemplateLiteral(["<a href=\"#\" data-form=\"affiliation-form\" class=\"toggle-form right fa fa-wrench\" @click=", "></a>"]); - moderator_tools_modal_templateObject10 = function _templateObject10() { + moderator_tools_templateObject10 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject9() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <li class=\"list-group-item\" data-nick=\"", "\">\n <ul class=\"list-group\">\n <li class=\"list-group-item active\">\n <div><strong>JID:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Nickname:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Affiliation:</strong> ", " ", "</div>\n ", "\n </li>\n </ul>\n </li>\n"]); +function moderator_tools_templateObject9() { + const data = moderator_tools_taggedTemplateLiteral(["\n <li class=\"list-group-item\" data-nick=\"", "\">\n <ul class=\"list-group\">\n <li class=\"list-group-item active\">\n <div><strong>JID:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Nickname:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Affiliation:</strong> ", " ", "</div>\n ", "\n </li>\n </ul>\n </li>\n"]); - moderator_tools_modal_templateObject9 = function _templateObject9() { + moderator_tools_templateObject9 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject8() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<option value=\"", "\" ?selected=", ">", "</option>"]); +function moderator_tools_templateObject8() { + const data = moderator_tools_taggedTemplateLiteral(["<option value=\"", "\" ?selected=", ">", "</option>"]); - moderator_tools_modal_templateObject8 = function _templateObject8() { + moderator_tools_templateObject8 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject7() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <form class=\"affiliation-form hidden\" @submit=", ">\n <div class=\"form-group\">\n <input type=\"hidden\" name=\"jid\" value=\"", "\"/>\n <input type=\"hidden\" name=\"nick\" value=\"", "\"/>\n <div class=\"row\">\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <select class=\"custom-select select-affiliation\" name=\"affiliation\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <input class=\"form-control\" type=\"text\" name=\"reason\"/>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"change\" value=\"", "\"/>\n </div>\n </form>\n "]); +function moderator_tools_templateObject7() { + const data = moderator_tools_taggedTemplateLiteral(["\n <form class=\"affiliation-form hidden\" @submit=", ">\n <div class=\"form-group\">\n <input type=\"hidden\" name=\"jid\" value=\"", "\"/>\n <input type=\"hidden\" name=\"nick\" value=\"", "\"/>\n <div class=\"row\">\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <select class=\"custom-select select-affiliation\" name=\"affiliation\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <input class=\"form-control\" type=\"text\" name=\"reason\"/>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"change\" value=\"", "\"/>\n </div>\n </form>\n "]); - moderator_tools_modal_templateObject7 = function _templateObject7() { + moderator_tools_templateObject7 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject6() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<a href=\"#\" data-form=\"role-form\" class=\"toggle-form right fa fa-wrench\" @click=", "></a>"]); +function moderator_tools_templateObject6() { + const data = moderator_tools_taggedTemplateLiteral(["<a href=\"#\" data-form=\"role-form\" class=\"toggle-form right fa fa-wrench\" @click=", "></a>"]); - moderator_tools_modal_templateObject6 = function _templateObject6() { + moderator_tools_templateObject6 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject5() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <li class=\"list-group-item\" data-nick=\"", "\">\n <ul class=\"list-group\">\n <li class=\"list-group-item active\">\n <div><strong>JID:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Nickname:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Role:</strong> ", " ", "</div>\n ", "\n </li>\n </ul>\n </li>\n"]); +function moderator_tools_templateObject5() { + const data = moderator_tools_taggedTemplateLiteral(["\n <li class=\"list-group-item\" data-nick=\"", "\">\n <ul class=\"list-group\">\n <li class=\"list-group-item active\">\n <div><strong>JID:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Nickname:</strong> ", "</div>\n </li>\n <li class=\"list-group-item\">\n <div><strong>Role:</strong> ", " ", "</div>\n ", "\n </li>\n </ul>\n </li>\n"]); - moderator_tools_modal_templateObject5 = function _templateObject5() { + moderator_tools_templateObject5 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject4() { - const data = moderator_tools_modal_taggedTemplateLiteral(["<option value=\"", "\" ?selected=", ">", "</option>"]); +function moderator_tools_templateObject4() { + const data = moderator_tools_taggedTemplateLiteral(["<option value=\"", "\" ?selected=", ">", "</option>"]); - moderator_tools_modal_templateObject4 = function _templateObject4() { + moderator_tools_templateObject4 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject3() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <form class=\"role-form hidden\" @submit=", ">\n <div class=\"form-group\">\n <input type=\"hidden\" name=\"jid\" value=\"", "\"/>\n <input type=\"hidden\" name=\"nick\" value=\"", "\"/>\n <div class=\"row\">\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <select class=\"custom-select select-role\" name=\"role\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <input class=\"form-control\" type=\"text\" name=\"reason\"/>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\"/>\n </div>\n </form>\n "]); +function moderator_tools_templateObject3() { + const data = moderator_tools_taggedTemplateLiteral(["\n <form class=\"role-form hidden\" @submit=", ">\n <div class=\"form-group\">\n <input type=\"hidden\" name=\"jid\" value=\"", "\"/>\n <input type=\"hidden\" name=\"nick\" value=\"", "\"/>\n <div class=\"row\">\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <select class=\"custom-select select-role\" name=\"role\">\n ", "\n </select>\n </div>\n <div class=\"col\">\n <label><strong>", ":</strong></label>\n <input class=\"form-control\" type=\"text\" name=\"reason\"/>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\"/>\n </div>\n </form>\n "]); - moderator_tools_modal_templateObject3 = function _templateObject3() { + moderator_tools_templateObject3 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject2() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <option value=\"", "\"\n ?selected=", "\n title=\"", "\">", "</option>\n"]); +function moderator_tools_templateObject2() { + const data = moderator_tools_taggedTemplateLiteral(["\n <option value=\"", "\"\n ?selected=", "\n title=\"", "\">", "</option>\n"]); - moderator_tools_modal_templateObject2 = function _templateObject2() { + moderator_tools_templateObject2 = function () { return data; }; return data; } -function moderator_tools_modal_templateObject() { - const data = moderator_tools_modal_taggedTemplateLiteral(["\n <option value=\"", "\"\n ?selected=", "\n title=\"", "\">", "</option>\n"]); +function moderator_tools_templateObject() { + const data = moderator_tools_taggedTemplateLiteral(["\n <option value=\"", "\"\n ?selected=", "\n title=\"", "\">", "</option>\n"]); - moderator_tools_modal_templateObject = function _templateObject() { + moderator_tools_templateObject = function () { return data; }; return data; } -function moderator_tools_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function moderator_tools_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } @@ -97547,9 +102045,9 @@ function getAffiliationHelpText(aff) { } } -const role_option = o => lit_html_html(moderator_tools_modal_templateObject(), o.item || '', o.item === o.role, getRoleHelpText(o.item), o.item); +const role_option = o => lit_html_html(moderator_tools_templateObject(), o.item || '', o.item === o.role, getRoleHelpText(o.item), o.item); -const affiliation_option = o => lit_html_html(moderator_tools_modal_templateObject2(), o.item || '', o.item === o.affiliation, getAffiliationHelpText(o.item), o.item); +const affiliation_option = o => lit_html_html(moderator_tools_templateObject2(), o.item || '', o.item === o.affiliation, getAffiliationHelpText(o.item), o.item); const tpl_set_role_form = o => { const i18n_change_role = i18n_('Change role'); @@ -97558,10 +102056,10 @@ const tpl_set_role_form = o => { const i18n_reason = i18n_('Reason'); - return lit_html_html(moderator_tools_modal_templateObject3(), o.assignRole, o.item.jid, o.item.nick, i18n_new_role, o.assignable_roles.map(role => lit_html_html(moderator_tools_modal_templateObject4(), role, role === o.item.role, role)), i18n_reason, i18n_change_role); + return lit_html_html(moderator_tools_templateObject3(), o.assignRole, o.item.jid, o.item.nick, i18n_new_role, o.assignable_roles.map(role => lit_html_html(moderator_tools_templateObject4(), role, role === o.item.role, role)), i18n_reason, i18n_change_role); }; -const role_list_item = o => lit_html_html(moderator_tools_modal_templateObject5(), o.item.nick, o.item.jid, o.item.nick, o.item.role, o.assignable_roles.length ? lit_html_html(moderator_tools_modal_templateObject6(), o.toggleForm) : '', o.assignable_roles.length ? tpl_set_role_form(o) : ''); +const role_list_item = o => lit_html_html(moderator_tools_templateObject5(), o.item.nick, o.item.jid, o.item.nick, o.item.role, o.assignable_roles.length ? lit_html_html(moderator_tools_templateObject6(), o.toggleForm) : '', o.assignable_roles.length ? tpl_set_role_form(o) : ''); const tpl_set_affiliation_form = o => { const i18n_change_affiliation = i18n_('Change affiliation'); @@ -97570,14 +102068,14 @@ const tpl_set_affiliation_form = o => { const i18n_reason = i18n_('Reason'); - return lit_html_html(moderator_tools_modal_templateObject7(), o.assignAffiliation, o.item.jid, o.item.nick, i18n_new_affiliation, o.assignable_affiliations.map(aff => lit_html_html(moderator_tools_modal_templateObject8(), aff, aff === o.item.affiliation, aff)), i18n_reason, i18n_change_affiliation); + return lit_html_html(moderator_tools_templateObject7(), o.assignAffiliation, o.item.jid, o.item.nick, i18n_new_affiliation, o.assignable_affiliations.map(aff => lit_html_html(moderator_tools_templateObject8(), aff, aff === o.item.affiliation, aff)), i18n_reason, i18n_change_affiliation); }; -const affiliation_list_item = o => lit_html_html(moderator_tools_modal_templateObject9(), o.item.nick, o.item.jid, o.item.nick, o.item.affiliation, o.assignable_affiliations.length ? lit_html_html(moderator_tools_modal_templateObject10(), o.toggleForm) : '', o.assignable_affiliations.length ? tpl_set_affiliation_form(o) : ''); +const affiliation_list_item = o => lit_html_html(moderator_tools_templateObject9(), o.item.nick, o.item.jid, o.item.nick, o.item.affiliation, o.assignable_affiliations.length ? lit_html_html(moderator_tools_templateObject10(), o.toggleForm) : '', o.assignable_affiliations.length ? tpl_set_affiliation_form(o) : ''); -const tpl_navigation = o => lit_html_html(moderator_tools_modal_templateObject11(), o.switchTab, o.switchTab); +const tpl_navigation = o => lit_html_html(moderator_tools_templateObject11(), o.switchTab, o.switchTab); -/* harmony default export */ var moderator_tools_modal = (o => { +/* harmony default export */ var moderator_tools = (o => { const i18n_affiliation = i18n_('Affiliation'); const i18n_moderator_tools = i18n_('Moderator Tools'); @@ -97597,9 +102095,9 @@ const tpl_navigation = o => lit_html_html(moderator_tools_modal_templateObject11 const i18n_helptext_affiliation = i18n_("An affiliation is a long-lived entitlement which typically implies a certain role and which " + "grants privileges and responsibilities. For example admins and owners automatically have the " + "moderator role."); const show_both_tabs = o.queryable_roles.length && o.queryable_affiliations.length; - return lit_html_html(moderator_tools_modal_templateObject12(), i18n_moderator_tools, modal_header_close_button, show_both_tabs ? tpl_navigation(o) : '', o.queryable_affiliations.length ? 'active' : '', o.queryAffiliation, i18n_helptext_affiliation, i18n_affiliation, o.queryable_affiliations.map(item => affiliation_option(Object.assign({ + return lit_html_html(moderator_tools_templateObject12(), i18n_moderator_tools, modal_header_close_button, show_both_tabs ? tpl_navigation(o) : '', o.queryable_affiliations.length ? 'active' : '', o.queryAffiliation, i18n_helptext_affiliation, i18n_affiliation, o.queryable_affiliations.map(item => affiliation_option(Object.assign({ item - }, o))), i18n_show_users, Array.isArray(o.users_with_affiliation) && o.users_with_affiliation.length > 5 ? lit_html_html(moderator_tools_modal_templateObject13(), o.affiliations_filter, o.filterAffiliationResults, i18n_filter) : '', getAffiliationHelpText(o.affiliation) ? lit_html_html(moderator_tools_modal_templateObject14(), getAffiliationHelpText(o.affiliation)) : '', o.loading_users_with_affiliation ? lit_html_html(moderator_tools_modal_templateObject15(), spinner()) : '', Array.isArray(o.users_with_affiliation) && o.users_with_affiliation.length === 0 ? lit_html_html(_templateObject16(), i18n_no_users_with_aff) : '', o.users_with_affiliation instanceof Error ? lit_html_html(_templateObject17(), o.users_with_affiliation.message) : (o.users_with_affiliation || []).map(item => (item.nick || item.jid).match(new RegExp(o.affiliations_filter, 'i')) ? affiliation_list_item(Object.assign({ + }, o))), i18n_show_users, Array.isArray(o.users_with_affiliation) && o.users_with_affiliation.length > 5 ? lit_html_html(moderator_tools_templateObject13(), o.affiliations_filter, o.filterAffiliationResults, i18n_filter) : '', getAffiliationHelpText(o.affiliation) ? lit_html_html(moderator_tools_templateObject14(), getAffiliationHelpText(o.affiliation)) : '', o.loading_users_with_affiliation ? lit_html_html(moderator_tools_templateObject15(), spinner()) : '', Array.isArray(o.users_with_affiliation) && o.users_with_affiliation.length === 0 ? lit_html_html(_templateObject16(), i18n_no_users_with_aff) : '', o.users_with_affiliation instanceof Error ? lit_html_html(_templateObject17(), o.users_with_affiliation.message) : (o.users_with_affiliation || []).map(item => (item.nick || item.jid).match(new RegExp(o.affiliations_filter, 'i')) ? affiliation_list_item(Object.assign({ item }, o)) : ''), !show_both_tabs && o.queryable_roles.length ? 'active' : '', o.queryRole, i18n_helptext_role, i18n_role, o.queryable_roles.map(item => role_option(Object.assign({ item @@ -97622,13 +102120,14 @@ const moderator_tools_u = converse.env.utils; let moderator_tools_converse; -/* harmony default export */ var moderator_tools = (BootstrapModal.extend({ +/* harmony default export */ var modals_moderator_tools = (modals_base.extend({ id: "converse-modtools-modal", + persistent: true, initialize(attrs) { moderator_tools_converse = attrs._converse; this.chatroomview = attrs.chatroomview; - BootstrapModal.prototype.initialize.apply(this, arguments); + modals_base.prototype.initialize.apply(this, arguments); this.affiliations_filter = ''; this.roles_filter = ''; this.listenTo(this.model, 'change:role', () => { @@ -97657,7 +102156,7 @@ let moderator_tools_converse; const occupant = this.chatroomview.model.occupants.findWhere({ 'jid': moderator_tools_converse.bare_jid }); - return moderator_tools_modal(Object.assign(this.model.toJSON(), { + return moderator_tools(Object.assign(this.model.toJSON(), { 'affiliations_filter': this.affiliations_filter, 'assignAffiliation': ev => this.assignAffiliation(ev), 'assignRole': ev => this.assignRole(ev), @@ -97679,7 +102178,7 @@ let moderator_tools_converse; }, getAssignableAffiliations(occupant) { - let disabled = converse_core_api.settings.get('modtools_disable_assign'); + let disabled = core_api.settings.get('modtools_disable_assign'); if (!Array.isArray(disabled)) { disabled = disabled ? AFFILIATIONS : []; @@ -97695,7 +102194,7 @@ let moderator_tools_converse; }, getAssignableRoles(occupant) { - let disabled = converse_core_api.settings.get('modtools_disable_assign'); + let disabled = core_api.settings.get('modtools_disable_assign'); if (!Array.isArray(disabled)) { disabled = disabled ? ROLES : []; @@ -97848,158 +102347,221 @@ let moderator_tools_converse; } })); -// CONCATENATED MODULE: ./src/templates/chatroom_details_modal.js -function chatroom_details_modal_templateObject15() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-database\"></span>", " - <em>", "</em></li>"]); +// CONCATENATED MODULE: ./src/modals/templates/occupant.js +function templates_occupant_templateObject() { + const data = templates_occupant_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"user-details-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n ", "\n </div>\n <div class=\"modal-footer\">\n ", "\n </div>\n </div>\n </div>\n "]); + + templates_occupant_templateObject = function () { + return data; + }; + + return data; +} + +function templates_occupant_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + +/* harmony default export */ var modals_templates_occupant = (o => { + return lit_html_html(templates_occupant_templateObject(), o.display_name, modal_header_close_button, renderAvatar(o.avatar_data), modal_close_button); +}); +// CONCATENATED MODULE: ./src/modals/occupant.js + + + +const OccupantModal = modals_base.extend({ + initialize() { + modals_base.prototype.initialize.apply(this, arguments); + this.listenTo(this.model, 'change', this.render); + /** + * Triggered once the OccupantModal has been initialized + * @event _converse#userDetailsModalInitialized + * @type { _converse.ChatBox } + * @example _converse.api.listen.on('userDetailsModalInitialized', chatbox => { ... }); + */ + + core_api.trigger('occupantModalInitialized', this.model); + }, + + toHTML() { + return modals_templates_occupant(Object.assign(this.model.toJSON(), { + 'avatar_data': this.getAvatarData(), + 'display_name': this.model.getDisplayName() + })); + }, + + getAvatarData() { + const vcard = core_converse.vcards.findWhere({ + 'jid': this.model.get('jid') + }); + + const image_type = (vcard === null || vcard === void 0 ? void 0 : vcard.get('image_type')) || core_converse.DEFAULT_IMAGE_TYPE; + const image_data = (vcard === null || vcard === void 0 ? void 0 : vcard.get('image')) || core_converse.DEFAULT_IMAGE; + const image = "data:" + image_type + ";base64," + image_data; + return { + 'classes': 'chat-msg__avatar', + 'height': 120, + 'width': 120, + image + }; + } + +}); +core_converse.OccupantModal = OccupantModal; +/* harmony default export */ var modals_occupant = (OccupantModal); +// CONCATENATED MODULE: ./src/modals/templates/muc-details.js +function muc_details_templateObject15() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-database\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject15 = function _templateObject15() { + muc_details_templateObject15 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject14() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-info-circle\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject14() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-info-circle\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject14 = function _templateObject14() { + muc_details_templateObject14 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject13() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-gavel\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject13() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-gavel\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject13 = function _templateObject13() { + muc_details_templateObject13 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject12() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-user-secret\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject12() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-user-secret\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject12 = function _templateObject12() { + muc_details_templateObject12 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject11() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-id-card\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject11() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-id-card\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject11 = function _templateObject11() { + muc_details_templateObject11 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject10() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-snowflake-o\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject10() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-snowflake-o\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject10 = function _templateObject10() { + muc_details_templateObject10 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject9() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-save\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject9() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-save\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject9 = function _templateObject9() { + muc_details_templateObject9 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject8() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-globe\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject8() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-globe\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject8 = function _templateObject8() { + muc_details_templateObject8 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject7() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-address-book\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject7() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-address-book\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject7 = function _templateObject7() { + muc_details_templateObject7 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject6() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-eye\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject6() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-eye\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject6 = function _templateObject6() { + muc_details_templateObject6 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject5() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-eye-slash\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject5() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-eye-slash\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject5 = function _templateObject5() { + muc_details_templateObject5 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject4() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-unlock\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject4() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-unlock\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject4 = function _templateObject4() { + muc_details_templateObject4 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject3() { - const data = chatroom_details_modal_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-lock\"></span>", " - <em>", "</em></li>"]); +function muc_details_templateObject3() { + const data = muc_details_taggedTemplateLiteral(["<li class=\"feature\" ><span class=\"fa fa-lock\"></span>", " - <em>", "</em></li>"]); - chatroom_details_modal_templateObject3 = function _templateObject3() { + muc_details_templateObject3 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject2() { - const data = chatroom_details_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"room-details-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"room-info\">\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n ", "\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>:\n <div class=\"chatroom-features\">\n <ul class=\"features-list\">\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n </ul>\n </div>\n </p>\n </div>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n "]); +function muc_details_templateObject2() { + const data = muc_details_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"muc-details-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"room-info\">\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n ", "\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>:\n <div class=\"chatroom-features\">\n <ul class=\"features-list\">\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n </ul>\n </div>\n </p>\n </div>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n "]); - chatroom_details_modal_templateObject2 = function _templateObject2() { + muc_details_templateObject2 = function () { return data; }; return data; } -function chatroom_details_modal_templateObject() { - const data = chatroom_details_modal_taggedTemplateLiteral(["\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n "]); +function muc_details_templateObject() { + const data = muc_details_taggedTemplateLiteral(["\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n <p class=\"room-info\"><strong>", "</strong>: ", "</p>\n "]); - chatroom_details_modal_templateObject = function _templateObject() { + muc_details_templateObject = function () { return data; }; return data; } -function chatroom_details_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function muc_details_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } @@ -98007,17 +102569,17 @@ function chatroom_details_modal_taggedTemplateLiteral(strings, raw) { if (!raw) -const chatroom_details_modal_subject = o => { +const muc_details_subject = o => { const i18n_topic = i18n_('Topic'); const i18n_topic_author = i18n_('Topic author'); - return lit_html_html(chatroom_details_modal_templateObject(), i18n_topic, unsafeHTML(xss_default.a.filterXSS(o.subject.text, { + return lit_html_html(muc_details_templateObject(), i18n_topic, unsafeHTML(xss_default.a.filterXSS(o.subject.text, { 'whiteList': {} })), i18n_topic_author, o.subject && o.subject.author); }; -/* harmony default export */ var chatroom_details_modal = (o => { +/* harmony default export */ var muc_details = (o => { const i18n_address = i18n_('Groupchat address (JID)'); const i18n_archiving = i18n_('Message archiving'); @@ -98078,17 +102640,17 @@ const chatroom_details_modal_subject = o => { const i18n_temporary_help = i18n_('This groupchat will disappear once the last person leaves'); - return lit_html_html(chatroom_details_modal_templateObject2(), o.display_name, modal_header_close_button, i18n_name, o.name, i18n_address, o.jid, i18n_desc, o.config.description, o.subject ? chatroom_details_modal_subject(o) : '', i18n_online_users, o.num_occupants, i18n_features, o.features.passwordprotected ? lit_html_html(chatroom_details_modal_templateObject3(), i18n_password_protected, i18n_password_help) : '', o.features.unsecured ? lit_html_html(chatroom_details_modal_templateObject4(), i18n_no_password_required, i18n_no_pass_help) : '', o.features.hidden ? lit_html_html(chatroom_details_modal_templateObject5(), i18n_hidden, i18n_hidden_help) : '', o.features.public_room ? lit_html_html(chatroom_details_modal_templateObject6(), i18n_public, o.__('This groupchat is publicly searchable')) : '', o.features.membersonly ? lit_html_html(chatroom_details_modal_templateObject7(), i18n_members_only, i18n_members_help) : '', o.features.open ? lit_html_html(chatroom_details_modal_templateObject8(), i18n_open, i18n_open_help) : '', o.features.persistent ? lit_html_html(chatroom_details_modal_templateObject9(), i18n_persistent, i18n_persistent_help) : '', o.features.temporary ? lit_html_html(chatroom_details_modal_templateObject10(), i18n_temporary, i18n_temporary_help) : '', o.features.nonanonymous ? lit_html_html(chatroom_details_modal_templateObject11(), i18n_not_anonymous, i18n_not_anonymous_help) : '', o.features.semianonymous ? lit_html_html(chatroom_details_modal_templateObject12(), i18n_semi_anon, i18n_semi_anon_help) : '', o.features.moderated ? lit_html_html(chatroom_details_modal_templateObject13(), i18n_moderated, i18n_moderated_help) : '', o.features.unmoderated ? lit_html_html(chatroom_details_modal_templateObject14(), i18n_not_moderated, i18n_not_moderated_help) : '', o.features.mam_enabled ? lit_html_html(chatroom_details_modal_templateObject15(), i18n_archiving, i18n_archiving_help) : '', modal_close_button); + return lit_html_html(muc_details_templateObject2(), o.display_name, modal_header_close_button, i18n_name, o.name, i18n_address, o.jid, i18n_desc, o.config.description, o.subject ? muc_details_subject(o) : '', i18n_online_users, o.num_occupants, i18n_features, o.features.passwordprotected ? lit_html_html(muc_details_templateObject3(), i18n_password_protected, i18n_password_help) : '', o.features.unsecured ? lit_html_html(muc_details_templateObject4(), i18n_no_password_required, i18n_no_pass_help) : '', o.features.hidden ? lit_html_html(muc_details_templateObject5(), i18n_hidden, i18n_hidden_help) : '', o.features.public_room ? lit_html_html(muc_details_templateObject6(), i18n_public, o.__('This groupchat is publicly searchable')) : '', o.features.membersonly ? lit_html_html(muc_details_templateObject7(), i18n_members_only, i18n_members_help) : '', o.features.open ? lit_html_html(muc_details_templateObject8(), i18n_open, i18n_open_help) : '', o.features.persistent ? lit_html_html(muc_details_templateObject9(), i18n_persistent, i18n_persistent_help) : '', o.features.temporary ? lit_html_html(muc_details_templateObject10(), i18n_temporary, i18n_temporary_help) : '', o.features.nonanonymous ? lit_html_html(muc_details_templateObject11(), i18n_not_anonymous, i18n_not_anonymous_help) : '', o.features.semianonymous ? lit_html_html(muc_details_templateObject12(), i18n_semi_anon, i18n_semi_anon_help) : '', o.features.moderated ? lit_html_html(muc_details_templateObject13(), i18n_moderated, i18n_moderated_help) : '', o.features.unmoderated ? lit_html_html(muc_details_templateObject14(), i18n_not_moderated, i18n_not_moderated_help) : '', o.features.mam_enabled ? lit_html_html(muc_details_templateObject15(), i18n_archiving, i18n_archiving_help) : '', modal_close_button); }); // CONCATENATED MODULE: ./src/modals/muc-details.js -/* harmony default export */ var muc_details = (BootstrapModal.extend({ - id: "room-details-modal", +/* harmony default export */ var modals_muc_details = (modals_base.extend({ + id: "muc-details-modal", initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); + modals_base.prototype.initialize.apply(this, arguments); this.listenTo(this.model, 'change', this.render); this.listenTo(this.model.features, 'change', this.render); this.listenTo(this.model.occupants, 'add', this.render); @@ -98096,7 +102658,7 @@ const chatroom_details_modal_subject = o => { }, toHTML() { - return chatroom_details_modal(Object.assign(this.model.toJSON(), { + return muc_details(Object.assign(this.model.toJSON(), { 'config': this.model.config.toJSON(), 'display_name': i18n_('Groupchat info for %1$s', this.model.getDisplayName()), 'features': this.model.features.toJSON(), @@ -98107,9 +102669,9 @@ const chatroom_details_modal_subject = o => { })); // CONCATENATED MODULE: ./src/templates/chatroom.js function chatroom_templateObject() { - const data = chatroom_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head chat-head-chatroom row no-gutters\"></div>\n <div class=\"chat-body chatroom-body row no-gutters\">\n <div class=\"chat-area col\">\n <div class=\"chat-content ", "\" aria-live=\"polite\">\n <div class=\"chat-content__messages\" @scroll=", "></div>\n <div class=\"chat-content__help\"></div>\n </div>\n <div class=\"bottom-panel\"></div>\n </div>\n <div class=\"disconnect-container hidden\"></div>\n </div>\n </div>\n"]); + const data = chatroom_taggedTemplateLiteral(["\n <div class=\"flyout box-flyout\">\n <div class=\"chat-head chat-head-chatroom row no-gutters\"></div>\n <div class=\"chat-body chatroom-body row no-gutters\">\n <div class=\"chat-area col\">\n <div class=\"chat-content ", "\" aria-live=\"polite\">\n <div class=\"chat-content__messages\" @scroll=", "></div>\n <div class=\"chat-content__help\"></div>\n </div>\n <div class=\"bottom-panel\"></div>\n </div>\n <div class=\"disconnect-container hidden\"></div>\n <converse-muc-sidebar class=\"occupants col-md-3 col-4 ", "\"\n .occupants=", "\n .chatroom=", "></converse-muc-sidebar>\n </div>\n </div>\n"]); - chatroom_templateObject = function _templateObject() { + chatroom_templateObject = function () { return data; }; @@ -98119,133 +102681,12 @@ function chatroom_templateObject() { function chatroom_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var templates_chatroom = (o => lit_html_html(chatroom_templateObject(), o.show_send_button ? 'chat-content-sendbutton' : '', o.markScrolled)); -// CONCATENATED MODULE: ./src/templates/muc_bottom_panel.js -function muc_bottom_panel_templateObject3() { - const data = muc_bottom_panel_taggedTemplateLiteral(["<div class=\"muc-bottom-panel\"></div>"]); - - muc_bottom_panel_templateObject3 = function _templateObject3() { - return data; - }; - - return data; -} - -function muc_bottom_panel_templateObject2() { - const data = muc_bottom_panel_taggedTemplateLiteral(["<div class=\"muc-bottom-panel\">", "</div>"]); - - muc_bottom_panel_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function muc_bottom_panel_templateObject() { - const data = muc_bottom_panel_taggedTemplateLiteral(["\n <div class=\"emoji-picker__container dropup\"></div>\n <div class=\"message-form-container\">"]); - - muc_bottom_panel_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function muc_bottom_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -const tpl_can_edit = () => lit_html_html(muc_bottom_panel_templateObject()); - -/* harmony default export */ var muc_bottom_panel = (o => { - const i18n_not_allowed = i18n_("You're not allowed to send messages in this room"); - - if (o.entered) { - return o.can_edit ? tpl_can_edit() : lit_html_html(muc_bottom_panel_templateObject2(), i18n_not_allowed); - } else { - return lit_html_html(muc_bottom_panel_templateObject3()); - } -}); -// CONCATENATED MODULE: ./src/templates/muc_destroyed.js -function muc_destroyed_templateObject3() { - const data = muc_destroyed_taggedTemplateLiteral(["<p class=\"destroyed-reason\">\"", "\"</p>"]); - - muc_destroyed_templateObject3 = function _templateObject3() { - return data; - }; - - return data; -} - -function muc_destroyed_templateObject2() { - const data = muc_destroyed_taggedTemplateLiteral(["\n <div class=\"alert alert-danger\">\n <h3 class=\"alert-heading disconnect-msg\">", "</h3>\n ", "\n ", "\n </div>"]); - - muc_destroyed_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function muc_destroyed_templateObject() { - const data = muc_destroyed_taggedTemplateLiteral(["\n <p class=\"moved-label\">", "</p>\n <p class=\"moved-link\"><a class=\"switch-chat\" href=\"#\">", "</a></p>"]); - - muc_destroyed_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function muc_destroyed_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -const tpl_moved = jid => { - const i18n_moved = i18n_('The conversation has moved. Click below to enter.'); - - return lit_html_html(muc_destroyed_templateObject(), i18n_moved, jid); -}; - -/* harmony default export */ var muc_destroyed = ((jid, reason) => { - const i18n_non_existent = i18n_('This groupchat no longer exists'); - - return lit_html_html(muc_destroyed_templateObject2(), i18n_non_existent, reason ? lit_html_html(muc_destroyed_templateObject3(), reason) : '', jid ? tpl_moved(jid) : ''); -}); -// CONCATENATED MODULE: ./src/templates/muc_disconnect.js -function muc_disconnect_templateObject2() { - const data = muc_disconnect_taggedTemplateLiteral(["<p class=\"disconnect-msg\">", "</p>"]); - - muc_disconnect_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function muc_disconnect_templateObject() { - const data = muc_disconnect_taggedTemplateLiteral(["\n <div class=\"alert alert-danger\">\n <h3 class=\"alert-heading disconnect-msg\">", "</h3>\n ", "\n </div>"]); - - muc_disconnect_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function muc_disconnect_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - -/* harmony default export */ var muc_disconnect = (messages => { - return lit_html_html(muc_disconnect_templateObject(), messages[0], messages.slice(1).map(m => lit_html_html(muc_disconnect_templateObject2(), m))); -}); +/* harmony default export */ var templates_chatroom = (o => lit_html_html(chatroom_templateObject(), o.show_send_button ? 'chat-content-sendbutton' : '', o.markScrolled, o.sidebar_hidden ? 'hidden' : '', o.occupants, o.model)); // CONCATENATED MODULE: ./src/templates/chatroom_head.js function chatroom_head_templateObject5() { const data = chatroom_head_taggedTemplateLiteral(["<p class=\"chat-head__desc\" title=\"", "\">", "</p>"]); - chatroom_head_templateObject5 = function _templateObject5() { + chatroom_head_templateObject5 = function () { return data; }; @@ -98255,7 +102696,7 @@ function chatroom_head_templateObject5() { function chatroom_head_templateObject4() { const data = chatroom_head_taggedTemplateLiteral(["<converse-dropdown .items=", "></converse-dropdown>"]); - chatroom_head_templateObject4 = function _templateObject4() { + chatroom_head_templateObject4 = function () { return data; }; @@ -98265,7 +102706,7 @@ function chatroom_head_templateObject4() { function chatroom_head_templateObject3() { const data = chatroom_head_taggedTemplateLiteral(["<i class=\"fa fa-bookmark chatbox-title__text--bookmarked\" title=\"", "\"></i>"]); - chatroom_head_templateObject3 = function _templateObject3() { + chatroom_head_templateObject3 = function () { return data; }; @@ -98275,7 +102716,7 @@ function chatroom_head_templateObject3() { function chatroom_head_templateObject2() { const data = chatroom_head_taggedTemplateLiteral(["<div class=\"chatbox-navback\"><i class=\"fa fa-arrow-left\"></i></div>"]); - chatroom_head_templateObject2 = function _templateObject2() { + chatroom_head_templateObject2 = function () { return data; }; @@ -98285,7 +102726,7 @@ function chatroom_head_templateObject2() { function chatroom_head_templateObject() { const data = chatroom_head_taggedTemplateLiteral(["\n <div class=\"chatbox-title ", "\">\n ", "\n <div class=\"chatbox-title__text\" title=\"", "\">", "\n ", "\n </div>\n <div class=\"chatbox-title__buttons row no-gutters\">\n ", "\n ", "\n </div>\n </div>\n ", "\n "]); - chatroom_head_templateObject = function _templateObject() { + chatroom_head_templateObject = function () { return data; }; @@ -98310,255 +102751,154 @@ const chatroom_head_tpl_standalone_btns = o => o.standalone_btns.reverse().map(b const subject = o.subject ? chatroom_head_u.addHyperlinks(o.subject.text) : ''; const show_subject = subject && !o.subject_hidden; - return lit_html_html(chatroom_head_templateObject(), show_subject ? '' : "chatbox-title--no-desc", o._converse.standalone ? lit_html_html(chatroom_head_templateObject2()) : '', o._converse.locked_muc_domain !== 'hidden' ? o.jid : '', o.title, o.bookmarked ? lit_html_html(chatroom_head_templateObject3(), i18n_bookmarked) : '', o.standalone_btns.length ? chatroom_head_tpl_standalone_btns(o) : '', o.dropdown_btns.length ? lit_html_html(chatroom_head_templateObject4(), o.dropdown_btns) : '', show_subject ? lit_html_html(chatroom_head_templateObject5(), i18n_hide_topic, subject) : ''); + return lit_html_html(chatroom_head_templateObject(), show_subject ? '' : "chatbox-title--no-desc", !o._converse.api.settings.get("singleton") ? lit_html_html(chatroom_head_templateObject2()) : '', o._converse.locked_muc_domain !== 'hidden' ? o.jid : '', o.title, o.bookmarked ? lit_html_html(chatroom_head_templateObject3(), i18n_bookmarked) : '', o.standalone_btns.length ? chatroom_head_tpl_standalone_btns(o) : '', o.dropdown_btns.length ? lit_html_html(chatroom_head_templateObject4(), o.dropdown_btns) : '', show_subject ? lit_html_html(chatroom_head_templateObject5(), i18n_hide_topic, subject) : ''); }); -// CONCATENATED MODULE: ./src/templates/muc_nickname_form.js -function muc_nickname_form_templateObject() { - const data = muc_nickname_form_taggedTemplateLiteral(["\n <div class=\"chatroom-form-container muc-nickname-form\">\n <form class=\"converse-form chatroom-form converse-centered-form\">\n <fieldset class=\"form-group\">\n <label>", "</label>\n <input type=\"text\" required=\"required\" name=\"nick\" value=\"", "\"\n class=\"form-control\" placeholder=\"", "\"/>\n </fieldset>\n <fieldset class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"", "\"/>\n </fieldset>\n </form>\n </div>"]); +// CONCATENATED MODULE: ./src/templates/muc_bottom_panel.js +function muc_bottom_panel_templateObject3() { + const data = muc_bottom_panel_taggedTemplateLiteral(["<div class=\"muc-bottom-panel\"></div>"]); - muc_nickname_form_templateObject = function _templateObject() { + muc_bottom_panel_templateObject3 = function () { return data; }; return data; } -function muc_nickname_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -/* harmony default export */ var muc_nickname_form = (o => { - const i18n_nickname = i18n_('Nickname'); - - const i18n_join = i18n_('Enter groupchat'); - - const i18n_heading = converse_core_api.settings.get('muc_show_logs_before_join') ? i18n_('Choose a nickname to enter') : i18n_('Please choose your nickname'); - return lit_html_html(muc_nickname_form_templateObject(), i18n_heading, o.nick || '', i18n_nickname, i18n_join); -}); -// CONCATENATED MODULE: ./src/templates/muc_config_form.js -function muc_config_form_templateObject2() { - const data = muc_config_form_taggedTemplateLiteral(["<p class=\"form-help\">", "</p>"]); +function muc_bottom_panel_templateObject2() { + const data = muc_bottom_panel_taggedTemplateLiteral(["<div class=\"muc-bottom-panel\">", "</div>"]); - muc_config_form_templateObject2 = function _templateObject2() { + muc_bottom_panel_templateObject2 = function () { return data; }; return data; } -function muc_config_form_templateObject() { - const data = muc_config_form_taggedTemplateLiteral(["\n <form class=\"converse-form chatroom-form\" autocomplete=\"off\" @submit=", ">\n <fieldset class=\"form-group\">\n <legend>", "</legend>\n ", "\n <!-- Fields are generated internally, with xForm2webForm -->\n ", "\n </fieldset>\n <fieldset>\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\">\n <input type=\"button\" class=\"btn btn-secondary button-cancel\" value=\"", "\" @click=", ">\n </fieldset>\n </form>\n "]); +function muc_bottom_panel_templateObject() { + const data = muc_bottom_panel_taggedTemplateLiteral(["\n <div class=\"emoji-picker__container dropup\"></div>\n <div class=\"message-form-container\">"]); - muc_config_form_templateObject = function _templateObject() { + muc_bottom_panel_templateObject = function () { return data; }; return data; } -function muc_config_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function muc_bottom_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var muc_config_form = (o => { - const i18n_save = i18n_('Save'); +const tpl_can_edit = () => lit_html_html(muc_bottom_panel_templateObject()); - const i18n_cancel = i18n_('Cancel'); +/* harmony default export */ var muc_bottom_panel = (o => { + const i18n_not_allowed = i18n_("You're not allowed to send messages in this room"); - return lit_html_html(muc_config_form_templateObject(), o.submitConfigForm, o.title, o.title !== o.instructions ? lit_html_html(muc_config_form_templateObject2(), o.instructions) : '', o.fields.map(field => unsafeHTML(field)), i18n_save, i18n_cancel, o.closeConfigForm); + if (o.entered) { + return o.can_edit ? tpl_can_edit() : lit_html_html(muc_bottom_panel_templateObject2(), i18n_not_allowed); + } else { + return lit_html_html(muc_bottom_panel_templateObject3()); + } }); -// CONCATENATED MODULE: ./src/templates/muc_password_form.js -function muc_password_form_templateObject() { - const data = muc_password_form_taggedTemplateLiteral(["\n <form class=\"converse-form chatroom-form converse-centered-form\" @submit=", ">\n <fieldset class=\"form-group\">\n <label>", "</label>\n <p class=\"validation-message\">", "</p>\n <input class=\"hidden-username\" type=\"text\" autocomplete=\"username\" value=\"", "\"></input>\n <input type=\"password\"\n name=\"password\"\n required=\"required\"\n class=\"form-control ", "\"\n placeholder=\"", "\"/>\n </fieldset>\n <fieldset class=\"form-group\">\n <input class=\"btn btn-primary\" type=\"submit\" value=\"", "\"/>\n </fieldset>\n </form>\n "]); +// CONCATENATED MODULE: ./src/templates/muc_destroyed.js +function muc_destroyed_templateObject3() { + const data = muc_destroyed_taggedTemplateLiteral(["<p class=\"destroyed-reason\">\"", "\"</p>"]); - muc_password_form_templateObject = function _templateObject() { + muc_destroyed_templateObject3 = function () { return data; }; return data; } -function muc_password_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - -/* harmony default export */ var muc_password_form = (o => { - const i18n_heading = i18n_('This groupchat requires a password'); - - const i18n_password = i18n_('Password: '); - - const i18n_submit = i18n_('Submit'); - - return lit_html_html(muc_password_form_templateObject(), o.submitPassword, i18n_heading, o.validation_message, o.jid, o.validation_message ? 'error' : '', i18n_password, i18n_submit); -}); -// CONCATENATED MODULE: ./src/templates/occupant.js -function occupant_templateObject6() { - const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-secondary\">", "</span>"]); +function muc_destroyed_templateObject2() { + const data = muc_destroyed_taggedTemplateLiteral(["\n <div class=\"alert alert-danger\">\n <h3 class=\"alert-heading disconnect-msg\">", "</h3>\n ", "\n ", "\n </div>"]); - occupant_templateObject6 = function _templateObject6() { + muc_destroyed_templateObject2 = function () { return data; }; return data; } -function occupant_templateObject5() { - const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); +function muc_destroyed_templateObject() { + const data = muc_destroyed_taggedTemplateLiteral(["\n <p class=\"moved-label\">", "</p>\n <p class=\"moved-link\"><a class=\"switch-chat\" href=\"#\">", "</a></p>"]); - occupant_templateObject5 = function _templateObject5() { + muc_destroyed_templateObject = function () { return data; }; return data; } -function occupant_templateObject4() { - const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); - - occupant_templateObject4 = function _templateObject4() { - return data; - }; - - return data; -} +function muc_destroyed_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -function occupant_templateObject3() { - const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-info\">", "</span>"]); - occupant_templateObject3 = function _templateObject3() { - return data; - }; - return data; -} -function occupant_templateObject2() { - const data = occupant_taggedTemplateLiteral(["<span class=\"badge badge-groupchat\">", "</span>"]); +const tpl_moved = jid => { + const i18n_moved = i18n_('The conversation has moved. Click below to enter.'); - occupant_templateObject2 = function _templateObject2() { - return data; - }; + return lit_html_html(muc_destroyed_templateObject(), i18n_moved, jid); +}; - return data; -} +/* harmony default export */ var muc_destroyed = ((jid, reason) => { + const i18n_non_existent = i18n_('This groupchat no longer exists'); -function occupant_templateObject() { - const data = occupant_taggedTemplateLiteral(["\n <li class=\"occupant\" id=\"", "\" title=\"", "\">\n <div class=\"row no-gutters\">\n <div class=\"col-auto\">\n <div class=\"occupant-status occupant-", " circle\" title=\"", "\"></div>\n </div>\n <div class=\"col occupant-nick-badge\">\n <span class=\"occupant-nick\">", "</span>\n <span class=\"occupant-badges\">\n ", "\n ", "\n ", "\n ", "\n ", "\n </span>\n </div>\n </div>\n </li>\n "]); + return lit_html_html(muc_destroyed_templateObject2(), i18n_non_existent, reason ? lit_html_html(muc_destroyed_templateObject3(), reason) : '', jid ? tpl_moved(jid) : ''); +}); +// CONCATENATED MODULE: ./src/templates/muc_disconnect.js +function muc_disconnect_templateObject2() { + const data = muc_disconnect_taggedTemplateLiteral(["<p class=\"disconnect-msg\">", "</p>"]); - occupant_templateObject = function _templateObject() { + muc_disconnect_templateObject2 = function () { return data; }; return data; } -function occupant_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -const occupant_title = o => { - const i18n_moderator_hint = i18n_('This user is a moderator.'); - - const i18n_participant_hint = i18n_('This user can send messages in this groupchat.'); - - const i18n_visitor_hint = i18n_('This user can NOT send messages in this groupchat.'); - - const spaced_jid = "".concat(o.jid, " ") || false; - - if (o.role === "moderator") { - return "".concat(spaced_jid).concat(i18n_moderator_hint, " ").concat(o.hint_occupant); - } else if (o.role === "participant") { - return "".concat(spaced_jid).concat(i18n_participant_hint, " ").concat(o.hint_occupant); - } else if (o.role === "visitor") { - return "".concat(spaced_jid).concat(i18n_visitor_hint, " ").concat(o.hint_occupant); - } else if (!["visitor", "participant", "moderator"].includes(o.role)) { - return "".concat(spaced_jid).concat(o.hint_occupant); - } -}; - -/* harmony default export */ var templates_occupant = (o => { - const i18n_owner = i18n_('Owner'); - - const i18n_admin = i18n_('Admin'); - - const i18n_member = i18n_('Member'); - - const i18n_moderator = i18n_('Moderator'); - - const i18n_visitor = i18n_('Visitor'); - - return lit_html_html(occupant_templateObject(), o.id, occupant_title(o), o.show, o.hint_show, o.nick || o.jid, o.affiliation === "owner" ? lit_html_html(occupant_templateObject2(), i18n_owner) : '', o.affiliation === "admin" ? lit_html_html(occupant_templateObject3(), i18n_admin) : '', o.affiliation === "member" ? lit_html_html(occupant_templateObject4(), i18n_member) : '', o.role === "moderator" ? lit_html_html(occupant_templateObject5(), i18n_moderator) : '', o.role === "visitor" ? lit_html_html(occupant_templateObject6(), i18n_visitor) : ''); -}); -// CONCATENATED MODULE: ./src/templates/muc_sidebar.js -function muc_sidebar_templateObject() { - const data = muc_sidebar_taggedTemplateLiteral(["\n <div class=\"occupants-header\">\n <i class=\"hide-occupants fa fa-times\"></i>\n <div class=\"occupants-header--title\">\n <span class=\"occupants-heading\">", "</span>\n </div>\n </div>\n <div class=\"dragresize dragresize-occupants-left\"></div>\n <ul class=\"occupant-list\">\n ", "\n </ul>\n "]); +function muc_disconnect_templateObject() { + const data = muc_disconnect_taggedTemplateLiteral(["\n <div class=\"alert alert-danger\">\n <h3 class=\"alert-heading disconnect-msg\">", "</h3>\n ", "\n </div>"]); - muc_sidebar_templateObject = function _templateObject() { + muc_disconnect_templateObject = function () { return data; }; return data; } -function muc_sidebar_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - -const PRETTY_CHAT_STATUS = { - 'offline': 'Offline', - 'unavailable': 'Unavailable', - 'xa': 'Extended Away', - 'away': 'Away', - 'dnd': 'Do not disturb', - 'chat': 'Chattty', - 'online': 'Online' -}; -/* harmony default export */ var muc_sidebar = (o => { - const i18n_occupant_hint = occupant => i18n_('Click to mention %1$s in your message.', occupant.get('nick')); +function muc_disconnect_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - const i18n_participants = i18n_('Participants'); - return lit_html_html(muc_sidebar_templateObject(), i18n_participants, o.occupants.map(occupant => { - return templates_occupant(Object.assign({ - 'jid': '', - 'hint_show': PRETTY_CHAT_STATUS[occupant.get('show')], - 'hint_occupant': i18n_occupant_hint(occupant) - }, occupant.toJSON())); - })); +/* harmony default export */ var muc_disconnect = (messages => { + return lit_html_html(muc_disconnect_templateObject(), messages[0], messages.slice(1).map(m => lit_html_html(muc_disconnect_templateObject2(), m))); }); -// CONCATENATED MODULE: ./src/templates/room_panel.js -function room_panel_templateObject() { - const data = room_panel_taggedTemplateLiteral(["\n <div class=\"d-flex controlbox-padded\">\n <span class=\"w-100 controlbox-heading controlbox-heading--groupchats\">", "</span>\n <a class=\"controlbox-heading__btn show-list-muc-modal fa fa-list-ul\" title=\"", "\" data-toggle=\"modal\" data-target=\"#list-chatrooms-modal\"></a>\n <a class=\"controlbox-heading__btn show-add-muc-modal fa fa-plus\" title=\"", "\" data-toggle=\"modal\" data-target=\"#add-chatrooms-modal\"></a>\n </div>\n <div class=\"list-container list-container--openrooms hidden\"></div>\n <div class=\"list-container list-container--bookmarks hidden\"></div>"]); +// CONCATENATED MODULE: ./src/templates/muc_nickname_form.js +function muc_nickname_form_templateObject() { + const data = muc_nickname_form_taggedTemplateLiteral(["\n <div class=\"chatroom-form-container muc-nickname-form\">\n <form class=\"converse-form chatroom-form converse-centered-form\">\n <fieldset class=\"form-group\">\n <label>", "</label>\n <p class=\"validation-message\">", "</p>\n <input type=\"text\"\n required=\"required\"\n name=\"nick\"\n value=\"", "\"\n class=\"form-control ", "\"\n placeholder=\"", "\"/>\n </fieldset>\n <fieldset class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"", "\"/>\n </fieldset>\n </form>\n </div>"]); - room_panel_templateObject = function _templateObject() { + muc_nickname_form_templateObject = function () { return data; }; return data; } -function room_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - -/* harmony default export */ var room_panel = (o => lit_html_html(room_panel_templateObject(), o.heading_chatrooms, o.title_list_rooms, o.title_new_room)); -// CONCATENATED MODULE: ./src/converse-muc-views.js -/** - * @module converse-muc-views - * @copyright 2020, the Converse.js contributors - * @description XEP-0045 Multi-User Chat Views - * @license Mozilla Public License (MPLv2) - */ - +function muc_nickname_form_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +/* harmony default export */ var muc_nickname_form = (o => { + const i18n_nickname = i18n_('Nickname'); + const i18n_join = i18n_('Enter groupchat'); + const i18n_heading = core_api.settings.get('muc_show_logs_before_join') ? i18n_('Choose a nickname to enter') : i18n_('Please choose your nickname'); + return lit_html_html(muc_nickname_form_templateObject(), i18n_heading, o.nickname_validation_message, o.nick || '', o.nickname_validation_message ? 'error' : '', i18n_nickname, i18n_join); +}); +// CONCATENATED MODULE: ./src/plugins/muc-views/muc.js @@ -98579,11 +102919,11 @@ function room_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = stri const { - Strophe: converse_muc_views_Strophe, - sizzle: converse_muc_views_sizzle, - $pres: converse_muc_views_$pres + Strophe: muc_views_muc_Strophe, + sizzle: muc_views_muc_sizzle, + $pres: muc_$pres } = converse.env; -const converse_muc_views_u = converse.env.utils; +const muc_u = converse.env.utils; const OWNER_COMMANDS = ['owner']; const ADMIN_COMMANDS = ['admin', 'ban', 'deop', 'destroy', 'member', 'op', 'revoke']; const MODERATOR_COMMANDS = ['kick', 'mute', 'voice', 'modtools']; @@ -98603,14 +102943,13 @@ const COMMAND_TO_AFFILIATION = { 'revoke': 'none' }; /** - * NativeView which renders a groupchat, based upon - * { @link _converse.ChatBoxView } for normal one-on-one chat boxes. - * @class + * Mixin which turns a ChatBoxView into a ChatRoomView + * @mixin * @namespace _converse.ChatRoomView * @memberOf _converse */ -const ChatRoomView = ChatBoxView.extend({ +const ChatRoomViewMixin = { length: 300, tagName: 'div', className: 'chatbox chatroom hidden', @@ -98620,7 +102959,7 @@ const ChatRoomView = ChatBoxView.extend({ 'click .hide-occupants': 'hideOccupants', 'click .new-msgs-indicator': 'viewUnreadMessages', // Arrow functions don't work here because you can't bind a different `this` param to them. - 'click .occupant-nick': function clickOccupantNick(ev) { + 'click .occupant-nick': function (ev) { this.insertIntoTextArea(ev.target.textContent); }, 'click .send-button': 'onFormSubmitted', @@ -98639,7 +102978,7 @@ const ChatRoomView = ChatBoxView.extend({ this.listenTo(this.model, 'change', lodash_es_debounce(() => this.renderHeading(), 250)); this.listenTo(this.model, 'change:composing_spoiler', this.renderMessageForm); this.listenTo(this.model, 'change:hidden', m => m.get('hidden') ? this.hide() : this.show()); - this.listenTo(this.model, 'change:hidden_occupants', this.renderToolbar); + this.listenTo(this.model, 'change:hidden_occupants', this.onSidebarToggle); this.listenTo(this.model, 'configurationNeeded', this.getAndRenderConfigurationForm); this.listenTo(this.model, 'destroy', this.hide); this.listenTo(this.model, 'show', this.show); @@ -98665,13 +103004,14 @@ const ChatRoomView = ChatBoxView.extend({ this.listenTo(this.model.occupants, 'change:role', this.onOccupantRoleChanged); this.listenTo(this.model.occupants, 'change:show', this.showJoinOrLeaveNotification); this.listenTo(this.model.occupants, 'remove', this.onOccupantRemoved); - this.createSidebarView(); - await this.updateAfterMessagesFetched(); // Register later due to await + this.renderChatContent(); + this.insertIntoDOM(); // Register later due to await - const user_settings = await converse_core_converse.api.user.settings.getModel(); + const user_settings = await core_converse.api.user.settings.getModel(); this.listenTo(user_settings, 'change:mucs_with_hidden_subject', this.renderHeading); this.onConnectionStatusChanged(); this.model.maybeShow(); + this.scrollDown(); /** * Triggered once a { @link _converse.ChatRoomView } has been opened * @event _converse#chatRoomViewInitialized @@ -98679,15 +103019,20 @@ const ChatRoomView = ChatBoxView.extend({ * @example _converse.api.listen.on('chatRoomViewInitialized', view => { ... }); */ - converse_core_api.trigger('chatRoomViewInitialized', this); + core_api.trigger('chatRoomViewInitialized', this); }, async render() { + const sidebar_hidden = !this.shouldShowSidebar(); this.el.setAttribute('id', this.model.get('box_id')); render_render(templates_chatroom({ + sidebar_hidden, + 'model': this.model, + 'occupants': this.model.occupants, + 'show_sidebar': !this.model.get('hidden_occupants') && this.model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED, 'markScrolled': ev => this.markScrolled(ev), - 'muc_show_logs_before_join': converse_core_api.settings.get('muc_show_logs_before_join'), - 'show_send_button': converse_core_converse.show_send_button + 'muc_show_logs_before_join': core_api.settings.get('muc_show_logs_before_join'), + 'show_send_button': core_converse.show_send_button }), this.el); this.notifications = this.el.querySelector('.chat-content__notifications'); this.content = this.el.querySelector('.chat-content'); @@ -98695,7 +103040,7 @@ const ChatRoomView = ChatBoxView.extend({ this.help_container = this.el.querySelector('.chat-content__help'); this.renderBottomPanel(); - if (!converse_core_api.settings.get('muc_show_logs_before_join') && this.model.session.get('connection_status') !== converse.ROOMSTATUS.ENTERED) { + if (!core_api.settings.get('muc_show_logs_before_join') && this.model.session.get('connection_status') !== converse.ROOMSTATUS.ENTERED) { this.showSpinner(); } // Render header as late as possible since it's async and we // want the rest of the DOM elements to be available ASAP. @@ -98708,8 +103053,8 @@ const ChatRoomView = ChatBoxView.extend({ getNotifications() { const actors_per_state = this.model.notifications.toJSON(); - const role_changes = converse_core_api.settings.get('muc_show_info_messages').filter(role_change => converse.MUC_ROLE_CHANGES_LIST.includes(role_change)); - const join_leave_events = converse_core_api.settings.get('muc_show_info_messages').filter(join_leave_event => converse.MUC_TRAFFIC_STATES_LIST.includes(join_leave_event)); + const role_changes = core_api.settings.get('muc_show_info_messages').filter(role_change => converse.MUC_ROLE_CHANGES_LIST.includes(role_change)); + const join_leave_events = core_api.settings.get('muc_show_info_messages').filter(join_leave_event => converse.MUC_TRAFFIC_STATES_LIST.includes(join_leave_event)); const states = [...converse.CHAT_STATES, ...join_leave_events, ...role_changes]; return states.reduce((result, state) => { const existing_actors = actors_per_state[state]; @@ -98729,20 +103074,20 @@ const ChatRoomView = ChatBoxView.extend({ return "".concat(result).concat(i18n_('%1$s is typing', actors[0]), "\n"); } else if (state === 'paused') { return "".concat(result).concat(i18n_('%1$s has stopped typing', actors[0]), "\n"); - } else if (state === converse_core_converse.GONE) { + } else if (state === core_converse.GONE) { return "".concat(result).concat(i18n_('%1$s has gone away', actors[0]), "\n"); } else if (state === 'entered') { return "".concat(result).concat(i18n_('%1$s has entered the groupchat', actors[0]), "\n"); } else if (state === 'exited') { return "".concat(result).concat(i18n_('%1$s has left the groupchat', actors[0]), "\n"); } else if (state === 'op') { - return "".concat(result).concat(i18n_("%1$s is now a moderator", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s is now a moderator', actors[0]), "\n"); } else if (state === 'deop') { - return "".concat(result).concat(i18n_("%1$s is no longer a moderator", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s is no longer a moderator', actors[0]), "\n"); } else if (state === 'voice') { - return "".concat(result).concat(i18n_("%1$s has been given a voice", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s has been given a voice', actors[0]), "\n"); } else if (state === 'mute') { - return "".concat(result).concat(i18n_("%1$s has been muted", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s has been muted', actors[0]), "\n"); } } else if (actors.length > 1) { let actors_str; @@ -98758,20 +103103,20 @@ const ChatRoomView = ChatBoxView.extend({ return "".concat(result).concat(i18n_('%1$s are typing', actors_str), "\n"); } else if (state === 'paused') { return "".concat(result).concat(i18n_('%1$s have stopped typing', actors_str), "\n"); - } else if (state === converse_core_converse.GONE) { + } else if (state === core_converse.GONE) { return "".concat(result).concat(i18n_('%1$s have gone away', actors_str), "\n"); } else if (state === 'entered') { return "".concat(result).concat(i18n_('%1$s have entered the groupchat', actors_str), "\n"); } else if (state === 'exited') { return "".concat(result).concat(i18n_('%1$s have left the groupchat', actors_str), "\n"); } else if (state === 'op') { - return "".concat(result).concat(i18n_("%1$s are now moderators", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s are now moderators', actors[0]), "\n"); } else if (state === 'deop') { - return "".concat(result).concat(i18n_("%1$s are no longer moderators", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s are no longer moderators', actors[0]), "\n"); } else if (state === 'voice') { - return "".concat(result).concat(i18n_("%1$s have been given voices", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s have been given voices', actors[0]), "\n"); } else if (state === 'mute') { - return "".concat(result).concat(i18n_("%1$s have been muted", actors[0]), "\n"); + return "".concat(result).concat(i18n_('%1$s have been muted', actors[0]), "\n"); } } @@ -98780,9 +103125,9 @@ const ChatRoomView = ChatBoxView.extend({ }, getHelpMessages() { - const setting = converse_core_api.settings.get("muc_disable_slash_commands"); + const setting = core_api.settings.get('muc_disable_slash_commands'); const disabled_commands = Array.isArray(setting) ? setting : []; - return ["<strong>/admin</strong>: ".concat(i18n_("Change user's affiliation to admin")), "<strong>/ban</strong>: ".concat(i18n_('Ban user by changing their affiliation to outcast')), "<strong>/clear</strong>: ".concat(i18n_('Clear the chat area')), "<strong>/close</strong>: ".concat(i18n_('Close this groupchat')), "<strong>/deop</strong>: ".concat(i18n_('Change user role to participant')), "<strong>/destroy</strong>: ".concat(i18n_('Remove this groupchat')), "<strong>/help</strong>: ".concat(i18n_('Show this menu')), "<strong>/kick</strong>: ".concat(i18n_('Kick user from groupchat')), "<strong>/me</strong>: ".concat(i18n_('Write in 3rd person')), "<strong>/member</strong>: ".concat(i18n_('Grant membership to a user')), "<strong>/modtools</strong>: ".concat(i18n_('Opens up the moderator tools GUI')), "<strong>/mute</strong>: ".concat(i18n_("Remove user's ability to post messages")), "<strong>/nick</strong>: ".concat(i18n_('Change your nickname')), "<strong>/op</strong>: ".concat(i18n_('Grant moderator role to user')), "<strong>/owner</strong>: ".concat(i18n_('Grant ownership of this groupchat')), "<strong>/register</strong>: ".concat(i18n_("Register your nickname")), "<strong>/revoke</strong>: ".concat(i18n_("Revoke the user's current affiliation")), "<strong>/subject</strong>: ".concat(i18n_('Set groupchat subject')), "<strong>/topic</strong>: ".concat(i18n_('Set groupchat subject (alias for /subject)')), "<strong>/voice</strong>: ".concat(i18n_('Allow muted user to post messages'))].filter(line => disabled_commands.every(c => !line.startsWith(c + '<', 9))).filter(line => this.getAllowedCommands().some(c => line.startsWith(c + '<', 9))); + return ["<strong>/admin</strong>: ".concat(i18n_("Change user's affiliation to admin")), "<strong>/ban</strong>: ".concat(i18n_('Ban user by changing their affiliation to outcast')), "<strong>/clear</strong>: ".concat(i18n_('Clear the chat area')), "<strong>/close</strong>: ".concat(i18n_('Close this groupchat')), "<strong>/deop</strong>: ".concat(i18n_('Change user role to participant')), "<strong>/destroy</strong>: ".concat(i18n_('Remove this groupchat')), "<strong>/help</strong>: ".concat(i18n_('Show this menu')), "<strong>/kick</strong>: ".concat(i18n_('Kick user from groupchat')), "<strong>/me</strong>: ".concat(i18n_('Write in 3rd person')), "<strong>/member</strong>: ".concat(i18n_('Grant membership to a user')), "<strong>/modtools</strong>: ".concat(i18n_('Opens up the moderator tools GUI')), "<strong>/mute</strong>: ".concat(i18n_("Remove user's ability to post messages")), "<strong>/nick</strong>: ".concat(i18n_('Change your nickname')), "<strong>/op</strong>: ".concat(i18n_('Grant moderator role to user')), "<strong>/owner</strong>: ".concat(i18n_('Grant ownership of this groupchat')), "<strong>/register</strong>: ".concat(i18n_('Register your nickname')), "<strong>/revoke</strong>: ".concat(i18n_("Revoke the user's current affiliation")), "<strong>/subject</strong>: ".concat(i18n_('Set groupchat subject')), "<strong>/topic</strong>: ".concat(i18n_('Set groupchat subject (alias for /subject)')), "<strong>/voice</strong>: ".concat(i18n_('Allow muted user to post messages'))].filter(line => disabled_commands.every(c => !line.startsWith(c + '<', 9))).filter(line => this.getAllowedCommands().some(c => line.startsWith(c + '<', 9))); }, /** @@ -98811,26 +103156,12 @@ const ChatRoomView = ChatBoxView.extend({ } }, - createSidebarView() { - this.model.occupants.chatroomview = this; - this.sidebar_view = new converse_core_converse.MUCSidebar({ - 'model': this.model.occupants - }); - const container_el = this.el.querySelector('.chatroom-body'); - const occupants_width = this.model.get('occupants_width'); - - if (this.sidebar_view && occupants_width !== undefined) { - this.sidebar_view.el.style.flex = "0 0 " + occupants_width + "px"; - } - - container_el.insertAdjacentElement('beforeend', this.sidebar_view.el); - }, - onStartResizeOccupants(ev) { this.resizing = true; this.el.addEventListener('mousemove', this.onMouseMove); this.el.addEventListener('mouseup', this.onMouseUp); - const style = window.getComputedStyle(this.sidebar_view.el); + const sidebar_el = this.el.querySelector('converse-muc-sidebar'); + const style = window.getComputedStyle(sidebar_el); this.width = parseInt(style.width.replace(/px$/, ''), 10); this.prev_pageX = ev.pageX; }, @@ -98850,17 +103181,19 @@ const ChatRoomView = ChatBoxView.extend({ this.resizing = false; this.el.removeEventListener('mousemove', this.onMouseMove); this.el.removeEventListener('mouseup', this.onMouseUp); - const element_position = this.sidebar_view.el.getBoundingClientRect(); + const sidebar_el = this.el.querySelector('converse-muc-sidebar'); + const element_position = sidebar_el.getBoundingClientRect(); const occupants_width = this.calculateSidebarWidth(element_position, 0); const attrs = { occupants_width }; - converse_core_converse.connection.connected ? this.model.save(attrs) : this.model.set(attrs); + core_converse.connection.connected ? this.model.save(attrs) : this.model.set(attrs); } }, resizeSidebarView(delta, current_mouse_position) { - const element_position = this.sidebar_view.el.getBoundingClientRect(); + const sidebar_el = this.el.querySelector('converse-muc-sidebar'); + const element_position = sidebar_el.getBoundingClientRect(); if (this.is_minimum) { this.is_minimum = element_position.left < current_mouse_position; @@ -98868,7 +103201,7 @@ const ChatRoomView = ChatBoxView.extend({ this.is_maximum = element_position.left > current_mouse_position; } else { const occupants_width = this.calculateSidebarWidth(element_position, delta); - this.sidebar_view.el.style.flex = "0 0 " + occupants_width + "px"; + sidebar_el.style.flex = '0 0 ' + occupants_width + 'px'; } }, @@ -98876,9 +103209,9 @@ const ChatRoomView = ChatBoxView.extend({ let occupants_width = element_position.width + delta; const room_width = this.el.clientWidth; // keeping display in boundaries - if (occupants_width < room_width * 0.20) { + if (occupants_width < room_width * 0.2) { // set pixel to 20% width - occupants_width = room_width * 0.20; + occupants_width = room_width * 0.2; this.is_minimum = true; } else if (occupants_width > room_width * 0.75) { // set pixel to 75% width @@ -98905,32 +103238,32 @@ const ChatRoomView = ChatBoxView.extend({ getAutoCompleteListItem(text, input) { input = input.trim(); - const element = document.createElement("li"); - element.setAttribute("aria-selected", "false"); + const element = document.createElement('li'); + element.setAttribute('aria-selected', 'false'); - if (converse_core_api.settings.get('muc_mention_autocomplete_show_avatar')) { - const img = document.createElement("img"); - let dataUri = "data:" + converse_core_converse.DEFAULT_IMAGE_TYPE + ";base64," + converse_core_converse.DEFAULT_IMAGE; + if (core_api.settings.get('muc_mention_autocomplete_show_avatar')) { + const img = document.createElement('img'); + let dataUri = 'data:' + core_converse.DEFAULT_IMAGE_TYPE + ';base64,' + core_converse.DEFAULT_IMAGE; - if (converse_core_converse.vcards) { - const vcard = converse_core_converse.vcards.findWhere({ + if (core_converse.vcards) { + const vcard = core_converse.vcards.findWhere({ 'nickname': text }); - if (vcard) dataUri = "data:" + vcard.get('image_type') + ";base64," + vcard.get('image'); + if (vcard) dataUri = 'data:' + vcard.get('image_type') + ';base64,' + vcard.get('image'); } - img.setAttribute("src", dataUri); - img.setAttribute("width", "22"); - img.setAttribute("class", "avatar avatar-autocomplete"); + img.setAttribute('src', dataUri); + img.setAttribute('width', '22'); + img.setAttribute('class', 'avatar avatar-autocomplete'); element.appendChild(img); } - const regex = new RegExp("(" + input + ")", "ig"); + const regex = new RegExp('(' + input + ')', 'ig'); const parts = input ? text.split(regex) : [text]; parts.forEach(txt => { if (input && txt.match(regex)) { - const match = document.createElement("mark"); + const match = document.createElement('mark'); match.textContent = txt; element.appendChild(match); } else { @@ -98941,14 +103274,14 @@ const ChatRoomView = ChatBoxView.extend({ }, initMentionAutoComplete() { - this.mention_auto_complete = new converse_core_converse.AutoComplete(this.el, { + this.mention_auto_complete = new core_converse.AutoComplete(this.el, { 'auto_first': true, 'auto_evaluate': false, - 'min_chars': converse_core_api.settings.get('muc_mention_autocomplete_min_chars'), + 'min_chars': core_api.settings.get('muc_mention_autocomplete_min_chars'), 'match_current_word': true, 'list': () => this.getAutoCompleteList(), - 'filter': converse_core_api.settings.get('muc_mention_autocomplete_filter') == 'contains' ? converse_core_converse.FILTER_CONTAINS : converse_core_converse.FILTER_STARTSWITH, - 'ac_triggers': ["Tab", "@"], + 'filter': core_api.settings.get('muc_mention_autocomplete_filter') == 'contains' ? core_converse.FILTER_CONTAINS : core_converse.FILTER_STARTSWITH, + 'ac_triggers': ['Tab', '@'], 'include_triggers': [], 'item': this.getAutoCompleteListItem }); @@ -98972,48 +103305,48 @@ const ChatRoomView = ChatBoxView.extend({ return; } - return converse_core_converse.ChatBoxView.prototype.onKeyDown.call(this, ev); + return core_converse.ChatBoxView.prototype.onKeyDown.call(this, ev); }, onKeyUp(ev) { this.mention_auto_complete.evaluate(ev); - return converse_core_converse.ChatBoxView.prototype.onKeyUp.call(this, ev); + return core_converse.ChatBoxView.prototype.onKeyUp.call(this, ev); }, async onMessageRetractButtonClicked(message) { - const retraction_warning = i18n_("Be aware that other XMPP/Jabber clients (and servers) may " + "not yet support retractions and that this message may not " + "be removed everywhere."); + const retraction_warning = i18n_('Be aware that other XMPP/Jabber clients (and servers) may ' + 'not yet support retractions and that this message may not ' + 'be removed everywhere.'); if (message.mayBeRetracted()) { const messages = [i18n_('Are you sure you want to retract this message?')]; - if (converse_core_api.settings.get('show_retraction_warning')) { + if (core_api.settings.get('show_retraction_warning')) { messages[1] = retraction_warning; } - !!(await converse_core_api.confirm(i18n_('Confirm'), messages)) && this.model.retractOwnMessage(message); + !!(await core_api.confirm(i18n_('Confirm'), messages)) && this.model.retractOwnMessage(message); } else if (await message.mayBeModerated()) { if (message.get('sender') === 'me') { let messages = [i18n_('Are you sure you want to retract this message?')]; - if (converse_core_api.settings.get('show_retraction_warning')) { + if (core_api.settings.get('show_retraction_warning')) { messages = [messages[0], retraction_warning, messages[1]]; } - !!(await converse_core_api.confirm(i18n_('Confirm'), messages)) && this.retractOtherMessage(message); + !!(await core_api.confirm(i18n_('Confirm'), messages)) && this.retractOtherMessage(message); } else { let messages = [i18n_('You are about to retract this message.'), i18n_('You may optionally include a message, explaining the reason for the retraction.')]; - if (converse_core_api.settings.get('show_retraction_warning')) { + if (core_api.settings.get('show_retraction_warning')) { messages = [messages[0], retraction_warning, messages[1]]; } - const reason = await converse_core_api.prompt(i18n_('Message Retraction'), messages, i18n_('Optional reason')); + const reason = await core_api.prompt(i18n_('Message Retraction'), messages, i18n_('Optional reason')); reason !== false && this.retractOtherMessage(message, reason); } } else { const err_msg = i18n_("Sorry, you're not allowed to retract this message"); - converse_core_api.alert('error', i18n_('Error'), err_msg); + core_api.alert('error', i18n_('Error'), err_msg); } }, @@ -99030,14 +103363,14 @@ const ChatRoomView = ChatBoxView.extend({ if (result === null) { const err_msg = i18n_("A timeout occurred while trying to retract the message"); - converse_core_api.alert('error', i18n_('Error'), err_msg); - headless_log(err_msg, converse_muc_views_Strophe.LogLevel.WARN); - } else if (converse_muc_views_u.isErrorStanza(result)) { + core_api.alert('error', i18n_('Error'), err_msg); + headless_log(err_msg, muc_views_muc_Strophe.LogLevel.WARN); + } else if (muc_u.isErrorStanza(result)) { const err_msg = i18n_("Sorry, you're not allowed to retract this message."); - converse_core_api.alert('error', i18n_('Error'), err_msg); - headless_log(err_msg, converse_muc_views_Strophe.LogLevel.WARN); - headless_log(result, converse_muc_views_Strophe.LogLevel.WARN); + core_api.alert('error', i18n_('Error'), err_msg); + headless_log(err_msg, muc_views_muc_Strophe.LogLevel.WARN); + headless_log(result, muc_views_muc_Strophe.LogLevel.WARN); } }, @@ -99046,32 +103379,36 @@ const ChatRoomView = ChatBoxView.extend({ return; } - if (typeof this.model.modtools_modal === 'undefined') { + let modal = core_api.modal.get(modals_moderator_tools.id); + + if (modal) { + modal.model.set('affiliation', affiliation); + } else { const model = new model_Model({ 'affiliation': affiliation }); - this.modtools_modal = new moderator_tools({ + modal = core_api.modal.create(modals_moderator_tools, { model, - _converse: converse_core_converse, + _converse: core_converse, 'chatroomview': this }); - } else { - this.modtools_modal.set('affiliation', affiliation); } - this.modtools_modal.show(); + modal.show(); }, showRoomDetailsModal(ev) { ev.preventDefault(); + core_api.modal.show(modals_muc_details, { + 'model': this.model + }, ev); + }, - if (this.model.room_details_modal === undefined) { - this.model.room_details_modal = new muc_details({ - 'model': this.model - }); - } - - this.model.room_details_modal.show(ev); + showOccupantDetailsModal(ev, message) { + ev.preventDefault(); + core_api.modal.show(modals_occupant, { + 'model': message.occupant + }, ev); }, showChatStateNotification(message) { @@ -99079,17 +103416,28 @@ const ChatRoomView = ChatBoxView.extend({ return; } - return converse_core_converse.ChatBoxView.prototype.showChatStateNotification.apply(this, arguments); + return core_converse.ChatBoxView.prototype.showChatStateNotification.apply(this, arguments); + }, + + shouldShowSidebar() { + return !this.model.get('hidden_occupants') && this.model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED; + }, + + onSidebarToggle() { + var _this$el$querySelecto; + + this.renderToolbar(); + (_this$el$querySelecto = this.el.querySelector('.occupants')) === null || _this$el$querySelecto === void 0 ? void 0 : _this$el$querySelecto.setVisibility(); }, onOccupantAffiliationChanged(occupant) { - if (occupant.get('jid') === converse_core_converse.bare_jid) { + if (occupant.get('jid') === core_converse.bare_jid) { this.renderHeading(); } }, onOccupantRoleChanged(occupant) { - if (occupant.get('jid') === converse_core_converse.bare_jid) { + if (occupant.get('jid') === core_converse.bare_jid) { this.renderBottomPanel(); } }, @@ -99106,7 +103454,7 @@ const ChatRoomView = ChatBoxView.extend({ 'i18n_text': i18n_('Details'), 'i18n_title': i18n_('Show more information about this groupchat'), 'handler': ev => this.showRoomDetailsModal(ev), - 'a_class': 'show-room-details-modal', + 'a_class': 'show-muc-details-modal', 'icon_class': 'fa-info-circle', 'name': 'details' }); @@ -99174,24 +103522,24 @@ const ChatRoomView = ChatBoxView.extend({ } } - if (!converse_core_api.settings.get("singleton")) { + if (!core_api.settings.get('singleton')) { buttons.push({ 'i18n_text': i18n_('Leave'), 'i18n_title': i18n_('Leave and close this groupchat'), 'handler': async ev => { ev.stopPropagation(); const messages = [i18n_('Are you sure you want to leave this groupchat?')]; - const result = await converse_core_api.confirm(i18n_('Confirm'), messages); + const result = await core_api.confirm(i18n_('Confirm'), messages); result && this.close(ev); }, 'a_class': 'close-chatbox-button', - 'standalone': converse_core_api.settings.get("view_mode") === 'overlayed', + 'standalone': core_api.settings.get('view_mode') === 'overlayed', 'icon_class': 'fa-sign-out-alt', 'name': 'signout' }); } - return converse_core_converse.api.hook('getHeadingButtons', this, buttons); + return core_converse.api.hook('getHeadingButtons', this, buttons); }, /** @@ -99205,7 +103553,7 @@ const ChatRoomView = ChatBoxView.extend({ const standalone_btns = heading_btns.filter(b => b.standalone); const dropdown_btns = heading_btns.filter(b => !b.standalone); return chatroom_head(Object.assign(this.model.toJSON(), { - _converse: converse_core_converse, + _converse: core_converse, subject_hidden, 'dropdown_btns': dropdown_btns.map(b => this.getHeadingDropdownItem(b)), 'standalone_btns': standalone_btns.map(b => this.getHeadingStandaloneButton(b)), @@ -99219,16 +103567,10 @@ const ChatRoomView = ChatBoxView.extend({ showInviteModal(ev) { ev.preventDefault(); - - if (this.muc_invite_modal === undefined) { - this.muc_invite_modal = new muc_invite({ - 'model': new model_Model() - }); // TODO: remove once we have API for sending direct invite - - this.muc_invite_modal.chatroomview = this; - } - - this.muc_invite_modal.show(ev); + core_api.modal.show(modals_muc_invite, { + 'model': new model_Model(), + 'chatroomview': this + }, ev); }, /** @@ -99240,7 +103582,7 @@ const ChatRoomView = ChatBoxView.extend({ // Override from converse-chatview, specifically to avoid // the 'active' chat state from being sent out prematurely. // This is instead done in `onConnectionStatusChanged` below. - if (converse_muc_views_u.isPersistableModel(this.model)) { + if (muc_u.isPersistableModel(this.model)) { this.model.clearUnreadMsgCounter(); } @@ -99268,10 +103610,10 @@ const ChatRoomView = ChatBoxView.extend({ }, getToolbarOptions() { - return Object.assign(converse_core_converse.ChatBoxView.prototype.getToolbarOptions.apply(this, arguments), { + return Object.assign(core_converse.ChatBoxView.prototype.getToolbarOptions.apply(this, arguments), { 'is_groupchat': true, 'label_hide_occupants': i18n_('Hide the list of participants'), - 'show_occupants_toggle': converse_core_converse.visible_toolbar_buttons.toggle_occupants + 'show_occupants_toggle': core_converse.visible_toolbar_buttons.toggle_occupants }); }, @@ -99283,12 +103625,12 @@ const ChatRoomView = ChatBoxView.extend({ async close() { this.hide(); - if (converse_core_converse.router.history.getFragment() === "converse/room?jid=" + this.model.get('jid')) { - converse_core_converse.router.navigate(''); + if (core_converse.router.history.getFragment() === 'converse/room?jid=' + this.model.get('jid')) { + core_converse.router.navigate(''); } await this.model.leave(); - return converse_core_converse.ChatBoxView.prototype.close.apply(this, arguments); + return core_converse.ChatBoxView.prototype.close.apply(this, arguments); }, /** @@ -99318,7 +103660,7 @@ const ChatRoomView = ChatBoxView.extend({ } occupant = occupant || this.model.occupants.findWhere({ - 'jid': converse_core_converse.bare_jid + 'jid': core_converse.bare_jid }); if (occupant) { @@ -99351,7 +103693,7 @@ const ChatRoomView = ChatBoxView.extend({ } occupant = occupant || this.model.occupants.findWhere({ - 'jid': converse_core_converse.bare_jid + 'jid': core_converse.bare_jid }); if (occupant) { @@ -99389,7 +103731,7 @@ const ChatRoomView = ChatBoxView.extend({ }, getNickOrJIDFromCommandArgs(args) { - if (converse_muc_views_u.isValidJID(args.trim())) { + if (muc_u.isValidJID(args.trim())) { return args.trim(); } @@ -99410,7 +103752,7 @@ const ChatRoomView = ChatBoxView.extend({ } if (references.length > 1) { - const message = i18n_("Error: found multiple groupchat participant based on your arguments"); + const message = i18n_('Error: found multiple groupchat participant based on your arguments'); this.model.createMessage({ message, @@ -99463,10 +103805,10 @@ const ChatRoomView = ChatBoxView.extend({ if (occupant) { jid = occupant.get('jid'); } else { - if (converse_muc_views_u.isValidJID(nick_or_jid)) { + if (muc_u.isValidJID(nick_or_jid)) { jid = nick_or_jid; } else { - const message = i18n_("Couldn't find a participant with that nickname. " + "They might have left the groupchat."); + const message = i18n_("Couldn't find a participant with that nickname. " + 'They might have left the groupchat.'); this.model.createMessage({ message, @@ -99481,7 +103823,7 @@ const ChatRoomView = ChatBoxView.extend({ reason }; - if (occupant && converse_core_api.settings.get('auto_register_muc_nickname')) { + if (occupant && core_api.settings.get('auto_register_muc_nickname')) { attrs['nick'] = occupant.get('nick'); } @@ -99526,7 +103868,7 @@ const ChatRoomView = ChatBoxView.extend({ onCommandError(err) { headless_log.fatal(err); - const message = i18n_("Sorry, an error happened while running the command.") + " " + i18n_("Check your browser's developer console for details."); + const message = i18n_('Sorry, an error happened while running the command.') + ' ' + i18n_("Check your browser's developer console for details."); this.model.createMessage({ message, @@ -99542,7 +103884,7 @@ const ChatRoomView = ChatBoxView.extend({ } const occupant = this.model.occupants.findWhere({ - 'jid': converse_core_converse.bare_jid + 'jid': core_converse.bare_jid }); if (this.verifyAffiliations(['owner'], occupant, false)) { @@ -99559,8 +103901,8 @@ const ChatRoomView = ChatBoxView.extend({ allowed_commands.sort(); - if (Array.isArray(converse_core_api.settings.get('muc_disable_slash_commands'))) { - return allowed_commands.filter(c => !converse_core_api.settings.get('muc_disable_slash_commands').includes(c)); + if (Array.isArray(core_api.settings.get('muc_disable_slash_commands'))) { + return allowed_commands.filter(c => !core_api.settings.get('muc_disable_slash_commands').includes(c)); } else { return allowed_commands; } @@ -99587,7 +103929,7 @@ const ChatRoomView = ChatBoxView.extend({ try { var _fields$filter$pop, _fields$filter$pop2; - fields = await converse_core_api.confirm(i18n_('Confirm'), messages, fields); + fields = await core_api.confirm(i18n_('Confirm'), messages, fields); const reason = (_fields$filter$pop = fields.filter(f => f.name === 'reason').pop()) === null || _fields$filter$pop === void 0 ? void 0 : _fields$filter$pop.value; const newjid = (_fields$filter$pop2 = fields.filter(f => f.name === 'newjid').pop()) === null || _fields$filter$pop2 === void 0 ? void 0 : _fields$filter$pop2.value; return this.model.sendDestroyIQ(reason, newjid).then(() => this.close()); @@ -99597,11 +103939,11 @@ const ChatRoomView = ChatBoxView.extend({ }, parseMessageForCommands(text) { - if (converse_core_api.settings.get('muc_disable_slash_commands') && !Array.isArray(converse_core_api.settings.get('muc_disable_slash_commands'))) { - return converse_core_converse.ChatBoxView.prototype.parseMessageForCommands.apply(this, arguments); + if (core_api.settings.get('muc_disable_slash_commands') && !Array.isArray(core_api.settings.get('muc_disable_slash_commands'))) { + return core_converse.ChatBoxView.prototype.parseMessageForCommands.apply(this, arguments); } - text = text.replace(/^\s*/, ""); + text = text.replace(/^\s*/, ''); const command = (text.match(/^\/([a-zA-Z]*) ?/) || ['']).pop().toLowerCase(); if (!command) { @@ -99694,11 +104036,11 @@ const ChatRoomView = ChatBoxView.extend({ 'type': 'error' }); } else { - const jid = converse_muc_views_Strophe.getBareJidFromJid(this.model.get('jid')); - converse_core_api.send(converse_muc_views_$pres({ - from: converse_core_converse.connection.jid, + const jid = muc_views_muc_Strophe.getBareJidFromJid(this.model.get('jid')); + core_api.send(muc_$pres({ + from: core_converse.connection.jid, to: "".concat(jid, "/").concat(args), - id: converse_muc_views_u.getUniqueId() + id: muc_u.getUniqueId() }).tree()); } @@ -99752,7 +104094,7 @@ const ChatRoomView = ChatBoxView.extend({ } default: - return converse_core_converse.ChatBoxView.prototype.parseMessageForCommands.apply(this, arguments); + return core_converse.ChatBoxView.prototype.parseMessageForCommands.apply(this, arguments); } return true; @@ -99772,7 +104114,7 @@ const ChatRoomView = ChatBoxView.extend({ this.model.save('config_stanza', stanza.outerHTML); if (!this.config_form) { - this.config_form = new converse_core_converse.MUCConfigForm({ + this.config_form = new core_converse.MUCConfigForm({ 'model': this.model, 'chatroomview': this }); @@ -99780,7 +104122,7 @@ const ChatRoomView = ChatBoxView.extend({ container_el.insertAdjacentElement('beforeend', this.config_form.el); } - converse_muc_views_u.showElement(this.config_form.el); + muc_u.showElement(this.config_form.el); }, /** @@ -99791,16 +104133,16 @@ const ChatRoomView = ChatBoxView.extend({ renderNicknameForm() { const tpl_result = muc_nickname_form(this.model.toJSON()); - if (converse_core_api.settings.get('muc_show_logs_before_join')) { + if (core_api.settings.get('muc_show_logs_before_join')) { const container = this.el.querySelector('.muc-bottom-panel'); render_render(tpl_result, container); - converse_muc_views_u.addClass('muc-bottom-panel--nickname', container); + muc_u.addClass('muc-bottom-panel--nickname', container); } else { const form = this.el.querySelector('.muc-nickname-form'); - const form_el = converse_muc_views_u.getElementFromTemplateResult(tpl_result); + const form_el = muc_u.getElementFromTemplateResult(tpl_result); if (form) { - converse_muc_views_sizzle('.spinner', this.el).forEach(converse_muc_views_u.removeElement); + muc_views_muc_sizzle('.spinner', this.el).forEach(muc_u.removeElement); form.outerHTML = form_el.outerHTML; } else { this.hideChatRoomContents(); @@ -99809,7 +104151,7 @@ const ChatRoomView = ChatBoxView.extend({ } } - converse_muc_views_u.safeSave(this.model.session, { + muc_u.safeSave(this.model.session, { 'connection_status': converse.ROOMSTATUS.NICKNAME_REQUIRED }); }, @@ -99820,7 +104162,7 @@ const ChatRoomView = ChatBoxView.extend({ * @method _converse.ChatRoomView#closeForm */ closeForm() { - converse_muc_views_sizzle('.chatroom-form-container', this.el).forEach(e => converse_muc_views_u.addClass('hidden', e)); + muc_views_muc_sizzle('.chatroom-form-container', this.el).forEach(e => muc_u.addClass('hidden', e)); this.renderAfterTransition(); }, @@ -99839,7 +104181,7 @@ const ChatRoomView = ChatBoxView.extend({ * the settings. */ getAndRenderConfigurationForm() { - if (!this.config_form || !converse_muc_views_u.isVisible(this.config_form.el)) { + if (!this.config_form || !muc_u.isVisible(this.config_form.el)) { this.showSpinner(); this.model.fetchRoomConfiguration().then(iq => this.renderConfigurationForm(iq)).catch(e => headless_log.error(e)); } else { @@ -99861,7 +104203,7 @@ const ChatRoomView = ChatBoxView.extend({ this.model.save('password_validation_message', undefined); if (!this.password_form) { - this.password_form = new converse_core_converse.MUCPasswordForm({ + this.password_form = new core_converse.MUCPasswordForm({ 'model': new model_Model({ 'validation_message': message }), @@ -99873,14 +104215,14 @@ const ChatRoomView = ChatBoxView.extend({ this.password_form.model.set('validation_message', message); } - converse_muc_views_u.showElement(this.password_form.el); + muc_u.showElement(this.password_form.el); this.model.session.save('connection_status', converse.ROOMSTATUS.PASSWORD_REQUIRED); }, showDestroyedMessage() { - converse_muc_views_u.hideElement(this.el.querySelector('.chat-area')); - converse_muc_views_u.hideElement(this.el.querySelector('.occupants')); - converse_muc_views_sizzle('.spinner', this.el).forEach(converse_muc_views_u.removeElement); + muc_u.hideElement(this.el.querySelector('.chat-area')); + muc_u.hideElement(this.el.querySelector('.occupants')); + muc_views_muc_sizzle('.spinner', this.el).forEach(muc_u.removeElement); const reason = this.model.get('destroyed_reason'); const moved_jid = this.model.get('moved_jid'); this.model.save({ @@ -99891,142 +104233,706 @@ const ChatRoomView = ChatBoxView.extend({ render_render(muc_destroyed(moved_jid, reason), container); const switch_el = container.querySelector('a.switch-chat'); - if (switch_el) { - switch_el.addEventListener('click', async ev => { - ev.preventDefault(); - const room = await converse_core_api.rooms.get(moved_jid, null, true); - room.maybeShow(true); - this.model.destroy(); - }); - } + if (switch_el) { + switch_el.addEventListener('click', async ev => { + ev.preventDefault(); + const room = await core_api.rooms.get(moved_jid, null, true); + room.maybeShow(true); + this.model.destroy(); + }); + } + + muc_u.showElement(container); + }, + + showDisconnectMessage() { + const message = this.model.get('disconnection_message'); + + if (!message) { + return; + } + + muc_u.hideElement(this.el.querySelector('.chat-area')); + muc_u.hideElement(this.el.querySelector('.occupants')); + muc_views_muc_sizzle('.spinner', this.el).forEach(muc_u.removeElement); + const messages = [message]; + const actor = this.model.get('disconnection_actor'); + + if (actor) { + messages.push(i18n_('This action was done by %1$s.', actor)); + } + + const reason = this.model.get('disconnection_reason'); + + if (reason) { + messages.push(i18n_('The reason given is: "%1$s".', reason)); + } + + this.model.save({ + 'disconnection_message': undefined, + 'disconnection_reason': undefined, + 'disconnection_actor': undefined + }); + const container = this.el.querySelector('.disconnect-container'); + render_render(muc_disconnect(messages), container); + muc_u.showElement(container); + }, + + onOccupantAdded(occupant) { + if (occupant.get('jid') === core_converse.bare_jid) { + this.renderHeading(); + this.renderBottomPanel(); + } + }, + + /** + * Working backwards, get today's most recent join/leave notification + * from the same user (if any exists) after the most recent chat message. + * @private + * @method _converse.ChatRoomView#getPreviousJoinOrLeaveNotification + * @param {HTMLElement} el + * @param {string} nick + */ + getPreviousJoinOrLeaveNotification(el, nick) { + const today = new Date().toISOString().split('T')[0]; + + while (el !== null) { + var _el; + + if (!el.classList.contains('chat-info')) { + return; + } // Check whether el is still from today. + // We don't use `Dayjs.same` here, since it's about 4 times slower. + + + const date = el.getAttribute('data-isodate'); + + if (date && date.split('T')[0] !== today) { + return; + } + + const data = ((_el = el) === null || _el === void 0 ? void 0 : _el.dataset) || {}; + + if (data.join === nick || data.leave === nick || data.leavejoin === nick || data.joinleave === nick) { + return el; + } + + el = el.previousElementSibling; + } + }, + + /** + * Rerender the groupchat after some kind of transition. For + * example after the spinner has been removed or after a + * form has been submitted and removed. + * @private + * @method _converse.ChatRoomView#renderAfterTransition + */ + renderAfterTransition() { + const conn_status = this.model.session.get('connection_status'); + + if (conn_status == converse.ROOMSTATUS.NICKNAME_REQUIRED) { + this.renderNicknameForm(); + } else if (conn_status == converse.ROOMSTATUS.PASSWORD_REQUIRED) { + this.renderPasswordForm(); + } else if (conn_status == converse.ROOMSTATUS.ENTERED) { + var _this$el$querySelecto2; + + this.hideChatRoomContents(); + muc_u.showElement(this.el.querySelector('.chat-area')); + (_this$el$querySelecto2 = this.el.querySelector('.occupants')) === null || _this$el$querySelecto2 === void 0 ? void 0 : _this$el$querySelecto2.setVisibility(); + this.scrollDown(); + } + }, + + showSpinner() { + muc_views_muc_sizzle('.spinner', this.el).forEach(muc_u.removeElement); + this.hideChatRoomContents(); + const container_el = this.el.querySelector('.chatroom-body'); + container_el.insertAdjacentElement('afterbegin', muc_u.getElementFromTemplateResult(spinner())); + }, + + /** + * Check if the spinner is being shown and if so, hide it. + * Also make sure then that the chat area and occupants + * list are both visible. + * @private + * @method _converse.ChatRoomView#hideSpinner + */ + hideSpinner() { + const spinner = this.el.querySelector('.spinner'); + + if (spinner !== null) { + muc_u.removeElement(spinner); + this.renderAfterTransition(); + } + + return this; + } + +}; +/* harmony default export */ var muc_views_muc = (ChatRoomViewMixin); +// CONCATENATED MODULE: ./src/plugins/muc-views/api.js + +/* harmony default export */ var muc_views_api = ({ + /** + * The "roomviews" namespace groups methods relevant to chatroom + * (aka groupchats) views. + * + * @namespace _converse.api.roomviews + * @memberOf _converse.api + */ + roomviews: { + /** + * Retrieves a groupchat (aka chatroom) view. The chat should already be open. + * + * @method _converse.api.roomviews.get + * @param {String|string[]} name - e.g. 'coven@conference.shakespeare.lit' or + * ['coven@conference.shakespeare.lit', 'cave@conference.shakespeare.lit'] + * @returns {View} View representing the groupchat + * + * @example + * // To return a single view, provide the JID of the groupchat + * const view = _converse.api.roomviews.get('coven@conference.shakespeare.lit'); + * + * @example + * // To return an array of views, provide an array of JIDs: + * const views = _converse.api.roomviews.get(['coven@conference.shakespeare.lit', 'cave@conference.shakespeare.lit']); + * + * @example + * // To return views of all open groupchats, call the method without any parameters:: + * const views = _converse.api.roomviews.get(); + * + */ + get(jids) { + if (Array.isArray(jids)) { + const views = core_api.chatviews.get(jids); + return views.filter(v => v.model.get('type') === core_converse.CHATROOMS_TYPE); + } else { + const view = core_api.chatviews.get(jids); + + if (view.model.get('type') === core_converse.CHATROOMS_TYPE) { + return view; + } else { + return null; + } + } + }, + + /** + * Lets you close open chatrooms. + * + * You can call this method without any arguments to close + * all open chatrooms, or you can specify a single JID or + * an array of JIDs. + * + * @method _converse.api.roomviews.close + * @param {(String[]|String)} jids The JID or array of JIDs of the chatroom(s) + * @returns { Promise } - Promise which resolves once the views have been closed. + */ + close(jids) { + let views; + + if (jids === undefined) { + views = core_converse.chatboxviews; + } else if (typeof jids === 'string') { + views = [core_converse.chatboxviews.get(jids)].filter(v => v); + } else if (Array.isArray(jids)) { + views = jids.map(jid => core_converse.chatboxviews.get(jid)); + } + + return Promise.all(views.map(v => v.is_chatroom && v.model && v.close())); + } + + } +}); +// CONCATENATED MODULE: ./src/modals/templates/add-muc.js +function add_muc_templateObject4() { + const data = add_muc_taggedTemplateLiteral(["<div class=\"form-group\">", "</div>"]); + + add_muc_templateObject4 = function () { + return data; + }; + + return data; +} + +function add_muc_templateObject3() { + const data = add_muc_taggedTemplateLiteral(["<label class=\"roomid-policy-error\">", "</label>"]); + + add_muc_templateObject3 = function () { + return data; + }; + + return data; +} + +function add_muc_templateObject2() { + const data = add_muc_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"add-chatroom-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form add-chatroom\">\n <div class=\"form-group\">\n <label for=\"chatroom\">", ":</label>\n ", "\n <input type=\"text\" required=\"required\" name=\"chatroom\" class=\"form-control roomjid-input\" placeholder=\"", "\"/>\n </div>\n ", "\n ", "\n <input type=\"submit\" class=\"btn btn-primary\" name=\"join\" value=\"", "\" ?disabled=", ">\n </form>\n </div>\n </div>\n </div>\n "]); + + add_muc_templateObject2 = function () { + return data; + }; + + return data; +} + +function add_muc_templateObject() { + const data = add_muc_taggedTemplateLiteral(["\n <div class=\"form-group\" >\n <label for=\"nickname\">", ":</label>\n <input type=\"text\" title=\"", "\" required=\"required\" name=\"nickname\" value=\"", "\" class=\"form-control\"/>\n </div>\n "]); + + add_muc_templateObject = function () { + return data; + }; + + return data; +} + +function add_muc_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + + + + +const nickname_input = o => { + const i18n_nickname = i18n_('Nickname'); + + const i18n_required_field = i18n_('This field is required'); + + return lit_html_html(add_muc_templateObject(), i18n_nickname, i18n_required_field, o.nick || ''); +}; + +/* harmony default export */ var add_muc = (o => { + const i18n_join = i18n_('Join'); + + const i18n_enter = i18n_('Enter a new Groupchat'); + + return lit_html_html(add_muc_templateObject2(), i18n_enter, modal_header_close_button, o.label_room_address, o.muc_roomid_policy_error_msg ? lit_html_html(add_muc_templateObject3(), o.muc_roomid_policy_error_msg) : '', o.chatroom_placeholder, o.muc_roomid_policy_hint ? lit_html_html(add_muc_templateObject4(), unsafeHTML(xss_default.a.filterXSS(o.muc_roomid_policy_hint, { + 'whiteList': { + b: [], + br: [], + em: [] + } + }))) : '', !o._converse.locked_muc_nickname ? nickname_input(o) : '', i18n_join || '', o.muc_roomid_policy_error_msg); +}); +// EXTERNAL MODULE: ./node_modules/strophe.js/src/strophe.js +var src_strophe = __webpack_require__(24); + +// CONCATENATED MODULE: ./src/modals/add-muc.js + + + + + +const add_muc_u = converse.env.utils; +/* harmony default export */ var modals_add_muc = (modals_base.extend({ + persistent: true, + id: 'add-chatroom-modal', + events: { + 'submit form.add-chatroom': 'openChatRoom', + 'keyup .roomjid-input': 'checkRoomidPolicy', + 'change .roomjid-input': 'checkRoomidPolicy' + }, + + initialize() { + modals_base.prototype.initialize.apply(this, arguments); + this.listenTo(this.model, 'change:muc_domain', this.render); + this.muc_roomid_policy_error_msg = null; + }, + + toHTML() { + let placeholder = ''; + + if (!core_api.settings.get('locked_muc_domain')) { + const muc_domain = this.model.get('muc_domain') || core_api.settings.get('muc_domain'); + placeholder = muc_domain ? "name@".concat(muc_domain) : i18n_('name@conference.example.org'); + } + + return add_muc(Object.assign(this.model.toJSON(), { + '_converse': core_converse, + 'label_room_address': core_api.settings.get('muc_domain') ? i18n_('Groupchat name') : i18n_('Groupchat address'), + 'chatroom_placeholder': placeholder, + 'muc_roomid_policy_error_msg': this.muc_roomid_policy_error_msg, + 'muc_roomid_policy_hint': core_api.settings.get('muc_roomid_policy_hint') + })); + }, + + afterRender() { + this.el.addEventListener('shown.bs.modal', () => { + this.el.querySelector('input[name="chatroom"]').focus(); + }, false); + }, + + parseRoomDataFromEvent(form) { + const data = new FormData(form); + const jid = data.get('chatroom'); + let nick; + + if (core_api.settings.get('locked_muc_nickname')) { + nick = core_converse.getDefaultMUCNickname(); + + if (!nick) { + throw new Error("Using locked_muc_nickname but no nickname found!"); + } + } else { + nick = data.get('nickname').trim(); + } + + return { + 'jid': jid, + 'nick': nick + }; + }, + + openChatRoom(ev) { + ev.preventDefault(); + const data = this.parseRoomDataFromEvent(ev.target); + + if (data.nick === "") { + // Make sure defaults apply if no nick is provided. + data.nick = undefined; + } + + let jid; + + if (core_api.settings.get('locked_muc_domain') || core_api.settings.get('muc_domain') && !add_muc_u.isValidJID(data.jid)) { + jid = "".concat(src_strophe["b" /* Strophe */].escapeNode(data.jid), "@").concat(core_api.settings.get('muc_domain')); + } else { + jid = data.jid; + this.model.setDomain(jid); + } + + core_api.rooms.open(jid, Object.assign(data, { + jid + }), true); + this.modal.hide(); + ev.target.reset(); + }, + + checkRoomidPolicy() { + if (core_api.settings.get('muc_roomid_policy') && core_api.settings.get('muc_domain')) { + let jid = this.el.querySelector('.roomjid-input').value; + + if (converse.locked_muc_domain || !add_muc_u.isValidJID(jid)) { + jid = "".concat(src_strophe["b" /* Strophe */].escapeNode(jid), "@").concat(core_api.settings.get('muc_domain')); + } + + const roomid = src_strophe["b" /* Strophe */].getNodeFromJid(jid); + const roomdomain = src_strophe["b" /* Strophe */].getDomainFromJid(jid); + + if (core_api.settings.get('muc_domain') !== roomdomain || core_api.settings.get('muc_roomid_policy').test(roomid)) { + this.muc_roomid_policy_error_msg = null; + } else { + this.muc_roomid_policy_error_msg = i18n_('Groupchat id is invalid.'); + } + + this.render(); + } + } + +})); +// CONCATENATED MODULE: ./src/templates/room_panel.js +function room_panel_templateObject() { + const data = room_panel_taggedTemplateLiteral(["\n <div class=\"d-flex controlbox-padded\">\n <span class=\"w-100 controlbox-heading controlbox-heading--groupchats\">", "</span>\n <a class=\"controlbox-heading__btn show-list-muc-modal fa fa-list-ul\" title=\"", "\" data-toggle=\"modal\" data-target=\"#muc-list-modal\"></a>\n <a class=\"controlbox-heading__btn show-add-muc-modal fa fa-plus\" title=\"", "\" data-toggle=\"modal\" data-target=\"#add-chatrooms-modal\"></a>\n </div>\n <div class=\"list-container list-container--openrooms hidden\"></div>\n <div class=\"list-container list-container--bookmarks hidden\"></div>"]); + + room_panel_templateObject = function () { + return data; + }; + + return data; +} + +function room_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + +/* harmony default export */ var room_panel = (o => lit_html_html(room_panel_templateObject(), o.heading_chatrooms, o.title_list_rooms, o.title_new_room)); +// CONCATENATED MODULE: ./src/modals/templates/muc-list.js +function muc_list_templateObject5() { + const data = muc_list_taggedTemplateLiteral(["<li class=\"list-group-item active\">", "</li>"]); + + muc_list_templateObject5 = function () { + return data; + }; + + return data; +} + +function muc_list_templateObject4() { + const data = muc_list_taggedTemplateLiteral(["<li class=\"list-group-item\"> ", " </li>"]); + + muc_list_templateObject4 = function () { + return data; + }; + + return data; +} + +function muc_list_templateObject3() { + const data = muc_list_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"muc-list-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body d-flex flex-column\">\n <span class=\"modal-alert\"></span>\n ", "\n <ul class=\"available-chatrooms list-group\">\n ", "\n ", "\n ", "\n </ul>\n </div>\n <div class=\"modal-footer\">", "</div>\n </div>\n </div>\n "]); + + muc_list_templateObject3 = function () { + return data; + }; + + return data; +} + +function muc_list_templateObject2() { + const data = muc_list_taggedTemplateLiteral(["\n <li class=\"room-item list-group-item\">\n <div class=\"available-chatroom d-flex flex-row\">\n <a class=\"open-room available-room w-100\"\n @click=", "\n data-room-jid=\"", "\"\n data-room-name=\"", "\"\n title=\"", "\"\n href=\"#\">", "</a>\n <a class=\"right room-info icon-room-info\"\n @click=", "\n data-room-jid=\"", "\"\n title=\"", "\"\n href=\"#\"></a>\n </div>\n </li>\n "]); + + muc_list_templateObject2 = function () { + return data; + }; + + return data; +} + +function muc_list_templateObject() { + const data = muc_list_taggedTemplateLiteral(["\n <form class=\"converse-form list-chatrooms\"\n @submit=", ">\n <div class=\"form-group\">\n <label for=\"chatroom\">", ":</label>\n <input type=\"text\"\n @change=", "\n value=\"", "\"\n required=\"required\"\n name=\"server\"\n class=\"form-control\"\n placeholder=\"", "\"/>\n </div>\n <input type=\"submit\" class=\"btn btn-primary\" name=\"list\" value=\"", "\"/>\n </form>\n "]); + + muc_list_templateObject = function () { + return data; + }; + + return data; +} + +function muc_list_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + + + + +const muc_list_form = o => { + const i18n_query = i18n_('Show groupchats'); + + const i18n_server_address = i18n_('Server address'); + + return lit_html_html(muc_list_templateObject(), o.submitForm, i18n_server_address, o.setDomainFromEvent, o.muc_domain || '', o.server_placeholder, i18n_query); +}; + +const tpl_item = (o, item) => { + const i18n_info_title = i18n_('Show more information on this groupchat'); + + const i18n_open_title = i18n_('Click to open this groupchat'); + + return lit_html_html(muc_list_templateObject2(), o.openRoom, item.jid, item.name, i18n_open_title, item.name || item.jid, o.toggleRoomInfo, item.jid, i18n_info_title); +}; + +/* harmony default export */ var muc_list = (o => { + const i18n_list_chatrooms = i18n_('Query for Groupchats'); + + return lit_html_html(muc_list_templateObject3(), i18n_list_chatrooms, modal_header_close_button, o.show_form ? muc_list_form(o) : '', o.loading_items ? lit_html_html(muc_list_templateObject4(), spinner()) : '', o.feedback_text ? lit_html_html(muc_list_templateObject5(), o.feedback_text) : '', repeat(o.items, item => item.jid, item => tpl_item(o, item)), modal_close_button); +}); +// EXTERNAL MODULE: ./src/templates/room_description.html +var room_description = __webpack_require__(179); +var room_description_default = /*#__PURE__*/__webpack_require__.n(room_description); + +// CONCATENATED MODULE: ./src/modals/muc-list.js + - converse_muc_views_u.showElement(container); - }, - showDisconnectMessage() { - const message = this.model.get('disconnection_message'); - if (!message) { - return; - } - converse_muc_views_u.hideElement(this.el.querySelector('.chat-area')); - converse_muc_views_u.hideElement(this.el.querySelector('.occupants')); - converse_muc_views_sizzle('.spinner', this.el).forEach(converse_muc_views_u.removeElement); - const messages = [message]; - const actor = this.model.get('disconnection_actor'); - if (actor) { - messages.push(i18n_('This action was done by %1$s.', actor)); - } - const reason = this.model.get('disconnection_reason'); - if (reason) { - messages.push(i18n_('The reason given is: "%1$s".', reason)); - } - this.model.save({ - 'disconnection_message': undefined, - 'disconnection_reason': undefined, - 'disconnection_actor': undefined - }); - const container = this.el.querySelector('.disconnect-container'); - render_render(muc_disconnect(messages), container); - converse_muc_views_u.showElement(container); - }, - onOccupantAdded(occupant) { - if (occupant.get('jid') === converse_core_converse.bare_jid) { - this.renderHeading(); - this.renderBottomPanel(); - } - }, - /** - * Working backwards, get today's most recent join/leave notification - * from the same user (if any exists) after the most recent chat message. - * @private - * @method _converse.ChatRoomView#getPreviousJoinOrLeaveNotification - * @param {HTMLElement} el - * @param {string} nick - */ - getPreviousJoinOrLeaveNotification(el, nick) { - const today = new Date().toISOString().split('T')[0]; +const muc_list_u = converse.env.utils; +/* Insert groupchat info (based on returned #disco IQ stanza) + * @function insertRoomInfo + * @param { HTMLElement } el - The HTML DOM element that contains the info. + * @param { XMLElement } stanza - The IQ stanza containing the groupchat info. + */ - while (el !== null) { - var _el; +function insertRoomInfo(el, stanza) { + var _head, _head2; - if (!el.classList.contains('chat-info')) { - return; - } // Check whether el is still from today. - // We don't use `Dayjs.same` here, since it's about 4 times slower. + // All MUC features found here: https://xmpp.org/registrar/disco-features.html + el.querySelector('span.spinner').remove(); + el.querySelector('a.room-info').classList.add('selected'); + el.insertAdjacentHTML('beforeEnd', room_description_default()({ + 'jid': stanza.getAttribute('from'), + 'desc': (_head = lodash_es_head(sizzle_default()('field[var="muc#roominfo_description"] value', stanza))) === null || _head === void 0 ? void 0 : _head.textContent, + 'occ': (_head2 = lodash_es_head(sizzle_default()('field[var="muc#roominfo_occupants"] value', stanza))) === null || _head2 === void 0 ? void 0 : _head2.textContent, + 'hidden': sizzle_default()('feature[var="muc_hidden"]', stanza).length, + 'membersonly': sizzle_default()('feature[var="muc_membersonly"]', stanza).length, + 'moderated': sizzle_default()('feature[var="muc_moderated"]', stanza).length, + 'nonanonymous': sizzle_default()('feature[var="muc_nonanonymous"]', stanza).length, + 'open': sizzle_default()('feature[var="muc_open"]', stanza).length, + 'passwordprotected': sizzle_default()('feature[var="muc_passwordprotected"]', stanza).length, + 'persistent': sizzle_default()('feature[var="muc_persistent"]', stanza).length, + 'publicroom': sizzle_default()('feature[var="muc_publicroom"]', stanza).length, + 'semianonymous': sizzle_default()('feature[var="muc_semianonymous"]', stanza).length, + 'temporary': sizzle_default()('feature[var="muc_temporary"]', stanza).length, + 'unmoderated': sizzle_default()('feature[var="muc_unmoderated"]', stanza).length, + 'label_desc': i18n_('Description:'), + 'label_jid': i18n_('Groupchat Address (JID):'), + 'label_occ': i18n_('Participants:'), + 'label_features': i18n_('Features:'), + 'label_requires_auth': i18n_('Requires authentication'), + 'label_hidden': i18n_('Hidden'), + 'label_requires_invite': i18n_('Requires an invitation'), + 'label_moderated': i18n_('Moderated'), + 'label_non_anon': i18n_('Non-anonymous'), + 'label_open_room': i18n_('Open'), + 'label_permanent_room': i18n_('Permanent'), + 'label_public': i18n_('Public'), + 'label_semi_anon': i18n_('Semi-anonymous'), + 'label_temp_room': i18n_('Temporary'), + 'label_unmoderated': i18n_('Unmoderated') + })); +} +/** + * Show/hide extra information about a groupchat in a listing. + * @function toggleRoomInfo + * @param { Event } + */ - const date = el.getAttribute('data-isodate'); +function toggleRoomInfo(ev) { + const parent_el = muc_list_u.ancestor(ev.target, '.room-item'); + const div_el = parent_el.querySelector('div.room-info'); - if (date && date.split('T')[0] !== today) { - return; - } + if (div_el) { + muc_list_u.slideIn(div_el).then(muc_list_u.removeElement); + parent_el.querySelector('a.room-info').classList.remove('selected'); + } else { + parent_el.insertAdjacentElement('beforeend', muc_list_u.getElementFromTemplateResult(spinner())); + core_api.disco.info(ev.target.getAttribute('data-room-jid'), null).then(stanza => insertRoomInfo(parent_el, stanza)).catch(e => headless_log.error(e)); + } +} - const data = ((_el = el) === null || _el === void 0 ? void 0 : _el.dataset) || {}; +/* harmony default export */ var modals_muc_list = (modals_base.extend({ + id: "muc-list-modal", + persistent: true, - if (data.join === nick || data.leave === nick || data.leavejoin === nick || data.joinleave === nick) { - return el; - } + initialize() { + this.items = []; + this.loading_items = false; + modals_base.prototype.initialize.apply(this, arguments); - el = el.previousElementSibling; + if (core_api.settings.get('muc_domain') && !this.model.get('muc_domain')) { + this.model.save('muc_domain', core_api.settings.get('muc_domain')); } + + this.listenTo(this.model, 'change:muc_domain', this.onDomainChange); + this.el.addEventListener('shown.bs.modal', () => core_api.settings.get('locked_muc_domain') ? this.updateRoomsList() : this.el.querySelector('input[name="server"]').focus()); + }, + + toHTML() { + const muc_domain = this.model.get('muc_domain') || core_api.settings.get('muc_domain'); + return muc_list(Object.assign(this.model.toJSON(), { + 'show_form': !core_api.settings.get('locked_muc_domain'), + 'server_placeholder': muc_domain ? muc_domain : i18n_('conference.example.org'), + 'items': this.items, + 'loading_items': this.loading_items, + 'openRoom': ev => this.openRoom(ev), + 'setDomainFromEvent': ev => this.setDomainFromEvent(ev), + 'submitForm': ev => this.showRooms(ev), + 'toggleRoomInfo': ev => this.toggleRoomInfo(ev) + })); + }, + + openRoom(ev) { + ev.preventDefault(); + const jid = ev.target.getAttribute('data-room-jid'); + const name = ev.target.getAttribute('data-room-name'); + this.modal.hide(); + core_api.rooms.open(jid, { + 'name': name + }, true); + }, + + toggleRoomInfo(ev) { + ev.preventDefault(); + toggleRoomInfo(ev); + }, + + onDomainChange() { + core_api.settings.get('auto_list_rooms') && this.updateRoomsList(); }, /** - * Rerender the groupchat after some kind of transition. For - * example after the spinner has been removed or after a - * form has been submitted and removed. + * Handle the IQ stanza returned from the server, containing + * all its public groupchats. * @private - * @method _converse.ChatRoomView#renderAfterTransition + * @method _converse.ChatRoomView#onRoomsFound + * @param { HTMLElement } iq */ - renderAfterTransition() { - const conn_status = this.model.session.get('connection_status'); + onRoomsFound(iq) { + this.loading_items = false; + const rooms = iq ? sizzle_default()('query item', iq) : []; - if (conn_status == converse.ROOMSTATUS.NICKNAME_REQUIRED) { - this.renderNicknameForm(); - } else if (conn_status == converse.ROOMSTATUS.PASSWORD_REQUIRED) { - this.renderPasswordForm(); - } else if (conn_status == converse.ROOMSTATUS.ENTERED) { - this.hideChatRoomContents(); - converse_muc_views_u.showElement(this.el.querySelector('.chat-area')); - converse_muc_views_u.showElement(this.el.querySelector('.occupants')); - this.scrollDown(); + if (rooms.length) { + this.model.set({ + 'feedback_text': i18n_('Groupchats found') + }, { + 'silent': true + }); + this.items = rooms.map(utils_stanza.getAttributes); + } else { + this.items = []; + this.model.set({ + 'feedback_text': i18n_('No groupchats found') + }, { + 'silent': true + }); } - }, - showSpinner() { - converse_muc_views_sizzle('.spinner', this.el).forEach(converse_muc_views_u.removeElement); - this.hideChatRoomContents(); - const container_el = this.el.querySelector('.chatroom-body'); - container_el.insertAdjacentElement('afterbegin', converse_muc_views_u.getElementFromTemplateResult(spinner())); + this.render(); + return true; }, /** - * Check if the spinner is being shown and if so, hide it. - * Also make sure then that the chat area and occupants - * list are both visible. + * Send an IQ stanza to the server asking for all groupchats * @private - * @method _converse.ChatRoomView#hideSpinner + * @method _converse.ChatRoomView#updateRoomsList */ - hideSpinner() { - const spinner = this.el.querySelector('.spinner'); + updateRoomsList() { + const iq = Object(src_strophe["a" /* $iq */])({ + 'to': this.model.get('muc_domain'), + 'from': core_converse.connection.jid, + 'type': "get" + }).c("query", { + xmlns: src_strophe["b" /* Strophe */].NS.DISCO_ITEMS + }); + core_api.sendIQ(iq).then(iq => this.onRoomsFound(iq)).catch(() => this.onRoomsFound()); + }, - if (spinner !== null) { - converse_muc_views_u.removeElement(spinner); - this.renderAfterTransition(); - } + showRooms(ev) { + ev.preventDefault(); + this.loading_items = true; + this.render(); + const data = new FormData(ev.target); + this.model.setDomain(data.get('server')); + this.updateRoomsList(); + }, - return this; + setDomainFromEvent(ev) { + this.model.setDomain(ev.target.value); + }, + + setNick(ev) { + this.model.save({ + nick: ev.target.value + }); } -}); +})); +// CONCATENATED MODULE: ./src/plugins/muc-views/rooms-panel.js + + + + + + +const rooms_panel_u = converse.env.utils; /** * View which renders MUC section of the control box. * @class @@ -100034,7 +104940,7 @@ const ChatRoomView = ChatBoxView.extend({ * @memberOf _converse */ -const RoomsPanel = view_View.extend({ +const RoomsPanel = View.extend({ tagName: 'div', className: 'controlbox-section', id: 'chatrooms', @@ -100052,26 +104958,141 @@ const RoomsPanel = view_View.extend({ }, showAddRoomModal(ev) { - if (this.add_room_modal === undefined) { - this.add_room_modal = new add_muc({ - 'model': this.model - }); + core_api.modal.show(modals_add_muc, { + 'model': this.model + }, ev); + }, + + showMUCListModal(ev) { + core_api.modal.show(modals_muc_list, { + 'model': this.model + }, ev); + } + +}); +/** + * Mixin which adds the ability to a ControlBox to render a list of open groupchats + * @mixin + */ + +const RoomsPanelViewMixin = { + renderRoomsPanel() { + if (this.roomspanel && rooms_panel_u.isInDOM(this.roomspanel.el)) { + return this.roomspanel; } - this.add_room_modal.show(ev); + const id = "converse.roomspanel".concat(core_converse.bare_jid); + this.roomspanel = new core_converse.RoomsPanel({ + 'model': new (core_converse.RoomsPanelModel.extend({ + id, + 'browserStorage': core_converse.createStore(id) + }))() + }); + this.roomspanel.model.fetch(); + this.el.querySelector('.controlbox-pane').insertAdjacentElement('beforeEnd', this.roomspanel.render().el); + /** + * Triggered once the section of the { @link _converse.ControlBoxView } + * which shows gropuchats has been rendered. + * @event _converse#roomsPanelRendered + * @example _converse.api.listen.on('roomsPanelRendered', () => { ... }); + */ + + core_api.trigger('roomsPanelRendered'); + return this.roomspanel; }, - showMUCListModal(ev) { - if (this.muc_list_modal === undefined) { - this.muc_list_modal = new muc_list({ - 'model': this.model + getRoomsPanel() { + if (this.roomspanel && rooms_panel_u.isInDOM(this.roomspanel.el)) { + return this.roomspanel; + } else { + return this.renderRoomsPanel(); + } + } + +}; +// CONCATENATED MODULE: ./src/plugins/muc-views/index.js +/** + * @module converse-muc-views + * @copyright 2020, the Converse.js contributors + * @description XEP-0045 Multi-User Chat Views + * @license Mozilla Public License (MPLv2) + */ + + + + + + + + + + + +const { + Strophe: muc_views_Strophe +} = converse.env; + +function setMUCDomain(domain, controlboxview) { + controlboxview.getRoomsPanel().model.save('muc_domain', muc_views_Strophe.getDomainFromJid(domain)); +} + +function setMUCDomainFromDisco(controlboxview) { + /* Check whether service discovery for the user's domain + * returned MUC information and use that to automatically + * set the MUC domain in the "Add groupchat" modal. + */ + function featureAdded(feature) { + if (!feature) { + return; + } + + if (feature.get('var') === muc_views_Strophe.NS.MUC) { + feature.entity.getIdentity('conference', 'text').then(identity => { + if (identity) { + setMUCDomain(feature.get('from'), controlboxview); + } }); } + } + + core_api.waitUntil('discoInitialized').then(() => { + core_api.listen.on('serviceDiscovered', featureAdded); // Features could have been added before the controlbox was + // initialized. We're only interested in MUC + + core_converse.disco_entities.each(entity => featureAdded(entity.features.findWhere({ + 'var': muc_views_Strophe.NS.MUC + }))); + }).catch(e => headless_log.error(e)); +} + +function fetchAndSetMUCDomain(controlboxview) { + if (controlboxview.model.get('connected')) { + if (!controlboxview.getRoomsPanel().model.get('muc_domain')) { + if (core_api.settings.get('muc_domain') === undefined) { + setMUCDomainFromDisco(controlboxview); + } else { + setMUCDomain(core_api.settings.get('muc_domain'), controlboxview); + } + } + } +} - this.muc_list_modal.show(ev); +function openChatRoomFromURIClicked(ev) { + ev.preventDefault(); + core_api.rooms.open(ev.target.href); +} + +async function addView(model) { + const views = core_converse.chatboxviews; + + if (!views.get(model.get('id')) && model.get('type') === core_converse.CHATROOMS_TYPE && model.isValid()) { + await model.initialized; + return views.add(model.get('id'), new core_converse.ChatRoomView({ + model + })); } +} -}); converse.plugins.add('converse-muc-views', { /* Dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -100085,13 +105106,13 @@ converse.plugins.add('converse-muc-views', { * If the setting "strict_plugin_dependencies" is set to true, * an error will be raised if the plugin is not found. */ - dependencies: ["converse-autocomplete", "converse-modal", "converse-controlbox", "converse-chatview"], + dependencies: ['converse-autocomplete', 'converse-modal', 'converse-controlbox', 'converse-chatview'], overrides: { ControlBoxView: { renderControlBoxPane() { this.__super__.renderControlBoxPane.apply(this, arguments); - if (converse_core_api.settings.get('allow_muc')) { + if (core_api.settings.get('allow_muc')) { this.renderRoomsPanel(); } } @@ -100103,12 +105124,12 @@ converse.plugins.add('converse-muc-views', { const { _converse } = this; - converse_core_api.promises.add(['roomsPanelRendered']); // Configuration values for this plugin + core_api.promises.add(['roomsPanelRendered']); // Configuration values for this plugin // ==================================== // Refer to docs/source/configuration.rst for explanations of these // configuration settings. - converse_core_api.settings.extend({ + core_api.settings.extend({ 'auto_list_rooms': false, 'cache_muc_messages': true, 'locked_muc_nickname': false, @@ -100126,239 +105147,20 @@ converse.plugins.add('converse-muc-views', { 'toggle_occupants': true } }); - _converse.ChatRoomView = ChatRoomView; + _converse.MUCConfigForm = config_form; + _converse.MUCPasswordForm = password_form; + _converse.ChatRoomView = _converse.ChatBoxView.extend(muc_views_muc); _converse.RoomsPanel = RoomsPanel; - const viewWithRoomsPanel = { - renderRoomsPanel() { - if (this.roomspanel && converse_muc_views_u.isInDOM(this.roomspanel.el)) { - return this.roomspanel; - } - - const id = "converse.roomspanel".concat(_converse.bare_jid); - this.roomspanel = new _converse.RoomsPanel({ - 'model': new (_converse.RoomsPanelModel.extend({ - id, - 'browserStorage': _converse.createStore(id) - }))() - }); - this.roomspanel.model.fetch(); - this.el.querySelector('.controlbox-pane').insertAdjacentElement('beforeEnd', this.roomspanel.render().el); - /** - * Triggered once the section of the { @link _converse.ControlBoxView } - * which shows gropuchats has been rendered. - * @event _converse#roomsPanelRendered - * @example _converse.api.listen.on('roomsPanelRendered', () => { ... }); - */ - - converse_core_api.trigger('roomsPanelRendered'); - return this.roomspanel; - }, - - getRoomsPanel() { - if (this.roomspanel && converse_muc_views_u.isInDOM(this.roomspanel.el)) { - return this.roomspanel; - } else { - return this.renderRoomsPanel(); - } - } - - }; - - if (_converse.ControlBoxView) { - Object.assign(_converse.ControlBoxView.prototype, viewWithRoomsPanel); - } - - _converse.MUCConfigForm = view_View.extend({ - className: 'chatroom-form-container muc-config-form', - - initialize(attrs) { - this.chatroomview = attrs.chatroomview; - this.listenTo(this.chatroomview.model.features, 'change:passwordprotected', this.render); - this.listenTo(this.chatroomview.model.features, 'change:config_stanza', this.render); - this.render(); - }, - - toHTML() { - var _stanza$querySelector, _stanza$querySelector2; - - const stanza = converse_muc_views_u.toStanza(this.model.get('config_stanza')); - const whitelist = converse_core_api.settings.get('roomconfig_whitelist'); - let fields = converse_muc_views_sizzle('field', stanza); - - if (whitelist.length) { - fields = fields.filter(f => whitelist.includes(f.getAttribute('var'))); - } - - const password_protected = this.model.features.get('passwordprotected'); - const options = { - 'new_password': !password_protected, - 'fixed_username': this.model.get('jid') - }; - return muc_config_form({ - 'closeConfigForm': ev => this.closeConfigForm(ev), - 'fields': fields.map(f => converse_muc_views_u.xForm2webForm(f, stanza, options)), - 'instructions': (_stanza$querySelector = stanza.querySelector('instructions')) === null || _stanza$querySelector === void 0 ? void 0 : _stanza$querySelector.textContent, - 'submitConfigForm': ev => this.submitConfigForm(ev), - 'title': (_stanza$querySelector2 = stanza.querySelector('title')) === null || _stanza$querySelector2 === void 0 ? void 0 : _stanza$querySelector2.textContent - }); - }, - - async submitConfigForm(ev) { - ev.preventDefault(); - const inputs = converse_muc_views_sizzle(':input:not([type=button]):not([type=submit])', ev.target); - const config_array = inputs.map(converse_muc_views_u.webForm2xForm).filter(f => f); - - try { - await this.model.sendConfiguration(config_array); - } catch (e) { - headless_log.error(e); - - const message = i18n_("Sorry, an error occurred while trying to submit the config form.") + " " + i18n_("Check your browser's developer console for details."); - - converse_core_api.alert('error', i18n_('Error'), message); - } - - await this.model.refreshDiscoInfo(); - this.chatroomview.closeForm(); - }, - - closeConfigForm(ev) { - ev.preventDefault(); - this.chatroomview.closeForm(); - } - - }); - _converse.MUCPasswordForm = view_View.extend({ - className: 'chatroom-form-container muc-password-form', - - initialize(attrs) { - this.chatroomview = attrs.chatroomview; - this.listenTo(this.model, 'change:validation_message', this.render); - this.render(); - }, - - toHTML() { - return muc_password_form({ - 'jid': this.model.get('jid'), - 'submitPassword': ev => this.submitPassword(ev), - 'validation_message': this.model.get('validation_message') - }); - }, - - submitPassword(ev) { - ev.preventDefault(); - const password = this.el.querySelector('input[type=password]').value; - this.chatroomview.model.join(this.chatroomview.model.get('nick'), password); - this.model.set('validation_message', null); - } - - }); - _converse.MUCSidebar = view_View.extend({ - tagName: 'div', - className: 'occupants col-md-3 col-4', - - async initialize() { - this.chatroomview = this.model.chatroomview; - this.listenTo(this.model, 'add', this.render); - this.listenTo(this.model, 'remove', this.render); - this.listenTo(this.model, 'change', this.render); - this.listenTo(this.chatroomview.model.features, 'change', this.render); - this.listenTo(this.chatroomview.model, 'change:hidden_occupants', this.setVisibility); - this.render(); - await this.model.fetched; - }, - - toHTML() { - return muc_sidebar(Object.assign(this.chatroomview.model.toJSON(), { - _converse, - 'features': this.chatroomview.model.features, - 'occupants': this.model.models - })); - }, - - afterRender() { - this.setVisibility(); - }, - - setVisibility() { - if (this.chatroomview.model.get('hidden_occupants') || this.chatroomview.model.session.get('connection_status') !== converse.ROOMSTATUS.ENTERED) { - converse_muc_views_u.hideElement(this.el); - } else { - converse_muc_views_u.showElement(this.el); - } - } - - }); - - function setMUCDomain(domain, controlboxview) { - controlboxview.getRoomsPanel().model.save('muc_domain', converse_muc_views_Strophe.getDomainFromJid(domain)); - } - - function setMUCDomainFromDisco(controlboxview) { - /* Check whether service discovery for the user's domain - * returned MUC information and use that to automatically - * set the MUC domain in the "Add groupchat" modal. - */ - function featureAdded(feature) { - if (!feature) { - return; - } - - if (feature.get('var') === converse_muc_views_Strophe.NS.MUC) { - feature.entity.getIdentity('conference', 'text').then(identity => { - if (identity) { - setMUCDomain(feature.get('from'), controlboxview); - } - }); - } - } - - converse_core_api.waitUntil('discoInitialized').then(() => { - converse_core_api.listen.on('serviceDiscovered', featureAdded); // Features could have been added before the controlbox was - // initialized. We're only interested in MUC - - _converse.disco_entities.each(entity => featureAdded(entity.features.findWhere({ - 'var': converse_muc_views_Strophe.NS.MUC - }))); - }).catch(e => headless_log.error(e)); - } - - function fetchAndSetMUCDomain(controlboxview) { - if (controlboxview.model.get('connected')) { - if (!controlboxview.getRoomsPanel().model.get('muc_domain')) { - if (converse_core_api.settings.get('muc_domain') === undefined) { - setMUCDomainFromDisco(controlboxview); - } else { - setMUCDomain(converse_core_api.settings.get('muc_domain'), controlboxview); - } - } - } - } + _converse.ControlBoxView && Object.assign(_converse.ControlBoxView.prototype, RoomsPanelViewMixin); + Object.assign(_converse.api, muc_views_api); /************************ BEGIN Event Handlers ************************/ - - converse_core_api.listen.on('chatBoxViewsInitialized', () => { - function openChatRoomFromURIClicked(ev) { - ev.preventDefault(); - converse_core_api.rooms.open(ev.target.href); - } - + core_api.listen.on('chatBoxViewsInitialized', () => { _converse.chatboxviews.delegate('click', 'a.open-chatroom', openChatRoomFromURIClicked); - async function addView(model) { - const views = _converse.chatboxviews; - - if (!views.get(model.get('id')) && model.get('type') === _converse.CHATROOMS_TYPE && model.isValid()) { - await model.initialized; - return views.add(model.get('id'), new _converse.ChatRoomView({ - model - })); - } - } - _converse.chatboxes.on('add', addView); }); - converse_core_api.listen.on('clearSession', () => { + core_api.listen.on('clearSession', () => { const view = _converse.chatboxviews.get('controlbox'); if (view && view.roomspanel) { @@ -100367,8 +105169,8 @@ converse.plugins.add('converse-muc-views', { delete view.roomspanel; } }); - converse_core_api.listen.on('controlBoxInitialized', view => { - if (!converse_core_api.settings.get('allow_muc')) { + core_api.listen.on('controlBoxInitialized', view => { + if (!core_api.settings.get('allow_muc')) { return; } @@ -100376,166 +105178,39 @@ converse.plugins.add('converse-muc-views', { view.model.on('change:connected', () => fetchAndSetMUCDomain(view)); }); /************************ END Event Handlers ************************/ - - /************************ BEGIN API ************************/ - - Object.assign(_converse.api, { - /** - * The "roomviews" namespace groups methods relevant to chatroom - * (aka groupchats) views. - * - * @namespace _converse.api.roomviews - * @memberOf _converse.api - */ - roomviews: { - /** - * Retrieves a groupchat (aka chatroom) view. The chat should already be open. - * - * @method _converse.api.roomviews.get - * @param {String|string[]} name - e.g. 'coven@conference.shakespeare.lit' or - * ['coven@conference.shakespeare.lit', 'cave@conference.shakespeare.lit'] - * @returns {View} View representing the groupchat - * - * @example - * // To return a single view, provide the JID of the groupchat - * const view = _converse.api.roomviews.get('coven@conference.shakespeare.lit'); - * - * @example - * // To return an array of views, provide an array of JIDs: - * const views = _converse.api.roomviews.get(['coven@conference.shakespeare.lit', 'cave@conference.shakespeare.lit']); - * - * @example - * // To return views of all open groupchats, call the method without any parameters:: - * const views = _converse.api.roomviews.get(); - * - */ - get(jids) { - if (Array.isArray(jids)) { - const views = converse_core_api.chatviews.get(jids); - return views.filter(v => v.model.get('type') === _converse.CHATROOMS_TYPE); - } else { - const view = converse_core_api.chatviews.get(jids); - - if (view.model.get('type') === _converse.CHATROOMS_TYPE) { - return view; - } else { - return null; - } - } - }, - - /** - * Lets you close open chatrooms. - * - * You can call this method without any arguments to close - * all open chatrooms, or you can specify a single JID or - * an array of JIDs. - * - * @method _converse.api.roomviews.close - * @param {(String[]|String)} jids The JID or array of JIDs of the chatroom(s) - * @returns { Promise } - Promise which resolves once the views have been closed. - */ - close(jids) { - let views; - - if (jids === undefined) { - views = _converse.chatboxviews; - } else if (typeof jids === 'string') { - views = [_converse.chatboxviews.get(jids)].filter(v => v); - } else if (Array.isArray(jids)) { - views = jids.map(jid => _converse.chatboxviews.get(jid)); - } - - return Promise.all(views.map(v => v.is_chatroom && v.model && v.close())); - } - - } - }); } }); -// CONCATENATED MODULE: ./src/templates/headline_list.js -function headline_list_templateObject2() { - const data = headline_list_taggedTemplateLiteral(["\n <div class=\"list-container list-container--headline ", "\">\n <div class=\"items-list rooms-list headline-list\">\n ", "\n </div>\n </div>\n"]); - - headline_list_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function headline_list_templateObject() { - const data = headline_list_taggedTemplateLiteral(["\n <div class=\"list-item controlbox-padded d-flex flex-row\"\n data-headline-jid=\"", "\">\n <a class=\"list-item-link open-headline available-room w-100\"\n data-headline-jid=\"", "\"\n title=\"", "\" href=\"#\">", "</a>\n </div>\n"]); - - headline_list_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function headline_list_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - -const tpl_headline_box = o => lit_html_html(headline_list_templateObject(), o.headlinebox.get('jid'), o.headlinebox.get('jid'), o.open_title, o.headlinebox.get('jid')); - -/* harmony default export */ var headline_list = (o => lit_html_html(headline_list_templateObject2(), o.headlineboxes.length ? '' : 'hidden', o.headlineboxes.map(headlinebox => tpl_headline_box(Object.assign({ - headlinebox -}, o))))); -// CONCATENATED MODULE: ./src/templates/headline_panel.js -function headline_panel_templateObject() { - const data = headline_panel_taggedTemplateLiteral(["\n <div class=\"d-flex controlbox-padded ", "\">\n <span class=\"w-100 controlbox-heading controlbox-heading--headline\">", "</span>\n </div>\n ", "\n"]); - - headline_panel_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function headline_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - -/* harmony default export */ var headline_panel = (o => lit_html_html(headline_panel_templateObject(), o.headlineboxes.length ? '' : 'hidden', o.heading_headline, headline_list(o))); -// CONCATENATED MODULE: ./src/converse-headlines-view.js -/** - * @module converse-headlines-view - * @copyright 2020, the Converse.js contributors - * @license Mozilla Public License (MPLv2) - */ - - - +// CONCATENATED MODULE: ./src/plugins/headlines-view/view.js - -const converse_headlines_view_u = converse.env.utils; -const HeadlinesBoxView = ChatBoxView.extend({ - className: 'chatbox headlines', +const HeadlinesBoxViewMixin = { + className: 'chatbox headlines hidden', events: { 'click .close-chatbox-button': 'close', 'click .toggle-chatbox-button': 'minimize', 'keypress textarea.chat-textarea': 'onKeyDown' }, - initialize() { + async initialize() { this.initDebounced(); this.model.disable_mam = true; // Don't do MAM queries for this box - this.listenTo(this.model.messages, 'add', this.renderChatHistory); - this.listenTo(this.model, 'show', this.show); - this.listenTo(this.model, 'destroy', this.hide); - this.listenTo(this.model, 'change:minimized', this.onMinimizedChanged); - this.render(); - this.renderHeading(); - this.updateAfterMessagesFetched(); - this.insertIntoDOM().hide(); + this.listenTo(this.model, 'change:hidden', m => m.get('hidden') ? this.hide() : this.show()); + this.listenTo(this.model, 'destroy', this.remove); + this.listenTo(this.model, 'show', this.show); + this.render(); // Need to be registered after render has been called. + + this.listenTo(this.model.messages, 'add', this.onMessageAdded); + this.listenTo(this.model.messages, 'remove', this.renderChatHistory); + this.listenTo(this.model.messages, 'rendered', this.maybeScrollDown); + this.listenTo(this.model.messages, 'reset', this.renderChatHistory); + await this.model.messages.fetched; + this.insertIntoDOM(); this.model.maybeShow(); + this.scrollDown(); /** * Triggered once the {@link _converse.HeadlinesBoxView} has been initialized * @event _converse#headlinesBoxViewInitialized @@ -100543,7 +105218,7 @@ const HeadlinesBoxView = ChatBoxView.extend({ * @example _converse.api.listen.on('headlinesBoxViewInitialized', view => { ... }); */ - converse_core_api.trigger('headlinesBoxViewInitialized', this); + core_api.trigger('headlinesBoxViewInitialized', this); }, render() { @@ -100558,6 +105233,8 @@ const HeadlinesBoxView = ChatBoxView.extend({ render_render(result, this.el); this.content = this.el.querySelector('.chat-content'); this.msgs_container = this.el.querySelector('.chat-content__messages'); + this.renderChatContent(); + this.renderHeading(); return this; }, @@ -100577,7 +105254,7 @@ const HeadlinesBoxView = ChatBoxView.extend({ getHeadingButtons() { const buttons = []; - if (!converse_core_api.settings.get("singleton")) { + if (!core_api.settings.get('singleton')) { buttons.push({ 'a_class': 'close-chatbox-button', 'handler': ev => this.close(ev), @@ -100585,17 +105262,70 @@ const HeadlinesBoxView = ChatBoxView.extend({ 'i18n_title': i18n_('Close these announcements'), 'icon_class': 'fa-times', 'name': 'close', - 'standalone': converse_core_api.settings.get("view_mode") === 'overlayed' + 'standalone': core_api.settings.get('view_mode') === 'overlayed' }); } - return converse_core_converse.api.hook('getHeadingButtons', this, buttons); + return core_converse.api.hook('getHeadingButtons', this, buttons); }, - // Override to avoid the methods in converse-chatview.js + // Override to avoid the methods in converse-chatview 'renderMessageForm': function renderMessageForm() {}, 'afterShown': function afterShown() {} -}); +}; +/* harmony default export */ var headlines_view_view = (HeadlinesBoxViewMixin); +// CONCATENATED MODULE: ./src/templates/headline_list.js +function headline_list_templateObject2() { + const data = headline_list_taggedTemplateLiteral(["\n <div class=\"list-container list-container--headline ", "\">\n <div class=\"items-list rooms-list headline-list\">\n ", "\n </div>\n </div>\n"]); + + headline_list_templateObject2 = function () { + return data; + }; + + return data; +} + +function headline_list_templateObject() { + const data = headline_list_taggedTemplateLiteral(["\n <div class=\"list-item controlbox-padded d-flex flex-row\"\n data-headline-jid=\"", "\">\n <a class=\"list-item-link open-headline available-room w-100\"\n data-headline-jid=\"", "\"\n title=\"", "\" href=\"#\">", "</a>\n </div>\n"]); + + headline_list_templateObject = function () { + return data; + }; + + return data; +} + +function headline_list_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + +const tpl_headline_box = o => lit_html_html(headline_list_templateObject(), o.headlinebox.get('jid'), o.headlinebox.get('jid'), o.open_title, o.headlinebox.get('jid')); + +/* harmony default export */ var headline_list = (o => lit_html_html(headline_list_templateObject2(), o.headlineboxes.length ? '' : 'hidden', o.headlineboxes.map(headlinebox => tpl_headline_box(Object.assign({ + headlinebox +}, o))))); +// CONCATENATED MODULE: ./src/templates/headline_panel.js +function headline_panel_templateObject() { + const data = headline_panel_taggedTemplateLiteral(["\n <div class=\"d-flex controlbox-padded ", "\">\n <span class=\"w-100 controlbox-heading controlbox-heading--headline\">", "</span>\n </div>\n ", "\n"]); + + headline_panel_templateObject = function () { + return data; + }; + + return data; +} + +function headline_panel_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + +/* harmony default export */ var headline_panel = (o => lit_html_html(headline_panel_templateObject(), o.headlineboxes.length ? '' : 'hidden', o.heading_headline, headline_list(o))); +// CONCATENATED MODULE: ./src/plugins/headlines-view/panel.js + + + + +const panel_u = converse.env.utils; /** * View which renders headlines section of the control box. * @class @@ -100603,7 +105333,7 @@ const HeadlinesBoxView = ChatBoxView.extend({ * @memberOf _converse */ -const HeadlinesPanel = view_View.extend({ +const HeadlinesPanelView = View.extend({ tagName: 'div', className: 'controlbox-section', id: 'headline', @@ -100622,31 +105352,81 @@ const HeadlinesPanel = view_View.extend({ toHTML() { return headline_panel({ 'heading_headline': i18n_('Announcements'), - 'headlineboxes': this.model.filter(m => m.get('type') === converse_core_converse.HEADLINES_TYPE), + 'headlineboxes': this.model.filter(m => m.get('type') === core_converse.HEADLINES_TYPE), 'open_title': i18n_('Click to open this server message') }); }, renderIfHeadline(model) { - return model && model.get('type') === converse_core_converse.HEADLINES_TYPE && this.render(); + return model && model.get('type') === core_converse.HEADLINES_TYPE && this.render(); }, openHeadline(ev) { ev.preventDefault(); const jid = ev.target.getAttribute('data-headline-jid'); - const chat = converse_core_converse.chatboxes.get(jid); + const chat = core_converse.chatboxes.get(jid); chat.maybeShow(true); }, insertIntoDOM() { - const view = converse_core_converse.chatboxviews.get('controlbox'); + const view = core_converse.chatboxviews.get('controlbox'); view && view.el.querySelector('.controlbox-pane').insertAdjacentElement('beforeEnd', this.el); } }); +/** + * Mixin for the {@link _converse.ControlBoxView } which add support for + * rendering a list of headline chats. + * @mixin + */ + +const HeadlinesPanelMixin = { + renderHeadlinesPanel() { + if (this.headlinepanel && panel_u.isInDOM(this.headlinepanel.el)) { + return this.headlinepanel; + } + + this.headlinepanel = new core_converse.HeadlinesPanel({ + 'model': core_converse.chatboxes + }); + /** + * Triggered once the section of the { @link _converse.ControlBoxView } + * which shows announcements has been rendered. + * @event _converse#headlinesPanelRendered + * @example _converse.api.listen.on('headlinesPanelRendered', () => { ... }); + */ + + core_api.trigger('headlinesPanelRendered'); + return this.headlinepanel; + } + +}; +// CONCATENATED MODULE: ./src/plugins/headlines-view/index.js +/** + * @module converse-headlines-view + * @copyright 2020, the Converse.js contributors + * @license Mozilla Public License (MPLv2) + */ + + + + + +function headlines_view_onChatBoxViewsInitialized() { + const views = core_converse.chatboxviews; + + core_converse.chatboxes.on('add', item => { + if (!views.get(item.get('id')) && item.get('type') === core_converse.HEADLINES_TYPE) { + views.add(item.get('id'), new core_converse.HeadlinesBoxView({ + model: item + })); + } + }); +} + converse.plugins.add('converse-headlines-view', { /* Plugin dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -100656,15 +105436,10 @@ converse.plugins.add('converse-headlines-view', { * an error will be raised if the plugin is not found. By default it's * false, which means these plugins are only loaded opportunistically. * - * NB: These plugins need to have already been loaded via require.js. + * NB: These plugins need to have already been loaded by the bundler */ - dependencies: ["converse-headlines", "converse-chatview"], + dependencies: ['converse-headlines', 'converse-chatview'], overrides: { - // Overrides mentioned here will be picked up by converse.js's - // plugin architecture they will replace existing methods on the - // relevant objects or classes. - // - // New functions which don't exist yet can also be added. ControlBoxView: { renderControlBoxPane() { this.__super__.renderControlBoxPane.apply(this, arguments); @@ -100679,51 +105454,18 @@ converse.plugins.add('converse-headlines-view', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - const viewWithHeadlinesPanel = { - renderHeadlinesPanel() { - if (this.headlinepanel && converse_headlines_view_u.isInDOM(this.headlinepanel.el)) { - return this.headlinepanel; - } - - this.headlinepanel = new converse_core_converse.HeadlinesPanel({ - 'model': converse_core_converse.chatboxes - }); - /** - * Triggered once the section of the { @link _converse.ControlBoxView } - * which shows announcements has been rendered. - * @event _converse#headlinesPanelRendered - * @example _converse.api.listen.on('headlinesPanelRendered', () => { ... }); - */ - - converse_core_api.trigger('headlinesPanelRendered'); - return this.headlinepanel; - } - - }; - - if (converse_core_converse.ControlBoxView) { - Object.assign(converse_core_converse.ControlBoxView.prototype, viewWithHeadlinesPanel); - } - - converse_core_converse.HeadlinesBoxView = HeadlinesBoxView; - converse_core_converse.HeadlinesPanel = HeadlinesPanel; - /************************ BEGIN Event Handlers ************************/ - - converse_core_api.listen.on('chatBoxViewsInitialized', () => { - const views = converse_core_converse.chatboxviews; - - converse_core_converse.chatboxes.on('add', item => { - if (!views.get(item.get('id')) && item.get('type') === converse_core_converse.HEADLINES_TYPE) { - views.add(item.get('id'), new converse_core_converse.HeadlinesBoxView({ - model: item - })); - } - }); - }); + core_converse.ControlBoxView && Object.assign(core_converse.ControlBoxView.prototype, HeadlinesPanelMixin); + core_converse.HeadlinesBoxView = core_converse.ChatBoxView.extend(headlines_view_view); + core_converse.HeadlinesPanel = HeadlinesPanelView; + core_api.listen.on('chatBoxViewsInitialized', headlines_view_onChatBoxViewsInitialized); } }); -// CONCATENATED MODULE: ./src/converse-notification.js +// EXTERNAL MODULE: ./node_modules/favico.js-slevomat/favico.js +var favico = __webpack_require__(180); +var favico_default = /*#__PURE__*/__webpack_require__.n(favico); + +// CONCATENATED MODULE: ./src/plugins/notifications.js /** * @module converse-notification * @copyright 2020, the Converse.js contributors @@ -100732,11 +105474,29 @@ converse.plugins.add('converse-headlines-view', { + const { - Strophe: converse_notification_Strophe + Strophe: notifications_Strophe } = converse.env; -const converse_notification_u = converse.env.utils; +const notifications_u = converse.env.utils; const supports_html5_notification = ("Notification" in window); +converse.env.Favico = favico_default.a; +let favicon; + +function updateUnreadFavicon() { + if (core_api.settings.get('show_tab_notifications')) { + var _favicon; + + favicon = (_favicon = favicon) !== null && _favicon !== void 0 ? _favicon : new converse.env.Favico({ + type: 'circle', + animation: 'pop' + }); + const chats = core_converse.chatboxes.models; + const num_unread = chats.reduce((acc, chat) => acc + (chat.get('num_unread') || 0), 0); + favicon.badge(num_unread); + } +} + converse.plugins.add('converse-notification', { dependencies: ["converse-chatboxes"], @@ -100744,17 +105504,18 @@ converse.plugins.add('converse-notification', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ - notify_all_room_messages: false, - show_desktop_notifications: true, - show_chat_state_notifications: false, - chatstate_notification_blacklist: [], + core_api.settings.extend({ // ^ a list of JIDs to ignore concerning chat state notifications - play_sounds: true, - sounds_path: converse_core_api.settings.get("assets_path") + '/sounds/', - notification_icon: 'logo/conversejs-filled.svg', + chatstate_notification_blacklist: [], notification_delay: 5000, - notify_nicknames_without_references: false + notification_icon: 'logo/conversejs-filled.svg', + notify_all_room_messages: false, + notify_nicknames_without_references: false, + play_sounds: true, + show_chat_state_notifications: false, + show_desktop_notifications: true, + show_tab_notifications: true, + sounds_path: core_api.settings.get("assets_path") + '/sounds/' }); /** * Is this a group message for which we should notify the user? @@ -100763,23 +105524,23 @@ converse.plugins.add('converse-notification', { * @param { MUCMessageAttributes } attrs */ - converse_core_converse.shouldNotifyOfGroupMessage = function (attrs) { + core_converse.shouldNotifyOfGroupMessage = function (attrs) { if (!(attrs === null || attrs === void 0 ? void 0 : attrs.body)) { return false; } const jid = attrs.from; const room_jid = attrs.from_muc; - const notify_all = converse_core_api.settings.get('notify_all_room_messages'); + const notify_all = core_api.settings.get('notify_all_room_messages'); - const room = converse_core_converse.chatboxes.get(room_jid); + const room = core_converse.chatboxes.get(room_jid); - const resource = converse_notification_Strophe.getResourceFromJid(jid); - const sender = resource && converse_notification_Strophe.unescapeNode(resource) || ''; + const resource = notifications_Strophe.getResourceFromJid(jid); + const sender = resource && notifications_Strophe.unescapeNode(resource) || ''; let is_mentioned = false; const nick = room.get('nick'); - if (converse_core_api.settings.get('notify_nicknames_without_references')) { + if (core_api.settings.get('notify_nicknames_without_references')) { is_mentioned = new RegExp("\\b".concat(nick, "\\b")).test(attrs.body); } @@ -100797,10 +105558,10 @@ converse.plugins.add('converse-notification', { */ - converse_core_converse.isMessageToHiddenChat = function (attrs) { + core_converse.isMessageToHiddenChat = function (attrs) { var _converse$chatboxes$g, _converse$chatboxes$g2; - return (_converse$chatboxes$g = (_converse$chatboxes$g2 = converse_core_converse.chatboxes.get(attrs.from)) === null || _converse$chatboxes$g2 === void 0 ? void 0 : _converse$chatboxes$g2.isHidden()) !== null && _converse$chatboxes$g !== void 0 ? _converse$chatboxes$g : false; + return (_converse$chatboxes$g = (_converse$chatboxes$g2 = core_converse.chatboxes.get(attrs.from)) === null || _converse$chatboxes$g2 === void 0 ? void 0 : _converse$chatboxes$g2.isHidden()) !== null && _converse$chatboxes$g !== void 0 ? _converse$chatboxes$g : false; }; /** * @private @@ -100809,7 +105570,7 @@ converse.plugins.add('converse-notification', { */ - converse_core_converse.shouldNotifyOfMessage = function (data) { + core_converse.shouldNotifyOfMessage = function (data) { const { attrs, stanza @@ -100820,15 +105581,15 @@ converse.plugins.add('converse-notification', { } if (attrs['type'] === 'groupchat') { - return converse_core_converse.shouldNotifyOfGroupMessage(attrs); + return core_converse.shouldNotifyOfGroupMessage(attrs); } else if (attrs.is_headline) { // We want to show notifications for headline messages. - return converse_core_converse.isMessageToHiddenChat(attrs); + return core_converse.isMessageToHiddenChat(attrs); } - const is_me = converse_notification_Strophe.getBareJidFromJid(attrs.from) === converse_core_converse.bare_jid; + const is_me = notifications_Strophe.getBareJidFromJid(attrs.from) === core_converse.bare_jid; - return !converse_notification_u.isOnlyChatStateNotification(stanza) && !converse_notification_u.isOnlyMessageDeliveryReceipt(stanza) && !is_me && (converse_core_api.settings.get('show_desktop_notifications') === 'all' || converse_core_converse.isMessageToHiddenChat(attrs)); + return !notifications_u.isOnlyChatStateNotification(stanza) && !notifications_u.isOnlyMessageDeliveryReceipt(stanza) && !is_me && (core_api.settings.get('show_desktop_notifications') === 'all' || core_converse.isMessageToHiddenChat(attrs)); }; /** * Plays a notification sound @@ -100837,16 +105598,16 @@ converse.plugins.add('converse-notification', { */ - converse_core_converse.playSoundNotification = function () { - if (converse_core_api.settings.get('play_sounds') && window.Audio !== undefined) { - const audioOgg = new Audio(converse_core_api.settings.get('sounds_path') + "msg_received.ogg"); + core_converse.playSoundNotification = function () { + if (core_api.settings.get('play_sounds') && window.Audio !== undefined) { + const audioOgg = new Audio(core_api.settings.get('sounds_path') + "msg_received.ogg"); const canPlayOgg = audioOgg.canPlayType('audio/ogg'); if (canPlayOgg === 'probably') { return audioOgg.play(); } - const audioMp3 = new Audio(converse_core_api.settings.get('sounds_path') + "msg_received.mp3"); + const audioMp3 = new Audio(core_api.settings.get('sounds_path') + "msg_received.mp3"); const canPlayMp3 = audioMp3.canPlayType('audio/mp3'); if (canPlayMp3 === 'probably') { @@ -100859,8 +105620,8 @@ converse.plugins.add('converse-notification', { } }; - converse_core_converse.areDesktopNotificationsEnabled = function () { - return supports_html5_notification && converse_core_api.settings.get('show_desktop_notifications') && Notification.permission === "granted"; + core_converse.areDesktopNotificationsEnabled = function () { + return supports_html5_notification && core_api.settings.get('show_desktop_notifications') && Notification.permission === "granted"; }; /** * Shows an HTML5 Notification with the passed in message @@ -100870,7 +105631,7 @@ converse.plugins.add('converse-notification', { */ - converse_core_converse.showMessageNotification = function (data) { + core_converse.showMessageNotification = function (data) { const { attrs } = data; @@ -100879,16 +105640,16 @@ converse.plugins.add('converse-notification', { return; } - if (!converse_core_converse.areDesktopNotificationsEnabled()) { + if (!core_converse.areDesktopNotificationsEnabled()) { return; } let title, roster_item; const full_from_jid = attrs.from, - from_jid = converse_notification_Strophe.getBareJidFromJid(full_from_jid); + from_jid = notifications_Strophe.getBareJidFromJid(full_from_jid); if (attrs.type === 'headline') { - if (!from_jid.includes('@') || converse_core_api.settings.get("allow_non_roster_messaging")) { + if (!from_jid.includes('@') || core_api.settings.get("allow_non_roster_messaging")) { title = i18n_("Notification from %1$s", from_jid); } else { return; @@ -100897,19 +105658,19 @@ converse.plugins.add('converse-notification', { // workaround for Prosody which doesn't give type "headline" title = i18n_("Notification from %1$s", from_jid); } else if (attrs.type === 'groupchat') { - title = i18n_("%1$s says", converse_notification_Strophe.getResourceFromJid(full_from_jid)); + title = i18n_("%1$s says", notifications_Strophe.getResourceFromJid(full_from_jid)); } else { - if (converse_core_converse.roster === undefined) { + if (core_converse.roster === undefined) { headless_log.error("Could not send notification, because roster is undefined"); return; } - roster_item = converse_core_converse.roster.get(from_jid); + roster_item = core_converse.roster.get(from_jid); if (roster_item !== undefined) { title = i18n_("%1$s says", roster_item.getDisplayName()); } else { - if (converse_core_api.settings.get("allow_non_roster_messaging")) { + if (core_api.settings.get("allow_non_roster_messaging")) { title = i18n_("%1$s says", from_jid); } else { return; @@ -100925,32 +105686,32 @@ converse.plugins.add('converse-notification', { const n = new Notification(title, { 'body': body, - 'lang': converse_core_converse.locale, - 'icon': converse_core_api.settings.get('notification_icon'), - 'requireInteraction': !converse_core_converse.notification_delay + 'lang': core_converse.locale, + 'icon': core_api.settings.get('notification_icon'), + 'requireInteraction': !core_converse.notification_delay }); - if (converse_core_api.settings.get('notification_delay')) { - setTimeout(n.close.bind(n), converse_core_api.settings.get('notification_delay')); + if (core_api.settings.get('notification_delay')) { + setTimeout(n.close.bind(n), core_api.settings.get('notification_delay')); } n.onclick = function (event) { event.preventDefault(); window.focus(); - const chat = converse_core_converse.chatboxes.get(from_jid); + const chat = core_converse.chatboxes.get(from_jid); chat.maybeShow(true); }; - n.onclick.bind(converse_core_converse); + n.onclick.bind(core_converse); }; - converse_core_converse.showChatStateNotification = function (contact) { + core_converse.showChatStateNotification = function (contact) { /* Creates an HTML5 Notification to inform of a change in a * contact's chat state. */ - if (converse_core_converse.chatstate_notification_blacklist.includes(contact.jid)) { + if (core_converse.chatstate_notification_blacklist.includes(contact.jid)) { // Don't notify if the user is being ignored. return; } @@ -100974,47 +105735,47 @@ converse.plugins.add('converse-notification', { const n = new Notification(contact.getDisplayName(), { body: message, - lang: converse_core_converse.locale, - icon: converse_core_converse.notification_icon + lang: core_converse.locale, + icon: core_converse.notification_icon }); setTimeout(n.close.bind(n), 5000); }; - converse_core_converse.showContactRequestNotification = function (contact) { + core_converse.showContactRequestNotification = function (contact) { const n = new Notification(contact.getDisplayName(), { body: i18n_('wants to be your contact'), - lang: converse_core_converse.locale, - icon: converse_core_converse.notification_icon + lang: core_converse.locale, + icon: core_converse.notification_icon }); setTimeout(n.close.bind(n), 5000); }; - converse_core_converse.showFeedbackNotification = function (data) { + core_converse.showFeedbackNotification = function (data) { if (data.klass === 'error' || data.klass === 'warn') { const n = new Notification(data.subject, { body: data.message, - lang: converse_core_converse.locale, - icon: converse_core_converse.notification_icon + lang: core_converse.locale, + icon: core_converse.notification_icon }); setTimeout(n.close.bind(n), 5000); } }; - converse_core_converse.handleChatStateNotification = function (contact) { + core_converse.handleChatStateNotification = function (contact) { /* Event handler for on('contactPresenceChanged'). * Will show an HTML5 notification to indicate that the chat * status has changed. */ - if (converse_core_converse.areDesktopNotificationsEnabled() && converse_core_api.settings.get('show_chat_state_notifications')) { - converse_core_converse.showChatStateNotification(contact); + if (core_converse.areDesktopNotificationsEnabled() && core_api.settings.get('show_chat_state_notifications')) { + core_converse.showChatStateNotification(contact); } }; - converse_core_converse.handleMessageNotification = function (data) { + core_converse.handleMessageNotification = function (data) { /* Event handler for the on('message') event. Will call methods * to play sounds and show HTML5 notifications. */ - if (!converse_core_converse.shouldNotifyOfMessage(data)) { + if (!core_converse.shouldNotifyOfMessage(data)) { return false; } /** @@ -101026,146 +105787,443 @@ converse.plugins.add('converse-notification', { */ - converse_core_api.trigger('messageNotification', data); + core_api.trigger('messageNotification', data); - converse_core_converse.playSoundNotification(); + core_converse.playSoundNotification(); - converse_core_converse.showMessageNotification(data); + core_converse.showMessageNotification(data); }; - converse_core_converse.handleContactRequestNotification = function (contact) { - if (converse_core_converse.areDesktopNotificationsEnabled(true)) { - converse_core_converse.showContactRequestNotification(contact); + core_converse.handleContactRequestNotification = function (contact) { + if (core_converse.areDesktopNotificationsEnabled(true)) { + core_converse.showContactRequestNotification(contact); } }; - converse_core_converse.handleFeedback = function (data) { - if (converse_core_converse.areDesktopNotificationsEnabled(true)) { - converse_core_converse.showFeedbackNotification(data); + core_converse.handleFeedback = function (data) { + if (core_converse.areDesktopNotificationsEnabled(true)) { + core_converse.showFeedbackNotification(data); } }; - converse_core_converse.requestPermission = function () { + core_converse.requestPermission = function () { if (supports_html5_notification && !['denied', 'granted'].includes(Notification.permission)) { // Ask user to enable HTML5 notifications Notification.requestPermission(); } }; + /************************ BEGIN Event Handlers ************************/ + - converse_core_api.listen.on('pluginsInitialized', function () { + core_api.listen.on('clearSession', () => favicon = null); // Needed for tests + + core_api.waitUntil('chatBoxesInitialized').then(() => core_converse.chatboxes.on('change:num_unread', updateUnreadFavicon)); + core_api.listen.on('pluginsInitialized', function () { // We only register event handlers after all plugins are // registered, because other plugins might override some of our // handlers. - converse_core_api.listen.on('contactRequest', converse_core_converse.handleContactRequestNotification); - converse_core_api.listen.on('contactPresenceChanged', converse_core_converse.handleChatStateNotification); - converse_core_api.listen.on('message', converse_core_converse.handleMessageNotification); - converse_core_api.listen.on('feedback', converse_core_converse.handleFeedback); - converse_core_api.listen.on('connected', converse_core_converse.requestPermission); + core_api.listen.on('contactRequest', core_converse.handleContactRequestNotification); + core_api.listen.on('contactPresenceChanged', core_converse.handleChatStateNotification); + core_api.listen.on('message', core_converse.handleMessageNotification); + core_api.listen.on('feedback', core_converse.handleFeedback); + core_api.listen.on('connected', core_converse.requestPermission); + }); + } + +}); +// CONCATENATED MODULE: ./src/modals/templates/chat-status.js +function chat_status_templateObject() { + const data = chat_status_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"changeStatusModalLabel\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form set-xmpp-status\" id=\"set-xmpp-status\">\n <div class=\"form-group\">\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-online\" value=\"online\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-online\">\n <span class=\"fa fa-circle chat-status chat-status--online\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-busy\" value=\"dnd\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-busy\">\n <span class=\"fa fa-minus-circle chat-status chat-status--busy\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-away\" value=\"away\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-away\">\n <span class=\"fa fa-circle chat-status chat-status--away\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-xa\" value=\"xa\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-xa\">\n <span class=\"far fa-circle chat-status chat-status--xa\"></span>", "</label>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"btn-group w-100\">\n <input name=\"status_message\" type=\"text\" class=\"form-control\"\n value=\"", "\" placeholder=\"", "\"/>\n <span class=\"clear-input fa fa-times ", "\"></span>\n </div>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </form>\n </div>\n </div>\n </div>\n"]); + + chat_status_templateObject = function () { + return data; + }; + + return data; +} + +function chat_status_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + +/* harmony default export */ var templates_chat_status = (o => lit_html_html(chat_status_templateObject(), o.modal_title, modal_header_close_button, o.status === 'online', o.label_online, o.status === 'busy', o.label_busy, o.status === 'away', o.label_away, o.status === 'xa', o.label_xa, o.status_message || '', o.placeholder_status_message, o.status_message ? '' : 'hidden', o.label_save)); +// CONCATENATED MODULE: ./src/modals/chat-status.js + + + + +const chat_status_u = converse.env.utils; +const ChatStatusModal = modals_base.extend({ + id: "modal-status-change", + events: { + "submit form#set-xmpp-status": "onFormSubmitted", + "click .clear-input": "clearStatusMessage" + }, + + toHTML() { + return templates_chat_status(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { + 'label_away': i18n_('Away'), + 'label_busy': i18n_('Busy'), + 'label_cancel': i18n_('Cancel'), + 'label_close': i18n_('Close'), + 'label_custom_status': i18n_('Custom status'), + 'label_offline': i18n_('Offline'), + 'label_online': i18n_('Online'), + 'label_save': i18n_('Save'), + 'label_xa': i18n_('Away for long'), + 'modal_title': i18n_('Change chat status'), + 'placeholder_status_message': i18n_('Personal status message') + })); + }, + + afterRender() { + this.el.addEventListener('shown.bs.modal', () => { + this.el.querySelector('input[name="status_message"]').focus(); + }, false); + }, + + clearStatusMessage(ev) { + if (ev && ev.preventDefault) { + ev.preventDefault(); + chat_status_u.hideElement(this.el.querySelector('.clear-input')); + } + + const roster_filter = this.el.querySelector('input[name="status_message"]'); + roster_filter.value = ''; + }, + + onFormSubmitted(ev) { + ev.preventDefault(); + const data = new FormData(ev.target); + this.model.save({ + 'status_message': data.get('status_message'), + 'status': data.get('chat_status') }); + this.modal.hide(); } }); -// CONCATENATED MODULE: ./src/components/autocomplete.js -function autocomplete_templateObject() { - const data = autocomplete_taggedTemplateLiteral(["\n <div class=\"suggestion-box suggestion-box__name\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <input type=\"text\" name=\"", "\"\n autocomplete=\"off\"\n @keydown=", "\n @keyup=", "\n class=\"form-control suggestion-box__input\"\n placeholder=\"", "\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n "]); +core_converse.ChatStatusModal = ChatStatusModal; +/* harmony default export */ var modals_chat_status = (ChatStatusModal); +// CONCATENATED MODULE: ./src/components/image_picker.js +function image_picker_templateObject() { + const data = image_picker_taggedTemplateLiteral(["\n <a class=\"change-avatar\" @click=", " title=\"", "\">\n ", "\n </a>\n <input @change=", " class=\"hidden\" name=\"image\" type=\"file\"/>\n "]); - autocomplete_templateObject = function _templateObject() { + image_picker_templateObject = function () { return data; }; return data; } -function autocomplete_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function image_picker_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + -class autocomplete_AutoCompleteComponent extends element_CustomElement { + +const i18n_alt_avatar = i18n_('Your avatar image'); + +class image_picker_ImagePicker extends element_CustomElement { static get properties() { return { - 'getAutoCompleteList': { - type: Function - }, - 'auto_evaluate': { - type: Boolean - }, - 'auto_first': { - type: Boolean - }, - // Should the first element be automatically selected? - 'filter': { - type: String - }, - 'include_triggers': { - type: String - }, - 'min_chars': { + 'height': { type: Number }, - 'name': { - type: String - }, - 'placeholder': { + 'image': { type: String }, - 'triggers': { - type: String + 'width': { + type: Number } }; } - constructor() { - super(); - this.auto_evaluate = true; // Should evaluation happen automatically without any particular key as trigger? + render() { + const avatar_data = { + 'height': this.height, + 'image': this.image, + 'width': this.width + }; + return lit_html_html(image_picker_templateObject(), this.openFileSelection, i18n_alt_avatar, renderAvatar(avatar_data), this.updateFilePreview); + } - this.auto_first = false; // Should the first element be automatically selected? + openFileSelection(ev) { + ev.preventDefault(); + this.querySelector('input[type="file"]').click(); + } - this.filter = 'contains'; - this.include_triggers = ''; // Space separated chars which should be included in the returned value + updateFilePreview(ev) { + const file = ev.target.files[0]; + const reader = new FileReader(); - this.match_current_word = false; // Match only the current word, otherwise all input is matched + reader.onloadend = () => this.image = reader.result; - this.max_items = 10; - this.min_chars = 1; - this.triggers = ''; // String of space separated chars + reader.readAsDataURL(file); } - render() { - return lit_html_html(autocomplete_templateObject(), this.name, this.onKeyDown, this.onKeyUp, this.placeholder); - } +} +core_api.elements.define('converse-image-picker', image_picker_ImagePicker); +// CONCATENATED MODULE: ./src/modals/templates/profile.js +function profile_templateObject8() { + const data = profile_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"user-profile-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n ", "\n <div class=\"tab-content\">\n <div class=\"tab-pane active\" id=\"profile-tabpanel\" role=\"tabpanel\" aria-labelledby=\"profile-tab\">\n <form class=\"converse-form converse-form--modal profile-form\" action=\"#\">\n <div class=\"row\">\n <div class=\"col-auto\">\n <converse-image-picker image=\"", "\" width=\"", "\" height=\"", "\"></converse-image-picker>\n </div>\n <div class=\"col\">\n <div class=\"form-group\">\n <label class=\"col-form-label\">", ":</label>\n <div>", "</div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-fullname\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-fullname\" type=\"text\" class=\"form-control\" name=\"fn\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-nickname\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-nickname\" type=\"text\" class=\"form-control\" name=\"nickname\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-url\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-url\" type=\"url\" class=\"form-control\" name=\"url\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-email\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-email\" type=\"email\" class=\"form-control\" name=\"email\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-role\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-role\" type=\"text\" class=\"form-control\" name=\"role\" value=\"", "\" aria-describedby=\"vcard-role-help\"/>\n <small id=\"vcard-role-help\" class=\"form-text text-muted\">", "</small>\n </div>\n <hr/>\n <div class=\"form-group\">\n <button type=\"submit\" class=\"save-form btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n ", "\n </div>\n </div>\n </div>\n </div>\n "]); - firstUpdated() { - this.auto_complete = new converse_autocomplete_AutoComplete(this.firstElementChild, { - 'ac_triggers': this.triggers.split(' '), - 'auto_evaluate': this.auto_evaluate, - 'auto_first': this.auto_first, - 'filter': this.filter == 'contains' ? FILTER_CONTAINS : FILTER_STARTSWITH, - 'include_triggers': [], - 'list': () => this.getAutoCompleteList(), - 'match_current_word': true, - 'max_items': this.max_items, - 'min_chars': this.min_chars - }); - this.auto_complete.on('suggestion-box-selectcomplete', () => this.auto_completing = false); - } + profile_templateObject8 = function () { + return data; + }; - onKeyDown(ev) { - this.auto_complete.onKeyDown(ev); - } + return data; +} - onKeyUp(ev) { - this.auto_complete.evaluate(ev); - } +function profile_templateObject7() { + const data = profile_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"profile-tab\" href=\"#profile-tabpanel\" aria-controls=\"profile-tabpanel\" role=\"tab\" data-toggle=\"tab\">", "</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"omemo-tab\" href=\"#omemo-tabpanel\" aria-controls=\"omemo-tabpanel\" role=\"tab\" data-toggle=\"tab\">", "</a>\n </li>\n </ul>"]); + + profile_templateObject7 = function () { + return data; + }; + + return data; +} + +function profile_templateObject6() { + const data = profile_taggedTemplateLiteral(["\n <div class=\"tab-pane\" id=\"omemo-tabpanel\" role=\"tabpanel\" aria-labelledby=\"omemo-tab\">\n <form class=\"converse-form fingerprint-removal\">\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item active\">", "</li>\n <li class=\"list-group-item\">\n ", "\n </li>\n </ul>\n <div class=\"form-group\">\n <button type=\"button\" class=\"generate-bundle btn btn-danger\">", "</button>\n </div>\n ", "\n </form>\n </div>"]); + + profile_templateObject6 = function () { + return data; + }; + + return data; +} + +function profile_templateObject5() { + const data = profile_taggedTemplateLiteral(["\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item nopadding active\">\n <label>\n <input type=\"checkbox\" class=\"select-all\" title=\"", "\" aria-label=\"", "\"/>\n ", "\n </label>\n </li>\n ", "\n </ul>\n <div class=\"form-group\"><button type=\"submit\" class=\"save-form btn btn-primary\">", "</button></div>\n "]); + + profile_templateObject5 = function () { + return data; + }; + + return data; +} + +function profile_templateObject4() { + const data = profile_taggedTemplateLiteral(["\n ", "\n"]); + + profile_templateObject4 = function () { + return data; + }; + + return data; +} + +function profile_templateObject3() { + const data = profile_taggedTemplateLiteral(["\n <li class=\"fingerprint-removal-item list-group-item nopadding\">\n <label>\n <input type=\"checkbox\" value=\"", "\"\n aria-label=\"", "\"/>\n <span>", "</span>\n </label>\n </li>\n "]); + + profile_templateObject3 = function () { + return data; + }; + + return data; +} + +function profile_templateObject2() { + const data = profile_taggedTemplateLiteral(["\n <li class=\"fingerprint-removal-item list-group-item nopadding\">\n <label>\n <input type=\"checkbox\" value=\"", "\"\n aria-label=\"", "\"/>\n <span class=\"fingerprint\">", "</span>\n </label>\n </li>\n "]); + + profile_templateObject2 = function () { + return data; + }; + + return data; +} + +function profile_templateObject() { + const data = profile_taggedTemplateLiteral(["\n <span class=\"fingerprint\">", "</span>"]); + + profile_templateObject = function () { + return data; + }; + return data; } -converse_core_api.elements.define('converse-autocomplete', autocomplete_AutoCompleteComponent); + +function profile_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + + + + + + + +const profile_u = converse.env.utils; + +const fingerprint = o => lit_html_html(profile_templateObject(), profile_u.formatFingerprint(o.view.current_device.get('bundle').fingerprint)); + +const device_with_fingerprint = o => { + const i18n_fingerprint_checkbox_label = i18n_('Checkbox for selecting the following fingerprint'); + + return lit_html_html(profile_templateObject2(), o.device.get('id'), i18n_fingerprint_checkbox_label, profile_u.formatFingerprint(o.device.get('bundle').fingerprint)); +}; + +const device_without_fingerprint = o => { + const i18n_device_without_fingerprint = i18n_('Device without a fingerprint'); + + const i18n_fingerprint_checkbox_label = i18n_('Checkbox for selecting the following device'); + + return lit_html_html(profile_templateObject3(), o.device.get('id'), i18n_fingerprint_checkbox_label, i18n_device_without_fingerprint); +}; + +const device_item = o => lit_html_html(profile_templateObject4(), o.device.get('bundle') && o.device.get('bundle').fingerprint ? device_with_fingerprint(o) : device_without_fingerprint(o)); + +const device_list = o => { + const i18n_other_devices = i18n_('Other OMEMO-enabled devices'); + + const i18n_other_devices_label = i18n_('Checkbox to select fingerprints of all other OMEMO devices'); + + const i18n_remove_devices = i18n_('Remove checked devices and close'); + + const i18n_select_all = i18n_('Select all'); + + return lit_html_html(profile_templateObject5(), i18n_select_all, i18n_other_devices_label, i18n_other_devices, o.view.other_devices.map(device => device_item(Object.assign({ + device + }, o))), i18n_remove_devices); +}; // TODO: this needs to go as a component into the OMEMO plugin folder + + +const omemo_page = o => { + const i18n_fingerprint = i18n_("This device's OMEMO fingerprint"); + + const i18n_generate = i18n_('Generate new keys and fingerprint'); + + return lit_html_html(profile_templateObject6(), i18n_fingerprint, o.view.current_device && o.view.current_device.get('bundle') && o.view.current_device.get('bundle').fingerprint ? fingerprint(o) : spinner(), i18n_generate, o.view.other_devices.length ? device_list(o) : ''); +}; + +/* harmony default export */ var profile = (o => { + const heading_profile = i18n_('Your Profile'); + + const i18n_email = i18n_('Email'); + + const i18n_fullname = i18n_('Full Name'); + + const i18n_jid = i18n_('XMPP Address (JID)'); + + const i18n_nickname = i18n_('Nickname'); + + const i18n_role = i18n_('Role'); + + const i18n_save = i18n_('Save and close'); + + const i18n_role_help = i18n_('Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.'); + + const i18n_url = i18n_('URL'); + + const i18n_omemo = i18n_('OMEMO'); + + const i18n_profile = i18n_('Profile'); + + const navigation = lit_html_html(profile_templateObject7(), i18n_profile, i18n_omemo); + return lit_html_html(profile_templateObject8(), heading_profile, modal_header_close_button, core_converse.pluggable.plugins['converse-omemo'].enabled(core_converse) && navigation || '', o.image, o.width, o.height, i18n_jid, o.jid, i18n_fullname, o.fullname || '', i18n_nickname, o.nickname || '', i18n_url, o.url || '', i18n_email, o.email || '', i18n_role, o.role || '', i18n_role_help, i18n_save, core_converse.pluggable.plugins['converse-omemo'].enabled(core_converse) && omemo_page(o) || ''); +}); +// CONCATENATED MODULE: ./src/modals/profile.js + + + + + + + +const ProfileModal = modals_base.extend({ + id: "user-profile-modal", + events: { + 'submit .profile-form': 'onFormSubmitted' + }, + + initialize() { + this.listenTo(this.model, 'change', this.render); + modals_base.prototype.initialize.apply(this, arguments); + /** + * Triggered when the _converse.ProfileModal has been created and initialized. + * @event _converse#profileModalInitialized + * @type { _converse.XMPPStatus } + * @example _converse.api.listen.on('profileModalInitialized', status => { ... }); + */ + + core_api.trigger('profileModalInitialized', this.model); + }, + + toHTML() { + return profile(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), this.getAvatarData(), { + 'view': this + })); + }, + + getAvatarData() { + const image_type = this.model.vcard.get('image_type'); + const image_data = this.model.vcard.get('image'); + const image = "data:" + image_type + ";base64," + image_data; + return { + 'height': 128, + 'width': 128, + image + }; + }, + + afterRender() { + this.tabs = sizzle_default()('.nav-item .nav-link', this.el).map(e => new bootstrap_native_default.a.Tab(e)); + }, + + async setVCard(data) { + try { + await core_api.vcard.set(core_converse.bare_jid, data); + } catch (err) { + headless_log.fatal(err); + this.alert([i18n_("Sorry, an error happened while trying to save your profile data."), i18n_("You can check your browser's developer console for any error output.")].join(" ")); + return; + } + + this.modal.hide(); + }, + + onFormSubmitted(ev) { + ev.preventDefault(); + const reader = new FileReader(); + const form_data = new FormData(ev.target); + const image_file = form_data.get('image'); + const data = { + 'fn': form_data.get('fn'), + 'nickname': form_data.get('nickname'), + 'role': form_data.get('role'), + 'email': form_data.get('email'), + 'url': form_data.get('url') + }; + + if (!image_file.size) { + Object.assign(data, { + 'image': this.model.vcard.get('image'), + 'image_type': this.model.vcard.get('image_type') + }); + this.setVCard(data); + } else { + reader.onloadend = () => { + Object.assign(data, { + 'image': btoa(reader.result), + 'image_type': image_file.type + }); + this.setVCard(data); + }; + + reader.readAsBinaryString(image_file); + } + } + +}); +core_converse.ProfileModal = ProfileModal; +/* harmony default export */ var modals_profile = (ProfileModal); // CONCATENATED MODULE: ./src/components/adhoc-commands.js function adhoc_commands_templateObject6() { const data = adhoc_commands_taggedTemplateLiteral(["\n <fieldset class=\"form-group\">\n <ul class=\"list-group\">\n <li class=\"list-group-item active\">", ":</li>\n ", "\n </ul>\n </fieldset>"]); - adhoc_commands_templateObject6 = function _templateObject6() { + adhoc_commands_templateObject6 = function () { return data; }; @@ -101175,7 +106233,7 @@ function adhoc_commands_templateObject6() { function adhoc_commands_templateObject5() { const data = adhoc_commands_taggedTemplateLiteral(["<div class=\"alert alert-", "\" role=\"alert\">", "</div>"]); - adhoc_commands_templateObject5 = function _templateObject5() { + adhoc_commands_templateObject5 = function () { return data; }; @@ -101185,7 +106243,7 @@ function adhoc_commands_templateObject5() { function adhoc_commands_templateObject4() { const data = adhoc_commands_taggedTemplateLiteral(["\n ", "\n <form class=\"converse-form\" @submit=", ">\n <fieldset class=\"form-group\">\n <label>\n ", "\n <p class=\"form-help\">", "</p>\n <converse-autocomplete\n .getAutoCompleteList=\"", "\"\n placeholder=\"", "\"\n name=\"jid\"/>\n </label>\n </fieldset>\n <fieldset class=\"form-group\">\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\">\n </fieldset>\n ", "\n\n </form>\n "]); - adhoc_commands_templateObject4 = function _templateObject4() { + adhoc_commands_templateObject4 = function () { return data; }; @@ -101195,7 +106253,7 @@ function adhoc_commands_templateObject4() { function adhoc_commands_templateObject3() { const data = adhoc_commands_taggedTemplateLiteral(["\n <li class=\"room-item list-group-item\">\n <div class=\"available-chatroom d-flex flex-row\">\n <a class=\"open-room available-room w-100\"\n @click=", "\n data-command-node=\"", "\"\n data-command-jid=\"", "\"\n data-command-name=\"", "\"\n title=\"", "\"\n href=\"#\">", "</a>\n </div>\n ", "\n </li>\n"]); - adhoc_commands_templateObject3 = function _templateObject3() { + adhoc_commands_templateObject3 = function () { return data; }; @@ -101205,7 +106263,7 @@ function adhoc_commands_templateObject3() { function adhoc_commands_templateObject2() { const data = adhoc_commands_taggedTemplateLiteral(["<div class=\"alert alert-", "\" role=\"alert\">", "</div>"]); - adhoc_commands_templateObject2 = function _templateObject2() { + adhoc_commands_templateObject2 = function () { return data; }; @@ -101215,7 +106273,7 @@ function adhoc_commands_templateObject2() { function adhoc_commands_templateObject() { const data = adhoc_commands_taggedTemplateLiteral(["\n <form @submit=", ">\n ", "\n <fieldset class=\"form-group\">\n <input type=\"hidden\" name=\"command_node\" value=\"", "\"/>\n <input type=\"hidden\" name=\"command_jid\" value=\"", "\"/>\n\n <p class=\"form-help\">", "</p>\n <!-- Fields are generated internally, with xForm2webForm -->\n ", "\n </fieldset>\n <fieldset>\n <input type=\"submit\" class=\"btn btn-primary\" value=\"", "\">\n <input type=\"button\" class=\"btn btn-secondary button-cancel\" value=\"", "\" @click=", ">\n </fieldset>\n </form>\n "]); - adhoc_commands_templateObject = function _templateObject() { + adhoc_commands_templateObject = function () { return data; }; @@ -101249,7 +106307,7 @@ const tpl_command_form = (o, command) => { const tpl_command = (o, command) => lit_html_html(adhoc_commands_templateObject3(), o.toggleCommandForm, command.node, command.jid, command.name, command.name, command.name || command.jid, command.node === o.showform ? tpl_command_form(o, command) : ''); async function getAutoCompleteList() { - const models = [...(await converse_core_api.rooms.get()), ...(await converse_core_api.contacts.get())]; + const models = [...(await core_api.rooms.get()), ...(await core_api.contacts.get())]; const jids = [...new Set(models.map(o => adhoc_commands_Strophe.getDomainFromJid(o.get('jid'))))]; return jids; } @@ -101285,7 +106343,7 @@ async function fetchCommandForm(command) { try { var _sizzle$pop; - const iq = await converse_core_api.sendIQ(stanza); + const iq = await core_api.sendIQ(stanza); const cmd_el = sizzle_default()("command[xmlns=\"".concat(adhoc_commands_Strophe.NS.ADHOC, "\"]"), iq).pop(); command.sessionid = cmd_el.getAttribute('sessionid'); command.instructions = (_sizzle$pop = sizzle_default()('x[type="form"][xmlns="jabber:x:data"] instructions', cmd_el).pop()) === null || _sizzle$pop === void 0 ? void 0 : _sizzle$pop.textContent; @@ -101354,14 +106412,14 @@ class adhoc_commands_AdHocCommands extends element_CustomElement { let supported; try { - supported = await converse_core_api.disco.supports(adhoc_commands_Strophe.NS.ADHOC, jid); + supported = await core_api.disco.supports(adhoc_commands_Strophe.NS.ADHOC, jid); } catch (e) { headless_log.error(e); } if (supported) { try { - this.commands = await converse_core_api.adhoc.getCommands(jid); + this.commands = await core_api.adhoc.getCommands(jid); this.view = 'list-commands'; } catch (e) { headless_log.error(e); @@ -101409,394 +106467,159 @@ class adhoc_commands_AdHocCommands extends element_CustomElement { xmlns: adhoc_commands_Strophe.NS.XFORM, type: "submit" }); - config_array.forEach(node => iq.cnode(node).up()); - let result; - - try { - result = await converse_core_api.sendIQ(iq); - } catch (e) { - cmd.alert_type = 'danger'; - cmd.alert = i18n_('Sorry, an error occurred while trying to execute the command. See the developer console for details'); - headless_log.error('Error while trying to execute an ad-hoc command'); - headless_log.error(e); - } - - if (result) { - var _result$querySelector; - - cmd.alert = (_result$querySelector = result.querySelector('note')) === null || _result$querySelector === void 0 ? void 0 : _result$querySelector.textContent; - } else { - cmd.alert = 'Done'; - } - - cmd.alert_type = 'primary'; - this.nonce = adhoc_commands_u.getUniqueId(); - } - -} -converse_core_api.elements.define('converse-adhoc-commands', adhoc_commands_AdHocCommands); -// CONCATENATED MODULE: ./src/templates/user_settings_modal.js -function user_settings_modal_templateObject2() { - const data = user_settings_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"converse-modtools-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n ", "\n\n <div class=\"tab-content\">\n <div class=\"tab-pane tab-pane--columns ", "\"\n id=\"about-tabpanel\" role=\"tabpanel\" aria-labelledby=\"about-tab\">\n\n <span class=\"modal-alert\"></span>\n <br/>\n <div class=\"container\">\n <h6 class=\"brand-heading\">Converse</h6>\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\">", "</p>\n </div>\n </div>\n\n <div class=\"tab-pane tab-pane--columns ", "\"\n id=\"commands-tabpanel\"\n role=\"tabpanel\"\n aria-labelledby=\"commands-tab\">\n <converse-adhoc-commands/>\n </div>\n </div>\n </div>\n </div>\n </div>\n"]); - - user_settings_modal_templateObject2 = function _templateObject2() { - return data; - }; - - return data; -} - -function user_settings_modal_templateObject() { - const data = user_settings_modal_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"about-tab\" href=\"#about-tabpanel\" aria-controls=\"about-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">", "</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"commands-tab\" href=\"#commands-tabpanel\" aria-controls=\"commands-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">", "</a>\n </li>\n </ul>\n "]); - - user_settings_modal_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function user_settings_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - - - - - - -const user_settings_modal_tpl_navigation = o => { - const i18n_about = i18n_('About'); - - const i18n_commands = i18n_('Commands'); - - return lit_html_html(user_settings_modal_templateObject(), o.switchTab, i18n_about, o.switchTab, i18n_commands); -}; - -/* harmony default export */ var user_settings_modal = (o => { - const i18n_modal_title = i18n_('Settings'); - - const first_subtitle = i18n_('%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s', '<a target="_blank" rel="nofollow" href="https://conversejs.org">', '</a>', '<a target="_blank" rel="nofollow" href="https://opkode.com">'); - - const second_subtitle = i18n_('%1$s Translate %2$s it into your own language', '<a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">', '</a>'); - - const show_client_info = converse_core_api.settings.get('show_client_info'); - const allow_adhoc_commands = converse_core_api.settings.get('allow_adhoc_commands'); - const show_both_tabs = show_client_info && allow_adhoc_commands; - return lit_html_html(user_settings_modal_templateObject2(), i18n_modal_title, modal_header_close_button, show_both_tabs ? user_settings_modal_tpl_navigation(o) : '', show_client_info ? 'active' : '', o.version_name, unsafeHTML(xss_default.a.filterXSS(first_subtitle, { - 'whiteList': { - 'a': [] - } - })), unsafeHTML(xss_default.a.filterXSS(second_subtitle, { - 'whiteList': { - 'a': [] - } - })), !show_client_info && allow_adhoc_commands ? 'active' : ''); -}); -// CONCATENATED MODULE: ./src/modals/user-settings.js - - - -let user_settings_converse; - -/* harmony default export */ var modals_user_settings = (BootstrapModal.extend({ - id: "converse-client-info-modal", - - initialize(settings) { - user_settings_converse = settings._converse; - BootstrapModal.prototype.initialize.apply(this, arguments); - }, - - toHTML() { - return user_settings_modal(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { - 'version_name': user_settings_converse.VERSION_NAME - })); - } - -})); -// CONCATENATED MODULE: ./src/templates/chat_status_modal.js -function chat_status_modal_templateObject() { - const data = chat_status_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"changeStatusModalLabel\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <form class=\"converse-form set-xmpp-status\" id=\"set-xmpp-status\">\n <div class=\"form-group\">\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-online\" value=\"online\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-online\">\n <span class=\"fa fa-circle chat-status chat-status--online\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-busy\" value=\"dnd\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-busy\">\n <span class=\"fa fa-minus-circle chat-status chat-status--busy\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-away\" value=\"away\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-away\">\n <span class=\"fa fa-circle chat-status chat-status--away\"></span>", "</label>\n </div>\n <div class=\"custom-control custom-radio\">\n <input ?checked=", "\n type=\"radio\" id=\"radio-xa\" value=\"xa\" name=\"chat_status\" class=\"custom-control-input\"/>\n <label class=\"custom-control-label\" for=\"radio-xa\">\n <span class=\"far fa-circle chat-status chat-status--xa\"></span>", "</label>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"btn-group w-100\">\n <input name=\"status_message\" type=\"text\" class=\"form-control\"\n value=\"", "\" placeholder=\"", "\"/>\n <span class=\"clear-input fa fa-times ", "\"></span>\n </div>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </form>\n </div>\n </div>\n </div>\n"]); - - chat_status_modal_templateObject = function _templateObject() { - return data; - }; - - return data; -} - -function chat_status_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - -/* harmony default export */ var chat_status_modal = (o => lit_html_html(chat_status_modal_templateObject(), o.modal_title, modal_header_close_button, o.status === 'online', o.label_online, o.status === 'busy', o.label_busy, o.status === 'away', o.label_away, o.status === 'xa', o.label_xa, o.status_message || '', o.placeholder_status_message, o.status_message ? '' : 'hidden', o.label_save)); -// CONCATENATED MODULE: ./src/templates/profile.js -function profile_templateObject3() { - const data = profile_taggedTemplateLiteral(["<a class=\"controlbox-heading__btn logout fa fa-sign-out-alt align-self-center\" title=\"", "\"></a>"]); + config_array.forEach(node => iq.cnode(node).up()); + let result; - profile_templateObject3 = function _templateObject3() { - return data; - }; + try { + result = await core_api.sendIQ(iq); + } catch (e) { + cmd.alert_type = 'danger'; + cmd.alert = i18n_('Sorry, an error occurred while trying to execute the command. See the developer console for details'); + headless_log.error('Error while trying to execute an ad-hoc command'); + headless_log.error(e); + } - return data; -} + if (result) { + var _result$querySelector; -function profile_templateObject2() { - const data = profile_taggedTemplateLiteral(["<a class=\"controlbox-heading__btn show-client-info fa fa-cog align-self-center\" title=\"", "\" @click=", "></a>"]); + cmd.alert = (_result$querySelector = result.querySelector('note')) === null || _result$querySelector === void 0 ? void 0 : _result$querySelector.textContent; + } else { + cmd.alert = 'Done'; + } - profile_templateObject2 = function _templateObject2() { - return data; - }; + cmd.alert_type = 'primary'; + this.nonce = adhoc_commands_u.getUniqueId(); + } - return data; } +core_api.elements.define('converse-adhoc-commands', adhoc_commands_AdHocCommands); +// CONCATENATED MODULE: ./src/modals/templates/user-settings.js +function user_settings_templateObject2() { + const data = user_settings_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"converse-modtools-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n ", "\n\n <div class=\"tab-content\">\n <div class=\"tab-pane tab-pane--columns ", "\"\n id=\"about-tabpanel\" role=\"tabpanel\" aria-labelledby=\"about-tab\">\n\n <span class=\"modal-alert\"></span>\n <br/>\n <div class=\"container\">\n <h6 class=\"brand-heading\">Converse</h6>\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\">", "</p>\n <p class=\"brand-subtitle\">", "</p>\n </div>\n </div>\n\n <div class=\"tab-pane tab-pane--columns ", "\"\n id=\"commands-tabpanel\"\n role=\"tabpanel\"\n aria-labelledby=\"commands-tab\">\n <converse-adhoc-commands/>\n </div>\n </div>\n </div>\n </div>\n </div>\n"]); -function profile_templateObject() { - const data = profile_taggedTemplateLiteral(["\n <div class=\"userinfo controlbox-padded\">\n <div class=\"controlbox-section profile d-flex\">\n <a class=\"show-profile\" href=\"#\">\n <canvas class=\"avatar align-self-center\" height=\"40\" width=\"40\"></canvas>\n </a>\n <span class=\"username w-100 align-self-center\">", "</span>\n ", "\n ", "\n </div>\n <div class=\"d-flex xmpp-status\">\n <a class=\"change-status\" title=\"", "\" data-toggle=\"modal\" data-target=\"#changeStatusModal\">\n <span class=\"", " w-100 align-self-center\" data-value=\"", "\">\n <span class=\"\n ", "\n ", "\n ", "\n ", "\n ", "\"></span> ", "</span>\n </a>\n </div>\n </div>\n"]); - - profile_templateObject = function _templateObject() { + user_settings_templateObject2 = function () { return data; }; return data; } -function profile_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - +function user_settings_templateObject() { + const data = user_settings_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"about-tab\" href=\"#about-tabpanel\" aria-controls=\"about-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">", "</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"commands-tab\" href=\"#commands-tabpanel\" aria-controls=\"commands-tabpanel\" role=\"tab\" data-toggle=\"tab\" @click=", ">", "</a>\n </li>\n </ul>\n "]); -/* harmony default export */ var profile = (o => { - const i18n_logout = i18n_('Log out'); - - const i18n_change_status = i18n_('Click to change your chat status'); - - const i18n_details = i18n_('Show details about this chat client'); - - const show_settings_button = converse_core_api.settings.get('show_client_info') || converse_core_api.settings.get('allow_adhoc_commands'); - return lit_html_html(profile_templateObject(), o.fullname, show_settings_button ? lit_html_html(profile_templateObject2(), i18n_details, o.showUserSettingsModal) : '', converse_core_api.settings.get('allow_logout') ? lit_html_html(profile_templateObject3(), i18n_logout) : '', i18n_change_status, o.chat_status, o.chat_status, o.chat_status === 'online' && 'fa fa-circle chat-status chat-status--online', o.chat_status === 'dnd' && 'fa fa-minus-circle chat-status chat-status--busy', o.chat_status === 'away' && 'fa fa-circle chat-status chat-status--away', o.chat_status === 'xa' && 'far fa-circle chat-status chat-status--xa ', o.chat_status === 'offline' && 'fa fa-circle chat-status chat-status--offline', o.status_message); -}); -// CONCATENATED MODULE: ./src/components/image_picker.js -function image_picker_templateObject() { - const data = image_picker_taggedTemplateLiteral(["\n <a class=\"change-avatar\" @click=", " title=\"", "\">\n ", "\n </a>\n <input @change=", " class=\"hidden\" name=\"image\" type=\"file\"/>\n "]); - - image_picker_templateObject = function _templateObject() { + user_settings_templateObject = function () { return data; }; return data; } -function image_picker_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - +function user_settings_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -const i18n_alt_avatar = i18n_('Your avatar image'); - -class image_picker_ImagePicker extends element_CustomElement { - static get properties() { - return { - 'height': { - type: Number - }, - 'image': { - type: String - }, - 'width': { - type: Number - } - }; - } - - render() { - const avatar_data = { - 'height': this.height, - 'image': this.image, - 'width': this.width - }; - return lit_html_html(image_picker_templateObject(), this.openFileSelection, i18n_alt_avatar, renderAvatar(avatar_data), this.updateFilePreview); - } - - openFileSelection(ev) { - ev.preventDefault(); - this.querySelector('input[type="file"]').click(); - } - - updateFilePreview(ev) { - const file = ev.target.files[0]; - const reader = new FileReader(); - reader.onloadend = () => this.image = reader.result; - reader.readAsDataURL(file); - } -} -converse_core_api.elements.define('converse-image-picker', image_picker_ImagePicker); -// CONCATENATED MODULE: ./src/templates/profile_modal.js -function profile_modal_templateObject8() { - const data = profile_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"user-profile-modal-label\">", "</h5>\n ", "\n </div>\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n ", "\n <div class=\"tab-content\">\n <div class=\"tab-pane active\" id=\"profile-tabpanel\" role=\"tabpanel\" aria-labelledby=\"profile-tab\">\n <form class=\"converse-form converse-form--modal profile-form\" action=\"#\">\n <div class=\"row\">\n <div class=\"col-auto\">\n <converse-image-picker image=\"", "\" width=\"", "\" height=\"", "\"></converse-image-picker>\n </div>\n <div class=\"col\">\n <div class=\"form-group\">\n <label class=\"col-form-label\">", ":</label>\n <div>", "</div>\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-fullname\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-fullname\" type=\"text\" class=\"form-control\" name=\"fn\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-nickname\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-nickname\" type=\"text\" class=\"form-control\" name=\"nickname\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-url\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-url\" type=\"url\" class=\"form-control\" name=\"url\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-email\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-email\" type=\"email\" class=\"form-control\" name=\"email\" value=\"", "\"/>\n </div>\n <div class=\"form-group\">\n <label for=\"vcard-role\" class=\"col-form-label\">", ":</label>\n <input id=\"vcard-role\" type=\"text\" class=\"form-control\" name=\"role\" value=\"", "\" aria-describedby=\"vcard-role-help\"/>\n <small id=\"vcard-role-help\" class=\"form-text text-muted\">", "</small>\n </div>\n <hr/>\n <div class=\"form-group\">\n <button type=\"submit\" class=\"save-form btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n ", "\n </div>\n </div>\n </div>\n </div>\n "]); - profile_modal_templateObject8 = function _templateObject8() { - return data; - }; - return data; -} +const user_settings_tpl_navigation = o => { + const i18n_about = i18n_('About'); -function profile_modal_templateObject7() { - const data = profile_modal_taggedTemplateLiteral(["\n <ul class=\"nav nav-pills justify-content-center\">\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link active\" id=\"profile-tab\" href=\"#profile-tabpanel\" aria-controls=\"profile-tabpanel\" role=\"tab\" data-toggle=\"tab\">", "</a>\n </li>\n <li role=\"presentation\" class=\"nav-item\">\n <a class=\"nav-link\" id=\"omemo-tab\" href=\"#omemo-tabpanel\" aria-controls=\"omemo-tabpanel\" role=\"tab\" data-toggle=\"tab\">", "</a>\n </li>\n </ul>"]); + const i18n_commands = i18n_('Commands'); - profile_modal_templateObject7 = function _templateObject7() { - return data; - }; + return lit_html_html(user_settings_templateObject(), o.switchTab, i18n_about, o.switchTab, i18n_commands); +}; - return data; -} +/* harmony default export */ var templates_user_settings = (o => { + const i18n_modal_title = i18n_('Settings'); -function profile_modal_templateObject6() { - const data = profile_modal_taggedTemplateLiteral(["\n <div class=\"tab-pane\" id=\"omemo-tabpanel\" role=\"tabpanel\" aria-labelledby=\"omemo-tab\">\n <form class=\"converse-form fingerprint-removal\">\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item active\">", "</li>\n <li class=\"list-group-item\">\n ", "\n </li>\n </ul>\n <div class=\"form-group\">\n <button type=\"button\" class=\"generate-bundle btn btn-danger\">", "</button>\n </div>\n ", "\n </form>\n </div>"]); + const first_subtitle = i18n_('%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s', '<a target="_blank" rel="nofollow" href="https://conversejs.org">', '</a>', '<a target="_blank" rel="nofollow" href="https://opkode.com">'); - profile_modal_templateObject6 = function _templateObject6() { - return data; - }; + const second_subtitle = i18n_('%1$s Translate %2$s it into your own language', '<a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">', '</a>'); - return data; -} + const show_client_info = core_api.settings.get('show_client_info'); + const allow_adhoc_commands = core_api.settings.get('allow_adhoc_commands'); + const show_both_tabs = show_client_info && allow_adhoc_commands; + return lit_html_html(user_settings_templateObject2(), i18n_modal_title, modal_header_close_button, show_both_tabs ? user_settings_tpl_navigation(o) : '', show_client_info ? 'active' : '', o.version_name, unsafeHTML(xss_default.a.filterXSS(first_subtitle, { + 'whiteList': { + 'a': [] + } + })), unsafeHTML(xss_default.a.filterXSS(second_subtitle, { + 'whiteList': { + 'a': [] + } + })), !show_client_info && allow_adhoc_commands ? 'active' : ''); +}); +// CONCATENATED MODULE: ./src/modals/user-settings.js -function profile_modal_templateObject5() { - const data = profile_modal_taggedTemplateLiteral(["\n <ul class=\"list-group fingerprints\">\n <li class=\"list-group-item nopadding active\">\n <label>\n <input type=\"checkbox\" class=\"select-all\" title=\"", "\" aria-label=\"", "\"/>\n ", "\n </label>\n </li>\n ", "\n </ul>\n <div class=\"form-group\"><button type=\"submit\" class=\"save-form btn btn-primary\">", "</button></div>\n "]); - profile_modal_templateObject5 = function _templateObject5() { - return data; - }; - return data; -} +let user_settings_converse; -function profile_modal_templateObject4() { - const data = profile_modal_taggedTemplateLiteral(["\n ", "\n"]); +/* harmony default export */ var modals_user_settings = (modals_base.extend({ + id: "converse-client-info-modal", - profile_modal_templateObject4 = function _templateObject4() { - return data; - }; + initialize(settings) { + user_settings_converse = settings._converse; + modals_base.prototype.initialize.apply(this, arguments); + }, - return data; -} + toHTML() { + return templates_user_settings(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { + 'version_name': user_settings_converse.VERSION_NAME + })); + } -function profile_modal_templateObject3() { - const data = profile_modal_taggedTemplateLiteral(["\n <li class=\"fingerprint-removal-item list-group-item nopadding\">\n <label>\n <input type=\"checkbox\" value=\"", "\"\n aria-label=\"", "\"/>\n <span>", "</span>\n </label>\n </li>\n "]); +})); +// CONCATENATED MODULE: ./src/templates/profile.js +function templates_profile_templateObject3() { + const data = templates_profile_taggedTemplateLiteral(["<a class=\"controlbox-heading__btn logout fa fa-sign-out-alt align-self-center\" title=\"", "\"></a>"]); - profile_modal_templateObject3 = function _templateObject3() { + templates_profile_templateObject3 = function () { return data; }; return data; } -function profile_modal_templateObject2() { - const data = profile_modal_taggedTemplateLiteral(["\n <li class=\"fingerprint-removal-item list-group-item nopadding\">\n <label>\n <input type=\"checkbox\" value=\"", "\"\n aria-label=\"", "\"/>\n <span class=\"fingerprint\">", "</span>\n </label>\n </li>\n "]); +function templates_profile_templateObject2() { + const data = templates_profile_taggedTemplateLiteral(["<a class=\"controlbox-heading__btn show-client-info fa fa-cog align-self-center\" title=\"", "\" @click=", "></a>"]); - profile_modal_templateObject2 = function _templateObject2() { + templates_profile_templateObject2 = function () { return data; }; return data; } -function profile_modal_templateObject() { - const data = profile_modal_taggedTemplateLiteral(["\n <span class=\"fingerprint\">", "</span>"]); +function templates_profile_templateObject() { + const data = templates_profile_taggedTemplateLiteral(["\n <div class=\"userinfo controlbox-padded\">\n <div class=\"controlbox-section profile d-flex\">\n <a class=\"show-profile\" href=\"#\">\n <canvas class=\"avatar align-self-center\" height=\"40\" width=\"40\"></canvas>\n </a>\n <span class=\"username w-100 align-self-center\">", "</span>\n ", "\n ", "\n </div>\n <div class=\"d-flex xmpp-status\">\n <a class=\"change-status\" title=\"", "\" data-toggle=\"modal\" data-target=\"#changeStatusModal\">\n <span class=\"", " w-100 align-self-center\" data-value=\"", "\">\n <span class=\"\n ", "\n ", "\n ", "\n ", "\n ", "\"></span> ", "</span>\n </a>\n </div>\n </div>\n"]); - profile_modal_templateObject = function _templateObject() { + templates_profile_templateObject = function () { return data; }; return data; } -function profile_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - - - - - - - -const profile_modal_u = converse.env.utils; - -const fingerprint = o => lit_html_html(profile_modal_templateObject(), profile_modal_u.formatFingerprint(o.view.current_device.get('bundle').fingerprint)); - -const device_with_fingerprint = o => { - const i18n_fingerprint_checkbox_label = i18n_('Checkbox for selecting the following fingerprint'); - - return lit_html_html(profile_modal_templateObject2(), o.device.get('id'), i18n_fingerprint_checkbox_label, profile_modal_u.formatFingerprint(o.device.get('bundle').fingerprint)); -}; - -const device_without_fingerprint = o => { - const i18n_device_without_fingerprint = i18n_('Device without a fingerprint'); - - const i18n_fingerprint_checkbox_label = i18n_('Checkbox for selecting the following device'); - - return lit_html_html(profile_modal_templateObject3(), o.device.get('id'), i18n_fingerprint_checkbox_label, i18n_device_without_fingerprint); -}; - -const device_item = o => lit_html_html(profile_modal_templateObject4(), o.device.get('bundle') && o.device.get('bundle').fingerprint ? device_with_fingerprint(o) : device_without_fingerprint(o)); - -const device_list = o => { - const i18n_other_devices = i18n_('Other OMEMO-enabled devices'); - - const i18n_other_devices_label = i18n_('Checkbox to select fingerprints of all other OMEMO devices'); - - const i18n_remove_devices = i18n_('Remove checked devices and close'); - - const i18n_select_all = i18n_('Select all'); - - return lit_html_html(profile_modal_templateObject5(), i18n_select_all, i18n_other_devices_label, i18n_other_devices, o.view.other_devices.map(device => device_item(Object.assign({ - device - }, o))), i18n_remove_devices); -}; // TODO: this needs to go as a component into the OMEMO plugin folder - - -const omemo_page = o => { - const i18n_fingerprint = i18n_("This device's OMEMO fingerprint"); - - const i18n_generate = i18n_('Generate new keys and fingerprint'); - - return lit_html_html(profile_modal_templateObject6(), i18n_fingerprint, o.view.current_device && o.view.current_device.get('bundle') && o.view.current_device.get('bundle').fingerprint ? fingerprint(o) : spinner(), i18n_generate, o.view.other_devices.length ? device_list(o) : ''); -}; - -/* harmony default export */ var profile_modal = (o => { - const heading_profile = i18n_('Your Profile'); - - const i18n_email = i18n_('Email'); - - const i18n_fullname = i18n_('Full Name'); - - const i18n_jid = i18n_('XMPP Address (JID)'); - - const i18n_nickname = i18n_('Nickname'); +function templates_profile_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - const i18n_role = i18n_('Role'); - const i18n_save = i18n_('Save and close'); - const i18n_role_help = i18n_('Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.'); - const i18n_url = i18n_('URL'); +/* harmony default export */ var templates_profile = (o => { + const i18n_logout = i18n_('Log out'); - const i18n_omemo = i18n_('OMEMO'); + const i18n_change_status = i18n_('Click to change your chat status'); - const i18n_profile = i18n_('Profile'); + const i18n_details = i18n_('Show details about this chat client'); - const navigation = lit_html_html(profile_modal_templateObject7(), i18n_profile, i18n_omemo); - return lit_html_html(profile_modal_templateObject8(), heading_profile, modal_header_close_button, converse_core_converse.pluggable.plugins['converse-omemo'].enabled(converse_core_converse) && navigation, o.image, o.width, o.height, i18n_jid, o.jid, i18n_fullname, o.fullname || '', i18n_nickname, o.nickname || '', i18n_url, o.url || '', i18n_email, o.email || '', i18n_role, o.role || '', i18n_role_help, i18n_save, converse_core_converse.pluggable.plugins['converse-omemo'].enabled(converse_core_converse) && omemo_page(o)); + const show_settings_button = core_api.settings.get('show_client_info') || core_api.settings.get('allow_adhoc_commands'); + return lit_html_html(templates_profile_templateObject(), o.fullname, show_settings_button ? lit_html_html(templates_profile_templateObject2(), i18n_details, o.showUserSettingsModal) : '', core_api.settings.get('allow_logout') ? lit_html_html(templates_profile_templateObject3(), i18n_logout) : '', i18n_change_status, o.chat_status, o.chat_status, o.chat_status === 'online' && 'fa fa-circle chat-status chat-status--online', o.chat_status === 'dnd' && 'fa fa-minus-circle chat-status chat-status--busy', o.chat_status === 'away' && 'fa fa-circle chat-status chat-status--away', o.chat_status === 'xa' && 'far fa-circle chat-status chat-status--xa ', o.chat_status === 'offline' && 'fa fa-circle chat-status chat-status--offline', o.status_message); }); -// CONCATENATED MODULE: ./src/converse-profile.js +// CONCATENATED MODULE: ./src/plugins/profile.js /** * @module converse-profile * @copyright The Converse.js contributors @@ -101811,11 +106634,6 @@ const omemo_page = o => { - - - - -const converse_profile_u = converse.env.utils; converse.plugins.add('converse-profile', { dependencies: ["converse-status", "converse-modal", "converse-vcard", "converse-chatboxviews"], @@ -101823,146 +106641,11 @@ converse.plugins.add('converse-profile', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'allow_adhoc_commands': true, 'show_client_info': true }); - converse_core_converse.ProfileModal = BootstrapModal.extend({ - id: "user-profile-modal", - events: { - 'submit .profile-form': 'onFormSubmitted' - }, - - initialize() { - this.listenTo(this.model, 'change', this.render); - BootstrapModal.prototype.initialize.apply(this, arguments); - /** - * Triggered when the _converse.ProfileModal has been created and initialized. - * @event _converse#profileModalInitialized - * @type { _converse.XMPPStatus } - * @example _converse.api.listen.on('profileModalInitialized', status => { ... }); - */ - - converse_core_api.trigger('profileModalInitialized', this.model); - }, - - toHTML() { - return profile_modal(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), this.getAvatarData(), { - 'view': this - })); - }, - - getAvatarData() { - const image_type = this.model.vcard.get('image_type'); - const image_data = this.model.vcard.get('image'); - const image = "data:" + image_type + ";base64," + image_data; - return { - 'height': 128, - 'width': 128, - image - }; - }, - - afterRender() { - this.tabs = sizzle_default()('.nav-item .nav-link', this.el).map(e => new bootstrap_native_default.a.Tab(e)); - }, - - async setVCard(data) { - try { - await converse_core_api.vcard.set(converse_core_converse.bare_jid, data); - } catch (err) { - headless_log.fatal(err); - this.alert([i18n_("Sorry, an error happened while trying to save your profile data."), i18n_("You can check your browser's developer console for any error output.")].join(" ")); - return; - } - - this.modal.hide(); - }, - - onFormSubmitted(ev) { - ev.preventDefault(); - const reader = new FileReader(); - const form_data = new FormData(ev.target); - const image_file = form_data.get('image'); - const data = { - 'fn': form_data.get('fn'), - 'nickname': form_data.get('nickname'), - 'role': form_data.get('role'), - 'email': form_data.get('email'), - 'url': form_data.get('url') - }; - - if (!image_file.size) { - Object.assign(data, { - 'image': this.model.vcard.get('image'), - 'image_type': this.model.vcard.get('image_type') - }); - this.setVCard(data); - } else { - reader.onloadend = () => { - Object.assign(data, { - 'image': btoa(reader.result), - 'image_type': image_file.type - }); - this.setVCard(data); - }; - - reader.readAsBinaryString(image_file); - } - } - - }); - converse_core_converse.ChatStatusModal = BootstrapModal.extend({ - id: "modal-status-change", - events: { - "submit form#set-xmpp-status": "onFormSubmitted", - "click .clear-input": "clearStatusMessage" - }, - - toHTML() { - return chat_status_modal(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { - 'label_away': i18n_('Away'), - 'label_busy': i18n_('Busy'), - 'label_cancel': i18n_('Cancel'), - 'label_close': i18n_('Close'), - 'label_custom_status': i18n_('Custom status'), - 'label_offline': i18n_('Offline'), - 'label_online': i18n_('Online'), - 'label_save': i18n_('Save'), - 'label_xa': i18n_('Away for long'), - 'modal_title': i18n_('Change chat status'), - 'placeholder_status_message': i18n_('Personal status message') - })); - }, - - afterRender() { - this.el.addEventListener('shown.bs.modal', () => { - this.el.querySelector('input[name="status_message"]').focus(); - }, false); - }, - - clearStatusMessage(ev) { - if (ev && ev.preventDefault) { - ev.preventDefault(); - converse_profile_u.hideElement(this.el.querySelector('.clear-input')); - } - - const roster_filter = this.el.querySelector('input[name="status_message"]'); - roster_filter.value = ''; - }, - - onFormSubmitted(ev) { - ev.preventDefault(); - const data = new FormData(ev.target); - this.model.save({ - 'status_message': data.get('status_message'), - 'status': data.get('chat_status') - }); - this.modal.hide(); - } - - }); - converse_core_converse.XMPPStatusView = converse_core_converse.ViewWithAvatar.extend({ + core_converse.XMPPStatusView = core_converse.ViewWithAvatar.extend({ tagName: "div", events: { "click a.show-profile": "showProfileModal", @@ -101977,9 +106660,9 @@ converse.plugins.add('converse-profile', { toHTML() { const chat_status = this.model.get('status') || 'offline'; - return profile(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { + return templates_profile(Object.assign(this.model.toJSON(), this.model.vcard.toJSON(), { chat_status, - 'fullname': this.model.vcard.get('fullname') || converse_core_converse.bare_jid, + 'fullname': this.model.vcard.get('fullname') || core_converse.bare_jid, "showUserSettingsModal": ev => this.showUserSettingsModal(ev), 'status_message': this.model.get('status_message') || i18n_("I am %1$s", this.getPrettyStatus(chat_status)) })); @@ -101991,39 +106674,24 @@ converse.plugins.add('converse-profile', { showProfileModal(ev) { ev.preventDefault(); - - if (this.profile_modal === undefined) { - this.profile_modal = new converse_core_converse.ProfileModal({ - model: this.model - }); - } - - this.profile_modal.show(ev); + core_api.modal.show(core_converse.ProfileModal, { + model: this.model + }, ev); }, showStatusChangeModal(ev) { ev.preventDefault(); - - if (this.status_modal === undefined) { - this.status_modal = new converse_core_converse.ChatStatusModal({ - model: this.model - }); - } - - this.status_modal.show(ev); + core_api.modal.show(core_converse.ChatStatusModal, { + model: this.model + }, ev); }, showUserSettingsModal(ev) { ev.preventDefault(); - - if (this.user_settings_modal === undefined) { - this.user_settings_modal = new modals_user_settings({ - model: this.model, - _converse: converse_core_converse - }); - } - - this.user_settings_modal.show(ev); + core_api.modal.show(modals_user_settings, { + model: this.model, + _converse: core_converse + }, ev); }, logOut(ev) { @@ -102031,7 +106699,7 @@ converse.plugins.add('converse-profile', { const result = confirm(i18n_("Are you sure you want to log out?")); if (result === true) { - converse_core_api.user.logout(); + core_api.user.logout(); } }, @@ -102054,12 +106722,12 @@ converse.plugins.add('converse-profile', { }); /******************** Event Handlers ********************/ - converse_core_api.listen.on('controlBoxPaneInitialized', async view => { - await converse_core_api.waitUntil('VCardsInitialized'); - converse_core_converse.xmppstatusview = new converse_core_converse.XMPPStatusView({ - 'model': converse_core_converse.xmppstatus + core_api.listen.on('controlBoxPaneInitialized', async view => { + await core_api.waitUntil('VCardsInitialized'); + core_converse.xmppstatusview = new core_converse.XMPPStatusView({ + 'model': core_converse.xmppstatus }); - view.el.insertAdjacentElement('afterBegin', converse_core_converse.xmppstatusview.render().el); + view.el.insertAdjacentElement('afterBegin', core_converse.xmppstatusview.render().el); }); } @@ -102219,18 +106887,18 @@ var range = _createRange(); /* harmony default export */ var lodash_es_range = (range); -// CONCATENATED MODULE: ./src/converse-omemo.js -function converse_omemo_templateObject() { - const data = converse_omemo_taggedTemplateLiteral(["\n <button class=\"toggle-omemo\"\n title=\"", "\"\n ?disabled=", "\n @click=", ">\n <converse-icon class=\"fa ", "\"\n path-prefix=\"", "\" size=\"1em\"\n color=\"", "\"\n ></converse-icon>\n </button>"]); +// CONCATENATED MODULE: ./src/plugins/omemo.js +function omemo_templateObject() { + const data = omemo_taggedTemplateLiteral(["\n <button class=\"toggle-omemo\"\n title=\"", "\"\n ?disabled=", "\n @click=", ">\n <converse-icon class=\"fa ", "\"\n path-prefix=\"", "\" size=\"1em\"\n color=\"", "\"\n ></converse-icon>\n </button>"]); - converse_omemo_templateObject = function _templateObject() { + omemo_templateObject = function () { return data; }; return data; } -function converse_omemo_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function omemo_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } /** * @module converse-omemo @@ -102247,18 +106915,19 @@ function converse_omemo_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = + const { - Strophe: converse_omemo_Strophe, - sizzle: converse_omemo_sizzle, - $build: converse_omemo_$build, - $iq: converse_omemo_$iq, - $msg: converse_omemo_$msg + Strophe: omemo_Strophe, + sizzle: omemo_sizzle, + $build: omemo_$build, + $iq: omemo_$iq, + $msg: omemo_$msg } = converse.env; -const converse_omemo_u = converse.env.utils; -converse_omemo_Strophe.addNamespace('OMEMO_DEVICELIST', converse_omemo_Strophe.NS.OMEMO + ".devicelist"); -converse_omemo_Strophe.addNamespace('OMEMO_VERIFICATION', converse_omemo_Strophe.NS.OMEMO + ".verification"); -converse_omemo_Strophe.addNamespace('OMEMO_WHITELISTED', converse_omemo_Strophe.NS.OMEMO + ".whitelisted"); -converse_omemo_Strophe.addNamespace('OMEMO_BUNDLES', converse_omemo_Strophe.NS.OMEMO + ".bundles"); +const omemo_u = converse.env.utils; +omemo_Strophe.addNamespace('OMEMO_DEVICELIST', omemo_Strophe.NS.OMEMO + ".devicelist"); +omemo_Strophe.addNamespace('OMEMO_VERIFICATION', omemo_Strophe.NS.OMEMO + ".verification"); +omemo_Strophe.addNamespace('OMEMO_WHITELISTED', omemo_Strophe.NS.OMEMO + ".whitelisted"); +omemo_Strophe.addNamespace('OMEMO_BUNDLES', omemo_Strophe.NS.OMEMO + ".bundles"); const UNDECIDED = 0; const TRUSTED = 1; // eslint-disable-line no-unused-vars @@ -102278,6 +106947,52 @@ class IQError extends Error { } +function parseEncryptedMessage(stanza, attrs) { + if (attrs.is_encrypted && attrs.encrypted.key) { + // https://xmpp.org/extensions/xep-0384.html#usecases-receiving + if (attrs.encrypted.prekey === true) { + return decryptPrekeyWhisperMessage(attrs); + } else { + return decryptWhisperMessage(attrs); + } + } else { + return attrs; + } +} + +function onChatBoxesInitialized() { + core_converse.chatboxes.on('add', chatbox => { + checkOMEMOSupported(chatbox); + + if (chatbox.get('type') === core_converse.CHATROOMS_TYPE) { + chatbox.occupants.on('add', o => onOccupantAdded(chatbox, o)); + chatbox.features.on('change', () => checkOMEMOSupported(chatbox)); + } + }); +} + +function onChatInitialized(view) { + view.listenTo(view.model.messages, 'add', message => { + if (message.get('is_encrypted') && !message.get('is_error')) { + view.model.save('omemo_supported', true); + } + }); + view.listenTo(view.model, 'change:omemo_supported', () => { + if (!view.model.get('omemo_supported') && view.model.get('omemo_active')) { + view.model.set('omemo_active', false); + } else { + var _view$el$querySelecto; + + // Manually trigger an update, setting omemo_active to + // false above will automatically trigger one. + (_view$el$querySelecto = view.el.querySelector('converse-chat-toolbar')) === null || _view$el$querySelecto === void 0 ? void 0 : _view$el$querySelecto.requestUpdate(); + } + }); + view.listenTo(view.model, 'change:omemo_active', () => { + view.el.querySelector('converse-chat-toolbar').requestUpdate(); + }); +} + const omemo = converse.env.omemo = { async encryptMessage(plaintext) { // The client MUST use fresh, randomly generated key/IV pairs @@ -102296,7 +107011,7 @@ const omemo = converse.env.omemo = { 'iv': iv, 'tagLength': TAG_LENGTH }, - encrypted = await crypto.subtle.encrypt(algo, key, converse_omemo_u.stringToArrayBuffer(plaintext)), + encrypted = await crypto.subtle.encrypt(algo, key, omemo_u.stringToArrayBuffer(plaintext)), length = encrypted.byteLength - (128 + 7 >> 3), ciphertext = encrypted.slice(0, length), tag = encrypted.slice(length), @@ -102304,34 +107019,34 @@ const omemo = converse.env.omemo = { return { 'key': exported_key, 'tag': tag, - 'key_and_tag': converse_omemo_u.appendArrayBuffer(exported_key, tag), - 'payload': converse_omemo_u.arrayBufferToBase64(ciphertext), - 'iv': converse_omemo_u.arrayBufferToBase64(iv) + 'key_and_tag': omemo_u.appendArrayBuffer(exported_key, tag), + 'payload': omemo_u.arrayBufferToBase64(ciphertext), + 'iv': omemo_u.arrayBufferToBase64(iv) }; }, async decryptMessage(obj) { const key_obj = await crypto.subtle.importKey('raw', obj.key, KEY_ALGO, true, ['encrypt', 'decrypt']); - const cipher = converse_omemo_u.appendArrayBuffer(converse_omemo_u.base64ToArrayBuffer(obj.payload), obj.tag); + const cipher = omemo_u.appendArrayBuffer(omemo_u.base64ToArrayBuffer(obj.payload), obj.tag); const algo = { 'name': "AES-GCM", - 'iv': converse_omemo_u.base64ToArrayBuffer(obj.iv), + 'iv': omemo_u.base64ToArrayBuffer(obj.iv), 'tagLength': TAG_LENGTH }; - return converse_omemo_u.arrayBufferToString(await crypto.subtle.decrypt(algo, key_obj, cipher)); + return omemo_u.arrayBufferToString(await crypto.subtle.decrypt(algo, key_obj, cipher)); } }; function getSessionCipher(jid, id) { const address = new libsignal.SignalProtocolAddress(jid, id); - return new window.libsignal.SessionCipher(converse_core_converse.omemo_store, address); + return new window.libsignal.SessionCipher(core_converse.omemo_store, address); } async function handleDecryptedWhisperMessage(attrs, key_and_tag) { const encrypted = attrs.encrypted; - const devicelist = converse_core_converse.devicelists.getDeviceList(attrs.from); + const devicelist = core_converse.devicelists.getDeviceList(attrs.from); await devicelist._devices_promise; let device = devicelist.get(encrypted.device_id); @@ -102358,7 +107073,7 @@ async function handleDecryptedWhisperMessage(attrs, key_and_tag) { } function getDecryptionErrorAttributes(e) { - if (converse_core_api.settings.get("loglevel") === 'debug') { + if (core_api.settings.get("loglevel") === 'debug') { return { 'error_text': i18n_("Sorry, could not decrypt a received OMEMO message due to an error.") + " ".concat(e.name, " ").concat(e.message), 'error_type': 'Decryption', @@ -102373,7 +107088,7 @@ function getDecryptionErrorAttributes(e) { async function decryptPrekeyWhisperMessage(attrs) { const session_cipher = getSessionCipher(attrs.from, parseInt(attrs.encrypted.device_id, 10)); - const key = converse_omemo_u.base64ToArrayBuffer(attrs.encrypted.key); + const key = omemo_u.base64ToArrayBuffer(attrs.encrypted.key); let key_and_tag; try { @@ -102407,8 +107122,8 @@ async function decryptPrekeyWhisperMessage(attrs) { try { const plaintext = await handleDecryptedWhisperMessage(attrs, key_and_tag); - await converse_core_converse.omemo_store.generateMissingPreKeys(); - await converse_core_converse.omemo_store.publishBundle(); + await core_converse.omemo_store.generateMissingPreKeys(); + await core_converse.omemo_store.publishBundle(); if (plaintext) { return Object.assign(attrs, { @@ -102439,7 +107154,7 @@ async function decryptWhisperMessage(attrs) { } const session_cipher = getSessionCipher(from_jid, parseInt(attrs.encrypted.device_id, 10)); - const key = converse_omemo_u.base64ToArrayBuffer(attrs.encrypted.key); + const key = omemo_u.base64ToArrayBuffer(attrs.encrypted.key); try { const key_and_tag = await session_cipher.decryptWhisperMessage(key, 'binary'); @@ -102486,7 +107201,7 @@ function parseBundle(bundle_el) { */ const signed_prekey_public_el = bundle_el.querySelector('signedPreKeyPublic'); const signed_prekey_signature_el = bundle_el.querySelector('signedPreKeySignature'); - const prekeys = converse_omemo_sizzle("prekeys > preKeyPublic", bundle_el).map(el => ({ + const prekeys = omemo_sizzle("prekeys > preKeyPublic", bundle_el).map(el => ({ 'id': parseInt(el.getAttribute('preKeyId'), 10), 'key': el.textContent })); @@ -102509,15 +107224,15 @@ async function generateFingerprint(device) { } const bundle = await device.getBundle(); - bundle['fingerprint'] = converse_omemo_u.arrayBufferToHex(converse_omemo_u.base64ToArrayBuffer(bundle['identity_key'])); + bundle['fingerprint'] = omemo_u.arrayBufferToHex(omemo_u.base64ToArrayBuffer(bundle['identity_key'])); device.save('bundle', bundle); device.trigger('change:bundle'); // Doesn't get triggered automatically due to pass-by-reference } async function getDevicesForContact(jid) { - await converse_core_api.waitUntil('OMEMOInitialized'); + await core_api.waitUntil('OMEMOInitialized'); - const devicelist = converse_core_converse.devicelists.get(jid) || converse_core_converse.devicelists.create({ + const devicelist = core_converse.devicelists.get(jid) || core_converse.devicelists.create({ 'jid': jid }); @@ -102527,7 +107242,7 @@ async function getDevicesForContact(jid) { function generateDeviceID() { /* Generates a device ID, making sure that it's unique */ - const existing_ids = converse_core_converse.devicelists.get(converse_core_converse.bare_jid).devices.pluck('id'); + const existing_ids = core_converse.devicelists.get(core_converse.bare_jid).devices.pluck('id'); let device_id = libsignal.KeyHelper.generateRegistrationId(); // Before publishing a freshly generated device id for the first time, // a device MUST check whether that device id already exists, and if so, generate a new one. @@ -102551,22 +107266,22 @@ async function buildSession(device) { // to build a session when receiving an encrypted message in a MUC. // https://github.com/conversejs/converse.js/issues/1481#issuecomment-509183431 const address = new libsignal.SignalProtocolAddress(device.get('jid'), device.get('id')); - const sessionBuilder = new libsignal.SessionBuilder(converse_core_converse.omemo_store, address); + const sessionBuilder = new libsignal.SessionBuilder(core_converse.omemo_store, address); const prekey = device.getRandomPreKey(); const bundle = await device.getBundle(); return sessionBuilder.processPreKey({ 'registrationId': parseInt(device.get('id'), 10), - 'identityKey': converse_omemo_u.base64ToArrayBuffer(bundle.identity_key), + 'identityKey': omemo_u.base64ToArrayBuffer(bundle.identity_key), 'signedPreKey': { 'keyId': bundle.signed_prekey.id, // <Number> - 'publicKey': converse_omemo_u.base64ToArrayBuffer(bundle.signed_prekey.public_key), - 'signature': converse_omemo_u.base64ToArrayBuffer(bundle.signed_prekey.signature) + 'publicKey': omemo_u.base64ToArrayBuffer(bundle.signed_prekey.public_key), + 'signature': omemo_u.base64ToArrayBuffer(bundle.signed_prekey.signature) }, 'preKey': { 'keyId': prekey.id, // <Number> - 'publicKey': converse_omemo_u.base64ToArrayBuffer(prekey.key) + 'publicKey': omemo_u.base64ToArrayBuffer(prekey.key) } }); } @@ -102578,7 +107293,7 @@ async function getSession(device) { } const address = new libsignal.SignalProtocolAddress(device.get('jid'), device.get('id')); - const session = await converse_core_converse.omemo_store.loadSession(address.toString()); + const session = await core_converse.omemo_store.loadSession(address.toString()); if (session) { return session; @@ -102595,17 +107310,17 @@ async function getSession(device) { } function updateBundleFromStanza(stanza) { - const items_el = converse_omemo_sizzle("items", stanza).pop(); + const items_el = omemo_sizzle("items", stanza).pop(); - if (!items_el || !items_el.getAttribute('node').startsWith(converse_omemo_Strophe.NS.OMEMO_BUNDLES)) { + if (!items_el || !items_el.getAttribute('node').startsWith(omemo_Strophe.NS.OMEMO_BUNDLES)) { return; } const device_id = items_el.getAttribute('node').split(':')[1]; const jid = stanza.getAttribute('from'); - const bundle_el = converse_omemo_sizzle("item > bundle", items_el).pop(); + const bundle_el = omemo_sizzle("item > bundle", items_el).pop(); - const devicelist = converse_core_converse.devicelists.getDeviceList(jid); + const devicelist = core_converse.devicelists.getDeviceList(jid); const device = devicelist.devices.get(device_id) || devicelist.devices.create({ 'id': device_id, @@ -102617,22 +107332,22 @@ function updateBundleFromStanza(stanza) { } function updateDevicesFromStanza(stanza) { - const items_el = converse_omemo_sizzle("items[node=\"".concat(converse_omemo_Strophe.NS.OMEMO_DEVICELIST, "\"]"), stanza).pop(); + const items_el = omemo_sizzle("items[node=\"".concat(omemo_Strophe.NS.OMEMO_DEVICELIST, "\"]"), stanza).pop(); if (!items_el) { return; } - const device_selector = "item list[xmlns=\"".concat(converse_omemo_Strophe.NS.OMEMO, "\"] device"); - const device_ids = converse_omemo_sizzle(device_selector, items_el).map(d => d.getAttribute('id')); + const device_selector = "item list[xmlns=\"".concat(omemo_Strophe.NS.OMEMO, "\"] device"); + const device_ids = omemo_sizzle(device_selector, items_el).map(d => d.getAttribute('id')); const jid = stanza.getAttribute('from'); - const devicelist = converse_core_converse.devicelists.getDeviceList(jid); + const devicelist = core_converse.devicelists.getDeviceList(jid); const devices = devicelist.devices; const removed_ids = lodash_es_difference(devices.pluck('id'), device_ids); removed_ids.forEach(id => { - if (jid === converse_core_converse.bare_jid && id === converse_core_converse.omemo_store.get('device_id')) { + if (jid === core_converse.bare_jid && id === core_converse.omemo_store.get('device_id')) { return; // We don't set the current device as inactive } @@ -102651,7 +107366,7 @@ function updateDevicesFromStanza(stanza) { } }); - if (converse_omemo_u.isSameBareJID(jid, converse_core_converse.bare_jid)) { + if (omemo_u.isSameBareJID(jid, core_converse.bare_jid)) { // Make sure our own device is on the list // (i.e. if it was removed, add it again). devicelist.publishCurrentDevice(device_ids); @@ -102660,9 +107375,9 @@ function updateDevicesFromStanza(stanza) { function registerPEPPushHandler() { // Add a handler for devices pushed from other connected clients - converse_core_converse.connection.addHandler(message => { + core_converse.connection.addHandler(message => { try { - if (converse_omemo_sizzle("event[xmlns=\"".concat(converse_omemo_Strophe.NS.PUBSUB, "#event\"]"), message).length) { + if (omemo_sizzle("event[xmlns=\"".concat(omemo_Strophe.NS.PUBSUB, "#event\"]"), message).length) { updateDevicesFromStanza(message); updateBundleFromStanza(message); } @@ -102675,34 +107390,34 @@ function registerPEPPushHandler() { } function restoreOMEMOSession() { - if (converse_core_converse.omemo_store === undefined) { - const id = "converse.omemosession-".concat(converse_core_converse.bare_jid); - converse_core_converse.omemo_store = new converse_core_converse.OMEMOStore({ + if (core_converse.omemo_store === undefined) { + const id = "converse.omemosession-".concat(core_converse.bare_jid); + core_converse.omemo_store = new core_converse.OMEMOStore({ 'id': id }); - converse_core_converse.omemo_store.browserStorage = converse_core_converse.createStore(id); + core_converse.omemo_store.browserStorage = core_converse.createStore(id); } - return converse_core_converse.omemo_store.fetchSession(); + return core_converse.omemo_store.fetchSession(); } function fetchDeviceLists() { - return new Promise((success, _error) => converse_core_converse.devicelists.fetch({ + return new Promise((success, error) => core_converse.devicelists.fetch({ success, - 'error': (m, e) => _error(e) + 'error': (m, e) => error(e) })); } async function fetchOwnDevices() { await fetchDeviceLists(); - let own_devicelist = converse_core_converse.devicelists.get(converse_core_converse.bare_jid); + let own_devicelist = core_converse.devicelists.get(core_converse.bare_jid); if (own_devicelist) { own_devicelist.fetchDevices(); } else { - own_devicelist = await converse_core_converse.devicelists.create({ - 'jid': converse_core_converse.bare_jid + own_devicelist = await core_converse.devicelists.create({ + 'jid': core_converse.bare_jid }, { 'promise': true }); @@ -102712,18 +107427,19 @@ async function fetchOwnDevices() { } async function initOMEMO() { - if (!converse_core_converse.config.get('trusted')) { + if (!core_converse.config.get('trusted') || core_api.settings.get('clear_cache_on_logout')) { + headless_log.warn("Not initializing OMEMO, since this browser is not trusted or clear_cache_on_logout is set to true"); return; } - converse_core_converse.devicelists = new converse_core_converse.DeviceLists(); - const id = "converse.devicelists-".concat(converse_core_converse.bare_jid); - converse_core_converse.devicelists.browserStorage = converse_core_converse.createStore(id); + core_converse.devicelists = new core_converse.DeviceLists(); + const id = "converse.devicelists-".concat(core_converse.bare_jid); + core_converse.devicelists.browserStorage = core_converse.createStore(id); try { await fetchOwnDevices(); await restoreOMEMOSession(); - await converse_core_converse.omemo_store.publishBundle(); + await core_converse.omemo_store.publishBundle(); } catch (e) { headless_log.error("Could not initialize OMEMO support"); headless_log.error(e); @@ -102735,7 +107451,7 @@ async function initOMEMO() { * @example _converse.api.listen.on('OMEMOInitialized', () => { ... }); */ - converse_core_api.trigger('OMEMOInitialized'); + core_api.trigger('OMEMOInitialized'); } async function onOccupantAdded(chatroom, occupant) { @@ -102744,7 +107460,7 @@ async function onOccupantAdded(chatroom, occupant) { } if (chatroom.get('omemo_active')) { - const supported = await converse_core_converse.contactHasOMEMOSupport(occupant.get('jid')); + const supported = await core_converse.contactHasOMEMOSupport(occupant.get('jid')); if (!supported) { chatroom.createMessage({ @@ -102762,16 +107478,16 @@ async function onOccupantAdded(chatroom, occupant) { async function checkOMEMOSupported(chatbox) { let supported; - if (chatbox.get('type') === converse_core_converse.CHATROOMS_TYPE) { - await converse_core_api.waitUntil('OMEMOInitialized'); + if (chatbox.get('type') === core_converse.CHATROOMS_TYPE) { + await core_api.waitUntil('OMEMOInitialized'); supported = chatbox.features.get('nonanonymous') && chatbox.features.get('membersonly'); - } else if (chatbox.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { - supported = await converse_core_converse.contactHasOMEMOSupport(chatbox.get('jid')); + } else if (chatbox.get('type') === core_converse.PRIVATE_CHAT_TYPE) { + supported = await core_converse.contactHasOMEMOSupport(chatbox.get('jid')); } chatbox.set('omemo_supported', supported); - if (supported && converse_core_api.settings.get('omemo_default')) { + if (supported && core_api.settings.get('omemo_default')) { chatbox.set('omemo_active', true); } } @@ -102779,18 +107495,18 @@ async function checkOMEMOSupported(chatbox) { function toggleOMEMO(ev) { ev.stopPropagation(); ev.preventDefault(); - const toolbar_el = converse_omemo_u.ancestor(ev.target, 'converse-chat-toolbar'); + const toolbar_el = omemo_u.ancestor(ev.target, 'converse-chat-toolbar'); if (!toolbar_el.model.get('omemo_supported')) { let messages; - if (toolbar_el.model.get('type') === converse_core_converse.CHATROOMS_TYPE) { + if (toolbar_el.model.get('type') === core_converse.CHATROOMS_TYPE) { messages = [i18n_('Cannot use end-to-end encryption in this groupchat, ' + 'either the groupchat has some anonymity or not all participants support OMEMO.')]; } else { messages = [i18n_("Cannot use end-to-end encryption because %1$s uses a client that doesn't support OMEMO.", toolbar_el.model.contact.getDisplayName())]; } - return converse_core_api.alert('error', i18n_('Error'), messages); + return core_api.alert('error', i18n_('Error'), messages); } toolbar_el.model.save({ @@ -102801,7 +107517,7 @@ function toggleOMEMO(ev) { function getOMEMOToolbarButton(toolbar_el, buttons) { const model = toolbar_el.model; - const is_muc = model.get('type') === converse_core_converse.CHATROOMS_TYPE; + const is_muc = model.get('type') === core_converse.CHATROOMS_TYPE; let title; @@ -102815,13 +107531,53 @@ function getOMEMOToolbarButton(toolbar_el, buttons) { title = i18n_('This groupchat needs to be members-only and non-anonymous in ' + 'order to support OMEMO encrypted messages'); } - buttons.push(lit_html_html(converse_omemo_templateObject(), title, !model.get('omemo_supported'), toggleOMEMO, model.get('omemo_active') ? "fa-lock" : "fa-unlock", converse_core_api.settings.get('assets_path'), model.get('omemo_active') ? "var(--info-color)" : "var(--error-color)")); + buttons.push(lit_html_html(omemo_templateObject(), title, !model.get('omemo_supported'), toggleOMEMO, model.get('omemo_active') ? "fa-lock" : "fa-unlock", core_api.settings.get('assets_path'), model.get('omemo_active') ? "var(--info-color)" : "var(--error-color)")); return buttons; } +/** + * Mixin object that contains OMEMO-related methods for + * {@link _converse.ChatBox} or {@link _converse.ChatRoom} objects. + * + * @typedef {Object} OMEMOEnabledChatBox + */ + + +const OMEMOEnabledChatBox = { + encryptKey(plaintext, device) { + return getSessionCipher(device.get('jid'), device.get('id')).encrypt(plaintext).then(payload => ({ + 'payload': payload, + 'device': device + })); + }, + + handleMessageSendError(e) { + if (e.name === 'IQError') { + this.save('omemo_supported', false); + const err_msgs = []; + + if (omemo_sizzle("presence-subscription-required[xmlns=\"".concat(omemo_Strophe.NS.PUBSUB_ERROR, "\"]"), e.iq).length) { + err_msgs.push(i18n_("Sorry, we're unable to send an encrypted message because %1$s " + "requires you to be subscribed to their presence in order to see their OMEMO information", e.iq.getAttribute('from'))); + } else if (omemo_sizzle("remote-server-not-found[xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"]", e.iq).length) { + err_msgs.push(i18n_("Sorry, we're unable to send an encrypted message because the remote server for %1$s could not be found", e.iq.getAttribute('from'))); + } else { + err_msgs.push(i18n_("Unable to send an encrypted message due to an unexpected error.")); + err_msgs.push(e.iq.outerHTML); + } + + core_api.alert('error', i18n_('Error'), err_msgs); + headless_log.error(e); + } else if (e.user_facing) { + core_api.alert('error', i18n_('Error'), [e.message]); + headless_log.error(e); + } else { + throw e; + } + } +}; converse.plugins.add('converse-omemo', { enabled(_converse) { - return window.libsignal && !_converse.api.settings.get("blacklisted_plugins").includes('converse-omemo') && _converse.config.get('trusted'); + return window.libsignal && _converse.config.get('trusted') && !core_api.settings.get('clear_cache_on_logout') && !_converse.api.settings.get("blacklisted_plugins").includes('converse-omemo'); }, dependencies: ["converse-chatview", "converse-pubsub", "converse-profile"], @@ -102835,7 +107591,7 @@ converse.plugins.add('converse-omemo', { initialize() { this.debouncedRender = lodash_es_debounce(this.render, 50); - this.devicelist = converse_core_converse.devicelists.get(converse_core_converse.bare_jid); + this.devicelist = core_converse.devicelists.get(core_converse.bare_jid); this.listenTo(this.devicelist.devices, 'change:bundle', this.debouncedRender); this.listenTo(this.devicelist.devices, 'reset', this.debouncedRender); this.listenTo(this.devicelist.devices, 'reset', this.debouncedRender); @@ -102845,7 +107601,7 @@ converse.plugins.add('converse-omemo', { }, beforeRender() { - const device_id = converse_core_converse.omemo_store.get('device_id'); + const device_id = core_converse.omemo_store.get('device_id'); if (device_id) { this.current_device = this.devicelist.devices.get(device_id); @@ -102859,7 +107615,7 @@ converse.plugins.add('converse-omemo', { }, selectAll(ev) { - let sibling = converse_omemo_u.ancestor(ev.target, 'li'); + let sibling = omemo_u.ancestor(ev.target, 'li'); while (sibling) { sibling.querySelector('input[type="checkbox"]').checked = ev.target.checked; @@ -102871,11 +107627,11 @@ converse.plugins.add('converse-omemo', { ev.preventDefault(); ev.stopPropagation(); ev.target.querySelector('.select-all').checked = false; - const device_ids = converse_omemo_sizzle('.fingerprint-removal-item input[type="checkbox"]:checked', ev.target).map(c => c.value); + const device_ids = omemo_sizzle('.fingerprint-removal-item input[type="checkbox"]:checked', ev.target).map(c => c.value); this.devicelist.removeOwnDevices(device_ids).then(this.modal.hide).catch(err => { headless_log.error(err); - converse_core_converse.api.alert(converse_omemo_Strophe.LogLevel.ERROR, i18n_('Error'), [i18n_('Sorry, an error occurred while trying to remove the devices.')]); + core_converse.api.alert(omemo_Strophe.LogLevel.ERROR, i18n_('Error'), [i18n_('Sorry, an error occurred while trying to remove the devices.')]); }); }, @@ -102883,7 +107639,7 @@ converse.plugins.add('converse-omemo', { ev.preventDefault(); if (confirm(i18n_("Are you sure you want to generate new OMEMO keys? " + "This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device."))) { - converse_core_api.omemo.bundle.generate(); + core_api.omemo.bundle.generate(); } } @@ -102895,7 +107651,7 @@ converse.plugins.add('converse-omemo', { initialize() { const jid = this.model.get('jid'); - this.devicelist = converse_core_converse.devicelists.getDeviceList(jid); + this.devicelist = core_converse.devicelists.getDeviceList(jid); this.listenTo(this.devicelist.devices, 'change:bundle', this.render); this.listenTo(this.devicelist.devices, 'change:trusted', this.render); this.listenTo(this.devicelist.devices, 'remove', this.render); @@ -102920,15 +107676,15 @@ converse.plugins.add('converse-omemo', { let message, stanza; try { - const devices = await converse_core_converse.getBundlesAndBuildSessions(this); + const devices = await core_converse.getBundlesAndBuildSessions(this); message = await this.createMessage(attrs); - stanza = await converse_core_converse.createOMEMOMessageStanza(this, message, devices); + stanza = await core_converse.createOMEMOMessageStanza(this, message, devices); } catch (e) { this.handleMessageSendError(e); return null; } - converse_core_converse.api.send(stanza); + core_converse.api.send(stanza); return message; } else { @@ -102943,78 +107699,38 @@ converse.plugins.add('converse-omemo', { /* The initialize function gets called as soon as the plugin is * loaded by Converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'omemo_default': false }); - converse_core_api.promises.add(['OMEMOInitialized']); - converse_core_converse.NUM_PREKEYS = 100; // Set here so that tests can override - - /** - * Mixin object that contains OMEMO-related methods for - * {@link _converse.ChatBox} or {@link _converse.ChatRoom} objects. - * - * @typedef {Object} OMEMOEnabledChatBox - */ - - const OMEMOEnabledChatBox = { - encryptKey(plaintext, device) { - return getSessionCipher(device.get('jid'), device.get('id')).encrypt(plaintext).then(payload => ({ - 'payload': payload, - 'device': device - })); - }, + core_api.promises.add(['OMEMOInitialized']); + core_converse.NUM_PREKEYS = 100; // Set here so that tests can override - handleMessageSendError(e) { - if (e.name === 'IQError') { - this.save('omemo_supported', false); - const err_msgs = []; + Object.assign(core_converse.ChatBox.prototype, OMEMOEnabledChatBox); - if (converse_omemo_sizzle("presence-subscription-required[xmlns=\"".concat(converse_omemo_Strophe.NS.PUBSUB_ERROR, "\"]"), e.iq).length) { - err_msgs.push(i18n_("Sorry, we're unable to send an encrypted message because %1$s " + "requires you to be subscribed to their presence in order to see their OMEMO information", e.iq.getAttribute('from'))); - } else if (converse_omemo_sizzle("remote-server-not-found[xmlns=\"urn:ietf:params:xml:ns:xmpp-stanzas\"]", e.iq).length) { - err_msgs.push(i18n_("Sorry, we're unable to send an encrypted message because the remote server for %1$s could not be found", e.iq.getAttribute('from'))); - } else { - err_msgs.push(i18n_("Unable to send an encrypted message due to an unexpected error.")); - err_msgs.push(e.iq.outerHTML); - } - - converse_core_api.alert('error', i18n_('Error'), err_msgs); - headless_log.error(e); - } else if (e.user_facing) { - converse_core_api.alert('error', i18n_('Error'), [e.message]); - headless_log.error(e); - } else { - throw e; - } - } - - }; - Object.assign(converse_core_converse.ChatBox.prototype, OMEMOEnabledChatBox); - - converse_core_converse.generateFingerprints = async function (jid) { + core_converse.generateFingerprints = async function (jid) { const devices = await getDevicesForContact(jid); return Promise.all(devices.map(d => generateFingerprint(d))); }; - converse_core_converse.getDeviceForContact = function (jid, device_id) { + core_converse.getDeviceForContact = function (jid, device_id) { return getDevicesForContact(jid).then(devices => devices.get(device_id)); }; - converse_core_converse.contactHasOMEMOSupport = async function (jid) { + core_converse.contactHasOMEMOSupport = async function (jid) { /* Checks whether the contact advertises any OMEMO-compatible devices. */ const devices = await getDevicesForContact(jid); return devices.length > 0; }; - converse_core_converse.getBundlesAndBuildSessions = async function (chatbox) { + core_converse.getBundlesAndBuildSessions = async function (chatbox) { const no_devices_err = i18n_("Sorry, no devices found to which we can send an OMEMO encrypted message."); let devices; - if (chatbox.get('type') === converse_core_converse.CHATROOMS_TYPE) { + if (chatbox.get('type') === core_converse.CHATROOMS_TYPE) { const collections = await Promise.all(chatbox.occupants.map(o => getDevicesForContact(o.get('jid')))); devices = collections.reduce((a, b) => lodash_es_concat(a, b.models), []); - } else if (chatbox.get('type') === converse_core_converse.PRIVATE_CHAT_TYPE) { + } else if (chatbox.get('type') === core_converse.PRIVATE_CHAT_TYPE) { const their_devices = await getDevicesForContact(chatbox.get('jid')); if (their_devices.length === 0) { @@ -103023,13 +107739,13 @@ converse.plugins.add('converse-omemo', { throw err; } - const own_devices = converse_core_converse.devicelists.get(converse_core_converse.bare_jid).devices; + const own_devices = core_converse.devicelists.get(core_converse.bare_jid).devices; devices = [...own_devices.models, ...their_devices.models]; } // Filter out our own device - const id = converse_core_converse.omemo_store.get('device_id'); + const id = core_converse.omemo_store.get('device_id'); devices = devices.filter(d => d.get('id') !== id); // Fetch bundles if necessary @@ -103051,15 +107767,15 @@ converse.plugins.add('converse-omemo', { return devices; }; - converse_core_converse.createOMEMOMessageStanza = function (chatbox, message, devices) { + core_converse.createOMEMOMessageStanza = function (chatbox, message, devices) { const body = i18n_("This is an OMEMO encrypted message which your client doesn’t seem to support. " + "Find more information on https://conversations.im/omemo"); if (!message.get('message')) { throw new Error("No message body to encrypt!"); } - const stanza = converse_omemo_$msg({ - 'from': converse_core_converse.connection.jid, + const stanza = omemo_$msg({ + 'from': core_converse.connection.jid, 'to': chatbox.get('jid'), 'type': chatbox.get('message_type'), 'id': message.get('msgid') @@ -103067,7 +107783,7 @@ converse.plugins.add('converse-omemo', { if (message.get('type') === 'chat') { stanza.c('request', { - 'xmlns': converse_omemo_Strophe.NS.RECEIPTS + 'xmlns': omemo_Strophe.NS.RECEIPTS }).up(); } // An encrypted header is added to the message for // each device that is supposed to receive it. @@ -103078,9 +107794,9 @@ converse.plugins.add('converse-omemo', { stanza.c('encrypted', { - 'xmlns': converse_omemo_Strophe.NS.OMEMO + 'xmlns': omemo_Strophe.NS.OMEMO }).c('header', { - 'sid': converse_core_converse.omemo_store.get('device_id') + 'sid': core_converse.omemo_store.get('device_id') }); return omemo.encryptMessage(message.get('message')).then(obj => { // The 16 bytes key and the GCM authentication tag (The tag @@ -103093,14 +107809,14 @@ converse.plugins.add('converse-omemo', { return Promise.all(promises).then(dicts => addKeysToMessageStanza(stanza, dicts, obj.iv)).then(stanza => { stanza.c('payload').t(obj.payload).up().up(); stanza.c('store', { - 'xmlns': converse_omemo_Strophe.NS.HINTS + 'xmlns': omemo_Strophe.NS.HINTS }); return stanza; }); }); }; - converse_core_converse.OMEMOStore = model_Model.extend({ + core_converse.OMEMOStore = model_Model.extend({ Direction: { SENDING: 1, RECEIVING: 2 @@ -103109,8 +107825,8 @@ converse.plugins.add('converse-omemo', { getIdentityKeyPair() { const keypair = this.get('identity_keypair'); return Promise.resolve({ - 'privKey': converse_omemo_u.base64ToArrayBuffer(keypair.privKey), - 'pubKey': converse_omemo_u.base64ToArrayBuffer(keypair.pubKey) + 'privKey': omemo_u.base64ToArrayBuffer(keypair.privKey), + 'pubKey': omemo_u.base64ToArrayBuffer(keypair.pubKey) }); }, @@ -103134,7 +107850,7 @@ converse.plugins.add('converse-omemo', { return Promise.resolve(true); } - return Promise.resolve(converse_omemo_u.arrayBufferToBase64(identity_key) === trusted); + return Promise.resolve(omemo_u.arrayBufferToBase64(identity_key) === trusted); }, loadIdentityKey(identifier) { @@ -103142,7 +107858,7 @@ converse.plugins.add('converse-omemo', { throw new Error("Can't load identity_key for invalid identifier"); } - return Promise.resolve(converse_omemo_u.base64ToArrayBuffer(this.get('identity_key' + identifier))); + return Promise.resolve(omemo_u.base64ToArrayBuffer(this.get('identity_key' + identifier))); }, saveIdentity(identifier, identity_key) { @@ -103152,7 +107868,7 @@ converse.plugins.add('converse-omemo', { const address = new libsignal.SignalProtocolAddress.fromString(identifier); const existing = this.get('identity_key' + address.getName()); - const b64_idkey = converse_omemo_u.arrayBufferToBase64(identity_key); + const b64_idkey = omemo_u.arrayBufferToBase64(identity_key); this.save('identity_key' + address.getName(), b64_idkey); if (existing && b64_idkey !== existing) { @@ -103171,8 +107887,8 @@ converse.plugins.add('converse-omemo', { if (res) { return Promise.resolve({ - 'privKey': converse_omemo_u.base64ToArrayBuffer(res.privKey), - 'pubKey': converse_omemo_u.base64ToArrayBuffer(res.pubKey) + 'privKey': omemo_u.base64ToArrayBuffer(res.privKey), + 'pubKey': omemo_u.base64ToArrayBuffer(res.pubKey) }); } @@ -103182,8 +107898,8 @@ converse.plugins.add('converse-omemo', { storePreKey(key_id, key_pair) { const prekey = {}; prekey[key_id] = { - 'pubKey': converse_omemo_u.arrayBufferToBase64(key_pair.pubKey), - 'privKey': converse_omemo_u.arrayBufferToBase64(key_pair.privKey) + 'pubKey': omemo_u.arrayBufferToBase64(key_pair.pubKey), + 'privKey': omemo_u.arrayBufferToBase64(key_pair.privKey) }; this.save('prekeys', Object.assign(this.getPreKeys(), prekey)); return Promise.resolve(); @@ -103200,8 +107916,8 @@ converse.plugins.add('converse-omemo', { if (res) { return Promise.resolve({ - 'privKey': converse_omemo_u.base64ToArrayBuffer(res.privKey), - 'pubKey': converse_omemo_u.base64ToArrayBuffer(res.pubKey) + 'privKey': omemo_u.base64ToArrayBuffer(res.privKey), + 'pubKey': omemo_u.base64ToArrayBuffer(res.pubKey) }); } @@ -103219,14 +107935,14 @@ converse.plugins.add('converse-omemo', { this.save('signed_prekey', { 'id': spk.keyId, - 'privKey': converse_omemo_u.arrayBufferToBase64(spk.keyPair.privKey), - 'pubKey': converse_omemo_u.arrayBufferToBase64(spk.keyPair.pubKey), + 'privKey': omemo_u.arrayBufferToBase64(spk.keyPair.privKey), + 'pubKey': omemo_u.arrayBufferToBase64(spk.keyPair.pubKey), // XXX: The InMemorySignalProtocolStore does not pass // in or store the signature, but we need it when we // publish out bundle and this method isn't called from // within libsignal code, so we modify it to also store // the signature. - 'signature': converse_omemo_u.arrayBufferToBase64(spk.signature) + 'signature': omemo_u.arrayBufferToBase64(spk.signature) }); return Promise.resolve(); }, @@ -103264,9 +107980,9 @@ converse.plugins.add('converse-omemo', { publishBundle() { const signed_prekey = this.get('signed_prekey'); - const node = "".concat(converse_omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('device_id')); - const item = converse_omemo_$build('item').c('bundle', { - 'xmlns': converse_omemo_Strophe.NS.OMEMO + const node = "".concat(omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('device_id')); + const item = omemo_$build('item').c('bundle', { + 'xmlns': omemo_Strophe.NS.OMEMO }).c('signedPreKeyPublic', { 'signedPreKeyId': signed_prekey.id }).t(signed_prekey.pubKey).up().c('signedPreKeySignature').t(signed_prekey.signature).up().c('identityKey').t(this.get('identity_keypair').pubKey).up().c('prekeys'); @@ -103276,11 +107992,11 @@ converse.plugins.add('converse-omemo', { const options = { 'pubsub#access_model': 'open' }; - return converse_core_api.pubsub.publish(null, node, item, options, false); + return core_api.pubsub.publish(null, node, item, options, false); }, async generateMissingPreKeys() { - const missing_keys = lodash_es_difference(lodash_es_invokeMap(lodash_es_range(0, converse_core_converse.NUM_PREKEYS), Number.prototype.toString), Object.keys(this.getPreKeys())); + const missing_keys = lodash_es_difference(lodash_es_invokeMap(lodash_es_range(0, core_converse.NUM_PREKEYS), Number.prototype.toString), Object.keys(this.getPreKeys())); if (missing_keys.length < 1) { headless_log.warn("No missing prekeys to generate for our own device"); @@ -103291,10 +108007,10 @@ converse.plugins.add('converse-omemo', { keys.forEach(k => this.storePreKey(k.keyId, k.keyPair)); const marshalled_keys = Object.keys(this.getPreKeys()).map(k => ({ 'id': k.keyId, - 'key': converse_omemo_u.arrayBufferToBase64(k.pubKey) + 'key': omemo_u.arrayBufferToBase64(k.pubKey) })); - const devicelist = converse_core_converse.devicelists.get(converse_core_converse.bare_jid); + const devicelist = core_converse.devicelists.get(core_converse.bare_jid); const device = devicelist.devices.get(this.get('device_id')); const bundle = await device.getBundle(); @@ -103315,41 +108031,41 @@ converse.plugins.add('converse-omemo', { // generated integer between 1 and 2^31 - 1. const identity_keypair = await libsignal.KeyHelper.generateIdentityKeyPair(); const bundle = {}; - const identity_key = converse_omemo_u.arrayBufferToBase64(identity_keypair.pubKey); + const identity_key = omemo_u.arrayBufferToBase64(identity_keypair.pubKey); const device_id = generateDeviceID(); bundle['identity_key'] = identity_key; bundle['device_id'] = device_id; this.save({ 'device_id': device_id, 'identity_keypair': { - 'privKey': converse_omemo_u.arrayBufferToBase64(identity_keypair.privKey), + 'privKey': omemo_u.arrayBufferToBase64(identity_keypair.privKey), 'pubKey': identity_key }, 'identity_key': identity_key }); const signed_prekey = await libsignal.KeyHelper.generateSignedPreKey(identity_keypair, 0); - converse_core_converse.omemo_store.storeSignedPreKey(signed_prekey); + core_converse.omemo_store.storeSignedPreKey(signed_prekey); bundle['signed_prekey'] = { 'id': signed_prekey.keyId, - 'public_key': converse_omemo_u.arrayBufferToBase64(signed_prekey.keyPair.privKey), - 'signature': converse_omemo_u.arrayBufferToBase64(signed_prekey.signature) + 'public_key': omemo_u.arrayBufferToBase64(signed_prekey.keyPair.privKey), + 'signature': omemo_u.arrayBufferToBase64(signed_prekey.signature) }; - const keys = await Promise.all(lodash_es_range(0, converse_core_converse.NUM_PREKEYS).map(id => libsignal.KeyHelper.generatePreKey(id))); - keys.forEach(k => converse_core_converse.omemo_store.storePreKey(k.keyId, k.keyPair)); + const keys = await Promise.all(lodash_es_range(0, core_converse.NUM_PREKEYS).map(id => libsignal.KeyHelper.generatePreKey(id))); + keys.forEach(k => core_converse.omemo_store.storePreKey(k.keyId, k.keyPair)); - const devicelist = converse_core_converse.devicelists.get(converse_core_converse.bare_jid); + const devicelist = core_converse.devicelists.get(core_converse.bare_jid); const device = await devicelist.devices.create({ 'id': bundle.device_id, - 'jid': converse_core_converse.bare_jid + 'jid': core_converse.bare_jid }, { 'promise': true }); const marshalled_keys = keys.map(k => ({ 'id': k.keyId, - 'key': converse_omemo_u.arrayBufferToBase64(k.keyPair.pubKey) + 'key': omemo_u.arrayBufferToBase64(k.keyPair.pubKey) })); bundle['prekeys'] = marshalled_keys; device.save('bundle', bundle); @@ -103360,7 +108076,7 @@ converse.plugins.add('converse-omemo', { this._setup_promise = new Promise((resolve, reject) => { this.fetch({ 'success': () => { - if (!converse_core_converse.omemo_store.get('device_id')) { + if (!core_converse.omemo_store.get('device_id')) { this.generateBundle().then(resolve).catch(reject); } else { resolve(); @@ -103385,7 +108101,7 @@ converse.plugins.add('converse-omemo', { * @memberOf _converse */ - converse_core_converse.Device = model_Model.extend({ + core_converse.Device = model_Model.extend({ defaults: { 'trusted': UNDECIDED, 'active': true @@ -103394,23 +108110,23 @@ converse.plugins.add('converse-omemo', { getRandomPreKey() { // XXX: assumes that the bundle has already been fetched const bundle = this.get('bundle'); - return bundle.prekeys[converse_omemo_u.getRandomInt(bundle.prekeys.length)]; + return bundle.prekeys[omemo_u.getRandomInt(bundle.prekeys.length)]; }, async fetchBundleFromServer() { - const stanza = converse_omemo_$iq({ + const stanza = omemo_$iq({ 'type': 'get', - 'from': converse_core_converse.bare_jid, + 'from': core_converse.bare_jid, 'to': this.get('jid') }).c('pubsub', { - 'xmlns': converse_omemo_Strophe.NS.PUBSUB + 'xmlns': omemo_Strophe.NS.PUBSUB }).c('items', { - 'node': "".concat(converse_omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('id')) + 'node': "".concat(omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('id')) }); let iq; try { - iq = await converse_core_api.sendIQ(stanza); + iq = await core_api.sendIQ(stanza); } catch (iq) { headless_log.error("Could not fetch bundle for device ".concat(this.get('id'), " from ").concat(this.get('jid'))); headless_log.error(iq); @@ -103421,8 +108137,8 @@ converse.plugins.add('converse-omemo', { throw new IQError("Could not fetch bundle", iq); } - const publish_el = converse_omemo_sizzle("items[node=\"".concat(converse_omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('id'), "\"]"), iq).pop(); - const bundle_el = converse_omemo_sizzle("bundle[xmlns=\"".concat(converse_omemo_Strophe.NS.OMEMO, "\"]"), publish_el).pop(); + const publish_el = omemo_sizzle("items[node=\"".concat(omemo_Strophe.NS.OMEMO_BUNDLES, ":").concat(this.get('id'), "\"]"), iq).pop(); + const bundle_el = omemo_sizzle("bundle[xmlns=\"".concat(omemo_Strophe.NS.OMEMO, "\"]"), publish_el).pop(); const bundle = parseBundle(bundle_el); this.save('bundle', bundle); return bundle; @@ -103442,8 +108158,8 @@ converse.plugins.add('converse-omemo', { } }); - converse_core_converse.Devices = collection_Collection.extend({ - model: converse_core_converse.Device + core_converse.Devices = Collection.extend({ + model: core_converse.Device }); /** * @class @@ -103451,13 +108167,13 @@ converse.plugins.add('converse-omemo', { * @memberOf _converse */ - converse_core_converse.DeviceList = model_Model.extend({ + core_converse.DeviceList = model_Model.extend({ idAttribute: 'jid', initialize() { - this.devices = new converse_core_converse.Devices(); - const id = "converse.devicelist-".concat(converse_core_converse.bare_jid, "-").concat(this.get('jid')); - this.devices.browserStorage = converse_core_converse.createStore(id); + this.devices = new core_converse.Devices(); + const id = "converse.devicelist-".concat(core_converse.bare_jid, "-").concat(this.get('jid')); + this.devices.browserStorage = core_converse.createStore(id); this.fetchDevices(); }, @@ -103478,7 +108194,7 @@ converse.plugins.add('converse-omemo', { this.destroy(); } - if (this.get('jid') === converse_core_converse.bare_jid) { + if (this.get('jid') === core_converse.bare_jid) { await this.publishCurrentDevice(ids); } } @@ -103501,27 +108217,27 @@ converse.plugins.add('converse-omemo', { }, async getOwnDeviceId() { - let device_id = converse_core_converse.omemo_store.get('device_id'); + let device_id = core_converse.omemo_store.get('device_id'); if (!this.devices.findWhere({ 'id': device_id })) { // Generate a new bundle if we cannot find our device - await converse_core_converse.omemo_store.generateBundle(); - device_id = converse_core_converse.omemo_store.get('device_id'); + await core_converse.omemo_store.generateBundle(); + device_id = core_converse.omemo_store.get('device_id'); } return device_id; }, async publishCurrentDevice(device_ids) { - if (this.get('jid') !== converse_core_converse.bare_jid) { + if (this.get('jid') !== core_converse.bare_jid) { return; // We only publish for ourselves. } await restoreOMEMOSession(); - if (!converse_core_converse.omemo_store) { + if (!core_converse.omemo_store) { // Happens during tests. The connection gets torn down // before publishCurrentDevice has time to finish. headless_log.warn('publishCurrentDevice: omemo_store is not defined, likely a timing issue'); @@ -103534,26 +108250,26 @@ converse.plugins.add('converse-omemo', { }, async fetchDevicesFromServer() { - const stanza = converse_omemo_$iq({ + const stanza = omemo_$iq({ 'type': 'get', - 'from': converse_core_converse.bare_jid, + 'from': core_converse.bare_jid, 'to': this.get('jid') }).c('pubsub', { - 'xmlns': converse_omemo_Strophe.NS.PUBSUB + 'xmlns': omemo_Strophe.NS.PUBSUB }).c('items', { - 'node': converse_omemo_Strophe.NS.OMEMO_DEVICELIST + 'node': omemo_Strophe.NS.OMEMO_DEVICELIST }); let iq; try { - iq = await converse_core_api.sendIQ(stanza); + iq = await core_api.sendIQ(stanza); } catch (e) { headless_log.error(e); return []; } - const selector = "list[xmlns=\"".concat(converse_omemo_Strophe.NS.OMEMO, "\"] device"); - const device_ids = converse_omemo_sizzle(selector, iq).map(d => d.getAttribute('id')); + const selector = "list[xmlns=\"".concat(omemo_Strophe.NS.OMEMO, "\"] device"); + const device_ids = omemo_sizzle(selector, iq).map(d => d.getAttribute('id')); await Promise.all(device_ids.map(id => this.devices.create({ id, 'jid': this.get('jid') @@ -103569,10 +108285,10 @@ converse.plugins.add('converse-omemo', { * See: https://xmpp.org/extensions/xep-0384.html#usecases-announcing */ publishDevices() { - const item = converse_omemo_$build('item', { + const item = omemo_$build('item', { 'id': 'current' }).c('list', { - 'xmlns': converse_omemo_Strophe.NS.OMEMO + 'xmlns': omemo_Strophe.NS.OMEMO }); this.devices.filter(d => d.get('active')).forEach(d => item.c('device', { 'id': d.get('id') @@ -103580,11 +108296,11 @@ converse.plugins.add('converse-omemo', { const options = { 'pubsub#access_model': 'open' }; - return converse_core_api.pubsub.publish(null, converse_omemo_Strophe.NS.OMEMO_DEVICELIST, item, options, false); + return core_api.pubsub.publish(null, omemo_Strophe.NS.OMEMO_DEVICELIST, item, options, false); }, removeOwnDevices(device_ids) { - if (this.get('jid') !== converse_core_converse.bare_jid) { + if (this.get('jid') !== core_converse.bare_jid) { throw new Error("Cannot remove devices from someone else's device list"); } @@ -103599,8 +108315,8 @@ converse.plugins.add('converse-omemo', { * @memberOf _converse */ - converse_core_converse.DeviceLists = collection_Collection.extend({ - model: converse_core_converse.DeviceList, + core_converse.DeviceLists = Collection.extend({ + model: core_converse.DeviceList, /** * Returns the {@link _converse.DeviceList} for a particular JID. @@ -103616,80 +108332,36 @@ converse.plugins.add('converse-omemo', { } }); - - function parseEncryptedMessage(stanza, attrs) { - if (attrs.is_encrypted && attrs.encrypted.key) { - // https://xmpp.org/extensions/xep-0384.html#usecases-receiving - if (attrs.encrypted.prekey === true) { - return decryptPrekeyWhisperMessage(attrs); - } else { - return decryptWhisperMessage(attrs); - } - } else { - return attrs; - } - } /******************** Event Handlers ********************/ - - converse_core_api.listen.on('parseMessage', parseEncryptedMessage); - converse_core_api.listen.on('parseMUCMessage', parseEncryptedMessage); - converse_core_api.waitUntil('chatBoxesInitialized').then(() => converse_core_converse.chatboxes.on('add', chatbox => { - checkOMEMOSupported(chatbox); - - if (chatbox.get('type') === converse_core_converse.CHATROOMS_TYPE) { - chatbox.occupants.on('add', o => onOccupantAdded(chatbox, o)); - chatbox.features.on('change', () => checkOMEMOSupported(chatbox)); - } - })); - - const onChatInitialized = view => { - view.listenTo(view.model.messages, 'add', message => { - if (message.get('is_encrypted') && !message.get('is_error')) { - view.model.save('omemo_supported', true); - } - }); - view.listenTo(view.model, 'change:omemo_supported', () => { - if (!view.model.get('omemo_supported') && view.model.get('omemo_active')) { - view.model.set('omemo_active', false); - } else { - var _view$el$querySelecto; - - // Manually trigger an update, setting omemo_active to - // false above will automatically trigger one. - (_view$el$querySelecto = view.el.querySelector('converse-chat-toolbar')) === null || _view$el$querySelecto === void 0 ? void 0 : _view$el$querySelecto.requestUpdate(); - } - }); - view.listenTo(view.model, 'change:omemo_active', () => { - view.el.querySelector('converse-chat-toolbar').requestUpdate(); - }); - }; - - converse_core_api.listen.on('chatBoxViewInitialized', onChatInitialized); - converse_core_api.listen.on('chatRoomViewInitialized', onChatInitialized); - converse_core_api.listen.on('connected', registerPEPPushHandler); - converse_core_api.listen.on('getToolbarButtons', getOMEMOToolbarButton); - converse_core_api.listen.on('statusInitialized', initOMEMO); - converse_core_api.listen.on('addClientFeatures', () => converse_core_api.disco.own.features.add("".concat(converse_omemo_Strophe.NS.OMEMO_DEVICELIST, "+notify"))); - converse_core_api.listen.on('userDetailsModalInitialized', contact => { + core_api.waitUntil('chatBoxesInitialized').then(onChatBoxesInitialized); + core_api.listen.on('parseMessage', parseEncryptedMessage); + core_api.listen.on('parseMUCMessage', parseEncryptedMessage); + core_api.listen.on('chatBoxViewInitialized', onChatInitialized); + core_api.listen.on('chatRoomViewInitialized', onChatInitialized); + core_api.listen.on('connected', registerPEPPushHandler); + core_api.listen.on('getToolbarButtons', getOMEMOToolbarButton); + core_api.listen.on('statusInitialized', initOMEMO); + core_api.listen.on('addClientFeatures', () => core_api.disco.own.features.add("".concat(omemo_Strophe.NS.OMEMO_DEVICELIST, "+notify"))); + core_api.listen.on('userDetailsModalInitialized', contact => { const jid = contact.get('jid'); - converse_core_converse.generateFingerprints(jid).catch(e => headless_log.error(e)); + core_converse.generateFingerprints(jid).catch(e => headless_log.error(e)); }); - converse_core_api.listen.on('profileModalInitialized', () => { - converse_core_converse.generateFingerprints(converse_core_converse.bare_jid).catch(e => headless_log.error(e)); + core_api.listen.on('profileModalInitialized', () => { + core_converse.generateFingerprints(core_converse.bare_jid).catch(e => headless_log.error(e)); }); - converse_core_api.listen.on('afterTearDown', () => delete converse_core_converse.omemo_store); - converse_core_api.listen.on('clearSession', () => { - if (converse_core_converse.shouldClearCache() && converse_core_converse.devicelists) { - converse_core_converse.devicelists.clearStore(); + core_api.listen.on('afterTearDown', () => delete core_converse.omemo_store); + core_api.listen.on('clearSession', () => { + if (core_converse.shouldClearCache() && core_converse.devicelists) { + core_converse.devicelists.clearStore(); - delete converse_core_converse.devicelists; + delete core_converse.devicelists; } }); /************************ API ************************/ - Object.assign(converse_core_converse.api, { + Object.assign(core_converse.api, { /** * The "omemo" namespace groups methods relevant to OMEMO * encryption. @@ -103714,14 +108386,14 @@ converse.plugins.add('converse-omemo', { */ 'generate': async () => { // Remove current device - const devicelist = converse_core_converse.devicelists.get(converse_core_converse.bare_jid); + const devicelist = core_converse.devicelists.get(core_converse.bare_jid); - const device_id = converse_core_converse.omemo_store.get('device_id'); + const device_id = core_converse.omemo_store.get('device_id'); if (device_id) { const device = devicelist.devices.get(device_id); - converse_core_converse.omemo_store.unset(device_id); + core_converse.omemo_store.unset(device_id); if (device) { await new Promise(done => device.destroy({ @@ -103735,11 +108407,11 @@ converse.plugins.add('converse-omemo', { // https://xmpp.org/extensions/attic/xep-0384-0.3.0.html#usecases-announcing - await converse_core_converse.omemo_store.generateBundle(); + await core_converse.omemo_store.generateBundle(); await devicelist.publishDevices(); - const device = devicelist.devices.get(converse_core_converse.omemo_store.get('device_id')); + const device = devicelist.devices.get(core_converse.omemo_store.get('device_id')); const fp = generateFingerprint(device); - await converse_core_converse.omemo_store.publishBundle(); + await core_converse.omemo_store.publishBundle(); return fp; } } @@ -103748,7 +108420,7 @@ converse.plugins.add('converse-omemo', { } }); -// CONCATENATED MODULE: ./src/converse-push.js +// CONCATENATED MODULE: ./src/plugins/push.js /** * @module converse-push * @description @@ -103760,16 +108432,16 @@ converse.plugins.add('converse-omemo', { const { - Strophe: converse_push_Strophe, - $iq: converse_push_$iq + Strophe: push_Strophe, + $iq: push_$iq } = converse.env; -converse_push_Strophe.addNamespace('PUSH', 'urn:xmpp:push:0'); +push_Strophe.addNamespace('PUSH', 'urn:xmpp:push:0'); converse.plugins.add('converse-push', { initialize() { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'push_app_servers': [], 'enable_muc_push': false }); @@ -103779,23 +108451,23 @@ converse.plugins.add('converse-push', { return; } - if (!(await converse_core_api.disco.supports(converse_push_Strophe.NS.PUSH, domain || converse_core_converse.bare_jid))) { + if (!(await core_api.disco.supports(push_Strophe.NS.PUSH, domain || core_converse.bare_jid))) { headless_log.warn("Not disabling push app server \"".concat(push_app_server.jid, "\", no disco support from your server.")); return; } - const stanza = converse_push_$iq({ + const stanza = push_$iq({ 'type': 'set' }); - if (domain !== converse_core_converse.bare_jid) { + if (domain !== core_converse.bare_jid) { stanza.attrs({ 'to': domain }); } stanza.c('disable', { - 'xmlns': converse_push_Strophe.NS.PUSH, + 'xmlns': push_Strophe.NS.PUSH, 'jid': push_app_server.jid }); @@ -103805,7 +108477,7 @@ converse.plugins.add('converse-push', { }); } - converse_core_api.sendIQ(stanza).catch(e => { + core_api.sendIQ(stanza).catch(e => { headless_log.error("Could not disable push app server for ".concat(push_app_server.jid)); headless_log.error(e); }); @@ -103816,59 +108488,59 @@ converse.plugins.add('converse-push', { return; } - const identity = await converse_core_api.disco.getIdentity('pubsub', 'push', push_app_server.jid); + const identity = await core_api.disco.getIdentity('pubsub', 'push', push_app_server.jid); if (!identity) { return headless_log.warn("Not enabling push the service \"".concat(push_app_server.jid, "\", it doesn't have the right disco identtiy.")); } - const result = await Promise.all([converse_core_api.disco.supports(converse_push_Strophe.NS.PUSH, push_app_server.jid), converse_core_api.disco.supports(converse_push_Strophe.NS.PUSH, domain)]); + const result = await Promise.all([core_api.disco.supports(push_Strophe.NS.PUSH, push_app_server.jid), core_api.disco.supports(push_Strophe.NS.PUSH, domain)]); if (!result[0] && !result[1]) { headless_log.warn("Not enabling push app server \"".concat(push_app_server.jid, "\", no disco support from your server.")); return; } - const stanza = converse_push_$iq({ + const stanza = push_$iq({ 'type': 'set' }); - if (domain !== converse_core_converse.bare_jid) { + if (domain !== core_converse.bare_jid) { stanza.attrs({ 'to': domain }); } stanza.c('enable', { - 'xmlns': converse_push_Strophe.NS.PUSH, + 'xmlns': push_Strophe.NS.PUSH, 'jid': push_app_server.jid, 'node': push_app_server.node }); if (push_app_server.secret) { stanza.c('x', { - 'xmlns': converse_push_Strophe.NS.XFORM, + 'xmlns': push_Strophe.NS.XFORM, 'type': 'submit' }).c('field', { 'var': 'FORM_TYPE' - }).c('value').t("".concat(converse_push_Strophe.NS.PUBSUB, "#publish-options")).up().up().c('field', { + }).c('value').t("".concat(push_Strophe.NS.PUBSUB, "#publish-options")).up().up().c('field', { 'var': 'secret' }).c('value').t(push_app_server.secret); } - return converse_core_api.sendIQ(stanza); + return core_api.sendIQ(stanza); } async function enablePush(domain) { - domain = domain || converse_core_converse.bare_jid; - const push_enabled = converse_core_converse.session.get('push_enabled') || []; + domain = domain || core_converse.bare_jid; + const push_enabled = core_converse.session.get('push_enabled') || []; if (push_enabled.includes(domain)) { return; } - const enabled_services = converse_core_api.settings.get('push_app_servers').filter(s => !s.disable); - const disabled_services = converse_core_api.settings.get('push_app_servers').filter(s => s.disable); + const enabled_services = core_api.settings.get('push_app_servers').filter(s => !s.disable); + const disabled_services = core_api.settings.get('push_app_servers').filter(s => s.disable); const enabled = enabled_services.map(s => enablePushAppServer(domain, s)); const disabled = disabled_services.map(s => disablePushAppServer(domain, s)); @@ -103881,36 +108553,36 @@ converse.plugins.add('converse-push', { push_enabled.push(domain); } - converse_core_converse.session.save('push_enabled', push_enabled); + core_converse.session.save('push_enabled', push_enabled); } - converse_core_api.listen.on('statusInitialized', () => enablePush()); + core_api.listen.on('statusInitialized', () => enablePush()); function onChatBoxAdded(model) { - if (model.get('type') == converse_core_converse.CHATROOMS_TYPE) { - enablePush(converse_push_Strophe.getDomainFromJid(model.get('jid'))); + if (model.get('type') == core_converse.CHATROOMS_TYPE) { + enablePush(push_Strophe.getDomainFromJid(model.get('jid'))); } } - if (converse_core_api.settings.get('enable_muc_push')) { - converse_core_api.listen.on('chatBoxesInitialized', () => converse_core_converse.chatboxes.on('add', onChatBoxAdded)); + if (core_api.settings.get('enable_muc_push')) { + core_api.listen.on('chatBoxesInitialized', () => core_converse.chatboxes.on('add', onChatBoxAdded)); } } }); // EXTERNAL MODULE: ./src/templates/register_panel.html -var register_panel = __webpack_require__(139); +var register_panel = __webpack_require__(181); var register_panel_default = /*#__PURE__*/__webpack_require__.n(register_panel); // EXTERNAL MODULE: ./src/templates/registration_form.html -var registration_form = __webpack_require__(140); +var registration_form = __webpack_require__(182); var registration_form_default = /*#__PURE__*/__webpack_require__.n(registration_form); // EXTERNAL MODULE: ./src/templates/registration_request.html -var registration_request = __webpack_require__(141); +var registration_request = __webpack_require__(183); var registration_request_default = /*#__PURE__*/__webpack_require__.n(registration_request); -// CONCATENATED MODULE: ./src/converse-register.js +// CONCATENATED MODULE: ./src/plugins/register.js /** * @module converse-register * @description @@ -103935,19 +108607,19 @@ var registration_request_default = /*#__PURE__*/__webpack_require__.n(registrati // Strophe methods for building stanzas const { - Strophe: converse_register_Strophe, - sizzle: converse_register_sizzle, - $iq: converse_register_$iq + Strophe: register_Strophe, + sizzle: register_sizzle, + $iq: register_$iq } = converse.env; -const converse_register_u = converse.env.utils; // Add Strophe Namespaces +const register_u = converse.env.utils; // Add Strophe Namespaces -converse_register_Strophe.addNamespace('REGISTER', 'jabber:iq:register'); // Add Strophe Statuses +register_Strophe.addNamespace('REGISTER', 'jabber:iq:register'); // Add Strophe Statuses -const converse_register_i = Object.keys(converse_register_Strophe.Status).reduce((max, k) => Math.max(max, converse_register_Strophe.Status[k]), 0); -converse_register_Strophe.Status.REGIFAIL = converse_register_i + 1; -converse_register_Strophe.Status.REGISTERED = converse_register_i + 2; -converse_register_Strophe.Status.CONFLICT = converse_register_i + 3; -converse_register_Strophe.Status.NOTACCEPTABLE = converse_register_i + 5; +const register_i = Object.keys(register_Strophe.Status).reduce((max, k) => Math.max(max, register_Strophe.Status[k]), 0); +register_Strophe.Status.REGIFAIL = register_i + 1; +register_Strophe.Status.REGISTERED = register_i + 2; +register_Strophe.Status.CONFLICT = register_i + 3; +register_Strophe.Status.NOTACCEPTABLE = register_i + 5; converse.plugins.add('converse-register', { enabled() { return true; @@ -103977,11 +108649,11 @@ converse.plugins.add('converse-register', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_converse.CONNECTION_STATUS[converse_register_Strophe.Status.REGIFAIL] = 'REGIFAIL'; - converse_core_converse.CONNECTION_STATUS[converse_register_Strophe.Status.REGISTERED] = 'REGISTERED'; - converse_core_converse.CONNECTION_STATUS[converse_register_Strophe.Status.CONFLICT] = 'CONFLICT'; - converse_core_converse.CONNECTION_STATUS[converse_register_Strophe.Status.NOTACCEPTABLE] = 'NOTACCEPTABLE'; - converse_core_api.settings.extend({ + core_converse.CONNECTION_STATUS[register_Strophe.Status.REGIFAIL] = 'REGIFAIL'; + core_converse.CONNECTION_STATUS[register_Strophe.Status.REGISTERED] = 'REGISTERED'; + core_converse.CONNECTION_STATUS[register_Strophe.Status.CONFLICT] = 'CONFLICT'; + core_converse.CONNECTION_STATUS[register_Strophe.Status.NOTACCEPTABLE] = 'NOTACCEPTABLE'; + core_api.settings.extend({ 'allow_registration': true, 'domain_placeholder': i18n_(" e.g. conversejs.org"), // Placeholder text shown in the domain input on the registration form @@ -103989,7 +108661,7 @@ converse.plugins.add('converse-register', { // Link to XMPP providers shown on registration page 'registration_domain': '' }); - Object.assign(converse_core_converse.ControlBoxView.prototype, { + Object.assign(core_converse.ControlBoxView.prototype, { showLoginOrRegisterForm() { if (!this.registerpanel) { return; @@ -104005,8 +108677,8 @@ converse.plugins.add('converse-register', { }, renderRegistrationPanel() { - if (converse_core_api.settings.get('allow_registration')) { - this.registerpanel = new converse_core_converse.RegisterPanel({ + if (core_api.settings.get('allow_registration')) { + this.registerpanel = new core_converse.RegisterPanel({ 'model': this.model }); this.registerpanel.render(); @@ -104026,8 +108698,8 @@ converse.plugins.add('converse-register', { }); function setActiveForm(value) { - converse_core_api.waitUntil('controlBoxInitialized').then(() => { - const controlbox = converse_core_converse.chatboxes.get('controlbox'); + core_api.waitUntil('controlBoxInitialized').then(() => { + const controlbox = core_converse.chatboxes.get('controlbox'); controlbox.set({ 'active-form': value @@ -104035,9 +108707,9 @@ converse.plugins.add('converse-register', { }).catch(e => headless_log.fatal(e)); } - converse_core_converse.router.route('converse/login', () => setActiveForm('login')); + core_converse.router.route('converse/login', () => setActiveForm('login')); - converse_core_converse.router.route('converse/register', () => setActiveForm('register')); + core_converse.router.route('converse/register', () => setActiveForm('register')); /** * @class * @namespace _converse.RegisterPanel @@ -104045,7 +108717,7 @@ converse.plugins.add('converse-register', { */ - converse_core_converse.RegisterPanel = view_View.extend({ + core_converse.RegisterPanel = View.extend({ tagName: 'div', id: "converse-register-panel", className: 'controlbox-pane fade-in', @@ -104056,23 +108728,23 @@ converse.plugins.add('converse-register', { initialize() { this.reset(); - converse_core_api.listen.on('connectionInitialized', () => this.registerHooks()); + core_api.listen.on('connectionInitialized', () => this.registerHooks()); }, render() { this.model.set('registration_form_rendered', false); this.el.innerHTML = register_panel_default()({ '__': i18n_, - 'default_domain': converse_core_api.settings.get('registration_domain'), + 'default_domain': core_api.settings.get('registration_domain'), 'label_register': i18n_('Fetch registration form'), 'help_providers': i18n_('Tip: A list of public XMPP providers is available'), 'help_providers_link': i18n_('here'), - 'href_providers': converse_core_api.settings.get('providers_link'), - 'domain_placeholder': converse_core_api.settings.get('domain_placeholder') + 'href_providers': core_api.settings.get('providers_link'), + 'domain_placeholder': core_api.settings.get('domain_placeholder') }); - if (converse_core_api.settings.get('registration_domain')) { - this.fetchRegistrationForm(converse_core_api.settings.get('registration_domain')); + if (core_api.settings.get('registration_domain')) { + this.fetchRegistrationForm(core_api.settings.get('registration_domain')); } return this; @@ -104082,7 +108754,7 @@ converse.plugins.add('converse-register', { /* Hook into Strophe's _connect_cb, so that we can send an IQ * requesting the registration fields. */ - const conn = converse_core_converse.connection; + const conn = core_converse.connection; const connect_cb = conn._connect_cb.bind(conn); @@ -104105,7 +108777,7 @@ converse.plugins.add('converse-register', { * @param { Function } callback - The callback function */ getRegistrationFields(req, _callback) { - const conn = converse_core_converse.connection; + const conn = core_converse.connection; conn.connected = true; const body = conn._proto._reqToData(req); @@ -104114,7 +108786,7 @@ converse.plugins.add('converse-register', { return; } - if (conn._proto._connect_cb(body) === converse_register_Strophe.Status.CONNFAIL) { + if (conn._proto._connect_cb(body) === register_Strophe.Status.CONNFAIL) { this.showValidationError(i18n_("Sorry, we're unable to connect to your chosen provider.")); return false; } @@ -104129,7 +108801,7 @@ converse.plugins.add('converse-register', { } if (register.length === 0) { - conn._changeConnectStatus(converse_register_Strophe.Status.REGIFAIL); + conn._changeConnectStatus(register_Strophe.Status.REGIFAIL); this.showValidationError(i18n_("Sorry, the given provider does not support in " + "band account registration. Please try with a " + "different provider.")); return true; @@ -104138,10 +108810,10 @@ converse.plugins.add('converse-register', { conn._addSysHandler(this.onRegistrationFields.bind(this), null, "iq", null, null); - const stanza = converse_register_$iq({ + const stanza = register_$iq({ type: "get" }).c("query", { - xmlns: converse_register_Strophe.NS.REGISTER + xmlns: register_Strophe.NS.REGISTER }).tree(); stanza.setAttribute("id", conn.getUniqueId("sendIQ")); conn.send(stanza); @@ -104157,13 +108829,13 @@ converse.plugins.add('converse-register', { */ onRegistrationFields(stanza) { if (stanza.getAttribute("type") === "error") { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.REGIFAIL, i18n_('Something went wrong while establishing a connection with "%1$s". ' + 'Are you sure it exists?', this.domain)); + core_converse.connection._changeConnectStatus(register_Strophe.Status.REGIFAIL, i18n_('Something went wrong while establishing a connection with "%1$s". ' + 'Are you sure it exists?', this.domain)); return false; } if (stanza.getElementsByTagName("query").length !== 1) { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.REGIFAIL, "unknown"); + core_converse.connection._changeConnectStatus(register_Strophe.Status.REGIFAIL, "unknown"); return false; } @@ -104247,13 +108919,13 @@ converse.plugins.add('converse-register', { } this.reset({ - 'domain': converse_register_Strophe.getDomainFromJid(domain_name), + 'domain': register_Strophe.getDomainFromJid(domain_name), '_registering': true }); - await converse_core_converse.initConnection(this.domain); // When testing, the test tears down before the async function + await core_converse.initConnection(this.domain); // When testing, the test tears down before the async function // above finishes. So we use optional chaining here - (_converse$connection = converse_core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connect(this.domain, "", status => this.onConnectStatusChanged(status)); + (_converse$connection = core_converse.connection) === null || _converse$connection === void 0 ? void 0 : _converse$connection.connect(this.domain, "", status => this.onConnectStatusChanged(status)); return false; }, @@ -104262,8 +108934,8 @@ converse.plugins.add('converse-register', { * form is being fetched. */ this.clearRegistrationForm().insertAdjacentHTML('beforeend', registration_request_default()({ - '__': converse_core_converse.__, - 'cancel': converse_core_api.settings.get('registration_domain') + '__': core_converse.__, + 'cancel': core_api.settings.get('registration_domain') })); }, @@ -104308,31 +108980,31 @@ converse.plugins.add('converse-register', { onConnectStatusChanged(status_code) { headless_log.debug('converse-register: onConnectStatusChanged'); - if ([converse_register_Strophe.Status.DISCONNECTED, converse_register_Strophe.Status.CONNFAIL, converse_register_Strophe.Status.REGIFAIL, converse_register_Strophe.Status.NOTACCEPTABLE, converse_register_Strophe.Status.CONFLICT].includes(status_code)) { - headless_log.error("Problem during registration: Strophe.Status is ".concat(converse_core_converse.CONNECTION_STATUS[status_code])); + if ([register_Strophe.Status.DISCONNECTED, register_Strophe.Status.CONNFAIL, register_Strophe.Status.REGIFAIL, register_Strophe.Status.NOTACCEPTABLE, register_Strophe.Status.CONFLICT].includes(status_code)) { + headless_log.error("Problem during registration: Strophe.Status is ".concat(core_converse.CONNECTION_STATUS[status_code])); this.abortRegistration(); - } else if (status_code === converse_register_Strophe.Status.REGISTERED) { + } else if (status_code === register_Strophe.Status.REGISTERED) { headless_log.debug("Registered successfully."); - converse_core_converse.connection.reset(); + core_converse.connection.reset(); this.showSpinner(); - if (["converse/login", "converse/register"].includes(converse_core_converse.router.history.getFragment())) { - converse_core_converse.router.navigate('', { + if (["converse/login", "converse/register"].includes(core_converse.router.history.getFragment())) { + core_converse.router.navigate('', { 'replace': true }); } if (this.fields.password && this.fields.username) { // automatically log the user in - converse_core_converse.connection.connect(this.fields.username.toLowerCase() + '@' + this.domain.toLowerCase(), this.fields.password, converse_core_converse.onConnectStatusChanged); + core_converse.connection.connect(this.fields.username.toLowerCase() + '@' + this.domain.toLowerCase(), this.fields.password, core_converse.onConnectStatusChanged); this.giveFeedback(i18n_('Now logging you in'), 'info'); } else { - converse_core_converse.chatboxviews.get('controlbox').renderLoginPanel(); + core_converse.chatboxviews.get('controlbox').renderLoginPanel(); - converse_core_converse.giveFeedback(i18n_('Registered successfully')); + core_converse.giveFeedback(i18n_('Registered successfully')); } this.reset(); @@ -104379,7 +109051,7 @@ converse.plugins.add('converse-register', { 'domain': this.domain, 'title': this.title, 'instructions': this.instructions, - 'registration_domain': converse_core_api.settings.get('registration_domain') + 'registration_domain': core_api.settings.get('registration_domain') }); const buttons = form.querySelector('fieldset.buttons'); @@ -104447,21 +109119,21 @@ converse.plugins.add('converse-register', { ev.preventDefault(); } - converse_core_converse.connection._proto._abortAllRequests(); + core_converse.connection._proto._abortAllRequests(); - converse_core_converse.connection.reset(); + core_converse.connection.reset(); this.render(); }, abortRegistration() { - converse_core_converse.connection._proto._abortAllRequests(); + core_converse.connection._proto._abortAllRequests(); - converse_core_converse.connection.reset(); + core_converse.connection.reset(); if (this.model.get('registration_form_rendered')) { - if (converse_core_api.settings.get('registration_domain') && this.model.get('registration_form_rendered')) { - this.fetchRegistrationForm(converse_core_api.settings.get('registration_domain')); + if (core_api.settings.get('registration_domain') && this.model.get('registration_form_rendered')) { + this.fetchRegistrationForm(core_api.settings.get('registration_domain')); } } else { this.render(); @@ -104489,17 +109161,17 @@ converse.plugins.add('converse-register', { return; } - const inputs = converse_register_sizzle(':input:not([type=button]):not([type=submit])', form); - const iq = converse_register_$iq({ + const inputs = register_sizzle(':input:not([type=button]):not([type=submit])', form); + const iq = register_$iq({ 'type': 'set', - 'id': converse_register_u.getUniqueId() + 'id': register_u.getUniqueId() }).c("query", { - xmlns: converse_register_Strophe.NS.REGISTER + xmlns: register_Strophe.NS.REGISTER }); if (this.form_type === 'xform') { iq.c("x", { - xmlns: converse_register_Strophe.NS.XFORM, + xmlns: register_Strophe.NS.XFORM, type: 'submit' }); const xml_nodes = inputs.map(i => utils_form.webForm2xForm(i)).filter(n => n); @@ -104508,9 +109180,9 @@ converse.plugins.add('converse-register', { inputs.forEach(input => iq.c(input.getAttribute('name'), {}, input.value)); } - converse_core_converse.connection._addSysHandler(this._onRegisterIQ.bind(this), null, "iq", null, null); + core_converse.connection._addSysHandler(this._onRegisterIQ.bind(this), null, "iq", null, null); - converse_core_converse.connection.send(iq); + core_converse.connection.send(iq); this.setFields(iq.tree()); }, @@ -104522,7 +109194,7 @@ converse.plugins.add('converse-register', { */ setFields(stanza) { const query = stanza.querySelector('query'); - const xform = converse_register_sizzle("x[xmlns=\"".concat(converse_register_Strophe.NS.XFORM, "\"]"), query); + const xform = register_sizzle("x[xmlns=\"".concat(register_Strophe.NS.XFORM, "\"]"), query); if (xform.length > 0) { this._setFieldsFromXForm(xform.pop()); @@ -104534,17 +109206,17 @@ converse.plugins.add('converse-register', { _setFieldsFromLegacy(query) { [].forEach.call(query.children, field => { if (field.tagName.toLowerCase() === 'instructions') { - this.instructions = converse_register_Strophe.getText(field); + this.instructions = register_Strophe.getText(field); return; } else if (field.tagName.toLowerCase() === 'x') { if (field.getAttribute('xmlns') === 'jabber:x:oob') { - this.urls.concat(converse_register_sizzle('url', field).map(u => u.textContent)); + this.urls.concat(register_sizzle('url', field).map(u => u.textContent)); } return; } - this.fields[field.tagName.toLowerCase()] = converse_register_Strophe.getText(field); + this.fields[field.tagName.toLowerCase()] = register_Strophe.getText(field); }); this.form_type = 'legacy'; }, @@ -104584,7 +109256,7 @@ converse.plugins.add('converse-register', { let error = stanza.getElementsByTagName("error"); if (error.length !== 1) { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.REGIFAIL, "unknown"); + core_converse.connection._changeConnectStatus(register_Strophe.Status.REGIFAIL, "unknown"); return false; } @@ -104592,14 +109264,14 @@ converse.plugins.add('converse-register', { error = error[0].firstElementChild.tagName.toLowerCase(); if (error === 'conflict') { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.CONFLICT, error); + core_converse.connection._changeConnectStatus(register_Strophe.Status.CONFLICT, error); } else if (error === 'not-acceptable') { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.NOTACCEPTABLE, error); + core_converse.connection._changeConnectStatus(register_Strophe.Status.NOTACCEPTABLE, error); } else { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.REGIFAIL, error); + core_converse.connection._changeConnectStatus(register_Strophe.Status.REGIFAIL, error); } } else { - converse_core_converse.connection._changeConnectStatus(converse_register_Strophe.Status.REGISTERED, null); + core_converse.connection._changeConnectStatus(register_Strophe.Status.REGISTERED, null); } return false; @@ -104608,7 +109280,7 @@ converse.plugins.add('converse-register', { }); /************************ BEGIN Event Handlers ************************/ - converse_core_api.listen.on('controlBoxInitialized', view => { + core_api.listen.on('controlBoxInitialized', view => { view.model.on('change:active-form', view.showLoginOrRegisterForm, view); }); /************************ END Event Handlers ************************/ @@ -104619,7 +109291,7 @@ converse.plugins.add('converse-register', { function rooms_list_templateObject5() { const data = rooms_list_taggedTemplateLiteral(["\n <div class=\"list-container list-container--openrooms ", "\">\n <a class=\"list-toggle open-rooms-toggle controlbox-padded\" title=\"", "\" @click=", ">\n <span class=\"fa ", "\"></span> ", "</a>\n <div class=\"items-list rooms-list open-rooms-list ", "\">\n ", "\n </div>\n </div>"]); - rooms_list_templateObject5 = function _templateObject5() { + rooms_list_templateObject5 = function () { return data; }; @@ -104629,7 +109301,7 @@ function rooms_list_templateObject5() { function rooms_list_templateObject4() { const data = rooms_list_taggedTemplateLiteral(["\n <div class=\"list-item controlbox-padded available-chatroom d-flex flex-row ", " ", "\"\n data-room-jid=\"", "\">\n\n ", "\n <a class=\"list-item-link open-room available-room w-100\"\n data-room-jid=\"", "\"\n title=\"", "\"\n @click=", ">", "</a>\n\n ", "\n\n <a class=\"list-item-action room-info fa fa-info-circle\"\n data-room-jid=\"", "\"\n title=\"", "\"\n @click=", "></a>\n\n <a class=\"list-item-action fa fa-sign-out-alt close-room\"\n data-room-jid=\"", "\"\n data-room-name=\"", "\"\n title=\"", "\"\n @click=", "></a>\n </div>"]); - rooms_list_templateObject4 = function _templateObject4() { + rooms_list_templateObject4 = function () { return data; }; @@ -104639,7 +109311,7 @@ function rooms_list_templateObject4() { function rooms_list_templateObject3() { const data = rooms_list_taggedTemplateLiteral(["<span class=\"list-item-badge badge badge--muc msgs-indicator\">", "</span>"]); - rooms_list_templateObject3 = function _templateObject3() { + rooms_list_templateObject3 = function () { return data; }; @@ -104649,7 +109321,7 @@ function rooms_list_templateObject3() { function rooms_list_templateObject2() { const data = rooms_list_taggedTemplateLiteral(["\n <a class=\"list-item-action fa fa-bookmark add-bookmark\"\n data-room-jid=\"", "\"\n data-bookmark-name=\"", "\"\n @click=", "\n title=\"", "\"></a>"]); - rooms_list_templateObject2 = function _templateObject2() { + rooms_list_templateObject2 = function () { return data; }; @@ -104659,7 +109331,7 @@ function rooms_list_templateObject2() { function rooms_list_templateObject() { const data = rooms_list_taggedTemplateLiteral(["\n <a class=\"list-item-action fa fa-bookmark remove-bookmark button-on\"\n data-room-jid=\"", "\"\n data-bookmark-name=\"", "\"\n @click=", "\n title=\"", "\"></a>"]); - rooms_list_templateObject = function _templateObject() { + rooms_list_templateObject = function () { return data; }; @@ -104698,7 +109370,7 @@ const room_item = o => { room }, o)))); }); -// CONCATENATED MODULE: ./src/converse-roomslist.js +// CONCATENATED MODULE: ./src/plugins/roomslist.js /** * @module converse-roomslist * @description @@ -104715,9 +109387,9 @@ const room_item = o => { const { - Strophe: converse_roomslist_Strophe + Strophe: roomslist_Strophe } = converse.env; -const converse_roomslist_u = converse.env.utils; +const roomslist_u = converse.env.utils; converse.plugins.add('converse-roomslist', { /* Optional dependencies are other plugins which might be * overridden or relied upon, and therefore need to be loaded before @@ -104738,13 +109410,13 @@ converse.plugins.add('converse-roomslist', { * loaded by converse.js's plugin machinery. */ // Promises exposed by this plugin - converse_core_api.promises.add('roomsListInitialized'); - converse_core_converse.RoomsList = model_Model.extend({ + core_api.promises.add('roomsListInitialized'); + core_converse.RoomsList = model_Model.extend({ defaults: { - "toggle-state": converse_core_converse.OPENED + "toggle-state": core_converse.OPENED } }); - converse_core_converse.RoomsListView = view_View.extend({ + core_converse.RoomsListView = View.extend({ tagName: 'span', initialize() { @@ -104752,40 +109424,40 @@ converse.plugins.add('converse-roomslist', { this.listenTo(this.model, 'remove', this.renderIfChatRoom); this.listenTo(this.model, 'destroy', this.renderIfChatRoom); this.listenTo(this.model, 'change', this.renderIfRelevantChange); - const id = "converse.roomslist".concat(converse_core_converse.bare_jid); - this.list_model = new converse_core_converse.RoomsList({ + const id = "converse.roomslist".concat(core_converse.bare_jid); + this.list_model = new core_converse.RoomsList({ id }); - this.list_model.browserStorage = converse_core_converse.createStore(id); + this.list_model.browserStorage = core_converse.createStore(id); this.list_model.fetch(); this.render(); this.insertIntoControlBox(); }, renderIfChatRoom(model) { - converse_roomslist_u.isChatRoom(model) && this.render(); + roomslist_u.isChatRoom(model) && this.render(); }, renderIfRelevantChange(model) { const attrs = ['bookmarked', 'hidden', 'name', 'num_unread', 'num_unread_general']; const changed = model.changed || {}; - if (converse_roomslist_u.isChatRoom(model) && Object.keys(changed).filter(m => attrs.includes(m)).length) { + if (roomslist_u.isChatRoom(model) && Object.keys(changed).filter(m => attrs.includes(m)).length) { this.render(); } }, toHTML() { return rooms_list({ - '_converse': converse_core_converse, + '_converse': core_converse, 'addBookmark': ev => this.addBookmark(ev), - 'allow_bookmarks': converse_core_converse.allow_bookmarks && converse_core_converse.bookmarks, + 'allow_bookmarks': core_converse.allow_bookmarks && core_converse.bookmarks, 'closeRoom': ev => this.closeRoom(ev), - 'collapsed': this.list_model.get('toggle-state') !== converse_core_converse.OPENED, - 'currently_open': room => converse_core_converse.isUniView() && !room.get('hidden'), + 'collapsed': this.list_model.get('toggle-state') !== core_converse.OPENED, + 'currently_open': room => core_converse.isUniView() && !room.get('hidden'), 'openRoom': ev => this.openRoom(ev), 'removeBookmark': ev => this.removeBookmark(ev), - 'rooms': this.model.filter(m => m.get('type') === converse_core_converse.CHATROOMS_TYPE), + 'rooms': this.model.filter(m => m.get('type') === core_converse.CHATROOMS_TYPE), 'showRoomDetailsModal': ev => this.showRoomDetailsModal(ev), 'toggleRoomsList': ev => this.toggleRoomsList(ev), 'toggle_state': this.list_model.get('toggle-state') @@ -104793,9 +109465,9 @@ converse.plugins.add('converse-roomslist', { }, insertIntoControlBox() { - const controlboxview = converse_core_converse.chatboxviews.get('controlbox'); + const controlboxview = core_converse.chatboxviews.get('controlbox'); - if (controlboxview !== undefined && !converse_roomslist_u.rootContains(converse_core_converse.root, this.el)) { + if (controlboxview !== undefined && !roomslist_u.rootContains(core_converse.root, this.el)) { const el = controlboxview.el.querySelector('.list-container--openrooms'); el && el.parentNode.replaceChild(this.el, el); } @@ -104804,17 +109476,12 @@ converse.plugins.add('converse-roomslist', { showRoomDetailsModal(ev) { const jid = ev.target.getAttribute('data-room-jid'); - const room = converse_core_converse.chatboxes.get(jid); + const room = core_converse.chatboxes.get(jid); ev.preventDefault(); - - if (room.room_details_modal === undefined) { - room.room_details_modal = new muc_details({ - 'model': room - }); - } - - room.room_details_modal.show(ev); + core_api.modal.show(modals_muc_details, { + 'model': room + }, ev); }, async openRoom(ev) { @@ -104822,10 +109489,10 @@ converse.plugins.add('converse-roomslist', { const name = ev.target.textContent; const jid = ev.target.getAttribute('data-room-jid'); const data = { - 'name': name || converse_roomslist_Strophe.unescapeNode(converse_roomslist_Strophe.getNodeFromJid(jid)) || jid + 'name': name || roomslist_Strophe.unescapeNode(roomslist_Strophe.getNodeFromJid(jid)) || jid }; - await converse_core_api.rooms.open(jid, data, true); - converse_core_api.chatviews.get(jid).maybeFocus(); + await core_api.rooms.open(jid, data, true); + core_api.chatviews.get(jid).maybeFocus(); }, closeRoom(ev) { @@ -104835,12 +109502,12 @@ converse.plugins.add('converse-roomslist', { if (confirm(i18n_("Are you sure you want to leave the groupchat %1$s?", name))) { // TODO: replace with API call - converse_core_converse.chatboxviews.get(jid).close(); + core_converse.chatboxviews.get(jid).close(); } }, - removeBookmark: converse_core_converse.removeBookmarkViaEvent, - addBookmark: converse_core_converse.addBookmarkViaEvent, + removeBookmark: core_converse.removeBookmarkViaEvent, + addBookmark: core_converse.addBookmarkViaEvent, toggleRoomsList(ev) { if (ev && ev.preventDefault) { @@ -104850,17 +109517,17 @@ converse.plugins.add('converse-roomslist', { const icon_el = ev.target.matches('.fa') ? ev.target : ev.target.querySelector('.fa'); if (icon_el.classList.contains("fa-caret-down")) { - converse_roomslist_u.slideIn(this.el.querySelector('.open-rooms-list')).then(() => { + roomslist_u.slideIn(this.el.querySelector('.open-rooms-list')).then(() => { this.list_model.save({ - 'toggle-state': converse_core_converse.CLOSED + 'toggle-state': core_converse.CLOSED }); icon_el.classList.remove("fa-caret-down"); icon_el.classList.add("fa-caret-right"); }); } else { - converse_roomslist_u.slideOut(this.el.querySelector('.open-rooms-list')).then(() => { + roomslist_u.slideOut(this.el.querySelector('.open-rooms-list')).then(() => { this.list_model.save({ - 'toggle-state': converse_core_converse.OPENED + 'toggle-state': core_converse.OPENED }); icon_el.classList.remove("fa-caret-right"); icon_el.classList.add("fa-caret-down"); @@ -104870,9 +109537,9 @@ converse.plugins.add('converse-roomslist', { }); - const initRoomsListView = function initRoomsListView() { - converse_core_converse.rooms_list_view = new converse_core_converse.RoomsListView({ - 'model': converse_core_converse.chatboxes + const initRoomsListView = function () { + core_converse.rooms_list_view = new core_converse.RoomsListView({ + 'model': core_converse.chatboxes }); /** * Triggered once the _converse.RoomsListView has been created and initialized. @@ -104880,39 +109547,39 @@ converse.plugins.add('converse-roomslist', { * @example _converse.api.listen.on('roomsListInitialized', status => { ... }); */ - converse_core_api.trigger('roomsListInitialized'); + core_api.trigger('roomsListInitialized'); }; - converse_core_api.listen.on('connected', async () => { - if (converse_core_converse.allow_bookmarks) { - await converse_core_api.waitUntil('bookmarksInitialized'); + core_api.listen.on('connected', async () => { + if (core_converse.allow_bookmarks) { + await core_api.waitUntil('bookmarksInitialized'); } else { - await Promise.all([converse_core_api.waitUntil('chatBoxesFetched'), converse_core_api.waitUntil('roomsPanelRendered')]); + await Promise.all([core_api.waitUntil('chatBoxesFetched'), core_api.waitUntil('roomsPanelRendered')]); } initRoomsListView(); }); - converse_core_api.listen.on('reconnected', initRoomsListView); + core_api.listen.on('reconnected', initRoomsListView); } }); -// CONCATENATED MODULE: ./src/templates/add_contact_modal.js -function add_contact_modal_templateObject() { - const data = add_contact_modal_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"addContactModalLabel\">", "</h5>\n ", "\n </div>\n <form class=\"converse-form add-xmpp-contact\">\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"form-group add-xmpp-contact__jid\">\n <label class=\"clearfix\" for=\"jid\">", ":</label>\n <div class=\"suggestion-box suggestion-box__jid\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <input type=\"text\" name=\"jid\" ?required=", "\n value=\"", "\"\n class=\"form-control suggestion-box__input\"\n placeholder=\"", "\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </div>\n <div class=\"form-group add-xmpp-contact__name\">\n <label class=\"clearfix\" for=\"name\">", ":</label>\n <div class=\"suggestion-box suggestion-box__name\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <input type=\"text\" name=\"name\" value=\"", "\"\n class=\"form-control suggestion-box__input\"\n placeholder=\"", "\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"invalid-feedback\">", "</div>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n </div>\n "]); +// CONCATENATED MODULE: ./src/modals/templates/add-contact.js +function add_contact_templateObject() { + const data = add_contact_taggedTemplateLiteral(["\n <div class=\"modal-dialog\" role=\"document\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h5 class=\"modal-title\" id=\"addContactModalLabel\">", "</h5>\n ", "\n </div>\n <form class=\"converse-form add-xmpp-contact\">\n <div class=\"modal-body\">\n <span class=\"modal-alert\"></span>\n <div class=\"form-group add-xmpp-contact__jid\">\n <label class=\"clearfix\" for=\"jid\">", ":</label>\n <div class=\"suggestion-box suggestion-box__jid\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <input type=\"text\" name=\"jid\" ?required=", "\n value=\"", "\"\n class=\"form-control suggestion-box__input\"\n placeholder=\"", "\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </div>\n <div class=\"form-group add-xmpp-contact__name\">\n <label class=\"clearfix\" for=\"name\">", ":</label>\n <div class=\"suggestion-box suggestion-box__name\">\n <ul class=\"suggestion-box__results suggestion-box__results--above\" hidden=\"\"></ul>\n <input type=\"text\" name=\"name\" value=\"", "\"\n class=\"form-control suggestion-box__input\"\n placeholder=\"", "\"/>\n <span class=\"suggestion-box__additions visually-hidden\" role=\"status\" aria-live=\"assertive\" aria-relevant=\"additions\"></span>\n </div>\n </div>\n <div class=\"form-group\">\n <div class=\"invalid-feedback\">", "</div>\n </div>\n <button type=\"submit\" class=\"btn btn-primary\">", "</button>\n </div>\n </form>\n </div>\n </div>\n "]); - add_contact_modal_templateObject = function _templateObject() { + add_contact_templateObject = function () { return data; }; return data; } -function add_contact_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } +function add_contact_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } -/* harmony default export */ var add_contact_modal = (o => { +/* harmony default export */ var add_contact = (o => { const i18n_contact_placeholder = i18n_('name@example.org'); const i18n_add = i18n_('Add'); @@ -104925,29 +109592,191 @@ function add_contact_modal_taggedTemplateLiteral(strings, raw) { if (!raw) { raw const i18n_nickname = i18n_('Nickname'); - return lit_html_html(add_contact_modal_templateObject(), i18n_new_contact, modal_header_close_button, i18n_xmpp_address, !o._converse.xhr_user_search_url, o.jid || '', i18n_contact_placeholder, i18n_nickname, o.nickname || '', i18n_nickname, i18n_error_message, i18n_add); + return lit_html_html(add_contact_templateObject(), i18n_new_contact, modal_header_close_button, i18n_xmpp_address, !o._converse.xhr_user_search_url, o.jid || '', i18n_contact_placeholder, i18n_nickname, o.nickname || '', i18n_nickname, i18n_error_message, i18n_add); +}); +// CONCATENATED MODULE: ./src/modals/add-contact.js + + + + + +const { + Strophe: add_contact_Strophe +} = converse.env; +const add_contact_u = converse.env.utils; +const AddContactModal = modals_base.extend({ + id: "add-contact-modal", + events: { + 'submit form': 'addContactFromForm' + }, + + initialize() { + modals_base.prototype.initialize.apply(this, arguments); + this.listenTo(this.model, 'change', this.render); + }, + + toHTML() { + const label_nickname = core_api.settings.get('xhr_user_search_url') ? i18n_('Contact name') : i18n_('Optional nickname'); + return add_contact(Object.assign(this.model.toJSON(), { + _converse: core_converse, + label_nickname + })); + }, + + afterRender() { + if (typeof core_api.settings.get('xhr_user_search_url') === 'string') { + this.initXHRAutoComplete(); + } else { + this.initJIDAutoComplete(); + } + + const jid_input = this.el.querySelector('input[name="jid"]'); + this.el.addEventListener('shown.bs.modal', () => jid_input.focus(), false); + }, + + initJIDAutoComplete() { + if (!core_api.settings.get('autocomplete_add_contact')) { + return; + } + + const el = this.el.querySelector('.suggestion-box__jid').parentElement; + this.jid_auto_complete = new core_converse.AutoComplete(el, { + 'data': (text, input) => "".concat(input.slice(0, input.indexOf("@")), "@").concat(text), + 'filter': core_converse.FILTER_STARTSWITH, + 'list': [...new Set(core_converse.roster.map(item => add_contact_Strophe.getDomainFromJid(item.get('jid'))))] + }); + }, + + initXHRAutoComplete() { + if (!core_api.settings.get('autocomplete_add_contact')) { + return this.initXHRFetch(); + } + + const el = this.el.querySelector('.suggestion-box__name').parentElement; + this.name_auto_complete = new core_converse.AutoComplete(el, { + 'auto_evaluate': false, + 'filter': core_converse.FILTER_STARTSWITH, + 'list': [] + }); + const xhr = new window.XMLHttpRequest(); // `open` must be called after `onload` for mock/testing purposes. + + xhr.onload = () => { + if (xhr.responseText) { + const r = xhr.responseText; + this.name_auto_complete.list = JSON.parse(r).map(i => ({ + 'label': i.fullname || i.jid, + 'value': i.jid + })); + this.name_auto_complete.auto_completing = true; + this.name_auto_complete.evaluate(); + } + }; + + const input_el = this.el.querySelector('input[name="name"]'); + input_el.addEventListener('input', lodash_es_debounce(() => { + xhr.open("GET", "".concat(core_api.settings.get('xhr_user_search_url'), "q=").concat(encodeURIComponent(input_el.value)), true); + xhr.send(); + }, 300)); + this.name_auto_complete.on('suggestion-box-selectcomplete', ev => { + this.el.querySelector('input[name="name"]').value = ev.text.label; + this.el.querySelector('input[name="jid"]').value = ev.text.value; + }); + }, + + initXHRFetch() { + this.xhr = new window.XMLHttpRequest(); + + this.xhr.onload = () => { + if (this.xhr.responseText) { + const r = this.xhr.responseText; + const list = JSON.parse(r).map(i => ({ + 'label': i.fullname || i.jid, + 'value': i.jid + })); + + if (list.length !== 1) { + const el = this.el.querySelector('.invalid-feedback'); + el.textContent = i18n_('Sorry, could not find a contact with that name'); + add_contact_u.addClass('d-block', el); + return; + } + + const jid = list[0].value; + + if (this.validateSubmission(jid)) { + const form = this.el.querySelector('form'); + const name = list[0].label; + this.afterSubmission(form, jid, name); + } + } + }; + }, + + validateSubmission(jid) { + const el = this.el.querySelector('.invalid-feedback'); + + if (!jid || lodash_es_compact(jid.split('@')).length < 2) { + add_contact_u.addClass('is-invalid', this.el.querySelector('input[name="jid"]')); + add_contact_u.addClass('d-block', el); + return false; + } else if (core_converse.roster.get(add_contact_Strophe.getBareJidFromJid(jid))) { + el.textContent = i18n_('This contact has already been added'); + add_contact_u.addClass('d-block', el); + return false; + } + + add_contact_u.removeClass('d-block', el); + return true; + }, + + afterSubmission(form, jid, name) { + core_converse.roster.addAndSubscribe(jid, name); + + this.model.clear(); + this.modal.hide(); + }, + + addContactFromForm(ev) { + ev.preventDefault(); + const data = new FormData(ev.target), + jid = (data.get('jid') || '').trim(); + + if (!jid && typeof core_api.settings.get('xhr_user_search_url') === 'string') { + const input_el = this.el.querySelector('input[name="name"]'); + this.xhr.open("GET", "".concat(core_api.settings.get('xhr_user_search_url'), "q=").concat(encodeURIComponent(input_el.value)), true); + this.xhr.send(); + return; + } + + if (this.validateSubmission(jid)) { + this.afterSubmission(ev.target, jid, data.get('name')); + } + } + }); +core_converse.AddContactModal = AddContactModal; +/* harmony default export */ var modals_add_contact = (AddContactModal); // EXTERNAL MODULE: ./src/templates/group_header.html -var group_header = __webpack_require__(142); +var group_header = __webpack_require__(184); var group_header_default = /*#__PURE__*/__webpack_require__.n(group_header); // EXTERNAL MODULE: ./src/templates/pending_contact.html -var pending_contact = __webpack_require__(143); +var pending_contact = __webpack_require__(185); var pending_contact_default = /*#__PURE__*/__webpack_require__.n(pending_contact); // EXTERNAL MODULE: ./src/templates/requesting_contact.html -var requesting_contact = __webpack_require__(144); +var requesting_contact = __webpack_require__(186); var requesting_contact_default = /*#__PURE__*/__webpack_require__.n(requesting_contact); // EXTERNAL MODULE: ./src/templates/roster.html -var roster = __webpack_require__(145); +var roster = __webpack_require__(187); var roster_default = /*#__PURE__*/__webpack_require__.n(roster); // CONCATENATED MODULE: ./src/templates/roster_filter.js function roster_filter_templateObject() { const data = roster_filter_taggedTemplateLiteral(["\n <form class=\"controlbox-padded roster-filter-form input-button-group ", "\"\n @submit=", ">\n <div class=\"form-inline flex-nowrap\">\n <div class=\"filter-by d-flex flex-nowrap\">\n <span @click=", " class=\"fa fa-user ", "\" data-type=\"contacts\" title=\"", "\"></span>\n <span @click=", " class=\"fa fa-users ", "\" data-type=\"groups\" title=\"", "\"></span>\n <span @click=", " class=\"fa fa-circle ", "\" data-type=\"state\" title=\"", "\"></span>\n </div>\n <div class=\"btn-group\">\n <input .value=\"", "\"\n @keydown=", "\n class=\"roster-filter form-control ", "\"\n placeholder=\"", "\"/>\n <span class=\"clear-input fa fa-times ", "\"\n @click=", ">\n </span>\n </div>\n <select class=\"form-control state-type ", "\"\n @change=", ">\n <option value=\"\">", "</option>\n <option ?selected=", " value=\"unread_messages\">", "</option>\n <option ?selected=", " value=\"online\">", "</option>\n <option ?selected=", " value=\"chat\">", "</option>\n <option ?selected=", " value=\"dnd\">", "</option>\n <option ?selected=", " value=\"away\">", "</option>\n <option ?selected=", " value=\"xa\">", "</option>\n <option ?selected=", " value=\"offline\">", "</option>\n </select>\n </div>\n </form>\n"]); - roster_filter_templateObject = function _templateObject() { + roster_filter_templateObject = function () { return data; }; @@ -104959,10 +109788,10 @@ function roster_filter_taggedTemplateLiteral(strings, raw) { if (!raw) { raw = s /* harmony default export */ var roster_filter = (o => lit_html_html(roster_filter_templateObject(), !o.visible ? 'hidden' : 'fade-in', o.submitFilter, o.changeTypeFilter, o.filter_type === 'contacts' ? 'selected' : '', o.title_contact_filter, o.changeTypeFilter, o.filter_type === 'groups' ? 'selected' : '', o.title_group_filter, o.changeTypeFilter, o.filter_type === 'state' ? 'selected' : '', o.title_status_filter, o.filter_text || '', o.liveFilter, o.filter_type === 'state' ? 'hidden' : '', o.placeholder, !o.filter_text || o.filter_type === 'state' ? 'hidden' : '', o.clearFilter, o.filter_type !== 'state' ? 'hidden' : '', o.changeChatStateFilter, o.label_any, o.chat_state === 'unread_messages', o.label_unread_messages, o.chat_state === 'online', o.label_online, o.chat_state === 'chat', o.label_chatty, o.chat_state === 'dnd', o.label_busy, o.chat_state === 'away', o.label_away, o.chat_state === 'xa', o.label_xa, o.chat_state === 'offline', o.label_offline)); // EXTERNAL MODULE: ./src/templates/roster_item.html -var templates_roster_item = __webpack_require__(146); +var templates_roster_item = __webpack_require__(188); var roster_item_default = /*#__PURE__*/__webpack_require__.n(templates_roster_item); -// CONCATENATED MODULE: ./src/converse-rosterview.js +// CONCATENATED MODULE: ./src/plugins/rosterview.js /** * @module converse-rosterview * @copyright 2020, the Converse.js contributors @@ -104985,11 +109814,7 @@ var roster_item_default = /*#__PURE__*/__webpack_require__.n(templates_roster_it - -const { - Strophe: converse_rosterview_Strophe -} = converse.env; -const converse_rosterview_u = converse.env.utils; +const rosterview_u = converse.env.utils; converse.plugins.add('converse-rosterview', { dependencies: ["converse-roster", "converse-modal", "converse-chatboxviews"], @@ -104997,7 +109822,7 @@ converse.plugins.add('converse-rosterview', { /* The initialize function gets called as soon as the plugin is * loaded by converse.js's plugin machinery. */ - converse_core_api.settings.extend({ + core_api.settings.extend({ 'autocomplete_add_contact': true, 'allow_chat_pending_contacts': true, 'allow_contact_removal': true, @@ -105005,7 +109830,7 @@ converse.plugins.add('converse-rosterview', { 'roster_groups': true, 'xhr_user_search_url': null }); - converse_core_api.promises.add('rosterViewInitialized'); + core_api.promises.add('rosterViewInitialized'); const STATUSES = { 'dnd': i18n_('This contact is busy'), 'online': i18n_('This contact is online'), @@ -105014,157 +109839,7 @@ converse.plugins.add('converse-rosterview', { 'xa': i18n_('This contact is away for an extended period'), 'away': i18n_('This contact is away') }; - converse_core_converse.AddContactModal = BootstrapModal.extend({ - id: "add-contact-modal", - events: { - 'submit form': 'addContactFromForm' - }, - - initialize() { - BootstrapModal.prototype.initialize.apply(this, arguments); - this.listenTo(this.model, 'change', this.render); - }, - - toHTML() { - const label_nickname = converse_core_api.settings.get('xhr_user_search_url') ? i18n_('Contact name') : i18n_('Optional nickname'); - return add_contact_modal(Object.assign(this.model.toJSON(), { - _converse: converse_core_converse, - label_nickname - })); - }, - - afterRender() { - if (typeof converse_core_api.settings.get('xhr_user_search_url') === 'string') { - this.initXHRAutoComplete(); - } else { - this.initJIDAutoComplete(); - } - - const jid_input = this.el.querySelector('input[name="jid"]'); - this.el.addEventListener('shown.bs.modal', () => jid_input.focus(), false); - }, - - initJIDAutoComplete() { - if (!converse_core_api.settings.get('autocomplete_add_contact')) { - return; - } - - const el = this.el.querySelector('.suggestion-box__jid').parentElement; - this.jid_auto_complete = new converse_core_converse.AutoComplete(el, { - 'data': (text, input) => "".concat(input.slice(0, input.indexOf("@")), "@").concat(text), - 'filter': converse_core_converse.FILTER_STARTSWITH, - 'list': [...new Set(converse_core_converse.roster.map(item => converse_rosterview_Strophe.getDomainFromJid(item.get('jid'))))] - }); - }, - - initXHRAutoComplete() { - if (!converse_core_api.settings.get('autocomplete_add_contact')) { - return this.initXHRFetch(); - } - - const el = this.el.querySelector('.suggestion-box__name').parentElement; - this.name_auto_complete = new converse_core_converse.AutoComplete(el, { - 'auto_evaluate': false, - 'filter': converse_core_converse.FILTER_STARTSWITH, - 'list': [] - }); - const xhr = new window.XMLHttpRequest(); // `open` must be called after `onload` for mock/testing purposes. - - xhr.onload = () => { - if (xhr.responseText) { - const r = xhr.responseText; - this.name_auto_complete.list = JSON.parse(r).map(i => ({ - 'label': i.fullname || i.jid, - 'value': i.jid - })); - this.name_auto_complete.auto_completing = true; - this.name_auto_complete.evaluate(); - } - }; - - const input_el = this.el.querySelector('input[name="name"]'); - input_el.addEventListener('input', lodash_es_debounce(() => { - xhr.open("GET", "".concat(converse_core_api.settings.get('xhr_user_search_url'), "q=").concat(encodeURIComponent(input_el.value)), true); - xhr.send(); - }, 300)); - this.name_auto_complete.on('suggestion-box-selectcomplete', ev => { - this.el.querySelector('input[name="name"]').value = ev.text.label; - this.el.querySelector('input[name="jid"]').value = ev.text.value; - }); - }, - - initXHRFetch() { - this.xhr = new window.XMLHttpRequest(); - - this.xhr.onload = () => { - if (this.xhr.responseText) { - const r = this.xhr.responseText; - const list = JSON.parse(r).map(i => ({ - 'label': i.fullname || i.jid, - 'value': i.jid - })); - - if (list.length !== 1) { - const el = this.el.querySelector('.invalid-feedback'); - el.textContent = i18n_('Sorry, could not find a contact with that name'); - converse_rosterview_u.addClass('d-block', el); - return; - } - - const jid = list[0].value; - - if (this.validateSubmission(jid)) { - const form = this.el.querySelector('form'); - const name = list[0].label; - this.afterSubmission(form, jid, name); - } - } - }; - }, - - validateSubmission(jid) { - const el = this.el.querySelector('.invalid-feedback'); - - if (!jid || lodash_es_compact(jid.split('@')).length < 2) { - converse_rosterview_u.addClass('is-invalid', this.el.querySelector('input[name="jid"]')); - converse_rosterview_u.addClass('d-block', el); - return false; - } else if (converse_core_converse.roster.get(converse_rosterview_Strophe.getBareJidFromJid(jid))) { - el.textContent = i18n_('This contact has already been added'); - converse_rosterview_u.addClass('d-block', el); - return false; - } - - converse_rosterview_u.removeClass('d-block', el); - return true; - }, - - afterSubmission(form, jid, name) { - converse_core_converse.roster.addAndSubscribe(jid, name); - - this.model.clear(); - this.modal.hide(); - }, - - addContactFromForm(ev) { - ev.preventDefault(); - const data = new FormData(ev.target), - jid = (data.get('jid') || '').trim(); - - if (!jid && typeof converse_core_api.settings.get('xhr_user_search_url') === 'string') { - const input_el = this.el.querySelector('input[name="name"]'); - this.xhr.open("GET", "".concat(converse_core_api.settings.get('xhr_user_search_url'), "q=").concat(encodeURIComponent(input_el.value)), true); - this.xhr.send(); - return; - } - - if (this.validateSubmission(jid)) { - this.afterSubmission(ev.target, jid, data.get('name')); - } - } - - }); - converse_core_converse.RosterFilter = model_Model.extend({ + core_converse.RosterFilter = model_Model.extend({ initialize() { this.set({ 'filter_text': '', @@ -105174,7 +109849,7 @@ converse.plugins.add('converse-rosterview', { } }); - converse_core_converse.RosterFilterView = view_View.extend({ + core_converse.RosterFilterView = View.extend({ tagName: 'span', initialize() { @@ -105251,7 +109926,7 @@ converse.plugins.add('converse-rosterview', { }, shouldBeVisible() { - return converse_core_converse.roster && converse_core_converse.roster.length >= 5 || this.isActive(); + return core_converse.roster && core_converse.roster.length >= 5 || this.isActive(); }, clearFilter(ev) { @@ -105262,7 +109937,7 @@ converse.plugins.add('converse-rosterview', { } }); - converse_core_converse.RosterContactView = converse_core_converse.ViewWithAvatar.extend({ + core_converse.RosterContactView = core_converse.ViewWithAvatar.extend({ tagName: 'li', className: 'list-item d-flex hidden controlbox-padded', events: { @@ -105286,7 +109961,7 @@ converse.plugins.add('converse-rosterview', { render() { if (!this.mayBeShown()) { - converse_rosterview_u.hideElement(this.el); + rosterview_u.hideElement(this.el); return this; } @@ -105296,13 +109971,13 @@ converse.plugins.add('converse-rosterview', { subscription = this.model.get('subscription'), jid = this.model.get('jid'); const classes_to_remove = ['current-xmpp-contact', 'pending-xmpp-contact', 'requesting-xmpp-contact'].concat(Object.keys(STATUSES)); - classes_to_remove.forEach(c => converse_rosterview_u.removeClass(c, this.el)); + classes_to_remove.forEach(c => rosterview_u.removeClass(c, this.el)); this.el.classList.add(show); this.el.setAttribute('data-status', show); this.highlight(); - if (converse_core_converse.isUniView()) { - const chatbox = converse_core_converse.chatboxes.get(this.model.get('jid')); + if (core_converse.isUniView()) { + const chatbox = core_converse.chatboxes.get(this.model.get('jid')); if (chatbox) { if (chatbox.get('hidden')) { @@ -105330,7 +110005,7 @@ converse.plugins.add('converse-rosterview', { this.el.innerHTML = pending_contact_default()(Object.assign(this.model.toJSON(), { display_name, 'desc_remove': i18n_('Click to remove %1$s as a contact', display_name), - 'allow_chat_pending_contacts': converse_core_api.settings.get('allow_chat_pending_contacts') + 'allow_chat_pending_contacts': core_api.settings.get('allow_chat_pending_contacts') })); } else if (requesting === true) { const display_name = this.model.getDisplayName(); @@ -105339,9 +110014,9 @@ converse.plugins.add('converse-rosterview', { display_name, 'desc_accept': i18n_("Click to accept the contact request from %1$s", display_name), 'desc_decline': i18n_("Click to decline the contact request from %1$s", display_name), - 'allow_chat_pending_contacts': converse_core_api.settings.get('allow_chat_pending_contacts') + 'allow_chat_pending_contacts': core_api.settings.get('allow_chat_pending_contacts') })); - } else if (subscription === 'both' || subscription === 'to' || converse_core_converse.rosterview.isSelf(jid)) { + } else if (subscription === 'both' || subscription === 'to' || core_converse.rosterview.isSelf(jid)) { this.el.classList.add('current-xmpp-contact'); this.el.classList.remove(lodash_es_without(['both', 'to'], subscription)[0]); this.el.classList.add(subscription); @@ -105357,8 +110032,8 @@ converse.plugins.add('converse-rosterview', { * @method _converse.RosterContactView#highlight */ highlight() { - if (converse_core_converse.isUniView()) { - const chatbox = converse_core_converse.chatboxes.get(this.model.get('jid')); + if (core_converse.isUniView()) { + const chatbox = core_converse.chatboxes.get(this.model.get('jid')); if (chatbox && chatbox.get('hidden') || !chatbox) { this.el.classList.remove('open'); @@ -105392,7 +110067,7 @@ converse.plugins.add('converse-rosterview', { 'desc_status': STATUSES[show], 'desc_chat': i18n_('Click to chat with %1$s (XMPP address: %2$s)', display_name, item.get('jid')), 'desc_remove': i18n_('Click to remove %1$s as a contact', display_name), - 'allow_contact_removal': converse_core_api.settings.get('allow_contact_removal'), + 'allow_contact_removal': core_api.settings.get('allow_contact_removal'), 'num_unread': item.get('num_unread') || 0, classes: '' })); @@ -105411,7 +110086,7 @@ converse.plugins.add('converse-rosterview', { mayBeShown() { const chatStatus = this.model.presence.get('show'); - if (converse_core_api.settings.get('hide_offline_users') && chatStatus === 'offline') { + if (core_api.settings.get('hide_offline_users') && chatStatus === 'offline') { // If pending or requesting, show if (this.model.get('ask') === 'subscribe' || this.model.get('subscription') === 'from' || this.model.get('requesting') === true) { return true; @@ -105436,7 +110111,7 @@ converse.plugins.add('converse-rosterview', { ev.preventDefault(); } - if (!converse_core_api.settings.get('allow_contact_removal')) { + if (!core_api.settings.get('allow_contact_removal')) { return; } @@ -105455,7 +110130,7 @@ converse.plugins.add('converse-rosterview', { } } catch (e) { headless_log.error(e); - converse_core_api.alert('error', i18n_('Error'), [i18n_('Sorry, there was an error while trying to remove %1$s as a contact.', this.model.getDisplayName())]); + core_api.alert('error', i18n_('Error'), [i18n_('Sorry, there was an error while trying to remove %1$s as a contact.', this.model.getDisplayName())]); } }, @@ -105464,7 +110139,7 @@ converse.plugins.add('converse-rosterview', { ev.preventDefault(); } - await converse_core_converse.roster.sendContactAddIQ(this.model.get('jid'), this.model.getFullname(), []); + await core_converse.roster.sendContactAddIQ(this.model.get('jid'), this.model.getFullname(), []); this.model.authorize().subscribe(); }, @@ -105489,14 +110164,14 @@ converse.plugins.add('converse-rosterview', { * @memberOf _converse */ - converse_core_converse.RosterGroupView = OrderedListView.extend({ + core_converse.RosterGroupView = OrderedListView.extend({ tagName: 'div', className: 'roster-group hidden', events: { "click a.group-toggle": "toggle" }, sortImmediatelyOnAdd: true, - ItemView: converse_core_converse.RosterContactView, + ItemView: core_converse.RosterContactView, listItems: 'model.contacts', listSelector: '.roster-group-contacts', sortEvent: 'presenceChanged', @@ -105504,25 +110179,25 @@ converse.plugins.add('converse-rosterview', { initialize() { OrderedListView.prototype.initialize.apply(this, arguments); - if (this.model.get('name') === converse_core_converse.HEADER_UNREAD) { + if (this.model.get('name') === core_converse.HEADER_UNREAD) { this.listenTo(this.model.contacts, "change:num_unread", c => !this.model.get('unread_messages') && this.removeContact(c)); } - if (this.model.get('name') === converse_core_converse.HEADER_REQUESTING_CONTACTS) { + if (this.model.get('name') === core_converse.HEADER_REQUESTING_CONTACTS) { this.listenTo(this.model.contacts, "change:requesting", c => !c.get('requesting') && this.removeContact(c)); } - if (this.model.get('name') === converse_core_converse.HEADER_PENDING_CONTACTS) { + if (this.model.get('name') === core_converse.HEADER_PENDING_CONTACTS) { this.listenTo(this.model.contacts, "change:subscription", c => c.get('subscription') !== 'from' && this.removeContact(c)); } this.listenTo(this.model.contacts, "remove", this.onRemove); - this.listenTo(converse_core_converse.roster, 'change:groups', this.onContactGroupChange); // This event gets triggered once *all* contacts (i.e. not + this.listenTo(core_converse.roster, 'change:groups', this.onContactGroupChange); // This event gets triggered once *all* contacts (i.e. not // just this group's) have been fetched from browser // storage or the XMPP server and once they've been // assigned to their various groups. - converse_core_converse.rosterview.on('rosterContactsFetchedAndProcessed', () => this.sortAndPositionAllItems()); + core_converse.rosterview.on('rosterContactsFetchedAndProcessed', () => this.sortAndPositionAllItems()); }, render() { @@ -105531,24 +110206,24 @@ converse.plugins.add('converse-rosterview', { 'label_group': this.model.get('name'), 'desc_group_toggle': this.model.get('description'), 'toggle_state': this.model.get('state'), - '_converse': converse_core_converse + '_converse': core_converse }); this.contacts_el = this.el.querySelector('.roster-group-contacts'); return this; }, show() { - converse_rosterview_u.showElement(this.el); + rosterview_u.showElement(this.el); - if (this.model.get('state') === converse_core_converse.OPENED) { - Object.values(this.getAll()).filter(v => v.mayBeShown()).forEach(v => converse_rosterview_u.showElement(v.el)); + if (this.model.get('state') === core_converse.OPENED) { + Object.values(this.getAll()).filter(v => v.mayBeShown()).forEach(v => rosterview_u.showElement(v.el)); } return this; }, collapse() { - return converse_rosterview_u.slideIn(this.contacts_el); + return rosterview_u.slideIn(this.contacts_el); }, /* Given a list of contacts, make sure they're filtered out @@ -105564,17 +110239,17 @@ converse.plugins.add('converse-rosterview', { const contact_view = this.get(contact.get('id')); if (contacts.includes(contact)) { - converse_rosterview_u.hideElement(contact_view.el); + rosterview_u.hideElement(contact_view.el); } else if (contact_view.mayBeShown()) { - converse_rosterview_u.showElement(contact_view.el); + rosterview_u.showElement(contact_view.el); shown += 1; } }); if (shown) { - converse_rosterview_u.showElement(this.el); + rosterview_u.showElement(this.el); } else { - converse_rosterview_u.hideElement(this.el); + rosterview_u.hideElement(this.el); } }, @@ -105595,7 +110270,7 @@ converse.plugins.add('converse-rosterview', { const contacts = this.model.contacts; if (type === 'state') { - const sticky_groups = [converse_core_converse.HEADER_REQUESTING_CONTACTS, converse_core_converse.HEADER_UNREAD]; + const sticky_groups = [core_converse.HEADER_REQUESTING_CONTACTS, core_converse.HEADER_UNREAD]; if (sticky_groups.includes(this.model.get('name'))) { // When filtering by chat state, we still want to @@ -105628,12 +110303,12 @@ converse.plugins.add('converse-rosterview', { */ filter(q, type) { if (q === null || q === undefined) { - type = type || converse_core_converse.rosterview.filter_view.model.get('filter_type'); + type = type || core_converse.rosterview.filter_view.model.get('filter_type'); if (type === 'state') { - q = converse_core_converse.rosterview.filter_view.model.get('chat_state'); + q = core_converse.rosterview.filter_view.model.get('chat_state'); } else { - q = converse_core_converse.rosterview.filter_view.model.get('filter_text'); + q = core_converse.rosterview.filter_view.model.get('filter_text'); } } @@ -105647,9 +110322,9 @@ converse.plugins.add('converse-rosterview', { const icon_el = ev.target.matches('.fa') ? ev.target : ev.target.querySelector('.fa'); - if (converse_rosterview_u.hasClass("fa-caret-down", icon_el)) { + if (rosterview_u.hasClass("fa-caret-down", icon_el)) { this.model.save({ - state: converse_core_converse.CLOSED + state: core_converse.CLOSED }); await this.collapse(); icon_el.classList.remove("fa-caret-down"); @@ -105658,11 +110333,11 @@ converse.plugins.add('converse-rosterview', { icon_el.classList.remove("fa-caret-right"); icon_el.classList.add("fa-caret-down"); this.model.save({ - state: converse_core_converse.OPENED + state: core_converse.OPENED }); this.filter(); - converse_rosterview_u.showElement(this.el); - converse_rosterview_u.slideOut(this.contacts_el); + rosterview_u.showElement(this.el); + rosterview_u.slideOut(this.contacts_el); } }, @@ -105703,11 +110378,11 @@ converse.plugins.add('converse-rosterview', { * @memberOf _converse */ - converse_core_converse.RosterView = OrderedListView.extend({ + core_converse.RosterView = OrderedListView.extend({ tagName: 'div', id: 'converse-roster', className: 'controlbox-section', - ItemView: converse_core_converse.RosterGroupView, + ItemView: core_converse.RosterGroupView, listItems: 'model', listSelector: '.roster-contacts', sortEvent: null, @@ -105721,13 +110396,13 @@ converse.plugins.add('converse-rosterview', { initialize() { OrderedListView.prototype.initialize.apply(this, arguments); - this.listenTo(converse_core_converse.roster, "add", this.onContactAdded); - this.listenTo(converse_core_converse.roster, 'change:groups', this.onContactAdded); - this.listenTo(converse_core_converse.roster, 'change', this.onContactChange); - this.listenTo(converse_core_converse.roster, "destroy", this.update); - this.listenTo(converse_core_converse.roster, "remove", this.update); + this.listenTo(core_converse.roster, "add", this.onContactAdded); + this.listenTo(core_converse.roster, 'change:groups', this.onContactAdded); + this.listenTo(core_converse.roster, 'change', this.onContactChange); + this.listenTo(core_converse.roster, "destroy", this.update); + this.listenTo(core_converse.roster, "remove", this.update); - converse_core_converse.presences.on('change:show', () => { + core_converse.presences.on('change:show', () => { this.update(); this.updateFilter(); }); @@ -105737,9 +110412,9 @@ converse.plugins.add('converse-rosterview', { // storage or the XMPP server and once they've been // assigned to their various groups. - converse_core_api.listen.on('rosterGroupsFetched', this.sortAndPositionAllItems.bind(this)); - converse_core_api.listen.on('rosterContactsFetched', () => { - converse_core_converse.roster.each(contact => this.addRosterContact(contact, { + core_api.listen.on('rosterGroupsFetched', this.sortAndPositionAllItems.bind(this)); + core_api.listen.on('rosterContactsFetched', () => { + core_converse.roster.each(contact => this.addRosterContact(contact, { 'silent': true })); @@ -105752,7 +110427,7 @@ converse.plugins.add('converse-rosterview', { render() { this.el.innerHTML = roster_default()({ - 'allow_contact_requests': converse_core_converse.allow_contact_requests, + 'allow_contact_requests': core_converse.allow_contact_requests, 'heading_contacts': i18n_('Contacts'), 'title_add_contact': i18n_('Add a contact'), 'title_sync_contacts': i18n_('Re-sync your contacts') @@ -105764,21 +110439,17 @@ converse.plugins.add('converse-rosterview', { }, showAddContactModal(ev) { - if (this.add_contact_modal === undefined) { - this.add_contact_modal = new converse_core_converse.AddContactModal({ - 'model': new model_Model() - }); - } - - this.add_contact_modal.show(ev); + core_api.modal.show(core_converse.AddContactModal, { + 'model': new model_Model() + }, ev); }, createRosterFilter() { // Create a model on which we can store filter properties - const model = new converse_core_converse.RosterFilter(); - model.id = "_converse.rosterfilter-".concat(converse_core_converse.bare_jid); - model.browserStorage = converse_core_converse.createStore(model.id); - this.filter_view = new converse_core_converse.RosterFilterView({ + const model = new core_converse.RosterFilter(); + model.id = "_converse.rosterfilter-".concat(core_converse.bare_jid); + model.browserStorage = core_converse.createStore(model.id); + this.filter_view = new core_converse.RosterFilterView({ model }); this.listenTo(this.filter_view.model, 'change', this.updateFilter); @@ -105803,8 +110474,8 @@ converse.plugins.add('converse-rosterview', { }, 100), update() { - if (!converse_rosterview_u.isVisible(this.roster_el)) { - converse_rosterview_u.showElement(this.roster_el); + if (!rosterview_u.isVisible(this.roster_el)) { + rosterview_u.showElement(this.roster_el); } this.filter_view.render(); @@ -105821,9 +110492,9 @@ converse.plugins.add('converse-rosterview', { if (type === 'groups') { views.forEach(view => { if (!view.model.get('name').toLowerCase().includes(query)) { - converse_rosterview_u.slideIn(view.el); + rosterview_u.slideIn(view.el); } else if (view.model.contacts.length > 0) { - converse_rosterview_u.slideOut(view.el); + rosterview_u.slideOut(view.el); } }); } else { @@ -105833,13 +110504,13 @@ converse.plugins.add('converse-rosterview', { async syncContacts(ev) { ev.preventDefault(); - converse_rosterview_u.addClass('fa-spin', ev.target); + rosterview_u.addClass('fa-spin', ev.target); - converse_core_converse.roster.data.save('version', null); + core_converse.roster.data.save('version', null); - await converse_core_converse.roster.fetchFromServer(); - converse_core_api.user.presence.send(); - converse_rosterview_u.removeClass('fa-spin', ev.target); + await core_converse.roster.fetchFromServer(); + core_api.user.presence.send(); + rosterview_u.removeClass('fa-spin', ev.target); }, reset() { @@ -105859,22 +110530,22 @@ converse.plugins.add('converse-rosterview', { if (lodash_es_has(contact.changed, 'subscription')) { if (contact.changed.subscription === 'from') { - this.addContactToGroup(contact, converse_core_converse.HEADER_PENDING_CONTACTS); + this.addContactToGroup(contact, core_converse.HEADER_PENDING_CONTACTS); } else if (['both', 'to'].includes(contact.get('subscription'))) { this.addExistingContact(contact); } } if (lodash_es_has(contact.changed, 'num_unread') && contact.get('num_unread')) { - this.addContactToGroup(contact, converse_core_converse.HEADER_UNREAD); + this.addContactToGroup(contact, core_converse.HEADER_UNREAD); } if (lodash_es_has(contact.changed, 'ask') && contact.changed.ask === 'subscribe') { - this.addContactToGroup(contact, converse_core_converse.HEADER_PENDING_CONTACTS); + this.addContactToGroup(contact, core_converse.HEADER_PENDING_CONTACTS); } if (lodash_es_has(contact.changed, 'subscription') && contact.changed.requesting === 'true') { - this.addContactToGroup(contact, converse_core_converse.HEADER_REQUESTING_CONTACTS); + this.addContactToGroup(contact, core_converse.HEADER_REQUESTING_CONTACTS); } this.updateFilter(); @@ -105907,22 +110578,22 @@ converse.plugins.add('converse-rosterview', { addExistingContact(contact, options) { let groups; - if (converse_core_api.settings.get('roster_groups')) { + if (core_api.settings.get('roster_groups')) { groups = contact.get('groups'); - groups = groups.length === 0 ? [converse_core_converse.HEADER_UNGROUPED] : groups; + groups = groups.length === 0 ? [core_converse.HEADER_UNGROUPED] : groups; } else { - groups = [converse_core_converse.HEADER_CURRENT_CONTACTS]; + groups = [core_converse.HEADER_CURRENT_CONTACTS]; } if (contact.get('num_unread')) { - groups.push(converse_core_converse.HEADER_UNREAD); + groups.push(core_converse.HEADER_UNREAD); } groups.forEach(g => this.addContactToGroup(contact, g, options)); }, isSelf(jid) { - return converse_rosterview_u.isSameBareJID(jid, converse_core_converse.connection.jid); + return rosterview_u.isSameBareJID(jid, core_converse.connection.jid); }, addRosterContact(contact, options) { @@ -105931,15 +110602,15 @@ converse.plugins.add('converse-rosterview', { if (contact.get('subscription') === 'both' || contact.get('subscription') === 'to' || this.isSelf(jid)) { this.addExistingContact(contact, options); } else { - if (!converse_core_converse.allow_contact_requests) { + if (!core_converse.allow_contact_requests) { headless_log.debug("Not adding requesting or pending contact ".concat(jid, " ") + "because allow_contact_requests is false"); return; } if (contact.get('ask') === 'subscribe' || contact.get('subscription') === 'from') { - this.addContactToGroup(contact, converse_core_converse.HEADER_PENDING_CONTACTS, options); + this.addContactToGroup(contact, core_converse.HEADER_PENDING_CONTACTS, options); } else if (contact.get('requesting') === true) { - this.addContactToGroup(contact, converse_core_converse.HEADER_REQUESTING_CONTACTS, options); + this.addContactToGroup(contact, core_converse.HEADER_REQUESTING_CONTACTS, options); } } @@ -105949,9 +110620,9 @@ converse.plugins.add('converse-rosterview', { }); /* -------- Event Handlers ----------- */ - converse_core_api.listen.on('chatBoxesInitialized', () => { + core_api.listen.on('chatBoxesInitialized', () => { function highlightRosterItem(chatbox) { - const contact = converse_core_converse.roster && converse_core_converse.roster.findWhere({ + const contact = core_converse.roster && core_converse.roster.findWhere({ 'jid': chatbox.get('jid') }); @@ -105960,19 +110631,19 @@ converse.plugins.add('converse-rosterview', { } } - converse_core_converse.chatboxes.on('destroy', chatbox => highlightRosterItem(chatbox)); + core_converse.chatboxes.on('destroy', chatbox => highlightRosterItem(chatbox)); - converse_core_converse.chatboxes.on('change:hidden', chatbox => highlightRosterItem(chatbox)); + core_converse.chatboxes.on('change:hidden', chatbox => highlightRosterItem(chatbox)); }); - converse_core_api.listen.on('controlBoxInitialized', view => { + core_api.listen.on('controlBoxInitialized', view => { function insertRoster() { - if (!view.model.get('connected') || converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + if (!view.model.get('connected') || core_api.settings.get("authentication") === core_converse.ANONYMOUS) { return; } /* Place the rosterview inside the "Contacts" panel. */ - converse_core_api.waitUntil('rosterViewInitialized').then(() => view.controlbox_pane.el.insertAdjacentElement('beforeEnd', converse_core_converse.rosterview.el)).catch(e => headless_log.fatal(e)); + core_api.waitUntil('rosterViewInitialized').then(() => view.controlbox_pane.el.insertAdjacentElement('beforeEnd', core_converse.rosterview.el)).catch(e => headless_log.fatal(e)); } insertRoster(); @@ -105981,17 +110652,17 @@ converse.plugins.add('converse-rosterview', { function initRosterView() { /* Create an instance of RosterView once the RosterGroups - * collection has been created (in @converse/headless/converse-core.js) + * collection has been created (in @converse/headless/core.js) */ - if (converse_core_api.settings.get("authentication") === converse_core_converse.ANONYMOUS) { + if (core_api.settings.get("authentication") === core_converse.ANONYMOUS) { return; } - converse_core_converse.rosterview = new converse_core_converse.RosterView({ - 'model': converse_core_converse.rostergroups + core_converse.rosterview = new core_converse.RosterView({ + 'model': core_converse.rostergroups }); - converse_core_converse.rosterview.render(); + core_converse.rosterview.render(); /** * Triggered once the _converse.RosterView instance has been created and initialized. * @event _converse#rosterViewInitialized @@ -105999,12 +110670,12 @@ converse.plugins.add('converse-rosterview', { */ - converse_core_api.trigger('rosterViewInitialized'); + core_api.trigger('rosterViewInitialized'); } - converse_core_api.listen.on('rosterInitialized', initRosterView); - converse_core_api.listen.on('rosterReadyAfterReconnection', initRosterView); - converse_core_api.listen.on('afterTearDown', () => { + core_api.listen.on('rosterInitialized', initRosterView); + core_api.listen.on('rosterReadyAfterReconnection', initRosterView); + core_api.listen.on('afterTearDown', () => { if (converse.rosterview) { converse.rosterview.model.off().reset(); converse.rosterview.each(groupview => groupview.removeAll().remove()); @@ -106016,7 +110687,7 @@ converse.plugins.add('converse-rosterview', { }); // EXTERNAL MODULE: ./sass/converse.scss -var sass_converse = __webpack_require__(413); +var sass_converse = __webpack_require__(501); // CONCATENATED MODULE: ./src/converse.js /** @@ -106025,15 +110696,15 @@ var sass_converse = __webpack_require__(413); * @license Mozilla Public License (MPLv2) */ + + + /* START: Removable components * -------------------- * Any of the following components may be removed if they're not needed. */ - - - // Views for XEP-0048 Bookmarks // Renders standalone chat boxes for single user chat @@ -106049,7 +110720,6 @@ var sass_converse = __webpack_require__(413); // Views related to MUC - // HTML5 Notifications @@ -106061,11 +110731,11 @@ var sass_converse = __webpack_require__(413); - /* END: Removable components */ + const WHITELISTED_PLUGINS = ['converse-autocomplete', 'converse-bookmark-views', 'converse-chatboxviews', 'converse-chatview', 'converse-controlbox', 'converse-dragresize', 'converse-fullscreen', 'converse-mam-views', 'converse-minimize', 'converse-modal', 'converse-muc-views', 'converse-headlines-view', 'converse-notification', 'converse-omemo', 'converse-profile', 'converse-push', 'converse-register', 'converse-roomslist', 'converse-rosterview', 'converse-singleton']; // Use Mustache style syntax for variable interpolation /* Configuration of Lodash templates (this config is distinct to the diff --git a/src/conversejs/converse.min.css b/src/conversejs/converse.min.css index a722f512a4c568d8aec8afa6f72c71f1411b7a74..a2106033017858d899a33c5182884c3ea0377fd9 100644 --- a/src/conversejs/converse.min.css +++ b/src/conversejs/converse.min.css @@ -4,6 +4,6 @@ * * Copyright (c) 2013-2018, JC Brand <jc@opkode.com> * Licensed under the Mozilla Public License - */#conversejs :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}#conversejs *,#conversejs ::after,#conversejs ::before{box-sizing:border-box}#conversejs html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}#conversejs article,#conversejs aside,#conversejs figcaption,#conversejs figure,#conversejs footer,#conversejs header,#conversejs hgroup,#conversejs main,#conversejs nav,#conversejs section{display:block}#conversejs body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}#conversejs [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}#conversejs hr{box-sizing:content-box;height:0;overflow:visible}#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6{margin-top:0;margin-bottom:.5rem}#conversejs p{margin-top:0;margin-bottom:1rem}#conversejs abbr[data-original-title],#conversejs abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#conversejs address{margin-bottom:1rem;font-style:normal;line-height:inherit}#conversejs dl,#conversejs ol,#conversejs ul{margin-top:0;margin-bottom:1rem}#conversejs ol ol,#conversejs ol ul,#conversejs ul ol,#conversejs ul ul{margin-bottom:0}#conversejs dt{font-weight:700}#conversejs dd{margin-bottom:.5rem;margin-left:0}#conversejs blockquote{margin:0 0 1rem}#conversejs b,#conversejs strong{font-weight:bolder}#conversejs small{font-size:80%}#conversejs sub,#conversejs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#conversejs sub{bottom:-.25em}#conversejs sup{top:-.5em}#conversejs a{color:#007bff;text-decoration:none;background-color:transparent}#conversejs a:hover{color:#0056b3;text-decoration:underline}#conversejs a:not([href]){color:inherit;text-decoration:none}#conversejs a:not([href]):hover{color:inherit;text-decoration:none}#conversejs code,#conversejs kbd,#conversejs pre,#conversejs samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}#conversejs pre{margin-top:0;margin-bottom:1rem;overflow:auto}#conversejs figure{margin:0 0 1rem}#conversejs img{vertical-align:middle;border-style:none}#conversejs svg{overflow:hidden;vertical-align:middle}#conversejs table{border-collapse:collapse}#conversejs caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}#conversejs th{text-align:inherit}#conversejs label{display:inline-block;margin-bottom:.5rem}#conversejs button{border-radius:0}#conversejs button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}#conversejs button,#conversejs input,#conversejs optgroup,#conversejs select,#conversejs textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}#conversejs button,#conversejs input{overflow:visible}#conversejs button,#conversejs select{text-transform:none}#conversejs select{word-wrap:normal}#conversejs [type=button],#conversejs [type=reset],#conversejs [type=submit],#conversejs button{-webkit-appearance:button}#conversejs [type=button]:not(:disabled),#conversejs [type=reset]:not(:disabled),#conversejs [type=submit]:not(:disabled),#conversejs button:not(:disabled){cursor:pointer}#conversejs [type=button]::-moz-focus-inner,#conversejs [type=reset]::-moz-focus-inner,#conversejs [type=submit]::-moz-focus-inner,#conversejs button::-moz-focus-inner{padding:0;border-style:none}#conversejs input[type=checkbox],#conversejs input[type=radio]{box-sizing:border-box;padding:0}#conversejs input[type=date],#conversejs input[type=datetime-local],#conversejs input[type=month],#conversejs input[type=time]{-webkit-appearance:listbox}#conversejs textarea{overflow:auto;resize:vertical}#conversejs fieldset{min-width:0;padding:0;margin:0;border:0}#conversejs legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}#conversejs progress{vertical-align:baseline}#conversejs [type=number]::-webkit-inner-spin-button,#conversejs [type=number]::-webkit-outer-spin-button{height:auto}#conversejs [type=search]{outline-offset:-2px;-webkit-appearance:none}#conversejs [type=search]::-webkit-search-decoration{-webkit-appearance:none}#conversejs ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}#conversejs output{display:inline-block}#conversejs summary{display:list-item;cursor:pointer}#conversejs template{display:none}#conversejs [hidden]{display:none!important}#conversejs .h1,#conversejs .h2,#conversejs .h3,#conversejs .h4,#conversejs .h5,#conversejs .h6,#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}#conversejs .h1,#conversejs h1{font-size:2.5rem}#conversejs .h2,#conversejs h2{font-size:2rem}#conversejs .h3,#conversejs h3{font-size:1.75rem}#conversejs .h4,#conversejs h4{font-size:1.5rem}#conversejs .h5,#conversejs h5{font-size:1.25rem}#conversejs .h6,#conversejs h6{font-size:1rem}#conversejs .lead{font-size:1.25rem;font-weight:300}#conversejs .display-1{font-size:6rem;font-weight:300;line-height:1.2}#conversejs .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}#conversejs .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}#conversejs .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}#conversejs hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}#conversejs .small,#conversejs small{font-size:80%;font-weight:400}#conversejs .mark,#conversejs mark{padding:.2em;background-color:#fcf8e3}#conversejs .list-unstyled{padding-left:0;list-style:none}#conversejs .list-inline{padding-left:0;list-style:none}#conversejs .list-inline-item{display:inline-block}#conversejs .list-inline-item:not(:last-child){margin-right:.5rem}#conversejs .initialism{font-size:90%;text-transform:uppercase}#conversejs .blockquote{margin-bottom:1rem;font-size:1.25rem}#conversejs .blockquote-footer{display:block;font-size:80%;color:#6c757d}#conversejs .blockquote-footer::before{content:"\2014\00A0"}#conversejs .img-fluid{max-width:100%;height:auto}#conversejs .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}#conversejs .figure{display:inline-block}#conversejs .figure-img{margin-bottom:.5rem;line-height:1}#conversejs .figure-caption{font-size:90%;color:#6c757d}#conversejs .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){#conversejs .container{max-width:540px}}@media (min-width:768px){#conversejs .container{max-width:720px}}@media (min-width:992px){#conversejs .container{max-width:960px}}@media (min-width:1200px){#conversejs .container{max-width:1140px}}#conversejs .container-fluid,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm,#conversejs .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){#conversejs .container,#conversejs .container-sm{max-width:540px}}@media (min-width:768px){#conversejs .container,#conversejs .container-md,#conversejs .container-sm{max-width:720px}}@media (min-width:992px){#conversejs .container,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm{max-width:960px}}@media (min-width:1200px){#conversejs .container,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm,#conversejs .container-xl{max-width:1140px}}#conversejs .row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}#conversejs .no-gutters{margin-right:0;margin-left:0}#conversejs .no-gutters>.col,#conversejs .no-gutters>[class*=col-]{padding-right:0;padding-left:0}#conversejs .col,#conversejs .col-1,#conversejs .col-10,#conversejs .col-11,#conversejs .col-12,#conversejs .col-2,#conversejs .col-3,#conversejs .col-4,#conversejs .col-5,#conversejs .col-6,#conversejs .col-7,#conversejs .col-8,#conversejs .col-9,#conversejs .col-auto,#conversejs .col-lg,#conversejs .col-lg-1,#conversejs .col-lg-10,#conversejs .col-lg-11,#conversejs .col-lg-12,#conversejs .col-lg-2,#conversejs .col-lg-3,#conversejs .col-lg-4,#conversejs .col-lg-5,#conversejs .col-lg-6,#conversejs .col-lg-7,#conversejs .col-lg-8,#conversejs .col-lg-9,#conversejs .col-lg-auto,#conversejs .col-md,#conversejs .col-md-1,#conversejs .col-md-10,#conversejs .col-md-11,#conversejs .col-md-12,#conversejs .col-md-2,#conversejs .col-md-3,#conversejs .col-md-4,#conversejs .col-md-5,#conversejs .col-md-6,#conversejs .col-md-7,#conversejs .col-md-8,#conversejs .col-md-9,#conversejs .col-md-auto,#conversejs .col-sm,#conversejs .col-sm-1,#conversejs .col-sm-10,#conversejs .col-sm-11,#conversejs .col-sm-12,#conversejs .col-sm-2,#conversejs .col-sm-3,#conversejs .col-sm-4,#conversejs .col-sm-5,#conversejs .col-sm-6,#conversejs .col-sm-7,#conversejs .col-sm-8,#conversejs .col-sm-9,#conversejs .col-sm-auto,#conversejs .col-xl,#conversejs .col-xl-1,#conversejs .col-xl-10,#conversejs .col-xl-11,#conversejs .col-xl-12,#conversejs .col-xl-2,#conversejs .col-xl-3,#conversejs .col-xl-4,#conversejs .col-xl-5,#conversejs .col-xl-6,#conversejs .col-xl-7,#conversejs .col-xl-8,#conversejs .col-xl-9,#conversejs .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}#conversejs .col{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-3{flex:0 0 25%;max-width:25%}#conversejs .col-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-6{flex:0 0 50%;max-width:50%}#conversejs .col-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-9{flex:0 0 75%;max-width:75%}#conversejs .col-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-12{flex:0 0 100%;max-width:100%}#conversejs .order-first{order:-1}#conversejs .order-last{order:13}#conversejs .order-0{order:0}#conversejs .order-1{order:1}#conversejs .order-2{order:2}#conversejs .order-3{order:3}#conversejs .order-4{order:4}#conversejs .order-5{order:5}#conversejs .order-6{order:6}#conversejs .order-7{order:7}#conversejs .order-8{order:8}#conversejs .order-9{order:9}#conversejs .order-10{order:10}#conversejs .order-11{order:11}#conversejs .order-12{order:12}#conversejs .offset-1{margin-left:8.33333%}#conversejs .offset-2{margin-left:16.66667%}#conversejs .offset-3{margin-left:25%}#conversejs .offset-4{margin-left:33.33333%}#conversejs .offset-5{margin-left:41.66667%}#conversejs .offset-6{margin-left:50%}#conversejs .offset-7{margin-left:58.33333%}#conversejs .offset-8{margin-left:66.66667%}#conversejs .offset-9{margin-left:75%}#conversejs .offset-10{margin-left:83.33333%}#conversejs .offset-11{margin-left:91.66667%}@media (min-width:576px){#conversejs .col-sm{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-sm-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-sm-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-sm-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-sm-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-sm-3{flex:0 0 25%;max-width:25%}#conversejs .col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-sm-6{flex:0 0 50%;max-width:50%}#conversejs .col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-sm-9{flex:0 0 75%;max-width:75%}#conversejs .col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-sm-12{flex:0 0 100%;max-width:100%}#conversejs .order-sm-first{order:-1}#conversejs .order-sm-last{order:13}#conversejs .order-sm-0{order:0}#conversejs .order-sm-1{order:1}#conversejs .order-sm-2{order:2}#conversejs .order-sm-3{order:3}#conversejs .order-sm-4{order:4}#conversejs .order-sm-5{order:5}#conversejs .order-sm-6{order:6}#conversejs .order-sm-7{order:7}#conversejs .order-sm-8{order:8}#conversejs .order-sm-9{order:9}#conversejs .order-sm-10{order:10}#conversejs .order-sm-11{order:11}#conversejs .order-sm-12{order:12}#conversejs .offset-sm-0{margin-left:0}#conversejs .offset-sm-1{margin-left:8.33333%}#conversejs .offset-sm-2{margin-left:16.66667%}#conversejs .offset-sm-3{margin-left:25%}#conversejs .offset-sm-4{margin-left:33.33333%}#conversejs .offset-sm-5{margin-left:41.66667%}#conversejs .offset-sm-6{margin-left:50%}#conversejs .offset-sm-7{margin-left:58.33333%}#conversejs .offset-sm-8{margin-left:66.66667%}#conversejs .offset-sm-9{margin-left:75%}#conversejs .offset-sm-10{margin-left:83.33333%}#conversejs .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){#conversejs .col-md{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-md-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-md-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-md-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-md-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-md-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-md-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-md-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-md-3{flex:0 0 25%;max-width:25%}#conversejs .col-md-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-md-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-md-6{flex:0 0 50%;max-width:50%}#conversejs .col-md-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-md-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-md-9{flex:0 0 75%;max-width:75%}#conversejs .col-md-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-md-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-md-12{flex:0 0 100%;max-width:100%}#conversejs .order-md-first{order:-1}#conversejs .order-md-last{order:13}#conversejs .order-md-0{order:0}#conversejs .order-md-1{order:1}#conversejs .order-md-2{order:2}#conversejs .order-md-3{order:3}#conversejs .order-md-4{order:4}#conversejs .order-md-5{order:5}#conversejs .order-md-6{order:6}#conversejs .order-md-7{order:7}#conversejs .order-md-8{order:8}#conversejs .order-md-9{order:9}#conversejs .order-md-10{order:10}#conversejs .order-md-11{order:11}#conversejs .order-md-12{order:12}#conversejs .offset-md-0{margin-left:0}#conversejs .offset-md-1{margin-left:8.33333%}#conversejs .offset-md-2{margin-left:16.66667%}#conversejs .offset-md-3{margin-left:25%}#conversejs .offset-md-4{margin-left:33.33333%}#conversejs .offset-md-5{margin-left:41.66667%}#conversejs .offset-md-6{margin-left:50%}#conversejs .offset-md-7{margin-left:58.33333%}#conversejs .offset-md-8{margin-left:66.66667%}#conversejs .offset-md-9{margin-left:75%}#conversejs .offset-md-10{margin-left:83.33333%}#conversejs .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){#conversejs .col-lg{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-lg-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-lg-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-lg-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-lg-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-lg-3{flex:0 0 25%;max-width:25%}#conversejs .col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-lg-6{flex:0 0 50%;max-width:50%}#conversejs .col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-lg-9{flex:0 0 75%;max-width:75%}#conversejs .col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-lg-12{flex:0 0 100%;max-width:100%}#conversejs .order-lg-first{order:-1}#conversejs .order-lg-last{order:13}#conversejs .order-lg-0{order:0}#conversejs .order-lg-1{order:1}#conversejs .order-lg-2{order:2}#conversejs .order-lg-3{order:3}#conversejs .order-lg-4{order:4}#conversejs .order-lg-5{order:5}#conversejs .order-lg-6{order:6}#conversejs .order-lg-7{order:7}#conversejs .order-lg-8{order:8}#conversejs .order-lg-9{order:9}#conversejs .order-lg-10{order:10}#conversejs .order-lg-11{order:11}#conversejs .order-lg-12{order:12}#conversejs .offset-lg-0{margin-left:0}#conversejs .offset-lg-1{margin-left:8.33333%}#conversejs .offset-lg-2{margin-left:16.66667%}#conversejs .offset-lg-3{margin-left:25%}#conversejs .offset-lg-4{margin-left:33.33333%}#conversejs .offset-lg-5{margin-left:41.66667%}#conversejs .offset-lg-6{margin-left:50%}#conversejs .offset-lg-7{margin-left:58.33333%}#conversejs .offset-lg-8{margin-left:66.66667%}#conversejs .offset-lg-9{margin-left:75%}#conversejs .offset-lg-10{margin-left:83.33333%}#conversejs .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){#conversejs .col-xl{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-xl-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-xl-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-xl-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-xl-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-xl-3{flex:0 0 25%;max-width:25%}#conversejs .col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-xl-6{flex:0 0 50%;max-width:50%}#conversejs .col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-xl-9{flex:0 0 75%;max-width:75%}#conversejs .col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-xl-12{flex:0 0 100%;max-width:100%}#conversejs .order-xl-first{order:-1}#conversejs .order-xl-last{order:13}#conversejs .order-xl-0{order:0}#conversejs .order-xl-1{order:1}#conversejs .order-xl-2{order:2}#conversejs .order-xl-3{order:3}#conversejs .order-xl-4{order:4}#conversejs .order-xl-5{order:5}#conversejs .order-xl-6{order:6}#conversejs .order-xl-7{order:7}#conversejs .order-xl-8{order:8}#conversejs .order-xl-9{order:9}#conversejs .order-xl-10{order:10}#conversejs .order-xl-11{order:11}#conversejs .order-xl-12{order:12}#conversejs .offset-xl-0{margin-left:0}#conversejs .offset-xl-1{margin-left:8.33333%}#conversejs .offset-xl-2{margin-left:16.66667%}#conversejs .offset-xl-3{margin-left:25%}#conversejs .offset-xl-4{margin-left:33.33333%}#conversejs .offset-xl-5{margin-left:41.66667%}#conversejs .offset-xl-6{margin-left:50%}#conversejs .offset-xl-7{margin-left:58.33333%}#conversejs .offset-xl-8{margin-left:66.66667%}#conversejs .offset-xl-9{margin-left:75%}#conversejs .offset-xl-10{margin-left:83.33333%}#conversejs .offset-xl-11{margin-left:91.66667%}}#conversejs .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .form-control{transition:none}}#conversejs .form-control::-ms-expand{background-color:transparent;border:0}#conversejs .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}#conversejs .form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .form-control::-moz-placeholder{color:#6c757d;opacity:1}#conversejs .form-control:-ms-input-placeholder{color:#6c757d;opacity:1}#conversejs .form-control::-ms-input-placeholder{color:#6c757d;opacity:1}#conversejs .form-control::placeholder{color:#6c757d;opacity:1}#conversejs .form-control:disabled,#conversejs .form-control[readonly]{background-color:#e9ecef;opacity:1}#conversejs select.form-control:focus::-ms-value{color:#495057;background-color:#fff}#conversejs .form-control-file,#conversejs .form-control-range{display:block;width:100%}#conversejs .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}#conversejs .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}#conversejs .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}#conversejs .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}#conversejs .form-control-plaintext.form-control-lg,#conversejs .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}#conversejs .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs select.form-control[multiple],#conversejs select.form-control[size]{height:auto}#conversejs textarea.form-control{height:auto}#conversejs .form-group{margin-bottom:1rem}#conversejs .form-text{display:block;margin-top:.25rem}#conversejs .form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}#conversejs .form-row>.col,#conversejs .form-row>[class*=col-]{padding-right:5px;padding-left:5px}#conversejs .form-check{position:relative;display:block;padding-left:1.25rem}#conversejs .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}#conversejs .form-check-input:disabled~.form-check-label,#conversejs .form-check-input[disabled]~.form-check-label{color:#6c757d}#conversejs .form-check-label{margin-bottom:0}#conversejs .form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}#conversejs .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}#conversejs .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}#conversejs .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}#conversejs.is-valid~.valid-feedback,#conversejs.is-valid~.valid-tooltip,.was-validated #conversejs:valid~.valid-feedback,.was-validated #conversejs:valid~.valid-tooltip{display:block}#conversejs .form-control.is-valid,.was-validated #conversejs .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .form-control.is-valid:focus,.was-validated #conversejs .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs textarea.form-control.is-valid,.was-validated #conversejs textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}#conversejs .custom-select.is-valid,.was-validated #conversejs .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .custom-select.is-valid:focus,.was-validated #conversejs .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .form-check-input.is-valid~.form-check-label,.was-validated #conversejs .form-check-input:valid~.form-check-label{color:#28a745}#conversejs .form-check-input.is-valid~.valid-feedback,#conversejs .form-check-input.is-valid~.valid-tooltip,.was-validated #conversejs .form-check-input:valid~.valid-feedback,.was-validated #conversejs .form-check-input:valid~.valid-tooltip{display:block}#conversejs .custom-control-input.is-valid~.custom-control-label,.was-validated #conversejs .custom-control-input:valid~.custom-control-label{color:#28a745}#conversejs .custom-control-input.is-valid~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}#conversejs .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}#conversejs .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}#conversejs .custom-file-input.is-valid~.custom-file-label,.was-validated #conversejs .custom-file-input:valid~.custom-file-label{border-color:#28a745}#conversejs .custom-file-input.is-valid:focus~.custom-file-label,.was-validated #conversejs .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}#conversejs .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}#conversejs.is-invalid~.invalid-feedback,#conversejs.is-invalid~.invalid-tooltip,.was-validated #conversejs:invalid~.invalid-feedback,.was-validated #conversejs:invalid~.invalid-tooltip{display:block}#conversejs .form-control.is-invalid,.was-validated #conversejs .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .form-control.is-invalid:focus,.was-validated #conversejs .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs textarea.form-control.is-invalid,.was-validated #conversejs textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}#conversejs .custom-select.is-invalid,.was-validated #conversejs .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .custom-select.is-invalid:focus,.was-validated #conversejs .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .form-check-input.is-invalid~.form-check-label,.was-validated #conversejs .form-check-input:invalid~.form-check-label{color:#dc3545}#conversejs .form-check-input.is-invalid~.invalid-feedback,#conversejs .form-check-input.is-invalid~.invalid-tooltip,.was-validated #conversejs .form-check-input:invalid~.invalid-feedback,.was-validated #conversejs .form-check-input:invalid~.invalid-tooltip{display:block}#conversejs .custom-control-input.is-invalid~.custom-control-label,.was-validated #conversejs .custom-control-input:invalid~.custom-control-label{color:#dc3545}#conversejs .custom-control-input.is-invalid~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}#conversejs .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}#conversejs .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}#conversejs .custom-file-input.is-invalid~.custom-file-label,.was-validated #conversejs .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}#conversejs .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated #conversejs .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .form-inline{display:flex;flex-flow:row wrap;align-items:center}#conversejs .form-inline .form-check{width:100%}@media (min-width:576px){#conversejs .form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}#conversejs .form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}#conversejs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#conversejs .form-inline .form-control-plaintext{display:inline-block}#conversejs .form-inline .custom-select,#conversejs .form-inline .input-group{width:auto}#conversejs .form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}#conversejs .form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}#conversejs .form-inline .custom-control{align-items:center;justify-content:center}#conversejs .form-inline .custom-control-label{margin-bottom:0}}#conversejs .btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .btn{transition:none}}#conversejs .btn:hover{color:#212529;text-decoration:none}#conversejs .btn.focus,#conversejs .btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .btn.disabled,#conversejs .btn:disabled{opacity:.65}#conversejs a.btn.disabled,#conversejs fieldset:disabled a.btn{pointer-events:none}#conversejs .btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}#conversejs .btn-primary.focus,#conversejs .btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}#conversejs .btn-primary.disabled,#conversejs .btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-primary:not(:disabled):not(.disabled).active,#conversejs .btn-primary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}#conversejs .btn-primary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-primary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}#conversejs .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}#conversejs .btn-secondary.focus,#conversejs .btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}#conversejs .btn-secondary.disabled,#conversejs .btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-secondary:not(:disabled):not(.disabled).active,#conversejs .btn-secondary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}#conversejs .btn-secondary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}#conversejs .btn-success{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}#conversejs .btn-success.focus,#conversejs .btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}#conversejs .btn-success.disabled,#conversejs .btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-success:not(:disabled):not(.disabled).active,#conversejs .btn-success:not(:disabled):not(.disabled):active,.show>#conversejs .btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}#conversejs .btn-success:not(:disabled):not(.disabled).active:focus,#conversejs .btn-success:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}#conversejs .btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}#conversejs .btn-info.focus,#conversejs .btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}#conversejs .btn-info.disabled,#conversejs .btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-info:not(:disabled):not(.disabled).active,#conversejs .btn-info:not(:disabled):not(.disabled):active,.show>#conversejs .btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}#conversejs .btn-info:not(:disabled):not(.disabled).active:focus,#conversejs .btn-info:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}#conversejs .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}#conversejs .btn-warning.focus,#conversejs .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}#conversejs .btn-warning.disabled,#conversejs .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-warning:not(:disabled):not(.disabled).active,#conversejs .btn-warning:not(:disabled):not(.disabled):active,.show>#conversejs .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}#conversejs .btn-warning:not(:disabled):not(.disabled).active:focus,#conversejs .btn-warning:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}#conversejs .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}#conversejs .btn-danger.focus,#conversejs .btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}#conversejs .btn-danger.disabled,#conversejs .btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-danger:not(:disabled):not(.disabled).active,#conversejs .btn-danger:not(:disabled):not(.disabled):active,.show>#conversejs .btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}#conversejs .btn-danger:not(:disabled):not(.disabled).active:focus,#conversejs .btn-danger:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}#conversejs .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}#conversejs .btn-light.focus,#conversejs .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}#conversejs .btn-light.disabled,#conversejs .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-light:not(:disabled):not(.disabled).active,#conversejs .btn-light:not(:disabled):not(.disabled):active,.show>#conversejs .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}#conversejs .btn-light:not(:disabled):not(.disabled).active:focus,#conversejs .btn-light:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}#conversejs .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}#conversejs .btn-dark.focus,#conversejs .btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}#conversejs .btn-dark.disabled,#conversejs .btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-dark:not(:disabled):not(.disabled).active,#conversejs .btn-dark:not(:disabled):not(.disabled):active,.show>#conversejs .btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}#conversejs .btn-dark:not(:disabled):not(.disabled).active:focus,#conversejs .btn-dark:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}#conversejs .btn-outline-primary{color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary.focus,#conversejs .btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .btn-outline-primary.disabled,#conversejs .btn-outline-primary:disabled{color:#007bff;background-color:transparent}#conversejs .btn-outline-primary:not(:disabled):not(.disabled).active,#conversejs .btn-outline-primary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .btn-outline-secondary{color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary.focus,#conversejs .btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .btn-outline-secondary.disabled,#conversejs .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}#conversejs .btn-outline-secondary:not(:disabled):not(.disabled).active,#conversejs .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .btn-outline-success{color:#28a745;border-color:#28a745}#conversejs .btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-outline-success.focus,#conversejs .btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .btn-outline-success.disabled,#conversejs .btn-outline-success:disabled{color:#28a745;background-color:transparent}#conversejs .btn-outline-success:not(:disabled):not(.disabled).active,#conversejs .btn-outline-success:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-outline-success:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .btn-outline-info{color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info.focus,#conversejs .btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .btn-outline-info.disabled,#conversejs .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}#conversejs .btn-outline-info:not(:disabled):not(.disabled).active,#conversejs .btn-outline-info:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .btn-outline-warning{color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning.focus,#conversejs .btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .btn-outline-warning.disabled,#conversejs .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}#conversejs .btn-outline-warning:not(:disabled):not(.disabled).active,#conversejs .btn-outline-warning:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .btn-outline-danger{color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger.focus,#conversejs .btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .btn-outline-danger.disabled,#conversejs .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}#conversejs .btn-outline-danger:not(:disabled):not(.disabled).active,#conversejs .btn-outline-danger:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light.focus,#conversejs .btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .btn-outline-light.disabled,#conversejs .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}#conversejs .btn-outline-light:not(:disabled):not(.disabled).active,#conversejs .btn-outline-light:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .btn-outline-dark{color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark.focus,#conversejs .btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .btn-outline-dark.disabled,#conversejs .btn-outline-dark:disabled{color:#343a40;background-color:transparent}#conversejs .btn-outline-dark:not(:disabled):not(.disabled).active,#conversejs .btn-outline-dark:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .btn-link{font-weight:400;color:#007bff;text-decoration:none}#conversejs .btn-link:hover{color:#0056b3;text-decoration:underline}#conversejs .btn-link.focus,#conversejs .btn-link:focus{text-decoration:underline;box-shadow:none}#conversejs .btn-link.disabled,#conversejs .btn-link:disabled{color:#6c757d;pointer-events:none}#conversejs .btn-group-lg>.btn,#conversejs .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs .btn-group-sm>.btn,#conversejs .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .btn-block{display:block;width:100%}#conversejs .btn-block+.btn-block{margin-top:.5rem}#conversejs input[type=button].btn-block,#conversejs input[type=reset].btn-block,#conversejs input[type=submit].btn-block{width:100%}#conversejs .fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){#conversejs .fade{transition:none}}#conversejs .fade:not(.show){opacity:0}#conversejs .collapse:not(.show){display:none}#conversejs .collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){#conversejs .collapsing{transition:none}}#conversejs .dropdown,#conversejs .dropleft,#conversejs .dropright,#conversejs .dropup{position:relative}#conversejs .dropdown-toggle{white-space:nowrap}#conversejs .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}#conversejs .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}#conversejs .dropdown-menu-left{right:auto;left:0}#conversejs .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){#conversejs .dropdown-menu-sm-left{right:auto;left:0}#conversejs .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){#conversejs .dropdown-menu-md-left{right:auto;left:0}#conversejs .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){#conversejs .dropdown-menu-lg-left{right:auto;left:0}#conversejs .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){#conversejs .dropdown-menu-xl-left{right:auto;left:0}#conversejs .dropdown-menu-xl-right{right:0;left:auto}}#conversejs .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}#conversejs .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}#conversejs .dropup .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}#conversejs .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}#conversejs .dropright .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropright .dropdown-toggle::after{vertical-align:0}#conversejs .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}#conversejs .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}#conversejs .dropleft .dropdown-toggle::after{display:none}#conversejs .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}#conversejs .dropleft .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropleft .dropdown-toggle::before{vertical-align:0}#conversejs .dropdown-menu[x-placement^=bottom],#conversejs .dropdown-menu[x-placement^=left],#conversejs .dropdown-menu[x-placement^=right],#conversejs .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}#conversejs .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}#conversejs .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}#conversejs .dropdown-item:focus,#conversejs .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}#conversejs .dropdown-item.active,#conversejs .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}#conversejs .dropdown-item.disabled,#conversejs .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}#conversejs .dropdown-menu.show{display:block}#conversejs .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}#conversejs .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}#conversejs .btn-group,#conversejs .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}#conversejs .btn-group-vertical>.btn,#conversejs .btn-group>.btn{position:relative;flex:1 1 auto}#conversejs .btn-group-vertical>.btn:hover,#conversejs .btn-group>.btn:hover{z-index:1}#conversejs .btn-group-vertical>.btn.active,#conversejs .btn-group-vertical>.btn:active,#conversejs .btn-group-vertical>.btn:focus,#conversejs .btn-group>.btn.active,#conversejs .btn-group>.btn:active,#conversejs .btn-group>.btn:focus{z-index:1}#conversejs .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}#conversejs .btn-toolbar .input-group{width:auto}#conversejs .btn-group>.btn-group:not(:first-child),#conversejs .btn-group>.btn:not(:first-child){margin-left:-1px}#conversejs .btn-group>.btn-group:not(:last-child)>.btn,#conversejs .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .btn-group>.btn-group:not(:first-child)>.btn,#conversejs .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}#conversejs .dropdown-toggle-split::after,.dropright #conversejs .dropdown-toggle-split::after,.dropup #conversejs .dropdown-toggle-split::after{margin-left:0}.dropleft #conversejs .dropdown-toggle-split::before{margin-right:0}#conversejs .btn-group-sm>.btn+.dropdown-toggle-split,#conversejs .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}#conversejs .btn-group-lg>.btn+.dropdown-toggle-split,#conversejs .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}#conversejs .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}#conversejs .btn-group-vertical>.btn,#conversejs .btn-group-vertical>.btn-group{width:100%}#conversejs .btn-group-vertical>.btn-group:not(:first-child),#conversejs .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}#conversejs .btn-group-vertical>.btn-group:not(:last-child)>.btn,#conversejs .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}#conversejs .btn-group-vertical>.btn-group:not(:first-child)>.btn,#conversejs .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}#conversejs .btn-group-toggle>.btn,#conversejs .btn-group-toggle>.btn-group>.btn{margin-bottom:0}#conversejs .btn-group-toggle>.btn input[type=checkbox],#conversejs .btn-group-toggle>.btn input[type=radio],#conversejs .btn-group-toggle>.btn-group>.btn input[type=checkbox],#conversejs .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#conversejs .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}#conversejs .input-group>.custom-file,#conversejs .input-group>.custom-select,#conversejs .input-group>.form-control,#conversejs .input-group>.form-control-plaintext{position:relative;flex:1 1 0%;min-width:0;margin-bottom:0}#conversejs .input-group>.custom-file+.custom-file,#conversejs .input-group>.custom-file+.custom-select,#conversejs .input-group>.custom-file+.form-control,#conversejs .input-group>.custom-select+.custom-file,#conversejs .input-group>.custom-select+.custom-select,#conversejs .input-group>.custom-select+.form-control,#conversejs .input-group>.form-control+.custom-file,#conversejs .input-group>.form-control+.custom-select,#conversejs .input-group>.form-control+.form-control,#conversejs .input-group>.form-control-plaintext+.custom-file,#conversejs .input-group>.form-control-plaintext+.custom-select,#conversejs .input-group>.form-control-plaintext+.form-control{margin-left:-1px}#conversejs .input-group>.custom-file .custom-file-input:focus~.custom-file-label,#conversejs .input-group>.custom-select:focus,#conversejs .input-group>.form-control:focus{z-index:3}#conversejs .input-group>.custom-file .custom-file-input:focus{z-index:4}#conversejs .input-group>.custom-select:not(:last-child),#conversejs .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.custom-select:not(:first-child),#conversejs .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .input-group>.custom-file{display:flex;align-items:center}#conversejs .input-group>.custom-file:not(:last-child) .custom-file-label,#conversejs .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .input-group-append,#conversejs .input-group-prepend{display:flex}#conversejs .input-group-append .btn,#conversejs .input-group-prepend .btn{position:relative;z-index:2}#conversejs .input-group-append .btn:focus,#conversejs .input-group-prepend .btn:focus{z-index:3}#conversejs .input-group-append .btn+.btn,#conversejs .input-group-append .btn+.input-group-text,#conversejs .input-group-append .input-group-text+.btn,#conversejs .input-group-append .input-group-text+.input-group-text,#conversejs .input-group-prepend .btn+.btn,#conversejs .input-group-prepend .btn+.input-group-text,#conversejs .input-group-prepend .input-group-text+.btn,#conversejs .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}#conversejs .input-group-prepend{margin-right:-1px}#conversejs .input-group-append{margin-left:-1px}#conversejs .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}#conversejs .input-group-text input[type=checkbox],#conversejs .input-group-text input[type=radio]{margin-top:0}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-lg>.form-control,#conversejs .input-group-lg>.input-group-append>.btn,#conversejs .input-group-lg>.input-group-append>.input-group-text,#conversejs .input-group-lg>.input-group-prepend>.btn,#conversejs .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs .input-group-sm>.custom-select,#conversejs .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}#conversejs .input-group-sm>.custom-select,#conversejs .input-group-sm>.form-control,#conversejs .input-group-sm>.input-group-append>.btn,#conversejs .input-group-sm>.input-group-append>.input-group-text,#conversejs .input-group-sm>.input-group-prepend>.btn,#conversejs .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-sm>.custom-select{padding-right:1.75rem}#conversejs .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),#conversejs .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),#conversejs .input-group>.input-group-append:not(:last-child)>.btn,#conversejs .input-group>.input-group-append:not(:last-child)>.input-group-text,#conversejs .input-group>.input-group-prepend>.btn,#conversejs .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.input-group-append>.btn,#conversejs .input-group>.input-group-append>.input-group-text,#conversejs .input-group>.input-group-prepend:first-child>.btn:not(:first-child),#conversejs .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),#conversejs .input-group>.input-group-prepend:not(:first-child)>.btn,#conversejs .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}#conversejs .custom-control-inline{display:inline-flex;margin-right:1rem}#conversejs .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}#conversejs .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}#conversejs .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}#conversejs .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}#conversejs .custom-control-input:disabled~.custom-control-label,#conversejs .custom-control-input[disabled]~.custom-control-label{color:#6c757d}#conversejs .custom-control-input:disabled~.custom-control-label::before,#conversejs .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}#conversejs .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}#conversejs .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}#conversejs .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}#conversejs .custom-checkbox .custom-control-label::before{border-radius:.25rem}#conversejs .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}#conversejs .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}#conversejs .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}#conversejs .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-radio .custom-control-label::before{border-radius:50%}#conversejs .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}#conversejs .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-switch{padding-left:2.25rem}#conversejs .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}#conversejs .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .custom-switch .custom-control-label::after{transition:none}}#conversejs .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}#conversejs .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs .custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-select:focus::-ms-value{color:#495057;background-color:#fff}#conversejs .custom-select[multiple],#conversejs .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}#conversejs .custom-select:disabled{color:#6c757d;background-color:#e9ecef}#conversejs .custom-select::-ms-expand{display:none}#conversejs .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}#conversejs .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}#conversejs .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}#conversejs .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}#conversejs .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}#conversejs .custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-file-input:disabled~.custom-file-label,#conversejs .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}#conversejs .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}#conversejs .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}#conversejs .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}#conversejs .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}#conversejs .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs .custom-range:focus{outline:0}#conversejs .custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range::-moz-focus-outer{border:0}#conversejs .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}#conversejs .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}#conversejs .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}#conversejs .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}#conversejs .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-ms-thumb{-ms-transition:none;transition:none}}#conversejs .custom-range::-ms-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}#conversejs .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}#conversejs .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}#conversejs .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}#conversejs .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}#conversejs .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}#conversejs .custom-range:disabled::-moz-range-track{cursor:default}#conversejs .custom-range:disabled::-ms-thumb{background-color:#adb5bd}#conversejs .custom-control-label::before,#conversejs .custom-file-label,#conversejs .custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .custom-control-label::before,#conversejs .custom-file-label,#conversejs .custom-select{transition:none}}#conversejs .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}#conversejs .nav-link{display:block;padding:.5rem 1rem}#conversejs .nav-link:focus,#conversejs .nav-link:hover{text-decoration:none}#conversejs .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}#conversejs .nav-tabs{border-bottom:1px solid #dee2e6}#conversejs .nav-tabs .nav-item{margin-bottom:-1px}#conversejs .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}#conversejs .nav-tabs .nav-link:focus,#conversejs .nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}#conversejs .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}#conversejs .nav-tabs .nav-item.show .nav-link,#conversejs .nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}#conversejs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#conversejs .nav-pills .nav-link{border-radius:.25rem}#conversejs .nav-pills .nav-link.active,#conversejs .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}#conversejs .nav-fill .nav-item{flex:1 1 auto;text-align:center}#conversejs .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}#conversejs .tab-content>.tab-pane{display:none}#conversejs .tab-content>.active{display:block}#conversejs .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .badge{transition:none}}a#conversejs .badge:focus,a#conversejs .badge:hover{text-decoration:none}#conversejs .badge:empty{display:none}#conversejs .btn .badge{position:relative;top:-1px}#conversejs .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}#conversejs .badge-primary{color:#fff;background-color:#007bff}a#conversejs .badge-primary:focus,a#conversejs .badge-primary:hover{color:#fff;background-color:#0062cc}a#conversejs .badge-primary.focus,a#conversejs .badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .badge-secondary{color:#fff;background-color:#6c757d}a#conversejs .badge-secondary:focus,a#conversejs .badge-secondary:hover{color:#fff;background-color:#545b62}a#conversejs .badge-secondary.focus,a#conversejs .badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .badge-success{color:#fff;background-color:#28a745}a#conversejs .badge-success:focus,a#conversejs .badge-success:hover{color:#fff;background-color:#1e7e34}a#conversejs .badge-success.focus,a#conversejs .badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .badge-info{color:#fff;background-color:#17a2b8}a#conversejs .badge-info:focus,a#conversejs .badge-info:hover{color:#fff;background-color:#117a8b}a#conversejs .badge-info.focus,a#conversejs .badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .badge-warning{color:#212529;background-color:#ffc107}a#conversejs .badge-warning:focus,a#conversejs .badge-warning:hover{color:#212529;background-color:#d39e00}a#conversejs .badge-warning.focus,a#conversejs .badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .badge-danger{color:#fff;background-color:#dc3545}a#conversejs .badge-danger:focus,a#conversejs .badge-danger:hover{color:#fff;background-color:#bd2130}a#conversejs .badge-danger.focus,a#conversejs .badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .badge-light{color:#212529;background-color:#f8f9fa}a#conversejs .badge-light:focus,a#conversejs .badge-light:hover{color:#212529;background-color:#dae0e5}a#conversejs .badge-light.focus,a#conversejs .badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .badge-dark{color:#fff;background-color:#343a40}a#conversejs .badge-dark:focus,a#conversejs .badge-dark:hover{color:#fff;background-color:#1d2124}a#conversejs .badge-dark.focus,a#conversejs .badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}#conversejs .alert-heading{color:inherit}#conversejs .alert-link{font-weight:700}#conversejs .alert-dismissible{padding-right:4rem}#conversejs .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}#conversejs .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}#conversejs .alert-primary hr{border-top-color:#9fcdff}#conversejs .alert-primary .alert-link{color:#002752}#conversejs .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}#conversejs .alert-secondary hr{border-top-color:#c8cbcf}#conversejs .alert-secondary .alert-link{color:#202326}#conversejs .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}#conversejs .alert-success hr{border-top-color:#b1dfbb}#conversejs .alert-success .alert-link{color:#0b2e13}#conversejs .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}#conversejs .alert-info hr{border-top-color:#abdde5}#conversejs .alert-info .alert-link{color:#062c33}#conversejs .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}#conversejs .alert-warning hr{border-top-color:#ffe8a1}#conversejs .alert-warning .alert-link{color:#533f03}#conversejs .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}#conversejs .alert-danger hr{border-top-color:#f1b0b7}#conversejs .alert-danger .alert-link{color:#491217}#conversejs .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}#conversejs .alert-light hr{border-top-color:#ececf6}#conversejs .alert-light .alert-link{color:#686868}#conversejs .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}#conversejs .alert-dark hr{border-top-color:#b9bbbe}#conversejs .alert-dark .alert-link{color:#040505}#conversejs .media{display:flex;align-items:flex-start}#conversejs .media-body{flex:1}#conversejs .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}#conversejs .list-group-item-action{width:100%;color:#495057;text-align:inherit}#conversejs .list-group-item-action:focus,#conversejs .list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}#conversejs .list-group-item-action:active{color:#212529;background-color:#e9ecef}#conversejs .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}#conversejs .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}#conversejs .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}#conversejs .list-group-item.disabled,#conversejs .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}#conversejs .list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .list-group-item+#conversejs .list-group-item{border-top-width:0}#conversejs .list-group-item+#conversejs .list-group-item.active{margin-top:-1px;border-top-width:1px}#conversejs .list-group-horizontal{flex-direction:row}#conversejs .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){#conversejs .list-group-horizontal-sm{flex-direction:row}#conversejs .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-sm .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){#conversejs .list-group-horizontal-md{flex-direction:row}#conversejs .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-md .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){#conversejs .list-group-horizontal-lg{flex-direction:row}#conversejs .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-lg .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){#conversejs .list-group-horizontal-xl{flex-direction:row}#conversejs .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-xl .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}#conversejs .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}#conversejs .list-group-flush .list-group-item:first-child{border-top-width:0}#conversejs .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}#conversejs .list-group-item-primary{color:#004085;background-color:#b8daff}#conversejs .list-group-item-primary.list-group-item-action:focus,#conversejs .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}#conversejs .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}#conversejs .list-group-item-secondary{color:#383d41;background-color:#d6d8db}#conversejs .list-group-item-secondary.list-group-item-action:focus,#conversejs .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}#conversejs .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}#conversejs .list-group-item-success{color:#155724;background-color:#c3e6cb}#conversejs .list-group-item-success.list-group-item-action:focus,#conversejs .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}#conversejs .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}#conversejs .list-group-item-info{color:#0c5460;background-color:#bee5eb}#conversejs .list-group-item-info.list-group-item-action:focus,#conversejs .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}#conversejs .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}#conversejs .list-group-item-warning{color:#856404;background-color:#ffeeba}#conversejs .list-group-item-warning.list-group-item-action:focus,#conversejs .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}#conversejs .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}#conversejs .list-group-item-danger{color:#721c24;background-color:#f5c6cb}#conversejs .list-group-item-danger.list-group-item-action:focus,#conversejs .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}#conversejs .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}#conversejs .list-group-item-light{color:#818182;background-color:#fdfdfe}#conversejs .list-group-item-light.list-group-item-action:focus,#conversejs .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}#conversejs .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}#conversejs .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}#conversejs .list-group-item-dark.list-group-item-action:focus,#conversejs .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}#conversejs .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}#conversejs .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}#conversejs .close:hover{color:#000;text-decoration:none}#conversejs .close:not(:disabled):not(.disabled):focus,#conversejs .close:not(:disabled):not(.disabled):hover{opacity:.75}#conversejs button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs a.close.disabled{pointer-events:none}#conversejs .modal-open{overflow:hidden}#conversejs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#conversejs .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}#conversejs .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade #conversejs .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade #conversejs .modal-dialog{transition:none}}.modal.show #conversejs .modal-dialog{transform:none}.modal.modal-static #conversejs .modal-dialog{transform:scale(1.02)}#conversejs .modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}#conversejs .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}#conversejs .modal-dialog-scrollable .modal-footer,#conversejs .modal-dialog-scrollable .modal-header{flex-shrink:0}#conversejs .modal-dialog-scrollable .modal-body{overflow-y:auto}#conversejs .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}#conversejs .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}#conversejs .modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}#conversejs .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}#conversejs .modal-dialog-centered.modal-dialog-scrollable::before{content:none}#conversejs .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}#conversejs .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}#conversejs .modal-backdrop.fade{opacity:0}#conversejs .modal-backdrop.show{opacity:.5}#conversejs .modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}#conversejs .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}#conversejs .modal-title{margin-bottom:0;line-height:1.5}#conversejs .modal-body{position:relative;flex:1 1 auto;padding:1rem}#conversejs .modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}#conversejs .modal-footer>*{margin:.25rem}#conversejs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){#conversejs .modal-dialog{max-width:500px;margin:1.75rem auto}#conversejs .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}#conversejs .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}#conversejs .modal-dialog-centered{min-height:calc(100% - 3.5rem)}#conversejs .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}#conversejs .modal-sm{max-width:300px}}@media (min-width:992px){#conversejs .modal-lg,#conversejs .modal-xl{max-width:800px}}@media (min-width:1200px){#conversejs .modal-xl{max-width:1140px}}#conversejs .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}#conversejs .tooltip.show{opacity:.9}#conversejs .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}#conversejs .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}#conversejs .bs-tooltip-auto[x-placement^=top],#conversejs .bs-tooltip-top{padding:.4rem 0}#conversejs .bs-tooltip-auto[x-placement^=top] .arrow,#conversejs .bs-tooltip-top .arrow{bottom:0}#conversejs .bs-tooltip-auto[x-placement^=top] .arrow::before,#conversejs .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}#conversejs .bs-tooltip-auto[x-placement^=right],#conversejs .bs-tooltip-right{padding:0 .4rem}#conversejs .bs-tooltip-auto[x-placement^=right] .arrow,#conversejs .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}#conversejs .bs-tooltip-auto[x-placement^=right] .arrow::before,#conversejs .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}#conversejs .bs-tooltip-auto[x-placement^=bottom],#conversejs .bs-tooltip-bottom{padding:.4rem 0}#conversejs .bs-tooltip-auto[x-placement^=bottom] .arrow,#conversejs .bs-tooltip-bottom .arrow{top:0}#conversejs .bs-tooltip-auto[x-placement^=bottom] .arrow::before,#conversejs .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}#conversejs .bs-tooltip-auto[x-placement^=left],#conversejs .bs-tooltip-left{padding:0 .4rem}#conversejs .bs-tooltip-auto[x-placement^=left] .arrow,#conversejs .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}#conversejs .bs-tooltip-auto[x-placement^=left] .arrow::before,#conversejs .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}#conversejs .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}#conversejs .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}#conversejs .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}#conversejs .popover .arrow::after,#conversejs .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}#conversejs .bs-popover-auto[x-placement^=top],#conversejs .bs-popover-top{margin-bottom:.5rem}#conversejs .bs-popover-auto[x-placement^=top]>.arrow,#conversejs .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}#conversejs .bs-popover-auto[x-placement^=top]>.arrow::before,#conversejs .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=top]>.arrow::after,#conversejs .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}#conversejs .bs-popover-auto[x-placement^=right],#conversejs .bs-popover-right{margin-left:.5rem}#conversejs .bs-popover-auto[x-placement^=right]>.arrow,#conversejs .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}#conversejs .bs-popover-auto[x-placement^=right]>.arrow::before,#conversejs .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=right]>.arrow::after,#conversejs .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}#conversejs .bs-popover-auto[x-placement^=bottom],#conversejs .bs-popover-bottom{margin-top:.5rem}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow,#conversejs .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow::before,#conversejs .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow::after,#conversejs .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}#conversejs .bs-popover-auto[x-placement^=bottom] .popover-header::before,#conversejs .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}#conversejs .bs-popover-auto[x-placement^=left],#conversejs .bs-popover-left{margin-right:.5rem}#conversejs .bs-popover-auto[x-placement^=left]>.arrow,#conversejs .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}#conversejs .bs-popover-auto[x-placement^=left]>.arrow::before,#conversejs .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=left]>.arrow::after,#conversejs .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}#conversejs .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}#conversejs .popover-header:empty{display:none}#conversejs .popover-body{padding:.5rem .75rem;color:#212529}#conversejs .align-baseline{vertical-align:baseline!important}#conversejs .align-top{vertical-align:top!important}#conversejs .align-middle{vertical-align:middle!important}#conversejs .align-bottom{vertical-align:bottom!important}#conversejs .align-text-bottom{vertical-align:text-bottom!important}#conversejs .align-text-top{vertical-align:text-top!important}#conversejs .bg-primary{background-color:#007bff!important}#conversejs a.bg-primary:focus,#conversejs a.bg-primary:hover,#conversejs button.bg-primary:focus,#conversejs button.bg-primary:hover{background-color:#0062cc!important}#conversejs .bg-secondary{background-color:#6c757d!important}#conversejs a.bg-secondary:focus,#conversejs a.bg-secondary:hover,#conversejs button.bg-secondary:focus,#conversejs button.bg-secondary:hover{background-color:#545b62!important}#conversejs .bg-success{background-color:#28a745!important}#conversejs a.bg-success:focus,#conversejs a.bg-success:hover,#conversejs button.bg-success:focus,#conversejs button.bg-success:hover{background-color:#1e7e34!important}#conversejs .bg-info{background-color:#17a2b8!important}#conversejs a.bg-info:focus,#conversejs a.bg-info:hover,#conversejs button.bg-info:focus,#conversejs button.bg-info:hover{background-color:#117a8b!important}#conversejs .bg-warning{background-color:#ffc107!important}#conversejs a.bg-warning:focus,#conversejs a.bg-warning:hover,#conversejs button.bg-warning:focus,#conversejs button.bg-warning:hover{background-color:#d39e00!important}#conversejs .bg-danger{background-color:#dc3545!important}#conversejs a.bg-danger:focus,#conversejs a.bg-danger:hover,#conversejs button.bg-danger:focus,#conversejs button.bg-danger:hover{background-color:#bd2130!important}#conversejs .bg-light{background-color:#f8f9fa!important}#conversejs a.bg-light:focus,#conversejs a.bg-light:hover,#conversejs button.bg-light:focus,#conversejs button.bg-light:hover{background-color:#dae0e5!important}#conversejs .bg-dark{background-color:#343a40!important}#conversejs a.bg-dark:focus,#conversejs a.bg-dark:hover,#conversejs button.bg-dark:focus,#conversejs button.bg-dark:hover{background-color:#1d2124!important}#conversejs .bg-white{background-color:#fff!important}#conversejs .bg-transparent{background-color:transparent!important}#conversejs .border{border:1px solid #dee2e6!important}#conversejs .border-top{border-top:1px solid #dee2e6!important}#conversejs .border-right{border-right:1px solid #dee2e6!important}#conversejs .border-bottom{border-bottom:1px solid #dee2e6!important}#conversejs .border-left{border-left:1px solid #dee2e6!important}#conversejs .border-0{border:0!important}#conversejs .border-top-0{border-top:0!important}#conversejs .border-right-0{border-right:0!important}#conversejs .border-bottom-0{border-bottom:0!important}#conversejs .border-left-0{border-left:0!important}#conversejs .border-primary{border-color:#007bff!important}#conversejs .border-secondary{border-color:#6c757d!important}#conversejs .border-success{border-color:#28a745!important}#conversejs .border-info{border-color:#17a2b8!important}#conversejs .border-warning{border-color:#ffc107!important}#conversejs .border-danger{border-color:#dc3545!important}#conversejs .border-light{border-color:#f8f9fa!important}#conversejs .border-dark{border-color:#343a40!important}#conversejs .border-white{border-color:#fff!important}#conversejs .rounded-sm{border-radius:.2rem!important}#conversejs .rounded{border-radius:.25rem!important}#conversejs .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}#conversejs .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}#conversejs .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}#conversejs .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}#conversejs .rounded-lg{border-radius:.3rem!important}#conversejs .rounded-circle{border-radius:50%!important}#conversejs .rounded-pill{border-radius:50rem!important}#conversejs .rounded-0{border-radius:0!important}#conversejs .clearfix::after{display:block;clear:both;content:""}#conversejs .d-none{display:none!important}#conversejs .d-inline{display:inline!important}#conversejs .d-inline-block{display:inline-block!important}#conversejs .d-block{display:block!important}#conversejs .d-table{display:table!important}#conversejs .d-table-row{display:table-row!important}#conversejs .d-table-cell{display:table-cell!important}#conversejs .d-flex{display:flex!important}#conversejs .d-inline-flex{display:inline-flex!important}@media (min-width:576px){#conversejs .d-sm-none{display:none!important}#conversejs .d-sm-inline{display:inline!important}#conversejs .d-sm-inline-block{display:inline-block!important}#conversejs .d-sm-block{display:block!important}#conversejs .d-sm-table{display:table!important}#conversejs .d-sm-table-row{display:table-row!important}#conversejs .d-sm-table-cell{display:table-cell!important}#conversejs .d-sm-flex{display:flex!important}#conversejs .d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){#conversejs .d-md-none{display:none!important}#conversejs .d-md-inline{display:inline!important}#conversejs .d-md-inline-block{display:inline-block!important}#conversejs .d-md-block{display:block!important}#conversejs .d-md-table{display:table!important}#conversejs .d-md-table-row{display:table-row!important}#conversejs .d-md-table-cell{display:table-cell!important}#conversejs .d-md-flex{display:flex!important}#conversejs .d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){#conversejs .d-lg-none{display:none!important}#conversejs .d-lg-inline{display:inline!important}#conversejs .d-lg-inline-block{display:inline-block!important}#conversejs .d-lg-block{display:block!important}#conversejs .d-lg-table{display:table!important}#conversejs .d-lg-table-row{display:table-row!important}#conversejs .d-lg-table-cell{display:table-cell!important}#conversejs .d-lg-flex{display:flex!important}#conversejs .d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){#conversejs .d-xl-none{display:none!important}#conversejs .d-xl-inline{display:inline!important}#conversejs .d-xl-inline-block{display:inline-block!important}#conversejs .d-xl-block{display:block!important}#conversejs .d-xl-table{display:table!important}#conversejs .d-xl-table-row{display:table-row!important}#conversejs .d-xl-table-cell{display:table-cell!important}#conversejs .d-xl-flex{display:flex!important}#conversejs .d-xl-inline-flex{display:inline-flex!important}}@media print{#conversejs .d-print-none{display:none!important}#conversejs .d-print-inline{display:inline!important}#conversejs .d-print-inline-block{display:inline-block!important}#conversejs .d-print-block{display:block!important}#conversejs .d-print-table{display:table!important}#conversejs .d-print-table-row{display:table-row!important}#conversejs .d-print-table-cell{display:table-cell!important}#conversejs .d-print-flex{display:flex!important}#conversejs .d-print-inline-flex{display:inline-flex!important}}#conversejs .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}#conversejs .embed-responsive::before{display:block;content:""}#conversejs .embed-responsive .embed-responsive-item,#conversejs .embed-responsive embed,#conversejs .embed-responsive iframe,#conversejs .embed-responsive object,#conversejs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#conversejs .embed-responsive-21by9::before{padding-top:42.85714%}#conversejs .embed-responsive-16by9::before{padding-top:56.25%}#conversejs .embed-responsive-4by3::before{padding-top:75%}#conversejs .embed-responsive-1by1::before{padding-top:100%}#conversejs .flex-row{flex-direction:row!important}#conversejs .flex-column{flex-direction:column!important}#conversejs .flex-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-wrap{flex-wrap:wrap!important}#conversejs .flex-nowrap{flex-wrap:nowrap!important}#conversejs .flex-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-fill{flex:1 1 auto!important}#conversejs .flex-grow-0{flex-grow:0!important}#conversejs .flex-grow-1{flex-grow:1!important}#conversejs .flex-shrink-0{flex-shrink:0!important}#conversejs .flex-shrink-1{flex-shrink:1!important}#conversejs .justify-content-start{justify-content:flex-start!important}#conversejs .justify-content-end{justify-content:flex-end!important}#conversejs .justify-content-center{justify-content:center!important}#conversejs .justify-content-between{justify-content:space-between!important}#conversejs .justify-content-around{justify-content:space-around!important}#conversejs .align-items-start{align-items:flex-start!important}#conversejs .align-items-end{align-items:flex-end!important}#conversejs .align-items-center{align-items:center!important}#conversejs .align-items-baseline{align-items:baseline!important}#conversejs .align-items-stretch{align-items:stretch!important}#conversejs .align-content-start{align-content:flex-start!important}#conversejs .align-content-end{align-content:flex-end!important}#conversejs .align-content-center{align-content:center!important}#conversejs .align-content-between{align-content:space-between!important}#conversejs .align-content-around{align-content:space-around!important}#conversejs .align-content-stretch{align-content:stretch!important}#conversejs .align-self-auto{align-self:auto!important}#conversejs .align-self-start{align-self:flex-start!important}#conversejs .align-self-end{align-self:flex-end!important}#conversejs .align-self-center{align-self:center!important}#conversejs .align-self-baseline{align-self:baseline!important}#conversejs .align-self-stretch{align-self:stretch!important}@media (min-width:576px){#conversejs .flex-sm-row{flex-direction:row!important}#conversejs .flex-sm-column{flex-direction:column!important}#conversejs .flex-sm-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-sm-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-sm-wrap{flex-wrap:wrap!important}#conversejs .flex-sm-nowrap{flex-wrap:nowrap!important}#conversejs .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-sm-fill{flex:1 1 auto!important}#conversejs .flex-sm-grow-0{flex-grow:0!important}#conversejs .flex-sm-grow-1{flex-grow:1!important}#conversejs .flex-sm-shrink-0{flex-shrink:0!important}#conversejs .flex-sm-shrink-1{flex-shrink:1!important}#conversejs .justify-content-sm-start{justify-content:flex-start!important}#conversejs .justify-content-sm-end{justify-content:flex-end!important}#conversejs .justify-content-sm-center{justify-content:center!important}#conversejs .justify-content-sm-between{justify-content:space-between!important}#conversejs .justify-content-sm-around{justify-content:space-around!important}#conversejs .align-items-sm-start{align-items:flex-start!important}#conversejs .align-items-sm-end{align-items:flex-end!important}#conversejs .align-items-sm-center{align-items:center!important}#conversejs .align-items-sm-baseline{align-items:baseline!important}#conversejs .align-items-sm-stretch{align-items:stretch!important}#conversejs .align-content-sm-start{align-content:flex-start!important}#conversejs .align-content-sm-end{align-content:flex-end!important}#conversejs .align-content-sm-center{align-content:center!important}#conversejs .align-content-sm-between{align-content:space-between!important}#conversejs .align-content-sm-around{align-content:space-around!important}#conversejs .align-content-sm-stretch{align-content:stretch!important}#conversejs .align-self-sm-auto{align-self:auto!important}#conversejs .align-self-sm-start{align-self:flex-start!important}#conversejs .align-self-sm-end{align-self:flex-end!important}#conversejs .align-self-sm-center{align-self:center!important}#conversejs .align-self-sm-baseline{align-self:baseline!important}#conversejs .align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){#conversejs .flex-md-row{flex-direction:row!important}#conversejs .flex-md-column{flex-direction:column!important}#conversejs .flex-md-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-md-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-md-wrap{flex-wrap:wrap!important}#conversejs .flex-md-nowrap{flex-wrap:nowrap!important}#conversejs .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-md-fill{flex:1 1 auto!important}#conversejs .flex-md-grow-0{flex-grow:0!important}#conversejs .flex-md-grow-1{flex-grow:1!important}#conversejs .flex-md-shrink-0{flex-shrink:0!important}#conversejs .flex-md-shrink-1{flex-shrink:1!important}#conversejs .justify-content-md-start{justify-content:flex-start!important}#conversejs .justify-content-md-end{justify-content:flex-end!important}#conversejs .justify-content-md-center{justify-content:center!important}#conversejs .justify-content-md-between{justify-content:space-between!important}#conversejs .justify-content-md-around{justify-content:space-around!important}#conversejs .align-items-md-start{align-items:flex-start!important}#conversejs .align-items-md-end{align-items:flex-end!important}#conversejs .align-items-md-center{align-items:center!important}#conversejs .align-items-md-baseline{align-items:baseline!important}#conversejs .align-items-md-stretch{align-items:stretch!important}#conversejs .align-content-md-start{align-content:flex-start!important}#conversejs .align-content-md-end{align-content:flex-end!important}#conversejs .align-content-md-center{align-content:center!important}#conversejs .align-content-md-between{align-content:space-between!important}#conversejs .align-content-md-around{align-content:space-around!important}#conversejs .align-content-md-stretch{align-content:stretch!important}#conversejs .align-self-md-auto{align-self:auto!important}#conversejs .align-self-md-start{align-self:flex-start!important}#conversejs .align-self-md-end{align-self:flex-end!important}#conversejs .align-self-md-center{align-self:center!important}#conversejs .align-self-md-baseline{align-self:baseline!important}#conversejs .align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){#conversejs .flex-lg-row{flex-direction:row!important}#conversejs .flex-lg-column{flex-direction:column!important}#conversejs .flex-lg-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-lg-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-lg-wrap{flex-wrap:wrap!important}#conversejs .flex-lg-nowrap{flex-wrap:nowrap!important}#conversejs .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-lg-fill{flex:1 1 auto!important}#conversejs .flex-lg-grow-0{flex-grow:0!important}#conversejs .flex-lg-grow-1{flex-grow:1!important}#conversejs .flex-lg-shrink-0{flex-shrink:0!important}#conversejs .flex-lg-shrink-1{flex-shrink:1!important}#conversejs .justify-content-lg-start{justify-content:flex-start!important}#conversejs .justify-content-lg-end{justify-content:flex-end!important}#conversejs .justify-content-lg-center{justify-content:center!important}#conversejs .justify-content-lg-between{justify-content:space-between!important}#conversejs .justify-content-lg-around{justify-content:space-around!important}#conversejs .align-items-lg-start{align-items:flex-start!important}#conversejs .align-items-lg-end{align-items:flex-end!important}#conversejs .align-items-lg-center{align-items:center!important}#conversejs .align-items-lg-baseline{align-items:baseline!important}#conversejs .align-items-lg-stretch{align-items:stretch!important}#conversejs .align-content-lg-start{align-content:flex-start!important}#conversejs .align-content-lg-end{align-content:flex-end!important}#conversejs .align-content-lg-center{align-content:center!important}#conversejs .align-content-lg-between{align-content:space-between!important}#conversejs .align-content-lg-around{align-content:space-around!important}#conversejs .align-content-lg-stretch{align-content:stretch!important}#conversejs .align-self-lg-auto{align-self:auto!important}#conversejs .align-self-lg-start{align-self:flex-start!important}#conversejs .align-self-lg-end{align-self:flex-end!important}#conversejs .align-self-lg-center{align-self:center!important}#conversejs .align-self-lg-baseline{align-self:baseline!important}#conversejs .align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){#conversejs .flex-xl-row{flex-direction:row!important}#conversejs .flex-xl-column{flex-direction:column!important}#conversejs .flex-xl-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-xl-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-xl-wrap{flex-wrap:wrap!important}#conversejs .flex-xl-nowrap{flex-wrap:nowrap!important}#conversejs .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-xl-fill{flex:1 1 auto!important}#conversejs .flex-xl-grow-0{flex-grow:0!important}#conversejs .flex-xl-grow-1{flex-grow:1!important}#conversejs .flex-xl-shrink-0{flex-shrink:0!important}#conversejs .flex-xl-shrink-1{flex-shrink:1!important}#conversejs .justify-content-xl-start{justify-content:flex-start!important}#conversejs .justify-content-xl-end{justify-content:flex-end!important}#conversejs .justify-content-xl-center{justify-content:center!important}#conversejs .justify-content-xl-between{justify-content:space-between!important}#conversejs .justify-content-xl-around{justify-content:space-around!important}#conversejs .align-items-xl-start{align-items:flex-start!important}#conversejs .align-items-xl-end{align-items:flex-end!important}#conversejs .align-items-xl-center{align-items:center!important}#conversejs .align-items-xl-baseline{align-items:baseline!important}#conversejs .align-items-xl-stretch{align-items:stretch!important}#conversejs .align-content-xl-start{align-content:flex-start!important}#conversejs .align-content-xl-end{align-content:flex-end!important}#conversejs .align-content-xl-center{align-content:center!important}#conversejs .align-content-xl-between{align-content:space-between!important}#conversejs .align-content-xl-around{align-content:space-around!important}#conversejs .align-content-xl-stretch{align-content:stretch!important}#conversejs .align-self-xl-auto{align-self:auto!important}#conversejs .align-self-xl-start{align-self:flex-start!important}#conversejs .align-self-xl-end{align-self:flex-end!important}#conversejs .align-self-xl-center{align-self:center!important}#conversejs .align-self-xl-baseline{align-self:baseline!important}#conversejs .align-self-xl-stretch{align-self:stretch!important}}#conversejs .float-left{float:left!important}#conversejs .float-right{float:right!important}#conversejs .float-none{float:none!important}@media (min-width:576px){#conversejs .float-sm-left{float:left!important}#conversejs .float-sm-right{float:right!important}#conversejs .float-sm-none{float:none!important}}@media (min-width:768px){#conversejs .float-md-left{float:left!important}#conversejs .float-md-right{float:right!important}#conversejs .float-md-none{float:none!important}}@media (min-width:992px){#conversejs .float-lg-left{float:left!important}#conversejs .float-lg-right{float:right!important}#conversejs .float-lg-none{float:none!important}}@media (min-width:1200px){#conversejs .float-xl-left{float:left!important}#conversejs .float-xl-right{float:right!important}#conversejs .float-xl-none{float:none!important}}#conversejs .overflow-auto{overflow:auto!important}#conversejs .overflow-hidden{overflow:hidden!important}#conversejs .position-static{position:static!important}#conversejs .position-relative{position:relative!important}#conversejs .position-absolute{position:absolute!important}#conversejs .position-fixed{position:fixed!important}#conversejs .position-sticky{position:-webkit-sticky!important;position:sticky!important}#conversejs .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}#conversejs .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){#conversejs .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}#conversejs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#conversejs .sr-only-focusable:active,#conversejs .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}#conversejs .shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}#conversejs .shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}#conversejs .shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}#conversejs .shadow-none{box-shadow:none!important}#conversejs .w-25{width:25%!important}#conversejs .w-50{width:50%!important}#conversejs .w-75{width:75%!important}#conversejs .w-100{width:100%!important}#conversejs .w-auto{width:auto!important}#conversejs .h-25{height:25%!important}#conversejs .h-50{height:50%!important}#conversejs .h-75{height:75%!important}#conversejs .h-100{height:100%!important}#conversejs .h-auto{height:auto!important}#conversejs .mw-100{max-width:100%!important}#conversejs .mh-100{max-height:100%!important}#conversejs .min-vw-100{min-width:100vw!important}#conversejs .min-vh-100{min-height:100vh!important}#conversejs .vw-100{width:100vw!important}#conversejs .vh-100{height:100vh!important}#conversejs .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}#conversejs .m-0{margin:0!important}#conversejs .mt-0,#conversejs .my-0{margin-top:0!important}#conversejs .mr-0,#conversejs .mx-0{margin-right:0!important}#conversejs .mb-0,#conversejs .my-0{margin-bottom:0!important}#conversejs .ml-0,#conversejs .mx-0{margin-left:0!important}#conversejs .m-1{margin:.25rem!important}#conversejs .mt-1,#conversejs .my-1{margin-top:.25rem!important}#conversejs .mr-1,#conversejs .mx-1{margin-right:.25rem!important}#conversejs .mb-1,#conversejs .my-1{margin-bottom:.25rem!important}#conversejs .ml-1,#conversejs .mx-1{margin-left:.25rem!important}#conversejs .m-2{margin:.5rem!important}#conversejs .mt-2,#conversejs .my-2{margin-top:.5rem!important}#conversejs .mr-2,#conversejs .mx-2{margin-right:.5rem!important}#conversejs .mb-2,#conversejs .my-2{margin-bottom:.5rem!important}#conversejs .ml-2,#conversejs .mx-2{margin-left:.5rem!important}#conversejs .m-3{margin:1rem!important}#conversejs .mt-3,#conversejs .my-3{margin-top:1rem!important}#conversejs .mr-3,#conversejs .mx-3{margin-right:1rem!important}#conversejs .mb-3,#conversejs .my-3{margin-bottom:1rem!important}#conversejs .ml-3,#conversejs .mx-3{margin-left:1rem!important}#conversejs .m-4{margin:1.5rem!important}#conversejs .mt-4,#conversejs .my-4{margin-top:1.5rem!important}#conversejs .mr-4,#conversejs .mx-4{margin-right:1.5rem!important}#conversejs .mb-4,#conversejs .my-4{margin-bottom:1.5rem!important}#conversejs .ml-4,#conversejs .mx-4{margin-left:1.5rem!important}#conversejs .m-5{margin:3rem!important}#conversejs .mt-5,#conversejs .my-5{margin-top:3rem!important}#conversejs .mr-5,#conversejs .mx-5{margin-right:3rem!important}#conversejs .mb-5,#conversejs .my-5{margin-bottom:3rem!important}#conversejs .ml-5,#conversejs .mx-5{margin-left:3rem!important}#conversejs .p-0{padding:0!important}#conversejs .pt-0,#conversejs .py-0{padding-top:0!important}#conversejs .pr-0,#conversejs .px-0{padding-right:0!important}#conversejs .pb-0,#conversejs .py-0{padding-bottom:0!important}#conversejs .pl-0,#conversejs .px-0{padding-left:0!important}#conversejs .p-1{padding:.25rem!important}#conversejs .pt-1,#conversejs .py-1{padding-top:.25rem!important}#conversejs .pr-1,#conversejs .px-1{padding-right:.25rem!important}#conversejs .pb-1,#conversejs .py-1{padding-bottom:.25rem!important}#conversejs .pl-1,#conversejs .px-1{padding-left:.25rem!important}#conversejs .p-2{padding:.5rem!important}#conversejs .pt-2,#conversejs .py-2{padding-top:.5rem!important}#conversejs .pr-2,#conversejs .px-2{padding-right:.5rem!important}#conversejs .pb-2,#conversejs .py-2{padding-bottom:.5rem!important}#conversejs .pl-2,#conversejs .px-2{padding-left:.5rem!important}#conversejs .p-3{padding:1rem!important}#conversejs .pt-3,#conversejs .py-3{padding-top:1rem!important}#conversejs .pr-3,#conversejs .px-3{padding-right:1rem!important}#conversejs .pb-3,#conversejs .py-3{padding-bottom:1rem!important}#conversejs .pl-3,#conversejs .px-3{padding-left:1rem!important}#conversejs .p-4{padding:1.5rem!important}#conversejs .pt-4,#conversejs .py-4{padding-top:1.5rem!important}#conversejs .pr-4,#conversejs .px-4{padding-right:1.5rem!important}#conversejs .pb-4,#conversejs .py-4{padding-bottom:1.5rem!important}#conversejs .pl-4,#conversejs .px-4{padding-left:1.5rem!important}#conversejs .p-5{padding:3rem!important}#conversejs .pt-5,#conversejs .py-5{padding-top:3rem!important}#conversejs .pr-5,#conversejs .px-5{padding-right:3rem!important}#conversejs .pb-5,#conversejs .py-5{padding-bottom:3rem!important}#conversejs .pl-5,#conversejs .px-5{padding-left:3rem!important}#conversejs .m-n1{margin:-.25rem!important}#conversejs .mt-n1,#conversejs .my-n1{margin-top:-.25rem!important}#conversejs .mr-n1,#conversejs .mx-n1{margin-right:-.25rem!important}#conversejs .mb-n1,#conversejs .my-n1{margin-bottom:-.25rem!important}#conversejs .ml-n1,#conversejs .mx-n1{margin-left:-.25rem!important}#conversejs .m-n2{margin:-.5rem!important}#conversejs .mt-n2,#conversejs .my-n2{margin-top:-.5rem!important}#conversejs .mr-n2,#conversejs .mx-n2{margin-right:-.5rem!important}#conversejs .mb-n2,#conversejs .my-n2{margin-bottom:-.5rem!important}#conversejs .ml-n2,#conversejs .mx-n2{margin-left:-.5rem!important}#conversejs .m-n3{margin:-1rem!important}#conversejs .mt-n3,#conversejs .my-n3{margin-top:-1rem!important}#conversejs .mr-n3,#conversejs .mx-n3{margin-right:-1rem!important}#conversejs .mb-n3,#conversejs .my-n3{margin-bottom:-1rem!important}#conversejs .ml-n3,#conversejs .mx-n3{margin-left:-1rem!important}#conversejs .m-n4{margin:-1.5rem!important}#conversejs .mt-n4,#conversejs .my-n4{margin-top:-1.5rem!important}#conversejs .mr-n4,#conversejs .mx-n4{margin-right:-1.5rem!important}#conversejs .mb-n4,#conversejs .my-n4{margin-bottom:-1.5rem!important}#conversejs .ml-n4,#conversejs .mx-n4{margin-left:-1.5rem!important}#conversejs .m-n5{margin:-3rem!important}#conversejs .mt-n5,#conversejs .my-n5{margin-top:-3rem!important}#conversejs .mr-n5,#conversejs .mx-n5{margin-right:-3rem!important}#conversejs .mb-n5,#conversejs .my-n5{margin-bottom:-3rem!important}#conversejs .ml-n5,#conversejs .mx-n5{margin-left:-3rem!important}#conversejs .m-auto{margin:auto!important}#conversejs .mt-auto,#conversejs .my-auto{margin-top:auto!important}#conversejs .mr-auto,#conversejs .mx-auto{margin-right:auto!important}#conversejs .mb-auto,#conversejs .my-auto{margin-bottom:auto!important}#conversejs .ml-auto,#conversejs .mx-auto{margin-left:auto!important}@media (min-width:576px){#conversejs .m-sm-0{margin:0!important}#conversejs .mt-sm-0,#conversejs .my-sm-0{margin-top:0!important}#conversejs .mr-sm-0,#conversejs .mx-sm-0{margin-right:0!important}#conversejs .mb-sm-0,#conversejs .my-sm-0{margin-bottom:0!important}#conversejs .ml-sm-0,#conversejs .mx-sm-0{margin-left:0!important}#conversejs .m-sm-1{margin:.25rem!important}#conversejs .mt-sm-1,#conversejs .my-sm-1{margin-top:.25rem!important}#conversejs .mr-sm-1,#conversejs .mx-sm-1{margin-right:.25rem!important}#conversejs .mb-sm-1,#conversejs .my-sm-1{margin-bottom:.25rem!important}#conversejs .ml-sm-1,#conversejs .mx-sm-1{margin-left:.25rem!important}#conversejs .m-sm-2{margin:.5rem!important}#conversejs .mt-sm-2,#conversejs .my-sm-2{margin-top:.5rem!important}#conversejs .mr-sm-2,#conversejs .mx-sm-2{margin-right:.5rem!important}#conversejs .mb-sm-2,#conversejs .my-sm-2{margin-bottom:.5rem!important}#conversejs .ml-sm-2,#conversejs .mx-sm-2{margin-left:.5rem!important}#conversejs .m-sm-3{margin:1rem!important}#conversejs .mt-sm-3,#conversejs .my-sm-3{margin-top:1rem!important}#conversejs .mr-sm-3,#conversejs .mx-sm-3{margin-right:1rem!important}#conversejs .mb-sm-3,#conversejs .my-sm-3{margin-bottom:1rem!important}#conversejs .ml-sm-3,#conversejs .mx-sm-3{margin-left:1rem!important}#conversejs .m-sm-4{margin:1.5rem!important}#conversejs .mt-sm-4,#conversejs .my-sm-4{margin-top:1.5rem!important}#conversejs .mr-sm-4,#conversejs .mx-sm-4{margin-right:1.5rem!important}#conversejs .mb-sm-4,#conversejs .my-sm-4{margin-bottom:1.5rem!important}#conversejs .ml-sm-4,#conversejs .mx-sm-4{margin-left:1.5rem!important}#conversejs .m-sm-5{margin:3rem!important}#conversejs .mt-sm-5,#conversejs .my-sm-5{margin-top:3rem!important}#conversejs .mr-sm-5,#conversejs .mx-sm-5{margin-right:3rem!important}#conversejs .mb-sm-5,#conversejs .my-sm-5{margin-bottom:3rem!important}#conversejs .ml-sm-5,#conversejs .mx-sm-5{margin-left:3rem!important}#conversejs .p-sm-0{padding:0!important}#conversejs .pt-sm-0,#conversejs .py-sm-0{padding-top:0!important}#conversejs .pr-sm-0,#conversejs .px-sm-0{padding-right:0!important}#conversejs .pb-sm-0,#conversejs .py-sm-0{padding-bottom:0!important}#conversejs .pl-sm-0,#conversejs .px-sm-0{padding-left:0!important}#conversejs .p-sm-1{padding:.25rem!important}#conversejs .pt-sm-1,#conversejs .py-sm-1{padding-top:.25rem!important}#conversejs .pr-sm-1,#conversejs .px-sm-1{padding-right:.25rem!important}#conversejs .pb-sm-1,#conversejs .py-sm-1{padding-bottom:.25rem!important}#conversejs .pl-sm-1,#conversejs .px-sm-1{padding-left:.25rem!important}#conversejs .p-sm-2{padding:.5rem!important}#conversejs .pt-sm-2,#conversejs .py-sm-2{padding-top:.5rem!important}#conversejs .pr-sm-2,#conversejs .px-sm-2{padding-right:.5rem!important}#conversejs .pb-sm-2,#conversejs .py-sm-2{padding-bottom:.5rem!important}#conversejs .pl-sm-2,#conversejs .px-sm-2{padding-left:.5rem!important}#conversejs .p-sm-3{padding:1rem!important}#conversejs .pt-sm-3,#conversejs .py-sm-3{padding-top:1rem!important}#conversejs .pr-sm-3,#conversejs .px-sm-3{padding-right:1rem!important}#conversejs .pb-sm-3,#conversejs .py-sm-3{padding-bottom:1rem!important}#conversejs .pl-sm-3,#conversejs .px-sm-3{padding-left:1rem!important}#conversejs .p-sm-4{padding:1.5rem!important}#conversejs .pt-sm-4,#conversejs .py-sm-4{padding-top:1.5rem!important}#conversejs .pr-sm-4,#conversejs .px-sm-4{padding-right:1.5rem!important}#conversejs .pb-sm-4,#conversejs .py-sm-4{padding-bottom:1.5rem!important}#conversejs .pl-sm-4,#conversejs .px-sm-4{padding-left:1.5rem!important}#conversejs .p-sm-5{padding:3rem!important}#conversejs .pt-sm-5,#conversejs .py-sm-5{padding-top:3rem!important}#conversejs .pr-sm-5,#conversejs .px-sm-5{padding-right:3rem!important}#conversejs .pb-sm-5,#conversejs .py-sm-5{padding-bottom:3rem!important}#conversejs .pl-sm-5,#conversejs .px-sm-5{padding-left:3rem!important}#conversejs .m-sm-n1{margin:-.25rem!important}#conversejs .mt-sm-n1,#conversejs .my-sm-n1{margin-top:-.25rem!important}#conversejs .mr-sm-n1,#conversejs .mx-sm-n1{margin-right:-.25rem!important}#conversejs .mb-sm-n1,#conversejs .my-sm-n1{margin-bottom:-.25rem!important}#conversejs .ml-sm-n1,#conversejs .mx-sm-n1{margin-left:-.25rem!important}#conversejs .m-sm-n2{margin:-.5rem!important}#conversejs .mt-sm-n2,#conversejs .my-sm-n2{margin-top:-.5rem!important}#conversejs .mr-sm-n2,#conversejs .mx-sm-n2{margin-right:-.5rem!important}#conversejs .mb-sm-n2,#conversejs .my-sm-n2{margin-bottom:-.5rem!important}#conversejs .ml-sm-n2,#conversejs .mx-sm-n2{margin-left:-.5rem!important}#conversejs .m-sm-n3{margin:-1rem!important}#conversejs .mt-sm-n3,#conversejs .my-sm-n3{margin-top:-1rem!important}#conversejs .mr-sm-n3,#conversejs .mx-sm-n3{margin-right:-1rem!important}#conversejs .mb-sm-n3,#conversejs .my-sm-n3{margin-bottom:-1rem!important}#conversejs .ml-sm-n3,#conversejs .mx-sm-n3{margin-left:-1rem!important}#conversejs .m-sm-n4{margin:-1.5rem!important}#conversejs .mt-sm-n4,#conversejs .my-sm-n4{margin-top:-1.5rem!important}#conversejs .mr-sm-n4,#conversejs .mx-sm-n4{margin-right:-1.5rem!important}#conversejs .mb-sm-n4,#conversejs .my-sm-n4{margin-bottom:-1.5rem!important}#conversejs .ml-sm-n4,#conversejs .mx-sm-n4{margin-left:-1.5rem!important}#conversejs .m-sm-n5{margin:-3rem!important}#conversejs .mt-sm-n5,#conversejs .my-sm-n5{margin-top:-3rem!important}#conversejs .mr-sm-n5,#conversejs .mx-sm-n5{margin-right:-3rem!important}#conversejs .mb-sm-n5,#conversejs .my-sm-n5{margin-bottom:-3rem!important}#conversejs .ml-sm-n5,#conversejs .mx-sm-n5{margin-left:-3rem!important}#conversejs .m-sm-auto{margin:auto!important}#conversejs .mt-sm-auto,#conversejs .my-sm-auto{margin-top:auto!important}#conversejs .mr-sm-auto,#conversejs .mx-sm-auto{margin-right:auto!important}#conversejs .mb-sm-auto,#conversejs .my-sm-auto{margin-bottom:auto!important}#conversejs .ml-sm-auto,#conversejs .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){#conversejs .m-md-0{margin:0!important}#conversejs .mt-md-0,#conversejs .my-md-0{margin-top:0!important}#conversejs .mr-md-0,#conversejs .mx-md-0{margin-right:0!important}#conversejs .mb-md-0,#conversejs .my-md-0{margin-bottom:0!important}#conversejs .ml-md-0,#conversejs .mx-md-0{margin-left:0!important}#conversejs .m-md-1{margin:.25rem!important}#conversejs .mt-md-1,#conversejs .my-md-1{margin-top:.25rem!important}#conversejs .mr-md-1,#conversejs .mx-md-1{margin-right:.25rem!important}#conversejs .mb-md-1,#conversejs .my-md-1{margin-bottom:.25rem!important}#conversejs .ml-md-1,#conversejs .mx-md-1{margin-left:.25rem!important}#conversejs .m-md-2{margin:.5rem!important}#conversejs .mt-md-2,#conversejs .my-md-2{margin-top:.5rem!important}#conversejs .mr-md-2,#conversejs .mx-md-2{margin-right:.5rem!important}#conversejs .mb-md-2,#conversejs .my-md-2{margin-bottom:.5rem!important}#conversejs .ml-md-2,#conversejs .mx-md-2{margin-left:.5rem!important}#conversejs .m-md-3{margin:1rem!important}#conversejs .mt-md-3,#conversejs .my-md-3{margin-top:1rem!important}#conversejs .mr-md-3,#conversejs .mx-md-3{margin-right:1rem!important}#conversejs .mb-md-3,#conversejs .my-md-3{margin-bottom:1rem!important}#conversejs .ml-md-3,#conversejs .mx-md-3{margin-left:1rem!important}#conversejs .m-md-4{margin:1.5rem!important}#conversejs .mt-md-4,#conversejs .my-md-4{margin-top:1.5rem!important}#conversejs .mr-md-4,#conversejs .mx-md-4{margin-right:1.5rem!important}#conversejs .mb-md-4,#conversejs .my-md-4{margin-bottom:1.5rem!important}#conversejs .ml-md-4,#conversejs .mx-md-4{margin-left:1.5rem!important}#conversejs .m-md-5{margin:3rem!important}#conversejs .mt-md-5,#conversejs .my-md-5{margin-top:3rem!important}#conversejs .mr-md-5,#conversejs .mx-md-5{margin-right:3rem!important}#conversejs .mb-md-5,#conversejs .my-md-5{margin-bottom:3rem!important}#conversejs .ml-md-5,#conversejs .mx-md-5{margin-left:3rem!important}#conversejs .p-md-0{padding:0!important}#conversejs .pt-md-0,#conversejs .py-md-0{padding-top:0!important}#conversejs .pr-md-0,#conversejs .px-md-0{padding-right:0!important}#conversejs .pb-md-0,#conversejs .py-md-0{padding-bottom:0!important}#conversejs .pl-md-0,#conversejs .px-md-0{padding-left:0!important}#conversejs .p-md-1{padding:.25rem!important}#conversejs .pt-md-1,#conversejs .py-md-1{padding-top:.25rem!important}#conversejs .pr-md-1,#conversejs .px-md-1{padding-right:.25rem!important}#conversejs .pb-md-1,#conversejs .py-md-1{padding-bottom:.25rem!important}#conversejs .pl-md-1,#conversejs .px-md-1{padding-left:.25rem!important}#conversejs .p-md-2{padding:.5rem!important}#conversejs .pt-md-2,#conversejs .py-md-2{padding-top:.5rem!important}#conversejs .pr-md-2,#conversejs .px-md-2{padding-right:.5rem!important}#conversejs .pb-md-2,#conversejs .py-md-2{padding-bottom:.5rem!important}#conversejs .pl-md-2,#conversejs .px-md-2{padding-left:.5rem!important}#conversejs .p-md-3{padding:1rem!important}#conversejs .pt-md-3,#conversejs .py-md-3{padding-top:1rem!important}#conversejs .pr-md-3,#conversejs .px-md-3{padding-right:1rem!important}#conversejs .pb-md-3,#conversejs .py-md-3{padding-bottom:1rem!important}#conversejs .pl-md-3,#conversejs .px-md-3{padding-left:1rem!important}#conversejs .p-md-4{padding:1.5rem!important}#conversejs .pt-md-4,#conversejs .py-md-4{padding-top:1.5rem!important}#conversejs .pr-md-4,#conversejs .px-md-4{padding-right:1.5rem!important}#conversejs .pb-md-4,#conversejs .py-md-4{padding-bottom:1.5rem!important}#conversejs .pl-md-4,#conversejs .px-md-4{padding-left:1.5rem!important}#conversejs .p-md-5{padding:3rem!important}#conversejs .pt-md-5,#conversejs .py-md-5{padding-top:3rem!important}#conversejs .pr-md-5,#conversejs .px-md-5{padding-right:3rem!important}#conversejs .pb-md-5,#conversejs .py-md-5{padding-bottom:3rem!important}#conversejs .pl-md-5,#conversejs .px-md-5{padding-left:3rem!important}#conversejs .m-md-n1{margin:-.25rem!important}#conversejs .mt-md-n1,#conversejs .my-md-n1{margin-top:-.25rem!important}#conversejs .mr-md-n1,#conversejs .mx-md-n1{margin-right:-.25rem!important}#conversejs .mb-md-n1,#conversejs .my-md-n1{margin-bottom:-.25rem!important}#conversejs .ml-md-n1,#conversejs .mx-md-n1{margin-left:-.25rem!important}#conversejs .m-md-n2{margin:-.5rem!important}#conversejs .mt-md-n2,#conversejs .my-md-n2{margin-top:-.5rem!important}#conversejs .mr-md-n2,#conversejs .mx-md-n2{margin-right:-.5rem!important}#conversejs .mb-md-n2,#conversejs .my-md-n2{margin-bottom:-.5rem!important}#conversejs .ml-md-n2,#conversejs .mx-md-n2{margin-left:-.5rem!important}#conversejs .m-md-n3{margin:-1rem!important}#conversejs .mt-md-n3,#conversejs .my-md-n3{margin-top:-1rem!important}#conversejs .mr-md-n3,#conversejs .mx-md-n3{margin-right:-1rem!important}#conversejs .mb-md-n3,#conversejs .my-md-n3{margin-bottom:-1rem!important}#conversejs .ml-md-n3,#conversejs .mx-md-n3{margin-left:-1rem!important}#conversejs .m-md-n4{margin:-1.5rem!important}#conversejs .mt-md-n4,#conversejs .my-md-n4{margin-top:-1.5rem!important}#conversejs .mr-md-n4,#conversejs .mx-md-n4{margin-right:-1.5rem!important}#conversejs .mb-md-n4,#conversejs .my-md-n4{margin-bottom:-1.5rem!important}#conversejs .ml-md-n4,#conversejs .mx-md-n4{margin-left:-1.5rem!important}#conversejs .m-md-n5{margin:-3rem!important}#conversejs .mt-md-n5,#conversejs .my-md-n5{margin-top:-3rem!important}#conversejs .mr-md-n5,#conversejs .mx-md-n5{margin-right:-3rem!important}#conversejs .mb-md-n5,#conversejs .my-md-n5{margin-bottom:-3rem!important}#conversejs .ml-md-n5,#conversejs .mx-md-n5{margin-left:-3rem!important}#conversejs .m-md-auto{margin:auto!important}#conversejs .mt-md-auto,#conversejs .my-md-auto{margin-top:auto!important}#conversejs .mr-md-auto,#conversejs .mx-md-auto{margin-right:auto!important}#conversejs .mb-md-auto,#conversejs .my-md-auto{margin-bottom:auto!important}#conversejs .ml-md-auto,#conversejs .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){#conversejs .m-lg-0{margin:0!important}#conversejs .mt-lg-0,#conversejs .my-lg-0{margin-top:0!important}#conversejs .mr-lg-0,#conversejs .mx-lg-0{margin-right:0!important}#conversejs .mb-lg-0,#conversejs .my-lg-0{margin-bottom:0!important}#conversejs .ml-lg-0,#conversejs .mx-lg-0{margin-left:0!important}#conversejs .m-lg-1{margin:.25rem!important}#conversejs .mt-lg-1,#conversejs .my-lg-1{margin-top:.25rem!important}#conversejs .mr-lg-1,#conversejs .mx-lg-1{margin-right:.25rem!important}#conversejs .mb-lg-1,#conversejs .my-lg-1{margin-bottom:.25rem!important}#conversejs .ml-lg-1,#conversejs .mx-lg-1{margin-left:.25rem!important}#conversejs .m-lg-2{margin:.5rem!important}#conversejs .mt-lg-2,#conversejs .my-lg-2{margin-top:.5rem!important}#conversejs .mr-lg-2,#conversejs .mx-lg-2{margin-right:.5rem!important}#conversejs .mb-lg-2,#conversejs .my-lg-2{margin-bottom:.5rem!important}#conversejs .ml-lg-2,#conversejs .mx-lg-2{margin-left:.5rem!important}#conversejs .m-lg-3{margin:1rem!important}#conversejs .mt-lg-3,#conversejs .my-lg-3{margin-top:1rem!important}#conversejs .mr-lg-3,#conversejs .mx-lg-3{margin-right:1rem!important}#conversejs .mb-lg-3,#conversejs .my-lg-3{margin-bottom:1rem!important}#conversejs .ml-lg-3,#conversejs .mx-lg-3{margin-left:1rem!important}#conversejs .m-lg-4{margin:1.5rem!important}#conversejs .mt-lg-4,#conversejs .my-lg-4{margin-top:1.5rem!important}#conversejs .mr-lg-4,#conversejs .mx-lg-4{margin-right:1.5rem!important}#conversejs .mb-lg-4,#conversejs .my-lg-4{margin-bottom:1.5rem!important}#conversejs .ml-lg-4,#conversejs .mx-lg-4{margin-left:1.5rem!important}#conversejs .m-lg-5{margin:3rem!important}#conversejs .mt-lg-5,#conversejs .my-lg-5{margin-top:3rem!important}#conversejs .mr-lg-5,#conversejs .mx-lg-5{margin-right:3rem!important}#conversejs .mb-lg-5,#conversejs .my-lg-5{margin-bottom:3rem!important}#conversejs .ml-lg-5,#conversejs .mx-lg-5{margin-left:3rem!important}#conversejs .p-lg-0{padding:0!important}#conversejs .pt-lg-0,#conversejs .py-lg-0{padding-top:0!important}#conversejs .pr-lg-0,#conversejs .px-lg-0{padding-right:0!important}#conversejs .pb-lg-0,#conversejs .py-lg-0{padding-bottom:0!important}#conversejs .pl-lg-0,#conversejs .px-lg-0{padding-left:0!important}#conversejs .p-lg-1{padding:.25rem!important}#conversejs .pt-lg-1,#conversejs .py-lg-1{padding-top:.25rem!important}#conversejs .pr-lg-1,#conversejs .px-lg-1{padding-right:.25rem!important}#conversejs .pb-lg-1,#conversejs .py-lg-1{padding-bottom:.25rem!important}#conversejs .pl-lg-1,#conversejs .px-lg-1{padding-left:.25rem!important}#conversejs .p-lg-2{padding:.5rem!important}#conversejs .pt-lg-2,#conversejs .py-lg-2{padding-top:.5rem!important}#conversejs .pr-lg-2,#conversejs .px-lg-2{padding-right:.5rem!important}#conversejs .pb-lg-2,#conversejs .py-lg-2{padding-bottom:.5rem!important}#conversejs .pl-lg-2,#conversejs .px-lg-2{padding-left:.5rem!important}#conversejs .p-lg-3{padding:1rem!important}#conversejs .pt-lg-3,#conversejs .py-lg-3{padding-top:1rem!important}#conversejs .pr-lg-3,#conversejs .px-lg-3{padding-right:1rem!important}#conversejs .pb-lg-3,#conversejs .py-lg-3{padding-bottom:1rem!important}#conversejs .pl-lg-3,#conversejs .px-lg-3{padding-left:1rem!important}#conversejs .p-lg-4{padding:1.5rem!important}#conversejs .pt-lg-4,#conversejs .py-lg-4{padding-top:1.5rem!important}#conversejs .pr-lg-4,#conversejs .px-lg-4{padding-right:1.5rem!important}#conversejs .pb-lg-4,#conversejs .py-lg-4{padding-bottom:1.5rem!important}#conversejs .pl-lg-4,#conversejs .px-lg-4{padding-left:1.5rem!important}#conversejs .p-lg-5{padding:3rem!important}#conversejs .pt-lg-5,#conversejs .py-lg-5{padding-top:3rem!important}#conversejs .pr-lg-5,#conversejs .px-lg-5{padding-right:3rem!important}#conversejs .pb-lg-5,#conversejs .py-lg-5{padding-bottom:3rem!important}#conversejs .pl-lg-5,#conversejs .px-lg-5{padding-left:3rem!important}#conversejs .m-lg-n1{margin:-.25rem!important}#conversejs .mt-lg-n1,#conversejs .my-lg-n1{margin-top:-.25rem!important}#conversejs .mr-lg-n1,#conversejs .mx-lg-n1{margin-right:-.25rem!important}#conversejs .mb-lg-n1,#conversejs .my-lg-n1{margin-bottom:-.25rem!important}#conversejs .ml-lg-n1,#conversejs .mx-lg-n1{margin-left:-.25rem!important}#conversejs .m-lg-n2{margin:-.5rem!important}#conversejs .mt-lg-n2,#conversejs .my-lg-n2{margin-top:-.5rem!important}#conversejs .mr-lg-n2,#conversejs .mx-lg-n2{margin-right:-.5rem!important}#conversejs .mb-lg-n2,#conversejs .my-lg-n2{margin-bottom:-.5rem!important}#conversejs .ml-lg-n2,#conversejs .mx-lg-n2{margin-left:-.5rem!important}#conversejs .m-lg-n3{margin:-1rem!important}#conversejs .mt-lg-n3,#conversejs .my-lg-n3{margin-top:-1rem!important}#conversejs .mr-lg-n3,#conversejs .mx-lg-n3{margin-right:-1rem!important}#conversejs .mb-lg-n3,#conversejs .my-lg-n3{margin-bottom:-1rem!important}#conversejs .ml-lg-n3,#conversejs .mx-lg-n3{margin-left:-1rem!important}#conversejs .m-lg-n4{margin:-1.5rem!important}#conversejs .mt-lg-n4,#conversejs .my-lg-n4{margin-top:-1.5rem!important}#conversejs .mr-lg-n4,#conversejs .mx-lg-n4{margin-right:-1.5rem!important}#conversejs .mb-lg-n4,#conversejs .my-lg-n4{margin-bottom:-1.5rem!important}#conversejs .ml-lg-n4,#conversejs .mx-lg-n4{margin-left:-1.5rem!important}#conversejs .m-lg-n5{margin:-3rem!important}#conversejs .mt-lg-n5,#conversejs .my-lg-n5{margin-top:-3rem!important}#conversejs .mr-lg-n5,#conversejs .mx-lg-n5{margin-right:-3rem!important}#conversejs .mb-lg-n5,#conversejs .my-lg-n5{margin-bottom:-3rem!important}#conversejs .ml-lg-n5,#conversejs .mx-lg-n5{margin-left:-3rem!important}#conversejs .m-lg-auto{margin:auto!important}#conversejs .mt-lg-auto,#conversejs .my-lg-auto{margin-top:auto!important}#conversejs .mr-lg-auto,#conversejs .mx-lg-auto{margin-right:auto!important}#conversejs .mb-lg-auto,#conversejs .my-lg-auto{margin-bottom:auto!important}#conversejs .ml-lg-auto,#conversejs .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){#conversejs .m-xl-0{margin:0!important}#conversejs .mt-xl-0,#conversejs .my-xl-0{margin-top:0!important}#conversejs .mr-xl-0,#conversejs .mx-xl-0{margin-right:0!important}#conversejs .mb-xl-0,#conversejs .my-xl-0{margin-bottom:0!important}#conversejs .ml-xl-0,#conversejs .mx-xl-0{margin-left:0!important}#conversejs .m-xl-1{margin:.25rem!important}#conversejs .mt-xl-1,#conversejs .my-xl-1{margin-top:.25rem!important}#conversejs .mr-xl-1,#conversejs .mx-xl-1{margin-right:.25rem!important}#conversejs .mb-xl-1,#conversejs .my-xl-1{margin-bottom:.25rem!important}#conversejs .ml-xl-1,#conversejs .mx-xl-1{margin-left:.25rem!important}#conversejs .m-xl-2{margin:.5rem!important}#conversejs .mt-xl-2,#conversejs .my-xl-2{margin-top:.5rem!important}#conversejs .mr-xl-2,#conversejs .mx-xl-2{margin-right:.5rem!important}#conversejs .mb-xl-2,#conversejs .my-xl-2{margin-bottom:.5rem!important}#conversejs .ml-xl-2,#conversejs .mx-xl-2{margin-left:.5rem!important}#conversejs .m-xl-3{margin:1rem!important}#conversejs .mt-xl-3,#conversejs .my-xl-3{margin-top:1rem!important}#conversejs .mr-xl-3,#conversejs .mx-xl-3{margin-right:1rem!important}#conversejs .mb-xl-3,#conversejs .my-xl-3{margin-bottom:1rem!important}#conversejs .ml-xl-3,#conversejs .mx-xl-3{margin-left:1rem!important}#conversejs .m-xl-4{margin:1.5rem!important}#conversejs .mt-xl-4,#conversejs .my-xl-4{margin-top:1.5rem!important}#conversejs .mr-xl-4,#conversejs .mx-xl-4{margin-right:1.5rem!important}#conversejs .mb-xl-4,#conversejs .my-xl-4{margin-bottom:1.5rem!important}#conversejs .ml-xl-4,#conversejs .mx-xl-4{margin-left:1.5rem!important}#conversejs .m-xl-5{margin:3rem!important}#conversejs .mt-xl-5,#conversejs .my-xl-5{margin-top:3rem!important}#conversejs .mr-xl-5,#conversejs .mx-xl-5{margin-right:3rem!important}#conversejs .mb-xl-5,#conversejs .my-xl-5{margin-bottom:3rem!important}#conversejs .ml-xl-5,#conversejs .mx-xl-5{margin-left:3rem!important}#conversejs .p-xl-0{padding:0!important}#conversejs .pt-xl-0,#conversejs .py-xl-0{padding-top:0!important}#conversejs .pr-xl-0,#conversejs .px-xl-0{padding-right:0!important}#conversejs .pb-xl-0,#conversejs .py-xl-0{padding-bottom:0!important}#conversejs .pl-xl-0,#conversejs .px-xl-0{padding-left:0!important}#conversejs .p-xl-1{padding:.25rem!important}#conversejs .pt-xl-1,#conversejs .py-xl-1{padding-top:.25rem!important}#conversejs .pr-xl-1,#conversejs .px-xl-1{padding-right:.25rem!important}#conversejs .pb-xl-1,#conversejs .py-xl-1{padding-bottom:.25rem!important}#conversejs .pl-xl-1,#conversejs .px-xl-1{padding-left:.25rem!important}#conversejs .p-xl-2{padding:.5rem!important}#conversejs .pt-xl-2,#conversejs .py-xl-2{padding-top:.5rem!important}#conversejs .pr-xl-2,#conversejs .px-xl-2{padding-right:.5rem!important}#conversejs .pb-xl-2,#conversejs .py-xl-2{padding-bottom:.5rem!important}#conversejs .pl-xl-2,#conversejs .px-xl-2{padding-left:.5rem!important}#conversejs .p-xl-3{padding:1rem!important}#conversejs .pt-xl-3,#conversejs .py-xl-3{padding-top:1rem!important}#conversejs .pr-xl-3,#conversejs .px-xl-3{padding-right:1rem!important}#conversejs .pb-xl-3,#conversejs .py-xl-3{padding-bottom:1rem!important}#conversejs .pl-xl-3,#conversejs .px-xl-3{padding-left:1rem!important}#conversejs .p-xl-4{padding:1.5rem!important}#conversejs .pt-xl-4,#conversejs .py-xl-4{padding-top:1.5rem!important}#conversejs .pr-xl-4,#conversejs .px-xl-4{padding-right:1.5rem!important}#conversejs .pb-xl-4,#conversejs .py-xl-4{padding-bottom:1.5rem!important}#conversejs .pl-xl-4,#conversejs .px-xl-4{padding-left:1.5rem!important}#conversejs .p-xl-5{padding:3rem!important}#conversejs .pt-xl-5,#conversejs .py-xl-5{padding-top:3rem!important}#conversejs .pr-xl-5,#conversejs .px-xl-5{padding-right:3rem!important}#conversejs .pb-xl-5,#conversejs .py-xl-5{padding-bottom:3rem!important}#conversejs .pl-xl-5,#conversejs .px-xl-5{padding-left:3rem!important}#conversejs .m-xl-n1{margin:-.25rem!important}#conversejs .mt-xl-n1,#conversejs .my-xl-n1{margin-top:-.25rem!important}#conversejs .mr-xl-n1,#conversejs .mx-xl-n1{margin-right:-.25rem!important}#conversejs .mb-xl-n1,#conversejs .my-xl-n1{margin-bottom:-.25rem!important}#conversejs .ml-xl-n1,#conversejs .mx-xl-n1{margin-left:-.25rem!important}#conversejs .m-xl-n2{margin:-.5rem!important}#conversejs .mt-xl-n2,#conversejs .my-xl-n2{margin-top:-.5rem!important}#conversejs .mr-xl-n2,#conversejs .mx-xl-n2{margin-right:-.5rem!important}#conversejs .mb-xl-n2,#conversejs .my-xl-n2{margin-bottom:-.5rem!important}#conversejs .ml-xl-n2,#conversejs .mx-xl-n2{margin-left:-.5rem!important}#conversejs .m-xl-n3{margin:-1rem!important}#conversejs .mt-xl-n3,#conversejs .my-xl-n3{margin-top:-1rem!important}#conversejs .mr-xl-n3,#conversejs .mx-xl-n3{margin-right:-1rem!important}#conversejs .mb-xl-n3,#conversejs .my-xl-n3{margin-bottom:-1rem!important}#conversejs .ml-xl-n3,#conversejs .mx-xl-n3{margin-left:-1rem!important}#conversejs .m-xl-n4{margin:-1.5rem!important}#conversejs .mt-xl-n4,#conversejs .my-xl-n4{margin-top:-1.5rem!important}#conversejs .mr-xl-n4,#conversejs .mx-xl-n4{margin-right:-1.5rem!important}#conversejs .mb-xl-n4,#conversejs .my-xl-n4{margin-bottom:-1.5rem!important}#conversejs .ml-xl-n4,#conversejs .mx-xl-n4{margin-left:-1.5rem!important}#conversejs .m-xl-n5{margin:-3rem!important}#conversejs .mt-xl-n5,#conversejs .my-xl-n5{margin-top:-3rem!important}#conversejs .mr-xl-n5,#conversejs .mx-xl-n5{margin-right:-3rem!important}#conversejs .mb-xl-n5,#conversejs .my-xl-n5{margin-bottom:-3rem!important}#conversejs .ml-xl-n5,#conversejs .mx-xl-n5{margin-left:-3rem!important}#conversejs .m-xl-auto{margin:auto!important}#conversejs .mt-xl-auto,#conversejs .my-xl-auto{margin-top:auto!important}#conversejs .mr-xl-auto,#conversejs .mx-xl-auto{margin-right:auto!important}#conversejs .mb-xl-auto,#conversejs .my-xl-auto{margin-bottom:auto!important}#conversejs .ml-xl-auto,#conversejs .mx-xl-auto{margin-left:auto!important}}#conversejs .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}#conversejs .text-justify{text-align:justify!important}#conversejs .text-wrap{white-space:normal!important}#conversejs .text-nowrap{white-space:nowrap!important}#conversejs .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs .text-left{text-align:left!important}#conversejs .text-right{text-align:right!important}#conversejs .text-center{text-align:center!important}@media (min-width:576px){#conversejs .text-sm-left{text-align:left!important}#conversejs .text-sm-right{text-align:right!important}#conversejs .text-sm-center{text-align:center!important}}@media (min-width:768px){#conversejs .text-md-left{text-align:left!important}#conversejs .text-md-right{text-align:right!important}#conversejs .text-md-center{text-align:center!important}}@media (min-width:992px){#conversejs .text-lg-left{text-align:left!important}#conversejs .text-lg-right{text-align:right!important}#conversejs .text-lg-center{text-align:center!important}}@media (min-width:1200px){#conversejs .text-xl-left{text-align:left!important}#conversejs .text-xl-right{text-align:right!important}#conversejs .text-xl-center{text-align:center!important}}#conversejs .text-lowercase{text-transform:lowercase!important}#conversejs .text-uppercase{text-transform:uppercase!important}#conversejs .text-capitalize{text-transform:capitalize!important}#conversejs .font-weight-light{font-weight:300!important}#conversejs .font-weight-lighter{font-weight:lighter!important}#conversejs .font-weight-normal{font-weight:400!important}#conversejs .font-weight-bold{font-weight:700!important}#conversejs .font-weight-bolder{font-weight:bolder!important}#conversejs .font-italic{font-style:italic!important}#conversejs .text-white{color:#fff!important}#conversejs .text-primary{color:#007bff!important}#conversejs a.text-primary:focus,#conversejs a.text-primary:hover{color:#0056b3!important}#conversejs .text-secondary{color:#6c757d!important}#conversejs a.text-secondary:focus,#conversejs a.text-secondary:hover{color:#494f54!important}#conversejs .text-success{color:#28a745!important}#conversejs a.text-success:focus,#conversejs a.text-success:hover{color:#19692c!important}#conversejs .text-info{color:#17a2b8!important}#conversejs a.text-info:focus,#conversejs a.text-info:hover{color:#0f6674!important}#conversejs .text-warning{color:#ffc107!important}#conversejs a.text-warning:focus,#conversejs a.text-warning:hover{color:#ba8b00!important}#conversejs .text-danger{color:#dc3545!important}#conversejs a.text-danger:focus,#conversejs a.text-danger:hover{color:#a71d2a!important}#conversejs .text-light{color:#f8f9fa!important}#conversejs a.text-light:focus,#conversejs a.text-light:hover{color:#cbd3da!important}#conversejs .text-dark{color:#343a40!important}#conversejs a.text-dark:focus,#conversejs a.text-dark:hover{color:#121416!important}#conversejs .text-body{color:#212529!important}#conversejs .text-muted{color:#6c757d!important}#conversejs .text-black-50{color:rgba(0,0,0,.5)!important}#conversejs .text-white-50{color:rgba(255,255,255,.5)!important}#conversejs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#conversejs .text-decoration-none{text-decoration:none!important}#conversejs .text-break{word-break:break-word!important;overflow-wrap:break-word!important}#conversejs .text-reset{color:inherit!important}#conversejs .visible{visibility:visible!important}#conversejs .invisible{visibility:hidden!important}@font-face{font-family:Baumans;font-style:normal;font-weight:400;src:local("Baumans Regular"),local("Baumans-Regular"),url(webfonts/baumans.ttf) format("truetype")}@font-face{font-family:Muli;font-style:normal;font-weight:400;src:local("Muli Regular"),local("Muli-Regular"),url(webfonts/muli.ttf) format("truetype")}@font-face{font-family:ConverseFontAwesomeBrands;font-style:normal;font-weight:400;src:url(webfonts/fa-brands-400.eot);src:url(webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-brands-400.woff2) format("woff2"),url(webfonts/fa-brands-400.woff) format("woff"),url(webfonts/fa-brands-400.ttf) format("truetype"),url(webfonts/fa-brands-400.svg#fontawesome) format("svg")}@font-face{font-family:ConverseFontAwesomeRegular;font-style:normal;font-weight:400;src:url(webfonts/fa-regular-400.eot);src:url(webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-regular-400.woff2) format("woff2"),url(webfonts/fa-regular-400.woff) format("woff"),url(webfonts/fa-regular-400.ttf) format("truetype"),url(webfonts/fa-regular-400.svg#fontawesome) format("svg");font-weight:400;font-style:normal}@font-face{font-family:ConverseFontAwesomeSolid;font-style:normal;font-weight:900;src:url(webfonts/fa-solid-900.eot);src:url(webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-solid-900.svg#fontawesome) format("svg"),url(webfonts/fa-solid-900.woff2) format("woff2"),url(webfonts/fa-solid-900.woff) format("woff"),url(webfonts/fa-solid-900.ttf) format("truetype")}.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1,1)}.fa-flip-vertical{transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}#conversejs converse-icon:before,.converse-website converse-icon:before{content:none!important}#conversejs .far:not(converse-icon),.converse-website .far:not(converse-icon){font-family:ConverseFontAwesomeRegular!important;font-weight:400}#conversejs .fa:not(converse-icon),#conversejs .fas:not(converse-icon),.converse-website .fa:not(converse-icon),.converse-website .fas:not(converse-icon){font-family:ConverseFontAwesomeSolid!important;font-weight:900}#conversejs .fab:not(converse-icon),.converse-website .fab:not(converse-icon){font-family:ConverseFontAwesomeBrands}#conversejs .fa:not(converse-icon),#conversejs .fab:not(converse-icon),#conversejs .far:not(converse-icon),#conversejs .fas:not(converse-icon),.converse-website .fa:not(converse-icon),.converse-website .fab:not(converse-icon),.converse-website .far:not(converse-icon),.converse-website .fas:not(converse-icon){display:inline-block;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#conversejs .fa-info-circle,.converse-website .fa-info-circle{height:1em}#conversejs,#conversejs-bg,.converse-fullscreen{--subdued-color:#A8ABA1;--green:#3AA569;--redder-orange:#E77051;--orange:#E7A151;--light-blue:#578EA9;--lighter-blue:#85B47B;--chat-status-online:var(--green);--chat-status-busy:var(--redder-orange);--chat-status-away:var(--orange);--brand-heading-color:#387592;--completion-light-color:#FFB9A7;--completion-normal-color:var(--redder-orange);--completion-dark-color:#D24E2B;--link-color:var(--light-blue);--link-hover-color:#345566;--link-color-lighten-10-percent:#79a5ba;--dark-link-color:#206485;--global-background-color:#397491;--inverse-link-color:white;--text-shadow-color:#FAFAFA;--text-color:#666;--controlbox-text-color:#666;--text-color-lighten-15-percent:#8c8c8c;--message-text-color:#555;--message-receipt-color:var(--green);--save-button-color:var(--green);--message-avatar-width:36px;--message-avatar-height:36px;--chat-textarea-color:#666;--chat-textarea-background-color:white;--chat-textarea-height:60px;--send-button-height:27px;--send-button-margin:3px;--inline-action-margin:0.75em;--roster-height:194px;--flyout-padding:0.5em;--chat-correcting-color:var(--chat-head-color-lighten-50-percent);--chat-head-color-dark:#1E9652;--chat-head-color-darker:#0E763B;--chat-head-color-lighten-50-percent:#e7f7ee;--chat-head-color:var(--green);--chat-head-text-color:white;--chat-toolbar-btn-color:var(--green);--chat-toolbar-btn-disabled-color:gray;--chat-content-background-color:white;--chat-info-color:var(--chatroom-head-bg-color);--highlight-color:#DCF9F6;--highlight-color-darker:#B0E8E2;--primary-color:var(--light-blue);--primary-color-dark:#397491;--secondary-color:#818479;--secondary-color-dark:#585B51;--warning-color:var(--orange);--warning-color-dark:#D2842B;--danger-color:#D24E2B;--danger-color-dark:#A93415;--light-background-color:#FCFDFD;--error-color:#D24E2B;--info-color:#1E9652;--button-border-radius:5px;--chatbox-border-radius:4px;--groupchats-header-color:var(--chatroom-head-bg-color);--groupchats-header-color-dark:var(--chatroom-head-bg-color-dark);--controlbox-width:250px;--controlbox-head-color:var(--light-blue);--controlbox-heading-color:inherit;--controlbox-heading-font-weight:bold;--controlbox-heading-top-margin:0.75em;--controlbox-pane-background-color:white;--controlbox-pane-bg-hover-color:#eff4f7;--panel-divider-color:#e7e7e7;--chat-gutter:0.5em;--minimized-chats-width:130px;--mobile-chat-width:100%;--mobile-chat-height:400px;--normal-font:"Helvetica","Arial",sans-serif;--heading-font:'Muli',normal;--branding-font:'Baumans',cursive;--heading-display:block;--heading-color:white;--chatroom-badge-color:var(--chatroom-head-bg-color);--chatroom-badge-hover-color:var(--chatroom-head-bg-color-dark);--chatroom-correcting-color:#fadfd7;--chatroom-head-bg-color-dark:#D24E2B;--chatroom-head-bg-color:var(--redder-orange);--chatroom-head-border-bottom:0px;--chatroom-head-button-color:var(--chatroom-head-bg-color);--chatroom-head-color:white;--chatroom-head-description-display:block;--chatroom-head-description-link-color:white;--chatroom-head-title-font-weight:normal;--chatroom-head-title-padding-right:0px;--chatroom-width:500px;--muc-toolbar-btn-color:var(--redder-orange);--muc-toolbar-btn-disabled-color:gray;--headline-head-color:var(--orange);--headline-message-color:#D2842B;--chatbox-button-size:14px;--fullpage-chatbox-button-size:16px;--font-size-tiny:10px;--font-size-small:12px;--font-size:14px;--font-size-large:16px;--font-size-huge:20px;--message-font-size:var(--font-size);--separator-text-color:var(--message-text-color);--chat-separator-border-bottom:2px solid var(--chat-head-color);--chatroom-separator-border-bottom:2px solid var(--chatroom-head-bg-color);--chatbox-message-input-border-top:4px solid var(--chat-head-color);--chatroom-message-input-border-top:4px solid var(--chatroom-head-bg-color);--line-height-small:14px;--line-height:16px;--line-height-large:20px;--line-height-huge:27px;--occupants-padding:1em;--occupants-background-color:white;--occupants-border-left:0.2143rem solid var(--panel-divider-color);--occupants-border-bottom:1px solid lightgrey;--embedded-emoji-picker-height:300px;--avatar-border-radius:10%;--avatar-border:1px solid lightgrey;--avatar-background-color:white;--fullpage-chat-height:calc(var(--vh, 1vh) * 100);--fullpage-chat-width:100%;--fullpage-emoji-picker-height:300px;--fullpage-max-chat-textarea-height:15em;--overlayed-chat-head-height:55px;--overlayed-chat-height:450px;--overlayed-chat-width:300px;--overlayed-chatbox-hover-height:1em;--overlayed-emoji-picker-height:200px;--overlayed-max-chat-textarea-height:200px;--overlayed-badge-color:#818479;--list-toggle-color:#818479;--list-toggle-hover-color:#585B51;--list-toggle-font-weight:normal;--list-item-hover-color:rgba(0, 0, 0, 0.035);--list-item-action-color:#e3eef3;--list-item-link-color:inherit;--list-item-link-hover-color:var(--dark-link-color);--list-item-open-color:var(--controlbox-head-color);--list-item-open-hover-color:var(--controlbox-head-color);--list-dot-circle-color:#f6dec1}#conversejs.theme-concord{--avatar-border-radius:10%;--avatar-border:0px;--avatar-background-color:none;--controlbox-pane-background-color:#333;--panel-divider-color:#333;--controlbox-pane-bg-hover-color:#464646;--controlbox-heading-color:#777;--controlbox-heading-font-weight:bold;--groupchats-header-color:var(--redder-orange);--chat-textarea-background-color:#F6F6F6;--chat-correcting-color:#FFFFC0;--chat-head-text-color:#AAA;--controlbox-text-color:#DDD;--chat-info-color:var(--subdued-color);--chatbox-border-radius:0px;--heading-display:inline;--heading-color:#9B4D;--link-hover-color:var(--lighter-blue);--chatroom-badge-color:var(--redder-orange);--chatroom-badge-hover-color:#D24E2B;--chatroom-correcting-color:#FFFFC0;--chatroom-head-bg-color:white;--chatroom-head-border-bottom:1px solid #EEE;--chatroom-head-button-color:#999;--chatroom-head-color:#7E7E7E;--chatroom-head-description-border-left:1px solid #DDD;--chatroom-head-description-color:black;--chatroom-head-description-display:inline;--chatroom-head-description-link-color:#00b3f4;--chatroom-head-description-padding-left:12px;--chatroom-head-title-font-weight:bold;--chatroom-head-title-padding-right:12px;--muc-toolbar-btn-color:#7E7E7E;--muc-toolbar-btn-disabled-color:lightgray;--occupants-background-color:#F3F3F3;--occupants-border-left:0px;--occupants-border-bottom:0px;--separator-text-color:#AAA;--chat-separator-border-bottom:1px solid #AAA;--chatroom-separator-border-bottom:1px solid #AAA;--chatroom-message-input-border-top:1px solid #CCC;--chatbox-message-input-border-top:1px solid #CCC;--fullpage-chatbox-button-size:24px;--list-toggle-font-weight:bold;--list-item-link-color:#F1F1F1;--list-item-link-hover-color:#DDD;--list-item-open-color:#444;--list-item-open-hover-color:#444}body.converse-fullscreen{margin:0;background-color:var(--global-background-color)}#conversejs-bg .converse-brand{display:flex;justify-content:space-between;margin-top:15vh;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:5s;animation-duration:5s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs-bg .converse-brand__padding{position:relative;width:100%;padding-right:15px;padding-left:15px;padding:0}@media (min-width:768px){#conversejs-bg .converse-brand__padding{flex:0 0 33.33333%;max-width:33.33333%}}@media (min-width:992px){#conversejs-bg .converse-brand__padding{flex:0 0 25%;max-width:25%}}@media (min-width:1200px){#conversejs-bg .converse-brand__padding{flex:0 0 16.66667%;max-width:16.66667%}}#conversejs-bg .converse-brand__heading{position:relative;width:100%;padding-right:15px;padding-left:15px;padding:0;display:flex;justify-content:center;margin:auto}@media (min-width:768px){#conversejs-bg .converse-brand__heading{font-size:4em;flex:0 0 66.66667%;max-width:66.66667%}}@media (min-width:992px){#conversejs-bg .converse-brand__heading{font-size:5em;flex:0 0 75%;max-width:75%}}@media (min-width:1200px){#conversejs-bg .converse-brand__heading{font-size:6em;flex:0 0 83.33333%;max-width:83.33333%}}#conversejs-bg .converse-brand__heading svg{margin-top:.3em}#conversejs-bg .converse-brand__text{color:#fff;font-family:var(--branding-font);font-weight:400;text-align:center;font-size:140%;margin-left:.2em}#conversejs-bg .converse-brand__text .byline{margin:0;font-family:var(--heading-font);font-size:.3em;opacity:.55;margin-bottom:2em;margin-left:-2.7em;word-spacing:5px}#conversejs .subdued,#conversejs-bg .subdued{opacity:.35}#conversejs{bottom:0;height:100%;position:fixed;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);color:var(--text-color);font-family:var(--normal-font);font-size:var(--font-size);direction:ltr;z-index:1031}#conversejs textarea:disabled{background-color:#eee!important}#conversejs .fit-content{width:-webkit-fit-content!important;width:-moz-fit-content!important;width:fit-content!important;max-width:-webkit-fit-content!important;max-width:-moz-fit-content!important;max-width:fit-content!important}#conversejs .nopadding{padding:0!important}#conversejs.converse-overlayed>.row{flex-direction:row-reverse}#conversejs.converse-fullscreen .converse-chatboxes,#conversejs.converse-mobile .converse-chatboxes{width:100vw;left:-15px}#conversejs.converse-overlayed{height:3em}#conversejs.converse-embedded{box-sizing:border-box;bottom:auto;height:100%;position:relative;right:auto;width:100%}#conversejs.converse-embedded *,#conversejs.converse-embedded :after,#conversejs.converse-embedded :before{box-sizing:border-box}#conversejs converse-brand-heading{text-align:center}#conversejs .brand-heading{display:inline-flex;flex-direction:row;align-items:flex-start;font-family:var(--branding-font);color:var(--link-color);margin-bottom:.75em}#conversejs .brand-heading .brand-name-wrapper{display:flex;white-space:nowrap;margin:auto}#conversejs .brand-heading .brand-name{color:var(--link-color);display:flex;flex-direction:column;align-items:center;margin-top:-.25em}#conversejs .brand-heading .brand-name .byline{font-family:var(--heading-font);font-size:.3em;margin-bottom:.75em;margin-left:-2.7em;opacity:.55;word-spacing:5px}#conversejs .brand-heading .brand-subtitle{color:var(--text-color)}#conversejs .brand-heading .brand-name__text{font-size:120%;vertical-align:text-bottom}#conversejs .brand-heading .converse-svg-logo{color:var(--link-color);height:1.5em;margin-right:.25em;margin-bottom:-.25em}#conversejs .brand-heading .converse-svg-logo .cls-1{isolation:isolate}#conversejs .brand-heading .converse-svg-logo .cls-2{opacity:.5;mix-blend-mode:multiply}#conversejs .brand-heading .converse-svg-logo .cls-3{fill:var(--link-color)}#conversejs .brand-heading .converse-svg-logo .cls-4{fill:var(--link-color)}#conversejs .brand-heading--inverse .converse-svg-logo{margin-bottom:0;margin-top:-.2em}#conversejs .brand-heading--inverse .byline{margin:0;font-family:var(--heading-font);font-size:.25em;opacity:.55;margin-left:-7em;word-spacing:5px}#conversejs .dropdown-item{padding:.5rem 1rem}#conversejs .dropdown-item .fa{width:1.25em;margin-right:.75rem}#conversejs .dropdown-item.selected,#conversejs .dropdown-item:active{color:#fff!important;background-color:var(--list-item-open-color)}#conversejs .dropdown-item.selected .fa,#conversejs .dropdown-item:active .fa{color:#fff!important}#conversejs .popover{position:fixed}#conversejs .converse-chatboxes{z-index:1031;position:fixed;bottom:0;right:0}#conversejs ::-moz-placeholder{color:var(--subdued-color)}#conversejs :-ms-input-placeholder{color:var(--subdued-color)}#conversejs ::-ms-input-placeholder{color:var(--subdued-color)}#conversejs ::placeholder{color:var(--subdued-color)}#conversejs ::-moz-selection{background-color:var(--highlight-color)}#conversejs ::selection{background-color:var(--highlight-color)}#conversejs ::-moz-selection{background-color:var(--highlight-color)}@media screen and (max-width:480px){#conversejs{margin:0;right:10px;left:10px;bottom:5px}}@media screen and (max-height:450px){#conversejs{margin:0;right:10px;left:10px;bottom:5px}}#conversejs ul li{height:auto}#conversejs a,#conversejs article,#conversejs aside,#conversejs audio,#conversejs blockquote,#conversejs caption,#conversejs dd,#conversejs details,#conversejs div,#conversejs dl,#conversejs dt,#conversejs em,#conversejs embed,#conversejs fieldset,#conversejs figcaption,#conversejs figure,#conversejs footer,#conversejs form,#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6,#conversejs header,#conversejs hgroup,#conversejs img,#conversejs legend,#conversejs li,#conversejs mark,#conversejs menu,#conversejs nav,#conversejs ol,#conversejs output,#conversejs p,#conversejs pre,#conversejs ruby,#conversejs section,#conversejs span,#conversejs strong,#conversejs summary,#conversejs table,#conversejs tbody,#conversejs td,#conversejs tfoot,#conversejs th,#conversejs thead,#conversejs time,#conversejs tr,#conversejs ul,#conversejs video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}#conversejs button,#conversejs input[type=button],#conversejs input[type=password],#conversejs input[type=submit],#conversejs input[type=text],#conversejs textarea{font-size:var(--font-size);min-height:0}#conversejs strong{font-weight:700}#conversejs em{font-style:italic}#conversejs ol,#conversejs ul{list-style:none}#conversejs li{height:10px}#conversejs dl,#conversejs ol,#conversejs ul{font:inherit;margin:0}#conversejs a{cursor:pointer}#conversejs a,#conversejs a:not([href]):not([tabindex]),#conversejs a:visited{text-decoration:none;color:var(--link-color);text-shadow:none;cursor:pointer}#conversejs a:hover,#conversejs a:not([href]):not([tabindex]):hover,#conversejs a:visited:hover{color:var(--link-hover-color);text-decoration:none;text-shadow:none}#conversejs a.fa,#conversejs a.far,#conversejs a.fas,#conversejs a:not([href]):not([tabindex]).fa,#conversejs a:not([href]):not([tabindex]).far,#conversejs a:not([href]):not([tabindex]).fas,#conversejs a:visited.fa,#conversejs a:visited.far,#conversejs a:visited.fas{color:var(--subdued-color)}#conversejs a.fa:hover,#conversejs a.far:hover,#conversejs a.fas:hover,#conversejs a:not([href]):not([tabindex]).fa:hover,#conversejs a:not([href]):not([tabindex]).far:hover,#conversejs a:not([href]):not([tabindex]).fas:hover,#conversejs a:visited.fa:hover,#conversejs a:visited.far:hover,#conversejs a:visited.fas:hover{color:var(--gray-color)}#conversejs svg{border-radius:var(--chatbox-border-radius)}#conversejs .fa,#conversejs .far,#conversejs .fas{color:var(--subdued-color)}#conversejs .fa:hover,#conversejs .far:hover,#conversejs .fas:hover{color:var(--gray-color)}#conversejs q{quotes:"“" "â€" "‘" "’"}#conversejs q.reason{display:inline}#conversejs q:before{content:open-quote}#conversejs q:after{content:close-quote}#conversejs .helptext{font-size:var(--font-size-tiny);color:var(--text-color-lighten-15-percent)}#conversejs .selected{color:var(--link-color)!important}#conversejs .circle{border-radius:50%}#conversejs .badge{line-height:1;font-weight:400;font-size:90%}#conversejs .btn{font-weight:400;color:#fff}#conversejs .btn .fa,#conversejs .btn .far,#conversejs .btn .fas{color:#fff;margin-right:.5em}#conversejs .btn .fa.only-icon,#conversejs .btn .far.only-icon,#conversejs .btn .fas.only-icon{margin-right:0}#conversejs .no-text-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@keyframes colorchange-chatmessage{0%{background-color:#8dd8ae}25%{background-color:rgba(141,216,174,.75)}50%{background-color:rgba(141,216,174,.5)}75%{background-color:rgba(141,216,174,.25)}100%{background-color:transparent}}@-webkit-keyframes colorchange-chatmessage{0%{background-color:#8dd8ae}25%{background-color:rgba(141,216,174,.75)}50%{background-color:rgba(141,216,174,.5)}75%{background-color:rgba(141,216,174,.25)}100%{background-color:transparent}}@keyframes colorchange-chatmessage-muc{0%{background-color:#ffb5a2}25%{background-color:rgba(255,181,162,.75)}50%{background-color:rgba(255,181,162,.5)}75%{background-color:rgba(255,181,162,.25)}100%{background-color:transparent}}@-webkit-keyframes colorchange-chatmessage-muc{0%{background-color:#ffb5a2}25%{background-color:rgba(255,181,162,.75)}50%{background-color:rgba(255,181,162,.5)}75%{background-color:rgba(255,181,162,.25)}100%{background-color:transparent}}@keyframes fadein{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadein{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}@keyframes fadeOut{0%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}#conversejs .fade-in{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs .visible{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs .hidden{opacity:0!important;display:none!important}#conversejs .fade-out{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}#conversejs .collapsed{height:0!important;overflow:hidden!important;padding:0!important}#conversejs .locked{padding-right:22px}@-webkit-keyframes spin{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(359deg)}}#conversejs .spinner{-webkit-animation:spin 2s infinite,linear;animation:spin 2s infinite,linear;width:1em;display:block;text-align:center;padding:.5em 0;font-size:24px}#conversejs .left{float:left}#conversejs .right{float:right}#conversejs .centered{text-align:center;display:block;margin:auto}#conversejs .hor_centered{width:100%;text-align:center;display:block;margin:0 auto;clear:both}#conversejs .error{color:var(--error-color)!important}#conversejs .info{color:var(--info-color)}#conversejs .reg-feedback{font-size:85%;margin-bottom:1em}#conversejs #converse-login .conn-feedback,#conversejs .reg-feedback{display:block;text-align:center;width:100%}#conversejs .avatar{border-radius:var(--avatar-border-radius);border:var(--avatar-border);background-color:var(--avatar-background-color)}#conversejs .avatar-autocomplete{margin-right:.5em;vertical-align:middle}#conversejs .activated{display:block!important}#conversejs .form-help{color:var(--subdued-color);font-size:90%}#conversejs .form-control--labeled{margin-top:.5em}#conversejs .nav-pills .nav-link.active,#conversejs .nav-pills .show>.nav-link{background-color:var(--primary-color)}#conversejs .list-group-item.active{background-color:var(--primary-color);border-color:var(--primary-color-dark)}#conversejs .badge{text-shadow:none;color:#fff}#conversejs .badge-light{color:var(--text-color)}#conversejs .badge-primary,#conversejs .btn-primary,#conversejs .button-primary{background-color:var(--primary-color);border-color:transparent}#conversejs .badge-primary:active,#conversejs .badge-primary:focus,#conversejs .badge-primary:hover,#conversejs .btn-primary:active,#conversejs .btn-primary:focus,#conversejs .btn-primary:hover,#conversejs .button-primary:active,#conversejs .button-primary:focus,#conversejs .button-primary:hover{background-color:var(--primary-color-dark)!important;border-color:transparent!important}#conversejs .btn--transparent{background:0 0;border:none}#conversejs .btn-circle{width:30px;height:30px;text-align:center;padding:.5em 0;font-size:var(--font-size-small);line-height:1.428571429;border-radius:50%}#conversejs .btn.fa{color:#fff!important}#conversejs .badge-groupchat{background-color:var(--chatroom-badge-color);border-color:transparent}#conversejs .badge-groupchat:hover{background-color:var(--chatroom-badge-hover-color);border-color:transparent}#conversejs .badge-groupchat.active{background-color:var(--chatroom-badge-hover-color)!important;border-color:transparent!important}#conversejs .badge-info,#conversejs .btn-info{background-color:var(--primary-color);border-color:var(--primary-color)}#conversejs .badge-info:hover,#conversejs .btn-info:hover{background-color:var(--primary-color-dark);border-color:var(--primary-color-dark)}#conversejs .badge-secondary,#conversejs .btn-secondary,#conversejs .button-cancel{color:#fff;background-color:var(--secondary-color);border-color:var(--secondary-color)}#conversejs .badge-secondary:hover,#conversejs .btn-secondary:hover,#conversejs .button-cancel:hover{background-color:var(--secondary-color-dark);border-color:var(--secondary-color-dark)}#conversejs .btn-warning{color:#fff;background-color:var(--warning-color);border-color:var(--warning-color)}#conversejs .btn-warning:hover{color:#fff;background-color:var(--warning-color-dark);border-color:var(--warning-color-dark)}#conversejs .btn-danger{color:#fff;background-color:var(--danger-color);border-color:var(--danger-color)!important}#conversejs .btn-danger:hover{background-color:var(--danger-color-dark);border-color:var(--danger-color-dark)}@media screen and (max-width:575px){body .converse-brand{font-size:3.75em}#conversejs:not(.converse-embedded) .chatbox .chat-body{border-radius:var(--chatbox-border-radius)}#conversejs:not(.converse-embedded) .flyout{border-radius:var(--chatbox-border-radius)}}@media screen and (min-width:576px){#conversejs .offset-sm-2{margin-left:16.666667%}}@media screen and (min-width:768px){#conversejs .offset-md-2{margin-left:16.666667%}#conversejs .offset-md-3{margin-left:25%}}@media screen and (min-width:992px){#conversejs .offset-lg-2{margin-left:16.666667%}#conversejs .offset-lg-3{margin-left:25%}}@media screen and (min-width:1200px){#conversejs .offset-xl-2{margin-left:16.666667%}}@media screen and (max-height:450px){#conversejs{left:0}}#conversejs .btn--small{font-size:80%;font-weight:400}#conversejs form .hidden-username{opacity:0!important;height:0!important;padding:0!important}#conversejs form .error-feedback{margin-bottom:.5em}#conversejs form .form-check-label{margin-top:.3rem}#conversejs form .form-control::-moz-placeholder{color:var(--subdued-color)}#conversejs form .form-control:-ms-input-placeholder{color:var(--subdued-color)}#conversejs form .form-control::-ms-input-placeholder{color:var(--subdued-color)}#conversejs form .form-control::placeholder{color:var(--subdued-color)}#conversejs form .clear-input{margin-top:.5em;margin-bottom:.5em;position:absolute;right:.2em;cursor:pointer;font-size:var(--font-size)}#conversejs form#converse-login,#conversejs form#converse-register{background:var(--controlbox-pane-background-color)}#conversejs form#converse-login legend,#conversejs form#converse-register legend{width:100%;text-align:center;margin:0 auto .5em auto}#conversejs form#converse-login fieldset.buttons,#conversejs form#converse-register fieldset.buttons{text-align:center}#conversejs form#converse-login .login-anon,#conversejs form#converse-register .login-anon{height:auto;white-space:normal}#conversejs form#converse-login .save-submit,#conversejs form#converse-register .save-submit{color:var(--save-button-color)}#conversejs form#converse-login .form-url,#conversejs form#converse-register .form-url{display:block;font-weight:400;margin:1em 0}#conversejs form.converse-form{padding:1.2rem}#conversejs form.converse-form legend{color:var(--text-color);font-size:125%;margin-bottom:1.5em}#conversejs form.converse-form input[type=number],#conversejs form.converse-form input[type=password],#conversejs form.converse-form input[type=text],#conversejs form.converse-form select{min-width:50%}#conversejs form.converse-form input[type=button],#conversejs form.converse-form input[type=number],#conversejs form.converse-form input[type=password],#conversejs form.converse-form input[type=submit],#conversejs form.converse-form input[type=text]{padding:.5em}#conversejs form.converse-form input[type=button],#conversejs form.converse-form input[type=submit]{padding-left:1em;padding-right:1em;border:none}#conversejs form.converse-form input.error{border:1px solid var(--error-color);color:var(--text-color)}#conversejs form.converse-form .text-muted{color:var(--subdued-color)!important;font-size:85%;padding-top:.5em}#conversejs form.converse-form .text-muted a{color:var(--link-color-lighten-10-percent)}#conversejs form.converse-form .text-muted.error{color:var(--error-color)}#conversejs form.converse-form--modal{padding-bottom:0}#conversejs form.converse-centered-form{min-height:66%;text-align:center}#conversejs form.converse-centered-form input{max-width:30em;margin:auto}#conversejs .send-button{border-radius:0;bottom:var(--send-button-bottom);color:var(--inverse-link-color)}#conversejs .chatbox .send-button{background-color:var(--chat-head-color)}#conversejs .chatroom .send-button{background-color:var(--chatroom-head-bg-color)}#conversejs .chat-toolbar .toolbar-buttons{width:100%;display:inline-block}#conversejs .chat-toolbar .toolbar-buttons .message-limit{padding:.5em;font-weight:700}#conversejs .chat-toolbar .unverified,#conversejs .chat-toolbar .unverified a{color:#cf5300}#conversejs .chat-toolbar .private,#conversejs .chat-toolbar .private a{color:#4b7003}#conversejs .chat-toolbar li{cursor:pointer;display:inline-block;list-style:none;padding:0 .5em}#conversejs .chat-toolbar li:hover{cursor:pointer}#conversejs .chat-toolbar li .toolbar-menu{background-color:#fff;bottom:1.7rem;box-shadow:-1px -1px 2px 0 rgba(0,0,0,.4);height:auto;margin-bottom:0;min-width:21rem;position:absolute;right:0;top:auto;z-index:1000}#conversejs .chat-toolbar li .toolbar-menu.otr-menu{left:-6em;min-width:15rem}#conversejs .chat-toolbar li .toolbar-menu.otr-menu.show{display:flex;flex-direction:column}#conversejs .chat-toolbar li .toolbar-menu a{color:var(--link-color)}#conversejs .chat-toolbar li.toggle-otr ul{z-index:99}#conversejs .chat-toolbar li.toggle-otr ul li{display:block;padding:7px}#conversejs .chat-toolbar li.toggle-otr ul li:hover{background-color:var(--highlight-color)}#conversejs .chat-toolbar li.toggle-otr ul li a{display:block}#conversejs converse-chat-toolbar{background-color:#fff;box-sizing:border-box;display:flex;justify-content:space-between;margin:0;width:100%}#conversejs converse-chat-toolbar .fa,#conversejs converse-chat-toolbar .fa:hover,#conversejs converse-chat-toolbar .far,#conversejs converse-chat-toolbar .far:hover,#conversejs converse-chat-toolbar .fas,#conversejs converse-chat-toolbar .fas:hover{color:var(--chat-head-color);font-size:var(--font-size-large)}#conversejs converse-chat-toolbar .fa svg,#conversejs converse-chat-toolbar .fa:hover svg,#conversejs converse-chat-toolbar .far svg,#conversejs converse-chat-toolbar .far:hover svg,#conversejs converse-chat-toolbar .fas svg,#conversejs converse-chat-toolbar .fas:hover svg{fill:var(--chat-head-color)}#conversejs converse-chat-toolbar .unencrypted,#conversejs converse-chat-toolbar .unencrypted a{color:var(--text-color)}#conversejs converse-chat-toolbar .unencrypted .toolbar-menu a,#conversejs converse-chat-toolbar .unencrypted a .toolbar-menu a{color:var(--link-color)}#conversejs converse-chat-toolbar button{margin-top:.4em;border:1px transparent solid;background-color:transparent}#conversejs converse-chat-toolbar button.send-button{padding-top:.2em;padding-bottom:.2em;margin:0;margin-top:-1px}#conversejs .chatbox converse-chat-toolbar{border-top:var(--chatbox-message-input-border-top);color:var(--chat-toolbar-btn-color);background-color:#fff}#conversejs .chatbox converse-chat-toolbar .fa,#conversejs .chatbox converse-chat-toolbar .fa:hover,#conversejs .chatbox converse-chat-toolbar .far,#conversejs .chatbox converse-chat-toolbar .far:hover,#conversejs .chatbox converse-chat-toolbar .fas,#conversejs .chatbox converse-chat-toolbar .fas:hover{color:var(--chat-toolbar-btn-color)}#conversejs .chatbox converse-chat-toolbar button:focus{outline-color:var(--chat-toolbar-btn-color)!important}#conversejs .chatbox converse-chat-toolbar button:disabled .fa{color:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatbox converse-chat-toolbar button:disabled .fa:hover{color:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatbox converse-chat-toolbar button:disabled .fa svg,#conversejs .chatbox converse-chat-toolbar button:disabled .fa svg:hover{fill:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar{border-top:var(--chatroom-message-input-border-top);color:var(--muc-toolbar-btn-color)}#conversejs .chatroom converse-chat-toolbar .fa,#conversejs .chatroom converse-chat-toolbar .fa:hover,#conversejs .chatroom converse-chat-toolbar .far,#conversejs .chatroom converse-chat-toolbar .far:hover,#conversejs .chatroom converse-chat-toolbar .fas,#conversejs .chatroom converse-chat-toolbar .fas:hover{color:var(--muc-toolbar-btn-color);font-size:var(--font-size-large)}#conversejs .chatroom converse-chat-toolbar .fa svg,#conversejs .chatroom converse-chat-toolbar .fa:hover svg,#conversejs .chatroom converse-chat-toolbar .far svg,#conversejs .chatroom converse-chat-toolbar .far:hover svg,#conversejs .chatroom converse-chat-toolbar .fas svg,#conversejs .chatroom converse-chat-toolbar .fas:hover svg{fill:var(--muc-toolbar-btn-color)}#conversejs .chatroom converse-chat-toolbar button:focus{outline-color:var(--muc-toolbar-btn-color)!important}#conversejs .chatroom converse-chat-toolbar button:disabled .fa{color:var(--muc-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar button:disabled .fa:hover{color:var(--muc-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar button:disabled .fa svg,#conversejs .chatroom converse-chat-toolbar button:disabled .fa svg:hover{fill:var(--muc-toolbar-btn-disabled-color)}#conversejs.converse-overlayed .chat-toolbar li .toolbar-menu{min-width:235px}#conversejs.converse-overlayed .chatroom .chat-toolbar li .toolbar-menu{min-width:280px}#conversejs .chatbox-navback{display:none}#conversejs .flyout{position:absolute}@media screen and (max-height:450px){#conversejs .flyout{border-radius:0}}@media screen and (max-width:480px){#conversejs .flyout{border-radius:0}}@media screen and (max-height:450px){#conversejs .flyout{bottom:0}}@media screen and (max-width:480px){#conversejs .flyout{bottom:0}}#conversejs .chatbox-btn{border-radius:25%;border:none;cursor:pointer;font-size:var(--chatbox-button-size);margin:0 .2em;padding:0 0 0 .5em;text-decoration:none}#conversejs .chatbox-btn:active{position:relative;top:1px}#conversejs .chat-head{display:flex;flex-direction:row;color:#fff;font-size:100%;margin:0;padding:0;position:relative}#conversejs .chat-head.chat-head-chatbox{background-color:var(--chat-head-color)}#conversejs .chat-head .avatar{margin-right:.5em}#conversejs .chat-head .chat-head__desc{color:var(--chat-head-color-lighten-50-percent);font-size:var(--font-size-small);margin:0;overflow:hidden;padding:.5rem 1rem .5rem 1rem;text-overflow:ellipsis;width:100%;max-height:5em}#conversejs .chat-head .chatbox-title{padding:.75rem 1rem 0 1rem;display:flex;flex-direction:row;justify-content:space-between;width:100%}#conversejs .chat-head .chatbox-title--no-desc{padding:.75rem 1rem}#conversejs .chat-head .chatbox-title--row{display:flex;flex-direction:row;overflow:hidden}#conversejs .chat-head .chatbox-title__text{overflow:hidden;text-overflow:ellipsis}#conversejs .chat-head .chatbox-title__buttons{display:flex;flex-direction:row-reverse;flex-wrap:nowrap;padding:0}#conversejs .chat-head a.chatbox-btn.fa,#conversejs .chat-head a.chatbox-btn.far,#conversejs .chat-head a.chatbox-btn.fas,#conversejs .chat-head a:hover.chatbox-btn.fa,#conversejs .chat-head a:hover.chatbox-btn.far,#conversejs .chat-head a:hover.chatbox-btn.fas,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.far,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fas,#conversejs .chat-head a:visited.chatbox-btn.fa,#conversejs .chat-head a:visited.chatbox-btn.far,#conversejs .chat-head a:visited.chatbox-btn.fas{color:#fff}#conversejs .chat-head a.chatbox-btn.fa.button-on:before,#conversejs .chat-head a.chatbox-btn.far.button-on:before,#conversejs .chat-head a.chatbox-btn.fas.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.fa.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.far.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.fas.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.far.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fas.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.fa.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.far.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.fas.button-on:before{padding:.2em;background-color:var(--chat-head-text-color);color:var(--chat-head-color)}#conversejs .chat-head .chatbox-btn{color:#fff}#conversejs .chat-head .chatbox-btn.fa,#conversejs .chat-head .chatbox-btn.far,#conversejs .chat-head .chatbox-btn.fas{color:#fff}#conversejs .chat-head .chatbox-btn:active{position:relative;top:1px}#conversejs .chat-head .chatbox-btn.button-on:before{border-radius:5%;background-color:var(--chat-head-text-color);color:var(--chat-head-color)}#conversejs .chatbox{text-align:left;margin:0 var(--chat-gutter)}@media screen and (max-height:450px){#conversejs .chatbox{margin:0;width:var(--mobile-chat-width)}}@media screen and (max-width:480px){#conversejs .chatbox{margin:0;width:var(--mobile-chat-width)}}#conversejs .chatbox .box-flyout{display:flex;flex-direction:column;justify-content:space-between;box-shadow:1px 3px 5px 3px rgba(0,0,0,.4);z-index:2;overflow:hidden;width:100%}@media screen and (max-height:450px){#conversejs .chatbox .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}@media screen and (max-width:480px){#conversejs .chatbox .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}#conversejs .chatbox .chat-title{display:var(--heading-display);font-family:var(--heading-font);color:var(--heading-color);display:block;line-height:var(--line-height-large);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs .chatbox .chat-title.groupchat{padding-right:var(--chatroom-head-title-padding-right)}#conversejs .chatbox .chat-title a{color:var(--chat-head-text-color);width:100%}#conversejs .chatbox .chat-body{display:flex;flex-direction:column;justify-content:space-between;background-color:var(--chat-head-color);border-bottom-left-radius:var(--chatbox-border-radius);border-bottom-right-radius:var(--chatbox-border-radius);border-top:0}@media screen and (max-height:450px){#conversejs .chatbox .chat-body{border-bottom-left-radius:0;border-bottom-right-radius:0}}@media screen and (max-width:480px){#conversejs .chatbox .chat-body{border-bottom-left-radius:0;border-bottom-right-radius:0}}#conversejs .chatbox .chat-body p{color:var(--text-color);font-size:var(--message-font-size);margin:0;padding:5px}#conversejs .chatbox .new-msgs-indicator{position:relative;width:100%;cursor:pointer;background-color:var(--chat-head-color);color:var(--light-background-color);padding:.5em;font-size:.9em;text-align:center;z-index:20;white-space:nowrap;margin-bottom:.25em}#conversejs .chatbox .chat-content{background-color:var(--chat-content-background-color);border:0;color:var(--text-color);font-size:var(--message-font-size);height:100%;line-height:1.3em;overflow:hidden;padding:0;display:flex;flex-direction:column;justify-content:space-between}#conversejs .chatbox .chat-content converse-chat-content{display:flex;flex-direction:column;height:100%;justify-content:space-between}#conversejs .chatbox .chat-content converse-chat-message .spinner{width:100%;overflow-y:hidden}#conversejs .chatbox .chat-content .chat-content__help{border-top:1px solid var(--chat-head-color);max-height:100%}#conversejs .chatbox .chat-content .chat-content__help .close-chat-help svg{fill:var(--chat-head-color)}#conversejs .chatbox .chat-content .chat-content__help converse-chat-help{height:100%;overflow-y:auto;display:block;padding:.5em 0}#conversejs .chatbox .chat-content .chat-content__help .close-chat-help{float:right;padding-right:1em;cursor:pointer;color:var(--chat-content-background-color)}#conversejs .chatbox .chat-content .chat-content__messages{overflow-x:hidden;overflow-y:auto;height:100%}#conversejs .chatbox .chat-content .chat-content__notifications{height:1.7em;white-space:pre;background-color:var(--chat-content-background-color);color:var(--subdued-color);font-size:90%;font-style:italic;line-height:var(--line-height-small);padding:0 1em .3em}#conversejs .chatbox .chat-content .chat-content__notifications:before{content:" "}#conversejs .chatbox .chat-content video{width:100%}#conversejs .chatbox .chat-content progress{margin:.5em 0;width:100%}#conversejs .chatbox .chat-content-sendbutton{height:calc(100% - (var(--chat-textarea-height) + var(--send-button-height) + 2 * var(--send-button-margin)))}#conversejs .chatbox .dropdown{background-color:var(--light-background-color)}#conversejs .chatbox .dropdown dd{margin:0;padding:0;position:relative}#conversejs .chatbox .sendXMPPMessage{-moz-background-clip:padding;-webkit-background-clip:padding-box;border-bottom-radius:var(--chatbox-border-radius);background-clip:padding-box;background-color:#fff;border:0;margin:0;padding:0}@media screen and (max-height:450px){#conversejs .chatbox .sendXMPPMessage{width:100%}}@media screen and (max-width:480px){#conversejs .chatbox .sendXMPPMessage{width:100%}}#conversejs .chatbox .sendXMPPMessage .suggestion-box__results:after{display:none}#conversejs .chatbox .sendXMPPMessage .spoiler-hint{width:100%}#conversejs .chatbox .sendXMPPMessage .chat-textarea:active,#conversejs .chatbox .sendXMPPMessage .chat-textarea:focus,#conversejs .chatbox .sendXMPPMessage input:active,#conversejs .chatbox .sendXMPPMessage input:focus{outline-color:var(--chat-head-color)}#conversejs .chatbox .sendXMPPMessage .chat-textarea.correcting,#conversejs .chatbox .sendXMPPMessage input.correcting{background-color:var(--chat-correcting-color)}#conversejs .chatbox .sendXMPPMessage .chat-textarea{color:var(--chat-textarea-color);background-color:var(--chat-textarea-background-color);border-top-left-radius:0;border-top-right-radius:0;border-bottom-radius:var(--chatbox-border-radius);padding-left:.5em;padding-right:4.5em;padding-top:.5em;padding-bottom:.5em;width:100%;border:none;min-height:var(--chat-textarea-height);margin-bottom:-4px;resize:none}#conversejs .chatbox .sendXMPPMessage .chat-textarea.spoiler{height:42px}#conversejs .chatbox .dragresize{background:0 0;border:0;margin:0;position:absolute;top:0;z-index:20}#conversejs .chatbox .dragresize-top{cursor:n-resize;height:5px;width:100%}#conversejs .chatbox .dragresize-left,#conversejs .chatbox .dragresize-occupants-left{cursor:w-resize;width:5px;height:100%;left:0}#conversejs .chatbox .dragresize-topleft{cursor:nw-resize;width:15px;height:15px;top:0;left:0}#conversejs.converse-embedded .controlbox-head,#conversejs.converse-overlayed .controlbox-head{padding:.5em}#conversejs.converse-embedded .chat-head,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}#conversejs.converse-embedded .chatbox,#conversejs.converse-overlayed .chatbox{min-width:var(--overlayed-chat-width)!important;width:var(--overlayed-chat-width)}#conversejs.converse-embedded .chatbox .box-flyout,#conversejs.converse-overlayed .chatbox .box-flyout{min-width:var(--overlayed-chat-width)!important;width:var(--overlayed-chat-width)}#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius)}@media screen and (max-height:450px){#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}}@media screen and (max-width:480px){#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}}#conversejs.converse-overlayed .flyout{bottom:var(--overlayed-chatbox-hover-height)}#conversejs.converse-overlayed .box-flyout{height:var(--overlayed-chat-height);min-height:calc(var(--overlayed-chat-height)/ 2)}#conversejs.converse-overlayed .chat-head{min-height:var(--overlayed-chat-head-height)}#conversejs.converse-overlayed .minimized-chats-flyout .chat-head{cursor:default}#conversejs.converse-overlayed .chat-textarea{max-height:var(--overlayed-max-chat-textarea-height)}#conversejs.converse-overlayed .chatbox .chat-body{height:calc(100% - var(--overlayed-chat-head-height))}#conversejs.converse-overlayed .chatbox .chatbox-title{padding:.5rem .75rem 0 .75rem}#conversejs.converse-overlayed .chatbox .chatbox-title--no-desc{padding:.5rem .75rem}#conversejs.converse-overlayed .chatbox converse-dropdown .btn--standalone{padding:0 .2em;margin:0 0 0 .5em}@media (max-width:767.98px){#conversejs.converse-overlayed>.row{flex-direction:column}#conversejs.converse-overlayed>.row.no-gutters{margin:-1em}}#conversejs.converse-embedded .flyout,#conversejs.converse-fullscreen .flyout{border-radius:0;border:none;bottom:0}#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{margin:0;position:relative;width:100%;padding-right:15px;padding-left:15px}#conversejs.converse-embedded .chatbox .box-flyout,#conversejs.converse-fullscreen .chatbox .box-flyout{box-shadow:none;overflow:hidden}@media (min-width:768px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 66.66667%;max-width:66.66667%}}@media (min-width:992px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 75%;max-width:75%}}@media (min-width:1200px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 83.33333%;max-width:83.33333%}}#conversejs.converse-embedded.converse-singleton .flyout,#conversejs.converse-fullscreen.converse-singleton .flyout{border:none!important}#conversejs.converse-embedded.converse-singleton .chat-head,#conversejs.converse-fullscreen.converse-singleton .chat-head{padding:.5em}#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{margin:0;position:relative;width:100%;padding-right:15px;padding-left:15px}@media (min-width:768px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}@media (min-width:992px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}@media (min-width:1200px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}#conversejs.converse-embedded .chat-head{font-size:var(--font-size-huge)}#conversejs.converse-embedded .converse-chatboxes{z-index:1031;position:inherit;flex-wrap:nowrap;bottom:auto;height:100%;width:100%;margin-left:-15px}#conversejs.converse-embedded .chatbox .box-flyout{bottom:0;height:100%;min-width:auto;width:100%}#conversejs.converse-embedded .chat-textarea{max-height:var(--fullpage-max-chat-textarea-height)}#conversejs.converse-fullscreen .chatbox-btn{font-size:var(--fullpage-chatbox-button-size);margin:0 .3em}#conversejs.converse-fullscreen .chat-head{font-size:var(--font-size-huge)}#conversejs.converse-fullscreen .chat-textarea{max-height:var(--fullpage-max-chat-textarea-height)}#conversejs.converse-fullscreen .chatbox .box-flyout{box-shadow:none;height:var(--fullpage-chat-height);min-height:calc(var(--fullpage-chat-height)/ 2);width:var(--fullpage-chat-width);overflow:hidden}#conversejs.converse-fullscreen .chatbox .chat-body{height:inherit;overflow:hidden;background-color:var(--chat-head-color)}#conversejs.converse-fullscreen .chatbox .chat-title{font-size:var(--font-size-huge);line-height:var(--line-height-huge)}#conversejs.converse-fullscreen .chatbox .sendXMPPMessage ul{width:100%}@media (max-width:767.98px){#conversejs:not(.converse-embedded)>.row{flex-direction:row-reverse}#conversejs:not(.converse-embedded) #converse-login-panel .converse-form{padding:3em 2em 3em}#conversejs:not(.converse-embedded) .chatbox{width:calc(100% - 50px)}#conversejs:not(.converse-embedded) .chatbox .row .box-flyout{left:50px;bottom:0;height:var(--fullpage-chat-height);box-shadow:none}#conversejs.converse-fullscreen .chatbox .box-flyout .chatbox-navback,#conversejs.converse-mobile .chatbox .box-flyout .chatbox-navback,#conversejs.converse-overlayed .chatbox .box-flyout .chatbox-navback{display:flex;padding-right:1em}#conversejs.converse-fullscreen .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before,#conversejs.converse-mobile .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before,#conversejs.converse-overlayed .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before{color:#fff}}#conversejs .oauth-providers{text-align:center}#conversejs .oauth-providers .oauth-provider{margin:1em 0}#conversejs .oauth-providers .oauth-provider .oauth-login{margin-left:0;color:var(--link-color);font-size:var(--font-size-large)}#conversejs .oauth-providers .oauth-provider .oauth-login:hover{color:var(--link-hover-color)}#conversejs .oauth-providers .oauth-provider .oauth-login i{color:var(--link-color);font-size:var(--font-size-huge);margin-right:.5em}#conversejs .set-xmpp-status .chat-status--online,#conversejs .xmpp-status .chat-status--online{color:var(--chat-status-online)}#conversejs .set-xmpp-status .chat-status--busy,#conversejs .xmpp-status .chat-status--busy{color:var(--chat-status-busy)}#conversejs .set-xmpp-status .chat-status--away,#conversejs .xmpp-status .chat-status--away{color:var(--chat-status-away)}#conversejs .set-xmpp-status .fa-times-circle,#conversejs .set-xmpp-status .far.fa-circle,#conversejs .xmpp-status .fa-times-circle,#conversejs .xmpp-status .far.fa-circle{color:var(--subdued-color)}#conversejs .set-xmpp-status .chat-status{padding-right:.5em}#conversejs .room-info{font-size:var(--font-size-small);font-style:normal;font-weight:400}#conversejs .room-info li.room-info{display:block;margin-left:5px}#conversejs .room-info p.room-info{line-height:var(--line-height);margin:0;display:block;white-space:normal}#conversejs div.room-info{padding:.3em 0;clear:left;width:100%}#conversejs #controlbox{order:-1;color:var(--controlbox-text-color);margin-right:calc(3 * var(--chat-gutter))}#conversejs #controlbox converse-brand-heading{width:100%;display:block}#conversejs #controlbox .brand-name-wrapper{font-size:200%}#conversejs #controlbox .brand-name-wrapper--fullscreen{font-size:100%}#conversejs #controlbox .open-rooms-toggle,#conversejs #controlbox .open-rooms-toggle .fa{color:var(--groupchats-header-color)!important}#conversejs #controlbox .open-rooms-toggle .fa:hover,#conversejs #controlbox .open-rooms-toggle:hover{color:var(--chatroom-head-bg-color-dark)!important}#conversejs #controlbox .box-flyout{background-color:var(--controlbox-pane-background-color)}#conversejs #controlbox.logged-out .box-flyout .controlbox-pane{overflow-y:auto}#conversejs #controlbox form.search-xmpp-contact{margin:0;padding-left:5px;padding:0 0 5px 5px}#conversejs #controlbox form.search-xmpp-contact input{width:8em}#conversejs #controlbox .msgs-indicator{margin-right:.5em}#conversejs #controlbox a.subscribe-to-user{padding-left:2em;font-weight:700}#conversejs #controlbox #converse-register{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease;background-color:var(--controlbox-pane-background-color)}#conversejs #controlbox #converse-register .title{font-weight:700}#conversejs #controlbox #converse-register .info{color:green;font-size:90%;margin:1.5em 0}#conversejs #controlbox #converse-register .form-errors{color:var(--error-color);margin:1em 0}#conversejs #controlbox #converse-register .provider-title{font-size:var(--font-size-huge);margin:0}#conversejs #controlbox #converse-register .provider-score{width:178px;margin-bottom:8px}#conversejs #controlbox #converse-register .form-help .url{font-weight:700;color:var(--link-color)}#conversejs #controlbox #converse-register .input-group{display:table;margin:auto;width:100%}#conversejs #controlbox #converse-register .input-group span{overflow-x:hidden;text-overflow:ellipsis;max-width:110px}#conversejs #controlbox #converse-register .input-group input[name=username],#conversejs #controlbox #converse-register .input-group span{display:table-cell;text-align:left}#conversejs #controlbox #converse-register .instructions{color:gray;font-size:85%}#conversejs #controlbox #converse-register .instructions:hover{color:var(--controlbox-text-color)}#conversejs #controlbox .conn-feedback{color:var(--controlbox-head-color)}#conversejs #controlbox .conn-feedback.error{color:var(--error-color)}#conversejs #controlbox .conn-feedback p{padding-bottom:1em}#conversejs #controlbox .conn-feedback p.feedback-subject.error{font-weight:700}#conversejs #controlbox #converse-login-panel,#conversejs #controlbox #converse-register-panel{padding-top:0;padding-bottom:0}#conversejs #controlbox #converse-login-panel{flex-direction:row}#conversejs #controlbox .toggle-register-login{font-weight:700}#conversejs #controlbox .controlbox-pane .userinfo{padding-bottom:1em}#conversejs #controlbox .controlbox-pane .userinfo .username{margin-left:.5em;overflow:hidden;text-overflow:ellipsis}#conversejs #controlbox .controlbox-pane .userinfo .profile{margin-bottom:.75em}#conversejs #controlbox #chatrooms{padding:0}#conversejs #controlbox #chatrooms .add-chatroom{margin:0;padding:0}#conversejs #controlbox #chatrooms .add-chatroom input[type=button],#conversejs #controlbox #chatrooms .add-chatroom input[type=submit],#conversejs #controlbox #chatrooms .add-chatroom input[type=text]{width:100%}#conversejs #controlbox .controlbox-section .controlbox-heading{font-family:var(--heading-font);color:var(--controlbox-heading-color);font-weight:var(--controlbox-heading-font-weight);padding:0;font-size:1.1em;line-height:1.1em;text-transform:uppercase}#conversejs #controlbox .controlbox-section .controlbox-heading--groupchats{color:var(--groupchats-header-color)}#conversejs #controlbox .controlbox-section .controlbox-heading--contacts{color:var(--chat-head-color-dark)}#conversejs #controlbox .controlbox-section .controlbox-heading--headline{color:var(--headline-head-color)}#conversejs #controlbox .controlbox-section .controlbox-heading__btn{cursor:pointer;font-size:1em;padding:0;margin:var(--controlbox-heading-top-margin) 0 var(--inline-action-margin) 0;min-width:25px;text-align:center}#conversejs #controlbox .controlbox-section .controlbox-heading__btn.fa-vcard{margin-top:1em}#conversejs #controlbox .dropdown a{width:143px;display:inline-block}#conversejs #controlbox .dropdown li{list-style:none;padding-left:0}#conversejs #controlbox .dropdown dd ul{padding:0;list-style:none;position:absolute;left:0;top:0;width:100%;z-index:21;background-color:var(--light-background-color)}#conversejs #controlbox .dropdown dd ul li:hover{background-color:var(--highlight-color)}#conversejs #controlbox .dropdown dd.search-xmpp{height:0}#conversejs #controlbox .dropdown dd.search-xmpp .contact-form-container{position:absolute;z-index:22}#conversejs #controlbox .dropdown dd.search-xmpp .contact-form-container form{box-shadow:1px 4px 10px 1px rgba(0,0,0,.4);background-color:#fff}#conversejs #controlbox .dropdown dd.search-xmpp li:hover{background-color:var(--light-background-color)}#conversejs #controlbox .dropdown dt a span{cursor:pointer;display:block;padding:4px 7px 0 5px}#conversejs #controlbox .controlbox-panes{background-color:var(--controlbox-pane-background-color);border-right:.2143rem solid var(--panel-divider-color);height:100%;overflow-y:auto}#conversejs #controlbox .controlbox-subtitle{font-size:90%;padding:.5em;text-align:right}#conversejs #controlbox .controlbox-pane{background-color:var(--controlbox-pane-background-color);border:0;font-size:var(--font-size);left:0;text-align:left;overflow-x:hidden;padding:0 0 1em 0}#conversejs #controlbox .controlbox-pane .controlbox-padded{padding-left:1em;padding-right:1em;align-items:center;line-height:normal}#conversejs #controlbox .controlbox-pane .controlbox-padded .change-status{min-width:25px;text-align:center}#conversejs #controlbox .controlbox-pane .add-converse-contact{margin:0 0 .75em 0}#conversejs #controlbox .controlbox-pane .chatbox-btn{margin:0}#conversejs #controlbox .controlbox-pane .switch-form{text-align:center;padding:2em 0}#conversejs #controlbox .controlbox-pane .switch-form p{margin-top:.5em}#conversejs #controlbox .controlbox-pane dd{margin-left:0;margin-bottom:0}#conversejs #controlbox .controlbox-pane dd.odd{background-color:#dceac5}#conversejs #controlbox .add-xmpp-contact{padding:1em .5em}#conversejs #controlbox .add-xmpp-contact input{margin:0 0 1rem;width:100%}#conversejs #controlbox .add-xmpp-contact button{width:100%}#conversejs.converse-overlayed .toggle-controlbox{order:-1;text-align:center;background-color:var(--link-color);border-top-left-radius:var(--button-border-radius);border-top-right-radius:var(--button-border-radius);color:#0a0a0a;float:right;height:100%;margin:0 var(--chat-gutter);padding:1em}#conversejs.converse-overlayed .toggle-controlbox span{color:var(--inverse-link-color)}#conversejs.converse-overlayed #controlbox{min-width:var(--controlbox-width)!important;width:var(--controlbox-width)}#conversejs.converse-overlayed #controlbox .box-flyout{min-width:var(--controlbox-width)!important;width:var(--controlbox-width)}#conversejs.converse-overlayed #controlbox .login-trusted{white-space:nowrap;font-size:90%}#conversejs.converse-overlayed #controlbox #converse-login-trusted{margin-top:.5em}#conversejs.converse-overlayed #controlbox:not(.logged-out) .controlbox-head{height:15px}#conversejs.converse-overlayed #controlbox .controlbox-head{display:flex;flex-direction:row-reverse;flex-wrap:nowrap;justify-content:space-between;min-height:0}#conversejs.converse-overlayed #controlbox .controlbox-head .brand-heading{color:var(--controlbox-text-color);font-size:2em}#conversejs.converse-overlayed #controlbox .controlbox-head .chatbox-btn{color:var(--controlbox-head-color);margin:0}#conversejs.converse-overlayed #controlbox #converse-login,#conversejs.converse-overlayed #controlbox #converse-register{flex:0 0 100%;max-width:100%;padding-bottom:0}#conversejs.converse-overlayed #controlbox #converse-register .button-cancel{font-size:90%}#conversejs.converse-overlayed #controlbox .controlbox-panes{border-radius:var(--chatbox-border-radius)}#conversejs.converse-embedded .toggle-controlbox,#conversejs.converse-fullscreen .toggle-controlbox{display:none}#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{position:relative;width:100%;padding-right:15px;padding-left:15px;margin:0}@media (min-width:768px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 33.33333%;max-width:33.33333%}}@media (min-width:992px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 25%;max-width:25%}}@media (min-width:1200px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 16.66667%;max-width:16.66667%}}#conversejs.converse-embedded #controlbox.logged-out,#conversejs.converse-fullscreen #controlbox.logged-out,#conversejs.converse-mobile #controlbox.logged-out{flex:0 0 100%;max-width:100%}#conversejs.converse-embedded #controlbox .controlbox-pane,#conversejs.converse-fullscreen #controlbox .controlbox-pane,#conversejs.converse-mobile #controlbox .controlbox-pane{border-radius:0}#conversejs.converse-embedded #controlbox .flyout,#conversejs.converse-fullscreen #controlbox .flyout,#conversejs.converse-mobile #controlbox .flyout{border-radius:0}#conversejs.converse-embedded #controlbox #converse-login-panel,#conversejs.converse-fullscreen #controlbox #converse-login-panel,#conversejs.converse-mobile #controlbox #converse-login-panel{border-radius:0}#conversejs.converse-embedded #controlbox #converse-login-panel .converse-form,#conversejs.converse-fullscreen #controlbox #converse-login-panel .converse-form,#conversejs.converse-mobile #controlbox #converse-login-panel .converse-form{padding:3em 2em 3em}#conversejs.converse-embedded #controlbox .toggle-register-login,#conversejs.converse-fullscreen #controlbox .toggle-register-login,#conversejs.converse-mobile #controlbox .toggle-register-login{line-height:var(--line-height-huge)}#conversejs.converse-embedded #controlbox converse-brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading{flex:0 0 100%;max-width:100%;margin-top:5em;margin-bottom:1em}#conversejs.converse-embedded #controlbox converse-brand-heading .brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-heading{font-size:500%;padding:.7em 0 0 0;opacity:.8;color:var(--brand-heading-color)}#conversejs.converse-embedded #controlbox converse-brand-heading .brand-subtitle,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-subtitle,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-subtitle{font-size:90%;padding:.5em}@media screen and (max-width:480px){#conversejs.converse-embedded #controlbox converse-brand-heading .brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-heading{font-size:300%}}#conversejs.converse-embedded #controlbox.logged-out,#conversejs.converse-fullscreen #controlbox.logged-out,#conversejs.converse-mobile #controlbox.logged-out{flex:0 0 100%;max-width:100%;opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease;width:100%}#conversejs.converse-embedded #controlbox.logged-out .box-flyout,#conversejs.converse-fullscreen #controlbox.logged-out .box-flyout,#conversejs.converse-mobile #controlbox.logged-out .box-flyout{width:100%}#conversejs.converse-embedded #controlbox .box-flyout,#conversejs.converse-fullscreen #controlbox .box-flyout,#conversejs.converse-mobile #controlbox .box-flyout{border:0;width:100%;z-index:1;background-color:var(--controlbox-head-color)}#conversejs.converse-embedded #controlbox .box-flyout .controlbox-head,#conversejs.converse-fullscreen #controlbox .box-flyout .controlbox-head,#conversejs.converse-mobile #controlbox .box-flyout .controlbox-head{display:none}#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{position:relative;width:100%;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}@media (min-width:576px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}}@media (min-width:768px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}}@media (min-width:992px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 50%;max-width:50%;margin-left:25%}}#conversejs.converse-embedded #controlbox #converse-login .instructions,#conversejs.converse-embedded #controlbox #converse-login .title,#conversejs.converse-embedded #controlbox #converse-register .instructions,#conversejs.converse-embedded #controlbox #converse-register .title,#conversejs.converse-fullscreen #controlbox #converse-login .instructions,#conversejs.converse-fullscreen #controlbox #converse-login .title,#conversejs.converse-fullscreen #controlbox #converse-register .instructions,#conversejs.converse-fullscreen #controlbox #converse-register .title,#conversejs.converse-mobile #controlbox #converse-login .instructions,#conversejs.converse-mobile #controlbox #converse-login .title,#conversejs.converse-mobile #controlbox #converse-register .instructions,#conversejs.converse-mobile #controlbox #converse-register .title{margin:1em 0}#conversejs.converse-embedded #controlbox #converse-login input[type=button],#conversejs.converse-embedded #controlbox #converse-login input[type=submit],#conversejs.converse-embedded #controlbox #converse-register input[type=button],#conversejs.converse-embedded #controlbox #converse-register input[type=submit],#conversejs.converse-fullscreen #controlbox #converse-login input[type=button],#conversejs.converse-fullscreen #controlbox #converse-login input[type=submit],#conversejs.converse-fullscreen #controlbox #converse-register input[type=button],#conversejs.converse-fullscreen #controlbox #converse-register input[type=submit],#conversejs.converse-mobile #controlbox #converse-login input[type=button],#conversejs.converse-mobile #controlbox #converse-login input[type=submit],#conversejs.converse-mobile #controlbox #converse-register input[type=button],#conversejs.converse-mobile #controlbox #converse-register input[type=submit]{width:auto}@media (max-width:767.98px){#conversejs{left:0;right:0;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}#conversejs .converse-chatboxes{margin:0!important;flex-direction:row!important;justify-content:space-between}#conversejs .converse-chatboxes .converse-chatroom{font-size:14px}#conversejs .converse-chatboxes .chatbox .box-flyout{margin-left:15px;left:0;bottom:0;border-radius:0;width:100vw!important;height:var(--fullpage-chat-height)}#conversejs .converse-chatboxes #controlbox{width:100vw!important}#conversejs .converse-chatboxes #controlbox .box-flyout{width:100vw!important;height:var(--fullpage-chat-height);margin-right:-15px}#conversejs .converse-chatboxes #controlbox .sidebar{display:block}#conversejs .converse-chatboxes.sidebar-open .chatbox:not(#controlbox){display:none}#conversejs .converse-chatboxes.sidebar-open #controlbox .controlbox-pane{display:block}}#conversejs.converse-fullscreen .controlbox-panes{padding-top:1em}#conversejs.converse-overlayed .brand-heading{padding-top:.8rem;padding-left:.8rem;width:100%}#conversejs.converse-overlayed .converse-svg-logo{height:1em}#conversejs.converse-overlayed #controlbox #converse-login-panel{height:100%}#conversejs.converse-overlayed #controlbox .controlbox-panes{margin-top:.5em}#conversejs #converse-modals .modal{background-color:rgba(0,0,0,.4)}#conversejs #converse-modals .modal .modal-body{overflow-y:auto;max-height:75vh;margin-bottom:2em}#conversejs #converse-modals .modal .modal-body p{padding:.25rem 0}#conversejs #converse-modals .modal .modal-body .confirm .form-group p:first-child{font-size:110%;font-weight:700}#conversejs #converse-modals .modal .modal-body.fit-content{box-sizing:content-box}#conversejs #converse-modals .modal .modal-body.fit-content img{max-width:90vw}#conversejs #converse-modals .modal .modal-footer{justify-content:flex-start}#conversejs #converse-modals .modal .roomid-policy-error{color:var(--error-color);font-size:var(--font-size-small);float:right}#conversejs #converse-modals .scrollable-container{max-height:45vh;overflow-y:auto}#conversejs #converse-modals .affiliation-form,#conversejs #converse-modals .role-form{padding:2em 0 1em 0}#conversejs #converse-modals .set-xmpp-status{margin:1em}#conversejs #converse-modals .set-xmpp-status .custom-control-label{padding-top:.25em}#conversejs #converse-modals #omemo-tabpanel{margin-top:1em}#conversejs #converse-modals .btn{font-weight:400}#conversejs #converse-modals #user-profile-modal .profile-form label{font-weight:700}#conversejs #converse-modals #user-profile-modal .fingerprint-removal label{display:flex;padding:.75rem 1.25rem}#conversejs #converse-modals #user-profile-modal .list-group-item{display:flex;justify-content:left;font-size:95%}#conversejs #converse-modals #user-profile-modal .list-group-item input[type=checkbox]{margin-right:1em}#conversejs #converse-modals .fingerprints{width:100%;margin-bottom:1em}#conversejs #converse-modals .fingerprint-trust{display:flex;justify-content:space-between;font-size:95%}#conversejs #converse-modals .fingerprint-trust .fingerprint{margin-left:1em}#conversejs #converse-roster{text-align:left;width:100%;position:relative;margin:0;height:var(--roster-height);padding:0;overflow:hidden;height:calc(100% - 70px)}#conversejs #converse-roster #online-count{display:none}#conversejs #converse-roster .search-xmpp ul li.chat-info{padding-left:10px}#conversejs #converse-roster .roster-filter-form{width:100%}#conversejs #converse-roster .roster-filter-form .button-group{padding:.2em}#conversejs #converse-roster .roster-filter-form span{padding:.3em;cursor:pointer;min-width:25px;text-align:center}#conversejs #converse-roster .roster-filter-form .roster-filter{width:100%;margin:.2em;font-size:calc(var(--font-size) - 2px)}#conversejs #converse-roster .roster-filter-form .state-type{font-size:calc(var(--font-size) - 2px);width:100%}#conversejs #converse-roster .roster-contacts{padding:0;margin:0 0 .2em 0;height:100%;overflow-x:hidden;overflow-y:auto}#conversejs #converse-roster .roster-contacts .roster-group{border:none;color:var(--text-color);font-weight:400;text-shadow:0 1px 0 var(--text-shadow-color);margin:.75em 0 .75em 0}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle{font-family:var(--heading-font);display:block;width:100%;padding-top:0;padding-bottom:.3rem}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle,#conversejs #converse-roster .roster-contacts .roster-group .group-toggle .fa{color:var(--chat-head-color-dark)!important}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle .fa:hover,#conversejs #converse-roster .roster-contacts .roster-group .group-toggle:hover{color:var(--chat-head-color-darker)!important}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact{margin:.25em 0}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status{vertical-align:middle;font-size:.6em;margin-right:0;margin-left:-.7em;margin-bottom:-1.5em;border-radius:50%;border:2px solid var(--occupants-background-color)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--offline{margin-right:.8em}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--online{color:var(--chat-status-online)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--busy{color:var(--chat-status-busy)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--away{color:var(--chat-status-away)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--offline{display:none}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .fa-times-circle,#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .far.fa-circle{color:var(--subdued-color)}#conversejs #converse-roster .roster-contacts .roster-group li.requesting-xmpp-contact a{line-height:var(--line-height)}#conversejs #converse-roster .roster-contacts .roster-group li.requesting-xmpp-contact .req-contact-name{padding:0 .2em 0 0}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat{margin:0;padding:0}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat.unread-msgs{font-weight:700}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat.unread-msgs .contact-name{width:70%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .msgs-indicator{color:#fff;background-color:var(--chat-head-color);opacity:1;border-radius:10%;padding:.2em .4em;font-size:var(--font-size-small)}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0;margin:0;max-width:85%;float:none;height:100%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name.unread-msgs{max-width:60%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name.contact-name--offline{margin-left:.7em}#conversejs #converse-roster .roster-contacts .roster-group li.odd{background-color:#dceac5}#conversejs #converse-roster .roster-contacts .roster-group li a,#conversejs #converse-roster .roster-contacts .roster-group li span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#conversejs #converse-roster .roster-contacts .roster-group li .span{display:inline-block}#conversejs #converse-roster .roster-contacts .roster-group li .decline-xmpp-request{margin-left:5px}#conversejs #converse-roster .roster-contacts .roster-group li:hover{background-color:var(controlbox-pane-bg-hover-color)}#conversejs #converse-roster span.pending-contact-name{line-height:var(--line-height);width:100%}#conversejs .list-container{text-align:left;padding:.3em 0}#conversejs .list-container .list-toggle{font-family:var(--heading-font);font-weight:var(--list-toggle-font-weight);display:block;color:var(--list-toggle-color);padding:0 0 .5rem 0}#conversejs .list-container .list-toggle:hover{color:var(--list-toggle-hover-color)}#conversejs .items-list{text-align:left}#conversejs .items-list .list-item{border:none;clear:both;color:var(--text-color);overflow:hidden;padding:.5em 0;text-shadow:0 1px 0 var(--text-shadow-color);word-wrap:break-word;height:2.5em}#conversejs .items-list .list-item.unread-msgs{font-weight:700}#conversejs .items-list .list-item .list-item-link{color:var(--list-item-link-color);margin:auto;font-size:var(--font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:baseline}#conversejs .items-list .list-item .list-item-link:hover{color:var(--list-item-link-hover-color)}#conversejs .items-list .list-item .list-item-badge{opacity:1;border-radius:25%;color:#fff;font-size:var(--font-size-small);line-height:var(--font-size-small)}#conversejs .items-list .list-item .list-item-action{opacity:0;font-size:var(--font-size-tiny);padding:.3em 0 0 0;margin:0 0 0 var(--inline-action-margin);width:2em;height:2em;color:var(--subdued-color)}#conversejs .items-list .list-item .list-item-action:before{font-size:var(--font-size)}#conversejs .items-list .list-item .list-item-action.button-on{color:var(--list-item-link-color)}#conversejs .items-list .list-item .list-item-action.button-on:hover{color:var(--list-item-link-hover-color)}#conversejs .items-list .list-item .list-item-action:hover{color:var(--list-toggle-hover-color);opacity:1}#conversejs .items-list .list-item .list-item-action--visible{opacity:1!important}#conversejs .items-list .list-item.open{background-color:var(--list-item-open-color)}#conversejs .items-list .list-item.open:hover{background-color:var(--list-item-open-hover-color)!important}#conversejs .items-list .list-item.open a{color:#fff}#conversejs .items-list .list-item.open .list-item-link:hover{color:#fff}#conversejs .items-list .list-item.open .list-item-action{color:var(--list-item-action-color)}#conversejs .items-list .list-item.open .list-item-action:hover{color:#fff}#conversejs .items-list .list-item:hover{background-color:var(--controlbox-pane-bg-hover-color)}#conversejs .items-list .list-item:hover .fa,#conversejs .items-list .list-item:hover .far,#conversejs .items-list .list-item:hover .fas{opacity:1}#conversejs .badge--muc,#conversejs.converse-embedded .badge--muc{background-color:var(--groupchats-header-color)}#conversejs .add-chatroom input[type=button],#conversejs .add-chatroom input[type=submit],#conversejs.converse-embedded .add-chatroom input[type=button],#conversejs.converse-embedded .add-chatroom input[type=submit]{margin:.3em 0}#conversejs #room-details-modal .features-list,#conversejs.converse-embedded #room-details-modal .features-list{margin-left:1em}#conversejs .chatroom-features,#conversejs.converse-embedded .chatroom-features{width:100%}#conversejs .chatroom-features .features-list,#conversejs.converse-embedded .chatroom-features .features-list{padding-top:0}#conversejs .chatroom-features .features-list .feature,#conversejs.converse-embedded .chatroom-features .features-list .feature{width:100%;margin-right:.5em;padding-right:0;font-size:1em;cursor:help}#conversejs .chatroom-features .features-list .feature .fa,#conversejs.converse-embedded .chatroom-features .features-list .feature .fa{margin-right:.5em;color:var(--text-color)}#conversejs .chat-head-chatroom,#conversejs.converse-embedded .chat-head-chatroom{color:var(--chatroom-head-color);background-color:var(--chatroom-head-bg-color);border-bottom:var(--chatroom-head-border-bottom)}#conversejs .chat-head-chatroom .chat-head__desc,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc{color:var(--chatroom-head-color);display:var(--chatroom-head-description-display)}#conversejs .chat-head-chatroom .chat-head__desc a,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc a{color:var(--chatroom-head-description-link-color)}#conversejs .chat-head-chatroom .chat-head__desc:hover button,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc:hover button{display:inline-block}#conversejs .chat-head-chatroom .chatbox-title .btn--transparent i,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title .btn--transparent i{color:var(--chatroom-head-color)}#conversejs .chat-head-chatroom .chatbox-title .chatbox-title__text--bookmarked,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title .chatbox-title__text--bookmarked{margin-left:.5em;color:var(--chatroom-head-color)}#conversejs .chat-head-chatroom .chatbox-title__buttons,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__buttons{background-color:var(--chatroom-head-bg-color)}#conversejs .chat-head-chatroom a.chatbox-btn.fa,#conversejs .chat-head-chatroom a:hover.chatbox-btn.fa,#conversejs .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs .chat-head-chatroom a:visited.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa{color:var(--chat-head-text-color)}#conversejs .chat-head-chatroom a.chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:hover.chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:visited.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa.button-on:before{color:var(--chatroom-head-button-color)}#conversejs .chat-head-chatroom .chatbox-btn.button-on:before,#conversejs.converse-embedded .chat-head-chatroom .chatbox-btn.button-on:before{color:var(--chatroom-head-button-color)}#conversejs .chat-head-chatroom .chatbox-title__text,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__text{display:var(--heading-display);font-weight:var(--chatroom-head-title-font-weight);padding-right:var(--chatroom-head-title-padding-right);margin:auto 0}#conversejs .chat-head-chatroom .chatbox-title__text .chatroom-jid,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__text .chatroom-jid{font-size:var(--font-size-small)}#conversejs .empty-history-feedback,#conversejs.converse-embedded .empty-history-feedback{position:relative}#conversejs .empty-history-feedback span,#conversejs.converse-embedded .empty-history-feedback span{width:100%;text-align:center;position:absolute;margin-top:50%}#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--chatroom-width)}@media screen and (max-height:450px){#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--mobile-chat-width)}}@media screen and (max-width:480px){#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--mobile-chat-width)}}#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{overflow-y:hidden;background-color:var(--chatroom-head-bg-color);width:100%}@media screen and (max-height:450px){#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}@media screen and (max-width:480px){#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}#conversejs .chatroom .box-flyout .chatroom-body,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body{flex-direction:row;flex-flow:nowrap;background-color:#fff;border-top:0;width:100%;overflow:hidden}#conversejs .chatroom .box-flyout .chatroom-body .row,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .row{flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .chat-topic,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-topic{font-weight:700;color:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-info,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info{color:var(--chat-info-color);line-height:normal}#conversejs .chatroom .box-flyout .chatroom-body .chat-info.badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info.badge{color:var(--chat-head-text-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-info.chat-msg--retracted,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info.chat-msg--retracted{color:var(--subdued-color)}#conversejs .chatroom .box-flyout .chatroom-body .disconnect-container,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .disconnect-container{margin:1em;width:100%}#conversejs .chatroom .box-flyout .chatroom-body .disconnect-container h3.disconnect-msg,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .disconnect-container h3.disconnect-msg{padding-bottom:1em}#conversejs .chatroom .box-flyout .chatroom-body .chat-area,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area{display:flex;flex-direction:column;flex:0 1 100%;justify-content:flex-end;min-width:25%;word-wrap:break-word}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .new-msgs-indicator,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .new-msgs-indicator{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content{height:100%}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help{border-top:1px solid var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help .close-chat-help svg,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help .close-chat-help svg{fill:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants{display:flex;flex-direction:column;justify-content:space-between;overflow-x:hidden;overflow-y:hidden;vertical-align:top;background-color:var(--occupants-background-color);border-left:var(--occupants-border-left);padding:.5em;max-width:75%;min-width:20%;flex:0 0 25%}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header{display:flex;flex-direction:column}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header .hide-occupants,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header .hide-occupants{align-self:flex-end;cursor:pointer;font-size:var(--font-size-small)}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header--title,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header--title{margin-top:.5em;margin-bottom:.5em;display:flex;flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .occupants .fa-user-plus,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .fa-user-plus{margin-right:.25em}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-heading{font-family:var(--heading-font);color:var(--groupchats-header-color-dark);padding-left:0;margin-right:1em}#conversejs .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul{padding:0}#conversejs .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul li,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul li{padding:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul{padding:0;margin-bottom:.5em;overflow-x:hidden;overflow-y:auto;list-style:none}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list{overflow-y:auto;flex-basis:0;flex-grow:1}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li{cursor:default;display:block;font-size:var(--font-size-small);overflow:hidden;padding:.25em .25em .25em 0;text-overflow:ellipsis}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li .fa,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li .fa{margin-right:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.feature,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.feature{font-size:var(--font-size-tiny)}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant{cursor:pointer}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge{display:flex;justify-content:space-between;flex-wrap:wrap}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges{display:flex;justify-content:flex-end;flex-wrap:wrap;flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges span,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges span{margin-right:.25rem}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant div.row.no-gutters,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant div.row.no-gutters{flex-wrap:nowrap;min-height:1.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .badge{margin-bottom:.125rem}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status{display:inline-block;margin:0 .5em .125em 0;width:.5em;height:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-chat,#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-online,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-chat,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-online{background-color:#1a9707}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-dnd,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-dnd{background-color:red}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-away,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-away{background-color:#ff8c00}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-xa,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-xa{background-color:orange}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-offline,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-offline{background-color:#a9a9a9}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container{background-color:#fff;border:0;color:var(--text-color);font-size:var(--font-size);height:100%;width:100%;overflow-y:auto}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container .validation-message,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container .validation-message{font-size:90%;color:var(--error-color)}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=button],#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=submit],#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=button],#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=submit]{margin:0 .5em}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container .button-primary,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container .button-primary{background-color:var(--chatroom-head-button-color)}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form{display:flex;flex-direction:column;justify-content:center;padding:2em}#conversejs .chatroom .muc-bottom-panel,#conversejs.converse-embedded .chatroom .muc-bottom-panel{height:3em;padding:.5em;text-align:center;font-size:var(--font-size-small);background-color:var(--chatroom-head-bg-color);color:#fff}#conversejs .chatroom .muc-bottom-panel.muc-bottom-panel--nickname,#conversejs.converse-embedded .chatroom .muc-bottom-panel.muc-bottom-panel--nickname{padding:0;height:16em}#conversejs .chatroom .muc-bottom-panel.muc-bottom-panel--nickname .chatroom-form-container .chatroom-form,#conversejs.converse-embedded .chatroom .muc-bottom-panel.muc-bottom-panel--nickname .chatroom-form-container .chatroom-form{padding-top:2em;padding-bottom:0}#conversejs .chatroom .sendXMPPMessage .suggestion-box__results--above,#conversejs.converse-embedded .chatroom .sendXMPPMessage .suggestion-box__results--above{bottom:4.5em}#conversejs .chatroom .sendXMPPMessage .chat-textarea:active,#conversejs .chatroom .sendXMPPMessage .chat-textarea:focus,#conversejs .chatroom .sendXMPPMessage input:active,#conversejs .chatroom .sendXMPPMessage input:focus,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea:active,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea:focus,#conversejs.converse-embedded .chatroom .sendXMPPMessage input:active,#conversejs.converse-embedded .chatroom .sendXMPPMessage input:focus{outline-color:var(--chatroom-head-bg-color)}#conversejs .chatroom .sendXMPPMessage .chat-textarea.correcting,#conversejs .chatroom .sendXMPPMessage input.correcting,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea.correcting,#conversejs.converse-embedded .chatroom .sendXMPPMessage input.correcting{background-color:var(--chatroom-correcting-color)}#conversejs .chatroom .sendXMPPMessage .chat-textarea,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea{border-bottom-right-radius:0}#conversejs .chatroom .room-invite .invited-contact,#conversejs.converse-embedded .chatroom .room-invite .invited-contact{margin:-1px 0 0 -1px;width:100%;border:1px solid #999}#conversejs.converse-overlayed .chatbox.chatroom{min-width:var(--chatroom-width)!important;width:var(--chatroom-width)}#conversejs.converse-overlayed .chatbox.chatroom .box-flyout{min-width:var(--chatroom-width)!important;width:var(--chatroom-width)}#conversejs.converse-overlayed .chatbox.chatroom .chatbox-title__text{flex:0 0 58.33333%;max-width:58.33333%}#conversejs.converse-overlayed .chatbox.chatroom .chatbox-title__buttons{flex:0 0 41.66667%;max-width:41.66667%}#conversejs.converse-overlayed .chatbox.chatroom .chat-head__desc{font-size:80%;margin-bottom:1em}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants .occupants-heading{padding:0}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants .occupant-list{border-bottom:none}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants ul .occupant .occupant-nick-badge .occupant-badges{display:none}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants ul .occupant .occupant-status{margin-top:6px}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .chat-area{min-width:var(--overlayed-chat-width)}#conversejs.converse-embedded .chatroom .box-flyout,#conversejs.converse-fullscreen .chatroom .box-flyout,#conversejs.converse-mobile .chatroom .box-flyout{width:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator{max-width:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants{padding:var(--occupants-padding)}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants .occupants-heading{font-size:var(--font-size-large)}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li{font-size:var(--font-size-small)}#conversejs.converse-embedded .chatroom .room-invite span .invited-contact,#conversejs.converse-fullscreen .chatroom .room-invite span .invited-contact,#conversejs.converse-mobile .chatroom .room-invite span .invited-contact{margin:0 0 .5em -1px}#conversejs.converse-embedded .chatroom{margin:0;width:100%}#conversejs.converse-embedded .chatroom .box-flyout .occupants-heading{font-size:120%}#conversejs.converse-embedded .chatroom .box-flyout .chat-content .chat-message{margin:.5em;font-size:120%}#conversejs.converse-embedded .chatroom .box-flyout .sendXMPPMessage .chat-textarea{padding:.5em;font-size:110%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body{height:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container{height:100%;position:relative}#conversejs.converse-embedded .chatroom .box-flyout .occupants .occupant-list{padding-left:.3em}#conversejs .chat-head-headline{background-color:var(--headline-head-color)}#conversejs .chatbox.headlines .chat-head.chat-head-chatbox{background-color:var(--headline-head-color)}#conversejs .chatbox.headlines .chat-body{background-color:var(--headline-head-color);border-radius:var(--chatbox-border-radius)}#conversejs .chatbox.headlines .chat-body .chat-message{color:var(--headline-message-color)}#conversejs .chatbox.headlines .chat-content{height:100%}#conversejs.converse-fullscreen .chatbox.headlines .box-flyout{background-color:var(--headline-head-color)}#conversejs.converse-fullscreen .chatbox.headlines .chat-head.chat-head-chatbox{background-color:var(--headline-head-color)}#conversejs.converse-fullscreen .chatbox.headlines .flyout{border:var(--flyout-padding) solid var(--headline-head-color);border-top:.8em solid var(--headline-head-color)}#conversejs .older-msg time{font-weight:700}#conversejs .message .mention{font-weight:700}#conversejs .message .mention--self{font-weight:400}#conversejs .message.date-separator,#conversejs .message.separator{height:2em;margin:0;position:relative;text-align:center;z-index:0}#conversejs .message.date-separator .separator,#conversejs .message.separator .separator{border-top:0;border-bottom:var(--chat-separator-border-bottom);margin:0 1em;position:relative;top:1em;z-index:5}#conversejs .message.date-separator .separator-text,#conversejs .message.separator .separator-text{background:#fff;bottom:1px;color:var(--separator-text-color);display:inline-block;line-height:2em;padding:0 1em;position:relative;z-index:5}#conversejs .message.chat-msg--retracted .chat-msg__message{color:var(--subdued-color)}#conversejs .message.chat-info{color:var(--chat-head-color);font-size:var(--message-font-size);line-height:var(--line-height-small);font-size:90%;padding:.17rem 1rem}#conversejs .message.chat-info.badge{color:var(--chat-head-text-color)}#conversejs .message.chat-info.chat-state-notification{font-style:italic}#conversejs .message.chat-info.chat-event{clear:left;font-style:italic}#conversejs .message.chat-info.chat-error{color:var(--error-color);font-weight:700}#conversejs .message.chat-info .q{font-style:italic}#conversejs .message .chat-image{height:auto;width:auto;max-height:15em;max-width:100%}#conversejs .message.chat-msg--action{font-style:italic}#conversejs .message.chat-msg--action .chat-msg__author{padding-right:.2em}#conversejs .message.chat-msg{display:inline-flex;width:100%;flex-direction:row;padding:.125rem 1rem}#conversejs .message.chat-msg.onload{animation:colorchange-chatmessage 1s;-webkit-animation:colorchange-chatmessage 1s}#conversejs .message.chat-msg:hover{background-color:var(--list-item-hover-color)}#conversejs .message.chat-msg.correcting.groupchat{background-color:var(--chatroom-correcting-color)}#conversejs .message.chat-msg.correcting:not(.groupchat){background-color:var(--chat-correcting-color)}#conversejs .message.chat-msg .spoiler{margin-top:.5em}#conversejs .message.chat-msg .spoiler-hint{margin-bottom:.5em}#conversejs .message.chat-msg .spoiler-toggle{color:#fff}#conversejs .message.chat-msg .spoiler-toggle i{color:#fff;padding-right:.5em}#conversejs .message.chat-msg .spoiler-toggle:before{padding-right:.25em;whitespace:nowrap}#conversejs .message.chat-msg .chat-msg__content{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;margin-left:.5rem;width:calc(100% - var(--message-avatar-width))}#conversejs .message.chat-msg .chat-msg__content:hover .btn--standalone{opacity:1}#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat .chat-msg__text{color:var(--subdued-color)}#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat.chat-msg__body--delayed .chat-msg__text,#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat.chat-msg__body--received .chat-msg__text{color:var(--message-text-color)}#conversejs .message.chat-msg .chat-msg__content--action{width:100%;margin-left:0}#conversejs .message.chat-msg .chat-msg__body{display:flex;flex-direction:row;justify-content:space-between}#conversejs .message.chat-msg converse-chat-message-body{display:inline}#conversejs .message.chat-msg .chat-msg__message{line-height:1.5em;display:inline-flex;flex-direction:column;width:100%;overflow-wrap:break-word}#conversejs .message.chat-msg .chat-msg__edit-modal{cursor:pointer;padding-right:.5em}#conversejs .message.chat-msg.headline .chat-msg__body{margin-left:0}#conversejs .message.chat-msg .chat-msg__subject{font-weight:700;clear:right}#conversejs .message.chat-msg .chat-msg__text{color:var(--message-text-color);padding:0;white-space:pre-wrap;word-wrap:break-word;word-break:break-word}#conversejs .message.chat-msg .chat-msg__text a{word-wrap:break-word;word-break:break-all;display:inline}#conversejs .message.chat-msg .chat-msg__text a.chat-image__link{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}#conversejs .message.chat-msg .chat-msg__text img.emoji{height:1.5em;width:1.5em;margin:0 .05em 0 .1em;vertical-align:-.1em}#conversejs .message.chat-msg .chat-msg__text .emojione{margin-bottom:-6px}#conversejs .message.chat-msg .chat-msg__text--larger{font-size:1.6em;padding-top:.25em;padding-bottom:.25em}#conversejs .message.chat-msg .chat-msg__error{color:var(--error-color)}#conversejs .message.chat-msg .chat-msg__media{margin-top:.25rem;word-break:break-all}#conversejs .message.chat-msg .chat-msg__media a{word-wrap:break-word}#conversejs .message.chat-msg .chat-msg__media audio{width:100%}#conversejs .message.chat-msg converse-message-actions{margin-left:.5em}#conversejs .message.chat-msg .chat-msg__actions .dropdown-menu{min-width:5rem}#conversejs .message.chat-msg .chat-msg__actions i{color:var(--text-color-lighten-15-percent);font-size:70%}#conversejs .message.chat-msg .chat-msg__actions button{border:none;background:0 0;color:var(--text-color-lighten-15-percent);padding:0 .25em}#conversejs .message.chat-msg .chat-msg__actions .btn--standalone{opacity:0;margin-top:-.2em}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action{width:100%;padding:.5em 1em;text-align:left;white-space:nowrap}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action converse-icon{margin-right:.25em}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action:hover{color:var(--text-color);background-color:var(--list-item-hover-color)}#conversejs .message.chat-msg .chat-msg__avatar{margin-top:.5em;vertical-align:middle;height:var(--message-avatar-height);width:var(--message-avatar-width);min-height:var(--message-avatar-height);min-width:var(--message-avatar-width)}#conversejs .message.chat-msg .chat-msg__author{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--heading-font);font-size:115%;font-weight:700;padding-bottom:1px}#conversejs .message.chat-msg .chat-msg__heading{width:100%;margin-top:.5em;padding-right:.25rem;padding-bottom:.25rem}#conversejs .message.chat-msg .chat-msg__heading .badge{margin-left:.5em;font-family:var(--normal_font)}#conversejs .message.chat-msg .chat-msg__heading .chat-msg__time{padding-left:.25em;padding-right:.25em;color:var(--text-color-lighten-15-percent)}#conversejs .message.chat-msg.chat-msg--action .chat-msg__message{flex-direction:row}#conversejs .message.chat-msg.chat-msg--action .chat-msg__text{width:auto}#conversejs .message.chat-msg.chat-msg--action .chat-msg__heading{margin-top:0;padding-bottom:0;width:auto}#conversejs .message.chat-msg.chat-msg--action .chat-msg__heading .fa{margin-left:.5em}#conversejs .message.chat-msg.chat-msg--action .chat-msg__author{font-size:var(--message-font-size)}#conversejs .message.chat-msg.chat-msg--action .chat-msg__time{margin-left:0}#conversejs .message.chat-msg.chat-msg--followup .chat-msg__avatar,#conversejs .message.chat-msg.chat-msg--followup .chat-msg__heading{display:none}#conversejs .message.chat-msg.chat-msg--followup.chat-msg--with-avatar .chat-msg__content{margin-left:2.75rem;width:100%}#conversejs .message.chat-msg .chat-msg__receipt{margin-left:.5em;margin-right:.5em;color:var(--message-receipt-color)}#conversejs .chatroom-body .message.onload{animation:colorchange-chatmessage-muc 1s;-webkit-animation:colorchange-chatmessage-muc 1s}#conversejs .chatroom-body .message .separator{border-top:0;border-bottom:var(--chatroom-separator-border-bottom)}#conversejs.converse-overlayed .message.chat-msg.chat-msg--followup .chat-msg__content{margin-left:0}@media screen and (max-width:767px){#conversejs:not(.converse-embedded) .message.chat-msg .chat-msg__author{white-space:normal}}#conversejs.converse-overlayed #minimized-chats{order:100;width:var(--minimized-chats-width);margin-bottom:0;border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius);color:var(--inverse-link-color);margin-right:var(--chat-gutter);padding:0}#conversejs.converse-overlayed #minimized-chats .badge{bottom:8px;border:1px solid var(--overlayed-badge-color)}#conversejs.converse-overlayed #minimized-chats #toggle-minimized-chats{border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius);background-color:var(--link-color);padding:1em 0 0 0;text-align:center;color:#fff;white-space:nowrap;overflow-y:hidden;text-overflow:ellipsis;display:block;height:45px;width:9em}#conversejs.converse-overlayed #minimized-chats a.restore-chat{cursor:pointer;padding:1px 0 1px 5px;color:var(--chat-head-text-color);line-height:15px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs.converse-overlayed #minimized-chats a.restore-chat:hover{text-decoration:none}#conversejs.converse-overlayed #minimized-chats a.restore-chat:visited{color:var(--chat-head-text-color)}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout{flex-direction:column-reverse;bottom:45px;width:var(--minimized-chats-width)}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout .chat-head{min-height:0;padding:.3em;border-radius:var(--chatbox-border-radius);height:35px;margin-bottom:.2em;width:100%;max-width:9em;flex-wrap:nowrap}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout.minimized{height:auto}#conversejs.converse-overlayed #minimized-chats .unread-message-count{font-weight:700;background-color:#fff;border:1px solid;text-shadow:1px 1px 0 var(--text-shadow-color);color:var(--warning-color);border-radius:5px;padding:2px 4px;font-size:16px;text-align:center;position:absolute;right:116px;bottom:10px}#conversejs.converse-overlayed #minimized-chats .chat-head-message-count-hidden,#conversejs.converse-overlayed #minimized-chats .unread-message-count-hidden{display:none}#conversejs #controlbox .bookmarks-toggle,#conversejs #controlbox .bookmarks-toggle .fa{color:var(--groupchats-header-color)!important}#conversejs #controlbox .bookmarks-toggle .fa:hover,#conversejs #controlbox .bookmarks-toggle:hover{color:var(--chatroom-head-bg-color-dark)!important}#conversejs.fullscreen #controlbox #chatrooms .bookmarks-list dl.rooms-list.bookmarks dd.available-chatroom a.open-room{width:80%}#conversejs [hidden]{display:none}#conversejs .visually-hidden{position:absolute;clip:rect(0,0,0,0)}#conversejs .form-group .suggestion-box{width:100%}#conversejs .suggestion-box{position:relative}#conversejs .suggestion-box mark{background:var(--completion-light-color)}#conversejs .suggestion-box>input{display:block}#conversejs .suggestion-box .suggestion-box__results,#conversejs .suggestion-box>ul{position:absolute;left:0;right:0;z-index:2;min-width:100%;box-sizing:border-box;list-style:none;padding:0;border-radius:.3em;margin:.2em 0 0;background:rgba(255,255,255,.9);background:linear-gradient(to bottom right,#fff,rgba(255,255,255,.9));border:1px solid rgba(0,0,0,.3);box-shadow:.05em .2em .6em rgba(0,0,0,.1);text-shadow:none}#conversejs .suggestion-box .suggestion-box__results:before,#conversejs .suggestion-box>ul:before{content:"";position:absolute;top:-.43em;left:1em;width:0;height:0;padding:.4em;background:#fff;border:inherit;border-right:0;border-bottom:0;transform:rotate(45deg);z-index:-1}#conversejs .suggestion-box .suggestion-box__results>li,#conversejs .suggestion-box>ul>li{text-overflow:ellipsis;overflow-x:hidden;position:relative;cursor:pointer;padding:1em}#conversejs .suggestion-box .suggestion-box__results--below{top:2em}#conversejs .suggestion-box .suggestion-box__results--above{bottom:4.5em}#conversejs .suggestion-box .suggestion-box__results--above:before{display:none}#conversejs .suggestion-box .suggestion-box__results--above:after{z-index:-1;content:"";position:absolute;bottom:-.43em;left:1em;width:0;height:0;padding:.4em;background:#fff;border:inherit;border-left:0;border-top:0;transform:rotate(45deg)}#conversejs .suggestion-box>ul:empty,#conversejs .suggestion-box>ul[hidden]{display:none}@supports (transform:scale(0)){#conversejs .suggestion-box>ul{transition:.3s cubic-bezier(.4,.2,.5,1.4);transform-origin:1.43em -.43em}#conversejs .suggestion-box>ul:empty,#conversejs .suggestion-box>ul[hidden]{opacity:0;transform:scale(0);display:block;transition-timing-function:ease}}#conversejs .suggestion-box>ul>li[aria-selected=true]{background:var(--completion-dark-color);color:var(--inverse-link-color)}#conversejs .suggestion-box li:hover mark{background:var(--completion-light-color);color:var(--inverse-link-color)}#conversejs .suggestion-box li[aria-selected=true] mark{background:var(--completion-normal-color);color:inherit}#conversejs.converse-fullscreen .suggestion-box__results--above{bottom:4.5em}#conversejs.converse-overlayed .suggestion-box__results--above{bottom:3.5em}#conversejs .chatbox img.emoji{height:1.2em;width:1.2em;margin:0 .05em 0 .1em;vertical-align:-.1em}#conversejs .chatbox .sendXMPPMessage .toggle-smiley a.toggle-smiley{padding:0}#conversejs .chatbox converse-emoji-dropdown{display:inline-block}#conversejs .chatbox converse-emoji-dropdown .dropdown-menu{padding:0}#conversejs .chatbox converse-emoji-picker{width:100%;padding-top:0;padding-bottom:0;background-color:var(--chat-head-color);overflow-y:hidden;background:#fff}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists{height:8em;overflow-y:auto;display:flex;flex-direction:column}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-category__heading{clear:both;color:var(--subdued-color);cursor:auto;display:block;font-size:var(--font-size);margin:0;padding:.75em 0 0 .5em}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-lists__container{overflow-x:hidden}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-picker li{float:left}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker{display:flex;padding:.5em 0;background-color:var(--chat-head-color);width:auto;font-size:var(--font-size)}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker label{margin:0;padding:0 .5em;white-space:nowrap;font-size:var(--font-size-small);color:var(--heading-color)}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker ul{display:flex;flex-direction:row;flex-wrap:wrap}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker ul li{padding:0 .25em}#conversejs .chatbox converse-emoji-picker .emoji-picker{background-color:#fff;padding:.5em 0 0 .5em}#conversejs .chatbox converse-emoji-picker .emoji-picker:last-child{padding-bottom:.5em}#conversejs .chatbox converse-emoji-picker .emoji-picker li{display:inline-block;height:calc(var(--font-size-huge) * 1.5);width:calc(var(--font-size-huge) * 1.5);overflow:hidden;margin-left:0;list-style:none;position:relative}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji{padding:0 .2em;height:auto;width:auto;margin:0;display:block;text-align:center}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji.selected a{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji img{margin:0 auto;height:var(--font-size-huge);width:var(--font-size-huge);display:inline-block;vertical-align:baseline}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji a{padding:3px;display:inline-block;font-size:var(--font-size-huge);line-height:calc(var(--font-size-huge) * 1.5);height:calc(var(--font-size-huge) * 1.5);width:calc(var(--font-size-huge) * 1.5);overflow:hidden}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji a:hover{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header{display:flex;flex-direction:column;padding:.1em 0;background-color:var(--chat-head-color)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header .emoji-search{width:auto;margin:.25em;height:2em;font-size:var(--font-size-small)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul{display:flex;flex-direction:row;flex-wrap:wrap}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category{padding:.25em 0;font-size:var(--font-size-huge)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category.picked{background-color:#fff;border:1px var(--chat-head-color) solid;border-bottom:none}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category.selected a,#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category:hover a{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category a{padding:.25em;display:inline-block}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category img{height:var(--font-size-huge);width:var(--font-size-huge)}#conversejs .chatroom converse-emoji-picker{background-color:var(--chatroom-head-bg-color);background:#fff}#conversejs .chatroom converse-emoji-picker .emoji-skintone-picker{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom converse-emoji-picker .emoji-picker__header{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom converse-emoji-picker .emoji-picker__header ul .emoji-category.picked{border:1px var(--chatroom-head-bg-color) solid;border-bottom:none}#conversejs.converse-overlayed converse-emoji-dropdown .dropdown-menu{min-width:18em}#conversejs.converse-overlayed .chatbox .emoji-picker__header .emoji-category img{height:var(--font-size)!important;width:var(--font-size)!important}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker .insert-emoji a{font-size:var(--font-size);line-height:calc(var(--font-size) * 1.5);padding:0;height:calc(var(--font-size) * 1.5);width:calc(var(--font-size) * 1.5)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker .insert-emoji img{height:var(--font-size);width:var(--font-size)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-skintone-picker{font-size:var(--font-size-small)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker__header .emoji-category{font-size:var(--font-size-small)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker__lists{height:7em}#conversejs.converse-embedded converse-emoji-dropdown .dropdown-menu{min-width:20em}#conversejs.converse-fullscreen converse-emoji-dropdown .dropdown-menu{min-width:22em}#conversejs.converse-fullscreen .chatbox converse-emoji-picker .emoji-picker__lists{height:12em}#conversejs .chatbox converse-emoji-picker{max-width:40em} + */#conversejs :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}#conversejs *,#conversejs ::after,#conversejs ::before{box-sizing:border-box}#conversejs html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}#conversejs article,#conversejs aside,#conversejs figcaption,#conversejs figure,#conversejs footer,#conversejs header,#conversejs hgroup,#conversejs main,#conversejs nav,#conversejs section{display:block}#conversejs body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}#conversejs [tabindex="-1"]:focus:not(:focus-visible){outline:0!important}#conversejs hr{box-sizing:content-box;height:0;overflow:visible}#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6{margin-top:0;margin-bottom:.5rem}#conversejs p{margin-top:0;margin-bottom:1rem}#conversejs abbr[data-original-title],#conversejs abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#conversejs address{margin-bottom:1rem;font-style:normal;line-height:inherit}#conversejs dl,#conversejs ol,#conversejs ul{margin-top:0;margin-bottom:1rem}#conversejs ol ol,#conversejs ol ul,#conversejs ul ol,#conversejs ul ul{margin-bottom:0}#conversejs dt{font-weight:700}#conversejs dd{margin-bottom:.5rem;margin-left:0}#conversejs blockquote{margin:0 0 1rem}#conversejs b,#conversejs strong{font-weight:bolder}#conversejs small{font-size:80%}#conversejs sub,#conversejs sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}#conversejs sub{bottom:-.25em}#conversejs sup{top:-.5em}#conversejs a{color:#007bff;text-decoration:none;background-color:transparent}#conversejs a:hover{color:#0056b3;text-decoration:underline}#conversejs a:not([href]){color:inherit;text-decoration:none}#conversejs a:not([href]):hover{color:inherit;text-decoration:none}#conversejs code,#conversejs kbd,#conversejs pre,#conversejs samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}#conversejs pre{margin-top:0;margin-bottom:1rem;overflow:auto}#conversejs figure{margin:0 0 1rem}#conversejs img{vertical-align:middle;border-style:none}#conversejs svg{overflow:hidden;vertical-align:middle}#conversejs table{border-collapse:collapse}#conversejs caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}#conversejs th{text-align:inherit}#conversejs label{display:inline-block;margin-bottom:.5rem}#conversejs button{border-radius:0}#conversejs button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}#conversejs button,#conversejs input,#conversejs optgroup,#conversejs select,#conversejs textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}#conversejs button,#conversejs input{overflow:visible}#conversejs button,#conversejs select{text-transform:none}#conversejs select{word-wrap:normal}#conversejs [type=button],#conversejs [type=reset],#conversejs [type=submit],#conversejs button{-webkit-appearance:button}#conversejs [type=button]:not(:disabled),#conversejs [type=reset]:not(:disabled),#conversejs [type=submit]:not(:disabled),#conversejs button:not(:disabled){cursor:pointer}#conversejs [type=button]::-moz-focus-inner,#conversejs [type=reset]::-moz-focus-inner,#conversejs [type=submit]::-moz-focus-inner,#conversejs button::-moz-focus-inner{padding:0;border-style:none}#conversejs input[type=checkbox],#conversejs input[type=radio]{box-sizing:border-box;padding:0}#conversejs input[type=date],#conversejs input[type=datetime-local],#conversejs input[type=month],#conversejs input[type=time]{-webkit-appearance:listbox}#conversejs textarea{overflow:auto;resize:vertical}#conversejs fieldset{min-width:0;padding:0;margin:0;border:0}#conversejs legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}#conversejs progress{vertical-align:baseline}#conversejs [type=number]::-webkit-inner-spin-button,#conversejs [type=number]::-webkit-outer-spin-button{height:auto}#conversejs [type=search]{outline-offset:-2px;-webkit-appearance:none}#conversejs [type=search]::-webkit-search-decoration{-webkit-appearance:none}#conversejs ::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}#conversejs output{display:inline-block}#conversejs summary{display:list-item;cursor:pointer}#conversejs template{display:none}#conversejs [hidden]{display:none!important}#conversejs .h1,#conversejs .h2,#conversejs .h3,#conversejs .h4,#conversejs .h5,#conversejs .h6,#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}#conversejs .h1,#conversejs h1{font-size:2.5rem}#conversejs .h2,#conversejs h2{font-size:2rem}#conversejs .h3,#conversejs h3{font-size:1.75rem}#conversejs .h4,#conversejs h4{font-size:1.5rem}#conversejs .h5,#conversejs h5{font-size:1.25rem}#conversejs .h6,#conversejs h6{font-size:1rem}#conversejs .lead{font-size:1.25rem;font-weight:300}#conversejs .display-1{font-size:6rem;font-weight:300;line-height:1.2}#conversejs .display-2{font-size:5.5rem;font-weight:300;line-height:1.2}#conversejs .display-3{font-size:4.5rem;font-weight:300;line-height:1.2}#conversejs .display-4{font-size:3.5rem;font-weight:300;line-height:1.2}#conversejs hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}#conversejs .small,#conversejs small{font-size:80%;font-weight:400}#conversejs .mark,#conversejs mark{padding:.2em;background-color:#fcf8e3}#conversejs .list-unstyled{padding-left:0;list-style:none}#conversejs .list-inline{padding-left:0;list-style:none}#conversejs .list-inline-item{display:inline-block}#conversejs .list-inline-item:not(:last-child){margin-right:.5rem}#conversejs .initialism{font-size:90%;text-transform:uppercase}#conversejs .blockquote{margin-bottom:1rem;font-size:1.25rem}#conversejs .blockquote-footer{display:block;font-size:80%;color:#6c757d}#conversejs .blockquote-footer::before{content:"\2014\00A0"}#conversejs .img-fluid{max-width:100%;height:auto}#conversejs .img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}#conversejs .figure{display:inline-block}#conversejs .figure-img{margin-bottom:.5rem;line-height:1}#conversejs .figure-caption{font-size:90%;color:#6c757d}#conversejs .container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){#conversejs .container{max-width:540px}}@media (min-width:768px){#conversejs .container{max-width:720px}}@media (min-width:992px){#conversejs .container{max-width:960px}}@media (min-width:1200px){#conversejs .container{max-width:1140px}}#conversejs .container-fluid,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm,#conversejs .container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){#conversejs .container,#conversejs .container-sm{max-width:540px}}@media (min-width:768px){#conversejs .container,#conversejs .container-md,#conversejs .container-sm{max-width:720px}}@media (min-width:992px){#conversejs .container,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm{max-width:960px}}@media (min-width:1200px){#conversejs .container,#conversejs .container-lg,#conversejs .container-md,#conversejs .container-sm,#conversejs .container-xl{max-width:1140px}}#conversejs .row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}#conversejs .no-gutters{margin-right:0;margin-left:0}#conversejs .no-gutters>.col,#conversejs .no-gutters>[class*=col-]{padding-right:0;padding-left:0}#conversejs .col,#conversejs .col-1,#conversejs .col-10,#conversejs .col-11,#conversejs .col-12,#conversejs .col-2,#conversejs .col-3,#conversejs .col-4,#conversejs .col-5,#conversejs .col-6,#conversejs .col-7,#conversejs .col-8,#conversejs .col-9,#conversejs .col-auto,#conversejs .col-lg,#conversejs .col-lg-1,#conversejs .col-lg-10,#conversejs .col-lg-11,#conversejs .col-lg-12,#conversejs .col-lg-2,#conversejs .col-lg-3,#conversejs .col-lg-4,#conversejs .col-lg-5,#conversejs .col-lg-6,#conversejs .col-lg-7,#conversejs .col-lg-8,#conversejs .col-lg-9,#conversejs .col-lg-auto,#conversejs .col-md,#conversejs .col-md-1,#conversejs .col-md-10,#conversejs .col-md-11,#conversejs .col-md-12,#conversejs .col-md-2,#conversejs .col-md-3,#conversejs .col-md-4,#conversejs .col-md-5,#conversejs .col-md-6,#conversejs .col-md-7,#conversejs .col-md-8,#conversejs .col-md-9,#conversejs .col-md-auto,#conversejs .col-sm,#conversejs .col-sm-1,#conversejs .col-sm-10,#conversejs .col-sm-11,#conversejs .col-sm-12,#conversejs .col-sm-2,#conversejs .col-sm-3,#conversejs .col-sm-4,#conversejs .col-sm-5,#conversejs .col-sm-6,#conversejs .col-sm-7,#conversejs .col-sm-8,#conversejs .col-sm-9,#conversejs .col-sm-auto,#conversejs .col-xl,#conversejs .col-xl-1,#conversejs .col-xl-10,#conversejs .col-xl-11,#conversejs .col-xl-12,#conversejs .col-xl-2,#conversejs .col-xl-3,#conversejs .col-xl-4,#conversejs .col-xl-5,#conversejs .col-xl-6,#conversejs .col-xl-7,#conversejs .col-xl-8,#conversejs .col-xl-9,#conversejs .col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}#conversejs .col{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-3{flex:0 0 25%;max-width:25%}#conversejs .col-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-6{flex:0 0 50%;max-width:50%}#conversejs .col-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-9{flex:0 0 75%;max-width:75%}#conversejs .col-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-12{flex:0 0 100%;max-width:100%}#conversejs .order-first{order:-1}#conversejs .order-last{order:13}#conversejs .order-0{order:0}#conversejs .order-1{order:1}#conversejs .order-2{order:2}#conversejs .order-3{order:3}#conversejs .order-4{order:4}#conversejs .order-5{order:5}#conversejs .order-6{order:6}#conversejs .order-7{order:7}#conversejs .order-8{order:8}#conversejs .order-9{order:9}#conversejs .order-10{order:10}#conversejs .order-11{order:11}#conversejs .order-12{order:12}#conversejs .offset-1{margin-left:8.33333%}#conversejs .offset-2{margin-left:16.66667%}#conversejs .offset-3{margin-left:25%}#conversejs .offset-4{margin-left:33.33333%}#conversejs .offset-5{margin-left:41.66667%}#conversejs .offset-6{margin-left:50%}#conversejs .offset-7{margin-left:58.33333%}#conversejs .offset-8{margin-left:66.66667%}#conversejs .offset-9{margin-left:75%}#conversejs .offset-10{margin-left:83.33333%}#conversejs .offset-11{margin-left:91.66667%}@media (min-width:576px){#conversejs .col-sm{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-sm-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-sm-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-sm-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-sm-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-sm-3{flex:0 0 25%;max-width:25%}#conversejs .col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-sm-6{flex:0 0 50%;max-width:50%}#conversejs .col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-sm-9{flex:0 0 75%;max-width:75%}#conversejs .col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-sm-12{flex:0 0 100%;max-width:100%}#conversejs .order-sm-first{order:-1}#conversejs .order-sm-last{order:13}#conversejs .order-sm-0{order:0}#conversejs .order-sm-1{order:1}#conversejs .order-sm-2{order:2}#conversejs .order-sm-3{order:3}#conversejs .order-sm-4{order:4}#conversejs .order-sm-5{order:5}#conversejs .order-sm-6{order:6}#conversejs .order-sm-7{order:7}#conversejs .order-sm-8{order:8}#conversejs .order-sm-9{order:9}#conversejs .order-sm-10{order:10}#conversejs .order-sm-11{order:11}#conversejs .order-sm-12{order:12}#conversejs .offset-sm-0{margin-left:0}#conversejs .offset-sm-1{margin-left:8.33333%}#conversejs .offset-sm-2{margin-left:16.66667%}#conversejs .offset-sm-3{margin-left:25%}#conversejs .offset-sm-4{margin-left:33.33333%}#conversejs .offset-sm-5{margin-left:41.66667%}#conversejs .offset-sm-6{margin-left:50%}#conversejs .offset-sm-7{margin-left:58.33333%}#conversejs .offset-sm-8{margin-left:66.66667%}#conversejs .offset-sm-9{margin-left:75%}#conversejs .offset-sm-10{margin-left:83.33333%}#conversejs .offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){#conversejs .col-md{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-md-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-md-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-md-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-md-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-md-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-md-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-md-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-md-3{flex:0 0 25%;max-width:25%}#conversejs .col-md-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-md-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-md-6{flex:0 0 50%;max-width:50%}#conversejs .col-md-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-md-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-md-9{flex:0 0 75%;max-width:75%}#conversejs .col-md-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-md-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-md-12{flex:0 0 100%;max-width:100%}#conversejs .order-md-first{order:-1}#conversejs .order-md-last{order:13}#conversejs .order-md-0{order:0}#conversejs .order-md-1{order:1}#conversejs .order-md-2{order:2}#conversejs .order-md-3{order:3}#conversejs .order-md-4{order:4}#conversejs .order-md-5{order:5}#conversejs .order-md-6{order:6}#conversejs .order-md-7{order:7}#conversejs .order-md-8{order:8}#conversejs .order-md-9{order:9}#conversejs .order-md-10{order:10}#conversejs .order-md-11{order:11}#conversejs .order-md-12{order:12}#conversejs .offset-md-0{margin-left:0}#conversejs .offset-md-1{margin-left:8.33333%}#conversejs .offset-md-2{margin-left:16.66667%}#conversejs .offset-md-3{margin-left:25%}#conversejs .offset-md-4{margin-left:33.33333%}#conversejs .offset-md-5{margin-left:41.66667%}#conversejs .offset-md-6{margin-left:50%}#conversejs .offset-md-7{margin-left:58.33333%}#conversejs .offset-md-8{margin-left:66.66667%}#conversejs .offset-md-9{margin-left:75%}#conversejs .offset-md-10{margin-left:83.33333%}#conversejs .offset-md-11{margin-left:91.66667%}}@media (min-width:992px){#conversejs .col-lg{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-lg-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-lg-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-lg-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-lg-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-lg-3{flex:0 0 25%;max-width:25%}#conversejs .col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-lg-6{flex:0 0 50%;max-width:50%}#conversejs .col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-lg-9{flex:0 0 75%;max-width:75%}#conversejs .col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-lg-12{flex:0 0 100%;max-width:100%}#conversejs .order-lg-first{order:-1}#conversejs .order-lg-last{order:13}#conversejs .order-lg-0{order:0}#conversejs .order-lg-1{order:1}#conversejs .order-lg-2{order:2}#conversejs .order-lg-3{order:3}#conversejs .order-lg-4{order:4}#conversejs .order-lg-5{order:5}#conversejs .order-lg-6{order:6}#conversejs .order-lg-7{order:7}#conversejs .order-lg-8{order:8}#conversejs .order-lg-9{order:9}#conversejs .order-lg-10{order:10}#conversejs .order-lg-11{order:11}#conversejs .order-lg-12{order:12}#conversejs .offset-lg-0{margin-left:0}#conversejs .offset-lg-1{margin-left:8.33333%}#conversejs .offset-lg-2{margin-left:16.66667%}#conversejs .offset-lg-3{margin-left:25%}#conversejs .offset-lg-4{margin-left:33.33333%}#conversejs .offset-lg-5{margin-left:41.66667%}#conversejs .offset-lg-6{margin-left:50%}#conversejs .offset-lg-7{margin-left:58.33333%}#conversejs .offset-lg-8{margin-left:66.66667%}#conversejs .offset-lg-9{margin-left:75%}#conversejs .offset-lg-10{margin-left:83.33333%}#conversejs .offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){#conversejs .col-xl{flex-basis:0;flex-grow:1;max-width:100%}#conversejs .row-cols-xl-1>*{flex:0 0 100%;max-width:100%}#conversejs .row-cols-xl-2>*{flex:0 0 50%;max-width:50%}#conversejs .row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .row-cols-xl-4>*{flex:0 0 25%;max-width:25%}#conversejs .row-cols-xl-5>*{flex:0 0 20%;max-width:20%}#conversejs .row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}#conversejs .col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}#conversejs .col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}#conversejs .col-xl-3{flex:0 0 25%;max-width:25%}#conversejs .col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}#conversejs .col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}#conversejs .col-xl-6{flex:0 0 50%;max-width:50%}#conversejs .col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}#conversejs .col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}#conversejs .col-xl-9{flex:0 0 75%;max-width:75%}#conversejs .col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}#conversejs .col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}#conversejs .col-xl-12{flex:0 0 100%;max-width:100%}#conversejs .order-xl-first{order:-1}#conversejs .order-xl-last{order:13}#conversejs .order-xl-0{order:0}#conversejs .order-xl-1{order:1}#conversejs .order-xl-2{order:2}#conversejs .order-xl-3{order:3}#conversejs .order-xl-4{order:4}#conversejs .order-xl-5{order:5}#conversejs .order-xl-6{order:6}#conversejs .order-xl-7{order:7}#conversejs .order-xl-8{order:8}#conversejs .order-xl-9{order:9}#conversejs .order-xl-10{order:10}#conversejs .order-xl-11{order:11}#conversejs .order-xl-12{order:12}#conversejs .offset-xl-0{margin-left:0}#conversejs .offset-xl-1{margin-left:8.33333%}#conversejs .offset-xl-2{margin-left:16.66667%}#conversejs .offset-xl-3{margin-left:25%}#conversejs .offset-xl-4{margin-left:33.33333%}#conversejs .offset-xl-5{margin-left:41.66667%}#conversejs .offset-xl-6{margin-left:50%}#conversejs .offset-xl-7{margin-left:58.33333%}#conversejs .offset-xl-8{margin-left:66.66667%}#conversejs .offset-xl-9{margin-left:75%}#conversejs .offset-xl-10{margin-left:83.33333%}#conversejs .offset-xl-11{margin-left:91.66667%}}#conversejs .form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .form-control{transition:none}}#conversejs .form-control::-ms-expand{background-color:transparent;border:0}#conversejs .form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}#conversejs .form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .form-control::-moz-placeholder{color:#6c757d;opacity:1}#conversejs .form-control:-ms-input-placeholder{color:#6c757d;opacity:1}#conversejs .form-control::placeholder{color:#6c757d;opacity:1}#conversejs .form-control:disabled,#conversejs .form-control[readonly]{background-color:#e9ecef;opacity:1}#conversejs select.form-control:focus::-ms-value{color:#495057;background-color:#fff}#conversejs .form-control-file,#conversejs .form-control-range{display:block;width:100%}#conversejs .col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}#conversejs .col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}#conversejs .col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}#conversejs .form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}#conversejs .form-control-plaintext.form-control-lg,#conversejs .form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}#conversejs .form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs select.form-control[multiple],#conversejs select.form-control[size]{height:auto}#conversejs textarea.form-control{height:auto}#conversejs .form-group{margin-bottom:1rem}#conversejs .form-text{display:block;margin-top:.25rem}#conversejs .form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}#conversejs .form-row>.col,#conversejs .form-row>[class*=col-]{padding-right:5px;padding-left:5px}#conversejs .form-check{position:relative;display:block;padding-left:1.25rem}#conversejs .form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}#conversejs .form-check-input:disabled~.form-check-label,#conversejs .form-check-input[disabled]~.form-check-label{color:#6c757d}#conversejs .form-check-label{margin-bottom:0}#conversejs .form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}#conversejs .form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}#conversejs .valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}#conversejs .valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}#conversejs.is-valid~.valid-feedback,#conversejs.is-valid~.valid-tooltip,.was-validated #conversejs:valid~.valid-feedback,.was-validated #conversejs:valid~.valid-tooltip{display:block}#conversejs .form-control.is-valid,.was-validated #conversejs .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .form-control.is-valid:focus,.was-validated #conversejs .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs textarea.form-control.is-valid,.was-validated #conversejs textarea.form-control:valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}#conversejs .custom-select.is-valid,.was-validated #conversejs .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .custom-select.is-valid:focus,.was-validated #conversejs .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .form-check-input.is-valid~.form-check-label,.was-validated #conversejs .form-check-input:valid~.form-check-label{color:#28a745}#conversejs .form-check-input.is-valid~.valid-feedback,#conversejs .form-check-input.is-valid~.valid-tooltip,.was-validated #conversejs .form-check-input:valid~.valid-feedback,.was-validated #conversejs .form-check-input:valid~.valid-tooltip{display:block}#conversejs .custom-control-input.is-valid~.custom-control-label,.was-validated #conversejs .custom-control-input:valid~.custom-control-label{color:#28a745}#conversejs .custom-control-input.is-valid~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid~.custom-control-label::before{border-color:#28a745}#conversejs .custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:checked~.custom-control-label::before{border-color:#34ce57;background-color:#34ce57}#conversejs .custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .custom-control-input.is-valid:focus:not(:checked)~.custom-control-label::before,.was-validated #conversejs .custom-control-input:valid:focus:not(:checked)~.custom-control-label::before{border-color:#28a745}#conversejs .custom-file-input.is-valid~.custom-file-label,.was-validated #conversejs .custom-file-input:valid~.custom-file-label{border-color:#28a745}#conversejs .custom-file-input.is-valid:focus~.custom-file-label,.was-validated #conversejs .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}#conversejs .invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}#conversejs .invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}#conversejs.is-invalid~.invalid-feedback,#conversejs.is-invalid~.invalid-tooltip,.was-validated #conversejs:invalid~.invalid-feedback,.was-validated #conversejs:invalid~.invalid-tooltip{display:block}#conversejs .form-control.is-invalid,.was-validated #conversejs .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .form-control.is-invalid:focus,.was-validated #conversejs .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs textarea.form-control.is-invalid,.was-validated #conversejs textarea.form-control:invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}#conversejs .custom-select.is-invalid,.was-validated #conversejs .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px,url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}#conversejs .custom-select.is-invalid:focus,.was-validated #conversejs .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .form-check-input.is-invalid~.form-check-label,.was-validated #conversejs .form-check-input:invalid~.form-check-label{color:#dc3545}#conversejs .form-check-input.is-invalid~.invalid-feedback,#conversejs .form-check-input.is-invalid~.invalid-tooltip,.was-validated #conversejs .form-check-input:invalid~.invalid-feedback,.was-validated #conversejs .form-check-input:invalid~.invalid-tooltip{display:block}#conversejs .custom-control-input.is-invalid~.custom-control-label,.was-validated #conversejs .custom-control-input:invalid~.custom-control-label{color:#dc3545}#conversejs .custom-control-input.is-invalid~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid~.custom-control-label::before{border-color:#dc3545}#conversejs .custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:checked~.custom-control-label::before{border-color:#e4606d;background-color:#e4606d}#conversejs .custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label::before,.was-validated #conversejs .custom-control-input:invalid:focus:not(:checked)~.custom-control-label::before{border-color:#dc3545}#conversejs .custom-file-input.is-invalid~.custom-file-label,.was-validated #conversejs .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}#conversejs .custom-file-input.is-invalid:focus~.custom-file-label,.was-validated #conversejs .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}#conversejs .form-inline{display:flex;flex-flow:row wrap;align-items:center}#conversejs .form-inline .form-check{width:100%}@media (min-width:576px){#conversejs .form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}#conversejs .form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}#conversejs .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#conversejs .form-inline .form-control-plaintext{display:inline-block}#conversejs .form-inline .custom-select,#conversejs .form-inline .input-group{width:auto}#conversejs .form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}#conversejs .form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}#conversejs .form-inline .custom-control{align-items:center;justify-content:center}#conversejs .form-inline .custom-control-label{margin-bottom:0}}#conversejs .btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .btn{transition:none}}#conversejs .btn:hover{color:#212529;text-decoration:none}#conversejs .btn.focus,#conversejs .btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .btn.disabled,#conversejs .btn:disabled{opacity:.65}#conversejs a.btn.disabled,#conversejs fieldset:disabled a.btn{pointer-events:none}#conversejs .btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}#conversejs .btn-primary.focus,#conversejs .btn-primary:focus{color:#fff;background-color:#0069d9;border-color:#0062cc;box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}#conversejs .btn-primary.disabled,#conversejs .btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-primary:not(:disabled):not(.disabled).active,#conversejs .btn-primary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}#conversejs .btn-primary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-primary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}#conversejs .btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}#conversejs .btn-secondary.focus,#conversejs .btn-secondary:focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}#conversejs .btn-secondary.disabled,#conversejs .btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-secondary:not(:disabled):not(.disabled).active,#conversejs .btn-secondary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}#conversejs .btn-secondary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-secondary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}#conversejs .btn-success{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}#conversejs .btn-success.focus,#conversejs .btn-success:focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}#conversejs .btn-success.disabled,#conversejs .btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-success:not(:disabled):not(.disabled).active,#conversejs .btn-success:not(:disabled):not(.disabled):active,.show>#conversejs .btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}#conversejs .btn-success:not(:disabled):not(.disabled).active:focus,#conversejs .btn-success:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}#conversejs .btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}#conversejs .btn-info.focus,#conversejs .btn-info:focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}#conversejs .btn-info.disabled,#conversejs .btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-info:not(:disabled):not(.disabled).active,#conversejs .btn-info:not(:disabled):not(.disabled):active,.show>#conversejs .btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}#conversejs .btn-info:not(:disabled):not(.disabled).active:focus,#conversejs .btn-info:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}#conversejs .btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}#conversejs .btn-warning.focus,#conversejs .btn-warning:focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}#conversejs .btn-warning.disabled,#conversejs .btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-warning:not(:disabled):not(.disabled).active,#conversejs .btn-warning:not(:disabled):not(.disabled):active,.show>#conversejs .btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}#conversejs .btn-warning:not(:disabled):not(.disabled).active:focus,#conversejs .btn-warning:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}#conversejs .btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}#conversejs .btn-danger.focus,#conversejs .btn-danger:focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}#conversejs .btn-danger.disabled,#conversejs .btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-danger:not(:disabled):not(.disabled).active,#conversejs .btn-danger:not(:disabled):not(.disabled):active,.show>#conversejs .btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}#conversejs .btn-danger:not(:disabled):not(.disabled).active:focus,#conversejs .btn-danger:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}#conversejs .btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}#conversejs .btn-light.focus,#conversejs .btn-light:focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}#conversejs .btn-light.disabled,#conversejs .btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-light:not(:disabled):not(.disabled).active,#conversejs .btn-light:not(:disabled):not(.disabled):active,.show>#conversejs .btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}#conversejs .btn-light:not(:disabled):not(.disabled).active:focus,#conversejs .btn-light:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}#conversejs .btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}#conversejs .btn-dark.focus,#conversejs .btn-dark:focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}#conversejs .btn-dark.disabled,#conversejs .btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-dark:not(:disabled):not(.disabled).active,#conversejs .btn-dark:not(:disabled):not(.disabled):active,.show>#conversejs .btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}#conversejs .btn-dark:not(:disabled):not(.disabled).active:focus,#conversejs .btn-dark:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}#conversejs .btn-outline-primary{color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary.focus,#conversejs .btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .btn-outline-primary.disabled,#conversejs .btn-outline-primary:disabled{color:#007bff;background-color:transparent}#conversejs .btn-outline-primary:not(:disabled):not(.disabled).active,#conversejs .btn-outline-primary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .btn-outline-primary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .btn-outline-secondary{color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary.focus,#conversejs .btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .btn-outline-secondary.disabled,#conversejs .btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}#conversejs .btn-outline-secondary:not(:disabled):not(.disabled).active,#conversejs .btn-outline-secondary:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}#conversejs .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .btn-outline-success{color:#28a745;border-color:#28a745}#conversejs .btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-outline-success.focus,#conversejs .btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .btn-outline-success.disabled,#conversejs .btn-outline-success:disabled{color:#28a745;background-color:transparent}#conversejs .btn-outline-success:not(:disabled):not(.disabled).active,#conversejs .btn-outline-success:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}#conversejs .btn-outline-success:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .btn-outline-info{color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info.focus,#conversejs .btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .btn-outline-info.disabled,#conversejs .btn-outline-info:disabled{color:#17a2b8;background-color:transparent}#conversejs .btn-outline-info:not(:disabled):not(.disabled).active,#conversejs .btn-outline-info:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}#conversejs .btn-outline-info:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .btn-outline-warning{color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning.focus,#conversejs .btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .btn-outline-warning.disabled,#conversejs .btn-outline-warning:disabled{color:#ffc107;background-color:transparent}#conversejs .btn-outline-warning:not(:disabled):not(.disabled).active,#conversejs .btn-outline-warning:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}#conversejs .btn-outline-warning:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .btn-outline-danger{color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger.focus,#conversejs .btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .btn-outline-danger.disabled,#conversejs .btn-outline-danger:disabled{color:#dc3545;background-color:transparent}#conversejs .btn-outline-danger:not(:disabled):not(.disabled).active,#conversejs .btn-outline-danger:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}#conversejs .btn-outline-danger:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light.focus,#conversejs .btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .btn-outline-light.disabled,#conversejs .btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}#conversejs .btn-outline-light:not(:disabled):not(.disabled).active,#conversejs .btn-outline-light:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}#conversejs .btn-outline-light:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .btn-outline-dark{color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark.focus,#conversejs .btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .btn-outline-dark.disabled,#conversejs .btn-outline-dark:disabled{color:#343a40;background-color:transparent}#conversejs .btn-outline-dark:not(:disabled):not(.disabled).active,#conversejs .btn-outline-dark:not(:disabled):not(.disabled):active,.show>#conversejs .btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}#conversejs .btn-outline-dark:not(:disabled):not(.disabled).active:focus,#conversejs .btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>#conversejs .btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .btn-link{font-weight:400;color:#007bff;text-decoration:none}#conversejs .btn-link:hover{color:#0056b3;text-decoration:underline}#conversejs .btn-link.focus,#conversejs .btn-link:focus{text-decoration:underline;box-shadow:none}#conversejs .btn-link.disabled,#conversejs .btn-link:disabled{color:#6c757d;pointer-events:none}#conversejs .btn-group-lg>.btn,#conversejs .btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs .btn-group-sm>.btn,#conversejs .btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .btn-block{display:block;width:100%}#conversejs .btn-block+.btn-block{margin-top:.5rem}#conversejs input[type=button].btn-block,#conversejs input[type=reset].btn-block,#conversejs input[type=submit].btn-block{width:100%}#conversejs .fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){#conversejs .fade{transition:none}}#conversejs .fade:not(.show){opacity:0}#conversejs .collapse:not(.show){display:none}#conversejs .collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){#conversejs .collapsing{transition:none}}#conversejs .dropdown,#conversejs .dropleft,#conversejs .dropright,#conversejs .dropup{position:relative}#conversejs .dropdown-toggle{white-space:nowrap}#conversejs .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}#conversejs .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}#conversejs .dropdown-menu-left{right:auto;left:0}#conversejs .dropdown-menu-right{right:0;left:auto}@media (min-width:576px){#conversejs .dropdown-menu-sm-left{right:auto;left:0}#conversejs .dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:768px){#conversejs .dropdown-menu-md-left{right:auto;left:0}#conversejs .dropdown-menu-md-right{right:0;left:auto}}@media (min-width:992px){#conversejs .dropdown-menu-lg-left{right:auto;left:0}#conversejs .dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){#conversejs .dropdown-menu-xl-left{right:auto;left:0}#conversejs .dropdown-menu-xl-right{right:0;left:auto}}#conversejs .dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}#conversejs .dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}#conversejs .dropup .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}#conversejs .dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}#conversejs .dropright .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropright .dropdown-toggle::after{vertical-align:0}#conversejs .dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}#conversejs .dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}#conversejs .dropleft .dropdown-toggle::after{display:none}#conversejs .dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}#conversejs .dropleft .dropdown-toggle:empty::after{margin-left:0}#conversejs .dropleft .dropdown-toggle::before{vertical-align:0}#conversejs .dropdown-menu[x-placement^=bottom],#conversejs .dropdown-menu[x-placement^=left],#conversejs .dropdown-menu[x-placement^=right],#conversejs .dropdown-menu[x-placement^=top]{right:auto;bottom:auto}#conversejs .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}#conversejs .dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}#conversejs .dropdown-item:focus,#conversejs .dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}#conversejs .dropdown-item.active,#conversejs .dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}#conversejs .dropdown-item.disabled,#conversejs .dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}#conversejs .dropdown-menu.show{display:block}#conversejs .dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}#conversejs .dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}#conversejs .btn-group,#conversejs .btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}#conversejs .btn-group-vertical>.btn,#conversejs .btn-group>.btn{position:relative;flex:1 1 auto}#conversejs .btn-group-vertical>.btn:hover,#conversejs .btn-group>.btn:hover{z-index:1}#conversejs .btn-group-vertical>.btn.active,#conversejs .btn-group-vertical>.btn:active,#conversejs .btn-group-vertical>.btn:focus,#conversejs .btn-group>.btn.active,#conversejs .btn-group>.btn:active,#conversejs .btn-group>.btn:focus{z-index:1}#conversejs .btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}#conversejs .btn-toolbar .input-group{width:auto}#conversejs .btn-group>.btn-group:not(:first-child),#conversejs .btn-group>.btn:not(:first-child){margin-left:-1px}#conversejs .btn-group>.btn-group:not(:last-child)>.btn,#conversejs .btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .btn-group>.btn-group:not(:first-child)>.btn,#conversejs .btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}#conversejs .dropdown-toggle-split::after,.dropright #conversejs .dropdown-toggle-split::after,.dropup #conversejs .dropdown-toggle-split::after{margin-left:0}.dropleft #conversejs .dropdown-toggle-split::before{margin-right:0}#conversejs .btn-group-sm>.btn+.dropdown-toggle-split,#conversejs .btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}#conversejs .btn-group-lg>.btn+.dropdown-toggle-split,#conversejs .btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}#conversejs .btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}#conversejs .btn-group-vertical>.btn,#conversejs .btn-group-vertical>.btn-group{width:100%}#conversejs .btn-group-vertical>.btn-group:not(:first-child),#conversejs .btn-group-vertical>.btn:not(:first-child){margin-top:-1px}#conversejs .btn-group-vertical>.btn-group:not(:last-child)>.btn,#conversejs .btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}#conversejs .btn-group-vertical>.btn-group:not(:first-child)>.btn,#conversejs .btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}#conversejs .btn-group-toggle>.btn,#conversejs .btn-group-toggle>.btn-group>.btn{margin-bottom:0}#conversejs .btn-group-toggle>.btn input[type=checkbox],#conversejs .btn-group-toggle>.btn input[type=radio],#conversejs .btn-group-toggle>.btn-group>.btn input[type=checkbox],#conversejs .btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#conversejs .input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}#conversejs .input-group>.custom-file,#conversejs .input-group>.custom-select,#conversejs .input-group>.form-control,#conversejs .input-group>.form-control-plaintext{position:relative;flex:1 1 0%;min-width:0;margin-bottom:0}#conversejs .input-group>.custom-file+.custom-file,#conversejs .input-group>.custom-file+.custom-select,#conversejs .input-group>.custom-file+.form-control,#conversejs .input-group>.custom-select+.custom-file,#conversejs .input-group>.custom-select+.custom-select,#conversejs .input-group>.custom-select+.form-control,#conversejs .input-group>.form-control+.custom-file,#conversejs .input-group>.form-control+.custom-select,#conversejs .input-group>.form-control+.form-control,#conversejs .input-group>.form-control-plaintext+.custom-file,#conversejs .input-group>.form-control-plaintext+.custom-select,#conversejs .input-group>.form-control-plaintext+.form-control{margin-left:-1px}#conversejs .input-group>.custom-file .custom-file-input:focus~.custom-file-label,#conversejs .input-group>.custom-select:focus,#conversejs .input-group>.form-control:focus{z-index:3}#conversejs .input-group>.custom-file .custom-file-input:focus{z-index:4}#conversejs .input-group>.custom-select:not(:last-child),#conversejs .input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.custom-select:not(:first-child),#conversejs .input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .input-group>.custom-file{display:flex;align-items:center}#conversejs .input-group>.custom-file:not(:last-child) .custom-file-label,#conversejs .input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .input-group-append,#conversejs .input-group-prepend{display:flex}#conversejs .input-group-append .btn,#conversejs .input-group-prepend .btn{position:relative;z-index:2}#conversejs .input-group-append .btn:focus,#conversejs .input-group-prepend .btn:focus{z-index:3}#conversejs .input-group-append .btn+.btn,#conversejs .input-group-append .btn+.input-group-text,#conversejs .input-group-append .input-group-text+.btn,#conversejs .input-group-append .input-group-text+.input-group-text,#conversejs .input-group-prepend .btn+.btn,#conversejs .input-group-prepend .btn+.input-group-text,#conversejs .input-group-prepend .input-group-text+.btn,#conversejs .input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}#conversejs .input-group-prepend{margin-right:-1px}#conversejs .input-group-append{margin-left:-1px}#conversejs .input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}#conversejs .input-group-text input[type=checkbox],#conversejs .input-group-text input[type=radio]{margin-top:0}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-lg>.form-control,#conversejs .input-group-lg>.input-group-append>.btn,#conversejs .input-group-lg>.input-group-append>.input-group-text,#conversejs .input-group-lg>.input-group-prepend>.btn,#conversejs .input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}#conversejs .input-group-sm>.custom-select,#conversejs .input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}#conversejs .input-group-sm>.custom-select,#conversejs .input-group-sm>.form-control,#conversejs .input-group-sm>.input-group-append>.btn,#conversejs .input-group-sm>.input-group-append>.input-group-text,#conversejs .input-group-sm>.input-group-prepend>.btn,#conversejs .input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}#conversejs .input-group-lg>.custom-select,#conversejs .input-group-sm>.custom-select{padding-right:1.75rem}#conversejs .input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),#conversejs .input-group>.input-group-append:last-child>.input-group-text:not(:last-child),#conversejs .input-group>.input-group-append:not(:last-child)>.btn,#conversejs .input-group>.input-group-append:not(:last-child)>.input-group-text,#conversejs .input-group>.input-group-prepend>.btn,#conversejs .input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}#conversejs .input-group>.input-group-append>.btn,#conversejs .input-group>.input-group-append>.input-group-text,#conversejs .input-group>.input-group-prepend:first-child>.btn:not(:first-child),#conversejs .input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),#conversejs .input-group>.input-group-prepend:not(:first-child)>.btn,#conversejs .input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}#conversejs .custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}#conversejs .custom-control-inline{display:inline-flex;margin-right:1rem}#conversejs .custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}#conversejs .custom-control-input:checked~.custom-control-label::before{color:#fff;border-color:#007bff;background-color:#007bff}#conversejs .custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-control-input:focus:not(:checked)~.custom-control-label::before{border-color:#80bdff}#conversejs .custom-control-input:not(:disabled):active~.custom-control-label::before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}#conversejs .custom-control-input:disabled~.custom-control-label,#conversejs .custom-control-input[disabled]~.custom-control-label{color:#6c757d}#conversejs .custom-control-input:disabled~.custom-control-label::before,#conversejs .custom-control-input[disabled]~.custom-control-label::before{background-color:#e9ecef}#conversejs .custom-control-label{position:relative;margin-bottom:0;vertical-align:top}#conversejs .custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";background-color:#fff;border:#adb5bd solid 1px}#conversejs .custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background:no-repeat 50%/50% 50%}#conversejs .custom-checkbox .custom-control-label::before{border-radius:.25rem}#conversejs .custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e")}#conversejs .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{border-color:#007bff;background-color:#007bff}#conversejs .custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e")}#conversejs .custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-radio .custom-control-label::before{border-radius:50%}#conversejs .custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}#conversejs .custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-switch{padding-left:2.25rem}#conversejs .custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}#conversejs .custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .custom-switch .custom-control-label::after{transition:none}}#conversejs .custom-switch .custom-control-input:checked~.custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}#conversejs .custom-switch .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}#conversejs .custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs .custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-select:focus::-ms-value{color:#495057;background-color:#fff}#conversejs .custom-select[multiple],#conversejs .custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}#conversejs .custom-select:disabled{color:#6c757d;background-color:#e9ecef}#conversejs .custom-select::-ms-expand{display:none}#conversejs .custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}#conversejs .custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}#conversejs .custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}#conversejs .custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}#conversejs .custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}#conversejs .custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-file-input:disabled~.custom-file-label,#conversejs .custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}#conversejs .custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}#conversejs .custom-file-input~.custom-file-label[data-browse]::after{content:attr(data-browse)}#conversejs .custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}#conversejs .custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}#conversejs .custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs .custom-range:focus{outline:0}#conversejs .custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}#conversejs .custom-range::-moz-focus-outer{border:0}#conversejs .custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}#conversejs .custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}#conversejs .custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-moz-range-thumb{-moz-transition:none;transition:none}}#conversejs .custom-range::-moz-range-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}#conversejs .custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;-ms-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){#conversejs .custom-range::-ms-thumb{-ms-transition:none;transition:none}}#conversejs .custom-range::-ms-thumb:active{background-color:#b3d7ff}#conversejs .custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}#conversejs .custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}#conversejs .custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}#conversejs .custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}#conversejs .custom-range:disabled::-webkit-slider-runnable-track{cursor:default}#conversejs .custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}#conversejs .custom-range:disabled::-moz-range-track{cursor:default}#conversejs .custom-range:disabled::-ms-thumb{background-color:#adb5bd}#conversejs .custom-control-label::before,#conversejs .custom-file-label,#conversejs .custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .custom-control-label::before,#conversejs .custom-file-label,#conversejs .custom-select{transition:none}}#conversejs .nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}#conversejs .nav-link{display:block;padding:.5rem 1rem}#conversejs .nav-link:focus,#conversejs .nav-link:hover{text-decoration:none}#conversejs .nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}#conversejs .nav-tabs{border-bottom:1px solid #dee2e6}#conversejs .nav-tabs .nav-item{margin-bottom:-1px}#conversejs .nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}#conversejs .nav-tabs .nav-link:focus,#conversejs .nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}#conversejs .nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}#conversejs .nav-tabs .nav-item.show .nav-link,#conversejs .nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}#conversejs .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#conversejs .nav-pills .nav-link{border-radius:.25rem}#conversejs .nav-pills .nav-link.active,#conversejs .nav-pills .show>.nav-link{color:#fff;background-color:#007bff}#conversejs .nav-fill .nav-item{flex:1 1 auto;text-align:center}#conversejs .nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}#conversejs .tab-content>.tab-pane{display:none}#conversejs .tab-content>.active{display:block}#conversejs .badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){#conversejs .badge{transition:none}}a#conversejs .badge:focus,a#conversejs .badge:hover{text-decoration:none}#conversejs .badge:empty{display:none}#conversejs .btn .badge{position:relative;top:-1px}#conversejs .badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}#conversejs .badge-primary{color:#fff;background-color:#007bff}a#conversejs .badge-primary:focus,a#conversejs .badge-primary:hover{color:#fff;background-color:#0062cc}a#conversejs .badge-primary.focus,a#conversejs .badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}#conversejs .badge-secondary{color:#fff;background-color:#6c757d}a#conversejs .badge-secondary:focus,a#conversejs .badge-secondary:hover{color:#fff;background-color:#545b62}a#conversejs .badge-secondary.focus,a#conversejs .badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}#conversejs .badge-success{color:#fff;background-color:#28a745}a#conversejs .badge-success:focus,a#conversejs .badge-success:hover{color:#fff;background-color:#1e7e34}a#conversejs .badge-success.focus,a#conversejs .badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}#conversejs .badge-info{color:#fff;background-color:#17a2b8}a#conversejs .badge-info:focus,a#conversejs .badge-info:hover{color:#fff;background-color:#117a8b}a#conversejs .badge-info.focus,a#conversejs .badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}#conversejs .badge-warning{color:#212529;background-color:#ffc107}a#conversejs .badge-warning:focus,a#conversejs .badge-warning:hover{color:#212529;background-color:#d39e00}a#conversejs .badge-warning.focus,a#conversejs .badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}#conversejs .badge-danger{color:#fff;background-color:#dc3545}a#conversejs .badge-danger:focus,a#conversejs .badge-danger:hover{color:#fff;background-color:#bd2130}a#conversejs .badge-danger.focus,a#conversejs .badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}#conversejs .badge-light{color:#212529;background-color:#f8f9fa}a#conversejs .badge-light:focus,a#conversejs .badge-light:hover{color:#212529;background-color:#dae0e5}a#conversejs .badge-light.focus,a#conversejs .badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}#conversejs .badge-dark{color:#fff;background-color:#343a40}a#conversejs .badge-dark:focus,a#conversejs .badge-dark:hover{color:#fff;background-color:#1d2124}a#conversejs .badge-dark.focus,a#conversejs .badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}#conversejs .alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}#conversejs .alert-heading{color:inherit}#conversejs .alert-link{font-weight:700}#conversejs .alert-dismissible{padding-right:4rem}#conversejs .alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}#conversejs .alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}#conversejs .alert-primary hr{border-top-color:#9fcdff}#conversejs .alert-primary .alert-link{color:#002752}#conversejs .alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}#conversejs .alert-secondary hr{border-top-color:#c8cbcf}#conversejs .alert-secondary .alert-link{color:#202326}#conversejs .alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}#conversejs .alert-success hr{border-top-color:#b1dfbb}#conversejs .alert-success .alert-link{color:#0b2e13}#conversejs .alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}#conversejs .alert-info hr{border-top-color:#abdde5}#conversejs .alert-info .alert-link{color:#062c33}#conversejs .alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}#conversejs .alert-warning hr{border-top-color:#ffe8a1}#conversejs .alert-warning .alert-link{color:#533f03}#conversejs .alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}#conversejs .alert-danger hr{border-top-color:#f1b0b7}#conversejs .alert-danger .alert-link{color:#491217}#conversejs .alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}#conversejs .alert-light hr{border-top-color:#ececf6}#conversejs .alert-light .alert-link{color:#686868}#conversejs .alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}#conversejs .alert-dark hr{border-top-color:#b9bbbe}#conversejs .alert-dark .alert-link{color:#040505}#conversejs .media{display:flex;align-items:flex-start}#conversejs .media-body{flex:1}#conversejs .list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0}#conversejs .list-group-item-action{width:100%;color:#495057;text-align:inherit}#conversejs .list-group-item-action:focus,#conversejs .list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}#conversejs .list-group-item-action:active{color:#212529;background-color:#e9ecef}#conversejs .list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}#conversejs .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}#conversejs .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}#conversejs .list-group-item.disabled,#conversejs .list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}#conversejs .list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}#conversejs .list-group-item+#conversejs .list-group-item{border-top-width:0}#conversejs .list-group-item+#conversejs .list-group-item.active{margin-top:-1px;border-top-width:1px}#conversejs .list-group-horizontal{flex-direction:row}#conversejs .list-group-horizontal .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){#conversejs .list-group-horizontal-sm{flex-direction:row}#conversejs .list-group-horizontal-sm .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-sm .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-sm .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-sm .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-sm .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){#conversejs .list-group-horizontal-md{flex-direction:row}#conversejs .list-group-horizontal-md .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-md .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-md .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-md .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-md .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){#conversejs .list-group-horizontal-lg{flex-direction:row}#conversejs .list-group-horizontal-lg .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-lg .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-lg .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-lg .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-lg .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){#conversejs .list-group-horizontal-xl{flex-direction:row}#conversejs .list-group-horizontal-xl .list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}#conversejs .list-group-horizontal-xl .list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}#conversejs .list-group-horizontal-xl .list-group-item.active{margin-top:0}#conversejs .list-group-horizontal-xl .list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}#conversejs .list-group-horizontal-xl .list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}#conversejs .list-group-flush .list-group-item{border-right-width:0;border-left-width:0;border-radius:0}#conversejs .list-group-flush .list-group-item:first-child{border-top-width:0}#conversejs .list-group-flush:last-child .list-group-item:last-child{border-bottom-width:0}#conversejs .list-group-item-primary{color:#004085;background-color:#b8daff}#conversejs .list-group-item-primary.list-group-item-action:focus,#conversejs .list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}#conversejs .list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}#conversejs .list-group-item-secondary{color:#383d41;background-color:#d6d8db}#conversejs .list-group-item-secondary.list-group-item-action:focus,#conversejs .list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}#conversejs .list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}#conversejs .list-group-item-success{color:#155724;background-color:#c3e6cb}#conversejs .list-group-item-success.list-group-item-action:focus,#conversejs .list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}#conversejs .list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}#conversejs .list-group-item-info{color:#0c5460;background-color:#bee5eb}#conversejs .list-group-item-info.list-group-item-action:focus,#conversejs .list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}#conversejs .list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}#conversejs .list-group-item-warning{color:#856404;background-color:#ffeeba}#conversejs .list-group-item-warning.list-group-item-action:focus,#conversejs .list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}#conversejs .list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}#conversejs .list-group-item-danger{color:#721c24;background-color:#f5c6cb}#conversejs .list-group-item-danger.list-group-item-action:focus,#conversejs .list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}#conversejs .list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}#conversejs .list-group-item-light{color:#818182;background-color:#fdfdfe}#conversejs .list-group-item-light.list-group-item-action:focus,#conversejs .list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}#conversejs .list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}#conversejs .list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}#conversejs .list-group-item-dark.list-group-item-action:focus,#conversejs .list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}#conversejs .list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}#conversejs .close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}#conversejs .close:hover{color:#000;text-decoration:none}#conversejs .close:not(:disabled):not(.disabled):focus,#conversejs .close:not(:disabled):not(.disabled):hover{opacity:.75}#conversejs button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#conversejs a.close.disabled{pointer-events:none}#conversejs .modal-open{overflow:hidden}#conversejs .modal-open .modal{overflow-x:hidden;overflow-y:auto}#conversejs .modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}#conversejs .modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade #conversejs .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade #conversejs .modal-dialog{transition:none}}.modal.show #conversejs .modal-dialog{transform:none}.modal.modal-static #conversejs .modal-dialog{transform:scale(1.02)}#conversejs .modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}#conversejs .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}#conversejs .modal-dialog-scrollable .modal-footer,#conversejs .modal-dialog-scrollable .modal-header{flex-shrink:0}#conversejs .modal-dialog-scrollable .modal-body{overflow-y:auto}#conversejs .modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}#conversejs .modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);content:""}#conversejs .modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}#conversejs .modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}#conversejs .modal-dialog-centered.modal-dialog-scrollable::before{content:none}#conversejs .modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}#conversejs .modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}#conversejs .modal-backdrop.fade{opacity:0}#conversejs .modal-backdrop.show{opacity:.5}#conversejs .modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}#conversejs .modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}#conversejs .modal-title{margin-bottom:0;line-height:1.5}#conversejs .modal-body{position:relative;flex:1 1 auto;padding:1rem}#conversejs .modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}#conversejs .modal-footer>*{margin:.25rem}#conversejs .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){#conversejs .modal-dialog{max-width:500px;margin:1.75rem auto}#conversejs .modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}#conversejs .modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}#conversejs .modal-dialog-centered{min-height:calc(100% - 3.5rem)}#conversejs .modal-dialog-centered::before{height:calc(100vh - 3.5rem)}#conversejs .modal-sm{max-width:300px}}@media (min-width:992px){#conversejs .modal-lg,#conversejs .modal-xl{max-width:800px}}@media (min-width:1200px){#conversejs .modal-xl{max-width:1140px}}#conversejs .tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}#conversejs .tooltip.show{opacity:.9}#conversejs .tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}#conversejs .tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}#conversejs .bs-tooltip-auto[x-placement^=top],#conversejs .bs-tooltip-top{padding:.4rem 0}#conversejs .bs-tooltip-auto[x-placement^=top] .arrow,#conversejs .bs-tooltip-top .arrow{bottom:0}#conversejs .bs-tooltip-auto[x-placement^=top] .arrow::before,#conversejs .bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}#conversejs .bs-tooltip-auto[x-placement^=right],#conversejs .bs-tooltip-right{padding:0 .4rem}#conversejs .bs-tooltip-auto[x-placement^=right] .arrow,#conversejs .bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}#conversejs .bs-tooltip-auto[x-placement^=right] .arrow::before,#conversejs .bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}#conversejs .bs-tooltip-auto[x-placement^=bottom],#conversejs .bs-tooltip-bottom{padding:.4rem 0}#conversejs .bs-tooltip-auto[x-placement^=bottom] .arrow,#conversejs .bs-tooltip-bottom .arrow{top:0}#conversejs .bs-tooltip-auto[x-placement^=bottom] .arrow::before,#conversejs .bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}#conversejs .bs-tooltip-auto[x-placement^=left],#conversejs .bs-tooltip-left{padding:0 .4rem}#conversejs .bs-tooltip-auto[x-placement^=left] .arrow,#conversejs .bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}#conversejs .bs-tooltip-auto[x-placement^=left] .arrow::before,#conversejs .bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}#conversejs .tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}#conversejs .popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}#conversejs .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}#conversejs .popover .arrow::after,#conversejs .popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}#conversejs .bs-popover-auto[x-placement^=top],#conversejs .bs-popover-top{margin-bottom:.5rem}#conversejs .bs-popover-auto[x-placement^=top]>.arrow,#conversejs .bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}#conversejs .bs-popover-auto[x-placement^=top]>.arrow::before,#conversejs .bs-popover-top>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=top]>.arrow::after,#conversejs .bs-popover-top>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}#conversejs .bs-popover-auto[x-placement^=right],#conversejs .bs-popover-right{margin-left:.5rem}#conversejs .bs-popover-auto[x-placement^=right]>.arrow,#conversejs .bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}#conversejs .bs-popover-auto[x-placement^=right]>.arrow::before,#conversejs .bs-popover-right>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=right]>.arrow::after,#conversejs .bs-popover-right>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}#conversejs .bs-popover-auto[x-placement^=bottom],#conversejs .bs-popover-bottom{margin-top:.5rem}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow,#conversejs .bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow::before,#conversejs .bs-popover-bottom>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=bottom]>.arrow::after,#conversejs .bs-popover-bottom>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}#conversejs .bs-popover-auto[x-placement^=bottom] .popover-header::before,#conversejs .bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}#conversejs .bs-popover-auto[x-placement^=left],#conversejs .bs-popover-left{margin-right:.5rem}#conversejs .bs-popover-auto[x-placement^=left]>.arrow,#conversejs .bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}#conversejs .bs-popover-auto[x-placement^=left]>.arrow::before,#conversejs .bs-popover-left>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}#conversejs .bs-popover-auto[x-placement^=left]>.arrow::after,#conversejs .bs-popover-left>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}#conversejs .popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}#conversejs .popover-header:empty{display:none}#conversejs .popover-body{padding:.5rem .75rem;color:#212529}#conversejs .align-baseline{vertical-align:baseline!important}#conversejs .align-top{vertical-align:top!important}#conversejs .align-middle{vertical-align:middle!important}#conversejs .align-bottom{vertical-align:bottom!important}#conversejs .align-text-bottom{vertical-align:text-bottom!important}#conversejs .align-text-top{vertical-align:text-top!important}#conversejs .bg-primary{background-color:#007bff!important}#conversejs a.bg-primary:focus,#conversejs a.bg-primary:hover,#conversejs button.bg-primary:focus,#conversejs button.bg-primary:hover{background-color:#0062cc!important}#conversejs .bg-secondary{background-color:#6c757d!important}#conversejs a.bg-secondary:focus,#conversejs a.bg-secondary:hover,#conversejs button.bg-secondary:focus,#conversejs button.bg-secondary:hover{background-color:#545b62!important}#conversejs .bg-success{background-color:#28a745!important}#conversejs a.bg-success:focus,#conversejs a.bg-success:hover,#conversejs button.bg-success:focus,#conversejs button.bg-success:hover{background-color:#1e7e34!important}#conversejs .bg-info{background-color:#17a2b8!important}#conversejs a.bg-info:focus,#conversejs a.bg-info:hover,#conversejs button.bg-info:focus,#conversejs button.bg-info:hover{background-color:#117a8b!important}#conversejs .bg-warning{background-color:#ffc107!important}#conversejs a.bg-warning:focus,#conversejs a.bg-warning:hover,#conversejs button.bg-warning:focus,#conversejs button.bg-warning:hover{background-color:#d39e00!important}#conversejs .bg-danger{background-color:#dc3545!important}#conversejs a.bg-danger:focus,#conversejs a.bg-danger:hover,#conversejs button.bg-danger:focus,#conversejs button.bg-danger:hover{background-color:#bd2130!important}#conversejs .bg-light{background-color:#f8f9fa!important}#conversejs a.bg-light:focus,#conversejs a.bg-light:hover,#conversejs button.bg-light:focus,#conversejs button.bg-light:hover{background-color:#dae0e5!important}#conversejs .bg-dark{background-color:#343a40!important}#conversejs a.bg-dark:focus,#conversejs a.bg-dark:hover,#conversejs button.bg-dark:focus,#conversejs button.bg-dark:hover{background-color:#1d2124!important}#conversejs .bg-white{background-color:#fff!important}#conversejs .bg-transparent{background-color:transparent!important}#conversejs .border{border:1px solid #dee2e6!important}#conversejs .border-top{border-top:1px solid #dee2e6!important}#conversejs .border-right{border-right:1px solid #dee2e6!important}#conversejs .border-bottom{border-bottom:1px solid #dee2e6!important}#conversejs .border-left{border-left:1px solid #dee2e6!important}#conversejs .border-0{border:0!important}#conversejs .border-top-0{border-top:0!important}#conversejs .border-right-0{border-right:0!important}#conversejs .border-bottom-0{border-bottom:0!important}#conversejs .border-left-0{border-left:0!important}#conversejs .border-primary{border-color:#007bff!important}#conversejs .border-secondary{border-color:#6c757d!important}#conversejs .border-success{border-color:#28a745!important}#conversejs .border-info{border-color:#17a2b8!important}#conversejs .border-warning{border-color:#ffc107!important}#conversejs .border-danger{border-color:#dc3545!important}#conversejs .border-light{border-color:#f8f9fa!important}#conversejs .border-dark{border-color:#343a40!important}#conversejs .border-white{border-color:#fff!important}#conversejs .rounded-sm{border-radius:.2rem!important}#conversejs .rounded{border-radius:.25rem!important}#conversejs .rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}#conversejs .rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}#conversejs .rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}#conversejs .rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}#conversejs .rounded-lg{border-radius:.3rem!important}#conversejs .rounded-circle{border-radius:50%!important}#conversejs .rounded-pill{border-radius:50rem!important}#conversejs .rounded-0{border-radius:0!important}#conversejs .clearfix::after{display:block;clear:both;content:""}#conversejs .d-none{display:none!important}#conversejs .d-inline{display:inline!important}#conversejs .d-inline-block{display:inline-block!important}#conversejs .d-block{display:block!important}#conversejs .d-table{display:table!important}#conversejs .d-table-row{display:table-row!important}#conversejs .d-table-cell{display:table-cell!important}#conversejs .d-flex{display:flex!important}#conversejs .d-inline-flex{display:inline-flex!important}@media (min-width:576px){#conversejs .d-sm-none{display:none!important}#conversejs .d-sm-inline{display:inline!important}#conversejs .d-sm-inline-block{display:inline-block!important}#conversejs .d-sm-block{display:block!important}#conversejs .d-sm-table{display:table!important}#conversejs .d-sm-table-row{display:table-row!important}#conversejs .d-sm-table-cell{display:table-cell!important}#conversejs .d-sm-flex{display:flex!important}#conversejs .d-sm-inline-flex{display:inline-flex!important}}@media (min-width:768px){#conversejs .d-md-none{display:none!important}#conversejs .d-md-inline{display:inline!important}#conversejs .d-md-inline-block{display:inline-block!important}#conversejs .d-md-block{display:block!important}#conversejs .d-md-table{display:table!important}#conversejs .d-md-table-row{display:table-row!important}#conversejs .d-md-table-cell{display:table-cell!important}#conversejs .d-md-flex{display:flex!important}#conversejs .d-md-inline-flex{display:inline-flex!important}}@media (min-width:992px){#conversejs .d-lg-none{display:none!important}#conversejs .d-lg-inline{display:inline!important}#conversejs .d-lg-inline-block{display:inline-block!important}#conversejs .d-lg-block{display:block!important}#conversejs .d-lg-table{display:table!important}#conversejs .d-lg-table-row{display:table-row!important}#conversejs .d-lg-table-cell{display:table-cell!important}#conversejs .d-lg-flex{display:flex!important}#conversejs .d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){#conversejs .d-xl-none{display:none!important}#conversejs .d-xl-inline{display:inline!important}#conversejs .d-xl-inline-block{display:inline-block!important}#conversejs .d-xl-block{display:block!important}#conversejs .d-xl-table{display:table!important}#conversejs .d-xl-table-row{display:table-row!important}#conversejs .d-xl-table-cell{display:table-cell!important}#conversejs .d-xl-flex{display:flex!important}#conversejs .d-xl-inline-flex{display:inline-flex!important}}@media print{#conversejs .d-print-none{display:none!important}#conversejs .d-print-inline{display:inline!important}#conversejs .d-print-inline-block{display:inline-block!important}#conversejs .d-print-block{display:block!important}#conversejs .d-print-table{display:table!important}#conversejs .d-print-table-row{display:table-row!important}#conversejs .d-print-table-cell{display:table-cell!important}#conversejs .d-print-flex{display:flex!important}#conversejs .d-print-inline-flex{display:inline-flex!important}}#conversejs .embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}#conversejs .embed-responsive::before{display:block;content:""}#conversejs .embed-responsive .embed-responsive-item,#conversejs .embed-responsive embed,#conversejs .embed-responsive iframe,#conversejs .embed-responsive object,#conversejs .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#conversejs .embed-responsive-21by9::before{padding-top:42.85714%}#conversejs .embed-responsive-16by9::before{padding-top:56.25%}#conversejs .embed-responsive-4by3::before{padding-top:75%}#conversejs .embed-responsive-1by1::before{padding-top:100%}#conversejs .flex-row{flex-direction:row!important}#conversejs .flex-column{flex-direction:column!important}#conversejs .flex-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-wrap{flex-wrap:wrap!important}#conversejs .flex-nowrap{flex-wrap:nowrap!important}#conversejs .flex-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-fill{flex:1 1 auto!important}#conversejs .flex-grow-0{flex-grow:0!important}#conversejs .flex-grow-1{flex-grow:1!important}#conversejs .flex-shrink-0{flex-shrink:0!important}#conversejs .flex-shrink-1{flex-shrink:1!important}#conversejs .justify-content-start{justify-content:flex-start!important}#conversejs .justify-content-end{justify-content:flex-end!important}#conversejs .justify-content-center{justify-content:center!important}#conversejs .justify-content-between{justify-content:space-between!important}#conversejs .justify-content-around{justify-content:space-around!important}#conversejs .align-items-start{align-items:flex-start!important}#conversejs .align-items-end{align-items:flex-end!important}#conversejs .align-items-center{align-items:center!important}#conversejs .align-items-baseline{align-items:baseline!important}#conversejs .align-items-stretch{align-items:stretch!important}#conversejs .align-content-start{align-content:flex-start!important}#conversejs .align-content-end{align-content:flex-end!important}#conversejs .align-content-center{align-content:center!important}#conversejs .align-content-between{align-content:space-between!important}#conversejs .align-content-around{align-content:space-around!important}#conversejs .align-content-stretch{align-content:stretch!important}#conversejs .align-self-auto{align-self:auto!important}#conversejs .align-self-start{align-self:flex-start!important}#conversejs .align-self-end{align-self:flex-end!important}#conversejs .align-self-center{align-self:center!important}#conversejs .align-self-baseline{align-self:baseline!important}#conversejs .align-self-stretch{align-self:stretch!important}@media (min-width:576px){#conversejs .flex-sm-row{flex-direction:row!important}#conversejs .flex-sm-column{flex-direction:column!important}#conversejs .flex-sm-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-sm-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-sm-wrap{flex-wrap:wrap!important}#conversejs .flex-sm-nowrap{flex-wrap:nowrap!important}#conversejs .flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-sm-fill{flex:1 1 auto!important}#conversejs .flex-sm-grow-0{flex-grow:0!important}#conversejs .flex-sm-grow-1{flex-grow:1!important}#conversejs .flex-sm-shrink-0{flex-shrink:0!important}#conversejs .flex-sm-shrink-1{flex-shrink:1!important}#conversejs .justify-content-sm-start{justify-content:flex-start!important}#conversejs .justify-content-sm-end{justify-content:flex-end!important}#conversejs .justify-content-sm-center{justify-content:center!important}#conversejs .justify-content-sm-between{justify-content:space-between!important}#conversejs .justify-content-sm-around{justify-content:space-around!important}#conversejs .align-items-sm-start{align-items:flex-start!important}#conversejs .align-items-sm-end{align-items:flex-end!important}#conversejs .align-items-sm-center{align-items:center!important}#conversejs .align-items-sm-baseline{align-items:baseline!important}#conversejs .align-items-sm-stretch{align-items:stretch!important}#conversejs .align-content-sm-start{align-content:flex-start!important}#conversejs .align-content-sm-end{align-content:flex-end!important}#conversejs .align-content-sm-center{align-content:center!important}#conversejs .align-content-sm-between{align-content:space-between!important}#conversejs .align-content-sm-around{align-content:space-around!important}#conversejs .align-content-sm-stretch{align-content:stretch!important}#conversejs .align-self-sm-auto{align-self:auto!important}#conversejs .align-self-sm-start{align-self:flex-start!important}#conversejs .align-self-sm-end{align-self:flex-end!important}#conversejs .align-self-sm-center{align-self:center!important}#conversejs .align-self-sm-baseline{align-self:baseline!important}#conversejs .align-self-sm-stretch{align-self:stretch!important}}@media (min-width:768px){#conversejs .flex-md-row{flex-direction:row!important}#conversejs .flex-md-column{flex-direction:column!important}#conversejs .flex-md-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-md-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-md-wrap{flex-wrap:wrap!important}#conversejs .flex-md-nowrap{flex-wrap:nowrap!important}#conversejs .flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-md-fill{flex:1 1 auto!important}#conversejs .flex-md-grow-0{flex-grow:0!important}#conversejs .flex-md-grow-1{flex-grow:1!important}#conversejs .flex-md-shrink-0{flex-shrink:0!important}#conversejs .flex-md-shrink-1{flex-shrink:1!important}#conversejs .justify-content-md-start{justify-content:flex-start!important}#conversejs .justify-content-md-end{justify-content:flex-end!important}#conversejs .justify-content-md-center{justify-content:center!important}#conversejs .justify-content-md-between{justify-content:space-between!important}#conversejs .justify-content-md-around{justify-content:space-around!important}#conversejs .align-items-md-start{align-items:flex-start!important}#conversejs .align-items-md-end{align-items:flex-end!important}#conversejs .align-items-md-center{align-items:center!important}#conversejs .align-items-md-baseline{align-items:baseline!important}#conversejs .align-items-md-stretch{align-items:stretch!important}#conversejs .align-content-md-start{align-content:flex-start!important}#conversejs .align-content-md-end{align-content:flex-end!important}#conversejs .align-content-md-center{align-content:center!important}#conversejs .align-content-md-between{align-content:space-between!important}#conversejs .align-content-md-around{align-content:space-around!important}#conversejs .align-content-md-stretch{align-content:stretch!important}#conversejs .align-self-md-auto{align-self:auto!important}#conversejs .align-self-md-start{align-self:flex-start!important}#conversejs .align-self-md-end{align-self:flex-end!important}#conversejs .align-self-md-center{align-self:center!important}#conversejs .align-self-md-baseline{align-self:baseline!important}#conversejs .align-self-md-stretch{align-self:stretch!important}}@media (min-width:992px){#conversejs .flex-lg-row{flex-direction:row!important}#conversejs .flex-lg-column{flex-direction:column!important}#conversejs .flex-lg-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-lg-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-lg-wrap{flex-wrap:wrap!important}#conversejs .flex-lg-nowrap{flex-wrap:nowrap!important}#conversejs .flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-lg-fill{flex:1 1 auto!important}#conversejs .flex-lg-grow-0{flex-grow:0!important}#conversejs .flex-lg-grow-1{flex-grow:1!important}#conversejs .flex-lg-shrink-0{flex-shrink:0!important}#conversejs .flex-lg-shrink-1{flex-shrink:1!important}#conversejs .justify-content-lg-start{justify-content:flex-start!important}#conversejs .justify-content-lg-end{justify-content:flex-end!important}#conversejs .justify-content-lg-center{justify-content:center!important}#conversejs .justify-content-lg-between{justify-content:space-between!important}#conversejs .justify-content-lg-around{justify-content:space-around!important}#conversejs .align-items-lg-start{align-items:flex-start!important}#conversejs .align-items-lg-end{align-items:flex-end!important}#conversejs .align-items-lg-center{align-items:center!important}#conversejs .align-items-lg-baseline{align-items:baseline!important}#conversejs .align-items-lg-stretch{align-items:stretch!important}#conversejs .align-content-lg-start{align-content:flex-start!important}#conversejs .align-content-lg-end{align-content:flex-end!important}#conversejs .align-content-lg-center{align-content:center!important}#conversejs .align-content-lg-between{align-content:space-between!important}#conversejs .align-content-lg-around{align-content:space-around!important}#conversejs .align-content-lg-stretch{align-content:stretch!important}#conversejs .align-self-lg-auto{align-self:auto!important}#conversejs .align-self-lg-start{align-self:flex-start!important}#conversejs .align-self-lg-end{align-self:flex-end!important}#conversejs .align-self-lg-center{align-self:center!important}#conversejs .align-self-lg-baseline{align-self:baseline!important}#conversejs .align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){#conversejs .flex-xl-row{flex-direction:row!important}#conversejs .flex-xl-column{flex-direction:column!important}#conversejs .flex-xl-row-reverse{flex-direction:row-reverse!important}#conversejs .flex-xl-column-reverse{flex-direction:column-reverse!important}#conversejs .flex-xl-wrap{flex-wrap:wrap!important}#conversejs .flex-xl-nowrap{flex-wrap:nowrap!important}#conversejs .flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}#conversejs .flex-xl-fill{flex:1 1 auto!important}#conversejs .flex-xl-grow-0{flex-grow:0!important}#conversejs .flex-xl-grow-1{flex-grow:1!important}#conversejs .flex-xl-shrink-0{flex-shrink:0!important}#conversejs .flex-xl-shrink-1{flex-shrink:1!important}#conversejs .justify-content-xl-start{justify-content:flex-start!important}#conversejs .justify-content-xl-end{justify-content:flex-end!important}#conversejs .justify-content-xl-center{justify-content:center!important}#conversejs .justify-content-xl-between{justify-content:space-between!important}#conversejs .justify-content-xl-around{justify-content:space-around!important}#conversejs .align-items-xl-start{align-items:flex-start!important}#conversejs .align-items-xl-end{align-items:flex-end!important}#conversejs .align-items-xl-center{align-items:center!important}#conversejs .align-items-xl-baseline{align-items:baseline!important}#conversejs .align-items-xl-stretch{align-items:stretch!important}#conversejs .align-content-xl-start{align-content:flex-start!important}#conversejs .align-content-xl-end{align-content:flex-end!important}#conversejs .align-content-xl-center{align-content:center!important}#conversejs .align-content-xl-between{align-content:space-between!important}#conversejs .align-content-xl-around{align-content:space-around!important}#conversejs .align-content-xl-stretch{align-content:stretch!important}#conversejs .align-self-xl-auto{align-self:auto!important}#conversejs .align-self-xl-start{align-self:flex-start!important}#conversejs .align-self-xl-end{align-self:flex-end!important}#conversejs .align-self-xl-center{align-self:center!important}#conversejs .align-self-xl-baseline{align-self:baseline!important}#conversejs .align-self-xl-stretch{align-self:stretch!important}}#conversejs .float-left{float:left!important}#conversejs .float-right{float:right!important}#conversejs .float-none{float:none!important}@media (min-width:576px){#conversejs .float-sm-left{float:left!important}#conversejs .float-sm-right{float:right!important}#conversejs .float-sm-none{float:none!important}}@media (min-width:768px){#conversejs .float-md-left{float:left!important}#conversejs .float-md-right{float:right!important}#conversejs .float-md-none{float:none!important}}@media (min-width:992px){#conversejs .float-lg-left{float:left!important}#conversejs .float-lg-right{float:right!important}#conversejs .float-lg-none{float:none!important}}@media (min-width:1200px){#conversejs .float-xl-left{float:left!important}#conversejs .float-xl-right{float:right!important}#conversejs .float-xl-none{float:none!important}}#conversejs .overflow-auto{overflow:auto!important}#conversejs .overflow-hidden{overflow:hidden!important}#conversejs .position-static{position:static!important}#conversejs .position-relative{position:relative!important}#conversejs .position-absolute{position:absolute!important}#conversejs .position-fixed{position:fixed!important}#conversejs .position-sticky{position:-webkit-sticky!important;position:sticky!important}#conversejs .fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}#conversejs .fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){#conversejs .sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}#conversejs .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#conversejs .sr-only-focusable:active,#conversejs .sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}#conversejs .shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}#conversejs .shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}#conversejs .shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}#conversejs .shadow-none{box-shadow:none!important}#conversejs .w-25{width:25%!important}#conversejs .w-50{width:50%!important}#conversejs .w-75{width:75%!important}#conversejs .w-100{width:100%!important}#conversejs .w-auto{width:auto!important}#conversejs .h-25{height:25%!important}#conversejs .h-50{height:50%!important}#conversejs .h-75{height:75%!important}#conversejs .h-100{height:100%!important}#conversejs .h-auto{height:auto!important}#conversejs .mw-100{max-width:100%!important}#conversejs .mh-100{max-height:100%!important}#conversejs .min-vw-100{min-width:100vw!important}#conversejs .min-vh-100{min-height:100vh!important}#conversejs .vw-100{width:100vw!important}#conversejs .vh-100{height:100vh!important}#conversejs .stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:rgba(0,0,0,0)}#conversejs .m-0{margin:0!important}#conversejs .mt-0,#conversejs .my-0{margin-top:0!important}#conversejs .mr-0,#conversejs .mx-0{margin-right:0!important}#conversejs .mb-0,#conversejs .my-0{margin-bottom:0!important}#conversejs .ml-0,#conversejs .mx-0{margin-left:0!important}#conversejs .m-1{margin:.25rem!important}#conversejs .mt-1,#conversejs .my-1{margin-top:.25rem!important}#conversejs .mr-1,#conversejs .mx-1{margin-right:.25rem!important}#conversejs .mb-1,#conversejs .my-1{margin-bottom:.25rem!important}#conversejs .ml-1,#conversejs .mx-1{margin-left:.25rem!important}#conversejs .m-2{margin:.5rem!important}#conversejs .mt-2,#conversejs .my-2{margin-top:.5rem!important}#conversejs .mr-2,#conversejs .mx-2{margin-right:.5rem!important}#conversejs .mb-2,#conversejs .my-2{margin-bottom:.5rem!important}#conversejs .ml-2,#conversejs .mx-2{margin-left:.5rem!important}#conversejs .m-3{margin:1rem!important}#conversejs .mt-3,#conversejs .my-3{margin-top:1rem!important}#conversejs .mr-3,#conversejs .mx-3{margin-right:1rem!important}#conversejs .mb-3,#conversejs .my-3{margin-bottom:1rem!important}#conversejs .ml-3,#conversejs .mx-3{margin-left:1rem!important}#conversejs .m-4{margin:1.5rem!important}#conversejs .mt-4,#conversejs .my-4{margin-top:1.5rem!important}#conversejs .mr-4,#conversejs .mx-4{margin-right:1.5rem!important}#conversejs .mb-4,#conversejs .my-4{margin-bottom:1.5rem!important}#conversejs .ml-4,#conversejs .mx-4{margin-left:1.5rem!important}#conversejs .m-5{margin:3rem!important}#conversejs .mt-5,#conversejs .my-5{margin-top:3rem!important}#conversejs .mr-5,#conversejs .mx-5{margin-right:3rem!important}#conversejs .mb-5,#conversejs .my-5{margin-bottom:3rem!important}#conversejs .ml-5,#conversejs .mx-5{margin-left:3rem!important}#conversejs .p-0{padding:0!important}#conversejs .pt-0,#conversejs .py-0{padding-top:0!important}#conversejs .pr-0,#conversejs .px-0{padding-right:0!important}#conversejs .pb-0,#conversejs .py-0{padding-bottom:0!important}#conversejs .pl-0,#conversejs .px-0{padding-left:0!important}#conversejs .p-1{padding:.25rem!important}#conversejs .pt-1,#conversejs .py-1{padding-top:.25rem!important}#conversejs .pr-1,#conversejs .px-1{padding-right:.25rem!important}#conversejs .pb-1,#conversejs .py-1{padding-bottom:.25rem!important}#conversejs .pl-1,#conversejs .px-1{padding-left:.25rem!important}#conversejs .p-2{padding:.5rem!important}#conversejs .pt-2,#conversejs .py-2{padding-top:.5rem!important}#conversejs .pr-2,#conversejs .px-2{padding-right:.5rem!important}#conversejs .pb-2,#conversejs .py-2{padding-bottom:.5rem!important}#conversejs .pl-2,#conversejs .px-2{padding-left:.5rem!important}#conversejs .p-3{padding:1rem!important}#conversejs .pt-3,#conversejs .py-3{padding-top:1rem!important}#conversejs .pr-3,#conversejs .px-3{padding-right:1rem!important}#conversejs .pb-3,#conversejs .py-3{padding-bottom:1rem!important}#conversejs .pl-3,#conversejs .px-3{padding-left:1rem!important}#conversejs .p-4{padding:1.5rem!important}#conversejs .pt-4,#conversejs .py-4{padding-top:1.5rem!important}#conversejs .pr-4,#conversejs .px-4{padding-right:1.5rem!important}#conversejs .pb-4,#conversejs .py-4{padding-bottom:1.5rem!important}#conversejs .pl-4,#conversejs .px-4{padding-left:1.5rem!important}#conversejs .p-5{padding:3rem!important}#conversejs .pt-5,#conversejs .py-5{padding-top:3rem!important}#conversejs .pr-5,#conversejs .px-5{padding-right:3rem!important}#conversejs .pb-5,#conversejs .py-5{padding-bottom:3rem!important}#conversejs .pl-5,#conversejs .px-5{padding-left:3rem!important}#conversejs .m-n1{margin:-.25rem!important}#conversejs .mt-n1,#conversejs .my-n1{margin-top:-.25rem!important}#conversejs .mr-n1,#conversejs .mx-n1{margin-right:-.25rem!important}#conversejs .mb-n1,#conversejs .my-n1{margin-bottom:-.25rem!important}#conversejs .ml-n1,#conversejs .mx-n1{margin-left:-.25rem!important}#conversejs .m-n2{margin:-.5rem!important}#conversejs .mt-n2,#conversejs .my-n2{margin-top:-.5rem!important}#conversejs .mr-n2,#conversejs .mx-n2{margin-right:-.5rem!important}#conversejs .mb-n2,#conversejs .my-n2{margin-bottom:-.5rem!important}#conversejs .ml-n2,#conversejs .mx-n2{margin-left:-.5rem!important}#conversejs .m-n3{margin:-1rem!important}#conversejs .mt-n3,#conversejs .my-n3{margin-top:-1rem!important}#conversejs .mr-n3,#conversejs .mx-n3{margin-right:-1rem!important}#conversejs .mb-n3,#conversejs .my-n3{margin-bottom:-1rem!important}#conversejs .ml-n3,#conversejs .mx-n3{margin-left:-1rem!important}#conversejs .m-n4{margin:-1.5rem!important}#conversejs .mt-n4,#conversejs .my-n4{margin-top:-1.5rem!important}#conversejs .mr-n4,#conversejs .mx-n4{margin-right:-1.5rem!important}#conversejs .mb-n4,#conversejs .my-n4{margin-bottom:-1.5rem!important}#conversejs .ml-n4,#conversejs .mx-n4{margin-left:-1.5rem!important}#conversejs .m-n5{margin:-3rem!important}#conversejs .mt-n5,#conversejs .my-n5{margin-top:-3rem!important}#conversejs .mr-n5,#conversejs .mx-n5{margin-right:-3rem!important}#conversejs .mb-n5,#conversejs .my-n5{margin-bottom:-3rem!important}#conversejs .ml-n5,#conversejs .mx-n5{margin-left:-3rem!important}#conversejs .m-auto{margin:auto!important}#conversejs .mt-auto,#conversejs .my-auto{margin-top:auto!important}#conversejs .mr-auto,#conversejs .mx-auto{margin-right:auto!important}#conversejs .mb-auto,#conversejs .my-auto{margin-bottom:auto!important}#conversejs .ml-auto,#conversejs .mx-auto{margin-left:auto!important}@media (min-width:576px){#conversejs .m-sm-0{margin:0!important}#conversejs .mt-sm-0,#conversejs .my-sm-0{margin-top:0!important}#conversejs .mr-sm-0,#conversejs .mx-sm-0{margin-right:0!important}#conversejs .mb-sm-0,#conversejs .my-sm-0{margin-bottom:0!important}#conversejs .ml-sm-0,#conversejs .mx-sm-0{margin-left:0!important}#conversejs .m-sm-1{margin:.25rem!important}#conversejs .mt-sm-1,#conversejs .my-sm-1{margin-top:.25rem!important}#conversejs .mr-sm-1,#conversejs .mx-sm-1{margin-right:.25rem!important}#conversejs .mb-sm-1,#conversejs .my-sm-1{margin-bottom:.25rem!important}#conversejs .ml-sm-1,#conversejs .mx-sm-1{margin-left:.25rem!important}#conversejs .m-sm-2{margin:.5rem!important}#conversejs .mt-sm-2,#conversejs .my-sm-2{margin-top:.5rem!important}#conversejs .mr-sm-2,#conversejs .mx-sm-2{margin-right:.5rem!important}#conversejs .mb-sm-2,#conversejs .my-sm-2{margin-bottom:.5rem!important}#conversejs .ml-sm-2,#conversejs .mx-sm-2{margin-left:.5rem!important}#conversejs .m-sm-3{margin:1rem!important}#conversejs .mt-sm-3,#conversejs .my-sm-3{margin-top:1rem!important}#conversejs .mr-sm-3,#conversejs .mx-sm-3{margin-right:1rem!important}#conversejs .mb-sm-3,#conversejs .my-sm-3{margin-bottom:1rem!important}#conversejs .ml-sm-3,#conversejs .mx-sm-3{margin-left:1rem!important}#conversejs .m-sm-4{margin:1.5rem!important}#conversejs .mt-sm-4,#conversejs .my-sm-4{margin-top:1.5rem!important}#conversejs .mr-sm-4,#conversejs .mx-sm-4{margin-right:1.5rem!important}#conversejs .mb-sm-4,#conversejs .my-sm-4{margin-bottom:1.5rem!important}#conversejs .ml-sm-4,#conversejs .mx-sm-4{margin-left:1.5rem!important}#conversejs .m-sm-5{margin:3rem!important}#conversejs .mt-sm-5,#conversejs .my-sm-5{margin-top:3rem!important}#conversejs .mr-sm-5,#conversejs .mx-sm-5{margin-right:3rem!important}#conversejs .mb-sm-5,#conversejs .my-sm-5{margin-bottom:3rem!important}#conversejs .ml-sm-5,#conversejs .mx-sm-5{margin-left:3rem!important}#conversejs .p-sm-0{padding:0!important}#conversejs .pt-sm-0,#conversejs .py-sm-0{padding-top:0!important}#conversejs .pr-sm-0,#conversejs .px-sm-0{padding-right:0!important}#conversejs .pb-sm-0,#conversejs .py-sm-0{padding-bottom:0!important}#conversejs .pl-sm-0,#conversejs .px-sm-0{padding-left:0!important}#conversejs .p-sm-1{padding:.25rem!important}#conversejs .pt-sm-1,#conversejs .py-sm-1{padding-top:.25rem!important}#conversejs .pr-sm-1,#conversejs .px-sm-1{padding-right:.25rem!important}#conversejs .pb-sm-1,#conversejs .py-sm-1{padding-bottom:.25rem!important}#conversejs .pl-sm-1,#conversejs .px-sm-1{padding-left:.25rem!important}#conversejs .p-sm-2{padding:.5rem!important}#conversejs .pt-sm-2,#conversejs .py-sm-2{padding-top:.5rem!important}#conversejs .pr-sm-2,#conversejs .px-sm-2{padding-right:.5rem!important}#conversejs .pb-sm-2,#conversejs .py-sm-2{padding-bottom:.5rem!important}#conversejs .pl-sm-2,#conversejs .px-sm-2{padding-left:.5rem!important}#conversejs .p-sm-3{padding:1rem!important}#conversejs .pt-sm-3,#conversejs .py-sm-3{padding-top:1rem!important}#conversejs .pr-sm-3,#conversejs .px-sm-3{padding-right:1rem!important}#conversejs .pb-sm-3,#conversejs .py-sm-3{padding-bottom:1rem!important}#conversejs .pl-sm-3,#conversejs .px-sm-3{padding-left:1rem!important}#conversejs .p-sm-4{padding:1.5rem!important}#conversejs .pt-sm-4,#conversejs .py-sm-4{padding-top:1.5rem!important}#conversejs .pr-sm-4,#conversejs .px-sm-4{padding-right:1.5rem!important}#conversejs .pb-sm-4,#conversejs .py-sm-4{padding-bottom:1.5rem!important}#conversejs .pl-sm-4,#conversejs .px-sm-4{padding-left:1.5rem!important}#conversejs .p-sm-5{padding:3rem!important}#conversejs .pt-sm-5,#conversejs .py-sm-5{padding-top:3rem!important}#conversejs .pr-sm-5,#conversejs .px-sm-5{padding-right:3rem!important}#conversejs .pb-sm-5,#conversejs .py-sm-5{padding-bottom:3rem!important}#conversejs .pl-sm-5,#conversejs .px-sm-5{padding-left:3rem!important}#conversejs .m-sm-n1{margin:-.25rem!important}#conversejs .mt-sm-n1,#conversejs .my-sm-n1{margin-top:-.25rem!important}#conversejs .mr-sm-n1,#conversejs .mx-sm-n1{margin-right:-.25rem!important}#conversejs .mb-sm-n1,#conversejs .my-sm-n1{margin-bottom:-.25rem!important}#conversejs .ml-sm-n1,#conversejs .mx-sm-n1{margin-left:-.25rem!important}#conversejs .m-sm-n2{margin:-.5rem!important}#conversejs .mt-sm-n2,#conversejs .my-sm-n2{margin-top:-.5rem!important}#conversejs .mr-sm-n2,#conversejs .mx-sm-n2{margin-right:-.5rem!important}#conversejs .mb-sm-n2,#conversejs .my-sm-n2{margin-bottom:-.5rem!important}#conversejs .ml-sm-n2,#conversejs .mx-sm-n2{margin-left:-.5rem!important}#conversejs .m-sm-n3{margin:-1rem!important}#conversejs .mt-sm-n3,#conversejs .my-sm-n3{margin-top:-1rem!important}#conversejs .mr-sm-n3,#conversejs .mx-sm-n3{margin-right:-1rem!important}#conversejs .mb-sm-n3,#conversejs .my-sm-n3{margin-bottom:-1rem!important}#conversejs .ml-sm-n3,#conversejs .mx-sm-n3{margin-left:-1rem!important}#conversejs .m-sm-n4{margin:-1.5rem!important}#conversejs .mt-sm-n4,#conversejs .my-sm-n4{margin-top:-1.5rem!important}#conversejs .mr-sm-n4,#conversejs .mx-sm-n4{margin-right:-1.5rem!important}#conversejs .mb-sm-n4,#conversejs .my-sm-n4{margin-bottom:-1.5rem!important}#conversejs .ml-sm-n4,#conversejs .mx-sm-n4{margin-left:-1.5rem!important}#conversejs .m-sm-n5{margin:-3rem!important}#conversejs .mt-sm-n5,#conversejs .my-sm-n5{margin-top:-3rem!important}#conversejs .mr-sm-n5,#conversejs .mx-sm-n5{margin-right:-3rem!important}#conversejs .mb-sm-n5,#conversejs .my-sm-n5{margin-bottom:-3rem!important}#conversejs .ml-sm-n5,#conversejs .mx-sm-n5{margin-left:-3rem!important}#conversejs .m-sm-auto{margin:auto!important}#conversejs .mt-sm-auto,#conversejs .my-sm-auto{margin-top:auto!important}#conversejs .mr-sm-auto,#conversejs .mx-sm-auto{margin-right:auto!important}#conversejs .mb-sm-auto,#conversejs .my-sm-auto{margin-bottom:auto!important}#conversejs .ml-sm-auto,#conversejs .mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){#conversejs .m-md-0{margin:0!important}#conversejs .mt-md-0,#conversejs .my-md-0{margin-top:0!important}#conversejs .mr-md-0,#conversejs .mx-md-0{margin-right:0!important}#conversejs .mb-md-0,#conversejs .my-md-0{margin-bottom:0!important}#conversejs .ml-md-0,#conversejs .mx-md-0{margin-left:0!important}#conversejs .m-md-1{margin:.25rem!important}#conversejs .mt-md-1,#conversejs .my-md-1{margin-top:.25rem!important}#conversejs .mr-md-1,#conversejs .mx-md-1{margin-right:.25rem!important}#conversejs .mb-md-1,#conversejs .my-md-1{margin-bottom:.25rem!important}#conversejs .ml-md-1,#conversejs .mx-md-1{margin-left:.25rem!important}#conversejs .m-md-2{margin:.5rem!important}#conversejs .mt-md-2,#conversejs .my-md-2{margin-top:.5rem!important}#conversejs .mr-md-2,#conversejs .mx-md-2{margin-right:.5rem!important}#conversejs .mb-md-2,#conversejs .my-md-2{margin-bottom:.5rem!important}#conversejs .ml-md-2,#conversejs .mx-md-2{margin-left:.5rem!important}#conversejs .m-md-3{margin:1rem!important}#conversejs .mt-md-3,#conversejs .my-md-3{margin-top:1rem!important}#conversejs .mr-md-3,#conversejs .mx-md-3{margin-right:1rem!important}#conversejs .mb-md-3,#conversejs .my-md-3{margin-bottom:1rem!important}#conversejs .ml-md-3,#conversejs .mx-md-3{margin-left:1rem!important}#conversejs .m-md-4{margin:1.5rem!important}#conversejs .mt-md-4,#conversejs .my-md-4{margin-top:1.5rem!important}#conversejs .mr-md-4,#conversejs .mx-md-4{margin-right:1.5rem!important}#conversejs .mb-md-4,#conversejs .my-md-4{margin-bottom:1.5rem!important}#conversejs .ml-md-4,#conversejs .mx-md-4{margin-left:1.5rem!important}#conversejs .m-md-5{margin:3rem!important}#conversejs .mt-md-5,#conversejs .my-md-5{margin-top:3rem!important}#conversejs .mr-md-5,#conversejs .mx-md-5{margin-right:3rem!important}#conversejs .mb-md-5,#conversejs .my-md-5{margin-bottom:3rem!important}#conversejs .ml-md-5,#conversejs .mx-md-5{margin-left:3rem!important}#conversejs .p-md-0{padding:0!important}#conversejs .pt-md-0,#conversejs .py-md-0{padding-top:0!important}#conversejs .pr-md-0,#conversejs .px-md-0{padding-right:0!important}#conversejs .pb-md-0,#conversejs .py-md-0{padding-bottom:0!important}#conversejs .pl-md-0,#conversejs .px-md-0{padding-left:0!important}#conversejs .p-md-1{padding:.25rem!important}#conversejs .pt-md-1,#conversejs .py-md-1{padding-top:.25rem!important}#conversejs .pr-md-1,#conversejs .px-md-1{padding-right:.25rem!important}#conversejs .pb-md-1,#conversejs .py-md-1{padding-bottom:.25rem!important}#conversejs .pl-md-1,#conversejs .px-md-1{padding-left:.25rem!important}#conversejs .p-md-2{padding:.5rem!important}#conversejs .pt-md-2,#conversejs .py-md-2{padding-top:.5rem!important}#conversejs .pr-md-2,#conversejs .px-md-2{padding-right:.5rem!important}#conversejs .pb-md-2,#conversejs .py-md-2{padding-bottom:.5rem!important}#conversejs .pl-md-2,#conversejs .px-md-2{padding-left:.5rem!important}#conversejs .p-md-3{padding:1rem!important}#conversejs .pt-md-3,#conversejs .py-md-3{padding-top:1rem!important}#conversejs .pr-md-3,#conversejs .px-md-3{padding-right:1rem!important}#conversejs .pb-md-3,#conversejs .py-md-3{padding-bottom:1rem!important}#conversejs .pl-md-3,#conversejs .px-md-3{padding-left:1rem!important}#conversejs .p-md-4{padding:1.5rem!important}#conversejs .pt-md-4,#conversejs .py-md-4{padding-top:1.5rem!important}#conversejs .pr-md-4,#conversejs .px-md-4{padding-right:1.5rem!important}#conversejs .pb-md-4,#conversejs .py-md-4{padding-bottom:1.5rem!important}#conversejs .pl-md-4,#conversejs .px-md-4{padding-left:1.5rem!important}#conversejs .p-md-5{padding:3rem!important}#conversejs .pt-md-5,#conversejs .py-md-5{padding-top:3rem!important}#conversejs .pr-md-5,#conversejs .px-md-5{padding-right:3rem!important}#conversejs .pb-md-5,#conversejs .py-md-5{padding-bottom:3rem!important}#conversejs .pl-md-5,#conversejs .px-md-5{padding-left:3rem!important}#conversejs .m-md-n1{margin:-.25rem!important}#conversejs .mt-md-n1,#conversejs .my-md-n1{margin-top:-.25rem!important}#conversejs .mr-md-n1,#conversejs .mx-md-n1{margin-right:-.25rem!important}#conversejs .mb-md-n1,#conversejs .my-md-n1{margin-bottom:-.25rem!important}#conversejs .ml-md-n1,#conversejs .mx-md-n1{margin-left:-.25rem!important}#conversejs .m-md-n2{margin:-.5rem!important}#conversejs .mt-md-n2,#conversejs .my-md-n2{margin-top:-.5rem!important}#conversejs .mr-md-n2,#conversejs .mx-md-n2{margin-right:-.5rem!important}#conversejs .mb-md-n2,#conversejs .my-md-n2{margin-bottom:-.5rem!important}#conversejs .ml-md-n2,#conversejs .mx-md-n2{margin-left:-.5rem!important}#conversejs .m-md-n3{margin:-1rem!important}#conversejs .mt-md-n3,#conversejs .my-md-n3{margin-top:-1rem!important}#conversejs .mr-md-n3,#conversejs .mx-md-n3{margin-right:-1rem!important}#conversejs .mb-md-n3,#conversejs .my-md-n3{margin-bottom:-1rem!important}#conversejs .ml-md-n3,#conversejs .mx-md-n3{margin-left:-1rem!important}#conversejs .m-md-n4{margin:-1.5rem!important}#conversejs .mt-md-n4,#conversejs .my-md-n4{margin-top:-1.5rem!important}#conversejs .mr-md-n4,#conversejs .mx-md-n4{margin-right:-1.5rem!important}#conversejs .mb-md-n4,#conversejs .my-md-n4{margin-bottom:-1.5rem!important}#conversejs .ml-md-n4,#conversejs .mx-md-n4{margin-left:-1.5rem!important}#conversejs .m-md-n5{margin:-3rem!important}#conversejs .mt-md-n5,#conversejs .my-md-n5{margin-top:-3rem!important}#conversejs .mr-md-n5,#conversejs .mx-md-n5{margin-right:-3rem!important}#conversejs .mb-md-n5,#conversejs .my-md-n5{margin-bottom:-3rem!important}#conversejs .ml-md-n5,#conversejs .mx-md-n5{margin-left:-3rem!important}#conversejs .m-md-auto{margin:auto!important}#conversejs .mt-md-auto,#conversejs .my-md-auto{margin-top:auto!important}#conversejs .mr-md-auto,#conversejs .mx-md-auto{margin-right:auto!important}#conversejs .mb-md-auto,#conversejs .my-md-auto{margin-bottom:auto!important}#conversejs .ml-md-auto,#conversejs .mx-md-auto{margin-left:auto!important}}@media (min-width:992px){#conversejs .m-lg-0{margin:0!important}#conversejs .mt-lg-0,#conversejs .my-lg-0{margin-top:0!important}#conversejs .mr-lg-0,#conversejs .mx-lg-0{margin-right:0!important}#conversejs .mb-lg-0,#conversejs .my-lg-0{margin-bottom:0!important}#conversejs .ml-lg-0,#conversejs .mx-lg-0{margin-left:0!important}#conversejs .m-lg-1{margin:.25rem!important}#conversejs .mt-lg-1,#conversejs .my-lg-1{margin-top:.25rem!important}#conversejs .mr-lg-1,#conversejs .mx-lg-1{margin-right:.25rem!important}#conversejs .mb-lg-1,#conversejs .my-lg-1{margin-bottom:.25rem!important}#conversejs .ml-lg-1,#conversejs .mx-lg-1{margin-left:.25rem!important}#conversejs .m-lg-2{margin:.5rem!important}#conversejs .mt-lg-2,#conversejs .my-lg-2{margin-top:.5rem!important}#conversejs .mr-lg-2,#conversejs .mx-lg-2{margin-right:.5rem!important}#conversejs .mb-lg-2,#conversejs .my-lg-2{margin-bottom:.5rem!important}#conversejs .ml-lg-2,#conversejs .mx-lg-2{margin-left:.5rem!important}#conversejs .m-lg-3{margin:1rem!important}#conversejs .mt-lg-3,#conversejs .my-lg-3{margin-top:1rem!important}#conversejs .mr-lg-3,#conversejs .mx-lg-3{margin-right:1rem!important}#conversejs .mb-lg-3,#conversejs .my-lg-3{margin-bottom:1rem!important}#conversejs .ml-lg-3,#conversejs .mx-lg-3{margin-left:1rem!important}#conversejs .m-lg-4{margin:1.5rem!important}#conversejs .mt-lg-4,#conversejs .my-lg-4{margin-top:1.5rem!important}#conversejs .mr-lg-4,#conversejs .mx-lg-4{margin-right:1.5rem!important}#conversejs .mb-lg-4,#conversejs .my-lg-4{margin-bottom:1.5rem!important}#conversejs .ml-lg-4,#conversejs .mx-lg-4{margin-left:1.5rem!important}#conversejs .m-lg-5{margin:3rem!important}#conversejs .mt-lg-5,#conversejs .my-lg-5{margin-top:3rem!important}#conversejs .mr-lg-5,#conversejs .mx-lg-5{margin-right:3rem!important}#conversejs .mb-lg-5,#conversejs .my-lg-5{margin-bottom:3rem!important}#conversejs .ml-lg-5,#conversejs .mx-lg-5{margin-left:3rem!important}#conversejs .p-lg-0{padding:0!important}#conversejs .pt-lg-0,#conversejs .py-lg-0{padding-top:0!important}#conversejs .pr-lg-0,#conversejs .px-lg-0{padding-right:0!important}#conversejs .pb-lg-0,#conversejs .py-lg-0{padding-bottom:0!important}#conversejs .pl-lg-0,#conversejs .px-lg-0{padding-left:0!important}#conversejs .p-lg-1{padding:.25rem!important}#conversejs .pt-lg-1,#conversejs .py-lg-1{padding-top:.25rem!important}#conversejs .pr-lg-1,#conversejs .px-lg-1{padding-right:.25rem!important}#conversejs .pb-lg-1,#conversejs .py-lg-1{padding-bottom:.25rem!important}#conversejs .pl-lg-1,#conversejs .px-lg-1{padding-left:.25rem!important}#conversejs .p-lg-2{padding:.5rem!important}#conversejs .pt-lg-2,#conversejs .py-lg-2{padding-top:.5rem!important}#conversejs .pr-lg-2,#conversejs .px-lg-2{padding-right:.5rem!important}#conversejs .pb-lg-2,#conversejs .py-lg-2{padding-bottom:.5rem!important}#conversejs .pl-lg-2,#conversejs .px-lg-2{padding-left:.5rem!important}#conversejs .p-lg-3{padding:1rem!important}#conversejs .pt-lg-3,#conversejs .py-lg-3{padding-top:1rem!important}#conversejs .pr-lg-3,#conversejs .px-lg-3{padding-right:1rem!important}#conversejs .pb-lg-3,#conversejs .py-lg-3{padding-bottom:1rem!important}#conversejs .pl-lg-3,#conversejs .px-lg-3{padding-left:1rem!important}#conversejs .p-lg-4{padding:1.5rem!important}#conversejs .pt-lg-4,#conversejs .py-lg-4{padding-top:1.5rem!important}#conversejs .pr-lg-4,#conversejs .px-lg-4{padding-right:1.5rem!important}#conversejs .pb-lg-4,#conversejs .py-lg-4{padding-bottom:1.5rem!important}#conversejs .pl-lg-4,#conversejs .px-lg-4{padding-left:1.5rem!important}#conversejs .p-lg-5{padding:3rem!important}#conversejs .pt-lg-5,#conversejs .py-lg-5{padding-top:3rem!important}#conversejs .pr-lg-5,#conversejs .px-lg-5{padding-right:3rem!important}#conversejs .pb-lg-5,#conversejs .py-lg-5{padding-bottom:3rem!important}#conversejs .pl-lg-5,#conversejs .px-lg-5{padding-left:3rem!important}#conversejs .m-lg-n1{margin:-.25rem!important}#conversejs .mt-lg-n1,#conversejs .my-lg-n1{margin-top:-.25rem!important}#conversejs .mr-lg-n1,#conversejs .mx-lg-n1{margin-right:-.25rem!important}#conversejs .mb-lg-n1,#conversejs .my-lg-n1{margin-bottom:-.25rem!important}#conversejs .ml-lg-n1,#conversejs .mx-lg-n1{margin-left:-.25rem!important}#conversejs .m-lg-n2{margin:-.5rem!important}#conversejs .mt-lg-n2,#conversejs .my-lg-n2{margin-top:-.5rem!important}#conversejs .mr-lg-n2,#conversejs .mx-lg-n2{margin-right:-.5rem!important}#conversejs .mb-lg-n2,#conversejs .my-lg-n2{margin-bottom:-.5rem!important}#conversejs .ml-lg-n2,#conversejs .mx-lg-n2{margin-left:-.5rem!important}#conversejs .m-lg-n3{margin:-1rem!important}#conversejs .mt-lg-n3,#conversejs .my-lg-n3{margin-top:-1rem!important}#conversejs .mr-lg-n3,#conversejs .mx-lg-n3{margin-right:-1rem!important}#conversejs .mb-lg-n3,#conversejs .my-lg-n3{margin-bottom:-1rem!important}#conversejs .ml-lg-n3,#conversejs .mx-lg-n3{margin-left:-1rem!important}#conversejs .m-lg-n4{margin:-1.5rem!important}#conversejs .mt-lg-n4,#conversejs .my-lg-n4{margin-top:-1.5rem!important}#conversejs .mr-lg-n4,#conversejs .mx-lg-n4{margin-right:-1.5rem!important}#conversejs .mb-lg-n4,#conversejs .my-lg-n4{margin-bottom:-1.5rem!important}#conversejs .ml-lg-n4,#conversejs .mx-lg-n4{margin-left:-1.5rem!important}#conversejs .m-lg-n5{margin:-3rem!important}#conversejs .mt-lg-n5,#conversejs .my-lg-n5{margin-top:-3rem!important}#conversejs .mr-lg-n5,#conversejs .mx-lg-n5{margin-right:-3rem!important}#conversejs .mb-lg-n5,#conversejs .my-lg-n5{margin-bottom:-3rem!important}#conversejs .ml-lg-n5,#conversejs .mx-lg-n5{margin-left:-3rem!important}#conversejs .m-lg-auto{margin:auto!important}#conversejs .mt-lg-auto,#conversejs .my-lg-auto{margin-top:auto!important}#conversejs .mr-lg-auto,#conversejs .mx-lg-auto{margin-right:auto!important}#conversejs .mb-lg-auto,#conversejs .my-lg-auto{margin-bottom:auto!important}#conversejs .ml-lg-auto,#conversejs .mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){#conversejs .m-xl-0{margin:0!important}#conversejs .mt-xl-0,#conversejs .my-xl-0{margin-top:0!important}#conversejs .mr-xl-0,#conversejs .mx-xl-0{margin-right:0!important}#conversejs .mb-xl-0,#conversejs .my-xl-0{margin-bottom:0!important}#conversejs .ml-xl-0,#conversejs .mx-xl-0{margin-left:0!important}#conversejs .m-xl-1{margin:.25rem!important}#conversejs .mt-xl-1,#conversejs .my-xl-1{margin-top:.25rem!important}#conversejs .mr-xl-1,#conversejs .mx-xl-1{margin-right:.25rem!important}#conversejs .mb-xl-1,#conversejs .my-xl-1{margin-bottom:.25rem!important}#conversejs .ml-xl-1,#conversejs .mx-xl-1{margin-left:.25rem!important}#conversejs .m-xl-2{margin:.5rem!important}#conversejs .mt-xl-2,#conversejs .my-xl-2{margin-top:.5rem!important}#conversejs .mr-xl-2,#conversejs .mx-xl-2{margin-right:.5rem!important}#conversejs .mb-xl-2,#conversejs .my-xl-2{margin-bottom:.5rem!important}#conversejs .ml-xl-2,#conversejs .mx-xl-2{margin-left:.5rem!important}#conversejs .m-xl-3{margin:1rem!important}#conversejs .mt-xl-3,#conversejs .my-xl-3{margin-top:1rem!important}#conversejs .mr-xl-3,#conversejs .mx-xl-3{margin-right:1rem!important}#conversejs .mb-xl-3,#conversejs .my-xl-3{margin-bottom:1rem!important}#conversejs .ml-xl-3,#conversejs .mx-xl-3{margin-left:1rem!important}#conversejs .m-xl-4{margin:1.5rem!important}#conversejs .mt-xl-4,#conversejs .my-xl-4{margin-top:1.5rem!important}#conversejs .mr-xl-4,#conversejs .mx-xl-4{margin-right:1.5rem!important}#conversejs .mb-xl-4,#conversejs .my-xl-4{margin-bottom:1.5rem!important}#conversejs .ml-xl-4,#conversejs .mx-xl-4{margin-left:1.5rem!important}#conversejs .m-xl-5{margin:3rem!important}#conversejs .mt-xl-5,#conversejs .my-xl-5{margin-top:3rem!important}#conversejs .mr-xl-5,#conversejs .mx-xl-5{margin-right:3rem!important}#conversejs .mb-xl-5,#conversejs .my-xl-5{margin-bottom:3rem!important}#conversejs .ml-xl-5,#conversejs .mx-xl-5{margin-left:3rem!important}#conversejs .p-xl-0{padding:0!important}#conversejs .pt-xl-0,#conversejs .py-xl-0{padding-top:0!important}#conversejs .pr-xl-0,#conversejs .px-xl-0{padding-right:0!important}#conversejs .pb-xl-0,#conversejs .py-xl-0{padding-bottom:0!important}#conversejs .pl-xl-0,#conversejs .px-xl-0{padding-left:0!important}#conversejs .p-xl-1{padding:.25rem!important}#conversejs .pt-xl-1,#conversejs .py-xl-1{padding-top:.25rem!important}#conversejs .pr-xl-1,#conversejs .px-xl-1{padding-right:.25rem!important}#conversejs .pb-xl-1,#conversejs .py-xl-1{padding-bottom:.25rem!important}#conversejs .pl-xl-1,#conversejs .px-xl-1{padding-left:.25rem!important}#conversejs .p-xl-2{padding:.5rem!important}#conversejs .pt-xl-2,#conversejs .py-xl-2{padding-top:.5rem!important}#conversejs .pr-xl-2,#conversejs .px-xl-2{padding-right:.5rem!important}#conversejs .pb-xl-2,#conversejs .py-xl-2{padding-bottom:.5rem!important}#conversejs .pl-xl-2,#conversejs .px-xl-2{padding-left:.5rem!important}#conversejs .p-xl-3{padding:1rem!important}#conversejs .pt-xl-3,#conversejs .py-xl-3{padding-top:1rem!important}#conversejs .pr-xl-3,#conversejs .px-xl-3{padding-right:1rem!important}#conversejs .pb-xl-3,#conversejs .py-xl-3{padding-bottom:1rem!important}#conversejs .pl-xl-3,#conversejs .px-xl-3{padding-left:1rem!important}#conversejs .p-xl-4{padding:1.5rem!important}#conversejs .pt-xl-4,#conversejs .py-xl-4{padding-top:1.5rem!important}#conversejs .pr-xl-4,#conversejs .px-xl-4{padding-right:1.5rem!important}#conversejs .pb-xl-4,#conversejs .py-xl-4{padding-bottom:1.5rem!important}#conversejs .pl-xl-4,#conversejs .px-xl-4{padding-left:1.5rem!important}#conversejs .p-xl-5{padding:3rem!important}#conversejs .pt-xl-5,#conversejs .py-xl-5{padding-top:3rem!important}#conversejs .pr-xl-5,#conversejs .px-xl-5{padding-right:3rem!important}#conversejs .pb-xl-5,#conversejs .py-xl-5{padding-bottom:3rem!important}#conversejs .pl-xl-5,#conversejs .px-xl-5{padding-left:3rem!important}#conversejs .m-xl-n1{margin:-.25rem!important}#conversejs .mt-xl-n1,#conversejs .my-xl-n1{margin-top:-.25rem!important}#conversejs .mr-xl-n1,#conversejs .mx-xl-n1{margin-right:-.25rem!important}#conversejs .mb-xl-n1,#conversejs .my-xl-n1{margin-bottom:-.25rem!important}#conversejs .ml-xl-n1,#conversejs .mx-xl-n1{margin-left:-.25rem!important}#conversejs .m-xl-n2{margin:-.5rem!important}#conversejs .mt-xl-n2,#conversejs .my-xl-n2{margin-top:-.5rem!important}#conversejs .mr-xl-n2,#conversejs .mx-xl-n2{margin-right:-.5rem!important}#conversejs .mb-xl-n2,#conversejs .my-xl-n2{margin-bottom:-.5rem!important}#conversejs .ml-xl-n2,#conversejs .mx-xl-n2{margin-left:-.5rem!important}#conversejs .m-xl-n3{margin:-1rem!important}#conversejs .mt-xl-n3,#conversejs .my-xl-n3{margin-top:-1rem!important}#conversejs .mr-xl-n3,#conversejs .mx-xl-n3{margin-right:-1rem!important}#conversejs .mb-xl-n3,#conversejs .my-xl-n3{margin-bottom:-1rem!important}#conversejs .ml-xl-n3,#conversejs .mx-xl-n3{margin-left:-1rem!important}#conversejs .m-xl-n4{margin:-1.5rem!important}#conversejs .mt-xl-n4,#conversejs .my-xl-n4{margin-top:-1.5rem!important}#conversejs .mr-xl-n4,#conversejs .mx-xl-n4{margin-right:-1.5rem!important}#conversejs .mb-xl-n4,#conversejs .my-xl-n4{margin-bottom:-1.5rem!important}#conversejs .ml-xl-n4,#conversejs .mx-xl-n4{margin-left:-1.5rem!important}#conversejs .m-xl-n5{margin:-3rem!important}#conversejs .mt-xl-n5,#conversejs .my-xl-n5{margin-top:-3rem!important}#conversejs .mr-xl-n5,#conversejs .mx-xl-n5{margin-right:-3rem!important}#conversejs .mb-xl-n5,#conversejs .my-xl-n5{margin-bottom:-3rem!important}#conversejs .ml-xl-n5,#conversejs .mx-xl-n5{margin-left:-3rem!important}#conversejs .m-xl-auto{margin:auto!important}#conversejs .mt-xl-auto,#conversejs .my-xl-auto{margin-top:auto!important}#conversejs .mr-xl-auto,#conversejs .mx-xl-auto{margin-right:auto!important}#conversejs .mb-xl-auto,#conversejs .my-xl-auto{margin-bottom:auto!important}#conversejs .ml-xl-auto,#conversejs .mx-xl-auto{margin-left:auto!important}}#conversejs .text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace!important}#conversejs .text-justify{text-align:justify!important}#conversejs .text-wrap{white-space:normal!important}#conversejs .text-nowrap{white-space:nowrap!important}#conversejs .text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs .text-left{text-align:left!important}#conversejs .text-right{text-align:right!important}#conversejs .text-center{text-align:center!important}@media (min-width:576px){#conversejs .text-sm-left{text-align:left!important}#conversejs .text-sm-right{text-align:right!important}#conversejs .text-sm-center{text-align:center!important}}@media (min-width:768px){#conversejs .text-md-left{text-align:left!important}#conversejs .text-md-right{text-align:right!important}#conversejs .text-md-center{text-align:center!important}}@media (min-width:992px){#conversejs .text-lg-left{text-align:left!important}#conversejs .text-lg-right{text-align:right!important}#conversejs .text-lg-center{text-align:center!important}}@media (min-width:1200px){#conversejs .text-xl-left{text-align:left!important}#conversejs .text-xl-right{text-align:right!important}#conversejs .text-xl-center{text-align:center!important}}#conversejs .text-lowercase{text-transform:lowercase!important}#conversejs .text-uppercase{text-transform:uppercase!important}#conversejs .text-capitalize{text-transform:capitalize!important}#conversejs .font-weight-light{font-weight:300!important}#conversejs .font-weight-lighter{font-weight:lighter!important}#conversejs .font-weight-normal{font-weight:400!important}#conversejs .font-weight-bold{font-weight:700!important}#conversejs .font-weight-bolder{font-weight:bolder!important}#conversejs .font-italic{font-style:italic!important}#conversejs .text-white{color:#fff!important}#conversejs .text-primary{color:#007bff!important}#conversejs a.text-primary:focus,#conversejs a.text-primary:hover{color:#0056b3!important}#conversejs .text-secondary{color:#6c757d!important}#conversejs a.text-secondary:focus,#conversejs a.text-secondary:hover{color:#494f54!important}#conversejs .text-success{color:#28a745!important}#conversejs a.text-success:focus,#conversejs a.text-success:hover{color:#19692c!important}#conversejs .text-info{color:#17a2b8!important}#conversejs a.text-info:focus,#conversejs a.text-info:hover{color:#0f6674!important}#conversejs .text-warning{color:#ffc107!important}#conversejs a.text-warning:focus,#conversejs a.text-warning:hover{color:#ba8b00!important}#conversejs .text-danger{color:#dc3545!important}#conversejs a.text-danger:focus,#conversejs a.text-danger:hover{color:#a71d2a!important}#conversejs .text-light{color:#f8f9fa!important}#conversejs a.text-light:focus,#conversejs a.text-light:hover{color:#cbd3da!important}#conversejs .text-dark{color:#343a40!important}#conversejs a.text-dark:focus,#conversejs a.text-dark:hover{color:#121416!important}#conversejs .text-body{color:#212529!important}#conversejs .text-muted{color:#6c757d!important}#conversejs .text-black-50{color:rgba(0,0,0,.5)!important}#conversejs .text-white-50{color:rgba(255,255,255,.5)!important}#conversejs .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#conversejs .text-decoration-none{text-decoration:none!important}#conversejs .text-break{word-break:break-word!important;overflow-wrap:break-word!important}#conversejs .text-reset{color:inherit!important}#conversejs .visible{visibility:visible!important}#conversejs .invisible{visibility:hidden!important}@font-face{font-family:Baumans;font-style:normal;font-weight:400;src:local("Baumans Regular"),local("Baumans-Regular"),url(webfonts/baumans.ttf) format("truetype")}@font-face{font-family:Muli;font-style:normal;font-weight:400;src:local("Muli Regular"),local("Muli-Regular"),url(webfonts/muli.ttf) format("truetype")}@font-face{font-family:ConverseFontAwesomeBrands;font-style:normal;font-weight:400;src:url(webfonts/fa-brands-400.eot);src:url(webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-brands-400.woff2) format("woff2"),url(webfonts/fa-brands-400.woff) format("woff"),url(webfonts/fa-brands-400.ttf) format("truetype"),url(webfonts/fa-brands-400.svg#fontawesome) format("svg")}@font-face{font-family:ConverseFontAwesomeRegular;font-style:normal;font-weight:400;src:url(webfonts/fa-regular-400.eot);src:url(webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-regular-400.woff2) format("woff2"),url(webfonts/fa-regular-400.woff) format("woff"),url(webfonts/fa-regular-400.ttf) format("truetype"),url(webfonts/fa-regular-400.svg#fontawesome) format("svg");font-weight:400;font-style:normal}@font-face{font-family:ConverseFontAwesomeSolid;font-style:normal;font-weight:900;src:url(webfonts/fa-solid-900.eot);src:url(webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(webfonts/fa-solid-900.svg#fontawesome) format("svg"),url(webfonts/fa-solid-900.woff2) format("woff2"),url(webfonts/fa-solid-900.woff) format("woff"),url(webfonts/fa-solid-900.ttf) format("truetype")}.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid .08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes fa-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scale(-1,1)}.fa-flip-vertical{transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1,-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-rotate-90{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bahai:before{content:"\f666"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-alt:before{content:"\f422"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-alt:before{content:"\f424"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-hands-wash:before{content:"\e05e"}.fa-handshake:before{content:"\f2b5"}.fa-handshake-alt-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-hdd:before{content:"\f0a0"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-house-user:before{content:"\e065"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-ideal:before{content:"\e013"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-house:before{content:"\e066"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microblog:before{content:"\e01a"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-arrows:before{content:"\e068"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-rust:before{content:"\e07a"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopify:before{content:"\e057"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sink:before{content:"\e06d"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-store-alt-slash:before{content:"\e070"}.fa-store-slash:before{content:"\e071"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-tiktok:before{content:"\e07b"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-virus:before{content:"\e074"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}#conversejs converse-icon:before,.converse-website converse-icon:before{content:none!important}#conversejs .far:not(converse-icon),.converse-website .far:not(converse-icon){font-family:ConverseFontAwesomeRegular!important;font-weight:400}#conversejs .fa:not(converse-icon),#conversejs .fas:not(converse-icon),.converse-website .fa:not(converse-icon),.converse-website .fas:not(converse-icon){font-family:ConverseFontAwesomeSolid!important;font-weight:900}#conversejs .fab:not(converse-icon),.converse-website .fab:not(converse-icon){font-family:ConverseFontAwesomeBrands}#conversejs .fa:not(converse-icon),#conversejs .fab:not(converse-icon),#conversejs .far:not(converse-icon),#conversejs .fas:not(converse-icon),.converse-website .fa:not(converse-icon),.converse-website .fab:not(converse-icon),.converse-website .far:not(converse-icon),.converse-website .fas:not(converse-icon){display:inline-block;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#conversejs .fa-info-circle,.converse-website .fa-info-circle{height:1em}#conversejs,#conversejs-bg,.converse-fullscreen{--subdued-color:#A8ABA1;--green:#3AA569;--redder-orange:#E77051;--orange:#E7A151;--light-blue:#578EA9;--lighter-blue:#85B47B;--chat-status-online:var(--green);--chat-status-busy:var(--redder-orange);--chat-status-away:var(--orange);--brand-heading-color:#387592;--completion-light-color:#FFB9A7;--completion-normal-color:var(--redder-orange);--completion-dark-color:#D24E2B;--link-color:var(--light-blue);--link-hover-color:#345566;--link-color-lighten-10-percent:#79a5ba;--dark-link-color:#206485;--global-background-color:#397491;--inverse-link-color:white;--text-shadow-color:#FAFAFA;--text-color:#666;--controlbox-text-color:#666;--text-color-lighten-15-percent:#8c8c8c;--message-text-color:#555;--message-receipt-color:var(--green);--save-button-color:var(--green);--message-avatar-width:36px;--message-avatar-height:36px;--chat-textarea-color:#666;--chat-textarea-background-color:white;--chat-textarea-height:60px;--send-button-height:27px;--send-button-margin:3px;--inline-action-margin:0.75em;--roster-height:194px;--chat-correcting-color:var(--chat-head-color-lighten-50-percent);--chat-head-color-dark:#1E9652;--chat-head-color-darker:#0E763B;--chat-head-color-lighten-50-percent:#e7f7ee;--chat-head-color:var(--green);--chat-head-text-color:white;--chat-toolbar-btn-color:var(--green);--chat-toolbar-btn-disabled-color:gray;--chat-content-background-color:white;--chat-info-color:var(--chatroom-head-bg-color);--highlight-color:#DCF9F6;--highlight-color-darker:#B0E8E2;--primary-color:var(--light-blue);--primary-color-dark:#397491;--secondary-color:#818479;--secondary-color-dark:#585B51;--warning-color:var(--orange);--warning-color-dark:#D2842B;--danger-color:#D24E2B;--danger-color-dark:#A93415;--light-background-color:#FCFDFD;--error-color:#D24E2B;--info-color:#1E9652;--button-border-radius:5px;--chatbox-border-radius:4px;--groupchats-header-color:var(--chatroom-head-bg-color);--groupchats-header-color-dark:var(--chatroom-head-bg-color-dark);--controlbox-width:250px;--controlbox-head-color:var(--light-blue);--controlbox-heading-color:inherit;--controlbox-heading-font-weight:bold;--controlbox-heading-top-margin:0.75em;--controlbox-pane-background-color:white;--controlbox-pane-bg-hover-color:#eff4f7;--panel-divider-color:#e7e7e7;--chat-gutter:0.5em;--minimized-chats-width:130px;--mobile-chat-width:100%;--mobile-chat-height:400px;--normal-font:"Helvetica","Arial",sans-serif;--heading-font:'Muli',normal;--branding-font:'Baumans',cursive;--heading-display:block;--heading-color:white;--chatroom-badge-color:var(--chatroom-head-bg-color);--chatroom-badge-hover-color:var(--chatroom-head-bg-color-dark);--chatroom-correcting-color:#fadfd7;--chatroom-head-bg-color-dark:#D24E2B;--chatroom-head-bg-color:var(--redder-orange);--chatroom-head-border-bottom:0px;--chatroom-head-button-color:var(--chatroom-head-bg-color);--chatroom-head-color:white;--chatroom-head-description-display:block;--chatroom-head-description-link-color:white;--chatroom-head-title-font-weight:normal;--chatroom-head-title-padding-right:0px;--chatroom-width:500px;--muc-toolbar-btn-color:var(--redder-orange);--muc-toolbar-btn-disabled-color:gray;--headline-head-color:var(--orange);--headline-message-color:#D2842B;--chatbox-button-size:14px;--fullpage-chatbox-button-size:16px;--font-size-tiny:10px;--font-size-small:12px;--font-size:14px;--font-size-large:16px;--font-size-huge:20px;--message-font-size:var(--font-size);--separator-text-color:var(--message-text-color);--chat-separator-border-bottom:2px solid var(--chat-head-color);--chatroom-separator-border-bottom:2px solid var(--chatroom-head-bg-color);--chatbox-message-input-border-top:4px solid var(--chat-head-color);--chatroom-message-input-border-top:4px solid var(--chatroom-head-bg-color);--line-height-small:14px;--line-height:16px;--line-height-large:20px;--line-height-huge:27px;--occupants-padding:1em;--occupants-background-color:white;--occupants-border-left:0.2143rem solid var(--panel-divider-color);--occupants-border-bottom:1px solid lightgrey;--embedded-emoji-picker-height:300px;--avatar-border-radius:10%;--avatar-border:1px solid lightgrey;--avatar-background-color:white;--fullpage-chat-height:calc(var(--vh, 1vh) * 100);--fullpage-chat-width:100%;--fullpage-emoji-picker-height:300px;--fullpage-max-chat-textarea-height:15em;--overlayed-chat-head-height:55px;--overlayed-chat-height:450px;--overlayed-chat-width:300px;--overlayed-chatbox-hover-height:1em;--overlayed-emoji-picker-height:200px;--overlayed-max-chat-textarea-height:200px;--overlayed-badge-color:#818479;--list-toggle-color:#818479;--list-toggle-hover-color:#585B51;--list-toggle-font-weight:normal;--list-item-hover-color:rgba(0, 0, 0, 0.035);--list-item-action-color:#e3eef3;--list-item-link-color:inherit;--list-item-link-hover-color:var(--dark-link-color);--list-item-open-color:var(--controlbox-head-color);--list-item-open-hover-color:var(--controlbox-head-color);--list-dot-circle-color:#f6dec1}#conversejs.theme-concord{--avatar-border-radius:10%;--avatar-border:0px;--avatar-background-color:none;--controlbox-pane-background-color:#333;--panel-divider-color:#333;--controlbox-pane-bg-hover-color:#464646;--controlbox-heading-color:#777;--controlbox-heading-font-weight:bold;--groupchats-header-color:var(--redder-orange);--chat-textarea-background-color:#F6F6F6;--chat-correcting-color:#FFFFC0;--chat-head-text-color:#AAA;--controlbox-text-color:#DDD;--chat-info-color:var(--subdued-color);--chatbox-border-radius:0px;--heading-display:inline;--heading-color:#9B4D;--link-hover-color:var(--lighter-blue);--chatroom-badge-color:var(--redder-orange);--chatroom-badge-hover-color:#D24E2B;--chatroom-correcting-color:#FFFFC0;--chatroom-head-bg-color:white;--chatroom-head-border-bottom:1px solid #EEE;--chatroom-head-button-color:#999;--chatroom-head-color:#7E7E7E;--chatroom-head-description-border-left:1px solid #DDD;--chatroom-head-description-color:black;--chatroom-head-description-display:inline;--chatroom-head-description-link-color:#00b3f4;--chatroom-head-description-padding-left:12px;--chatroom-head-title-font-weight:bold;--chatroom-head-title-padding-right:12px;--muc-toolbar-btn-color:#7E7E7E;--muc-toolbar-btn-disabled-color:lightgray;--occupants-background-color:#F3F3F3;--occupants-border-left:0px;--occupants-border-bottom:0px;--separator-text-color:#AAA;--chat-separator-border-bottom:1px solid #AAA;--chatroom-separator-border-bottom:1px solid #AAA;--chatroom-message-input-border-top:1px solid #CCC;--chatbox-message-input-border-top:1px solid #CCC;--fullpage-chatbox-button-size:24px;--list-toggle-font-weight:bold;--list-item-link-color:#F1F1F1;--list-item-link-hover-color:#DDD;--list-item-open-color:#444;--list-item-open-hover-color:#444}body.converse-fullscreen{margin:0;background-color:var(--global-background-color)}#conversejs-bg .converse-brand{display:flex;justify-content:space-between;margin-top:15vh;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:5s;animation-duration:5s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs-bg .converse-brand__padding{position:relative;width:100%;padding-right:15px;padding-left:15px;padding:0}@media (min-width:768px){#conversejs-bg .converse-brand__padding{flex:0 0 33.33333%;max-width:33.33333%}}@media (min-width:992px){#conversejs-bg .converse-brand__padding{flex:0 0 25%;max-width:25%}}@media (min-width:1200px){#conversejs-bg .converse-brand__padding{flex:0 0 16.66667%;max-width:16.66667%}}#conversejs-bg .converse-brand__heading{position:relative;width:100%;padding-right:15px;padding-left:15px;padding:0;display:flex;justify-content:center;margin:auto}@media (min-width:768px){#conversejs-bg .converse-brand__heading{font-size:4em;flex:0 0 66.66667%;max-width:66.66667%}}@media (min-width:992px){#conversejs-bg .converse-brand__heading{font-size:5em;flex:0 0 75%;max-width:75%}}@media (min-width:1200px){#conversejs-bg .converse-brand__heading{font-size:6em;flex:0 0 83.33333%;max-width:83.33333%}}#conversejs-bg .converse-brand__heading svg{margin-top:.3em}#conversejs-bg .converse-brand__text{color:#fff;font-family:var(--branding-font);font-weight:400;text-align:center;font-size:140%;margin-left:.2em}#conversejs-bg .converse-brand__text .byline{margin:0;font-family:var(--heading-font);font-size:.3em;opacity:.55;margin-bottom:2em;margin-left:-2.7em;word-spacing:5px}#conversejs .subdued,#conversejs-bg .subdued{opacity:.35}#conversejs{bottom:0;height:100%;position:fixed;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);color:var(--text-color);font-family:var(--normal-font);font-size:var(--font-size);direction:ltr;z-index:1031}#conversejs textarea:disabled{background-color:#eee!important}#conversejs .fit-content{width:-webkit-fit-content!important;width:-moz-fit-content!important;width:fit-content!important;max-width:-webkit-fit-content!important;max-width:-moz-fit-content!important;max-width:fit-content!important}#conversejs .nopadding{padding:0!important}#conversejs.converse-overlayed>.row{flex-direction:row-reverse}#conversejs.converse-fullscreen .converse-chatboxes,#conversejs.converse-mobile .converse-chatboxes{width:100vw;left:-15px}#conversejs.converse-overlayed{height:3em}#conversejs.converse-embedded{box-sizing:border-box;bottom:auto;height:100%;position:relative;right:auto;width:100%}#conversejs.converse-embedded *,#conversejs.converse-embedded :after,#conversejs.converse-embedded :before{box-sizing:border-box}#conversejs converse-brand-heading{text-align:center}#conversejs .brand-heading{display:inline-flex;flex-direction:row;align-items:flex-start;font-family:var(--branding-font);color:var(--link-color);margin-bottom:.75em}#conversejs .brand-heading .brand-name-wrapper{display:flex;white-space:nowrap;margin:auto}#conversejs .brand-heading .brand-name{color:var(--link-color);display:flex;flex-direction:column;align-items:center;margin-top:-.25em}#conversejs .brand-heading .brand-name .byline{font-family:var(--heading-font);font-size:.3em;margin-bottom:.75em;margin-left:-2.7em;opacity:.55;word-spacing:5px}#conversejs .brand-heading .brand-subtitle{color:var(--text-color)}#conversejs .brand-heading .brand-name__text{font-size:120%;vertical-align:text-bottom}#conversejs .brand-heading .converse-svg-logo{color:var(--link-color);height:1.5em;margin-right:.25em;margin-bottom:-.25em}#conversejs .brand-heading .converse-svg-logo .cls-1{isolation:isolate}#conversejs .brand-heading .converse-svg-logo .cls-2{opacity:.5;mix-blend-mode:multiply}#conversejs .brand-heading .converse-svg-logo .cls-3{fill:var(--link-color)}#conversejs .brand-heading .converse-svg-logo .cls-4{fill:var(--link-color)}#conversejs .brand-heading--inverse .converse-svg-logo{margin-bottom:0;margin-top:-.2em}#conversejs .brand-heading--inverse .byline{margin:0;font-family:var(--heading-font);font-size:.25em;opacity:.55;margin-left:-7em;word-spacing:5px}#conversejs .dropdown-item{padding:.5rem 1rem}#conversejs .dropdown-item .fa{width:1.25em;margin-right:.75rem}#conversejs .dropdown-item.selected,#conversejs .dropdown-item:active{color:#fff!important;background-color:var(--list-item-open-color)}#conversejs .dropdown-item.selected .fa,#conversejs .dropdown-item:active .fa{color:#fff!important}#conversejs .popover{position:fixed}#conversejs .converse-chatboxes{z-index:1031;position:fixed;bottom:0;right:0}#conversejs ::-moz-placeholder{color:var(--subdued-color)}#conversejs :-ms-input-placeholder{color:var(--subdued-color)}#conversejs ::placeholder{color:var(--subdued-color)}#conversejs ::-moz-selection{background-color:var(--highlight-color)}#conversejs ::selection{background-color:var(--highlight-color)}#conversejs ::-moz-selection{background-color:var(--highlight-color)}@media screen and (max-width:480px){#conversejs{margin:0;right:10px;left:10px;bottom:5px}}@media screen and (max-height:450px){#conversejs{margin:0;right:10px;left:10px;bottom:5px}}#conversejs ul li{height:auto}#conversejs a,#conversejs article,#conversejs aside,#conversejs audio,#conversejs blockquote,#conversejs caption,#conversejs dd,#conversejs details,#conversejs div,#conversejs dl,#conversejs dt,#conversejs em,#conversejs embed,#conversejs fieldset,#conversejs figcaption,#conversejs figure,#conversejs footer,#conversejs form,#conversejs h1,#conversejs h2,#conversejs h3,#conversejs h4,#conversejs h5,#conversejs h6,#conversejs header,#conversejs hgroup,#conversejs img,#conversejs legend,#conversejs li,#conversejs mark,#conversejs menu,#conversejs nav,#conversejs ol,#conversejs output,#conversejs p,#conversejs pre,#conversejs ruby,#conversejs section,#conversejs span,#conversejs strong,#conversejs summary,#conversejs table,#conversejs tbody,#conversejs td,#conversejs tfoot,#conversejs th,#conversejs thead,#conversejs time,#conversejs tr,#conversejs ul,#conversejs video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}#conversejs button,#conversejs input[type=button],#conversejs input[type=password],#conversejs input[type=submit],#conversejs input[type=text],#conversejs textarea{font-size:var(--font-size);min-height:0}#conversejs strong{font-weight:700}#conversejs em{font-style:italic}#conversejs ol,#conversejs ul{list-style:none}#conversejs li{height:10px}#conversejs dl,#conversejs ol,#conversejs ul{font:inherit;margin:0}#conversejs a{cursor:pointer}#conversejs a,#conversejs a:not([href]):not([tabindex]),#conversejs a:visited{text-decoration:none;color:var(--link-color);text-shadow:none;cursor:pointer}#conversejs a:hover,#conversejs a:not([href]):not([tabindex]):hover,#conversejs a:visited:hover{color:var(--link-hover-color);text-decoration:none;text-shadow:none}#conversejs a.fa,#conversejs a.far,#conversejs a.fas,#conversejs a:not([href]):not([tabindex]).fa,#conversejs a:not([href]):not([tabindex]).far,#conversejs a:not([href]):not([tabindex]).fas,#conversejs a:visited.fa,#conversejs a:visited.far,#conversejs a:visited.fas{color:var(--subdued-color)}#conversejs a.fa:hover,#conversejs a.far:hover,#conversejs a.fas:hover,#conversejs a:not([href]):not([tabindex]).fa:hover,#conversejs a:not([href]):not([tabindex]).far:hover,#conversejs a:not([href]):not([tabindex]).fas:hover,#conversejs a:visited.fa:hover,#conversejs a:visited.far:hover,#conversejs a:visited.fas:hover{color:var(--gray-color)}#conversejs svg{border-radius:var(--chatbox-border-radius)}#conversejs .fa,#conversejs .far,#conversejs .fas{color:var(--subdued-color)}#conversejs .fa:hover,#conversejs .far:hover,#conversejs .fas:hover{color:var(--gray-color)}#conversejs q{quotes:"“" "â€" "‘" "’"}#conversejs q.reason{display:inline}#conversejs q:before{content:open-quote}#conversejs q:after{content:close-quote}#conversejs .helptext{font-size:var(--font-size-tiny);color:var(--text-color-lighten-15-percent)}#conversejs .selected{color:var(--link-color)!important}#conversejs .circle{border-radius:50%}#conversejs .badge{line-height:1;font-weight:400;font-size:90%}#conversejs .btn{font-weight:400;color:#fff}#conversejs .btn .fa,#conversejs .btn .far,#conversejs .btn .fas{color:#fff;margin-right:.5em}#conversejs .btn .fa.only-icon,#conversejs .btn .far.only-icon,#conversejs .btn .fas.only-icon{margin-right:0}#conversejs .no-text-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@keyframes colorchange-chatmessage{0%{background-color:#8dd8ae}25%{background-color:rgba(141,216,174,.75)}50%{background-color:rgba(141,216,174,.5)}75%{background-color:rgba(141,216,174,.25)}100%{background-color:transparent}}@-webkit-keyframes colorchange-chatmessage{0%{background-color:#8dd8ae}25%{background-color:rgba(141,216,174,.75)}50%{background-color:rgba(141,216,174,.5)}75%{background-color:rgba(141,216,174,.25)}100%{background-color:transparent}}@keyframes colorchange-chatmessage-muc{0%{background-color:#ffb5a2}25%{background-color:rgba(255,181,162,.75)}50%{background-color:rgba(255,181,162,.5)}75%{background-color:rgba(255,181,162,.25)}100%{background-color:transparent}}@-webkit-keyframes colorchange-chatmessage-muc{0%{background-color:#ffb5a2}25%{background-color:rgba(255,181,162,.75)}50%{background-color:rgba(255,181,162,.5)}75%{background-color:rgba(255,181,162,.25)}100%{background-color:transparent}}@keyframes fadein{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadein{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes fadeOut{0%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}@keyframes fadeOut{0%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}#conversejs .fade-in{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs .visible{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-timing-function:ease;animation-timing-function:ease}#conversejs .hidden{opacity:0!important;display:none!important}#conversejs .fade-out{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}#conversejs .collapsed{height:0!important;overflow:hidden!important;padding:0!important}#conversejs .locked{padding-right:22px}@-webkit-keyframes spin{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(359deg)}}#conversejs .spinner{-webkit-animation:spin 2s infinite,linear;animation:spin 2s infinite,linear;width:1em;display:block;text-align:center;padding:.5em 0;font-size:24px}#conversejs .left{float:left}#conversejs .right{float:right}#conversejs .centered{text-align:center;display:block;margin:auto}#conversejs .hor_centered{width:100%;text-align:center;display:block;margin:0 auto;clear:both}#conversejs .error{color:var(--error-color)!important}#conversejs .info{color:var(--info-color)}#conversejs .reg-feedback{font-size:85%;margin-bottom:1em}#conversejs #converse-login .conn-feedback,#conversejs .reg-feedback{display:block;text-align:center;width:100%}#conversejs .avatar{border-radius:var(--avatar-border-radius);border:var(--avatar-border);background-color:var(--avatar-background-color)}#conversejs .avatar-autocomplete{margin-right:.5em;vertical-align:middle}#conversejs .activated{display:block!important}#conversejs .form-help{color:var(--subdued-color);font-size:90%}#conversejs .form-control--labeled{margin-top:.5em}#conversejs .nav-pills .nav-link.active,#conversejs .nav-pills .show>.nav-link{background-color:var(--primary-color)}#conversejs .list-group-item.active{background-color:var(--primary-color);border-color:var(--primary-color-dark)}#conversejs .badge{text-shadow:none;color:#fff}#conversejs .badge-light{color:var(--text-color)}#conversejs .badge-primary,#conversejs .btn-primary,#conversejs .button-primary{background-color:var(--primary-color);border-color:transparent}#conversejs .badge-primary:active,#conversejs .badge-primary:focus,#conversejs .badge-primary:hover,#conversejs .btn-primary:active,#conversejs .btn-primary:focus,#conversejs .btn-primary:hover,#conversejs .button-primary:active,#conversejs .button-primary:focus,#conversejs .button-primary:hover{background-color:var(--primary-color-dark)!important;border-color:transparent!important}#conversejs .btn--transparent{background:0 0;border:none}#conversejs .btn-circle{width:30px;height:30px;text-align:center;padding:.5em 0;font-size:var(--font-size-small);line-height:1.428571429;border-radius:50%}#conversejs .btn.fa{color:#fff!important}#conversejs .badge-groupchat{background-color:var(--chatroom-badge-color);border-color:transparent}#conversejs .badge-groupchat:hover{background-color:var(--chatroom-badge-hover-color);border-color:transparent}#conversejs .badge-groupchat.active{background-color:var(--chatroom-badge-hover-color)!important;border-color:transparent!important}#conversejs .badge-info,#conversejs .btn-info{background-color:var(--primary-color);border-color:var(--primary-color)}#conversejs .badge-info:hover,#conversejs .btn-info:hover{background-color:var(--primary-color-dark);border-color:var(--primary-color-dark)}#conversejs .badge-secondary,#conversejs .btn-secondary,#conversejs .button-cancel{color:#fff;background-color:var(--secondary-color);border-color:var(--secondary-color)}#conversejs .badge-secondary:hover,#conversejs .btn-secondary:hover,#conversejs .button-cancel:hover{background-color:var(--secondary-color-dark);border-color:var(--secondary-color-dark)}#conversejs .btn-warning{color:#fff;background-color:var(--warning-color);border-color:var(--warning-color)}#conversejs .btn-warning:hover{color:#fff;background-color:var(--warning-color-dark);border-color:var(--warning-color-dark)}#conversejs .btn-danger{color:#fff;background-color:var(--danger-color);border-color:var(--danger-color)!important}#conversejs .btn-danger:hover{background-color:var(--danger-color-dark);border-color:var(--danger-color-dark)}@media screen and (max-width:575px){body .converse-brand{font-size:3.75em}#conversejs:not(.converse-embedded) .chatbox .chat-body{border-radius:var(--chatbox-border-radius)}#conversejs:not(.converse-embedded) .flyout{border-radius:var(--chatbox-border-radius)}}@media screen and (min-width:576px){#conversejs .offset-sm-2{margin-left:16.666667%}}@media screen and (min-width:768px){#conversejs .offset-md-2{margin-left:16.666667%}#conversejs .offset-md-3{margin-left:25%}}@media screen and (min-width:992px){#conversejs .offset-lg-2{margin-left:16.666667%}#conversejs .offset-lg-3{margin-left:25%}}@media screen and (min-width:1200px){#conversejs .offset-xl-2{margin-left:16.666667%}}@media screen and (max-height:450px){#conversejs{left:0}}#conversejs .btn--small{font-size:80%;font-weight:400}#conversejs form .hidden-username{opacity:0!important;height:0!important;padding:0!important}#conversejs form .error-feedback{margin-bottom:.5em}#conversejs form .form-check-label{margin-top:.3rem}#conversejs form .form-control::-moz-placeholder{color:var(--subdued-color)}#conversejs form .form-control:-ms-input-placeholder{color:var(--subdued-color)}#conversejs form .form-control::placeholder{color:var(--subdued-color)}#conversejs form .clear-input{margin-top:.5em;margin-bottom:.5em;position:absolute;right:.2em;cursor:pointer;font-size:var(--font-size)}#conversejs form#converse-login,#conversejs form#converse-register{background:var(--controlbox-pane-background-color)}#conversejs form#converse-login legend,#conversejs form#converse-register legend{width:100%;text-align:center;margin:0 auto .5em auto}#conversejs form#converse-login fieldset.buttons,#conversejs form#converse-register fieldset.buttons{text-align:center}#conversejs form#converse-login .login-anon,#conversejs form#converse-register .login-anon{height:auto;white-space:normal}#conversejs form#converse-login .save-submit,#conversejs form#converse-register .save-submit{color:var(--save-button-color)}#conversejs form#converse-login .form-url,#conversejs form#converse-register .form-url{display:block;font-weight:400;margin:1em 0}#conversejs form.converse-form{padding:1.2rem}#conversejs form.converse-form legend{color:var(--text-color);font-size:125%;margin-bottom:1.5em}#conversejs form.converse-form input[type=number],#conversejs form.converse-form input[type=password],#conversejs form.converse-form input[type=text],#conversejs form.converse-form select{min-width:50%}#conversejs form.converse-form input[type=button],#conversejs form.converse-form input[type=number],#conversejs form.converse-form input[type=password],#conversejs form.converse-form input[type=submit],#conversejs form.converse-form input[type=text]{padding:.5em}#conversejs form.converse-form input[type=button],#conversejs form.converse-form input[type=submit]{padding-left:1em;padding-right:1em;border:none}#conversejs form.converse-form input.error{border:1px solid var(--error-color);color:var(--text-color)}#conversejs form.converse-form .text-muted{color:var(--subdued-color)!important;font-size:85%;padding-top:.5em}#conversejs form.converse-form .text-muted a{color:var(--link-color-lighten-10-percent)}#conversejs form.converse-form .text-muted.error{color:var(--error-color)}#conversejs form.converse-form--modal{padding-bottom:0}#conversejs form.converse-centered-form{min-height:66%;text-align:center}#conversejs form.converse-centered-form input{max-width:30em;margin:auto}#conversejs .send-button{border-radius:0;bottom:var(--send-button-bottom);color:var(--inverse-link-color)}#conversejs .chatbox .send-button{background-color:var(--chat-head-color)}#conversejs .chatroom .send-button{background-color:var(--muc-toolbar-btn-color)}#conversejs .chat-toolbar .toolbar-buttons{width:100%;display:inline-block}#conversejs .chat-toolbar .toolbar-buttons .message-limit{padding:.5em;font-weight:700}#conversejs .chat-toolbar .unverified,#conversejs .chat-toolbar .unverified a{color:#cf5300}#conversejs .chat-toolbar .private,#conversejs .chat-toolbar .private a{color:#4b7003}#conversejs .chat-toolbar li{cursor:pointer;display:inline-block;list-style:none;padding:0 .5em}#conversejs .chat-toolbar li:hover{cursor:pointer}#conversejs .chat-toolbar li .toolbar-menu{background-color:#fff;bottom:1.7rem;box-shadow:-1px -1px 2px 0 rgba(0,0,0,.4);height:auto;margin-bottom:0;min-width:21rem;position:absolute;right:0;top:auto;z-index:1000}#conversejs .chat-toolbar li .toolbar-menu.otr-menu{left:-6em;min-width:15rem}#conversejs .chat-toolbar li .toolbar-menu.otr-menu.show{display:flex;flex-direction:column}#conversejs .chat-toolbar li .toolbar-menu a{color:var(--link-color)}#conversejs .chat-toolbar li.toggle-otr ul{z-index:99}#conversejs .chat-toolbar li.toggle-otr ul li{display:block;padding:7px}#conversejs .chat-toolbar li.toggle-otr ul li:hover{background-color:var(--highlight-color)}#conversejs .chat-toolbar li.toggle-otr ul li a{display:block}#conversejs converse-chat-toolbar{background-color:#fff;box-sizing:border-box;display:flex;justify-content:space-between;margin:0;width:100%}#conversejs converse-chat-toolbar .fa,#conversejs converse-chat-toolbar .fa:hover,#conversejs converse-chat-toolbar .far,#conversejs converse-chat-toolbar .far:hover,#conversejs converse-chat-toolbar .fas,#conversejs converse-chat-toolbar .fas:hover{color:var(--chat-head-color);font-size:var(--font-size-large)}#conversejs converse-chat-toolbar .fa svg,#conversejs converse-chat-toolbar .fa:hover svg,#conversejs converse-chat-toolbar .far svg,#conversejs converse-chat-toolbar .far:hover svg,#conversejs converse-chat-toolbar .fas svg,#conversejs converse-chat-toolbar .fas:hover svg{fill:var(--chat-head-color)}#conversejs converse-chat-toolbar .unencrypted,#conversejs converse-chat-toolbar .unencrypted a{color:var(--text-color)}#conversejs converse-chat-toolbar .unencrypted .toolbar-menu a,#conversejs converse-chat-toolbar .unencrypted a .toolbar-menu a{color:var(--link-color)}#conversejs converse-chat-toolbar button{margin-top:.4em;border:1px transparent solid;background-color:transparent}#conversejs converse-chat-toolbar button.send-button{padding-top:.2em;padding-bottom:.2em;margin:0;margin-top:-1px}#conversejs .chatbox converse-chat-toolbar{border-top:var(--chatbox-message-input-border-top);color:var(--chat-toolbar-btn-color);background-color:#fff}#conversejs .chatbox converse-chat-toolbar .fa,#conversejs .chatbox converse-chat-toolbar .fa:hover,#conversejs .chatbox converse-chat-toolbar .far,#conversejs .chatbox converse-chat-toolbar .far:hover,#conversejs .chatbox converse-chat-toolbar .fas,#conversejs .chatbox converse-chat-toolbar .fas:hover{color:var(--chat-toolbar-btn-color)}#conversejs .chatbox converse-chat-toolbar button:focus{outline-color:var(--chat-toolbar-btn-color)!important}#conversejs .chatbox converse-chat-toolbar button:disabled .fa{color:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatbox converse-chat-toolbar button:disabled .fa:hover{color:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatbox converse-chat-toolbar button:disabled .fa svg,#conversejs .chatbox converse-chat-toolbar button:disabled .fa svg:hover{fill:var(--chat-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar{border-top:var(--chatroom-message-input-border-top);color:var(--muc-toolbar-btn-color)}#conversejs .chatroom converse-chat-toolbar .fa,#conversejs .chatroom converse-chat-toolbar .fa:hover,#conversejs .chatroom converse-chat-toolbar .far,#conversejs .chatroom converse-chat-toolbar .far:hover,#conversejs .chatroom converse-chat-toolbar .fas,#conversejs .chatroom converse-chat-toolbar .fas:hover{color:var(--muc-toolbar-btn-color);font-size:var(--font-size-large)}#conversejs .chatroom converse-chat-toolbar .fa svg,#conversejs .chatroom converse-chat-toolbar .fa:hover svg,#conversejs .chatroom converse-chat-toolbar .far svg,#conversejs .chatroom converse-chat-toolbar .far:hover svg,#conversejs .chatroom converse-chat-toolbar .fas svg,#conversejs .chatroom converse-chat-toolbar .fas:hover svg{fill:var(--muc-toolbar-btn-color)}#conversejs .chatroom converse-chat-toolbar button:focus{outline-color:var(--muc-toolbar-btn-color)!important}#conversejs .chatroom converse-chat-toolbar button:disabled .fa{color:var(--muc-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar button:disabled .fa:hover{color:var(--muc-toolbar-btn-disabled-color)}#conversejs .chatroom converse-chat-toolbar button:disabled .fa svg,#conversejs .chatroom converse-chat-toolbar button:disabled .fa svg:hover{fill:var(--muc-toolbar-btn-disabled-color)}#conversejs.converse-overlayed .chat-toolbar li .toolbar-menu{min-width:235px}#conversejs.converse-overlayed .chatroom .chat-toolbar li .toolbar-menu{min-width:280px}#conversejs .chatbox-navback{display:none}#conversejs .flyout{position:absolute}@media screen and (max-height:450px){#conversejs .flyout{border-radius:0}}@media screen and (max-width:480px){#conversejs .flyout{border-radius:0}}@media screen and (max-height:450px){#conversejs .flyout{bottom:0}}@media screen and (max-width:480px){#conversejs .flyout{bottom:0}}#conversejs .chatbox-btn{border-radius:25%;border:none;cursor:pointer;font-size:var(--chatbox-button-size);margin:0 .2em;padding:0 0 0 .5em;text-decoration:none}#conversejs .chatbox-btn:active{position:relative;top:1px}#conversejs .chat-head{display:flex;flex-direction:row;color:#fff;font-size:100%;margin:0;padding:0;position:relative}#conversejs .chat-head.chat-head-chatbox{background-color:var(--chat-head-color)}#conversejs .chat-head .avatar{margin-right:.5em}#conversejs .chat-head .show-msg-author-modal{color:#fff!important}#conversejs .chat-head .chat-head__desc{color:var(--chat-head-color-lighten-50-percent);font-size:var(--font-size-small);margin:0;overflow:hidden;padding:.5rem 1rem .5rem 1rem;text-overflow:ellipsis;width:100%;max-height:5em}#conversejs .chat-head .chatbox-title{padding:.75rem 1rem 0 1rem;display:flex;flex-direction:row;justify-content:space-between;width:100%}#conversejs .chat-head .chatbox-title--no-desc{padding:.75rem 1rem}#conversejs .chat-head .chatbox-title--row{display:flex;flex-direction:row;overflow:hidden}#conversejs .chat-head .chatbox-title__text{overflow:hidden;text-overflow:ellipsis}#conversejs .chat-head .chatbox-title__buttons{display:flex;flex-direction:row-reverse;flex-wrap:nowrap;padding:0}#conversejs .chat-head a.chatbox-btn.fa,#conversejs .chat-head a.chatbox-btn.far,#conversejs .chat-head a.chatbox-btn.fas,#conversejs .chat-head a:hover.chatbox-btn.fa,#conversejs .chat-head a:hover.chatbox-btn.far,#conversejs .chat-head a:hover.chatbox-btn.fas,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.far,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fas,#conversejs .chat-head a:visited.chatbox-btn.fa,#conversejs .chat-head a:visited.chatbox-btn.far,#conversejs .chat-head a:visited.chatbox-btn.fas{color:#fff}#conversejs .chat-head a.chatbox-btn.fa.button-on:before,#conversejs .chat-head a.chatbox-btn.far.button-on:before,#conversejs .chat-head a.chatbox-btn.fas.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.fa.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.far.button-on:before,#conversejs .chat-head a:hover.chatbox-btn.fas.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.far.button-on:before,#conversejs .chat-head a:not([href]):not([tabindex]).chatbox-btn.fas.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.fa.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.far.button-on:before,#conversejs .chat-head a:visited.chatbox-btn.fas.button-on:before{padding:.2em;background-color:var(--chat-head-text-color);color:var(--chat-head-color)}#conversejs .chat-head .chatbox-btn{color:#fff}#conversejs .chat-head .chatbox-btn.fa,#conversejs .chat-head .chatbox-btn.far,#conversejs .chat-head .chatbox-btn.fas{color:#fff}#conversejs .chat-head .chatbox-btn:active{position:relative;top:1px}#conversejs .chat-head .chatbox-btn.button-on:before{border-radius:5%;background-color:var(--chat-head-text-color);color:var(--chat-head-color)}#conversejs .chatbox{text-align:left;margin:0 var(--chat-gutter)}@media screen and (max-height:450px){#conversejs .chatbox{margin:0;width:var(--mobile-chat-width)}}@media screen and (max-width:480px){#conversejs .chatbox{margin:0;width:var(--mobile-chat-width)}}#conversejs .chatbox .box-flyout{display:flex;flex-direction:column;justify-content:space-between;box-shadow:1px 3px 5px 3px rgba(0,0,0,.4);z-index:2;overflow:hidden;width:100%}@media screen and (max-height:450px){#conversejs .chatbox .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}@media screen and (max-width:480px){#conversejs .chatbox .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}#conversejs .chatbox .chat-title{display:var(--heading-display);font-family:var(--heading-font);color:var(--heading-color);display:block;line-height:var(--line-height-large);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs .chatbox .chat-title.groupchat{padding-right:var(--chatroom-head-title-padding-right)}#conversejs .chatbox .chat-title a{color:var(--chat-head-text-color);width:100%}#conversejs .chatbox .chat-body{display:flex;flex-direction:column;justify-content:space-between;background-color:var(--chat-head-color);border-bottom-left-radius:var(--chatbox-border-radius);border-bottom-right-radius:var(--chatbox-border-radius);border-top:0}@media screen and (max-height:450px){#conversejs .chatbox .chat-body{border-bottom-left-radius:0;border-bottom-right-radius:0}}@media screen and (max-width:480px){#conversejs .chatbox .chat-body{border-bottom-left-radius:0;border-bottom-right-radius:0}}#conversejs .chatbox .chat-body p{color:var(--text-color);font-size:var(--message-font-size);margin:0;padding:5px}#conversejs .chatbox .new-msgs-indicator{position:relative;width:100%;cursor:pointer;background-color:var(--chat-head-color);color:var(--light-background-color);padding:.5em;font-size:.9em;text-align:center;z-index:20;white-space:nowrap;margin-bottom:.25em}#conversejs .chatbox .chat-content{background-color:var(--chat-content-background-color);border:0;color:var(--text-color);font-size:var(--message-font-size);height:100%;line-height:1.3em;overflow:hidden;padding:0;display:flex;flex-direction:column;justify-content:space-between}#conversejs .chatbox .chat-content converse-chat-content{display:flex;flex-direction:column;height:100%;justify-content:space-between}#conversejs .chatbox .chat-content converse-chat-message .spinner{width:100%;overflow-y:hidden}#conversejs .chatbox .chat-content .chat-content__help{border-top:1px solid var(--chat-head-color);max-height:100%}#conversejs .chatbox .chat-content .chat-content__help .close-chat-help svg{fill:var(--chat-head-color)}#conversejs .chatbox .chat-content .chat-content__help converse-chat-help{height:100%;overflow-y:auto;display:block;padding:.5em 0}#conversejs .chatbox .chat-content .chat-content__help .close-chat-help{float:right;padding-right:1em;cursor:pointer;color:var(--chat-content-background-color)}#conversejs .chatbox .chat-content .chat-content__messages{overflow-x:hidden;overflow-y:auto;height:100%}#conversejs .chatbox .chat-content .chat-content__notifications{height:1.7em;white-space:pre;background-color:var(--chat-content-background-color);color:var(--subdued-color);font-size:90%;font-style:italic;line-height:var(--line-height-small);padding:0 1em .3em}#conversejs .chatbox .chat-content .chat-content__notifications:before{content:" "}#conversejs .chatbox .chat-content video{width:100%}#conversejs .chatbox .chat-content progress{margin:.5em 0;width:100%}#conversejs .chatbox .chat-content-sendbutton{height:calc(100% - (var(--chat-textarea-height) + var(--send-button-height) + 2 * var(--send-button-margin)))}#conversejs .chatbox .dropdown{background-color:var(--light-background-color)}#conversejs .chatbox .dropdown dd{margin:0;padding:0;position:relative}#conversejs .chatbox .sendXMPPMessage{-moz-background-clip:padding;-webkit-background-clip:padding-box;border-bottom-radius:var(--chatbox-border-radius);background-clip:padding-box;background-color:#fff;border:0;margin:0;padding:0}@media screen and (max-height:450px){#conversejs .chatbox .sendXMPPMessage{width:100%}}@media screen and (max-width:480px){#conversejs .chatbox .sendXMPPMessage{width:100%}}#conversejs .chatbox .sendXMPPMessage .suggestion-box__results:after{display:none}#conversejs .chatbox .sendXMPPMessage .spoiler-hint{width:100%}#conversejs .chatbox .sendXMPPMessage .chat-textarea:active,#conversejs .chatbox .sendXMPPMessage .chat-textarea:focus,#conversejs .chatbox .sendXMPPMessage input:active,#conversejs .chatbox .sendXMPPMessage input:focus{outline-color:var(--chat-head-color)}#conversejs .chatbox .sendXMPPMessage .chat-textarea.correcting,#conversejs .chatbox .sendXMPPMessage input.correcting{background-color:var(--chat-correcting-color)}#conversejs .chatbox .sendXMPPMessage .chat-textarea{color:var(--chat-textarea-color);background-color:var(--chat-textarea-background-color);border-top-left-radius:0;border-top-right-radius:0;border-bottom-radius:var(--chatbox-border-radius);padding-left:.5em;padding-right:4.5em;padding-top:.5em;padding-bottom:.5em;width:100%;border:none;min-height:var(--chat-textarea-height);margin-bottom:-4px;resize:none}#conversejs .chatbox .sendXMPPMessage .chat-textarea.spoiler{height:42px}#conversejs .chatbox .dragresize{background:0 0;border:0;margin:0;position:absolute;top:0;z-index:20}#conversejs .chatbox .dragresize-top{cursor:n-resize;height:5px;width:100%}#conversejs .chatbox .dragresize-left,#conversejs .chatbox .dragresize-occupants-left{cursor:w-resize;width:5px;height:100%;left:0}#conversejs .chatbox .dragresize-topleft{cursor:nw-resize;width:15px;height:15px;top:0;left:0}#conversejs.converse-embedded .controlbox-head,#conversejs.converse-overlayed .controlbox-head{padding:.5em}#conversejs.converse-embedded .chat-head,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}#conversejs.converse-embedded .chatbox,#conversejs.converse-overlayed .chatbox{min-width:var(--overlayed-chat-width)!important;width:var(--overlayed-chat-width)}#conversejs.converse-embedded .chatbox .box-flyout,#conversejs.converse-overlayed .chatbox .box-flyout{min-width:var(--overlayed-chat-width)!important;width:var(--overlayed-chat-width)}#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius)}@media screen and (max-height:450px){#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}}@media screen and (max-width:480px){#conversejs.converse-overlayed .box-flyout,#conversejs.converse-overlayed .chat-head{border-top-left-radius:0;border-top-right-radius:0}}#conversejs.converse-overlayed .flyout{bottom:var(--overlayed-chatbox-hover-height)}#conversejs.converse-overlayed .box-flyout{height:var(--overlayed-chat-height);min-height:calc(var(--overlayed-chat-height)/ 2)}#conversejs.converse-overlayed .chat-head{min-height:var(--overlayed-chat-head-height)}#conversejs.converse-overlayed .minimized-chats-flyout .chat-head{cursor:default}#conversejs.converse-overlayed .chat-textarea{max-height:var(--overlayed-max-chat-textarea-height)}#conversejs.converse-overlayed .chatbox .chat-body{height:calc(100% - var(--overlayed-chat-head-height))}#conversejs.converse-overlayed .chatbox .chatbox-title{padding:.5rem .75rem 0 .75rem}#conversejs.converse-overlayed .chatbox .chatbox-title--no-desc{padding:.5rem .75rem}#conversejs.converse-overlayed .chatbox converse-dropdown .btn--standalone{padding:0 .2em;margin:0 0 0 .5em}@media (max-width:767.98px){#conversejs.converse-overlayed>.row{flex-direction:column}#conversejs.converse-overlayed>.row.no-gutters{margin:-1em}}#conversejs.converse-embedded .flyout,#conversejs.converse-fullscreen .flyout{border-radius:0;border:none;bottom:0}#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{margin:0;position:relative;width:100%;padding-right:15px;padding-left:15px}#conversejs.converse-embedded .chatbox .box-flyout,#conversejs.converse-fullscreen .chatbox .box-flyout{box-shadow:none;overflow:hidden}@media (min-width:768px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 66.66667%;max-width:66.66667%}}@media (min-width:992px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 75%;max-width:75%}}@media (min-width:1200px){#conversejs.converse-embedded .chatbox,#conversejs.converse-fullscreen .chatbox{flex:0 0 83.33333%;max-width:83.33333%}}#conversejs.converse-embedded.converse-singleton .flyout,#conversejs.converse-fullscreen.converse-singleton .flyout{border:none!important}#conversejs.converse-embedded.converse-singleton .chat-head,#conversejs.converse-fullscreen.converse-singleton .chat-head{padding:.5em}#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{margin:0;position:relative;width:100%;padding-right:15px;padding-left:15px}@media (min-width:768px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}@media (min-width:992px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}@media (min-width:1200px){#conversejs.converse-embedded.converse-singleton .chatbox,#conversejs.converse-fullscreen.converse-singleton .chatbox{flex:0 0 100%;max-width:100%}}#conversejs.converse-embedded .chat-head{font-size:var(--font-size-huge)}#conversejs.converse-embedded .converse-chatboxes{z-index:1031;position:inherit;flex-wrap:nowrap;bottom:auto;height:100%;width:100%;margin-left:-15px}#conversejs.converse-embedded .chatbox .box-flyout{bottom:0;height:100%;min-width:auto;width:100%}#conversejs.converse-embedded .chat-textarea{max-height:var(--fullpage-max-chat-textarea-height)}#conversejs.converse-fullscreen .chatbox-btn{font-size:var(--fullpage-chatbox-button-size);margin:0 .3em}#conversejs.converse-fullscreen .chat-head{font-size:var(--font-size-huge)}#conversejs.converse-fullscreen .chat-textarea{max-height:var(--fullpage-max-chat-textarea-height)}#conversejs.converse-fullscreen .chatbox .box-flyout{box-shadow:none;height:var(--fullpage-chat-height);min-height:calc(var(--fullpage-chat-height)/ 2);width:var(--fullpage-chat-width);overflow:hidden}#conversejs.converse-fullscreen .chatbox .chat-body{height:inherit;overflow:hidden;background-color:var(--chat-head-color)}#conversejs.converse-fullscreen .chatbox .chat-title{font-size:var(--font-size-huge);line-height:var(--line-height-huge)}#conversejs.converse-fullscreen .chatbox .sendXMPPMessage ul{width:100%}@media (max-width:767.98px){#conversejs:not(.converse-embedded)>.row{flex-direction:row-reverse}#conversejs:not(.converse-embedded) #converse-login-panel .converse-form{padding:3em 2em 3em}#conversejs:not(.converse-embedded) .chatbox{width:calc(100% - 50px)}#conversejs:not(.converse-embedded) .chatbox .row .box-flyout{left:50px;bottom:0;height:var(--fullpage-chat-height);box-shadow:none}#conversejs.converse-fullscreen .chatbox .box-flyout .chatbox-navback,#conversejs.converse-mobile .chatbox .box-flyout .chatbox-navback,#conversejs.converse-overlayed .chatbox .box-flyout .chatbox-navback{margin:auto 0;margin-right:1em;display:flex}#conversejs.converse-fullscreen .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before,#conversejs.converse-mobile .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before,#conversejs.converse-overlayed .chatbox .box-flyout .chatbox-navback .fa-arrow-left:before{color:#fff}}#conversejs .oauth-providers{text-align:center}#conversejs .oauth-providers .oauth-provider{margin:1em 0}#conversejs .oauth-providers .oauth-provider .oauth-login{margin-left:0;color:var(--link-color);font-size:var(--font-size-large)}#conversejs .oauth-providers .oauth-provider .oauth-login:hover{color:var(--link-hover-color)}#conversejs .oauth-providers .oauth-provider .oauth-login i{color:var(--link-color);font-size:var(--font-size-huge);margin-right:.5em}#conversejs .set-xmpp-status .chat-status--online,#conversejs .xmpp-status .chat-status--online{color:var(--chat-status-online)}#conversejs .set-xmpp-status .chat-status--busy,#conversejs .xmpp-status .chat-status--busy{color:var(--chat-status-busy)}#conversejs .set-xmpp-status .chat-status--away,#conversejs .xmpp-status .chat-status--away{color:var(--chat-status-away)}#conversejs .set-xmpp-status .fa-times-circle,#conversejs .set-xmpp-status .far.fa-circle,#conversejs .xmpp-status .fa-times-circle,#conversejs .xmpp-status .far.fa-circle{color:var(--subdued-color)}#conversejs .set-xmpp-status .chat-status{padding-right:.5em}#conversejs .room-info{font-size:var(--font-size-small);font-style:normal;font-weight:400}#conversejs .room-info li.room-info{display:block;margin-left:5px}#conversejs .room-info p.room-info{line-height:var(--line-height);margin:0;display:block;white-space:normal}#conversejs div.room-info{padding:.3em 0;clear:left;width:100%}#conversejs #controlbox{order:-1;color:var(--controlbox-text-color);margin-right:calc(3 * var(--chat-gutter))}#conversejs #controlbox converse-brand-heading{width:100%;display:block}#conversejs #controlbox .brand-name-wrapper{font-size:200%}#conversejs #controlbox .brand-name-wrapper--fullscreen{font-size:100%}#conversejs #controlbox .open-rooms-toggle,#conversejs #controlbox .open-rooms-toggle .fa{color:var(--groupchats-header-color)!important}#conversejs #controlbox .open-rooms-toggle .fa:hover,#conversejs #controlbox .open-rooms-toggle:hover{color:var(--chatroom-head-bg-color-dark)!important}#conversejs #controlbox .box-flyout{background-color:var(--controlbox-pane-background-color)}#conversejs #controlbox.logged-out .box-flyout .controlbox-pane{overflow-y:auto}#conversejs #controlbox form.search-xmpp-contact{margin:0;padding-left:5px;padding:0 0 5px 5px}#conversejs #controlbox form.search-xmpp-contact input{width:8em}#conversejs #controlbox .msgs-indicator{margin-right:.5em}#conversejs #controlbox a.subscribe-to-user{padding-left:2em;font-weight:700}#conversejs #controlbox #converse-register{opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease;background-color:var(--controlbox-pane-background-color)}#conversejs #controlbox #converse-register .title{font-weight:700}#conversejs #controlbox #converse-register .info{color:green;font-size:90%;margin:1.5em 0}#conversejs #controlbox #converse-register .form-errors{color:var(--error-color);margin:1em 0}#conversejs #controlbox #converse-register .provider-title{font-size:var(--font-size-huge);margin:0}#conversejs #controlbox #converse-register .provider-score{width:178px;margin-bottom:8px}#conversejs #controlbox #converse-register .form-help .url{font-weight:700;color:var(--link-color)}#conversejs #controlbox #converse-register .input-group{display:table;margin:auto;width:100%}#conversejs #controlbox #converse-register .input-group span{overflow-x:hidden;text-overflow:ellipsis;max-width:110px}#conversejs #controlbox #converse-register .input-group input[name=username],#conversejs #controlbox #converse-register .input-group span{display:table-cell;text-align:left}#conversejs #controlbox #converse-register .instructions{color:gray;font-size:85%}#conversejs #controlbox #converse-register .instructions:hover{color:var(--controlbox-text-color)}#conversejs #controlbox .conn-feedback{color:var(--controlbox-head-color)}#conversejs #controlbox .conn-feedback.error{color:var(--error-color)}#conversejs #controlbox .conn-feedback p{padding-bottom:1em}#conversejs #controlbox .conn-feedback p.feedback-subject.error{font-weight:700}#conversejs #controlbox #converse-login-panel,#conversejs #controlbox #converse-register-panel{padding-top:0;padding-bottom:0}#conversejs #controlbox #converse-login-panel{flex-direction:row}#conversejs #controlbox .toggle-register-login{font-weight:700}#conversejs #controlbox .controlbox-pane .userinfo{padding-bottom:1em}#conversejs #controlbox .controlbox-pane .userinfo .username{margin-left:.5em;overflow:hidden;text-overflow:ellipsis}#conversejs #controlbox .controlbox-pane .userinfo .profile{margin-bottom:.75em}#conversejs #controlbox #chatrooms{padding:0}#conversejs #controlbox #chatrooms .add-chatroom{margin:0;padding:0}#conversejs #controlbox #chatrooms .add-chatroom input[type=button],#conversejs #controlbox #chatrooms .add-chatroom input[type=submit],#conversejs #controlbox #chatrooms .add-chatroom input[type=text]{width:100%}#conversejs #controlbox .controlbox-section .controlbox-heading{font-family:var(--heading-font);color:var(--controlbox-heading-color);font-weight:var(--controlbox-heading-font-weight);padding:0;font-size:1.1em;line-height:1.1em;text-transform:uppercase}#conversejs #controlbox .controlbox-section .controlbox-heading--groupchats{color:var(--groupchats-header-color)}#conversejs #controlbox .controlbox-section .controlbox-heading--contacts{color:var(--chat-head-color-dark)}#conversejs #controlbox .controlbox-section .controlbox-heading--headline{color:var(--headline-head-color)}#conversejs #controlbox .controlbox-section .controlbox-heading__btn{cursor:pointer;font-size:1em;padding:0;margin:var(--controlbox-heading-top-margin) 0 var(--inline-action-margin) 0;min-width:25px;text-align:center}#conversejs #controlbox .controlbox-section .controlbox-heading__btn.fa-vcard{margin-top:1em}#conversejs #controlbox .dropdown a{width:143px;display:inline-block}#conversejs #controlbox .dropdown li{list-style:none;padding-left:0}#conversejs #controlbox .dropdown dd ul{padding:0;list-style:none;position:absolute;left:0;top:0;width:100%;z-index:21;background-color:var(--light-background-color)}#conversejs #controlbox .dropdown dd ul li:hover{background-color:var(--highlight-color)}#conversejs #controlbox .dropdown dd.search-xmpp{height:0}#conversejs #controlbox .dropdown dd.search-xmpp .contact-form-container{position:absolute;z-index:22}#conversejs #controlbox .dropdown dd.search-xmpp .contact-form-container form{box-shadow:1px 4px 10px 1px rgba(0,0,0,.4);background-color:#fff}#conversejs #controlbox .dropdown dd.search-xmpp li:hover{background-color:var(--light-background-color)}#conversejs #controlbox .dropdown dt a span{cursor:pointer;display:block;padding:4px 7px 0 5px}#conversejs #controlbox .controlbox-panes{background-color:var(--controlbox-pane-background-color);border-right:.2143rem solid var(--panel-divider-color);height:100%;overflow-y:auto}#conversejs #controlbox .controlbox-subtitle{font-size:90%;padding:.5em;text-align:right}#conversejs #controlbox .controlbox-pane{background-color:var(--controlbox-pane-background-color);border:0;font-size:var(--font-size);left:0;text-align:left;overflow-x:hidden;padding:0 0 1em 0}#conversejs #controlbox .controlbox-pane .controlbox-padded{padding-left:1em;padding-right:1em;align-items:center;line-height:normal}#conversejs #controlbox .controlbox-pane .controlbox-padded .change-status{min-width:25px;text-align:center}#conversejs #controlbox .controlbox-pane .add-converse-contact{margin:0 0 .75em 0}#conversejs #controlbox .controlbox-pane .chatbox-btn{margin:0}#conversejs #controlbox .controlbox-pane .switch-form{text-align:center;padding:2em 0}#conversejs #controlbox .controlbox-pane .switch-form p{margin-top:.5em}#conversejs #controlbox .controlbox-pane dd{margin-left:0;margin-bottom:0}#conversejs #controlbox .controlbox-pane dd.odd{background-color:#dceac5}#conversejs #controlbox .add-xmpp-contact{padding:1em .5em}#conversejs #controlbox .add-xmpp-contact input{margin:0 0 1rem;width:100%}#conversejs #controlbox .add-xmpp-contact button{width:100%}#conversejs.converse-overlayed .toggle-controlbox{order:-1;text-align:center;background-color:var(--link-color);border-top-left-radius:var(--button-border-radius);border-top-right-radius:var(--button-border-radius);color:#0a0a0a;float:right;height:100%;margin:0 var(--chat-gutter);padding:1em}#conversejs.converse-overlayed .toggle-controlbox span{color:var(--inverse-link-color)}#conversejs.converse-overlayed #controlbox{min-width:var(--controlbox-width)!important;width:var(--controlbox-width)}#conversejs.converse-overlayed #controlbox .box-flyout{min-width:var(--controlbox-width)!important;width:var(--controlbox-width)}#conversejs.converse-overlayed #controlbox .login-trusted{white-space:nowrap;font-size:90%}#conversejs.converse-overlayed #controlbox #converse-login-trusted{margin-top:.5em}#conversejs.converse-overlayed #controlbox:not(.logged-out) .controlbox-head{height:15px}#conversejs.converse-overlayed #controlbox .controlbox-head{display:flex;flex-direction:row-reverse;flex-wrap:nowrap;justify-content:space-between;min-height:0}#conversejs.converse-overlayed #controlbox .controlbox-head .brand-heading{color:var(--controlbox-text-color);font-size:2em}#conversejs.converse-overlayed #controlbox .controlbox-head .chatbox-btn{color:var(--controlbox-head-color);margin:0}#conversejs.converse-overlayed #controlbox #converse-login,#conversejs.converse-overlayed #controlbox #converse-register{flex:0 0 100%;max-width:100%;padding-bottom:0}#conversejs.converse-overlayed #controlbox #converse-register .button-cancel{font-size:90%}#conversejs.converse-overlayed #controlbox .controlbox-panes{border-radius:var(--chatbox-border-radius)}#conversejs.converse-embedded .toggle-controlbox,#conversejs.converse-fullscreen .toggle-controlbox{display:none}#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{position:relative;width:100%;padding-right:15px;padding-left:15px;margin:0}@media (min-width:768px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 33.33333%;max-width:33.33333%}}@media (min-width:992px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 25%;max-width:25%}}@media (min-width:1200px){#conversejs.converse-embedded #controlbox,#conversejs.converse-fullscreen #controlbox,#conversejs.converse-mobile #controlbox{flex:0 0 16.66667%;max-width:16.66667%}}#conversejs.converse-embedded #controlbox.logged-out,#conversejs.converse-fullscreen #controlbox.logged-out,#conversejs.converse-mobile #controlbox.logged-out{flex:0 0 100%;max-width:100%}#conversejs.converse-embedded #controlbox .controlbox-pane,#conversejs.converse-fullscreen #controlbox .controlbox-pane,#conversejs.converse-mobile #controlbox .controlbox-pane{border-radius:0}#conversejs.converse-embedded #controlbox .flyout,#conversejs.converse-fullscreen #controlbox .flyout,#conversejs.converse-mobile #controlbox .flyout{border-radius:0}#conversejs.converse-embedded #controlbox #converse-login-panel,#conversejs.converse-fullscreen #controlbox #converse-login-panel,#conversejs.converse-mobile #controlbox #converse-login-panel{border-radius:0}#conversejs.converse-embedded #controlbox #converse-login-panel .converse-form,#conversejs.converse-fullscreen #controlbox #converse-login-panel .converse-form,#conversejs.converse-mobile #controlbox #converse-login-panel .converse-form{padding:3em 2em 3em}#conversejs.converse-embedded #controlbox .toggle-register-login,#conversejs.converse-fullscreen #controlbox .toggle-register-login,#conversejs.converse-mobile #controlbox .toggle-register-login{line-height:var(--line-height-huge)}#conversejs.converse-embedded #controlbox converse-brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading{flex:0 0 100%;max-width:100%;margin-top:5em;margin-bottom:1em}#conversejs.converse-embedded #controlbox converse-brand-heading .brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-heading{font-size:500%;padding:.7em 0 0 0;opacity:.8;color:var(--brand-heading-color)}#conversejs.converse-embedded #controlbox converse-brand-heading .brand-subtitle,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-subtitle,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-subtitle{font-size:90%;padding:.5em}@media screen and (max-width:480px){#conversejs.converse-embedded #controlbox converse-brand-heading .brand-heading,#conversejs.converse-fullscreen #controlbox converse-brand-heading .brand-heading,#conversejs.converse-mobile #controlbox converse-brand-heading .brand-heading{font-size:300%}}#conversejs.converse-embedded #controlbox.logged-out,#conversejs.converse-fullscreen #controlbox.logged-out,#conversejs.converse-mobile #controlbox.logged-out{flex:0 0 100%;max-width:100%;opacity:0;-webkit-animation-name:fadein;animation-name:fadein;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-timing-function:ease;animation-timing-function:ease;width:100%}#conversejs.converse-embedded #controlbox.logged-out .box-flyout,#conversejs.converse-fullscreen #controlbox.logged-out .box-flyout,#conversejs.converse-mobile #controlbox.logged-out .box-flyout{width:100%}#conversejs.converse-embedded #controlbox .box-flyout,#conversejs.converse-fullscreen #controlbox .box-flyout,#conversejs.converse-mobile #controlbox .box-flyout{border:0;width:100%;z-index:1;background-color:var(--controlbox-head-color)}#conversejs.converse-embedded #controlbox .box-flyout .controlbox-head,#conversejs.converse-fullscreen #controlbox .box-flyout .controlbox-head,#conversejs.converse-mobile #controlbox .box-flyout .controlbox-head{display:none}#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{position:relative;width:100%;padding-right:15px;padding-left:15px;flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}@media (min-width:576px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}}@media (min-width:768px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 66.66667%;max-width:66.66667%;margin-left:16.66667%}}@media (min-width:992px){#conversejs.converse-embedded #controlbox #converse-login,#conversejs.converse-embedded #controlbox #converse-register,#conversejs.converse-fullscreen #controlbox #converse-login,#conversejs.converse-fullscreen #controlbox #converse-register,#conversejs.converse-mobile #controlbox #converse-login,#conversejs.converse-mobile #controlbox #converse-register{flex:0 0 50%;max-width:50%;margin-left:25%}}#conversejs.converse-embedded #controlbox #converse-login .instructions,#conversejs.converse-embedded #controlbox #converse-login .title,#conversejs.converse-embedded #controlbox #converse-register .instructions,#conversejs.converse-embedded #controlbox #converse-register .title,#conversejs.converse-fullscreen #controlbox #converse-login .instructions,#conversejs.converse-fullscreen #controlbox #converse-login .title,#conversejs.converse-fullscreen #controlbox #converse-register .instructions,#conversejs.converse-fullscreen #controlbox #converse-register .title,#conversejs.converse-mobile #controlbox #converse-login .instructions,#conversejs.converse-mobile #controlbox #converse-login .title,#conversejs.converse-mobile #controlbox #converse-register .instructions,#conversejs.converse-mobile #controlbox #converse-register .title{margin:1em 0}#conversejs.converse-embedded #controlbox #converse-login input[type=button],#conversejs.converse-embedded #controlbox #converse-login input[type=submit],#conversejs.converse-embedded #controlbox #converse-register input[type=button],#conversejs.converse-embedded #controlbox #converse-register input[type=submit],#conversejs.converse-fullscreen #controlbox #converse-login input[type=button],#conversejs.converse-fullscreen #controlbox #converse-login input[type=submit],#conversejs.converse-fullscreen #controlbox #converse-register input[type=button],#conversejs.converse-fullscreen #controlbox #converse-register input[type=submit],#conversejs.converse-mobile #controlbox #converse-login input[type=button],#conversejs.converse-mobile #controlbox #converse-login input[type=submit],#conversejs.converse-mobile #controlbox #converse-register input[type=button],#conversejs.converse-mobile #controlbox #converse-register input[type=submit]{width:auto}@media (max-width:767.98px){#conversejs{left:0;right:0;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}#conversejs .converse-chatboxes{margin:0!important;flex-direction:row!important;justify-content:space-between}#conversejs .converse-chatboxes .converse-chatroom{font-size:14px}#conversejs .converse-chatboxes .chatbox .box-flyout{margin-left:15px;left:0;bottom:0;border-radius:0;width:100vw!important;height:var(--fullpage-chat-height)}#conversejs .converse-chatboxes #controlbox{width:100vw!important}#conversejs .converse-chatboxes #controlbox .box-flyout{width:100vw!important;height:var(--fullpage-chat-height);margin-right:-15px}#conversejs .converse-chatboxes #controlbox .sidebar{display:block}#conversejs .converse-chatboxes.sidebar-open .chatbox:not(#controlbox){display:none}#conversejs .converse-chatboxes.sidebar-open #controlbox .controlbox-pane{display:block}}#conversejs.converse-fullscreen .controlbox-panes{padding-top:1em}#conversejs.converse-overlayed .brand-heading{padding-top:.8rem;padding-left:.8rem;width:100%}#conversejs.converse-overlayed .converse-svg-logo{height:1em}#conversejs.converse-overlayed #controlbox #converse-login-panel{height:100%}#conversejs.converse-overlayed #controlbox .controlbox-panes{margin-top:.5em}#conversejs #converse-modals .modal{background-color:rgba(0,0,0,.4)}#conversejs #converse-modals .modal .modal-body{overflow-y:auto;max-height:75vh;margin-bottom:2em}#conversejs #converse-modals .modal .modal-body p{padding:.25rem 0}#conversejs #converse-modals .modal .modal-body .confirm .form-group p:first-child{font-size:110%;font-weight:700}#conversejs #converse-modals .modal .modal-body.fit-content{box-sizing:content-box}#conversejs #converse-modals .modal .modal-body.fit-content img{max-width:90vw}#conversejs #converse-modals .modal .modal-body--image .chat-image{max-height:99%;max-width:100%}#conversejs #converse-modals .modal .modal-footer{justify-content:flex-start}#conversejs #converse-modals .modal .roomid-policy-error{color:var(--error-color);font-size:var(--font-size-small);float:right}#conversejs #converse-modals .scrollable-container{max-height:45vh;overflow-y:auto}#conversejs #converse-modals .affiliation-form,#conversejs #converse-modals .role-form{padding:2em 0 1em 0}#conversejs #converse-modals .set-xmpp-status{margin:1em}#conversejs #converse-modals .set-xmpp-status .custom-control-label{padding-top:.25em}#conversejs #converse-modals #omemo-tabpanel{margin-top:1em}#conversejs #converse-modals .btn{font-weight:400}#conversejs #converse-modals #user-profile-modal .profile-form label{font-weight:700}#conversejs #converse-modals #user-profile-modal .fingerprint-removal label{display:flex;padding:.75rem 1.25rem}#conversejs #converse-modals #user-profile-modal .list-group-item{display:flex;justify-content:left;font-size:95%}#conversejs #converse-modals #user-profile-modal .list-group-item input[type=checkbox]{margin-right:1em}#conversejs #converse-modals .fingerprints{width:100%;margin-bottom:1em}#conversejs #converse-modals .fingerprint-trust{display:flex;justify-content:space-between;font-size:95%}#conversejs #converse-modals .fingerprint-trust .fingerprint{margin-left:1em}#conversejs #converse-roster{text-align:left;width:100%;position:relative;margin:0;height:var(--roster-height);padding:0;overflow:hidden;height:calc(100% - 70px)}#conversejs #converse-roster #online-count{display:none}#conversejs #converse-roster .search-xmpp ul li.chat-info{padding-left:10px}#conversejs #converse-roster .roster-filter-form{width:100%}#conversejs #converse-roster .roster-filter-form .button-group{padding:.2em}#conversejs #converse-roster .roster-filter-form span{padding:.3em;cursor:pointer;min-width:25px;text-align:center}#conversejs #converse-roster .roster-filter-form .roster-filter{width:100%;margin:.2em;font-size:calc(var(--font-size) - 2px)}#conversejs #converse-roster .roster-filter-form .state-type{font-size:calc(var(--font-size) - 2px);width:100%}#conversejs #converse-roster .roster-contacts{padding:0;margin:0 0 .2em 0;height:100%;overflow-x:hidden;overflow-y:auto}#conversejs #converse-roster .roster-contacts .roster-group{border:none;color:var(--text-color);font-weight:400;text-shadow:0 1px 0 var(--text-shadow-color);margin:.75em 0 .75em 0}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle{font-family:var(--heading-font);display:block;width:100%;padding-top:0;padding-bottom:.3rem}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle,#conversejs #converse-roster .roster-contacts .roster-group .group-toggle .fa{color:var(--chat-head-color-dark)!important}#conversejs #converse-roster .roster-contacts .roster-group .group-toggle .fa:hover,#conversejs #converse-roster .roster-contacts .roster-group .group-toggle:hover{color:var(--chat-head-color-darker)!important}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact{margin:.25em 0}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status{vertical-align:middle;font-size:.6em;margin-right:0;margin-left:-.7em;margin-bottom:-1.5em;border-radius:50%;border:2px solid var(--occupants-background-color)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--offline{margin-right:.8em}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--online{color:var(--chat-status-online)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--busy{color:var(--chat-status-busy)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--away{color:var(--chat-status-away)}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .chat-status--offline{display:none}#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .fa-times-circle,#conversejs #converse-roster .roster-contacts .roster-group .current-xmpp-contact .far.fa-circle{color:var(--subdued-color)}#conversejs #converse-roster .roster-contacts .roster-group li.requesting-xmpp-contact a{line-height:var(--line-height)}#conversejs #converse-roster .roster-contacts .roster-group li.requesting-xmpp-contact .req-contact-name{padding:0 .2em 0 0}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat{margin:0;padding:0}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat.unread-msgs{font-weight:700}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat.unread-msgs .contact-name{width:70%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .msgs-indicator{color:#fff;background-color:var(--chat-head-color);opacity:1;border-radius:10%;padding:.2em .4em;font-size:var(--font-size-small)}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0;margin:0;max-width:85%;float:none;height:100%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name.unread-msgs{max-width:60%}#conversejs #converse-roster .roster-contacts .roster-group li .open-chat .contact-name.contact-name--offline{margin-left:.7em}#conversejs #converse-roster .roster-contacts .roster-group li.odd{background-color:#dceac5}#conversejs #converse-roster .roster-contacts .roster-group li a,#conversejs #converse-roster .roster-contacts .roster-group li span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#conversejs #converse-roster .roster-contacts .roster-group li .span{display:inline-block}#conversejs #converse-roster .roster-contacts .roster-group li .decline-xmpp-request{margin-left:5px}#conversejs #converse-roster .roster-contacts .roster-group li:hover{background-color:var(controlbox-pane-bg-hover-color)}#conversejs #converse-roster span.pending-contact-name{line-height:var(--line-height);width:100%}#conversejs .list-container{text-align:left;padding:.3em 0}#conversejs .list-container .list-toggle{font-family:var(--heading-font);font-weight:var(--list-toggle-font-weight);display:block;color:var(--list-toggle-color);padding:0 0 .5rem 0}#conversejs .list-container .list-toggle:hover{color:var(--list-toggle-hover-color)}#conversejs .items-list{text-align:left}#conversejs .items-list .list-item{border:none;clear:both;color:var(--text-color);overflow:hidden;padding:.5em 0;text-shadow:0 1px 0 var(--text-shadow-color);word-wrap:break-word;height:2.5em}#conversejs .items-list .list-item.unread-msgs{font-weight:700}#conversejs .items-list .list-item .list-item-link{color:var(--list-item-link-color);margin:auto;font-size:var(--font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:baseline}#conversejs .items-list .list-item .list-item-link:hover{color:var(--list-item-link-hover-color)}#conversejs .items-list .list-item .list-item-badge{opacity:1;border-radius:25%;color:#fff;font-size:var(--font-size-small);line-height:var(--font-size-small)}#conversejs .items-list .list-item .list-item-action{opacity:0;font-size:var(--font-size-tiny);padding:.3em 0 0 0;margin:0 0 0 var(--inline-action-margin);width:2em;height:2em;color:var(--subdued-color)}#conversejs .items-list .list-item .list-item-action:before{font-size:var(--font-size)}#conversejs .items-list .list-item .list-item-action.button-on{color:var(--list-item-link-color)}#conversejs .items-list .list-item .list-item-action.button-on:hover{color:var(--list-item-link-hover-color)}#conversejs .items-list .list-item .list-item-action:hover{color:var(--list-toggle-hover-color);opacity:1}#conversejs .items-list .list-item .list-item-action--visible{opacity:1!important}#conversejs .items-list .list-item.open{background-color:var(--list-item-open-color)}#conversejs .items-list .list-item.open:hover{background-color:var(--list-item-open-hover-color)!important}#conversejs .items-list .list-item.open a{color:#fff}#conversejs .items-list .list-item.open .list-item-link:hover{color:#fff}#conversejs .items-list .list-item.open .list-item-action{color:var(--list-item-action-color)}#conversejs .items-list .list-item.open .list-item-action:hover{color:#fff}#conversejs .items-list .list-item:hover{background-color:var(--controlbox-pane-bg-hover-color)}#conversejs .items-list .list-item:hover .fa,#conversejs .items-list .list-item:hover .far,#conversejs .items-list .list-item:hover .fas{opacity:1}#conversejs .badge--muc,#conversejs.converse-embedded .badge--muc{background-color:var(--groupchats-header-color)}#conversejs .add-chatroom input[type=button],#conversejs .add-chatroom input[type=submit],#conversejs.converse-embedded .add-chatroom input[type=button],#conversejs.converse-embedded .add-chatroom input[type=submit]{margin:.3em 0}#conversejs #muc-details-modal .features-list,#conversejs.converse-embedded #muc-details-modal .features-list{margin-left:1em}#conversejs .chatroom-features,#conversejs.converse-embedded .chatroom-features{width:100%}#conversejs .chatroom-features .features-list,#conversejs.converse-embedded .chatroom-features .features-list{padding-top:0}#conversejs .chatroom-features .features-list .feature,#conversejs.converse-embedded .chatroom-features .features-list .feature{width:100%;margin-right:.5em;padding-right:0;font-size:1em;cursor:help}#conversejs .chatroom-features .features-list .feature .fa,#conversejs.converse-embedded .chatroom-features .features-list .feature .fa{margin-right:.5em;color:var(--text-color)}#conversejs .chat-head-chatroom,#conversejs.converse-embedded .chat-head-chatroom{color:var(--chatroom-head-color);background-color:var(--chatroom-head-bg-color);border-bottom:var(--chatroom-head-border-bottom)}#conversejs .chat-head-chatroom .chat-head__desc,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc{color:var(--chatroom-head-color);display:var(--chatroom-head-description-display)}#conversejs .chat-head-chatroom .chat-head__desc a,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc a{color:var(--chatroom-head-description-link-color)}#conversejs .chat-head-chatroom .chat-head__desc:hover button,#conversejs.converse-embedded .chat-head-chatroom .chat-head__desc:hover button{display:inline-block}#conversejs .chat-head-chatroom .chatbox-title .btn--transparent i,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title .btn--transparent i{color:var(--chatroom-head-color)}#conversejs .chat-head-chatroom .chatbox-title .chatbox-title__text--bookmarked,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title .chatbox-title__text--bookmarked{margin-left:.5em;color:var(--chatroom-head-color)}#conversejs .chat-head-chatroom .chatbox-title__buttons,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__buttons{background-color:var(--chatroom-head-bg-color)}#conversejs .chat-head-chatroom a.chatbox-btn.fa,#conversejs .chat-head-chatroom a:hover.chatbox-btn.fa,#conversejs .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs .chat-head-chatroom a:visited.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa,#conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa{color:var(--chat-head-text-color)}#conversejs .chat-head-chatroom a.chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:hover.chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs .chat-head-chatroom a:visited.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:hover.chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:not([href]):not([tabindex]).chatbox-btn.fa.button-on:before,#conversejs.converse-embedded .chat-head-chatroom a:visited.chatbox-btn.fa.button-on:before{color:var(--chatroom-head-button-color)}#conversejs .chat-head-chatroom .chatbox-btn.button-on:before,#conversejs.converse-embedded .chat-head-chatroom .chatbox-btn.button-on:before{color:var(--chatroom-head-button-color)}#conversejs .chat-head-chatroom .chatbox-title__text,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__text{display:var(--heading-display);font-weight:var(--chatroom-head-title-font-weight);margin:auto 0;padding-right:var(--chatroom-head-title-padding-right);white-space:nowrap}#conversejs .chat-head-chatroom .chatbox-title__text .chatroom-jid,#conversejs.converse-embedded .chat-head-chatroom .chatbox-title__text .chatroom-jid{font-size:var(--font-size-small)}#conversejs .empty-history-feedback,#conversejs.converse-embedded .empty-history-feedback{position:relative}#conversejs .empty-history-feedback span,#conversejs.converse-embedded .empty-history-feedback span{width:100%;text-align:center;position:absolute;margin-top:50%}#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--chatroom-width)}@media screen and (max-height:450px){#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--mobile-chat-width)}}@media screen and (max-width:480px){#conversejs .chatroom,#conversejs.converse-embedded .chatroom{width:var(--mobile-chat-width)}}#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{overflow-y:hidden;background-color:var(--chatroom-head-bg-color);width:100%}@media screen and (max-height:450px){#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}@media screen and (max-width:480px){#conversejs .chatroom .box-flyout,#conversejs.converse-embedded .chatroom .box-flyout{height:var(--mobile-chat-height);width:var(--mobile-chat-width);height:var(--fullpage-chat-height)}}#conversejs .chatroom .box-flyout .chatroom-body,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body{flex-direction:row;flex-flow:nowrap;background-color:#fff;border-top:0;width:100%;overflow:hidden}#conversejs .chatroom .box-flyout .chatroom-body .row,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .row{flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .chat-topic,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-topic{font-weight:700;color:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-info,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info{color:var(--chat-info-color);line-height:normal}#conversejs .chatroom .box-flyout .chatroom-body .chat-info.badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info.badge{color:var(--chat-head-text-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-info.chat-msg--retracted,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-info.chat-msg--retracted{color:var(--subdued-color)}#conversejs .chatroom .box-flyout .chatroom-body .disconnect-container,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .disconnect-container{margin:1em;width:100%}#conversejs .chatroom .box-flyout .chatroom-body .disconnect-container h3.disconnect-msg,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .disconnect-container h3.disconnect-msg{padding-bottom:1em}#conversejs .chatroom .box-flyout .chatroom-body .chat-area,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area{display:flex;flex-direction:column;flex:0 1 100%;justify-content:flex-end;min-width:25%;word-wrap:break-word}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .new-msgs-indicator,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .new-msgs-indicator{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content{height:100%}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help{border-top:1px solid var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help .close-chat-help svg,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area .chat-content__help .close-chat-help svg{fill:var(--chatroom-head-bg-color)}#conversejs .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants{display:flex;flex-direction:column;justify-content:space-between;overflow-x:hidden;overflow-y:hidden;vertical-align:top;background-color:var(--occupants-background-color);border-left:var(--occupants-border-left);padding:.5em;max-width:75%;min-width:20%;flex:0 0 25%}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header{display:flex;flex-direction:column}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header .hide-occupants,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header .hide-occupants{align-self:flex-end;cursor:pointer;font-size:var(--font-size-small)}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-header--title,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-header--title{margin-top:.5em;margin-bottom:.5em;display:flex;flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .occupants .fa-user-plus,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .fa-user-plus{margin-right:.25em}#conversejs .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-heading{font-family:var(--heading-font);color:var(--groupchats-header-color-dark);padding-left:0;margin-right:1em}#conversejs .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul{padding:0}#conversejs .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul li,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .suggestion-box ul li{padding:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul{padding:0;margin-bottom:.5em;overflow-x:hidden;overflow-y:auto;list-style:none}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list{overflow-y:auto;flex-basis:0;flex-grow:1}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li{cursor:default;display:block;font-size:var(--font-size-small);overflow:hidden;padding:.25em .25em .25em 0;text-overflow:ellipsis}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li .fa,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li .fa{margin-right:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.feature,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.feature{font-size:var(--font-size-tiny)}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant{cursor:pointer}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge{display:flex;justify-content:space-between;flex-wrap:wrap}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges{display:flex;justify-content:flex-end;flex-wrap:wrap;flex-direction:row}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges span,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-nick-badge .occupant-badges span{margin-right:.25rem}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant div.row.no-gutters,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant div.row.no-gutters{flex-wrap:nowrap;min-height:1.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .badge,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .badge{margin-bottom:.125rem}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status{display:inline-block;margin:0 .5em .125em 0;width:.5em;height:.5em}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-chat,#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-online,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-chat,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-online{background-color:#1a9707}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-dnd,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-dnd{background-color:red}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-away,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-away{background-color:#ff8c00}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-xa,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-xa{background-color:orange}#conversejs .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-offline,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul li.occupant .occupant-status.occupant-offline{background-color:#a9a9a9}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container{background-color:#fff;border:0;color:var(--text-color);font-size:var(--font-size);height:100%;width:100%;overflow-y:auto}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container .validation-message,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container .validation-message{font-size:90%;color:var(--error-color)}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=button],#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=submit],#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=button],#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container input[type=submit]{margin:0 .5em}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form-container .button-primary,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container .button-primary{background-color:var(--chatroom-head-button-color)}#conversejs .chatroom .box-flyout .chatroom-body .chatroom-form,#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form{display:flex;flex-direction:column;justify-content:center;padding:2em}#conversejs .chatroom .muc-bottom-panel,#conversejs.converse-embedded .chatroom .muc-bottom-panel{height:3em;padding:.5em;text-align:center;font-size:var(--font-size-small);background-color:var(--chatroom-head-bg-color);color:#fff}#conversejs .chatroom .muc-bottom-panel.muc-bottom-panel--nickname,#conversejs.converse-embedded .chatroom .muc-bottom-panel.muc-bottom-panel--nickname{padding:0;height:16em}#conversejs .chatroom .muc-bottom-panel.muc-bottom-panel--nickname .chatroom-form-container .chatroom-form,#conversejs.converse-embedded .chatroom .muc-bottom-panel.muc-bottom-panel--nickname .chatroom-form-container .chatroom-form{padding-top:2em;padding-bottom:0}#conversejs .chatroom .sendXMPPMessage .suggestion-box__results--above,#conversejs.converse-embedded .chatroom .sendXMPPMessage .suggestion-box__results--above{bottom:4.5em}#conversejs .chatroom .sendXMPPMessage .chat-textarea:active,#conversejs .chatroom .sendXMPPMessage .chat-textarea:focus,#conversejs .chatroom .sendXMPPMessage input:active,#conversejs .chatroom .sendXMPPMessage input:focus,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea:active,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea:focus,#conversejs.converse-embedded .chatroom .sendXMPPMessage input:active,#conversejs.converse-embedded .chatroom .sendXMPPMessage input:focus{outline-color:var(--chatroom-head-bg-color)}#conversejs .chatroom .sendXMPPMessage .chat-textarea.correcting,#conversejs .chatroom .sendXMPPMessage input.correcting,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea.correcting,#conversejs.converse-embedded .chatroom .sendXMPPMessage input.correcting{background-color:var(--chatroom-correcting-color)}#conversejs .chatroom .sendXMPPMessage .chat-textarea,#conversejs.converse-embedded .chatroom .sendXMPPMessage .chat-textarea{border-bottom-right-radius:0}#conversejs .chatroom .room-invite .invited-contact,#conversejs.converse-embedded .chatroom .room-invite .invited-contact{margin:-1px 0 0 -1px;width:100%;border:1px solid #999}#conversejs.converse-overlayed .chatbox.chatroom{min-width:var(--chatroom-width)!important;width:var(--chatroom-width)}#conversejs.converse-overlayed .chatbox.chatroom .box-flyout{min-width:var(--chatroom-width)!important;width:var(--chatroom-width)}#conversejs.converse-overlayed .chatbox.chatroom .chatbox-title__text{flex:0 0 58.33333%;max-width:58.33333%}#conversejs.converse-overlayed .chatbox.chatroom .chatbox-title__buttons{flex:0 0 41.66667%;max-width:41.66667%}#conversejs.converse-overlayed .chatbox.chatroom .chat-head__desc{font-size:80%;margin-bottom:1em}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants .occupants-heading{padding:0}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants .occupant-list{border-bottom:none}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants ul .occupant .occupant-nick-badge .occupant-badges{display:none}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .occupants ul .occupant .occupant-status{margin-top:6px}#conversejs.converse-overlayed .chatbox.chatroom .chatroom-body .chat-area{min-width:var(--overlayed-chat-width)}#conversejs.converse-embedded .chatroom .box-flyout,#conversejs.converse-fullscreen .chatroom .box-flyout,#conversejs.converse-mobile .chatroom .box-flyout{width:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .chat-area.full .new-msgs-indicator{max-width:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants{padding:var(--occupants-padding)}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants .occupants-heading,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants .occupants-heading{font-size:var(--font-size-large)}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li,#conversejs.converse-fullscreen .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li,#conversejs.converse-mobile .chatroom .box-flyout .chatroom-body .occupants ul.occupant-list li{font-size:var(--font-size-small)}#conversejs.converse-embedded .chatroom .room-invite span .invited-contact,#conversejs.converse-fullscreen .chatroom .room-invite span .invited-contact,#conversejs.converse-mobile .chatroom .room-invite span .invited-contact{margin:0 0 .5em -1px}#conversejs.converse-embedded .chatroom{margin:0;width:100%}#conversejs.converse-embedded .chatroom .box-flyout .occupants-heading{font-size:120%}#conversejs.converse-embedded .chatroom .box-flyout .chat-content .chat-message{margin:.5em;font-size:120%}#conversejs.converse-embedded .chatroom .box-flyout .sendXMPPMessage .chat-textarea{padding:.5em;font-size:110%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body{height:100%}#conversejs.converse-embedded .chatroom .box-flyout .chatroom-body .chatroom-form-container{height:100%;position:relative}#conversejs.converse-embedded .chatroom .box-flyout .occupants .occupant-list{padding-left:.3em}@media (max-width:767.98px){#conversejs.converse-fullscreen .chatbox .box-flyout .chat-head-chatroom .chatbox-navback,#conversejs.converse-mobile .chatbox .box-flyout .chat-head-chatroom .chatbox-navback,#conversejs.converse-overlayed .chatbox .box-flyout .chat-head-chatroom .chatbox-navback{margin-right:0!important}#conversejs.converse-fullscreen .chatbox .box-flyout .chat-head-chatroom .chatbox-navback .fa-arrow-left:before,#conversejs.converse-mobile .chatbox .box-flyout .chat-head-chatroom .chatbox-navback .fa-arrow-left:before,#conversejs.converse-overlayed .chatbox .box-flyout .chat-head-chatroom .chatbox-navback .fa-arrow-left:before{color:var(--chatroom-head-color)}}#conversejs .chat-head-headline{background-color:var(--headline-head-color)}#conversejs .chatbox.headlines .chat-head.chat-head-chatbox{background-color:var(--headline-head-color)}#conversejs .chatbox.headlines .chat-body{background-color:var(--headline-head-color)}#conversejs .chatbox.headlines .chat-body .chat-message{color:var(--headline-message-color)}#conversejs .chatbox.headlines .chat-content{height:100%}#conversejs .message.chat-msg.headline .chat-msg__body{margin-left:0}#conversejs.converse-fullscreen .chatbox.headlines .box-flyout{background-color:var(--headline-head-color)}#conversejs.converse-fullscreen .chatbox.headlines .chat-head.chat-head-chatbox{background-color:var(--headline-head-color)}#conversejs.converse-fullscreen .chatbox.headlines .flyout{border-color:var(--headline-head-color)}#conversejs .styling-directive{color:var(--subdued-color)}#conversejs .older-msg time{font-weight:700}#conversejs .message .show-msg-author-modal{color:var(--text-color)!important}#conversejs .message blockquote{margin-left:.5em;margin-bottom:.25em;padding-right:1em;color:var(--subdued-color);border-left:.3em solid var(--subdued-color);padding-left:.5em;display:inline-block}#conversejs .message code{font-family:monospace}#conversejs .message .mention{font-weight:700}#conversejs .message .mention--self{font-weight:400}#conversejs .message.date-separator,#conversejs .message.separator{height:2em;margin:0;position:relative;text-align:center;z-index:0}#conversejs .message.date-separator .separator,#conversejs .message.separator .separator{border-top:0;border-bottom:var(--chat-separator-border-bottom);margin:0 1em;position:relative;top:1em;z-index:5}#conversejs .message.date-separator .separator-text,#conversejs .message.separator .separator-text{background:#fff;bottom:1px;color:var(--separator-text-color);display:inline-block;line-height:2em;padding:0 1em;position:relative;z-index:5}#conversejs .message.chat-msg--retracted .chat-msg__message{color:var(--subdued-color)}#conversejs .message.chat-info{color:var(--chat-head-color);font-size:var(--message-font-size);line-height:var(--line-height-small);font-size:90%;padding:.17rem 1rem}#conversejs .message.chat-info.badge{color:var(--chat-head-text-color)}#conversejs .message.chat-info.chat-state-notification{font-style:italic}#conversejs .message.chat-info.chat-event{clear:left;font-style:italic}#conversejs .message.chat-info.chat-error{color:var(--error-color);font-weight:700}#conversejs .message.chat-info .q{font-style:italic}#conversejs .message .chat-image{height:auto;width:auto;max-height:15em;max-width:100%}#conversejs .message.chat-msg--action{font-style:italic}#conversejs .message.chat-msg--action .chat-msg__author{padding-right:.2em}#conversejs .message.chat-msg{display:inline-flex;width:100%;flex-direction:row;padding:.125rem 1rem}#conversejs .message.chat-msg.onload{animation:colorchange-chatmessage 1s;-webkit-animation:colorchange-chatmessage 1s}#conversejs .message.chat-msg:hover{background-color:var(--list-item-hover-color)}#conversejs .message.chat-msg.correcting.groupchat{background-color:var(--chatroom-correcting-color)}#conversejs .message.chat-msg.correcting:not(.groupchat){background-color:var(--chat-correcting-color)}#conversejs .message.chat-msg .spoiler{margin-top:.5em}#conversejs .message.chat-msg .spoiler-hint{margin-bottom:.5em}#conversejs .message.chat-msg .spoiler-toggle{color:#fff}#conversejs .message.chat-msg .spoiler-toggle i{color:#fff;padding-right:.5em}#conversejs .message.chat-msg .spoiler-toggle:before{padding-right:.25em;whitespace:nowrap}#conversejs .message.chat-msg .chat-msg__content{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;margin-left:.5rem;width:calc(100% - var(--message-avatar-width))}#conversejs .message.chat-msg .chat-msg__content:hover .btn--standalone{opacity:1}#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat .chat-msg__text{color:var(--subdued-color)}#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat.chat-msg__body--delayed .chat-msg__text,#conversejs .message.chat-msg .chat-msg__content--me .chat-msg__body--groupchat.chat-msg__body--received .chat-msg__text{color:var(--message-text-color)}#conversejs .message.chat-msg .chat-msg__content--action{width:100%;margin-left:0}#conversejs .message.chat-msg .chat-msg__body{display:flex;flex-direction:row;justify-content:space-between}#conversejs .message.chat-msg converse-chat-message-body{display:inline}#conversejs .message.chat-msg .chat-msg__message{line-height:1.5em;display:inline-flex;flex-direction:column;width:100%;overflow-wrap:break-word}#conversejs .message.chat-msg .chat-msg__edit-modal{cursor:pointer;padding-right:.5em}#conversejs .message.chat-msg .chat-msg__subject{font-weight:700;clear:right}#conversejs .message.chat-msg .chat-msg__text{color:var(--message-text-color);padding:0;white-space:pre-wrap;word-wrap:break-word;word-break:break-word}#conversejs .message.chat-msg .chat-msg__text a{word-wrap:break-word;word-break:break-all;display:inline}#conversejs .message.chat-msg .chat-msg__text a.chat-image__link{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;display:block}#conversejs .message.chat-msg .chat-msg__text img.emoji{height:1.5em;width:1.5em;margin:0 .05em 0 .1em;vertical-align:-.1em}#conversejs .message.chat-msg .chat-msg__text .emojione{margin-bottom:-6px}#conversejs .message.chat-msg .chat-msg__text--larger{font-size:1.6em;padding-top:.25em;padding-bottom:.25em}#conversejs .message.chat-msg .chat-msg__error{color:var(--error-color)}#conversejs .message.chat-msg .chat-msg__media{margin-top:.25rem;word-break:break-all}#conversejs .message.chat-msg .chat-msg__media a{word-wrap:break-word}#conversejs .message.chat-msg .chat-msg__media audio{width:100%}#conversejs .message.chat-msg converse-message-actions{margin-left:.5em}#conversejs .message.chat-msg .chat-msg__actions .dropdown-menu{min-width:5rem}#conversejs .message.chat-msg .chat-msg__actions i{color:var(--text-color-lighten-15-percent);font-size:70%}#conversejs .message.chat-msg .chat-msg__actions button{border:none;background:0 0;color:var(--text-color-lighten-15-percent);padding:0 .25em}#conversejs .message.chat-msg .chat-msg__actions .btn--standalone{opacity:0;margin-top:-.2em}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action{width:100%;padding:.5em 1em;text-align:left;white-space:nowrap}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action converse-icon{margin-right:.25em}#conversejs .message.chat-msg .chat-msg__actions .chat-msg__action:hover{color:var(--text-color);background-color:var(--list-item-hover-color)}#conversejs .message.chat-msg .chat-msg__avatar{margin-top:.5em;vertical-align:middle;height:var(--message-avatar-height);width:var(--message-avatar-width);min-height:var(--message-avatar-height);min-width:var(--message-avatar-width)}#conversejs .message.chat-msg .chat-msg__author{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--heading-font);font-size:115%;font-weight:700;padding-bottom:1px}#conversejs .message.chat-msg .chat-msg__heading{width:100%;margin-top:.5em;padding-right:.25rem;padding-bottom:.25rem}#conversejs .message.chat-msg .chat-msg__heading .badge{margin-left:.5em;font-family:var(--normal_font)}#conversejs .message.chat-msg .chat-msg__heading .chat-msg__time{padding-left:.25em;padding-right:.25em;color:var(--text-color-lighten-15-percent)}#conversejs .message.chat-msg.chat-msg--action .chat-msg__message{flex-direction:row}#conversejs .message.chat-msg.chat-msg--action .chat-msg__text{width:auto}#conversejs .message.chat-msg.chat-msg--action .chat-msg__heading{margin-top:0;padding-bottom:0;width:auto}#conversejs .message.chat-msg.chat-msg--action .chat-msg__heading .fa{margin-left:.5em}#conversejs .message.chat-msg.chat-msg--action .chat-msg__author{font-size:var(--message-font-size)}#conversejs .message.chat-msg.chat-msg--action .chat-msg__time{margin-left:0}#conversejs .message.chat-msg.chat-msg--followup .chat-msg__avatar,#conversejs .message.chat-msg.chat-msg--followup .chat-msg__heading{display:none}#conversejs .message.chat-msg.chat-msg--followup.chat-msg--with-avatar .chat-msg__content{margin-left:2.75rem;width:100%}#conversejs .message.chat-msg .chat-msg__receipt{margin-left:.5em;margin-right:.5em;color:var(--message-receipt-color)}#conversejs .chatroom-body .message.onload{animation:colorchange-chatmessage-muc 1s;-webkit-animation:colorchange-chatmessage-muc 1s}#conversejs .chatroom-body .message .separator{border-top:0;border-bottom:var(--chatroom-separator-border-bottom)}#conversejs.converse-overlayed .message.chat-msg.chat-msg--followup .chat-msg__content{margin-left:0}@media screen and (max-width:767px){#conversejs:not(.converse-embedded) .message.chat-msg .chat-msg__author{white-space:normal}}#conversejs.converse-overlayed #minimized-chats{order:100;width:var(--minimized-chats-width);margin-bottom:0;border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius);color:var(--inverse-link-color);margin-right:var(--chat-gutter);padding:0}#conversejs.converse-overlayed #minimized-chats .badge{bottom:8px;border:1px solid var(--overlayed-badge-color)}#conversejs.converse-overlayed #minimized-chats #toggle-minimized-chats{border-top-left-radius:var(--chatbox-border-radius);border-top-right-radius:var(--chatbox-border-radius);background-color:var(--link-color);padding:1em 0 0 0;text-align:center;color:#fff;white-space:nowrap;overflow-y:hidden;text-overflow:ellipsis;display:block;height:45px;width:9em}#conversejs.converse-overlayed #minimized-chats a.restore-chat{cursor:pointer;padding:1px 0 1px 5px;color:var(--chat-head-text-color);line-height:15px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#conversejs.converse-overlayed #minimized-chats a.restore-chat:hover{text-decoration:none}#conversejs.converse-overlayed #minimized-chats a.restore-chat:visited{color:var(--chat-head-text-color)}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout{flex-direction:column-reverse;bottom:45px;width:var(--minimized-chats-width)}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout .chat-head{min-height:0;padding:.3em;border-radius:var(--chatbox-border-radius);height:35px;margin-bottom:.2em;width:100%;max-width:9em;flex-wrap:nowrap}#conversejs.converse-overlayed #minimized-chats .minimized-chats-flyout.minimized{height:auto}#conversejs.converse-overlayed #minimized-chats .unread-message-count{font-weight:700;background-color:#fff;border:1px solid;text-shadow:1px 1px 0 var(--text-shadow-color);color:var(--warning-color);border-radius:5px;padding:2px 4px;font-size:16px;text-align:center;position:absolute;right:116px;bottom:10px}#conversejs.converse-overlayed #minimized-chats .chat-head-message-count-hidden,#conversejs.converse-overlayed #minimized-chats .unread-message-count-hidden{display:none}#conversejs #controlbox .bookmarks-toggle,#conversejs #controlbox .bookmarks-toggle .fa{color:var(--groupchats-header-color)!important}#conversejs #controlbox .bookmarks-toggle .fa:hover,#conversejs #controlbox .bookmarks-toggle:hover{color:var(--chatroom-head-bg-color-dark)!important}#conversejs.fullscreen #controlbox #chatrooms .bookmarks-list dl.rooms-list.bookmarks dd.available-chatroom a.open-room{width:80%}#conversejs [hidden]{display:none}#conversejs .visually-hidden{position:absolute;clip:rect(0,0,0,0)}#conversejs .form-group .suggestion-box{width:100%}#conversejs .suggestion-box{position:relative}#conversejs .suggestion-box mark{background:var(--completion-light-color)}#conversejs .suggestion-box>input{display:block}#conversejs .suggestion-box .suggestion-box__results,#conversejs .suggestion-box>ul{position:absolute;left:0;right:0;z-index:2;min-width:100%;box-sizing:border-box;list-style:none;padding:0;border-radius:.3em;margin:.2em 0 0;background:rgba(255,255,255,.9);background:linear-gradient(to bottom right,#fff,rgba(255,255,255,.9));border:1px solid rgba(0,0,0,.3);box-shadow:.05em .2em .6em rgba(0,0,0,.1);text-shadow:none}#conversejs .suggestion-box .suggestion-box__results:before,#conversejs .suggestion-box>ul:before{content:"";position:absolute;top:-.43em;left:1em;width:0;height:0;padding:.4em;background:#fff;border:inherit;border-right:0;border-bottom:0;transform:rotate(45deg);z-index:-1}#conversejs .suggestion-box .suggestion-box__results>li,#conversejs .suggestion-box>ul>li{text-overflow:ellipsis;overflow-x:hidden;position:relative;cursor:pointer;padding:1em}#conversejs .suggestion-box .suggestion-box__results--below{top:2em}#conversejs .suggestion-box .suggestion-box__results--above{bottom:4.5em}#conversejs .suggestion-box .suggestion-box__results--above:before{display:none}#conversejs .suggestion-box .suggestion-box__results--above:after{z-index:-1;content:"";position:absolute;bottom:-.43em;left:1em;width:0;height:0;padding:.4em;background:#fff;border:inherit;border-left:0;border-top:0;transform:rotate(45deg)}#conversejs .suggestion-box>ul:empty,#conversejs .suggestion-box>ul[hidden]{display:none}@supports (transform:scale(0)){#conversejs .suggestion-box>ul{transition:.3s cubic-bezier(.4,.2,.5,1.4);transform-origin:1.43em -.43em}#conversejs .suggestion-box>ul:empty,#conversejs .suggestion-box>ul[hidden]{opacity:0;transform:scale(0);display:block;transition-timing-function:ease}}#conversejs .suggestion-box>ul>li[aria-selected=true]{background:var(--completion-dark-color);color:var(--inverse-link-color)}#conversejs .suggestion-box li:hover mark{background:var(--completion-light-color);color:var(--inverse-link-color)}#conversejs .suggestion-box li[aria-selected=true] mark{background:var(--completion-normal-color);color:inherit}#conversejs.converse-fullscreen .suggestion-box__results--above{bottom:4.5em}#conversejs.converse-overlayed .suggestion-box__results--above{bottom:3.5em}#conversejs .chatbox img.emoji{height:1.2em;width:1.2em;margin:0 .05em 0 .1em;vertical-align:-.1em}#conversejs .chatbox .sendXMPPMessage .toggle-smiley a.toggle-smiley{padding:0}#conversejs .chatbox converse-emoji-dropdown{display:inline-block}#conversejs .chatbox converse-emoji-dropdown .dropdown-menu{padding:0}#conversejs .chatbox converse-emoji-picker{width:100%;padding-top:0;padding-bottom:0;background-color:var(--chat-head-color);overflow-y:hidden;background:#fff}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists{height:8em;overflow-y:auto;display:flex;flex-direction:column}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-category__heading{clear:both;color:var(--subdued-color);cursor:auto;display:block;font-size:var(--font-size);margin:0;padding:.75em 0 0 .5em}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-lists__container{overflow-x:hidden}#conversejs .chatbox converse-emoji-picker .emoji-picker__lists .emoji-picker li{float:left}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker{display:flex;padding:.5em 0;background-color:var(--chat-head-color);width:auto;font-size:var(--font-size)}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker label{margin:0;padding:0 .5em;white-space:nowrap;font-size:var(--font-size-small);color:var(--heading-color)}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker ul{display:flex;flex-direction:row;flex-wrap:wrap}#conversejs .chatbox converse-emoji-picker .emoji-skintone-picker ul li{padding:0 .25em}#conversejs .chatbox converse-emoji-picker .emoji-picker{background-color:#fff;padding:.5em 0 0 .5em}#conversejs .chatbox converse-emoji-picker .emoji-picker:last-child{padding-bottom:.5em}#conversejs .chatbox converse-emoji-picker .emoji-picker li{display:inline-block;height:calc(var(--font-size-huge) * 1.5);width:calc(var(--font-size-huge) * 1.5);overflow:hidden;margin-left:0;list-style:none;position:relative}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji{padding:0 .2em;height:auto;width:auto;margin:0;display:block;text-align:center}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji.selected a{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji img{margin:0 auto;height:var(--font-size-huge);width:var(--font-size-huge);display:inline-block;vertical-align:baseline}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji a{padding:3px;display:inline-block;font-size:var(--font-size-huge);line-height:calc(var(--font-size-huge) * 1.5);height:calc(var(--font-size-huge) * 1.5);width:calc(var(--font-size-huge) * 1.5);overflow:hidden}#conversejs .chatbox converse-emoji-picker .emoji-picker li.insert-emoji a:hover{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header{display:flex;flex-direction:column;padding:.1em 0;background-color:var(--chat-head-color)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header .emoji-search{width:auto;margin:.25em;height:2em;font-size:var(--font-size-small)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul{display:flex;flex-direction:row;flex-wrap:wrap}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category{padding:.25em 0;font-size:var(--font-size-huge)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category.picked{background-color:#fff;border:1px var(--chat-head-color) solid;border-bottom:none}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category.selected a,#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category:hover a{background-color:var(--highlight-color-darker)}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category a{padding:.25em;display:inline-block}#conversejs .chatbox converse-emoji-picker .emoji-picker__header ul .emoji-category img{height:var(--font-size-huge);width:var(--font-size-huge)}#conversejs .chatroom converse-emoji-picker{background-color:var(--chatroom-head-bg-color);background:#fff}#conversejs .chatroom converse-emoji-picker .emoji-skintone-picker{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom converse-emoji-picker .emoji-picker__header{background-color:var(--chatroom-head-bg-color)}#conversejs .chatroom converse-emoji-picker .emoji-picker__header ul .emoji-category.picked{border:1px var(--chatroom-head-bg-color) solid;border-bottom:none}#conversejs.converse-overlayed converse-emoji-dropdown .dropdown-menu{min-width:18em}#conversejs.converse-overlayed .chatbox .emoji-picker__header .emoji-category img{height:var(--font-size)!important;width:var(--font-size)!important}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker .insert-emoji a{font-size:var(--font-size);line-height:calc(var(--font-size) * 1.5);padding:0;height:calc(var(--font-size) * 1.5);width:calc(var(--font-size) * 1.5)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker .insert-emoji img{height:var(--font-size);width:var(--font-size)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-skintone-picker{font-size:var(--font-size-small)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker__header .emoji-category{font-size:var(--font-size-small)}#conversejs.converse-overlayed .chatbox converse-emoji-picker .emoji-picker__lists{height:7em}#conversejs.converse-embedded converse-emoji-dropdown .dropdown-menu{min-width:20em}#conversejs.converse-fullscreen converse-emoji-dropdown .dropdown-menu{min-width:22em}#conversejs.converse-fullscreen .chatbox converse-emoji-picker .emoji-picker__lists{height:12em}#conversejs .chatbox converse-emoji-picker{max-width:40em} /*# sourceMappingURL=converse.min.css.map*/ \ No newline at end of file diff --git a/src/conversejs/converse.min.js b/src/conversejs/converse.min.js index de4f5997b6dca070798b7e4f08efd4a4d80fe58d..07010e7dfce6a52f07a15134eaa922d6de7a6533 100644 --- a/src/conversejs/converse.min.js +++ b/src/conversejs/converse.min.js @@ -1,4 +1,4 @@ -!function(e){function t(t){for(var n,i,s=t[0],o=t[1],a=0,l=[];a<s.length;a++)i=s[a],Object.prototype.hasOwnProperty.call(r,i)&&r[i]&&l.push(r[i][0]),r[i]=0;for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n]);for(c&&c(t);l.length;)l.shift()()}var n={},r={177:0};function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var s=new Promise((function(t,i){n=r[e]=[t,i]}));t.push(n[2]=s);var o,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+""+({0:"locales/dayjs/af",1:"locales/dayjs/ar",2:"locales/dayjs/ar-dz",3:"locales/dayjs/ar-kw",4:"locales/dayjs/ar-ly",5:"locales/dayjs/ar-ma",6:"locales/dayjs/ar-sa",7:"locales/dayjs/ar-tn",8:"locales/dayjs/az",9:"locales/dayjs/be",10:"locales/dayjs/bg",11:"locales/dayjs/bi",12:"locales/dayjs/bm",13:"locales/dayjs/bn",14:"locales/dayjs/bo",15:"locales/dayjs/br",16:"locales/dayjs/bs",17:"locales/dayjs/ca",18:"locales/dayjs/cs",19:"locales/dayjs/cv",20:"locales/dayjs/cy",21:"locales/dayjs/da",22:"locales/dayjs/de",23:"locales/dayjs/de-at",24:"locales/dayjs/de-ch",25:"locales/dayjs/dv",26:"locales/dayjs/el",27:"locales/dayjs/en",28:"locales/dayjs/en-SG",29:"locales/dayjs/en-au",30:"locales/dayjs/en-ca",31:"locales/dayjs/en-gb",32:"locales/dayjs/en-ie",33:"locales/dayjs/en-il",34:"locales/dayjs/en-in",35:"locales/dayjs/en-nz",36:"locales/dayjs/en-tt",37:"locales/dayjs/eo",38:"locales/dayjs/es",39:"locales/dayjs/es-do",40:"locales/dayjs/es-pr",41:"locales/dayjs/es-us",42:"locales/dayjs/et",43:"locales/dayjs/eu",44:"locales/dayjs/fa",45:"locales/dayjs/fi",46:"locales/dayjs/fo",47:"locales/dayjs/fr",48:"locales/dayjs/fr-ca",49:"locales/dayjs/fr-ch",50:"locales/dayjs/fy",51:"locales/dayjs/ga",52:"locales/dayjs/gd",53:"locales/dayjs/gl",54:"locales/dayjs/gom-latn",55:"locales/dayjs/gu",56:"locales/dayjs/he",57:"locales/dayjs/hi",58:"locales/dayjs/hr",59:"locales/dayjs/ht",60:"locales/dayjs/hu",61:"locales/dayjs/hy-am",62:"locales/dayjs/id",63:"locales/dayjs/is",64:"locales/dayjs/it",65:"locales/dayjs/it-ch",66:"locales/dayjs/ja",67:"locales/dayjs/jv",68:"locales/dayjs/ka",69:"locales/dayjs/kk",70:"locales/dayjs/km",71:"locales/dayjs/kn",72:"locales/dayjs/ko",73:"locales/dayjs/ku",74:"locales/dayjs/ky",75:"locales/dayjs/lb",76:"locales/dayjs/lo",77:"locales/dayjs/lt",78:"locales/dayjs/lv",79:"locales/dayjs/me",80:"locales/dayjs/mi",81:"locales/dayjs/mk",82:"locales/dayjs/ml",83:"locales/dayjs/mn",84:"locales/dayjs/mr",85:"locales/dayjs/ms",86:"locales/dayjs/ms-my",87:"locales/dayjs/mt",88:"locales/dayjs/my",89:"locales/dayjs/nb",90:"locales/dayjs/ne",91:"locales/dayjs/nl",92:"locales/dayjs/nl-be",93:"locales/dayjs/nn",94:"locales/dayjs/oc-lnc",95:"locales/dayjs/pa-in",96:"locales/dayjs/pl",97:"locales/dayjs/pt",98:"locales/dayjs/pt-br",99:"locales/dayjs/ro",100:"locales/dayjs/ru",101:"locales/dayjs/rw",102:"locales/dayjs/sd",103:"locales/dayjs/se",104:"locales/dayjs/si",105:"locales/dayjs/sk",106:"locales/dayjs/sl",107:"locales/dayjs/sq",108:"locales/dayjs/sr",109:"locales/dayjs/sr-cyrl",110:"locales/dayjs/ss",111:"locales/dayjs/sv",112:"locales/dayjs/sw",113:"locales/dayjs/ta",114:"locales/dayjs/te",115:"locales/dayjs/tet",116:"locales/dayjs/tg",117:"locales/dayjs/th",118:"locales/dayjs/tk",119:"locales/dayjs/tl-ph",120:"locales/dayjs/tlh",121:"locales/dayjs/tr",122:"locales/dayjs/tzl",123:"locales/dayjs/tzm",124:"locales/dayjs/tzm-latn",125:"locales/dayjs/ug-cn",126:"locales/dayjs/uk",127:"locales/dayjs/ur",128:"locales/dayjs/uz",129:"locales/dayjs/uz-latn",130:"locales/dayjs/vi",131:"locales/dayjs/x-pseudo",132:"locales/dayjs/yo",133:"locales/dayjs/zh",134:"locales/dayjs/zh-cn",135:"locales/dayjs/zh-hk",136:"locales/dayjs/zh-tw",137:"emojis",138:"icons",139:"locales/af-LC_MESSAGES-converse-po",140:"locales/ar-LC_MESSAGES-converse-po",141:"locales/bg-LC_MESSAGES-converse-po",142:"locales/ca-LC_MESSAGES-converse-po",143:"locales/cs-LC_MESSAGES-converse-po",144:"locales/da-LC_MESSAGES-converse-po",145:"locales/dayjs/index-d-ts",146:"locales/dayjs/types-d-ts",147:"locales/de-LC_MESSAGES-converse-po",148:"locales/eo-LC_MESSAGES-converse-po",149:"locales/es-LC_MESSAGES-converse-po",150:"locales/eu-LC_MESSAGES-converse-po",151:"locales/fi-LC_MESSAGES-converse-po",152:"locales/fr-LC_MESSAGES-converse-po",153:"locales/gl-LC_MESSAGES-converse-po",154:"locales/he-LC_MESSAGES-converse-po",155:"locales/hi-LC_MESSAGES-converse-po",156:"locales/hu-LC_MESSAGES-converse-po",157:"locales/id-LC_MESSAGES-converse-po",158:"locales/it-LC_MESSAGES-converse-po",159:"locales/ja-LC_MESSAGES-converse-po",160:"locales/lt-LC_MESSAGES-converse-po",161:"locales/mr-LC_MESSAGES-converse-po",162:"locales/nb-LC_MESSAGES-converse-po",163:"locales/nl-LC_MESSAGES-converse-po",164:"locales/nl_BE-LC_MESSAGES-converse-po",165:"locales/oc-LC_MESSAGES-converse-po",166:"locales/pl-LC_MESSAGES-converse-po",167:"locales/pt-LC_MESSAGES-converse-po",168:"locales/pt_BR-LC_MESSAGES-converse-po",169:"locales/ro-LC_MESSAGES-converse-po",170:"locales/ru-LC_MESSAGES-converse-po",171:"locales/th-LC_MESSAGES-converse-po",172:"locales/tr-LC_MESSAGES-converse-po",173:"locales/uk-LC_MESSAGES-converse-po",174:"locales/vi-LC_MESSAGES-converse-po",175:"locales/zh_CN-LC_MESSAGES-converse-po",176:"locales/zh_TW-LC_MESSAGES-converse-po"}[e]||e)+".js"}(e);var c=new Error;o=function(t){a.onerror=a.onload=null,clearTimeout(l);var n=r[e];if(0!==n){if(n){var i=t&&("load"===t.type?"missing":t.type),s=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+i+": "+s+")",c.name="ChunkLoadError",c.type=i,c.request=s,n[1](c)}r[e]=void 0}};var l=setTimeout((function(){o({type:"timeout",target:a})}),12e4);a.onerror=a.onload=o,document.head.appendChild(a)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i.oe=function(e){throw console.error(e),e};var s=window.webpackJsonp=window.webpackJsonp||[],o=s.push.bind(s);s.push=t,s=s.slice();for(var a=0;a<s.length;a++)t(s[a]);var c=o;i(i.s=284)}([function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return _})),n.d(t,"b",(function(){return b})),n.d(t,"d",(function(){return y})),n.d(t,"e",(function(){return w}));var r=n(13);const i=function(e,t){const n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n},s=function(e){if("string"!=typeof e)throw new Error("str2binl was passed a non-string");const t=[];for(let n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return t},o=function(e,t,n,r,s,o){return i((a=i(i(t,e),i(r,o)))<<(c=s)|a>>>32-c,n);var a,c},a=function(e,t,n,r,i,s,a){return o(t&n|~t&r,e,t,i,s,a)},c=function(e,t,n,r,i,s,a){return o(t&r|n&~r,e,t,i,s,a)},l=function(e,t,n,r,i,s,a){return o(t^n^r,e,t,i,s,a)},u=function(e,t,n,r,i,s,a){return o(n^(t|~r),e,t,i,s,a)},d=function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;let n,r,s,o,d=1732584193,h=-271733879,f=-1732584194,p=271733878;for(let t=0;t<e.length;t+=16)n=d,r=h,s=f,o=p,d=a(d,h,f,p,e[t+0],7,-680876936),p=a(p,d,h,f,e[t+1],12,-389564586),f=a(f,p,d,h,e[t+2],17,606105819),h=a(h,f,p,d,e[t+3],22,-1044525330),d=a(d,h,f,p,e[t+4],7,-176418897),p=a(p,d,h,f,e[t+5],12,1200080426),f=a(f,p,d,h,e[t+6],17,-1473231341),h=a(h,f,p,d,e[t+7],22,-45705983),d=a(d,h,f,p,e[t+8],7,1770035416),p=a(p,d,h,f,e[t+9],12,-1958414417),f=a(f,p,d,h,e[t+10],17,-42063),h=a(h,f,p,d,e[t+11],22,-1990404162),d=a(d,h,f,p,e[t+12],7,1804603682),p=a(p,d,h,f,e[t+13],12,-40341101),f=a(f,p,d,h,e[t+14],17,-1502002290),h=a(h,f,p,d,e[t+15],22,1236535329),d=c(d,h,f,p,e[t+1],5,-165796510),p=c(p,d,h,f,e[t+6],9,-1069501632),f=c(f,p,d,h,e[t+11],14,643717713),h=c(h,f,p,d,e[t+0],20,-373897302),d=c(d,h,f,p,e[t+5],5,-701558691),p=c(p,d,h,f,e[t+10],9,38016083),f=c(f,p,d,h,e[t+15],14,-660478335),h=c(h,f,p,d,e[t+4],20,-405537848),d=c(d,h,f,p,e[t+9],5,568446438),p=c(p,d,h,f,e[t+14],9,-1019803690),f=c(f,p,d,h,e[t+3],14,-187363961),h=c(h,f,p,d,e[t+8],20,1163531501),d=c(d,h,f,p,e[t+13],5,-1444681467),p=c(p,d,h,f,e[t+2],9,-51403784),f=c(f,p,d,h,e[t+7],14,1735328473),h=c(h,f,p,d,e[t+12],20,-1926607734),d=l(d,h,f,p,e[t+5],4,-378558),p=l(p,d,h,f,e[t+8],11,-2022574463),f=l(f,p,d,h,e[t+11],16,1839030562),h=l(h,f,p,d,e[t+14],23,-35309556),d=l(d,h,f,p,e[t+1],4,-1530992060),p=l(p,d,h,f,e[t+4],11,1272893353),f=l(f,p,d,h,e[t+7],16,-155497632),h=l(h,f,p,d,e[t+10],23,-1094730640),d=l(d,h,f,p,e[t+13],4,681279174),p=l(p,d,h,f,e[t+0],11,-358537222),f=l(f,p,d,h,e[t+3],16,-722521979),h=l(h,f,p,d,e[t+6],23,76029189),d=l(d,h,f,p,e[t+9],4,-640364487),p=l(p,d,h,f,e[t+12],11,-421815835),f=l(f,p,d,h,e[t+15],16,530742520),h=l(h,f,p,d,e[t+2],23,-995338651),d=u(d,h,f,p,e[t+0],6,-198630844),p=u(p,d,h,f,e[t+7],10,1126891415),f=u(f,p,d,h,e[t+14],15,-1416354905),h=u(h,f,p,d,e[t+5],21,-57434055),d=u(d,h,f,p,e[t+12],6,1700485571),p=u(p,d,h,f,e[t+3],10,-1894986606),f=u(f,p,d,h,e[t+10],15,-1051523),h=u(h,f,p,d,e[t+1],21,-2054922799),d=u(d,h,f,p,e[t+8],6,1873313359),p=u(p,d,h,f,e[t+15],10,-30611744),f=u(f,p,d,h,e[t+6],15,-1560198380),h=u(h,f,p,d,e[t+13],21,1309151649),d=u(d,h,f,p,e[t+4],6,-145523070),p=u(p,d,h,f,e[t+11],10,-1120210379),f=u(f,p,d,h,e[t+2],15,718787259),h=u(h,f,p,d,e[t+9],21,-343485551),d=i(d,n),h=i(h,r),f=i(f,s),p=i(p,o);return[d,h,f,p]},h={hexdigest:function(e){return function(e){let t="";for(let n=0;n<4*e.length;n++)t+="0123456789abcdef".charAt(e[n>>2]>>n%4*8+4&15)+"0123456789abcdef".charAt(e[n>>2]>>n%4*8&15);return t}(d(s(e),8*e.length))},hash:function(e){return function(e){let t="";for(let n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>n%32&255);return t}(d(s(e),8*e.length))}};var f=n(7);const p=function(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)(n=e.charCodeAt(t))>=0&&n<=127?r+=e.charAt(t):n>2047?(r+=String.fromCharCode(224|n>>12&15),r+=String.fromCharCode(128|n>>6&63),r+=String.fromCharCode(128|n>>0&63)):(r+=String.fromCharCode(192|n>>6&31),r+=String.fromCharCode(128|n>>0&63));return r},g=function(e){e=e||{};for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n="",r="",i="";const s=e[t],o="object"==typeof s,a=escape(unescape(o?s.value:s));o&&(n=s.expires?";expires="+s.expires:"",r=s.domain?";domain="+s.domain:"",i=s.path?";path="+s.path:""),document.cookie=t+"="+a+n+r+i}};var m=n(9);function v(e,t){return new w.Builder(e,t)}function _(e){return new w.Builder("message",e)}function b(e){return new w.Builder("iq",e)}function y(e){return new w.Builder("presence",e)}const w={VERSION:"1.3.6",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",FRAMING:"urn:ietf:params:xml:ns:xmpp-framing",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas",XHTML_IM:"http://jabber.org/protocol/xhtml-im",XHTML:"http://www.w3.org/1999/xhtml"},XHTML:{tags:["a","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body"],attributes:{a:["href"],blockquote:["style"],br:[],cite:["style"],em:[],img:["src","alt","style","height","width"],li:["style"],ol:["style"],p:["style"],span:["style"],strong:[],ul:["style"],body:[]},css:["background-color","color","font-family","font-size","font-style","font-weight","margin-left","margin-right","text-align","text-decoration"],validTag(e){for(let t=0;t<w.XHTML.tags.length;t++)if(e===w.XHTML.tags[t])return!0;return!1},validAttribute(e,t){if(void 0!==w.XHTML.attributes[e]&&w.XHTML.attributes[e].length>0)for(let n=0;n<w.XHTML.attributes[e].length;n++)if(t===w.XHTML.attributes[e][n])return!0;return!1},validCSS(e){for(let t=0;t<w.XHTML.css.length;t++)if(e===w.XHTML.css[t])return!0;return!1}},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8,REDIRECT:9,CONNTIMEOUT:10,BINDREQUIRED:11,ATTACHFAIL:12},ErrorCondition:{BAD_FORMAT:"bad-format",CONFLICT:"conflict",MISSING_JID_NODE:"x-strophe-bad-non-anon-jid",NO_AUTH_MECH:"no-auth-mech",UNKNOWN_REASON:"unknown"},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4,FRAGMENT:11},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,addNamespace(e,t){w.NS[e]=t},forEachChild(e,t,n){for(let r=0;r<e.childNodes.length;r++){const i=e.childNodes[r];i.nodeType!==w.ElementType.NORMAL||t&&!this.isTagEqual(i,t)||n(i)}},isTagEqual:(e,t)=>e.tagName===t,_xmlGenerator:null,xmlGenerator:()=>(w._xmlGenerator||(w._xmlGenerator=r.b()),w._xmlGenerator),xmlElement(e){if(!e)return null;const t=w.xmlGenerator().createElement(e);for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)if("string"==typeof n||"number"==typeof n)t.appendChild(w.xmlTextNode(n));else if("object"==typeof n&&"function"==typeof n.sort)for(let e=0;e<n.length;e++){const r=n[e];"object"==typeof r&&"function"==typeof r.sort&&void 0!==r[1]&&null!==r[1]&&t.setAttribute(r[0],r[1])}else if("object"==typeof n)for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&void 0!==n[e]&&null!==n[e]&&t.setAttribute(e,n[e])}return t},xmlescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,"""),xmlunescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,'"'),xmlTextNode:e=>w.xmlGenerator().createTextNode(e),xmlHtmlNode(e){let t;if(r.a){t=(new r.a).parseFromString(e,"text/xml")}else t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e);return t},getText(e){if(!e)return null;let t="";0===e.childNodes.length&&e.nodeType===w.ElementType.TEXT&&(t+=e.nodeValue);for(let n=0;n<e.childNodes.length;n++)e.childNodes[n].nodeType===w.ElementType.TEXT&&(t+=e.childNodes[n].nodeValue);return w.xmlescape(t)},copyElement(e){let t;if(e.nodeType===w.ElementType.NORMAL){t=w.xmlElement(e.tagName);for(let n=0;n<e.attributes.length;n++)t.setAttribute(e.attributes[n].nodeName,e.attributes[n].value);for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.copyElement(e.childNodes[n]))}else e.nodeType===w.ElementType.TEXT&&(t=w.xmlGenerator().createTextNode(e.nodeValue));return t},createHtml(e){let t;if(e.nodeType===w.ElementType.NORMAL){const n=e.nodeName.toLowerCase();if(w.XHTML.validTag(n))try{t=w.xmlElement(n);for(let r=0;r<w.XHTML.attributes[n].length;r++){const i=w.XHTML.attributes[n][r];let s=e.getAttribute(i);if(null!=s&&""!==s&&!1!==s&&0!==s)if("style"===i&&"object"==typeof s&&void 0!==s.cssText&&(s=s.cssText),"style"===i){const e=[],n=s.split(";");for(let t=0;t<n.length;t++){const r=n[t].split(":"),i=r[0].replace(/^\s*/,"").replace(/\s*$/,"").toLowerCase();if(w.XHTML.validCSS(i)){const t=r[1].replace(/^\s*/,"").replace(/\s*$/,"");e.push(i+": "+t)}}e.length>0&&(s=e.join("; "),t.setAttribute(i,s))}else t.setAttribute(i,s)}for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}catch(e){t=w.xmlTextNode("")}else{t=w.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}}else if(e.nodeType===w.ElementType.FRAGMENT){t=w.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}else e.nodeType===w.ElementType.TEXT&&(t=w.xmlTextNode(e.nodeValue));return t},escapeNode:e=>"string"!=typeof e?e:e.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40"),unescapeNode:e=>"string"!=typeof e?e:e.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\"),getNodeFromJid:e=>e.indexOf("@")<0?null:e.split("@")[0],getDomainFromJid(e){const t=w.getBareJidFromJid(e);if(t.indexOf("@")<0)return t;{const e=t.split("@");return e.splice(0,1),e.join("@")}},getResourceFromJid(e){if(!e)return null;const t=e.split("/");return t.length<2?null:(t.splice(0,1),t.join("/"))},getBareJidFromJid:e=>e?e.split("/")[0]:null,_handleError(e){void 0!==e.stack&&w.fatal(e.stack),e.sourceURL?w.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message):e.fileName?w.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message):w.fatal("error: "+e.message)},log(e,t){e===this.LogLevel.FATAL&&"object"==typeof window.console&&"function"==typeof window.console.error&&window.console.error(t)},debug(e){this.log(this.LogLevel.DEBUG,e)},info(e){this.log(this.LogLevel.INFO,e)},warn(e){this.log(this.LogLevel.WARN,e)},error(e){this.log(this.LogLevel.ERROR,e)},fatal(e){this.log(this.LogLevel.FATAL,e)},serialize(e){if(!e)return null;"function"==typeof e.tree&&(e=e.tree());const t=[...Array(e.attributes.length).keys()].map(t=>e.attributes[t].nodeName);t.sort();let n=t.reduce((t,n)=>"".concat(t," ").concat(n,'="').concat(w.xmlescape(e.attributes.getNamedItem(n).value),'"'),"<".concat(e.nodeName));if(e.childNodes.length>0){n+=">";for(let t=0;t<e.childNodes.length;t++){const r=e.childNodes[t];switch(r.nodeType){case w.ElementType.NORMAL:n+=w.serialize(r);break;case w.ElementType.TEXT:n+=w.xmlescape(r.nodeValue);break;case w.ElementType.CDATA:n+="<![CDATA["+r.nodeValue+"]]>"}}n+="</"+e.nodeName+">"}else n+="/>";return n},_requestId:0,_connectionPlugins:{},addConnectionPlugin(e,t){w._connectionPlugins[e]=t},Builder:class{constructor(e,t){"presence"!==e&&"message"!==e&&"iq"!==e||(t&&!t.xmlns?t.xmlns=w.NS.CLIENT:t||(t={xmlns:w.NS.CLIENT})),this.nodeTree=w.xmlElement(e,t),this.node=this.nodeTree}tree(){return this.nodeTree}toString(){return w.serialize(this.nodeTree)}up(){return this.node=this.node.parentNode,this}root(){return this.node=this.nodeTree,this}attrs(e){for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===e[t]?this.node.removeAttribute(t):this.node.setAttribute(t,e[t]));return this}c(e,t,n){const r=w.xmlElement(e,t,n);return this.node.appendChild(r),"string"!=typeof n&&"number"!=typeof n&&(this.node=r),this}cnode(e){let t;const n=w.xmlGenerator();try{t=void 0!==n.importNode}catch(e){t=!1}const r=t?n.importNode(e,!0):w.copyElement(e);return this.node.appendChild(r),this.node=r,this}t(e){const t=w.xmlTextNode(e);return this.node.appendChild(t),this}h(e){const t=w.xmlGenerator().createElement("body");t.innerHTML=e;const n=w.createHtml(t);for(;n.childNodes.length>0;)this.node.appendChild(n.childNodes[0]);return this}},Handler:function(e,t,n,r,i,s,o){this.handler=e,this.ns=t,this.name=n,this.type=r,this.id=i,this.options=o||{matchBareFromJid:!1,ignoreNamespaceFragment:!1},this.options.matchBare&&(w.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.'),this.options.matchBareFromJid=this.options.matchBare,delete this.options.matchBare),this.options.matchBareFromJid?this.from=s?w.getBareJidFromJid(s):null:this.from=s,this.user=!0}};w.Handler.prototype={getNamespace(e){let t=e.getAttribute("xmlns");return t&&this.options.ignoreNamespaceFragment&&(t=t.split("#")[0]),t},namespaceMatch(e){let t=!1;return!this.ns||(w.forEachChild(e,null,e=>{this.getNamespace(e)===this.ns&&(t=!0)}),t||this.getNamespace(e)===this.ns)},isMatch(e){let t=e.getAttribute("from");this.options.matchBareFromJid&&(t=w.getBareJidFromJid(t));const n=e.getAttribute("type");return!(!this.namespaceMatch(e)||this.name&&!w.isTagEqual(e,this.name)||this.type&&(Array.isArray(this.type)?-1===this.type.indexOf(n):n!==this.type)||this.id&&e.getAttribute("id")!==this.id||this.from&&t!==this.from)},run(e){let t=null;try{t=this.handler(e)}catch(e){throw w._handleError(e),e}return t},toString(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},w.TimedHandler=class{constructor(e,t){this.period=e,this.handler=t,this.lastCalled=(new Date).getTime(),this.user=!0}run(){return this.lastCalled=(new Date).getTime(),this.handler()}reset(){this.lastCalled=(new Date).getTime()}toString(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},w.Connection=class{constructor(e,t){this.service=e,this.options=t||{};const n=this.options.protocol||"";this.options.worker?this._proto=new w.WorkerWebsocket(this):0===e.indexOf("ws:")||0===e.indexOf("wss:")||0===n.indexOf("ws")?this._proto=new w.Websocket(this):this._proto=new w.Bosh(this),this.jid="",this.domain=null,this.features=null,this._sasl_data={},this.do_bind=!1,this.do_session=!1,this.mechanisms={},this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.protocolErrorHandlers={HTTP:{},websocket:{}},this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.do_authentication=!0,this.paused=!1,this.restored=!1,this._data=[],this._uniqueId=0,this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this.maxRetries=5,this._idleTimeout=setTimeout(()=>this._onIdle(),100),g(this.options.cookies),this.registerSASLMechanisms(this.options.mechanisms);for(const e in w._connectionPlugins)if(Object.prototype.hasOwnProperty.call(w._connectionPlugins,e)){const t=function(){};t.prototype=w._connectionPlugins[e],this[e]=new t,this[e].init(this)}}reset(){this._proto._reset(),this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.restored=!1,this._data=[],this._requests=[],this._uniqueId=0}pause(){this.paused=!0}resume(){this.paused=!1}getUniqueId(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t+""}addProtocolErrorHandler(e,t,n){this.protocolErrorHandlers[e][t]=n}connect(e,t,n,r,i,s,o){this.jid=e,this.authzid=w.getBareJidFromJid(this.jid),this.authcid=o||w.getNodeFromJid(this.jid),this.pass=t,this.connect_callback=n,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.restored=!1,this.domain=w.getDomainFromJid(this.jid),this._changeConnectStatus(w.Status.CONNECTING,null),this._proto._connect(r,i,s)}attach(e,t,n,r,i,s,o){if(this._proto._attach)return this._proto._attach(e,t,n,r,i,s,o);{const e=new Error('The "attach" method is not available for your connection protocol');throw e.name="StropheSessionError",e}}restore(e,t,n,r,i){if(!this._sessionCachingSupported()){const e=new Error('The "restore" method can only be used with a BOSH connection.');throw e.name="StropheSessionError",e}this._proto._restore(e,t,n,r,i)}_sessionCachingSupported(){if(this._proto instanceof w.Bosh){if(!JSON)return!1;try{sessionStorage.setItem("_strophe_","_strophe_"),sessionStorage.removeItem("_strophe_")}catch(e){return!1}return!0}return!1}xmlInput(e){}xmlOutput(e){}rawInput(e){}rawOutput(e){}nextValidRid(e){}send(e){if(null!==e){if("function"==typeof e.sort)for(let t=0;t<e.length;t++)this._queueData(e[t]);else"function"==typeof e.tree?this._queueData(e.tree()):this._queueData(e);this._proto._send()}}flush(){clearTimeout(this._idleTimeout),this._onIdle()}sendPresence(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let s=e.getAttribute("id");if(s||(s=this.getUniqueId("sendPresence"),e.setAttribute("id",s)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i),"error"===e.getAttribute("type")?n&&n(e):t&&t(e)},null,"presence",null,s);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),s}sendIQ(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let s=e.getAttribute("id");if(s||(s=this.getUniqueId("sendIQ"),e.setAttribute("id",s)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i);const r=e.getAttribute("type");if("result"===r)t&&t(e);else{if("error"!==r){const e=new Error("Got bad IQ type of ".concat(r));throw e.name="StropheError",e}n&&n(e)}},null,"iq",["error","result"],s);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),s}_queueData(e){if(null===e||!e.tagName||!e.childNodes){const e=new Error("Cannot queue non-DOMElement.");throw e.name="StropheError",e}this._data.push(e)}_sendRestart(){this._data.push("restart"),this._proto._sendRestart(),this._idleTimeout=setTimeout(()=>this._onIdle(),100)}addTimedHandler(e,t){const n=new w.TimedHandler(e,t);return this.addTimeds.push(n),n}deleteTimedHandler(e){this.removeTimeds.push(e)}addHandler(e,t,n,r,i,s,o){const a=new w.Handler(e,t,n,r,i,s,o);return this.addHandlers.push(a),a}deleteHandler(e){this.removeHandlers.push(e);const t=this.addHandlers.indexOf(e);t>=0&&this.addHandlers.splice(t,1)}registerSASLMechanisms(e){this.mechanisms={},(e=e||[w.SASLAnonymous,w.SASLExternal,w.SASLOAuthBearer,w.SASLXOAuth2,w.SASLPlain,w.SASLSHA1]).forEach(e=>this.registerSASLMechanism(e))}registerSASLMechanism(e){this.mechanisms[e.name]=e}disconnect(e){if(this._changeConnectStatus(w.Status.DISCONNECTING,e),e?w.warn("Disconnect was called because: "+e):w.info("Disconnect was called"),this.connected){let e=!1;this.disconnecting=!0,this.authenticated&&(e=y({xmlns:w.NS.CLIENT,type:"unavailable"})),this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._proto._disconnect(e)}else w.warn("Disconnect was called before Strophe connected to the server"),this._proto._abortAllRequests(),this._doDisconnect()}_changeConnectStatus(e,t,n){for(const n in w._connectionPlugins)if(Object.prototype.hasOwnProperty.call(w._connectionPlugins,n)){const r=this[n];if(r.statusChanged)try{r.statusChanged(e,t)}catch(e){w.error("".concat(n," plugin caused an exception changing status: ").concat(e))}}if(this.connect_callback)try{this.connect_callback(e,t,n)}catch(e){w._handleError(e),w.error("User connection callback caused an exception: ".concat(e))}}_doDisconnect(e){"number"==typeof this._idleTimeout&&clearTimeout(this._idleTimeout),null!==this._disconnectTimeout&&(this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null),w.debug("_doDisconnect was called"),this._proto._doDisconnect(),this.authenticated=!1,this.disconnecting=!1,this.restored=!1,this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._changeConnectStatus(w.Status.DISCONNECTED,e),this.connected=!1}_dataRecv(e,t){const n=this._proto._reqToData(e);if(null===n)return;for(this.xmlInput!==w.Connection.prototype.xmlInput&&(n.nodeName===this._proto.strip&&n.childNodes.length?this.xmlInput(n.childNodes[0]):this.xmlInput(n)),this.rawInput!==w.Connection.prototype.rawInput&&(t?this.rawInput(t):this.rawInput(w.serialize(n)));this.removeHandlers.length>0;){const e=this.removeHandlers.pop(),t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}for(;this.addHandlers.length>0;)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._proto._emptyQueue())return void this._doDisconnect();const r=n.getAttribute("type");if(null!==r&&"terminate"===r){if(this.disconnecting)return;let e=n.getAttribute("condition");const t=n.getElementsByTagName("conflict");return null!==e?("remote-stream-error"===e&&t.length>0&&(e="conflict"),this._changeConnectStatus(w.Status.CONNFAIL,e)):this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.UNKOWN_REASON),void this._doDisconnect(e)}w.forEachChild(n,null,e=>{const t=this.handlers;this.handlers=[];for(let n=0;n<t.length;n++){const r=t[n];try{(!r.isMatch(e)||!this.authenticated&&r.user||r.run(e))&&this.handlers.push(r)}catch(e){w.warn("Removing Strophe handlers due to uncaught exception: "+e.message)}}})}_connect_cb(e,t,n){let r;w.debug("_connect_cb was called"),this.connected=!0;try{r=this._proto._reqToData(e)}catch(e){if(e.name!==w.ErrorCondition.BAD_FORMAT)throw e;this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.BAD_FORMAT),this._doDisconnect(w.ErrorCondition.BAD_FORMAT)}if(!r)return;if(this.xmlInput!==w.Connection.prototype.xmlInput&&(r.nodeName===this._proto.strip&&r.childNodes.length?this.xmlInput(r.childNodes[0]):this.xmlInput(r)),this.rawInput!==w.Connection.prototype.rawInput&&(n?this.rawInput(n):this.rawInput(w.serialize(r))),this._proto._connect_cb(r)===w.Status.CONNFAIL)return;let i;if(i=r.getElementsByTagNameNS?r.getElementsByTagNameNS(w.NS.STREAM,"features").length>0:r.getElementsByTagName("stream:features").length>0||r.getElementsByTagName("features").length>0,!i)return void this._proto._no_auth_received(t);const s=Array.from(r.getElementsByTagName("mechanism")).map(e=>this.mechanisms[e.textContent]).filter(e=>e);0!==s.length||0!==r.getElementsByTagName("auth").length?!1!==this.do_authentication&&this.authenticate(s):this._proto._no_auth_received(t)}sortMechanismsByPriority(e){for(let t=0;t<e.length-1;++t){let n=t;for(let r=t+1;r<e.length;++r)e[r].priority>e[n].priority&&(n=r);if(n!==t){const r=e[t];e[t]=e[n],e[n]=r}}return e}authenticate(e){this._attemptSASLAuth(e)||this._attemptLegacyAuth()}_attemptSASLAuth(e){e=this.sortMechanismsByPriority(e||[]);let t=!1;for(let n=0;n<e.length;++n){if(!e[n].test(this))continue;this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge_cb.bind(this),null,"challenge",null,null),this._sasl_mechanism=new e[n],this._sasl_mechanism.onStart(this);const r=v("auth",{xmlns:w.NS.SASL,mechanism:this._sasl_mechanism.name});if(this._sasl_mechanism.isClientFirst){const e=this._sasl_mechanism.onChallenge(this,null);r.t(Object(m.btoa)(e))}this.send(r.tree()),t=!0;break}return t}_sasl_challenge_cb(e){const t=Object(m.atob)(w.getText(e)),n=this._sasl_mechanism.onChallenge(this,t),r=v("response",{xmlns:w.NS.SASL});return""!==n&&r.t(Object(m.btoa)(n)),this.send(r.tree()),!0}_attemptLegacyAuth(){null===w.getNodeFromJid(this.jid)?(this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.MISSING_JID_NODE),this.disconnect(w.ErrorCondition.MISSING_JID_NODE)):(this._changeConnectStatus(w.Status.AUTHENTICATING,null),this._addSysHandler(this._onLegacyAuthIQResult.bind(this),null,null,null,"_auth_1"),this.send(b({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:w.NS.AUTH}).c("username",{}).t(w.getNodeFromJid(this.jid)).tree()))}_onLegacyAuthIQResult(e){const t=b({type:"set",id:"_auth_2"}).c("query",{xmlns:w.NS.AUTH}).c("username",{}).t(w.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return w.getResourceFromJid(this.jid)||(this.jid=w.getBareJidFromJid(this.jid)+"/strophe"),t.up().c("resource",{}).t(w.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(t.tree()),!1}_sasl_success_cb(e){if(this._sasl_data["server-signature"]){let t;const n=/([a-z]+)=([^,]+)(,|$)/,r=Object(m.atob)(w.getText(e)).match(n);if("v"===r[1]&&(t=r[2]),t!==this._sasl_data["server-signature"])return this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_data={},this._sasl_failure_cb(null)}w.info("SASL authentication succeeded."),this._sasl_mechanism&&this._sasl_mechanism.onSuccess(),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null);const t=[],n=(e,t)=>{for(;e.length;)this.deleteHandler(e.pop());return this._onStreamFeaturesAfterSASL(t),!1};return t.push(this._addSysHandler(e=>n(t,e),null,"stream:features",null,null)),t.push(this._addSysHandler(e=>n(t,e),w.NS.STREAM,"features",null,null)),this._sendRestart(),!1}_onStreamFeaturesAfterSASL(e){this.features=e;for(let t=0;t<e.childNodes.length;t++){const n=e.childNodes[t];"bind"===n.nodeName&&(this.do_bind=!0),"session"===n.nodeName&&(this.do_session=!0)}return this.do_bind?(this.options.explicitResourceBinding?this._changeConnectStatus(w.Status.BINDREQUIRED,null):this.bind(),!1):(this._changeConnectStatus(w.Status.AUTHFAIL,null),!1)}bind(){if(!this.do_bind)return void w.log(w.LogLevel.INFO,'Strophe.Connection.prototype.bind called but "do_bind" is false');this._addSysHandler(this._onResourceBindResultIQ.bind(this),null,null,null,"_bind_auth_2");const e=w.getResourceFromJid(this.jid);e?this.send(b({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:w.NS.BIND}).c("resource",{}).t(e).tree()):this.send(b({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:w.NS.BIND}).tree())}_onResourceBindResultIQ(e){if("error"===e.getAttribute("type")){let t;return w.warn("Resource binding failed."),e.getElementsByTagName("conflict").length>0&&(t=w.ErrorCondition.CONFLICT),this._changeConnectStatus(w.Status.AUTHFAIL,t,e),!1}const t=e.getElementsByTagName("bind");if(!(t.length>0))return w.warn("Resource binding failed."),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1;{const e=t[0].getElementsByTagName("jid");e.length>0&&(this.jid=w.getText(e[0]),this.do_session?this._establishSession():(this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null)))}}_establishSession(){if(!this.do_session)throw new Error("Strophe.Connection.prototype._establishSession "+"called but apparently ".concat(w.NS.SESSION," wasn't advertised by the server"));this._addSysHandler(this._onSessionResultIQ.bind(this),null,null,null,"_session_auth_2"),this.send(b({type:"set",id:"_session_auth_2"}).c("session",{xmlns:w.NS.SESSION}).tree())}_onSessionResultIQ(e){if("result"===e.getAttribute("type"))this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null);else if("error"===e.getAttribute("type"))return w.warn("Session creation failed."),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1;return!1}_sasl_failure_cb(e){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_mechanism&&this._sasl_mechanism.onFailure(),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1}_auth2_cb(e){return"result"===e.getAttribute("type")?(this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null)):"error"===e.getAttribute("type")&&(this._changeConnectStatus(w.Status.AUTHFAIL,null,e),this.disconnect("authentication failed")),!1}_addSysTimedHandler(e,t){const n=new w.TimedHandler(e,t);return n.user=!1,this.addTimeds.push(n),n}_addSysHandler(e,t,n,r,i){const s=new w.Handler(e,t,n,r,i);return s.user=!1,this.addHandlers.push(s),s}_onDisconnectTimeout(){return w.debug("_onDisconnectTimeout was called"),this._changeConnectStatus(w.Status.CONNTIMEOUT,null),this._proto._onDisconnectTimeout(),this._doDisconnect(),!1}_onIdle(){for(;this.addTimeds.length>0;)this.timedHandlers.push(this.addTimeds.pop());for(;this.removeTimeds.length>0;){const e=this.removeTimeds.pop(),t=this.timedHandlers.indexOf(e);t>=0&&this.timedHandlers.splice(t,1)}const e=(new Date).getTime(),t=[];for(let n=0;n<this.timedHandlers.length;n++){const r=this.timedHandlers[n];if(this.authenticated||!r.user){r.lastCalled+r.period-e<=0?r.run()&&t.push(r):t.push(r)}}this.timedHandlers=t,clearTimeout(this._idleTimeout),this._proto._onIdle(),this.connected&&(this._idleTimeout=setTimeout(()=>this._onIdle(),100))}},w.SASLMechanism=class{constructor(e,t,n){this.name=e,this.isClientFirst=t,this.priority=n}static test(e){return!0}onStart(e){this._connection=e}onChallenge(e,t){throw new Error("You should implement challenge handling!")}onFailure(){this._connection=null}onSuccess(){this._connection=null}},w.SASLAnonymous=class extends w.SASLMechanism{constructor(){super(w.SASLAnonymous.name,!1,w.SASLAnonymous.priority)}static get name(){return"ANONYMOUS"}static get priority(){return 20}static test(e){return null===e.authcid}},w.SASLPlain=class extends w.SASLMechanism{constructor(){super(w.SASLPlain.name,!0,w.SASLPlain.priority)}static get name(){return"PLAIN"}static get priority(){return 50}static test(e){return null!==e.authcid}onChallenge(e){const{authcid:t,authzid:n,domain:r,pass:i}=e;if(!r)throw new Error("SASLPlain onChallenge: domain is not defined!");let s=n!=="".concat(t,"@").concat(r)?n:"";return s+="\0",s+=t,s+="\0",s+=i,p(s)}},w.SASLSHA1=class extends w.SASLMechanism{constructor(){super(w.SASLSHA1.name,!0,w.SASLSHA1.priority)}static get name(){return"SCRAM-SHA-1"}static get priority(){return 60}static test(e){return null!==e.authcid}onChallenge(e,t,n){const r=n||h.hexdigest(""+1234567890*Math.random());let i="n="+p(e.authcid);return i+=",r=",i+=r,e._sasl_data.cnonce=r,e._sasl_data["client-first-message-bare"]=i,i="n,,"+i,this.onChallenge=(e,t)=>{let n,r,i,s,o,a,c,l,u="c=biws,",d="".concat(e._sasl_data["client-first-message-bare"],",").concat(t,",");const h=e._sasl_data.cnonce,g=/([a-z]+)=([^,]+)(,|$)/;for(;t.match(g);){const e=t.match(g);switch(t=t.replace(e[0],""),e[1]){case"r":n=e[2];break;case"s":r=e[2];break;case"i":i=e[2]}}if(n.substr(0,h.length)!==h)return e._sasl_data={},e._sasl_failure_cb();u+="r="+n,d+=u,r=Object(m.atob)(r),r+="\0\0\0";const v=p(e.pass);for(s=a=f.a.core_hmac_sha1(v,r),c=1;c<i;c++){for(o=f.a.core_hmac_sha1(v,f.a.binb2str(a)),l=0;l<5;l++)s[l]^=o[l];a=o}s=f.a.binb2str(s);const _=f.a.core_hmac_sha1(s,"Client Key"),b=f.a.str_hmac_sha1(s,"Server Key"),y=f.a.core_hmac_sha1(f.a.str_sha1(f.a.binb2str(_)),d);for(e._sasl_data["server-signature"]=f.a.b64_hmac_sha1(b,d),l=0;l<5;l++)_[l]^=y[l];return u+=",p="+Object(m.btoa)(f.a.binb2str(_)),u},i}},w.SASLOAuthBearer=class extends w.SASLMechanism{constructor(){super(w.SASLOAuthBearer.name,!0,w.SASLOAuthBearer.priority)}static get name(){return"OAUTHBEARER"}static get priority(){return 40}static test(e){return null!==e.pass}onChallenge(e){let t="n,";return null!==e.authcid&&(t=t+"a="+e.authzid),t+=",",t+="",t+="auth=Bearer ",t+=e.pass,t+="",t+="",p(t)}},w.SASLExternal=class extends w.SASLMechanism{constructor(){super(w.SASLExternal.name,!0,w.SASLExternal.priority)}static get name(){return"EXTERNAL"}static get priority(){return 10}onChallenge(e){return e.authcid===e.authzid?"":e.authzid}},w.SASLXOAuth2=class extends w.SASLMechanism{constructor(){super(w.SASLXOAuth2.name,!0,w.SASLXOAuth2.priority)}static get name(){return"X-OAUTH2"}static get priority(){return 30}static test(e){return null!==e.pass}onChallenge(e){let t="\0";return null!==e.authcid&&(t+=e.authzid),t+="\0",t+=e.pass,p(t)}};t.f={Strophe:w,$build:v,$iq:b,$msg:_,$pres:y,SHA1:f.a,MD5:h,b64_hmac_sha1:f.a.b64_hmac_sha1,b64_sha1:f.a.b64_sha1,str_hmac_sha1:f.a.str_hmac_sha1,str_sha1:f.a.str_sha1}},function(e,t,n){"use strict";n.d(t,"a",(function(){return C})),n.d(t,"b",(function(){return j})),n.d(t,"c",(function(){return O}));var r=n(14);const i=function(e,t){const n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n},s=function(e){if("string"!=typeof e)throw new Error("str2binl was passed a non-string");const t=[];for(let n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return t},o=function(e,t,n,r,s,o){return i((a=i(i(t,e),i(r,o)))<<(c=s)|a>>>32-c,n);var a,c},a=function(e,t,n,r,i,s,a){return o(t&n|~t&r,e,t,i,s,a)},c=function(e,t,n,r,i,s,a){return o(t&r|n&~r,e,t,i,s,a)},l=function(e,t,n,r,i,s,a){return o(t^n^r,e,t,i,s,a)},u=function(e,t,n,r,i,s,a){return o(n^(t|~r),e,t,i,s,a)},d=function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;let n,r,s,o,d=1732584193,h=-271733879,f=-1732584194,p=271733878;for(let t=0;t<e.length;t+=16)n=d,r=h,s=f,o=p,d=a(d,h,f,p,e[t+0],7,-680876936),p=a(p,d,h,f,e[t+1],12,-389564586),f=a(f,p,d,h,e[t+2],17,606105819),h=a(h,f,p,d,e[t+3],22,-1044525330),d=a(d,h,f,p,e[t+4],7,-176418897),p=a(p,d,h,f,e[t+5],12,1200080426),f=a(f,p,d,h,e[t+6],17,-1473231341),h=a(h,f,p,d,e[t+7],22,-45705983),d=a(d,h,f,p,e[t+8],7,1770035416),p=a(p,d,h,f,e[t+9],12,-1958414417),f=a(f,p,d,h,e[t+10],17,-42063),h=a(h,f,p,d,e[t+11],22,-1990404162),d=a(d,h,f,p,e[t+12],7,1804603682),p=a(p,d,h,f,e[t+13],12,-40341101),f=a(f,p,d,h,e[t+14],17,-1502002290),h=a(h,f,p,d,e[t+15],22,1236535329),d=c(d,h,f,p,e[t+1],5,-165796510),p=c(p,d,h,f,e[t+6],9,-1069501632),f=c(f,p,d,h,e[t+11],14,643717713),h=c(h,f,p,d,e[t+0],20,-373897302),d=c(d,h,f,p,e[t+5],5,-701558691),p=c(p,d,h,f,e[t+10],9,38016083),f=c(f,p,d,h,e[t+15],14,-660478335),h=c(h,f,p,d,e[t+4],20,-405537848),d=c(d,h,f,p,e[t+9],5,568446438),p=c(p,d,h,f,e[t+14],9,-1019803690),f=c(f,p,d,h,e[t+3],14,-187363961),h=c(h,f,p,d,e[t+8],20,1163531501),d=c(d,h,f,p,e[t+13],5,-1444681467),p=c(p,d,h,f,e[t+2],9,-51403784),f=c(f,p,d,h,e[t+7],14,1735328473),h=c(h,f,p,d,e[t+12],20,-1926607734),d=l(d,h,f,p,e[t+5],4,-378558),p=l(p,d,h,f,e[t+8],11,-2022574463),f=l(f,p,d,h,e[t+11],16,1839030562),h=l(h,f,p,d,e[t+14],23,-35309556),d=l(d,h,f,p,e[t+1],4,-1530992060),p=l(p,d,h,f,e[t+4],11,1272893353),f=l(f,p,d,h,e[t+7],16,-155497632),h=l(h,f,p,d,e[t+10],23,-1094730640),d=l(d,h,f,p,e[t+13],4,681279174),p=l(p,d,h,f,e[t+0],11,-358537222),f=l(f,p,d,h,e[t+3],16,-722521979),h=l(h,f,p,d,e[t+6],23,76029189),d=l(d,h,f,p,e[t+9],4,-640364487),p=l(p,d,h,f,e[t+12],11,-421815835),f=l(f,p,d,h,e[t+15],16,530742520),h=l(h,f,p,d,e[t+2],23,-995338651),d=u(d,h,f,p,e[t+0],6,-198630844),p=u(p,d,h,f,e[t+7],10,1126891415),f=u(f,p,d,h,e[t+14],15,-1416354905),h=u(h,f,p,d,e[t+5],21,-57434055),d=u(d,h,f,p,e[t+12],6,1700485571),p=u(p,d,h,f,e[t+3],10,-1894986606),f=u(f,p,d,h,e[t+10],15,-1051523),h=u(h,f,p,d,e[t+1],21,-2054922799),d=u(d,h,f,p,e[t+8],6,1873313359),p=u(p,d,h,f,e[t+15],10,-30611744),f=u(f,p,d,h,e[t+6],15,-1560198380),h=u(h,f,p,d,e[t+13],21,1309151649),d=u(d,h,f,p,e[t+4],6,-145523070),p=u(p,d,h,f,e[t+11],10,-1120210379),f=u(f,p,d,h,e[t+2],15,718787259),h=u(h,f,p,d,e[t+9],21,-343485551),d=i(d,n),h=i(h,r),f=i(f,s),p=i(p,o);return[d,h,f,p]},h={hexdigest:function(e){return function(e){let t="";for(let n=0;n<4*e.length;n++)t+="0123456789abcdef".charAt(e[n>>2]>>n%4*8+4&15)+"0123456789abcdef".charAt(e[n>>2]>>n%4*8&15);return t}(d(s(e),8*e.length))},hash:function(e){return function(e){let t="";for(let n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>n%32&255);return t}(d(s(e),8*e.length))}};function f(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;var n,r,i,s,o,a,c,l,u=new Array(80),d=1732584193,h=-271733879,f=-1732584194,m=271733878,b=-1009589776;for(n=0;n<e.length;n+=16){for(s=d,o=h,a=f,c=m,l=b,r=0;r<80;r++)u[r]=r<16?e[n+r]:_(u[r-3]^u[r-8]^u[r-14]^u[r-16],1),i=v(v(_(d,5),p(r,h,f,m)),v(v(b,u[r]),g(r))),b=m,m=f,f=_(h,30),h=d,d=i;d=v(d,s),h=v(h,o),f=v(f,a),m=v(m,c),b=v(b,l)}return[d,h,f,m,b]}function p(e,t,n,r){return e<20?t&n|~t&r:e<40?t^n^r:e<60?t&n|t&r|n&r:t^n^r}function g(e){return e<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514}function m(e,t){var n=b(e);n.length>16&&(n=f(n,8*e.length));for(var r=new Array(16),i=new Array(16),s=0;s<16;s++)r[s]=909522486^n[s],i[s]=1549556828^n[s];var o=f(r.concat(b(t)),512+8*t.length);return f(i.concat(o),672)}function v(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function _(e,t){return e<<t|e>>>32-t}function b(e){for(var t=[],n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<24-n%32;return t}function y(e){for(var t,n,r="",i=0;i<4*e.length;i+=3)for(t=(e[i>>2]>>8*(3-i%4)&255)<<16|(e[i+1>>2]>>8*(3-(i+1)%4)&255)<<8|e[i+2>>2]>>8*(3-(i+2)%4)&255,n=0;n<4;n++)8*i+6*n>32*e.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t>>6*(3-n)&63);return r}function w(e){for(var t="",n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>24-n%32&255);return t}const S={b64_hmac_sha1:function(e,t){return y(m(e,t))},b64_sha1:function(e){return y(f(b(e),8*e.length))},binb2str:w,core_hmac_sha1:m,str_hmac_sha1:function(e,t){return w(m(e,t))},str_sha1:function(e){return w(f(b(e),8*e.length))}},x=function(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)(n=e.charCodeAt(t))>=0&&n<=127?r+=e.charAt(t):n>2047?(r+=String.fromCharCode(224|n>>12&15),r+=String.fromCharCode(128|n>>6&63),r+=String.fromCharCode(128|n>>0&63)):(r+=String.fromCharCode(192|n>>6&31),r+=String.fromCharCode(128|n>>0&63));return r},E=function(e){e=e||{};for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n="",r="",i="";const s=e[t],o="object"==typeof s,a=escape(unescape(o?s.value:s));o&&(n=s.expires?";expires="+s.expires:"",r=s.domain?";domain="+s.domain:"",i=s.path?";path="+s.path:""),document.cookie=t+"="+a+n+r+i}};var A=n(9);function C(e,t){return new O.Builder(e,t)}function j(e){return new O.Builder("iq",e)}function T(e){return new O.Builder("presence",e)}const O={VERSION:"1.4.0",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",FRAMING:"urn:ietf:params:xml:ns:xmpp-framing",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas",XHTML_IM:"http://jabber.org/protocol/xhtml-im",XHTML:"http://www.w3.org/1999/xhtml"},XHTML:{tags:["a","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body"],attributes:{a:["href"],blockquote:["style"],br:[],cite:["style"],em:[],img:["src","alt","style","height","width"],li:["style"],ol:["style"],p:["style"],span:["style"],strong:[],ul:["style"],body:[]},css:["background-color","color","font-family","font-size","font-style","font-weight","margin-left","margin-right","text-align","text-decoration"],validTag(e){for(let t=0;t<O.XHTML.tags.length;t++)if(e===O.XHTML.tags[t])return!0;return!1},validAttribute(e,t){if(void 0!==O.XHTML.attributes[e]&&O.XHTML.attributes[e].length>0)for(let n=0;n<O.XHTML.attributes[e].length;n++)if(t===O.XHTML.attributes[e][n])return!0;return!1},validCSS(e){for(let t=0;t<O.XHTML.css.length;t++)if(e===O.XHTML.css[t])return!0;return!1}},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8,REDIRECT:9,CONNTIMEOUT:10,BINDREQUIRED:11,ATTACHFAIL:12},ErrorCondition:{BAD_FORMAT:"bad-format",CONFLICT:"conflict",MISSING_JID_NODE:"x-strophe-bad-non-anon-jid",NO_AUTH_MECH:"no-auth-mech",UNKNOWN_REASON:"unknown"},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4,FRAGMENT:11},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,addNamespace(e,t){O.NS[e]=t},forEachChild(e,t,n){for(let r=0;r<e.childNodes.length;r++){const i=e.childNodes[r];i.nodeType!==O.ElementType.NORMAL||t&&!this.isTagEqual(i,t)||n(i)}},isTagEqual:(e,t)=>e.tagName===t,_xmlGenerator:null,xmlGenerator:()=>(O._xmlGenerator||(O._xmlGenerator=r.b()),O._xmlGenerator),xmlElement(e){if(!e)return null;const t=O.xmlGenerator().createElement(e);for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)if("string"==typeof n||"number"==typeof n)t.appendChild(O.xmlTextNode(n));else if("object"==typeof n&&"function"==typeof n.sort)for(let e=0;e<n.length;e++){const r=n[e];"object"==typeof r&&"function"==typeof r.sort&&void 0!==r[1]&&null!==r[1]&&t.setAttribute(r[0],r[1])}else if("object"==typeof n)for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&void 0!==n[e]&&null!==n[e]&&t.setAttribute(e,n[e])}return t},xmlescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,"""),xmlunescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,'"'),xmlTextNode:e=>O.xmlGenerator().createTextNode(e),xmlHtmlNode(e){let t;if(r.a){t=(new r.a).parseFromString(e,"text/xml")}else t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e);return t},getText(e){if(!e)return null;let t="";0===e.childNodes.length&&e.nodeType===O.ElementType.TEXT&&(t+=e.nodeValue);for(let n=0;n<e.childNodes.length;n++)e.childNodes[n].nodeType===O.ElementType.TEXT&&(t+=e.childNodes[n].nodeValue);return O.xmlescape(t)},copyElement(e){let t;if(e.nodeType===O.ElementType.NORMAL){t=O.xmlElement(e.tagName);for(let n=0;n<e.attributes.length;n++)t.setAttribute(e.attributes[n].nodeName,e.attributes[n].value);for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.copyElement(e.childNodes[n]))}else e.nodeType===O.ElementType.TEXT&&(t=O.xmlGenerator().createTextNode(e.nodeValue));return t},createHtml(e){let t;if(e.nodeType===O.ElementType.NORMAL){const n=e.nodeName.toLowerCase();if(O.XHTML.validTag(n))try{t=O.xmlElement(n);for(let r=0;r<O.XHTML.attributes[n].length;r++){const i=O.XHTML.attributes[n][r];let s=e.getAttribute(i);if(null!=s&&""!==s&&!1!==s&&0!==s)if("style"===i&&"object"==typeof s&&void 0!==s.cssText&&(s=s.cssText),"style"===i){const e=[],n=s.split(";");for(let t=0;t<n.length;t++){const r=n[t].split(":"),i=r[0].replace(/^\s*/,"").replace(/\s*$/,"").toLowerCase();if(O.XHTML.validCSS(i)){const t=r[1].replace(/^\s*/,"").replace(/\s*$/,"");e.push(i+": "+t)}}e.length>0&&(s=e.join("; "),t.setAttribute(i,s))}else t.setAttribute(i,s)}for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}catch(e){t=O.xmlTextNode("")}else{t=O.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}}else if(e.nodeType===O.ElementType.FRAGMENT){t=O.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}else e.nodeType===O.ElementType.TEXT&&(t=O.xmlTextNode(e.nodeValue));return t},escapeNode:e=>"string"!=typeof e?e:e.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40"),unescapeNode:e=>"string"!=typeof e?e:e.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\"),getNodeFromJid:e=>e.indexOf("@")<0?null:e.split("@")[0],getDomainFromJid(e){const t=O.getBareJidFromJid(e);if(t.indexOf("@")<0)return t;{const e=t.split("@");return e.splice(0,1),e.join("@")}},getResourceFromJid(e){if(!e)return null;const t=e.split("/");return t.length<2?null:(t.splice(0,1),t.join("/"))},getBareJidFromJid:e=>e?e.split("/")[0]:null,_handleError(e){void 0!==e.stack&&O.fatal(e.stack),e.sourceURL?O.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message):e.fileName?O.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message):O.fatal("error: "+e.message)},log(e,t){e===this.LogLevel.FATAL&&"object"==typeof window.console&&"function"==typeof window.console.error&&window.console.error(t)},debug(e){this.log(this.LogLevel.DEBUG,e)},info(e){this.log(this.LogLevel.INFO,e)},warn(e){this.log(this.LogLevel.WARN,e)},error(e){this.log(this.LogLevel.ERROR,e)},fatal(e){this.log(this.LogLevel.FATAL,e)},serialize(e){if(!e)return null;"function"==typeof e.tree&&(e=e.tree());const t=[...Array(e.attributes.length).keys()].map(t=>e.attributes[t].nodeName);t.sort();let n=t.reduce((t,n)=>"".concat(t," ").concat(n,'="').concat(O.xmlescape(e.attributes.getNamedItem(n).value),'"'),"<".concat(e.nodeName));if(e.childNodes.length>0){n+=">";for(let t=0;t<e.childNodes.length;t++){const r=e.childNodes[t];switch(r.nodeType){case O.ElementType.NORMAL:n+=O.serialize(r);break;case O.ElementType.TEXT:n+=O.xmlescape(r.nodeValue);break;case O.ElementType.CDATA:n+="<![CDATA["+r.nodeValue+"]]>"}}n+="</"+e.nodeName+">"}else n+="/>";return n},_requestId:0,_connectionPlugins:{},addConnectionPlugin(e,t){O._connectionPlugins[e]=t},Builder:class{constructor(e,t){"presence"!==e&&"message"!==e&&"iq"!==e||(t&&!t.xmlns?t.xmlns=O.NS.CLIENT:t||(t={xmlns:O.NS.CLIENT})),this.nodeTree=O.xmlElement(e,t),this.node=this.nodeTree}tree(){return this.nodeTree}toString(){return O.serialize(this.nodeTree)}up(){return this.node=this.node.parentNode,this}root(){return this.node=this.nodeTree,this}attrs(e){for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===e[t]?this.node.removeAttribute(t):this.node.setAttribute(t,e[t]));return this}c(e,t,n){const r=O.xmlElement(e,t,n);return this.node.appendChild(r),"string"!=typeof n&&"number"!=typeof n&&(this.node=r),this}cnode(e){let t;const n=O.xmlGenerator();try{t=void 0!==n.importNode}catch(e){t=!1}const r=t?n.importNode(e,!0):O.copyElement(e);return this.node.appendChild(r),this.node=r,this}t(e){const t=O.xmlTextNode(e);return this.node.appendChild(t),this}h(e){const t=O.xmlGenerator().createElement("body");t.innerHTML=e;const n=O.createHtml(t);for(;n.childNodes.length>0;)this.node.appendChild(n.childNodes[0]);return this}},Handler:function(e,t,n,r,i,s,o){this.handler=e,this.ns=t,this.name=n,this.type=r,this.id=i,this.options=o||{matchBareFromJid:!1,ignoreNamespaceFragment:!1},this.options.matchBare&&(O.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.'),this.options.matchBareFromJid=this.options.matchBare,delete this.options.matchBare),this.options.matchBareFromJid?this.from=s?O.getBareJidFromJid(s):null:this.from=s,this.user=!0}};O.Handler.prototype={getNamespace(e){let t=e.getAttribute("xmlns");return t&&this.options.ignoreNamespaceFragment&&(t=t.split("#")[0]),t},namespaceMatch(e){let t=!1;return!this.ns||(O.forEachChild(e,null,e=>{this.getNamespace(e)===this.ns&&(t=!0)}),t||this.getNamespace(e)===this.ns)},isMatch(e){let t=e.getAttribute("from");this.options.matchBareFromJid&&(t=O.getBareJidFromJid(t));const n=e.getAttribute("type");return!(!this.namespaceMatch(e)||this.name&&!O.isTagEqual(e,this.name)||this.type&&(Array.isArray(this.type)?-1===this.type.indexOf(n):n!==this.type)||this.id&&e.getAttribute("id")!==this.id||this.from&&t!==this.from)},run(e){let t=null;try{t=this.handler(e)}catch(e){throw O._handleError(e),e}return t},toString(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},O.TimedHandler=class{constructor(e,t){this.period=e,this.handler=t,this.lastCalled=(new Date).getTime(),this.user=!0}run(){return this.lastCalled=(new Date).getTime(),this.handler()}reset(){this.lastCalled=(new Date).getTime()}toString(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},O.Connection=class{constructor(e,t){this.service=e,this.options=t||{};const n=this.options.protocol||"";this.options.worker?this._proto=new O.WorkerWebsocket(this):0===e.indexOf("ws:")||0===e.indexOf("wss:")||0===n.indexOf("ws")?this._proto=new O.Websocket(this):this._proto=new O.Bosh(this),this.jid="",this.domain=null,this.features=null,this._sasl_data={},this.do_bind=!1,this.do_session=!1,this.mechanisms={},this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.protocolErrorHandlers={HTTP:{},websocket:{}},this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.do_authentication=!0,this.paused=!1,this.restored=!1,this._data=[],this._uniqueId=0,this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this.maxRetries=5,this._idleTimeout=setTimeout(()=>this._onIdle(),100),E(this.options.cookies),this.registerSASLMechanisms(this.options.mechanisms);for(const e in O._connectionPlugins)if(Object.prototype.hasOwnProperty.call(O._connectionPlugins,e)){const t=function(){};t.prototype=O._connectionPlugins[e],this[e]=new t,this[e].init(this)}}reset(){this._proto._reset(),this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.restored=!1,this._data=[],this._requests=[],this._uniqueId=0}pause(){this.paused=!0}resume(){this.paused=!1}getUniqueId(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t+""}addProtocolErrorHandler(e,t,n){this.protocolErrorHandlers[e][t]=n}connect(e,t,n,r,i,s,o){this.jid=e,this.authzid=O.getBareJidFromJid(this.jid),this.authcid=o||O.getNodeFromJid(this.jid),this.pass=t,this.connect_callback=n,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.restored=!1,this.domain=O.getDomainFromJid(this.jid),this._changeConnectStatus(O.Status.CONNECTING,null),this._proto._connect(r,i,s)}attach(e,t,n,r,i,s,o){if(this._proto._attach)return this._proto._attach(e,t,n,r,i,s,o);{const e=new Error('The "attach" method is not available for your connection protocol');throw e.name="StropheSessionError",e}}restore(e,t,n,r,i){if(!this._sessionCachingSupported()){const e=new Error('The "restore" method can only be used with a BOSH connection.');throw e.name="StropheSessionError",e}this._proto._restore(e,t,n,r,i)}_sessionCachingSupported(){if(this._proto instanceof O.Bosh){if(!JSON)return!1;try{sessionStorage.setItem("_strophe_","_strophe_"),sessionStorage.removeItem("_strophe_")}catch(e){return!1}return!0}return!1}xmlInput(e){}xmlOutput(e){}rawInput(e){}rawOutput(e){}nextValidRid(e){}send(e){if(null!==e){if("function"==typeof e.sort)for(let t=0;t<e.length;t++)this._queueData(e[t]);else"function"==typeof e.tree?this._queueData(e.tree()):this._queueData(e);this._proto._send()}}flush(){clearTimeout(this._idleTimeout),this._onIdle()}sendPresence(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let s=e.getAttribute("id");if(s||(s=this.getUniqueId("sendPresence"),e.setAttribute("id",s)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i),"error"===e.getAttribute("type")?n&&n(e):t&&t(e)},null,"presence",null,s);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),s}sendIQ(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let s=e.getAttribute("id");if(s||(s=this.getUniqueId("sendIQ"),e.setAttribute("id",s)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i);const r=e.getAttribute("type");if("result"===r)t&&t(e);else{if("error"!==r){const e=new Error("Got bad IQ type of ".concat(r));throw e.name="StropheError",e}n&&n(e)}},null,"iq",["error","result"],s);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),s}_queueData(e){if(null===e||!e.tagName||!e.childNodes){const e=new Error("Cannot queue non-DOMElement.");throw e.name="StropheError",e}this._data.push(e)}_sendRestart(){this._data.push("restart"),this._proto._sendRestart(),this._idleTimeout=setTimeout(()=>this._onIdle(),100)}addTimedHandler(e,t){const n=new O.TimedHandler(e,t);return this.addTimeds.push(n),n}deleteTimedHandler(e){this.removeTimeds.push(e)}addHandler(e,t,n,r,i,s,o){const a=new O.Handler(e,t,n,r,i,s,o);return this.addHandlers.push(a),a}deleteHandler(e){this.removeHandlers.push(e);const t=this.addHandlers.indexOf(e);t>=0&&this.addHandlers.splice(t,1)}registerSASLMechanisms(e){this.mechanisms={},(e=e||[O.SASLAnonymous,O.SASLExternal,O.SASLOAuthBearer,O.SASLXOAuth2,O.SASLPlain,O.SASLSHA1]).forEach(e=>this.registerSASLMechanism(e))}registerSASLMechanism(e){const t=new e;this.mechanisms[t.mechname]=t}disconnect(e){if(this._changeConnectStatus(O.Status.DISCONNECTING,e),e?O.warn("Disconnect was called because: "+e):O.info("Disconnect was called"),this.connected){let e=!1;this.disconnecting=!0,this.authenticated&&(e=T({xmlns:O.NS.CLIENT,type:"unavailable"})),this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._proto._disconnect(e)}else O.warn("Disconnect was called before Strophe connected to the server"),this._proto._abortAllRequests(),this._doDisconnect()}_changeConnectStatus(e,t,n){for(const n in O._connectionPlugins)if(Object.prototype.hasOwnProperty.call(O._connectionPlugins,n)){const r=this[n];if(r.statusChanged)try{r.statusChanged(e,t)}catch(e){O.error("".concat(n," plugin caused an exception changing status: ").concat(e))}}if(this.connect_callback)try{this.connect_callback(e,t,n)}catch(e){O._handleError(e),O.error("User connection callback caused an exception: ".concat(e))}}_doDisconnect(e){"number"==typeof this._idleTimeout&&clearTimeout(this._idleTimeout),null!==this._disconnectTimeout&&(this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null),O.debug("_doDisconnect was called"),this._proto._doDisconnect(),this.authenticated=!1,this.disconnecting=!1,this.restored=!1,this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._changeConnectStatus(O.Status.DISCONNECTED,e),this.connected=!1}_dataRecv(e,t){const n=this._proto._reqToData(e);if(null===n)return;for(this.xmlInput!==O.Connection.prototype.xmlInput&&(n.nodeName===this._proto.strip&&n.childNodes.length?this.xmlInput(n.childNodes[0]):this.xmlInput(n)),this.rawInput!==O.Connection.prototype.rawInput&&(t?this.rawInput(t):this.rawInput(O.serialize(n)));this.removeHandlers.length>0;){const e=this.removeHandlers.pop(),t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}for(;this.addHandlers.length>0;)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._proto._emptyQueue())return void this._doDisconnect();const r=n.getAttribute("type");if(null!==r&&"terminate"===r){if(this.disconnecting)return;let e=n.getAttribute("condition");const t=n.getElementsByTagName("conflict");return null!==e?("remote-stream-error"===e&&t.length>0&&(e="conflict"),this._changeConnectStatus(O.Status.CONNFAIL,e)):this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.UNKOWN_REASON),void this._doDisconnect(e)}O.forEachChild(n,null,e=>{const t=this.handlers;this.handlers=[];for(let n=0;n<t.length;n++){const r=t[n];try{(!r.isMatch(e)||!this.authenticated&&r.user||r.run(e))&&this.handlers.push(r)}catch(e){O.warn("Removing Strophe handlers due to uncaught exception: "+e.message)}}})}_connect_cb(e,t,n){let r;O.debug("_connect_cb was called"),this.connected=!0;try{r=this._proto._reqToData(e)}catch(e){if(e.name!==O.ErrorCondition.BAD_FORMAT)throw e;this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.BAD_FORMAT),this._doDisconnect(O.ErrorCondition.BAD_FORMAT)}if(!r)return;if(this.xmlInput!==O.Connection.prototype.xmlInput&&(r.nodeName===this._proto.strip&&r.childNodes.length?this.xmlInput(r.childNodes[0]):this.xmlInput(r)),this.rawInput!==O.Connection.prototype.rawInput&&(n?this.rawInput(n):this.rawInput(O.serialize(r))),this._proto._connect_cb(r)===O.Status.CONNFAIL)return;let i;if(i=r.getElementsByTagNameNS?r.getElementsByTagNameNS(O.NS.STREAM,"features").length>0:r.getElementsByTagName("stream:features").length>0||r.getElementsByTagName("features").length>0,!i)return void this._proto._no_auth_received(t);const s=Array.from(r.getElementsByTagName("mechanism")).map(e=>this.mechanisms[e.textContent]).filter(e=>e);0!==s.length||0!==r.getElementsByTagName("auth").length?!1!==this.do_authentication&&this.authenticate(s):this._proto._no_auth_received(t)}sortMechanismsByPriority(e){for(let t=0;t<e.length-1;++t){let n=t;for(let r=t+1;r<e.length;++r)e[r].priority>e[n].priority&&(n=r);if(n!==t){const r=e[t];e[t]=e[n],e[n]=r}}return e}authenticate(e){this._attemptSASLAuth(e)||this._attemptLegacyAuth()}_attemptSASLAuth(e){e=this.sortMechanismsByPriority(e||[]);let t=!1;for(let n=0;n<e.length;++n){if(!e[n].test(this))continue;this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge_cb.bind(this),null,"challenge",null,null),this._sasl_mechanism=e[n],this._sasl_mechanism.onStart(this);const r=C("auth",{xmlns:O.NS.SASL,mechanism:this._sasl_mechanism.mechname});if(this._sasl_mechanism.isClientFirst){const e=this._sasl_mechanism.onChallenge(this,null);r.t(Object(A.btoa)(e))}this.send(r.tree()),t=!0;break}return t}_sasl_challenge_cb(e){const t=Object(A.atob)(O.getText(e)),n=this._sasl_mechanism.onChallenge(this,t),r=C("response",{xmlns:O.NS.SASL});return""!==n&&r.t(Object(A.btoa)(n)),this.send(r.tree()),!0}_attemptLegacyAuth(){null===O.getNodeFromJid(this.jid)?(this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.MISSING_JID_NODE),this.disconnect(O.ErrorCondition.MISSING_JID_NODE)):(this._changeConnectStatus(O.Status.AUTHENTICATING,null),this._addSysHandler(this._onLegacyAuthIQResult.bind(this),null,null,null,"_auth_1"),this.send(j({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:O.NS.AUTH}).c("username",{}).t(O.getNodeFromJid(this.jid)).tree()))}_onLegacyAuthIQResult(e){const t=j({type:"set",id:"_auth_2"}).c("query",{xmlns:O.NS.AUTH}).c("username",{}).t(O.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return O.getResourceFromJid(this.jid)||(this.jid=O.getBareJidFromJid(this.jid)+"/strophe"),t.up().c("resource",{}).t(O.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(t.tree()),!1}_sasl_success_cb(e){if(this._sasl_data["server-signature"]){let t;const n=/([a-z]+)=([^,]+)(,|$)/,r=Object(A.atob)(O.getText(e)).match(n);if("v"===r[1]&&(t=r[2]),t!==this._sasl_data["server-signature"])return this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_data={},this._sasl_failure_cb(null)}O.info("SASL authentication succeeded."),this._sasl_mechanism&&this._sasl_mechanism.onSuccess(),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null);const t=[],n=(e,t)=>{for(;e.length;)this.deleteHandler(e.pop());return this._onStreamFeaturesAfterSASL(t),!1};return t.push(this._addSysHandler(e=>n(t,e),null,"stream:features",null,null)),t.push(this._addSysHandler(e=>n(t,e),O.NS.STREAM,"features",null,null)),this._sendRestart(),!1}_onStreamFeaturesAfterSASL(e){this.features=e;for(let t=0;t<e.childNodes.length;t++){const n=e.childNodes[t];"bind"===n.nodeName&&(this.do_bind=!0),"session"===n.nodeName&&(this.do_session=!0)}return this.do_bind?(this.options.explicitResourceBinding?this._changeConnectStatus(O.Status.BINDREQUIRED,null):this.bind(),!1):(this._changeConnectStatus(O.Status.AUTHFAIL,null),!1)}bind(){if(!this.do_bind)return void O.log(O.LogLevel.INFO,'Strophe.Connection.prototype.bind called but "do_bind" is false');this._addSysHandler(this._onResourceBindResultIQ.bind(this),null,null,null,"_bind_auth_2");const e=O.getResourceFromJid(this.jid);e?this.send(j({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:O.NS.BIND}).c("resource",{}).t(e).tree()):this.send(j({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:O.NS.BIND}).tree())}_onResourceBindResultIQ(e){if("error"===e.getAttribute("type")){let t;return O.warn("Resource binding failed."),e.getElementsByTagName("conflict").length>0&&(t=O.ErrorCondition.CONFLICT),this._changeConnectStatus(O.Status.AUTHFAIL,t,e),!1}const t=e.getElementsByTagName("bind");if(!(t.length>0))return O.warn("Resource binding failed."),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1;{const e=t[0].getElementsByTagName("jid");e.length>0&&(this.authenticated=!0,this.jid=O.getText(e[0]),this.do_session?this._establishSession():this._changeConnectStatus(O.Status.CONNECTED,null))}}_establishSession(){if(!this.do_session)throw new Error("Strophe.Connection.prototype._establishSession "+"called but apparently ".concat(O.NS.SESSION," wasn't advertised by the server"));this._addSysHandler(this._onSessionResultIQ.bind(this),null,null,null,"_session_auth_2"),this.send(j({type:"set",id:"_session_auth_2"}).c("session",{xmlns:O.NS.SESSION}).tree())}_onSessionResultIQ(e){if("result"===e.getAttribute("type"))this.authenticated=!0,this._changeConnectStatus(O.Status.CONNECTED,null);else if("error"===e.getAttribute("type"))return this.authenticated=!1,O.warn("Session creation failed."),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1;return!1}_sasl_failure_cb(e){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_mechanism&&this._sasl_mechanism.onFailure(),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1}_auth2_cb(e){return"result"===e.getAttribute("type")?(this.authenticated=!0,this._changeConnectStatus(O.Status.CONNECTED,null)):"error"===e.getAttribute("type")&&(this._changeConnectStatus(O.Status.AUTHFAIL,null,e),this.disconnect("authentication failed")),!1}_addSysTimedHandler(e,t){const n=new O.TimedHandler(e,t);return n.user=!1,this.addTimeds.push(n),n}_addSysHandler(e,t,n,r,i){const s=new O.Handler(e,t,n,r,i);return s.user=!1,this.addHandlers.push(s),s}_onDisconnectTimeout(){return O.debug("_onDisconnectTimeout was called"),this._changeConnectStatus(O.Status.CONNTIMEOUT,null),this._proto._onDisconnectTimeout(),this._doDisconnect(),!1}_onIdle(){for(;this.addTimeds.length>0;)this.timedHandlers.push(this.addTimeds.pop());for(;this.removeTimeds.length>0;){const e=this.removeTimeds.pop(),t=this.timedHandlers.indexOf(e);t>=0&&this.timedHandlers.splice(t,1)}const e=(new Date).getTime(),t=[];for(let n=0;n<this.timedHandlers.length;n++){const r=this.timedHandlers[n];if(this.authenticated||!r.user){r.lastCalled+r.period-e<=0?r.run()&&t.push(r):t.push(r)}}this.timedHandlers=t,clearTimeout(this._idleTimeout),this._proto._onIdle(),this.connected&&(this._idleTimeout=setTimeout(()=>this._onIdle(),100))}},O.SASLMechanism=class{constructor(e,t,n){this.mechname=e,this.isClientFirst=t,this.priority=n}test(){return!0}onStart(e){this._connection=e}onChallenge(e,t){throw new Error("You should implement challenge handling!")}onFailure(){this._connection=null}onSuccess(){this._connection=null}},O.SASLAnonymous=class extends O.SASLMechanism{constructor(e="ANONYMOUS",t=!1,n=20){super(e,t,n)}test(e){return null===e.authcid}},O.SASLPlain=class extends O.SASLMechanism{constructor(e="PLAIN",t=!0,n=50){super(e,t,n)}test(e){return null!==e.authcid}onChallenge(e){const{authcid:t,authzid:n,domain:r,pass:i}=e;if(!r)throw new Error("SASLPlain onChallenge: domain is not defined!");let s=n!=="".concat(t,"@").concat(r)?n:"";return s+="\0",s+=t,s+="\0",s+=i,x(s)}},O.SASLSHA1=class extends O.SASLMechanism{constructor(e="SCRAM-SHA-1",t=!0,n=60){super(e,t,n)}test(e){return null!==e.authcid}onChallenge(e,t,n){const r=n||h.hexdigest(""+1234567890*Math.random());let i="n="+x(e.authcid);return i+=",r=",i+=r,e._sasl_data.cnonce=r,e._sasl_data["client-first-message-bare"]=i,i="n,,"+i,this.onChallenge=(e,t)=>{let n,r,i,s,o,a,c,l,u="c=biws,",d="".concat(e._sasl_data["client-first-message-bare"],",").concat(t,",");const h=e._sasl_data.cnonce,f=/([a-z]+)=([^,]+)(,|$)/;for(;t.match(f);){const e=t.match(f);switch(t=t.replace(e[0],""),e[1]){case"r":n=e[2];break;case"s":r=e[2];break;case"i":i=e[2]}}if(n.substr(0,h.length)!==h)return e._sasl_data={},e._sasl_failure_cb();u+="r="+n,d+=u,r=Object(A.atob)(r),r+="\0\0\0";const p=x(e.pass);for(s=a=S.core_hmac_sha1(p,r),c=1;c<i;c++){for(o=S.core_hmac_sha1(p,S.binb2str(a)),l=0;l<5;l++)s[l]^=o[l];a=o}s=S.binb2str(s);const g=S.core_hmac_sha1(s,"Client Key"),m=S.str_hmac_sha1(s,"Server Key"),v=S.core_hmac_sha1(S.str_sha1(S.binb2str(g)),d);for(e._sasl_data["server-signature"]=S.b64_hmac_sha1(m,d),l=0;l<5;l++)g[l]^=v[l];return u+=",p="+Object(A.btoa)(S.binb2str(g)),u},i}},O.SASLOAuthBearer=class extends O.SASLMechanism{constructor(e="OAUTHBEARER",t=!0,n=40){super(e,t,n)}test(e){return null!==e.pass}onChallenge(e){let t="n,";return null!==e.authcid&&(t=t+"a="+e.authzid),t+=",",t+="",t+="auth=Bearer ",t+=e.pass,t+="",t+="",x(t)}},O.SASLExternal=class extends O.SASLMechanism{constructor(e="EXTERNAL",t=!0,n=10){super(e,t,n)}onChallenge(e){return e.authcid===e.authzid?"":e.authzid}},O.SASLXOAuth2=class extends O.SASLMechanism{constructor(e="X-OAUTH2",t=!0,n=30){super(e,t,n)}test(e){return null!==e.pass}onChallenge(e){let t="\0";return null!==e.authcid&&(t+=e.authzid),t+="\0",t+=e.pass,x(t)}};t.d={Strophe:O,$build:C,$iq:j,$msg:function(e){return new O.Builder("message",e)},$pres:T,SHA1:S,MD5:h,b64_hmac_sha1:S.b64_hmac_sha1,b64_sha1:S.b64_sha1,str_hmac_sha1:S.str_hmac_sha1,str_sha1:S.str_sha1}},function(e,t,n){var r; +!function(e){function t(t){for(var n,i,o=t[0],s=t[1],a=0,l=[];a<o.length;a++)i=o[a],Object.prototype.hasOwnProperty.call(r,i)&&r[i]&&l.push(r[i][0]),r[i]=0;for(n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n]);for(c&&c(t);l.length;)l.shift()()}var n={},r={178:0};function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],n=r[e];if(0!==n)if(n)t.push(n[2]);else{var o=new Promise((function(t,i){n=r[e]=[t,i]}));t.push(n[2]=o);var s,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=function(e){return i.p+""+({0:"locales/dayjs/af",1:"locales/dayjs/ar",2:"locales/dayjs/ar-dz",3:"locales/dayjs/ar-kw",4:"locales/dayjs/ar-ly",5:"locales/dayjs/ar-ma",6:"locales/dayjs/ar-sa",7:"locales/dayjs/ar-tn",8:"locales/dayjs/az",9:"locales/dayjs/be",10:"locales/dayjs/bg",11:"locales/dayjs/bi",12:"locales/dayjs/bm",13:"locales/dayjs/bn",14:"locales/dayjs/bo",15:"locales/dayjs/br",16:"locales/dayjs/bs",17:"locales/dayjs/ca",18:"locales/dayjs/cs",19:"locales/dayjs/cv",20:"locales/dayjs/cy",21:"locales/dayjs/da",22:"locales/dayjs/de",23:"locales/dayjs/de-at",24:"locales/dayjs/de-ch",25:"locales/dayjs/dv",26:"locales/dayjs/el",27:"locales/dayjs/en",28:"locales/dayjs/en-SG",29:"locales/dayjs/en-au",30:"locales/dayjs/en-ca",31:"locales/dayjs/en-gb",32:"locales/dayjs/en-ie",33:"locales/dayjs/en-il",34:"locales/dayjs/en-in",35:"locales/dayjs/en-nz",36:"locales/dayjs/en-tt",37:"locales/dayjs/eo",38:"locales/dayjs/es",39:"locales/dayjs/es-do",40:"locales/dayjs/es-pr",41:"locales/dayjs/es-us",42:"locales/dayjs/et",43:"locales/dayjs/eu",44:"locales/dayjs/fa",45:"locales/dayjs/fi",46:"locales/dayjs/fo",47:"locales/dayjs/fr",48:"locales/dayjs/fr-ca",49:"locales/dayjs/fr-ch",50:"locales/dayjs/fy",51:"locales/dayjs/ga",52:"locales/dayjs/gd",53:"locales/dayjs/gl",54:"locales/dayjs/gom-latn",55:"locales/dayjs/gu",56:"locales/dayjs/he",57:"locales/dayjs/hi",58:"locales/dayjs/hr",59:"locales/dayjs/ht",60:"locales/dayjs/hu",61:"locales/dayjs/hy-am",62:"locales/dayjs/id",63:"locales/dayjs/is",64:"locales/dayjs/it",65:"locales/dayjs/it-ch",66:"locales/dayjs/ja",67:"locales/dayjs/jv",68:"locales/dayjs/ka",69:"locales/dayjs/kk",70:"locales/dayjs/km",71:"locales/dayjs/kn",72:"locales/dayjs/ko",73:"locales/dayjs/ku",74:"locales/dayjs/ky",75:"locales/dayjs/lb",76:"locales/dayjs/lo",77:"locales/dayjs/lt",78:"locales/dayjs/lv",79:"locales/dayjs/me",80:"locales/dayjs/mi",81:"locales/dayjs/mk",82:"locales/dayjs/ml",83:"locales/dayjs/mn",84:"locales/dayjs/mr",85:"locales/dayjs/ms",86:"locales/dayjs/ms-my",87:"locales/dayjs/mt",88:"locales/dayjs/my",89:"locales/dayjs/nb",90:"locales/dayjs/ne",91:"locales/dayjs/nl",92:"locales/dayjs/nl-be",93:"locales/dayjs/nn",94:"locales/dayjs/oc-lnc",95:"locales/dayjs/pa-in",96:"locales/dayjs/pl",97:"locales/dayjs/pt",98:"locales/dayjs/pt-br",99:"locales/dayjs/ro",100:"locales/dayjs/ru",101:"locales/dayjs/rw",102:"locales/dayjs/sd",103:"locales/dayjs/se",104:"locales/dayjs/si",105:"locales/dayjs/sk",106:"locales/dayjs/sl",107:"locales/dayjs/sq",108:"locales/dayjs/sr",109:"locales/dayjs/sr-cyrl",110:"locales/dayjs/ss",111:"locales/dayjs/sv",112:"locales/dayjs/sw",113:"locales/dayjs/ta",114:"locales/dayjs/te",115:"locales/dayjs/tet",116:"locales/dayjs/tg",117:"locales/dayjs/th",118:"locales/dayjs/tk",119:"locales/dayjs/tl-ph",120:"locales/dayjs/tlh",121:"locales/dayjs/tr",122:"locales/dayjs/tzl",123:"locales/dayjs/tzm",124:"locales/dayjs/tzm-latn",125:"locales/dayjs/ug-cn",126:"locales/dayjs/uk",127:"locales/dayjs/ur",128:"locales/dayjs/uz",129:"locales/dayjs/uz-latn",130:"locales/dayjs/vi",131:"locales/dayjs/x-pseudo",132:"locales/dayjs/yo",133:"locales/dayjs/zh",134:"locales/dayjs/zh-cn",135:"locales/dayjs/zh-hk",136:"locales/dayjs/zh-tw",137:"emojis",138:"icons",139:"locales/af-LC_MESSAGES-converse-po",140:"locales/ar-LC_MESSAGES-converse-po",141:"locales/bg-LC_MESSAGES-converse-po",142:"locales/ca-LC_MESSAGES-converse-po",143:"locales/cs-LC_MESSAGES-converse-po",144:"locales/da-LC_MESSAGES-converse-po",145:"locales/dayjs/index-d-ts",146:"locales/dayjs/types-d-ts",147:"locales/de-LC_MESSAGES-converse-po",148:"locales/eo-LC_MESSAGES-converse-po",149:"locales/es-LC_MESSAGES-converse-po",150:"locales/eu-LC_MESSAGES-converse-po",151:"locales/fi-LC_MESSAGES-converse-po",152:"locales/fr-LC_MESSAGES-converse-po",153:"locales/gl-LC_MESSAGES-converse-po",154:"locales/he-LC_MESSAGES-converse-po",155:"locales/hi-LC_MESSAGES-converse-po",156:"locales/hu-LC_MESSAGES-converse-po",157:"locales/id-LC_MESSAGES-converse-po",158:"locales/it-LC_MESSAGES-converse-po",159:"locales/ja-LC_MESSAGES-converse-po",160:"locales/lt-LC_MESSAGES-converse-po",161:"locales/mr-LC_MESSAGES-converse-po",162:"locales/nb-LC_MESSAGES-converse-po",163:"locales/nl-LC_MESSAGES-converse-po",164:"locales/nl_BE-LC_MESSAGES-converse-po",165:"locales/oc-LC_MESSAGES-converse-po",166:"locales/pl-LC_MESSAGES-converse-po",167:"locales/pt-LC_MESSAGES-converse-po",168:"locales/pt_BR-LC_MESSAGES-converse-po",169:"locales/ro-LC_MESSAGES-converse-po",170:"locales/ru-LC_MESSAGES-converse-po",171:"locales/sv-LC_MESSAGES-converse-po",172:"locales/th-LC_MESSAGES-converse-po",173:"locales/tr-LC_MESSAGES-converse-po",174:"locales/uk-LC_MESSAGES-converse-po",175:"locales/vi-LC_MESSAGES-converse-po",176:"locales/zh_CN-LC_MESSAGES-converse-po",177:"locales/zh_TW-LC_MESSAGES-converse-po"}[e]||e)+".js"}(e);var c=new Error;s=function(t){a.onerror=a.onload=null,clearTimeout(l);var n=r[e];if(0!==n){if(n){var i=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;c.message="Loading chunk "+e+" failed.\n("+i+": "+o+")",c.name="ChunkLoadError",c.type=i,c.request=o,n[1](c)}r[e]=void 0}};var l=setTimeout((function(){s({type:"timeout",target:a})}),12e4);a.onerror=a.onload=s,document.head.appendChild(a)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/dist/",i.oe=function(e){throw console.error(e),e};var o=window.webpackJsonp=window.webpackJsonp||[],s=o.push.bind(o);o.push=t,o=o.slice();for(var a=0;a<o.length;a++)t(o[a]);var c=s;i(i.s=326)}([function(e,t,n){"use strict";n.d(t,"a",(function(){return v})),n.d(t,"c",(function(){return _})),n.d(t,"b",(function(){return b})),n.d(t,"d",(function(){return y})),n.d(t,"e",(function(){return w}));var r=n(15);const i=function(e,t){const n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n},o=function(e){if("string"!=typeof e)throw new Error("str2binl was passed a non-string");const t=[];for(let n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return t},s=function(e,t,n,r,o,s){return i((a=i(i(t,e),i(r,s)))<<(c=o)|a>>>32-c,n);var a,c},a=function(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)},c=function(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)},l=function(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)},u=function(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)},d=function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;let n,r,o,s,d=1732584193,h=-271733879,f=-1732584194,p=271733878;for(let t=0;t<e.length;t+=16)n=d,r=h,o=f,s=p,d=a(d,h,f,p,e[t+0],7,-680876936),p=a(p,d,h,f,e[t+1],12,-389564586),f=a(f,p,d,h,e[t+2],17,606105819),h=a(h,f,p,d,e[t+3],22,-1044525330),d=a(d,h,f,p,e[t+4],7,-176418897),p=a(p,d,h,f,e[t+5],12,1200080426),f=a(f,p,d,h,e[t+6],17,-1473231341),h=a(h,f,p,d,e[t+7],22,-45705983),d=a(d,h,f,p,e[t+8],7,1770035416),p=a(p,d,h,f,e[t+9],12,-1958414417),f=a(f,p,d,h,e[t+10],17,-42063),h=a(h,f,p,d,e[t+11],22,-1990404162),d=a(d,h,f,p,e[t+12],7,1804603682),p=a(p,d,h,f,e[t+13],12,-40341101),f=a(f,p,d,h,e[t+14],17,-1502002290),h=a(h,f,p,d,e[t+15],22,1236535329),d=c(d,h,f,p,e[t+1],5,-165796510),p=c(p,d,h,f,e[t+6],9,-1069501632),f=c(f,p,d,h,e[t+11],14,643717713),h=c(h,f,p,d,e[t+0],20,-373897302),d=c(d,h,f,p,e[t+5],5,-701558691),p=c(p,d,h,f,e[t+10],9,38016083),f=c(f,p,d,h,e[t+15],14,-660478335),h=c(h,f,p,d,e[t+4],20,-405537848),d=c(d,h,f,p,e[t+9],5,568446438),p=c(p,d,h,f,e[t+14],9,-1019803690),f=c(f,p,d,h,e[t+3],14,-187363961),h=c(h,f,p,d,e[t+8],20,1163531501),d=c(d,h,f,p,e[t+13],5,-1444681467),p=c(p,d,h,f,e[t+2],9,-51403784),f=c(f,p,d,h,e[t+7],14,1735328473),h=c(h,f,p,d,e[t+12],20,-1926607734),d=l(d,h,f,p,e[t+5],4,-378558),p=l(p,d,h,f,e[t+8],11,-2022574463),f=l(f,p,d,h,e[t+11],16,1839030562),h=l(h,f,p,d,e[t+14],23,-35309556),d=l(d,h,f,p,e[t+1],4,-1530992060),p=l(p,d,h,f,e[t+4],11,1272893353),f=l(f,p,d,h,e[t+7],16,-155497632),h=l(h,f,p,d,e[t+10],23,-1094730640),d=l(d,h,f,p,e[t+13],4,681279174),p=l(p,d,h,f,e[t+0],11,-358537222),f=l(f,p,d,h,e[t+3],16,-722521979),h=l(h,f,p,d,e[t+6],23,76029189),d=l(d,h,f,p,e[t+9],4,-640364487),p=l(p,d,h,f,e[t+12],11,-421815835),f=l(f,p,d,h,e[t+15],16,530742520),h=l(h,f,p,d,e[t+2],23,-995338651),d=u(d,h,f,p,e[t+0],6,-198630844),p=u(p,d,h,f,e[t+7],10,1126891415),f=u(f,p,d,h,e[t+14],15,-1416354905),h=u(h,f,p,d,e[t+5],21,-57434055),d=u(d,h,f,p,e[t+12],6,1700485571),p=u(p,d,h,f,e[t+3],10,-1894986606),f=u(f,p,d,h,e[t+10],15,-1051523),h=u(h,f,p,d,e[t+1],21,-2054922799),d=u(d,h,f,p,e[t+8],6,1873313359),p=u(p,d,h,f,e[t+15],10,-30611744),f=u(f,p,d,h,e[t+6],15,-1560198380),h=u(h,f,p,d,e[t+13],21,1309151649),d=u(d,h,f,p,e[t+4],6,-145523070),p=u(p,d,h,f,e[t+11],10,-1120210379),f=u(f,p,d,h,e[t+2],15,718787259),h=u(h,f,p,d,e[t+9],21,-343485551),d=i(d,n),h=i(h,r),f=i(f,o),p=i(p,s);return[d,h,f,p]},h={hexdigest:function(e){return function(e){let t="";for(let n=0;n<4*e.length;n++)t+="0123456789abcdef".charAt(e[n>>2]>>n%4*8+4&15)+"0123456789abcdef".charAt(e[n>>2]>>n%4*8&15);return t}(d(o(e),8*e.length))},hash:function(e){return function(e){let t="";for(let n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>n%32&255);return t}(d(o(e),8*e.length))}};var f=n(7);const p=function(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)(n=e.charCodeAt(t))>=0&&n<=127?r+=e.charAt(t):n>2047?(r+=String.fromCharCode(224|n>>12&15),r+=String.fromCharCode(128|n>>6&63),r+=String.fromCharCode(128|n>>0&63)):(r+=String.fromCharCode(192|n>>6&31),r+=String.fromCharCode(128|n>>0&63));return r},g=function(e){e=e||{};for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n="",r="",i="";const o=e[t],s="object"==typeof o,a=escape(unescape(s?o.value:o));s&&(n=o.expires?";expires="+o.expires:"",r=o.domain?";domain="+o.domain:"",i=o.path?";path="+o.path:""),document.cookie=t+"="+a+n+r+i}};var m=n(10);function v(e,t){return new w.Builder(e,t)}function _(e){return new w.Builder("message",e)}function b(e){return new w.Builder("iq",e)}function y(e){return new w.Builder("presence",e)}const w={VERSION:"1.3.6",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",FRAMING:"urn:ietf:params:xml:ns:xmpp-framing",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas",XHTML_IM:"http://jabber.org/protocol/xhtml-im",XHTML:"http://www.w3.org/1999/xhtml"},XHTML:{tags:["a","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body"],attributes:{a:["href"],blockquote:["style"],br:[],cite:["style"],em:[],img:["src","alt","style","height","width"],li:["style"],ol:["style"],p:["style"],span:["style"],strong:[],ul:["style"],body:[]},css:["background-color","color","font-family","font-size","font-style","font-weight","margin-left","margin-right","text-align","text-decoration"],validTag(e){for(let t=0;t<w.XHTML.tags.length;t++)if(e===w.XHTML.tags[t])return!0;return!1},validAttribute(e,t){if(void 0!==w.XHTML.attributes[e]&&w.XHTML.attributes[e].length>0)for(let n=0;n<w.XHTML.attributes[e].length;n++)if(t===w.XHTML.attributes[e][n])return!0;return!1},validCSS(e){for(let t=0;t<w.XHTML.css.length;t++)if(e===w.XHTML.css[t])return!0;return!1}},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8,REDIRECT:9,CONNTIMEOUT:10,BINDREQUIRED:11,ATTACHFAIL:12},ErrorCondition:{BAD_FORMAT:"bad-format",CONFLICT:"conflict",MISSING_JID_NODE:"x-strophe-bad-non-anon-jid",NO_AUTH_MECH:"no-auth-mech",UNKNOWN_REASON:"unknown"},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4,FRAGMENT:11},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,addNamespace(e,t){w.NS[e]=t},forEachChild(e,t,n){for(let r=0;r<e.childNodes.length;r++){const i=e.childNodes[r];i.nodeType!==w.ElementType.NORMAL||t&&!this.isTagEqual(i,t)||n(i)}},isTagEqual:(e,t)=>e.tagName===t,_xmlGenerator:null,xmlGenerator:()=>(w._xmlGenerator||(w._xmlGenerator=r.b()),w._xmlGenerator),xmlElement(e){if(!e)return null;const t=w.xmlGenerator().createElement(e);for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)if("string"==typeof n||"number"==typeof n)t.appendChild(w.xmlTextNode(n));else if("object"==typeof n&&"function"==typeof n.sort)for(let e=0;e<n.length;e++){const r=n[e];"object"==typeof r&&"function"==typeof r.sort&&void 0!==r[1]&&null!==r[1]&&t.setAttribute(r[0],r[1])}else if("object"==typeof n)for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&void 0!==n[e]&&null!==n[e]&&t.setAttribute(e,n[e])}return t},xmlescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,"""),xmlunescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,'"'),xmlTextNode:e=>w.xmlGenerator().createTextNode(e),xmlHtmlNode(e){let t;if(r.a){t=(new r.a).parseFromString(e,"text/xml")}else t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e);return t},getText(e){if(!e)return null;let t="";0===e.childNodes.length&&e.nodeType===w.ElementType.TEXT&&(t+=e.nodeValue);for(let n=0;n<e.childNodes.length;n++)e.childNodes[n].nodeType===w.ElementType.TEXT&&(t+=e.childNodes[n].nodeValue);return w.xmlescape(t)},copyElement(e){let t;if(e.nodeType===w.ElementType.NORMAL){t=w.xmlElement(e.tagName);for(let n=0;n<e.attributes.length;n++)t.setAttribute(e.attributes[n].nodeName,e.attributes[n].value);for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.copyElement(e.childNodes[n]))}else e.nodeType===w.ElementType.TEXT&&(t=w.xmlGenerator().createTextNode(e.nodeValue));return t},createHtml(e){let t;if(e.nodeType===w.ElementType.NORMAL){const n=e.nodeName.toLowerCase();if(w.XHTML.validTag(n))try{t=w.xmlElement(n);for(let r=0;r<w.XHTML.attributes[n].length;r++){const i=w.XHTML.attributes[n][r];let o=e.getAttribute(i);if(null!=o&&""!==o&&!1!==o&&0!==o)if("style"===i&&"object"==typeof o&&void 0!==o.cssText&&(o=o.cssText),"style"===i){const e=[],n=o.split(";");for(let t=0;t<n.length;t++){const r=n[t].split(":"),i=r[0].replace(/^\s*/,"").replace(/\s*$/,"").toLowerCase();if(w.XHTML.validCSS(i)){const t=r[1].replace(/^\s*/,"").replace(/\s*$/,"");e.push(i+": "+t)}}e.length>0&&(o=e.join("; "),t.setAttribute(i,o))}else t.setAttribute(i,o)}for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}catch(e){t=w.xmlTextNode("")}else{t=w.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}}else if(e.nodeType===w.ElementType.FRAGMENT){t=w.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(w.createHtml(e.childNodes[n]))}else e.nodeType===w.ElementType.TEXT&&(t=w.xmlTextNode(e.nodeValue));return t},escapeNode:e=>"string"!=typeof e?e:e.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40"),unescapeNode:e=>"string"!=typeof e?e:e.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\"),getNodeFromJid:e=>e.indexOf("@")<0?null:e.split("@")[0],getDomainFromJid(e){const t=w.getBareJidFromJid(e);if(t.indexOf("@")<0)return t;{const e=t.split("@");return e.splice(0,1),e.join("@")}},getResourceFromJid(e){if(!e)return null;const t=e.split("/");return t.length<2?null:(t.splice(0,1),t.join("/"))},getBareJidFromJid:e=>e?e.split("/")[0]:null,_handleError(e){void 0!==e.stack&&w.fatal(e.stack),e.sourceURL?w.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message):e.fileName?w.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message):w.fatal("error: "+e.message)},log(e,t){e===this.LogLevel.FATAL&&"object"==typeof window.console&&"function"==typeof window.console.error&&window.console.error(t)},debug(e){this.log(this.LogLevel.DEBUG,e)},info(e){this.log(this.LogLevel.INFO,e)},warn(e){this.log(this.LogLevel.WARN,e)},error(e){this.log(this.LogLevel.ERROR,e)},fatal(e){this.log(this.LogLevel.FATAL,e)},serialize(e){if(!e)return null;"function"==typeof e.tree&&(e=e.tree());const t=[...Array(e.attributes.length).keys()].map(t=>e.attributes[t].nodeName);t.sort();let n=t.reduce((t,n)=>"".concat(t," ").concat(n,'="').concat(w.xmlescape(e.attributes.getNamedItem(n).value),'"'),"<".concat(e.nodeName));if(e.childNodes.length>0){n+=">";for(let t=0;t<e.childNodes.length;t++){const r=e.childNodes[t];switch(r.nodeType){case w.ElementType.NORMAL:n+=w.serialize(r);break;case w.ElementType.TEXT:n+=w.xmlescape(r.nodeValue);break;case w.ElementType.CDATA:n+="<![CDATA["+r.nodeValue+"]]>"}}n+="</"+e.nodeName+">"}else n+="/>";return n},_requestId:0,_connectionPlugins:{},addConnectionPlugin(e,t){w._connectionPlugins[e]=t},Builder:class{constructor(e,t){"presence"!==e&&"message"!==e&&"iq"!==e||(t&&!t.xmlns?t.xmlns=w.NS.CLIENT:t||(t={xmlns:w.NS.CLIENT})),this.nodeTree=w.xmlElement(e,t),this.node=this.nodeTree}tree(){return this.nodeTree}toString(){return w.serialize(this.nodeTree)}up(){return this.node=this.node.parentNode,this}root(){return this.node=this.nodeTree,this}attrs(e){for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===e[t]?this.node.removeAttribute(t):this.node.setAttribute(t,e[t]));return this}c(e,t,n){const r=w.xmlElement(e,t,n);return this.node.appendChild(r),"string"!=typeof n&&"number"!=typeof n&&(this.node=r),this}cnode(e){let t;const n=w.xmlGenerator();try{t=void 0!==n.importNode}catch(e){t=!1}const r=t?n.importNode(e,!0):w.copyElement(e);return this.node.appendChild(r),this.node=r,this}t(e){const t=w.xmlTextNode(e);return this.node.appendChild(t),this}h(e){const t=w.xmlGenerator().createElement("body");t.innerHTML=e;const n=w.createHtml(t);for(;n.childNodes.length>0;)this.node.appendChild(n.childNodes[0]);return this}},Handler:function(e,t,n,r,i,o,s){this.handler=e,this.ns=t,this.name=n,this.type=r,this.id=i,this.options=s||{matchBareFromJid:!1,ignoreNamespaceFragment:!1},this.options.matchBare&&(w.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.'),this.options.matchBareFromJid=this.options.matchBare,delete this.options.matchBare),this.options.matchBareFromJid?this.from=o?w.getBareJidFromJid(o):null:this.from=o,this.user=!0}};w.Handler.prototype={getNamespace(e){let t=e.getAttribute("xmlns");return t&&this.options.ignoreNamespaceFragment&&(t=t.split("#")[0]),t},namespaceMatch(e){let t=!1;return!this.ns||(w.forEachChild(e,null,e=>{this.getNamespace(e)===this.ns&&(t=!0)}),t||this.getNamespace(e)===this.ns)},isMatch(e){let t=e.getAttribute("from");this.options.matchBareFromJid&&(t=w.getBareJidFromJid(t));const n=e.getAttribute("type");return!(!this.namespaceMatch(e)||this.name&&!w.isTagEqual(e,this.name)||this.type&&(Array.isArray(this.type)?-1===this.type.indexOf(n):n!==this.type)||this.id&&e.getAttribute("id")!==this.id||this.from&&t!==this.from)},run(e){let t=null;try{t=this.handler(e)}catch(e){throw w._handleError(e),e}return t},toString(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},w.TimedHandler=class{constructor(e,t){this.period=e,this.handler=t,this.lastCalled=(new Date).getTime(),this.user=!0}run(){return this.lastCalled=(new Date).getTime(),this.handler()}reset(){this.lastCalled=(new Date).getTime()}toString(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},w.Connection=class{constructor(e,t){this.service=e,this.options=t||{};const n=this.options.protocol||"";this.options.worker?this._proto=new w.WorkerWebsocket(this):0===e.indexOf("ws:")||0===e.indexOf("wss:")||0===n.indexOf("ws")?this._proto=new w.Websocket(this):this._proto=new w.Bosh(this),this.jid="",this.domain=null,this.features=null,this._sasl_data={},this.do_bind=!1,this.do_session=!1,this.mechanisms={},this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.protocolErrorHandlers={HTTP:{},websocket:{}},this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.do_authentication=!0,this.paused=!1,this.restored=!1,this._data=[],this._uniqueId=0,this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this.maxRetries=5,this._idleTimeout=setTimeout(()=>this._onIdle(),100),g(this.options.cookies),this.registerSASLMechanisms(this.options.mechanisms);for(const e in w._connectionPlugins)if(Object.prototype.hasOwnProperty.call(w._connectionPlugins,e)){const t=function(){};t.prototype=w._connectionPlugins[e],this[e]=new t,this[e].init(this)}}reset(){this._proto._reset(),this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.restored=!1,this._data=[],this._requests=[],this._uniqueId=0}pause(){this.paused=!0}resume(){this.paused=!1}getUniqueId(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t+""}addProtocolErrorHandler(e,t,n){this.protocolErrorHandlers[e][t]=n}connect(e,t,n,r,i,o,s){this.jid=e,this.authzid=w.getBareJidFromJid(this.jid),this.authcid=s||w.getNodeFromJid(this.jid),this.pass=t,this.connect_callback=n,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.restored=!1,this.domain=w.getDomainFromJid(this.jid),this._changeConnectStatus(w.Status.CONNECTING,null),this._proto._connect(r,i,o)}attach(e,t,n,r,i,o,s){if(this._proto._attach)return this._proto._attach(e,t,n,r,i,o,s);{const e=new Error('The "attach" method is not available for your connection protocol');throw e.name="StropheSessionError",e}}restore(e,t,n,r,i){if(!this._sessionCachingSupported()){const e=new Error('The "restore" method can only be used with a BOSH connection.');throw e.name="StropheSessionError",e}this._proto._restore(e,t,n,r,i)}_sessionCachingSupported(){if(this._proto instanceof w.Bosh){if(!JSON)return!1;try{sessionStorage.setItem("_strophe_","_strophe_"),sessionStorage.removeItem("_strophe_")}catch(e){return!1}return!0}return!1}xmlInput(e){}xmlOutput(e){}rawInput(e){}rawOutput(e){}nextValidRid(e){}send(e){if(null!==e){if("function"==typeof e.sort)for(let t=0;t<e.length;t++)this._queueData(e[t]);else"function"==typeof e.tree?this._queueData(e.tree()):this._queueData(e);this._proto._send()}}flush(){clearTimeout(this._idleTimeout),this._onIdle()}sendPresence(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let o=e.getAttribute("id");if(o||(o=this.getUniqueId("sendPresence"),e.setAttribute("id",o)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i),"error"===e.getAttribute("type")?n&&n(e):t&&t(e)},null,"presence",null,o);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),o}sendIQ(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let o=e.getAttribute("id");if(o||(o=this.getUniqueId("sendIQ"),e.setAttribute("id",o)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i);const r=e.getAttribute("type");if("result"===r)t&&t(e);else{if("error"!==r){const e=new Error("Got bad IQ type of ".concat(r));throw e.name="StropheError",e}n&&n(e)}},null,"iq",["error","result"],o);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),o}_queueData(e){if(null===e||!e.tagName||!e.childNodes){const e=new Error("Cannot queue non-DOMElement.");throw e.name="StropheError",e}this._data.push(e)}_sendRestart(){this._data.push("restart"),this._proto._sendRestart(),this._idleTimeout=setTimeout(()=>this._onIdle(),100)}addTimedHandler(e,t){const n=new w.TimedHandler(e,t);return this.addTimeds.push(n),n}deleteTimedHandler(e){this.removeTimeds.push(e)}addHandler(e,t,n,r,i,o,s){const a=new w.Handler(e,t,n,r,i,o,s);return this.addHandlers.push(a),a}deleteHandler(e){this.removeHandlers.push(e);const t=this.addHandlers.indexOf(e);t>=0&&this.addHandlers.splice(t,1)}registerSASLMechanisms(e){this.mechanisms={},(e=e||[w.SASLAnonymous,w.SASLExternal,w.SASLOAuthBearer,w.SASLXOAuth2,w.SASLPlain,w.SASLSHA1]).forEach(e=>this.registerSASLMechanism(e))}registerSASLMechanism(e){this.mechanisms[e.name]=e}disconnect(e){if(this._changeConnectStatus(w.Status.DISCONNECTING,e),e?w.warn("Disconnect was called because: "+e):w.info("Disconnect was called"),this.connected){let e=!1;this.disconnecting=!0,this.authenticated&&(e=y({xmlns:w.NS.CLIENT,type:"unavailable"})),this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._proto._disconnect(e)}else w.warn("Disconnect was called before Strophe connected to the server"),this._proto._abortAllRequests(),this._doDisconnect()}_changeConnectStatus(e,t,n){for(const n in w._connectionPlugins)if(Object.prototype.hasOwnProperty.call(w._connectionPlugins,n)){const r=this[n];if(r.statusChanged)try{r.statusChanged(e,t)}catch(e){w.error("".concat(n," plugin caused an exception changing status: ").concat(e))}}if(this.connect_callback)try{this.connect_callback(e,t,n)}catch(e){w._handleError(e),w.error("User connection callback caused an exception: ".concat(e))}}_doDisconnect(e){"number"==typeof this._idleTimeout&&clearTimeout(this._idleTimeout),null!==this._disconnectTimeout&&(this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null),w.debug("_doDisconnect was called"),this._proto._doDisconnect(),this.authenticated=!1,this.disconnecting=!1,this.restored=!1,this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._changeConnectStatus(w.Status.DISCONNECTED,e),this.connected=!1}_dataRecv(e,t){const n=this._proto._reqToData(e);if(null===n)return;for(this.xmlInput!==w.Connection.prototype.xmlInput&&(n.nodeName===this._proto.strip&&n.childNodes.length?this.xmlInput(n.childNodes[0]):this.xmlInput(n)),this.rawInput!==w.Connection.prototype.rawInput&&(t?this.rawInput(t):this.rawInput(w.serialize(n)));this.removeHandlers.length>0;){const e=this.removeHandlers.pop(),t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}for(;this.addHandlers.length>0;)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._proto._emptyQueue())return void this._doDisconnect();const r=n.getAttribute("type");if(null!==r&&"terminate"===r){if(this.disconnecting)return;let e=n.getAttribute("condition");const t=n.getElementsByTagName("conflict");return null!==e?("remote-stream-error"===e&&t.length>0&&(e="conflict"),this._changeConnectStatus(w.Status.CONNFAIL,e)):this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.UNKOWN_REASON),void this._doDisconnect(e)}w.forEachChild(n,null,e=>{const t=this.handlers;this.handlers=[];for(let n=0;n<t.length;n++){const r=t[n];try{(!r.isMatch(e)||!this.authenticated&&r.user||r.run(e))&&this.handlers.push(r)}catch(e){w.warn("Removing Strophe handlers due to uncaught exception: "+e.message)}}})}_connect_cb(e,t,n){let r;w.debug("_connect_cb was called"),this.connected=!0;try{r=this._proto._reqToData(e)}catch(e){if(e.name!==w.ErrorCondition.BAD_FORMAT)throw e;this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.BAD_FORMAT),this._doDisconnect(w.ErrorCondition.BAD_FORMAT)}if(!r)return;if(this.xmlInput!==w.Connection.prototype.xmlInput&&(r.nodeName===this._proto.strip&&r.childNodes.length?this.xmlInput(r.childNodes[0]):this.xmlInput(r)),this.rawInput!==w.Connection.prototype.rawInput&&(n?this.rawInput(n):this.rawInput(w.serialize(r))),this._proto._connect_cb(r)===w.Status.CONNFAIL)return;let i;if(i=r.getElementsByTagNameNS?r.getElementsByTagNameNS(w.NS.STREAM,"features").length>0:r.getElementsByTagName("stream:features").length>0||r.getElementsByTagName("features").length>0,!i)return void this._proto._no_auth_received(t);const o=Array.from(r.getElementsByTagName("mechanism")).map(e=>this.mechanisms[e.textContent]).filter(e=>e);0!==o.length||0!==r.getElementsByTagName("auth").length?!1!==this.do_authentication&&this.authenticate(o):this._proto._no_auth_received(t)}sortMechanismsByPriority(e){for(let t=0;t<e.length-1;++t){let n=t;for(let r=t+1;r<e.length;++r)e[r].priority>e[n].priority&&(n=r);if(n!==t){const r=e[t];e[t]=e[n],e[n]=r}}return e}authenticate(e){this._attemptSASLAuth(e)||this._attemptLegacyAuth()}_attemptSASLAuth(e){e=this.sortMechanismsByPriority(e||[]);let t=!1;for(let n=0;n<e.length;++n){if(!e[n].test(this))continue;this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge_cb.bind(this),null,"challenge",null,null),this._sasl_mechanism=new e[n],this._sasl_mechanism.onStart(this);const r=v("auth",{xmlns:w.NS.SASL,mechanism:this._sasl_mechanism.name});if(this._sasl_mechanism.isClientFirst){const e=this._sasl_mechanism.onChallenge(this,null);r.t(Object(m.btoa)(e))}this.send(r.tree()),t=!0;break}return t}_sasl_challenge_cb(e){const t=Object(m.atob)(w.getText(e)),n=this._sasl_mechanism.onChallenge(this,t),r=v("response",{xmlns:w.NS.SASL});return""!==n&&r.t(Object(m.btoa)(n)),this.send(r.tree()),!0}_attemptLegacyAuth(){null===w.getNodeFromJid(this.jid)?(this._changeConnectStatus(w.Status.CONNFAIL,w.ErrorCondition.MISSING_JID_NODE),this.disconnect(w.ErrorCondition.MISSING_JID_NODE)):(this._changeConnectStatus(w.Status.AUTHENTICATING,null),this._addSysHandler(this._onLegacyAuthIQResult.bind(this),null,null,null,"_auth_1"),this.send(b({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:w.NS.AUTH}).c("username",{}).t(w.getNodeFromJid(this.jid)).tree()))}_onLegacyAuthIQResult(e){const t=b({type:"set",id:"_auth_2"}).c("query",{xmlns:w.NS.AUTH}).c("username",{}).t(w.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return w.getResourceFromJid(this.jid)||(this.jid=w.getBareJidFromJid(this.jid)+"/strophe"),t.up().c("resource",{}).t(w.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(t.tree()),!1}_sasl_success_cb(e){if(this._sasl_data["server-signature"]){let t;const n=/([a-z]+)=([^,]+)(,|$)/,r=Object(m.atob)(w.getText(e)).match(n);if("v"===r[1]&&(t=r[2]),t!==this._sasl_data["server-signature"])return this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_data={},this._sasl_failure_cb(null)}w.info("SASL authentication succeeded."),this._sasl_mechanism&&this._sasl_mechanism.onSuccess(),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null);const t=[],n=(e,t)=>{for(;e.length;)this.deleteHandler(e.pop());return this._onStreamFeaturesAfterSASL(t),!1};return t.push(this._addSysHandler(e=>n(t,e),null,"stream:features",null,null)),t.push(this._addSysHandler(e=>n(t,e),w.NS.STREAM,"features",null,null)),this._sendRestart(),!1}_onStreamFeaturesAfterSASL(e){this.features=e;for(let t=0;t<e.childNodes.length;t++){const n=e.childNodes[t];"bind"===n.nodeName&&(this.do_bind=!0),"session"===n.nodeName&&(this.do_session=!0)}return this.do_bind?(this.options.explicitResourceBinding?this._changeConnectStatus(w.Status.BINDREQUIRED,null):this.bind(),!1):(this._changeConnectStatus(w.Status.AUTHFAIL,null),!1)}bind(){if(!this.do_bind)return void w.log(w.LogLevel.INFO,'Strophe.Connection.prototype.bind called but "do_bind" is false');this._addSysHandler(this._onResourceBindResultIQ.bind(this),null,null,null,"_bind_auth_2");const e=w.getResourceFromJid(this.jid);e?this.send(b({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:w.NS.BIND}).c("resource",{}).t(e).tree()):this.send(b({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:w.NS.BIND}).tree())}_onResourceBindResultIQ(e){if("error"===e.getAttribute("type")){let t;return w.warn("Resource binding failed."),e.getElementsByTagName("conflict").length>0&&(t=w.ErrorCondition.CONFLICT),this._changeConnectStatus(w.Status.AUTHFAIL,t,e),!1}const t=e.getElementsByTagName("bind");if(!(t.length>0))return w.warn("Resource binding failed."),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1;{const e=t[0].getElementsByTagName("jid");e.length>0&&(this.jid=w.getText(e[0]),this.do_session?this._establishSession():(this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null)))}}_establishSession(){if(!this.do_session)throw new Error("Strophe.Connection.prototype._establishSession "+"called but apparently ".concat(w.NS.SESSION," wasn't advertised by the server"));this._addSysHandler(this._onSessionResultIQ.bind(this),null,null,null,"_session_auth_2"),this.send(b({type:"set",id:"_session_auth_2"}).c("session",{xmlns:w.NS.SESSION}).tree())}_onSessionResultIQ(e){if("result"===e.getAttribute("type"))this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null);else if("error"===e.getAttribute("type"))return w.warn("Session creation failed."),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1;return!1}_sasl_failure_cb(e){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_mechanism&&this._sasl_mechanism.onFailure(),this._changeConnectStatus(w.Status.AUTHFAIL,null,e),!1}_auth2_cb(e){return"result"===e.getAttribute("type")?(this.authenticated=!0,this._changeConnectStatus(w.Status.CONNECTED,null)):"error"===e.getAttribute("type")&&(this._changeConnectStatus(w.Status.AUTHFAIL,null,e),this.disconnect("authentication failed")),!1}_addSysTimedHandler(e,t){const n=new w.TimedHandler(e,t);return n.user=!1,this.addTimeds.push(n),n}_addSysHandler(e,t,n,r,i){const o=new w.Handler(e,t,n,r,i);return o.user=!1,this.addHandlers.push(o),o}_onDisconnectTimeout(){return w.debug("_onDisconnectTimeout was called"),this._changeConnectStatus(w.Status.CONNTIMEOUT,null),this._proto._onDisconnectTimeout(),this._doDisconnect(),!1}_onIdle(){for(;this.addTimeds.length>0;)this.timedHandlers.push(this.addTimeds.pop());for(;this.removeTimeds.length>0;){const e=this.removeTimeds.pop(),t=this.timedHandlers.indexOf(e);t>=0&&this.timedHandlers.splice(t,1)}const e=(new Date).getTime(),t=[];for(let n=0;n<this.timedHandlers.length;n++){const r=this.timedHandlers[n];if(this.authenticated||!r.user){r.lastCalled+r.period-e<=0?r.run()&&t.push(r):t.push(r)}}this.timedHandlers=t,clearTimeout(this._idleTimeout),this._proto._onIdle(),this.connected&&(this._idleTimeout=setTimeout(()=>this._onIdle(),100))}},w.SASLMechanism=class{constructor(e,t,n){this.name=e,this.isClientFirst=t,this.priority=n}static test(e){return!0}onStart(e){this._connection=e}onChallenge(e,t){throw new Error("You should implement challenge handling!")}onFailure(){this._connection=null}onSuccess(){this._connection=null}},w.SASLAnonymous=class extends w.SASLMechanism{constructor(){super(w.SASLAnonymous.name,!1,w.SASLAnonymous.priority)}static get name(){return"ANONYMOUS"}static get priority(){return 20}static test(e){return null===e.authcid}},w.SASLPlain=class extends w.SASLMechanism{constructor(){super(w.SASLPlain.name,!0,w.SASLPlain.priority)}static get name(){return"PLAIN"}static get priority(){return 50}static test(e){return null!==e.authcid}onChallenge(e){const{authcid:t,authzid:n,domain:r,pass:i}=e;if(!r)throw new Error("SASLPlain onChallenge: domain is not defined!");let o=n!=="".concat(t,"@").concat(r)?n:"";return o+="\0",o+=t,o+="\0",o+=i,p(o)}},w.SASLSHA1=class extends w.SASLMechanism{constructor(){super(w.SASLSHA1.name,!0,w.SASLSHA1.priority)}static get name(){return"SCRAM-SHA-1"}static get priority(){return 60}static test(e){return null!==e.authcid}onChallenge(e,t,n){const r=n||h.hexdigest(""+1234567890*Math.random());let i="n="+p(e.authcid);return i+=",r=",i+=r,e._sasl_data.cnonce=r,e._sasl_data["client-first-message-bare"]=i,i="n,,"+i,this.onChallenge=(e,t)=>{let n,r,i,o,s,a,c,l,u="c=biws,",d="".concat(e._sasl_data["client-first-message-bare"],",").concat(t,",");const h=e._sasl_data.cnonce,g=/([a-z]+)=([^,]+)(,|$)/;for(;t.match(g);){const e=t.match(g);switch(t=t.replace(e[0],""),e[1]){case"r":n=e[2];break;case"s":r=e[2];break;case"i":i=e[2]}}if(n.substr(0,h.length)!==h)return e._sasl_data={},e._sasl_failure_cb();u+="r="+n,d+=u,r=Object(m.atob)(r),r+="\0\0\0";const v=p(e.pass);for(o=a=f.a.core_hmac_sha1(v,r),c=1;c<i;c++){for(s=f.a.core_hmac_sha1(v,f.a.binb2str(a)),l=0;l<5;l++)o[l]^=s[l];a=s}o=f.a.binb2str(o);const _=f.a.core_hmac_sha1(o,"Client Key"),b=f.a.str_hmac_sha1(o,"Server Key"),y=f.a.core_hmac_sha1(f.a.str_sha1(f.a.binb2str(_)),d);for(e._sasl_data["server-signature"]=f.a.b64_hmac_sha1(b,d),l=0;l<5;l++)_[l]^=y[l];return u+=",p="+Object(m.btoa)(f.a.binb2str(_)),u},i}},w.SASLOAuthBearer=class extends w.SASLMechanism{constructor(){super(w.SASLOAuthBearer.name,!0,w.SASLOAuthBearer.priority)}static get name(){return"OAUTHBEARER"}static get priority(){return 40}static test(e){return null!==e.pass}onChallenge(e){let t="n,";return null!==e.authcid&&(t=t+"a="+e.authzid),t+=",",t+="",t+="auth=Bearer ",t+=e.pass,t+="",t+="",p(t)}},w.SASLExternal=class extends w.SASLMechanism{constructor(){super(w.SASLExternal.name,!0,w.SASLExternal.priority)}static get name(){return"EXTERNAL"}static get priority(){return 10}onChallenge(e){return e.authcid===e.authzid?"":e.authzid}},w.SASLXOAuth2=class extends w.SASLMechanism{constructor(){super(w.SASLXOAuth2.name,!0,w.SASLXOAuth2.priority)}static get name(){return"X-OAUTH2"}static get priority(){return 30}static test(e){return null!==e.pass}onChallenge(e){let t="\0";return null!==e.authcid&&(t+=e.authzid),t+="\0",t+=e.pass,p(t)}};t.f={Strophe:w,$build:v,$iq:b,$msg:_,$pres:y,SHA1:f.a,MD5:h,b64_hmac_sha1:f.a.b64_hmac_sha1,b64_sha1:f.a.b64_sha1,str_hmac_sha1:f.a.str_hmac_sha1,str_sha1:f.a.str_sha1}},function(e,t,n){"use strict";(function(e){n(154),n(68),n(493);var r=n(0);n.d(t,"e",(function(){return r.e})),n.d(t,"a",(function(){return r.a})),n.d(t,"b",(function(){return r.b})),n.d(t,"c",(function(){return r.c})),n.d(t,"d",(function(){return r.d})),e.$build=r.f.$build,e.$iq=r.f.$iq,e.$msg=r.f.$msg,e.$pres=r.f.$pres,e.Strophe=r.f.Strophe}).call(this,n(12))},function(e,t,n){"use strict";n.d(t,"a",(function(){return C})),n.d(t,"b",(function(){return j})),n.d(t,"d",(function(){return O})),n.d(t,"c",(function(){return S}));var r=n(9);const i=function(e,t){const n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n},o=function(e){if("string"!=typeof e)throw new Error("str2binl was passed a non-string");const t=[];for(let n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<n%32;return t},s=function(e,t,n,r,o,s){return i((a=i(i(t,e),i(r,s)))<<(c=o)|a>>>32-c,n);var a,c},a=function(e,t,n,r,i,o,a){return s(t&n|~t&r,e,t,i,o,a)},c=function(e,t,n,r,i,o,a){return s(t&r|n&~r,e,t,i,o,a)},l=function(e,t,n,r,i,o,a){return s(t^n^r,e,t,i,o,a)},u=function(e,t,n,r,i,o,a){return s(n^(t|~r),e,t,i,o,a)},d=function(e,t){e[t>>5]|=128<<t%32,e[14+(t+64>>>9<<4)]=t;let n,r,o,s,d=1732584193,h=-271733879,f=-1732584194,p=271733878;for(let t=0;t<e.length;t+=16)n=d,r=h,o=f,s=p,d=a(d,h,f,p,e[t+0],7,-680876936),p=a(p,d,h,f,e[t+1],12,-389564586),f=a(f,p,d,h,e[t+2],17,606105819),h=a(h,f,p,d,e[t+3],22,-1044525330),d=a(d,h,f,p,e[t+4],7,-176418897),p=a(p,d,h,f,e[t+5],12,1200080426),f=a(f,p,d,h,e[t+6],17,-1473231341),h=a(h,f,p,d,e[t+7],22,-45705983),d=a(d,h,f,p,e[t+8],7,1770035416),p=a(p,d,h,f,e[t+9],12,-1958414417),f=a(f,p,d,h,e[t+10],17,-42063),h=a(h,f,p,d,e[t+11],22,-1990404162),d=a(d,h,f,p,e[t+12],7,1804603682),p=a(p,d,h,f,e[t+13],12,-40341101),f=a(f,p,d,h,e[t+14],17,-1502002290),h=a(h,f,p,d,e[t+15],22,1236535329),d=c(d,h,f,p,e[t+1],5,-165796510),p=c(p,d,h,f,e[t+6],9,-1069501632),f=c(f,p,d,h,e[t+11],14,643717713),h=c(h,f,p,d,e[t+0],20,-373897302),d=c(d,h,f,p,e[t+5],5,-701558691),p=c(p,d,h,f,e[t+10],9,38016083),f=c(f,p,d,h,e[t+15],14,-660478335),h=c(h,f,p,d,e[t+4],20,-405537848),d=c(d,h,f,p,e[t+9],5,568446438),p=c(p,d,h,f,e[t+14],9,-1019803690),f=c(f,p,d,h,e[t+3],14,-187363961),h=c(h,f,p,d,e[t+8],20,1163531501),d=c(d,h,f,p,e[t+13],5,-1444681467),p=c(p,d,h,f,e[t+2],9,-51403784),f=c(f,p,d,h,e[t+7],14,1735328473),h=c(h,f,p,d,e[t+12],20,-1926607734),d=l(d,h,f,p,e[t+5],4,-378558),p=l(p,d,h,f,e[t+8],11,-2022574463),f=l(f,p,d,h,e[t+11],16,1839030562),h=l(h,f,p,d,e[t+14],23,-35309556),d=l(d,h,f,p,e[t+1],4,-1530992060),p=l(p,d,h,f,e[t+4],11,1272893353),f=l(f,p,d,h,e[t+7],16,-155497632),h=l(h,f,p,d,e[t+10],23,-1094730640),d=l(d,h,f,p,e[t+13],4,681279174),p=l(p,d,h,f,e[t+0],11,-358537222),f=l(f,p,d,h,e[t+3],16,-722521979),h=l(h,f,p,d,e[t+6],23,76029189),d=l(d,h,f,p,e[t+9],4,-640364487),p=l(p,d,h,f,e[t+12],11,-421815835),f=l(f,p,d,h,e[t+15],16,530742520),h=l(h,f,p,d,e[t+2],23,-995338651),d=u(d,h,f,p,e[t+0],6,-198630844),p=u(p,d,h,f,e[t+7],10,1126891415),f=u(f,p,d,h,e[t+14],15,-1416354905),h=u(h,f,p,d,e[t+5],21,-57434055),d=u(d,h,f,p,e[t+12],6,1700485571),p=u(p,d,h,f,e[t+3],10,-1894986606),f=u(f,p,d,h,e[t+10],15,-1051523),h=u(h,f,p,d,e[t+1],21,-2054922799),d=u(d,h,f,p,e[t+8],6,1873313359),p=u(p,d,h,f,e[t+15],10,-30611744),f=u(f,p,d,h,e[t+6],15,-1560198380),h=u(h,f,p,d,e[t+13],21,1309151649),d=u(d,h,f,p,e[t+4],6,-145523070),p=u(p,d,h,f,e[t+11],10,-1120210379),f=u(f,p,d,h,e[t+2],15,718787259),h=u(h,f,p,d,e[t+9],21,-343485551),d=i(d,n),h=i(h,r),f=i(f,o),p=i(p,s);return[d,h,f,p]},h={hexdigest:function(e){return function(e){let t="";for(let n=0;n<4*e.length;n++)t+="0123456789abcdef".charAt(e[n>>2]>>n%4*8+4&15)+"0123456789abcdef".charAt(e[n>>2]>>n%4*8&15);return t}(d(o(e),8*e.length))},hash:function(e){return function(e){let t="";for(let n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>n%32&255);return t}(d(o(e),8*e.length))}};function f(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;var n,r,i,o,s,a,c,l,u=new Array(80),d=1732584193,h=-271733879,f=-1732584194,m=271733878,b=-1009589776;for(n=0;n<e.length;n+=16){for(o=d,s=h,a=f,c=m,l=b,r=0;r<80;r++)u[r]=r<16?e[n+r]:_(u[r-3]^u[r-8]^u[r-14]^u[r-16],1),i=v(v(_(d,5),p(r,h,f,m)),v(v(b,u[r]),g(r))),b=m,m=f,f=_(h,30),h=d,d=i;d=v(d,o),h=v(h,s),f=v(f,a),m=v(m,c),b=v(b,l)}return[d,h,f,m,b]}function p(e,t,n,r){return e<20?t&n|~t&r:e<40?t^n^r:e<60?t&n|t&r|n&r:t^n^r}function g(e){return e<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514}function m(e,t){var n=b(e);n.length>16&&(n=f(n,8*e.length));for(var r=new Array(16),i=new Array(16),o=0;o<16;o++)r[o]=909522486^n[o],i[o]=1549556828^n[o];var s=f(r.concat(b(t)),512+8*t.length);return f(i.concat(s),672)}function v(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function _(e,t){return e<<t|e>>>32-t}function b(e){for(var t=[],n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<24-n%32;return t}function y(e){for(var t,n,r="",i=0;i<4*e.length;i+=3)for(t=(e[i>>2]>>8*(3-i%4)&255)<<16|(e[i+1>>2]>>8*(3-(i+1)%4)&255)<<8|e[i+2>>2]>>8*(3-(i+2)%4)&255,n=0;n<4;n++)8*i+6*n>32*e.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t>>6*(3-n)&63);return r}function w(e){for(var t="",n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>24-n%32&255);return t}const S={b64_hmac_sha1:function(e,t){return y(m(e,t))},b64_sha1:function(e){return y(f(b(e),8*e.length))},binb2str:w,core_hmac_sha1:m,str_hmac_sha1:function(e,t){return w(m(e,t))},str_sha1:function(e){return w(f(b(e),8*e.length))}},x=function(e){var t,n,r="",i=e.length;for(t=0;t<i;t++)(n=e.charCodeAt(t))>=0&&n<=127?r+=e.charAt(t):n>2047?(r+=String.fromCharCode(224|n>>12&15),r+=String.fromCharCode(128|n>>6&63),r+=String.fromCharCode(128|n>>0&63)):(r+=String.fromCharCode(192|n>>6&31),r+=String.fromCharCode(128|n>>0&63));return r},E=function(e){e=e||{};for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n="",r="",i="";const o=e[t],s="object"==typeof o,a=escape(unescape(s?o.value:o));s&&(n=o.expires?";expires="+o.expires:"",r=o.domain?";domain="+o.domain:"",i=o.path?";path="+o.path:""),document.cookie=t+"="+a+n+r+i}};var A=n(10);function C(e,t){return new O.Builder(e,t)}function j(e){return new O.Builder("iq",e)}function T(e){return new O.Builder("presence",e)}const O={VERSION:"1.4.1",NS:{HTTPBIND:"http://jabber.org/protocol/httpbind",BOSH:"urn:xmpp:xbosh",CLIENT:"jabber:client",AUTH:"jabber:iq:auth",ROSTER:"jabber:iq:roster",PROFILE:"jabber:iq:profile",DISCO_INFO:"http://jabber.org/protocol/disco#info",DISCO_ITEMS:"http://jabber.org/protocol/disco#items",MUC:"http://jabber.org/protocol/muc",SASL:"urn:ietf:params:xml:ns:xmpp-sasl",STREAM:"http://etherx.jabber.org/streams",FRAMING:"urn:ietf:params:xml:ns:xmpp-framing",BIND:"urn:ietf:params:xml:ns:xmpp-bind",SESSION:"urn:ietf:params:xml:ns:xmpp-session",VERSION:"jabber:iq:version",STANZAS:"urn:ietf:params:xml:ns:xmpp-stanzas",XHTML_IM:"http://jabber.org/protocol/xhtml-im",XHTML:"http://www.w3.org/1999/xhtml"},XHTML:{tags:["a","blockquote","br","cite","em","img","li","ol","p","span","strong","ul","body"],attributes:{a:["href"],blockquote:["style"],br:[],cite:["style"],em:[],img:["src","alt","style","height","width"],li:["style"],ol:["style"],p:["style"],span:["style"],strong:[],ul:["style"],body:[]},css:["background-color","color","font-family","font-size","font-style","font-weight","margin-left","margin-right","text-align","text-decoration"],validTag(e){for(let t=0;t<O.XHTML.tags.length;t++)if(e===O.XHTML.tags[t])return!0;return!1},validAttribute(e,t){if(void 0!==O.XHTML.attributes[e]&&O.XHTML.attributes[e].length>0)for(let n=0;n<O.XHTML.attributes[e].length;n++)if(t===O.XHTML.attributes[e][n])return!0;return!1},validCSS(e){for(let t=0;t<O.XHTML.css.length;t++)if(e===O.XHTML.css[t])return!0;return!1}},Status:{ERROR:0,CONNECTING:1,CONNFAIL:2,AUTHENTICATING:3,AUTHFAIL:4,CONNECTED:5,DISCONNECTED:6,DISCONNECTING:7,ATTACHED:8,REDIRECT:9,CONNTIMEOUT:10,BINDREQUIRED:11,ATTACHFAIL:12},ErrorCondition:{BAD_FORMAT:"bad-format",CONFLICT:"conflict",MISSING_JID_NODE:"x-strophe-bad-non-anon-jid",NO_AUTH_MECH:"no-auth-mech",UNKNOWN_REASON:"unknown"},LogLevel:{DEBUG:0,INFO:1,WARN:2,ERROR:3,FATAL:4},ElementType:{NORMAL:1,TEXT:3,CDATA:4,FRAGMENT:11},TIMEOUT:1.1,SECONDARY_TIMEOUT:.1,addNamespace(e,t){O.NS[e]=t},forEachChild(e,t,n){for(let r=0;r<e.childNodes.length;r++){const i=e.childNodes[r];i.nodeType!==O.ElementType.NORMAL||t&&!this.isTagEqual(i,t)||n(i)}},isTagEqual:(e,t)=>e.tagName===t,_xmlGenerator:null,xmlGenerator:()=>(O._xmlGenerator||(O._xmlGenerator=r.c()),O._xmlGenerator),xmlElement(e){if(!e)return null;const t=O.xmlGenerator().createElement(e);for(let e=1;e<arguments.length;e++){const n=arguments[e];if(n)if("string"==typeof n||"number"==typeof n)t.appendChild(O.xmlTextNode(n));else if("object"==typeof n&&"function"==typeof n.sort)for(let e=0;e<n.length;e++){const r=n[e];"object"==typeof r&&"function"==typeof r.sort&&void 0!==r[1]&&null!==r[1]&&t.setAttribute(r[0],r[1])}else if("object"==typeof n)for(const e in n)Object.prototype.hasOwnProperty.call(n,e)&&void 0!==n[e]&&null!==n[e]&&t.setAttribute(e,n[e])}return t},xmlescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,"""),xmlunescape:e=>e=(e=(e=(e=(e=e.replace(/\&/g,"&")).replace(/</g,"<")).replace(/>/g,">")).replace(/'/g,"'")).replace(/"/g,'"'),xmlTextNode:e=>O.xmlGenerator().createTextNode(e),xmlHtmlNode(e){let t;if(r.a){t=(new r.a).parseFromString(e,"text/xml")}else t=new ActiveXObject("Microsoft.XMLDOM"),t.async="false",t.loadXML(e);return t},getText(e){if(!e)return null;let t="";0===e.childNodes.length&&e.nodeType===O.ElementType.TEXT&&(t+=e.nodeValue);for(let n=0;n<e.childNodes.length;n++)e.childNodes[n].nodeType===O.ElementType.TEXT&&(t+=e.childNodes[n].nodeValue);return O.xmlescape(t)},copyElement(e){let t;if(e.nodeType===O.ElementType.NORMAL){t=O.xmlElement(e.tagName);for(let n=0;n<e.attributes.length;n++)t.setAttribute(e.attributes[n].nodeName,e.attributes[n].value);for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.copyElement(e.childNodes[n]))}else e.nodeType===O.ElementType.TEXT&&(t=O.xmlGenerator().createTextNode(e.nodeValue));return t},createHtml(e){let t;if(e.nodeType===O.ElementType.NORMAL){const n=e.nodeName.toLowerCase();if(O.XHTML.validTag(n))try{t=O.xmlElement(n);for(let r=0;r<O.XHTML.attributes[n].length;r++){const i=O.XHTML.attributes[n][r];let o=e.getAttribute(i);if(null!=o&&""!==o&&!1!==o&&0!==o)if("style"===i&&"object"==typeof o&&void 0!==o.cssText&&(o=o.cssText),"style"===i){const e=[],n=o.split(";");for(let t=0;t<n.length;t++){const r=n[t].split(":"),i=r[0].replace(/^\s*/,"").replace(/\s*$/,"").toLowerCase();if(O.XHTML.validCSS(i)){const t=r[1].replace(/^\s*/,"").replace(/\s*$/,"");e.push(i+": "+t)}}e.length>0&&(o=e.join("; "),t.setAttribute(i,o))}else t.setAttribute(i,o)}for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}catch(e){t=O.xmlTextNode("")}else{t=O.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}}else if(e.nodeType===O.ElementType.FRAGMENT){t=O.xmlGenerator().createDocumentFragment();for(let n=0;n<e.childNodes.length;n++)t.appendChild(O.createHtml(e.childNodes[n]))}else e.nodeType===O.ElementType.TEXT&&(t=O.xmlTextNode(e.nodeValue));return t},escapeNode:e=>"string"!=typeof e?e:e.replace(/^\s+|\s+$/g,"").replace(/\\/g,"\\5c").replace(/ /g,"\\20").replace(/\"/g,"\\22").replace(/\&/g,"\\26").replace(/\'/g,"\\27").replace(/\//g,"\\2f").replace(/:/g,"\\3a").replace(/</g,"\\3c").replace(/>/g,"\\3e").replace(/@/g,"\\40"),unescapeNode:e=>"string"!=typeof e?e:e.replace(/\\20/g," ").replace(/\\22/g,'"').replace(/\\26/g,"&").replace(/\\27/g,"'").replace(/\\2f/g,"/").replace(/\\3a/g,":").replace(/\\3c/g,"<").replace(/\\3e/g,">").replace(/\\40/g,"@").replace(/\\5c/g,"\\"),getNodeFromJid:e=>e.indexOf("@")<0?null:e.split("@")[0],getDomainFromJid(e){const t=O.getBareJidFromJid(e);if(t.indexOf("@")<0)return t;{const e=t.split("@");return e.splice(0,1),e.join("@")}},getResourceFromJid(e){if(!e)return null;const t=e.split("/");return t.length<2?null:(t.splice(0,1),t.join("/"))},getBareJidFromJid:e=>e?e.split("/")[0]:null,_handleError(e){void 0!==e.stack&&O.fatal(e.stack),e.sourceURL?O.fatal("error: "+this.handler+" "+e.sourceURL+":"+e.line+" - "+e.name+": "+e.message):e.fileName?O.fatal("error: "+this.handler+" "+e.fileName+":"+e.lineNumber+" - "+e.name+": "+e.message):O.fatal("error: "+e.message)},log(e,t){var n;e===this.LogLevel.FATAL&&(null===(n=console)||void 0===n||n.error(t))},debug(e){this.log(this.LogLevel.DEBUG,e)},info(e){this.log(this.LogLevel.INFO,e)},warn(e){this.log(this.LogLevel.WARN,e)},error(e){this.log(this.LogLevel.ERROR,e)},fatal(e){this.log(this.LogLevel.FATAL,e)},serialize(e){if(!e)return null;"function"==typeof e.tree&&(e=e.tree());const t=[...Array(e.attributes.length).keys()].map(t=>e.attributes[t].nodeName);t.sort();let n=t.reduce((t,n)=>"".concat(t," ").concat(n,'="').concat(O.xmlescape(e.attributes.getNamedItem(n).value),'"'),"<".concat(e.nodeName));if(e.childNodes.length>0){n+=">";for(let t=0;t<e.childNodes.length;t++){const r=e.childNodes[t];switch(r.nodeType){case O.ElementType.NORMAL:n+=O.serialize(r);break;case O.ElementType.TEXT:n+=O.xmlescape(r.nodeValue);break;case O.ElementType.CDATA:n+="<![CDATA["+r.nodeValue+"]]>"}}n+="</"+e.nodeName+">"}else n+="/>";return n},_requestId:0,_connectionPlugins:{},addConnectionPlugin(e,t){O._connectionPlugins[e]=t},Builder:class{constructor(e,t){"presence"!==e&&"message"!==e&&"iq"!==e||(t&&!t.xmlns?t.xmlns=O.NS.CLIENT:t||(t={xmlns:O.NS.CLIENT})),this.nodeTree=O.xmlElement(e,t),this.node=this.nodeTree}tree(){return this.nodeTree}toString(){return O.serialize(this.nodeTree)}up(){return this.node=this.node.parentNode,this}root(){return this.node=this.nodeTree,this}attrs(e){for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(void 0===e[t]?this.node.removeAttribute(t):this.node.setAttribute(t,e[t]));return this}c(e,t,n){const r=O.xmlElement(e,t,n);return this.node.appendChild(r),"string"!=typeof n&&"number"!=typeof n&&(this.node=r),this}cnode(e){let t;const n=O.xmlGenerator();try{t=void 0!==n.importNode}catch(e){t=!1}const r=t?n.importNode(e,!0):O.copyElement(e);return this.node.appendChild(r),this.node=r,this}t(e){const t=O.xmlTextNode(e);return this.node.appendChild(t),this}h(e){const t=O.xmlGenerator().createElement("body");t.innerHTML=e;const n=O.createHtml(t);for(;n.childNodes.length>0;)this.node.appendChild(n.childNodes[0]);return this}},Handler:function(e,t,n,r,i,o,s){this.handler=e,this.ns=t,this.name=n,this.type=r,this.id=i,this.options=s||{matchBareFromJid:!1,ignoreNamespaceFragment:!1},this.options.matchBare&&(O.warn('The "matchBare" option is deprecated, use "matchBareFromJid" instead.'),this.options.matchBareFromJid=this.options.matchBare,delete this.options.matchBare),this.options.matchBareFromJid?this.from=o?O.getBareJidFromJid(o):null:this.from=o,this.user=!0}};O.Handler.prototype={getNamespace(e){let t=e.getAttribute("xmlns");return t&&this.options.ignoreNamespaceFragment&&(t=t.split("#")[0]),t},namespaceMatch(e){let t=!1;return!this.ns||(O.forEachChild(e,null,e=>{this.getNamespace(e)===this.ns&&(t=!0)}),t||this.getNamespace(e)===this.ns)},isMatch(e){let t=e.getAttribute("from");this.options.matchBareFromJid&&(t=O.getBareJidFromJid(t));const n=e.getAttribute("type");return!(!this.namespaceMatch(e)||this.name&&!O.isTagEqual(e,this.name)||this.type&&(Array.isArray(this.type)?-1===this.type.indexOf(n):n!==this.type)||this.id&&e.getAttribute("id")!==this.id||this.from&&t!==this.from)},run(e){let t=null;try{t=this.handler(e)}catch(e){throw O._handleError(e),e}return t},toString(){return"{Handler: "+this.handler+"("+this.name+","+this.id+","+this.ns+")}"}},O.TimedHandler=class{constructor(e,t){this.period=e,this.handler=t,this.lastCalled=(new Date).getTime(),this.user=!0}run(){return this.lastCalled=(new Date).getTime(),this.handler()}reset(){this.lastCalled=(new Date).getTime()}toString(){return"{TimedHandler: "+this.handler+"("+this.period+")}"}},O.Connection=class{constructor(e,t){this.service=e,this.options=t||{},this.setProtocol(),this.jid="",this.domain=null,this.features=null,this._sasl_data={},this.do_bind=!1,this.do_session=!1,this.mechanisms={},this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.protocolErrorHandlers={HTTP:{},websocket:{}},this._idleTimeout=null,this._disconnectTimeout=null,this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.do_authentication=!0,this.paused=!1,this.restored=!1,this._data=[],this._uniqueId=0,this._sasl_success_handler=null,this._sasl_failure_handler=null,this._sasl_challenge_handler=null,this.maxRetries=5,this._idleTimeout=setTimeout(()=>this._onIdle(),100),E(this.options.cookies),this.registerSASLMechanisms(this.options.mechanisms);for(const e in O._connectionPlugins)if(Object.prototype.hasOwnProperty.call(O._connectionPlugins,e)){const t=function(){};t.prototype=O._connectionPlugins[e],this[e]=new t,this[e].init(this)}}setProtocol(){const e=this.options.protocol||"";this.options.worker?this._proto=new O.WorkerWebsocket(this):0===this.service.indexOf("ws:")||0===this.service.indexOf("wss:")||0===e.indexOf("ws")?this._proto=new O.Websocket(this):this._proto=new O.Bosh(this)}reset(){this._proto._reset(),this.do_session=!1,this.do_bind=!1,this.timedHandlers=[],this.handlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this.authenticated=!1,this.connected=!1,this.disconnecting=!1,this.restored=!1,this._data=[],this._requests=[],this._uniqueId=0}pause(){this.paused=!0}resume(){this.paused=!1}getUniqueId(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t+""}addProtocolErrorHandler(e,t,n){this.protocolErrorHandlers[e][t]=n}connect(e,t,n,r,i,o,s){this.jid=e,this.authzid=O.getBareJidFromJid(this.jid),this.authcid=s||O.getNodeFromJid(this.jid),this.pass=t,this.connect_callback=n,this.disconnecting=!1,this.connected=!1,this.authenticated=!1,this.restored=!1,this.domain=O.getDomainFromJid(this.jid),this._changeConnectStatus(O.Status.CONNECTING,null),this._proto._connect(r,i,o)}attach(e,t,n,r,i,o,s){if(this._proto._attach)return this._proto._attach(e,t,n,r,i,o,s);{const e=new Error('The "attach" method is not available for your connection protocol');throw e.name="StropheSessionError",e}}restore(e,t,n,r,i){if(!this._sessionCachingSupported()){const e=new Error('The "restore" method can only be used with a BOSH connection.');throw e.name="StropheSessionError",e}this._proto._restore(e,t,n,r,i)}_sessionCachingSupported(){if(this._proto instanceof O.Bosh){if(!JSON)return!1;try{sessionStorage.setItem("_strophe_","_strophe_"),sessionStorage.removeItem("_strophe_")}catch(e){return!1}return!0}return!1}xmlInput(e){}xmlOutput(e){}rawInput(e){}rawOutput(e){}nextValidRid(e){}send(e){if(null!==e){if("function"==typeof e.sort)for(let t=0;t<e.length;t++)this._queueData(e[t]);else"function"==typeof e.tree?this._queueData(e.tree()):this._queueData(e);this._proto._send()}}flush(){clearTimeout(this._idleTimeout),this._onIdle()}sendPresence(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let o=e.getAttribute("id");if(o||(o=this.getUniqueId("sendPresence"),e.setAttribute("id",o)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i),"error"===e.getAttribute("type")?n&&n(e):t&&t(e)},null,"presence",null,o);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),o}sendIQ(e,t,n,r){let i=null;"function"==typeof e.tree&&(e=e.tree());let o=e.getAttribute("id");if(o||(o=this.getUniqueId("sendIQ"),e.setAttribute("id",o)),"function"==typeof t||"function"==typeof n){const e=this.addHandler(e=>{i&&this.deleteTimedHandler(i);const r=e.getAttribute("type");if("result"===r)t&&t(e);else{if("error"!==r){const e=new Error("Got bad IQ type of ".concat(r));throw e.name="StropheError",e}n&&n(e)}},null,"iq",["error","result"],o);r&&(i=this.addTimedHandler(r,()=>(this.deleteHandler(e),n&&n(null),!1)))}return this.send(e),o}_queueData(e){if(null===e||!e.tagName||!e.childNodes){const e=new Error("Cannot queue non-DOMElement.");throw e.name="StropheError",e}this._data.push(e)}_sendRestart(){this._data.push("restart"),this._proto._sendRestart(),this._idleTimeout=setTimeout(()=>this._onIdle(),100)}addTimedHandler(e,t){const n=new O.TimedHandler(e,t);return this.addTimeds.push(n),n}deleteTimedHandler(e){this.removeTimeds.push(e)}addHandler(e,t,n,r,i,o,s){const a=new O.Handler(e,t,n,r,i,o,s);return this.addHandlers.push(a),a}deleteHandler(e){this.removeHandlers.push(e);const t=this.addHandlers.indexOf(e);t>=0&&this.addHandlers.splice(t,1)}registerSASLMechanisms(e){this.mechanisms={},(e=e||[O.SASLAnonymous,O.SASLExternal,O.SASLOAuthBearer,O.SASLXOAuth2,O.SASLPlain,O.SASLSHA1]).forEach(e=>this.registerSASLMechanism(e))}registerSASLMechanism(e){const t=new e;this.mechanisms[t.mechname]=t}disconnect(e){if(this._changeConnectStatus(O.Status.DISCONNECTING,e),e?O.warn("Disconnect was called because: "+e):O.info("Disconnect was called"),this.connected){let e=!1;this.disconnecting=!0,this.authenticated&&(e=T({xmlns:O.NS.CLIENT,type:"unavailable"})),this._disconnectTimeout=this._addSysTimedHandler(3e3,this._onDisconnectTimeout.bind(this)),this._proto._disconnect(e)}else O.warn("Disconnect was called before Strophe connected to the server"),this._proto._abortAllRequests(),this._doDisconnect()}_changeConnectStatus(e,t,n){for(const n in O._connectionPlugins)if(Object.prototype.hasOwnProperty.call(O._connectionPlugins,n)){const r=this[n];if(r.statusChanged)try{r.statusChanged(e,t)}catch(e){O.error("".concat(n," plugin caused an exception changing status: ").concat(e))}}if(this.connect_callback)try{this.connect_callback(e,t,n)}catch(e){O._handleError(e),O.error("User connection callback caused an exception: ".concat(e))}}_doDisconnect(e){"number"==typeof this._idleTimeout&&clearTimeout(this._idleTimeout),null!==this._disconnectTimeout&&(this.deleteTimedHandler(this._disconnectTimeout),this._disconnectTimeout=null),O.debug("_doDisconnect was called"),this._proto._doDisconnect(),this.authenticated=!1,this.disconnecting=!1,this.restored=!1,this.handlers=[],this.timedHandlers=[],this.removeTimeds=[],this.removeHandlers=[],this.addTimeds=[],this.addHandlers=[],this._changeConnectStatus(O.Status.DISCONNECTED,e),this.connected=!1}_dataRecv(e,t){const n=this._proto._reqToData(e);if(null===n)return;for(this.xmlInput!==O.Connection.prototype.xmlInput&&(n.nodeName===this._proto.strip&&n.childNodes.length?this.xmlInput(n.childNodes[0]):this.xmlInput(n)),this.rawInput!==O.Connection.prototype.rawInput&&(t?this.rawInput(t):this.rawInput(O.serialize(n)));this.removeHandlers.length>0;){const e=this.removeHandlers.pop(),t=this.handlers.indexOf(e);t>=0&&this.handlers.splice(t,1)}for(;this.addHandlers.length>0;)this.handlers.push(this.addHandlers.pop());if(this.disconnecting&&this._proto._emptyQueue())return void this._doDisconnect();const r=n.getAttribute("type");if(null!==r&&"terminate"===r){if(this.disconnecting)return;let e=n.getAttribute("condition");const t=n.getElementsByTagName("conflict");return null!==e?("remote-stream-error"===e&&t.length>0&&(e="conflict"),this._changeConnectStatus(O.Status.CONNFAIL,e)):this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.UNKOWN_REASON),void this._doDisconnect(e)}O.forEachChild(n,null,e=>{const t=this.handlers;this.handlers=[];for(let n=0;n<t.length;n++){const r=t[n];try{(!r.isMatch(e)||!this.authenticated&&r.user||r.run(e))&&this.handlers.push(r)}catch(e){O.warn("Removing Strophe handlers due to uncaught exception: "+e.message)}}})}_connect_cb(e,t,n){let r;O.debug("_connect_cb was called"),this.connected=!0;try{r=this._proto._reqToData(e)}catch(e){if(e.name!==O.ErrorCondition.BAD_FORMAT)throw e;this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.BAD_FORMAT),this._doDisconnect(O.ErrorCondition.BAD_FORMAT)}if(!r)return;if(this.xmlInput!==O.Connection.prototype.xmlInput&&(r.nodeName===this._proto.strip&&r.childNodes.length?this.xmlInput(r.childNodes[0]):this.xmlInput(r)),this.rawInput!==O.Connection.prototype.rawInput&&(n?this.rawInput(n):this.rawInput(O.serialize(r))),this._proto._connect_cb(r)===O.Status.CONNFAIL)return;let i;if(i=r.getElementsByTagNameNS?r.getElementsByTagNameNS(O.NS.STREAM,"features").length>0:r.getElementsByTagName("stream:features").length>0||r.getElementsByTagName("features").length>0,!i)return void this._proto._no_auth_received(t);const o=Array.from(r.getElementsByTagName("mechanism")).map(e=>this.mechanisms[e.textContent]).filter(e=>e);0!==o.length||0!==r.getElementsByTagName("auth").length?!1!==this.do_authentication&&this.authenticate(o):this._proto._no_auth_received(t)}sortMechanismsByPriority(e){for(let t=0;t<e.length-1;++t){let n=t;for(let r=t+1;r<e.length;++r)e[r].priority>e[n].priority&&(n=r);if(n!==t){const r=e[t];e[t]=e[n],e[n]=r}}return e}authenticate(e){this._attemptSASLAuth(e)||this._attemptLegacyAuth()}_attemptSASLAuth(e){e=this.sortMechanismsByPriority(e||[]);let t=!1;for(let n=0;n<e.length;++n){if(!e[n].test(this))continue;this._sasl_success_handler=this._addSysHandler(this._sasl_success_cb.bind(this),null,"success",null,null),this._sasl_failure_handler=this._addSysHandler(this._sasl_failure_cb.bind(this),null,"failure",null,null),this._sasl_challenge_handler=this._addSysHandler(this._sasl_challenge_cb.bind(this),null,"challenge",null,null),this._sasl_mechanism=e[n],this._sasl_mechanism.onStart(this);const r=C("auth",{xmlns:O.NS.SASL,mechanism:this._sasl_mechanism.mechname});if(this._sasl_mechanism.isClientFirst){const e=this._sasl_mechanism.onChallenge(this,null);r.t(Object(A.btoa)(e))}this.send(r.tree()),t=!0;break}return t}_sasl_challenge_cb(e){const t=Object(A.atob)(O.getText(e)),n=this._sasl_mechanism.onChallenge(this,t),r=C("response",{xmlns:O.NS.SASL});return""!==n&&r.t(Object(A.btoa)(n)),this.send(r.tree()),!0}_attemptLegacyAuth(){null===O.getNodeFromJid(this.jid)?(this._changeConnectStatus(O.Status.CONNFAIL,O.ErrorCondition.MISSING_JID_NODE),this.disconnect(O.ErrorCondition.MISSING_JID_NODE)):(this._changeConnectStatus(O.Status.AUTHENTICATING,null),this._addSysHandler(this._onLegacyAuthIQResult.bind(this),null,null,null,"_auth_1"),this.send(j({type:"get",to:this.domain,id:"_auth_1"}).c("query",{xmlns:O.NS.AUTH}).c("username",{}).t(O.getNodeFromJid(this.jid)).tree()))}_onLegacyAuthIQResult(e){const t=j({type:"set",id:"_auth_2"}).c("query",{xmlns:O.NS.AUTH}).c("username",{}).t(O.getNodeFromJid(this.jid)).up().c("password").t(this.pass);return O.getResourceFromJid(this.jid)||(this.jid=O.getBareJidFromJid(this.jid)+"/strophe"),t.up().c("resource",{}).t(O.getResourceFromJid(this.jid)),this._addSysHandler(this._auth2_cb.bind(this),null,null,null,"_auth_2"),this.send(t.tree()),!1}_sasl_success_cb(e){if(this._sasl_data["server-signature"]){let t;const n=/([a-z]+)=([^,]+)(,|$)/,r=Object(A.atob)(O.getText(e)).match(n);if("v"===r[1]&&(t=r[2]),t!==this._sasl_data["server-signature"])return this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_data={},this._sasl_failure_cb(null)}O.info("SASL authentication succeeded."),this._sasl_mechanism&&this._sasl_mechanism.onSuccess(),this.deleteHandler(this._sasl_failure_handler),this._sasl_failure_handler=null,this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null);const t=[],n=(e,t)=>{for(;e.length;)this.deleteHandler(e.pop());return this._onStreamFeaturesAfterSASL(t),!1};return t.push(this._addSysHandler(e=>n(t,e),null,"stream:features",null,null)),t.push(this._addSysHandler(e=>n(t,e),O.NS.STREAM,"features",null,null)),this._sendRestart(),!1}_onStreamFeaturesAfterSASL(e){this.features=e;for(let t=0;t<e.childNodes.length;t++){const n=e.childNodes[t];"bind"===n.nodeName&&(this.do_bind=!0),"session"===n.nodeName&&(this.do_session=!0)}return this.do_bind?(this.options.explicitResourceBinding?this._changeConnectStatus(O.Status.BINDREQUIRED,null):this.bind(),!1):(this._changeConnectStatus(O.Status.AUTHFAIL,null),!1)}bind(){if(!this.do_bind)return void O.log(O.LogLevel.INFO,'Strophe.Connection.prototype.bind called but "do_bind" is false');this._addSysHandler(this._onResourceBindResultIQ.bind(this),null,null,null,"_bind_auth_2");const e=O.getResourceFromJid(this.jid);e?this.send(j({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:O.NS.BIND}).c("resource",{}).t(e).tree()):this.send(j({type:"set",id:"_bind_auth_2"}).c("bind",{xmlns:O.NS.BIND}).tree())}_onResourceBindResultIQ(e){if("error"===e.getAttribute("type")){let t;return O.warn("Resource binding failed."),e.getElementsByTagName("conflict").length>0&&(t=O.ErrorCondition.CONFLICT),this._changeConnectStatus(O.Status.AUTHFAIL,t,e),!1}const t=e.getElementsByTagName("bind");if(!(t.length>0))return O.warn("Resource binding failed."),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1;{const e=t[0].getElementsByTagName("jid");e.length>0&&(this.authenticated=!0,this.jid=O.getText(e[0]),this.do_session?this._establishSession():this._changeConnectStatus(O.Status.CONNECTED,null))}}_establishSession(){if(!this.do_session)throw new Error("Strophe.Connection.prototype._establishSession "+"called but apparently ".concat(O.NS.SESSION," wasn't advertised by the server"));this._addSysHandler(this._onSessionResultIQ.bind(this),null,null,null,"_session_auth_2"),this.send(j({type:"set",id:"_session_auth_2"}).c("session",{xmlns:O.NS.SESSION}).tree())}_onSessionResultIQ(e){if("result"===e.getAttribute("type"))this.authenticated=!0,this._changeConnectStatus(O.Status.CONNECTED,null);else if("error"===e.getAttribute("type"))return this.authenticated=!1,O.warn("Session creation failed."),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1;return!1}_sasl_failure_cb(e){return this._sasl_success_handler&&(this.deleteHandler(this._sasl_success_handler),this._sasl_success_handler=null),this._sasl_challenge_handler&&(this.deleteHandler(this._sasl_challenge_handler),this._sasl_challenge_handler=null),this._sasl_mechanism&&this._sasl_mechanism.onFailure(),this._changeConnectStatus(O.Status.AUTHFAIL,null,e),!1}_auth2_cb(e){return"result"===e.getAttribute("type")?(this.authenticated=!0,this._changeConnectStatus(O.Status.CONNECTED,null)):"error"===e.getAttribute("type")&&(this._changeConnectStatus(O.Status.AUTHFAIL,null,e),this.disconnect("authentication failed")),!1}_addSysTimedHandler(e,t){const n=new O.TimedHandler(e,t);return n.user=!1,this.addTimeds.push(n),n}_addSysHandler(e,t,n,r,i){const o=new O.Handler(e,t,n,r,i);return o.user=!1,this.addHandlers.push(o),o}_onDisconnectTimeout(){return O.debug("_onDisconnectTimeout was called"),this._changeConnectStatus(O.Status.CONNTIMEOUT,null),this._proto._onDisconnectTimeout(),this._doDisconnect(),!1}_onIdle(){for(;this.addTimeds.length>0;)this.timedHandlers.push(this.addTimeds.pop());for(;this.removeTimeds.length>0;){const e=this.removeTimeds.pop(),t=this.timedHandlers.indexOf(e);t>=0&&this.timedHandlers.splice(t,1)}const e=(new Date).getTime(),t=[];for(let n=0;n<this.timedHandlers.length;n++){const r=this.timedHandlers[n];if(this.authenticated||!r.user){r.lastCalled+r.period-e<=0?r.run()&&t.push(r):t.push(r)}}this.timedHandlers=t,clearTimeout(this._idleTimeout),this._proto._onIdle(),this.connected&&(this._idleTimeout=setTimeout(()=>this._onIdle(),100))}},O.SASLMechanism=class{constructor(e,t,n){this.mechname=e,this.isClientFirst=t,this.priority=n}test(){return!0}onStart(e){this._connection=e}onChallenge(e,t){throw new Error("You should implement challenge handling!")}onFailure(){this._connection=null}onSuccess(){this._connection=null}},O.SASLAnonymous=class extends O.SASLMechanism{constructor(e="ANONYMOUS",t=!1,n=20){super(e,t,n)}test(e){return null===e.authcid}},O.SASLPlain=class extends O.SASLMechanism{constructor(e="PLAIN",t=!0,n=50){super(e,t,n)}test(e){return null!==e.authcid}onChallenge(e){const{authcid:t,authzid:n,domain:r,pass:i}=e;if(!r)throw new Error("SASLPlain onChallenge: domain is not defined!");let o=n!=="".concat(t,"@").concat(r)?n:"";return o+="\0",o+=t,o+="\0",o+=i,x(o)}},O.SASLSHA1=class extends O.SASLMechanism{constructor(e="SCRAM-SHA-1",t=!0,n=60){super(e,t,n)}test(e){return null!==e.authcid}onChallenge(e,t,n){const r=n||h.hexdigest(""+1234567890*Math.random());let i="n="+x(e.authcid);return i+=",r=",i+=r,e._sasl_data.cnonce=r,e._sasl_data["client-first-message-bare"]=i,i="n,,"+i,this.onChallenge=(e,t)=>{let n,r,i,o,s,a,c,l,u="c=biws,",d="".concat(e._sasl_data["client-first-message-bare"],",").concat(t,",");const h=e._sasl_data.cnonce,f=/([a-z]+)=([^,]+)(,|$)/;for(;t.match(f);){const e=t.match(f);switch(t=t.replace(e[0],""),e[1]){case"r":n=e[2];break;case"s":r=e[2];break;case"i":i=e[2]}}if(n.substr(0,h.length)!==h)return e._sasl_data={},e._sasl_failure_cb();u+="r="+n,d+=u,r=Object(A.atob)(r),r+="\0\0\0";const p=x(e.pass);for(o=a=S.core_hmac_sha1(p,r),c=1;c<i;c++){for(s=S.core_hmac_sha1(p,S.binb2str(a)),l=0;l<5;l++)o[l]^=s[l];a=s}o=S.binb2str(o);const g=S.core_hmac_sha1(o,"Client Key"),m=S.str_hmac_sha1(o,"Server Key"),v=S.core_hmac_sha1(S.str_sha1(S.binb2str(g)),d);for(e._sasl_data["server-signature"]=S.b64_hmac_sha1(m,d),l=0;l<5;l++)g[l]^=v[l];return u+=",p="+Object(A.btoa)(S.binb2str(g)),u},i}},O.SASLOAuthBearer=class extends O.SASLMechanism{constructor(e="OAUTHBEARER",t=!0,n=40){super(e,t,n)}test(e){return null!==e.pass}onChallenge(e){let t="n,";return null!==e.authcid&&(t=t+"a="+e.authzid),t+=",",t+="",t+="auth=Bearer ",t+=e.pass,t+="",t+="",x(t)}},O.SASLExternal=class extends O.SASLMechanism{constructor(e="EXTERNAL",t=!0,n=10){super(e,t,n)}onChallenge(e){return e.authcid===e.authzid?"":e.authzid}},O.SASLXOAuth2=class extends O.SASLMechanism{constructor(e="X-OAUTH2",t=!0,n=30){super(e,t,n)}test(e){return null!==e.pass}onChallenge(e){let t="\0";return null!==e.authcid&&(t+=e.authzid),t+="\0",t+=e.pass,x(t)}};t.e={Strophe:O,$build:C,$iq:j,$msg:function(e){return new O.Builder("message",e)},$pres:T,SHA1:S,MD5:h,b64_hmac_sha1:S.b64_hmac_sha1,b64_sha1:S.b64_sha1,str_hmac_sha1:S.str_hmac_sha1,str_sha1:S.str_sha1}},function(e,t,n){var r; /*! * Sizzle CSS Selector Engine v2.3.5 * https://sizzlejs.com/ @@ -8,7 +8,7 @@ * https://js.foundation/ * * Date: 2020-03-14 - */!function(i){var s,o,a,c,l,u,d,h,f,p,g,m,v,_,b,y,w,S,x,E="sizzle"+1*new Date,A=i.document,C=0,j=0,T=he(),O=he(),k=he(),N=he(),I=function(e,t){return e===t&&(g=!0),0},M={}.hasOwnProperty,R=[],D=R.pop,P=R.push,L=R.push,z=R.slice,F=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",q="[\\x20\\t\\r\\n\\f]",H="(?:\\\\[\\da-fA-F]{1,6}"+q+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",U="\\["+q+"*("+H+")(?:"+q+"*([*^$|!~]?=)"+q+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+q+"*\\]",$=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+U+")*)|.*)\\)|)",W=new RegExp(q+"+","g"),V=new RegExp("^"+q+"+|((?:^|[^\\\\])(?:\\\\.)*)"+q+"+$","g"),G=new RegExp("^"+q+"*,"+q+"*"),J=new RegExp("^"+q+"*([>+~]|"+q+")"+q+"*"),X=new RegExp(q+"|>"),Q=new RegExp($),Y=new RegExp("^"+H+"$"),K={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+U),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+q+"*(even|odd|(([+-]|)(\\d*)n|)"+q+"*(?:([+-]|)"+q+"*(\\d+)|))"+q+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+q+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+q+"*((?:-\\d)?\\d*)"+q+"*\\)|)(?=[^-]|$)","i")},Z=/HTML$/i,ee=/^(?:input|select|textarea|button)$/i,te=/^h\d$/i,ne=/^[^{]+\{\s*\[native \w/,re=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ie=/[+~]/,se=new RegExp("\\\\[\\da-fA-F]{1,6}"+q+"?|\\\\([^\\r\\n\\f])","g"),oe=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ae=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ce=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},le=function(){m()},ue=Ee((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(R=z.call(A.childNodes),A.childNodes),R[A.childNodes.length].nodeType}catch(e){L={apply:R.length?function(e,t){P.apply(e,z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function de(e,t,n,r){var i,s,a,c,l,d,f,p=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&(m(t),t=t||v,b)){if(11!==g&&(l=re.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(p&&(a=p.getElementById(i))&&x(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return L.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&o.getElementsByClassName&&t.getElementsByClassName)return L.apply(n,t.getElementsByClassName(i)),n}if(o.qsa&&!N[e+" "]&&(!y||!y.test(e))&&(1!==g||"object"!==t.nodeName.toLowerCase())){if(f=e,p=t,1===g&&(X.test(e)||J.test(e))){for((p=ie.test(e)&&we(t.parentNode)||t)===t&&o.scope||((c=t.getAttribute("id"))?c=c.replace(ae,ce):t.setAttribute("id",c=E)),s=(d=u(e)).length;s--;)d[s]=(c?"#"+c:":scope")+" "+xe(d[s]);f=d.join(",")}try{return L.apply(n,p.querySelectorAll(f)),n}catch(t){N(e,!0)}finally{c===E&&t.removeAttribute("id")}}}return h(e.replace(V,"$1"),t,n,r)}function he(){var e=[];return function t(n,r){return e.push(n+" ")>a.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function fe(e){return e[E]=!0,e}function pe(e){var t=v.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ge(e,t){for(var n=e.split("|"),r=n.length;r--;)a.attrHandle[n[r]]=t}function me(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ve(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function _e(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function be(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ue(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ye(e){return fe((function(t){return t=+t,fe((function(n,r){for(var i,s=e([],n.length,t),o=s.length;o--;)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))}))}))}function we(e){return e&&void 0!==e.getElementsByTagName&&e}for(s in o=de.support={},l=de.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Z.test(t||n&&n.nodeName||"HTML")},m=de.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:A;return r!=v&&9===r.nodeType&&r.documentElement?(_=(v=r).documentElement,b=!l(v),A!=v&&(n=v.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",le,!1):n.attachEvent&&n.attachEvent("onunload",le)),o.scope=pe((function(e){return _.appendChild(e).appendChild(v.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),o.attributes=pe((function(e){return e.className="i",!e.getAttribute("className")})),o.getElementsByTagName=pe((function(e){return e.appendChild(v.createComment("")),!e.getElementsByTagName("*").length})),o.getElementsByClassName=ne.test(v.getElementsByClassName),o.getById=pe((function(e){return _.appendChild(e).id=E,!v.getElementsByName||!v.getElementsByName(E).length})),o.getById?(a.filter.ID=function(e){var t=e.replace(se,oe);return function(e){return e.getAttribute("id")===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&b){var n=t.getElementById(e);return n?[n]:[]}}):(a.filter.ID=function(e){var t=e.replace(se,oe);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&b){var n,r,i,s=t.getElementById(e);if(s){if((n=s.getAttributeNode("id"))&&n.value===e)return[s];for(i=t.getElementsByName(e),r=0;s=i[r++];)if((n=s.getAttributeNode("id"))&&n.value===e)return[s]}return[]}}),a.find.TAG=o.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):o.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,s=t.getElementsByTagName(e);if("*"===e){for(;n=s[i++];)1===n.nodeType&&r.push(n);return r}return s},a.find.CLASS=o.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&b)return t.getElementsByClassName(e)},w=[],y=[],(o.qsa=ne.test(v.querySelectorAll))&&(pe((function(e){var t;_.appendChild(e).innerHTML="<a id='"+E+"'></a><select id='"+E+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+q+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+q+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=v.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+q+"*name"+q+"*="+q+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")})),pe((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=v.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+q+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),_.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")}))),(o.matchesSelector=ne.test(S=_.matches||_.webkitMatchesSelector||_.mozMatchesSelector||_.oMatchesSelector||_.msMatchesSelector))&&pe((function(e){o.disconnectedMatch=S.call(e,"*"),S.call(e,"[s!='']:x"),w.push("!=",$)})),y=y.length&&new RegExp(y.join("|")),w=w.length&&new RegExp(w.join("|")),t=ne.test(_.compareDocumentPosition),x=t||ne.test(_.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},I=t?function(e,t){if(e===t)return g=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!o.sortDetached&&t.compareDocumentPosition(e)===n?e==v||e.ownerDocument==A&&x(A,e)?-1:t==v||t.ownerDocument==A&&x(A,t)?1:p?F(p,e)-F(p,t):0:4&n?-1:1)}:function(e,t){if(e===t)return g=!0,0;var n,r=0,i=e.parentNode,s=t.parentNode,o=[e],a=[t];if(!i||!s)return e==v?-1:t==v?1:i?-1:s?1:p?F(p,e)-F(p,t):0;if(i===s)return me(e,t);for(n=e;n=n.parentNode;)o.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;o[r]===a[r];)r++;return r?me(o[r],a[r]):o[r]==A?-1:a[r]==A?1:0},v):v},de.matches=function(e,t){return de(e,null,null,t)},de.matchesSelector=function(e,t){if(m(e),o.matchesSelector&&b&&!N[t+" "]&&(!w||!w.test(t))&&(!y||!y.test(t)))try{var n=S.call(e,t);if(n||o.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return de(t,v,null,[e]).length>0},de.contains=function(e,t){return(e.ownerDocument||e)!=v&&m(e),x(e,t)},de.attr=function(e,t){(e.ownerDocument||e)!=v&&m(e);var n=a.attrHandle[t.toLowerCase()],r=n&&M.call(a.attrHandle,t.toLowerCase())?n(e,t,!b):void 0;return void 0!==r?r:o.attributes||!b?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},de.escape=function(e){return(e+"").replace(ae,ce)},de.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},de.uniqueSort=function(e){var t,n=[],r=0,i=0;if(g=!o.detectDuplicates,p=!o.sortStable&&e.slice(0),e.sort(I),g){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return p=null,e},c=de.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=c(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=c(t);return n},(a=de.selectors={cacheLength:50,createPseudo:fe,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(se,oe),e[3]=(e[3]||e[4]||e[5]||"").replace(se,oe),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||de.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&de.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Q.test(n)&&(t=u(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(se,oe).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+q+")"+e+"("+q+"|$)"))&&T(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=de.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var s="nth"!==e.slice(0,3),o="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,c){var l,u,d,h,f,p,g=s!==o?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),_=!c&&!a,b=!1;if(m){if(s){for(;g;){for(h=t;h=h[g];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;p=g="only"===e&&!p&&"nextSibling"}return!0}if(p=[o?m.firstChild:m.lastChild],o&&_){for(b=(f=(l=(u=(d=(h=m)[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===C&&l[1])&&l[2],h=f&&m.childNodes[f];h=++f&&h&&h[g]||(b=f=0)||p.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[C,f,b];break}}else if(_&&(b=f=(l=(u=(d=(h=t)[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===C&&l[1]),!1===b)for(;(h=++f&&h&&h[g]||(b=f=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(_&&((u=(d=h[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]=[C,b]),h!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,r=a.pseudos[e]||a.setFilters[e.toLowerCase()]||de.error("unsupported pseudo: "+e);return r[E]?r(t):r.length>1?(n=[e,e,"",t],a.setFilters.hasOwnProperty(e.toLowerCase())?fe((function(e,n){for(var i,s=r(e,t),o=s.length;o--;)e[i=F(e,s[o])]=!(n[i]=s[o])})):function(e){return r(e,0,n)}):r}},pseudos:{not:fe((function(e){var t=[],n=[],r=d(e.replace(V,"$1"));return r[E]?fe((function(e,t,n,i){for(var s,o=r(e,null,i,[]),a=e.length;a--;)(s=o[a])&&(e[a]=!(t[a]=s))})):function(e,i,s){return t[0]=e,r(t,null,s,n),t[0]=null,!n.pop()}})),has:fe((function(e){return function(t){return de(e,t).length>0}})),contains:fe((function(e){return e=e.replace(se,oe),function(t){return(t.textContent||c(t)).indexOf(e)>-1}})),lang:fe((function(e){return Y.test(e||"")||de.error("unsupported lang: "+e),e=e.replace(se,oe).toLowerCase(),function(t){var n;do{if(n=b?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(e){var t=i.location&&i.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===_},focus:function(e){return e===v.activeElement&&(!v.hasFocus||v.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:be(!1),disabled:be(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!a.pseudos.empty(e)},header:function(e){return te.test(e.nodeName)},input:function(e){return ee.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ye((function(){return[0]})),last:ye((function(e,t){return[t-1]})),eq:ye((function(e,t,n){return[n<0?n+t:n]})),even:ye((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:ye((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:ye((function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e})),gt:ye((function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e}))}}).pseudos.nth=a.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})a.pseudos[s]=ve(s);for(s in{submit:!0,reset:!0})a.pseudos[s]=_e(s);function Se(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Ee(e,t,n){var r=t.dir,i=t.next,s=i||r,o=n&&"parentNode"===s,a=j++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||o)return e(t,n,i);return!1}:function(t,n,c){var l,u,d,h=[C,a];if(c){for(;t=t[r];)if((1===t.nodeType||o)&&e(t,n,c))return!0}else for(;t=t[r];)if(1===t.nodeType||o)if(u=(d=t[E]||(t[E]={}))[t.uniqueID]||(d[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=u[s])&&l[0]===C&&l[1]===a)return h[2]=l[2];if(u[s]=h,h[2]=e(t,n,c))return!0}return!1}}function Ae(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ce(e,t,n,r,i){for(var s,o=[],a=0,c=e.length,l=null!=t;a<c;a++)(s=e[a])&&(n&&!n(s,r,i)||(o.push(s),l&&t.push(a)));return o}function je(e,t,n,r,i,s){return r&&!r[E]&&(r=je(r)),i&&!i[E]&&(i=je(i,s)),fe((function(s,o,a,c){var l,u,d,h=[],f=[],p=o.length,g=s||function(e,t,n){for(var r=0,i=t.length;r<i;r++)de(e,t[r],n);return n}(t||"*",a.nodeType?[a]:a,[]),m=!e||!s&&t?g:Ce(g,h,e,a,c),v=n?i||(s?e:p||r)?[]:o:m;if(n&&n(m,v,a,c),r)for(l=Ce(v,f),r(l,[],a,c),u=l.length;u--;)(d=l[u])&&(v[f[u]]=!(m[f[u]]=d));if(s){if(i||e){if(i){for(l=[],u=v.length;u--;)(d=v[u])&&l.push(m[u]=d);i(null,v=[],l,c)}for(u=v.length;u--;)(d=v[u])&&(l=i?F(s,d):h[u])>-1&&(s[l]=!(o[l]=d))}}else v=Ce(v===o?v.splice(p,v.length):v),i?i(null,o,v,c):L.apply(o,v)}))}function Te(e){for(var t,n,r,i=e.length,s=a.relative[e[0].type],o=s||a.relative[" "],c=s?1:0,l=Ee((function(e){return e===t}),o,!0),u=Ee((function(e){return F(t,e)>-1}),o,!0),d=[function(e,n,r){var i=!s&&(r||n!==f)||((t=n).nodeType?l(e,n,r):u(e,n,r));return t=null,i}];c<i;c++)if(n=a.relative[e[c].type])d=[Ee(Ae(d),n)];else{if((n=a.filter[e[c].type].apply(null,e[c].matches))[E]){for(r=++c;r<i&&!a.relative[e[r].type];r++);return je(c>1&&Ae(d),c>1&&xe(e.slice(0,c-1).concat({value:" "===e[c-2].type?"*":""})).replace(V,"$1"),n,c<r&&Te(e.slice(c,r)),r<i&&Te(e=e.slice(r)),r<i&&xe(e))}d.push(n)}return Ae(d)}Se.prototype=a.filters=a.pseudos,a.setFilters=new Se,u=de.tokenize=function(e,t){var n,r,i,s,o,c,l,u=O[e+" "];if(u)return t?0:u.slice(0);for(o=e,c=[],l=a.preFilter;o;){for(s in n&&!(r=G.exec(o))||(r&&(o=o.slice(r[0].length)||o),c.push(i=[])),n=!1,(r=J.exec(o))&&(n=r.shift(),i.push({value:n,type:r[0].replace(V," ")}),o=o.slice(n.length)),a.filter)!(r=K[s].exec(o))||l[s]&&!(r=l[s](r))||(n=r.shift(),i.push({value:n,type:s,matches:r}),o=o.slice(n.length));if(!n)break}return t?o.length:o?de.error(e):O(e,c).slice(0)},d=de.compile=function(e,t){var n,r=[],i=[],s=k[e+" "];if(!s){for(t||(t=u(e)),n=t.length;n--;)(s=Te(t[n]))[E]?r.push(s):i.push(s);(s=k(e,function(e,t){var n=t.length>0,r=e.length>0,i=function(i,s,o,c,l){var u,d,h,p=0,g="0",_=i&&[],y=[],w=f,S=i||r&&a.find.TAG("*",l),x=C+=null==w?1:Math.random()||.1,E=S.length;for(l&&(f=s==v||s||l);g!==E&&null!=(u=S[g]);g++){if(r&&u){for(d=0,s||u.ownerDocument==v||(m(u),o=!b);h=e[d++];)if(h(u,s||v,o)){c.push(u);break}l&&(C=x)}n&&((u=!h&&u)&&p--,i&&_.push(u))}if(p+=g,n&&g!==p){for(d=0;h=t[d++];)h(_,y,s,o);if(i){if(p>0)for(;g--;)_[g]||y[g]||(y[g]=D.call(c));y=Ce(y)}L.apply(c,y),l&&!i&&y.length>0&&p+t.length>1&&de.uniqueSort(c)}return l&&(C=x,f=w),_};return n?fe(i):i}(i,r))).selector=e}return s},h=de.select=function(e,t,n,r){var i,s,o,c,l,h="function"==typeof e&&e,f=!r&&u(e=h.selector||e);if(n=n||[],1===f.length){if((s=f[0]=f[0].slice(0)).length>2&&"ID"===(o=s[0]).type&&9===t.nodeType&&b&&a.relative[s[1].type]){if(!(t=(a.find.ID(o.matches[0].replace(se,oe),t)||[])[0]))return n;h&&(t=t.parentNode),e=e.slice(s.shift().value.length)}for(i=K.needsContext.test(e)?0:s.length;i--&&(o=s[i],!a.relative[c=o.type]);)if((l=a.find[c])&&(r=l(o.matches[0].replace(se,oe),ie.test(s[0].type)&&we(t.parentNode)||t))){if(s.splice(i,1),!(e=r.length&&xe(s)))return L.apply(n,r),n;break}}return(h||d(e,f))(r,t,!b,n,!t||ie.test(e)&&we(t.parentNode)||t),n},o.sortStable=E.split("").sort(I).join("")===E,o.detectDuplicates=!!g,m(),o.sortDetached=pe((function(e){return 1&e.compareDocumentPosition(v.createElement("fieldset"))})),pe((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||ge("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),o.attributes&&pe((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ge("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),pe((function(e){return null==e.getAttribute("disabled")}))||ge(B,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}));var Oe=i.Sizzle;de.noConflict=function(){return i.Sizzle===de&&(i.Sizzle=Oe),de},void 0===(r=function(){return de}.call(t,n,t,e))||(e.exports=r)}(window)},function(e,t,n){"use strict";(function(e){n(115),n(54),n(405);var r=n(0);n.d(t,"e",(function(){return r.e})),n.d(t,"a",(function(){return r.a})),n.d(t,"b",(function(){return r.b})),n.d(t,"c",(function(){return r.c})),n.d(t,"d",(function(){return r.d})),e.$build=r.f.$build,e.$iq=r.f.$iq,e.$msg=r.f.$msg,e.$pres=r.f.$pres,e.Strophe=r.f.Strophe}).call(this,n(11))},function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",i="day",s="week",o="month",a="quarter",c="year",l=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,u=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},h={s:d,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+d(r,2,"0")+":"+d(i,2,"0")},m:function(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,o),i=t-r<0,s=e.clone().add(n+(i?-1:1),o);return Number(-(n+(t-r)/(i?r-s:s-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(l){return{M:o,y:c,w:s,d:i,D:"date",h:r,m:n,s:t,ms:e,Q:a}[l]||String(l||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},f={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p="en",g={};g[p]=f;var m=function(e){return e instanceof y},v=function(e,t,n){var r;if(!e)return p;if("string"==typeof e)g[e]&&(r=e),t&&(g[e]=t,r=e);else{var i=e.name;g[i]=e,r=i}return!n&&r&&(p=r),r||!n&&p},_=function(e,t){if(m(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new y(n)},b=h;b.l=v,b.i=m,b.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var y=function(){function d(e){this.$L=this.$L||v(e.locale,null,!0),this.parse(e)}var h=d.prototype;return h.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(l);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(t)}(e),this.init()},h.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},h.$utils=function(){return b},h.isValid=function(){return!("Invalid Date"===this.$d.toString())},h.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},h.isAfter=function(e,t){return _(e)<this.startOf(t)},h.isBefore=function(e,t){return this.endOf(t)<_(e)},h.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},h.year=function(e){return this.$g(e,"$y",c)},h.month=function(e){return this.$g(e,"$M",o)},h.day=function(e){return this.$g(e,"$W",i)},h.date=function(e){return this.$g(e,"$D","date")},h.hour=function(e){return this.$g(e,"$H",r)},h.minute=function(e){return this.$g(e,"$m",n)},h.second=function(e){return this.$g(e,"$s",t)},h.millisecond=function(t){return this.$g(t,"$ms",e)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(e,a){var l=this,u=!!b.u(a)||a,d=b.p(e),h=function(e,t){var n=b.w(l.$u?Date.UTC(l.$y,t,e):new Date(l.$y,t,e),l);return u?n:n.endOf(i)},f=function(e,t){return b.w(l.toDate()[e].apply(l.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(t)),l)},p=this.$W,g=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(d){case c:return u?h(1,0):h(31,11);case o:return u?h(1,g):h(0,g+1);case s:var _=this.$locale().weekStart||0,y=(p<_?p+7:p)-_;return h(u?m-y:m+(6-y),g);case i:case"date":return f(v+"Hours",0);case r:return f(v+"Minutes",1);case n:return f(v+"Seconds",2);case t:return f(v+"Milliseconds",3);default:return this.clone()}},h.endOf=function(e){return this.startOf(e,!1)},h.$set=function(s,a){var l,u=b.p(s),d="set"+(this.$u?"UTC":""),h=(l={},l.day=d+"Date",l.date=d+"Date",l[o]=d+"Month",l[c]=d+"FullYear",l[r]=d+"Hours",l[n]=d+"Minutes",l[t]=d+"Seconds",l[e]=d+"Milliseconds",l)[u],f=u===i?this.$D+(a-this.$W):a;if(u===o||u===c){var p=this.clone().set("date",1);p.$d[h](f),p.init(),this.$d=p.set("date",Math.min(this.$D,p.daysInMonth())).$d}else h&&this.$d[h](f);return this.init(),this},h.set=function(e,t){return this.clone().$set(e,t)},h.get=function(e){return this[b.p(e)]()},h.add=function(e,a){var l,u=this;e=Number(e);var d=b.p(a),h=function(t){var n=_(u);return b.w(n.date(n.date()+Math.round(t*e)),u)};if(d===o)return this.set(o,this.$M+e);if(d===c)return this.set(c,this.$y+e);if(d===i)return h(1);if(d===s)return h(7);var f=(l={},l[n]=6e4,l[r]=36e5,l[t]=1e3,l)[d]||1,p=this.$d.getTime()+e*f;return b.w(p,this)},h.subtract=function(e,t){return this.add(-1*e,t)},h.format=function(e){var t=this;if(!this.isValid())return"Invalid Date";var n=e||"YYYY-MM-DDTHH:mm:ssZ",r=b.z(this),i=this.$locale(),s=this.$H,o=this.$m,a=this.$M,c=i.weekdays,l=i.months,d=function(e,r,i,s){return e&&(e[r]||e(t,n))||i[r].substr(0,s)},h=function(e){return b.s(s%12||12,e,"0")},f=i.meridiem||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r},p={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:b.s(a+1,2,"0"),MMM:d(i.monthsShort,a,l,3),MMMM:d(l,a),D:this.$D,DD:b.s(this.$D,2,"0"),d:String(this.$W),dd:d(i.weekdaysMin,this.$W,c,2),ddd:d(i.weekdaysShort,this.$W,c,3),dddd:c[this.$W],H:String(s),HH:b.s(s,2,"0"),h:h(1),hh:h(2),a:f(s,o,!0),A:f(s,o,!1),m:String(o),mm:b.s(o,2,"0"),s:String(this.$s),ss:b.s(this.$s,2,"0"),SSS:b.s(this.$ms,3,"0"),Z:r};return n.replace(u,(function(e,t){return t||p[e]||r.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(e,i,l){var u,d=b.p(i),h=_(e),f=6e4*(h.utcOffset()-this.utcOffset()),p=this-h,g=b.m(this,h);return g=(u={},u[c]=g/12,u[o]=g,u[a]=g/3,u[s]=(p-f)/6048e5,u.day=(p-f)/864e5,u[r]=p/36e5,u[n]=p/6e4,u[t]=p/1e3,u)[d]||p,l?g:b.a(g)},h.daysInMonth=function(){return this.endOf(o).$D},h.$locale=function(){return g[this.$L]},h.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=v(e,t,!0);return r&&(n.$L=r),n},h.clone=function(){return b.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},d}();return _.prototype=y.prototype,_.extend=function(e,t){return e(t,y,_),_},_.locale=v,_.isDayjs=m,_.unix=function(e){return _(1e3*e)},_.en=g[p],_.Ls=g,_}()},function(e,t,n){"use strict";var r=n(49),i="object"==typeof self&&self&&self.Object===Object&&self,s=r.a||i||Function("return this")();t.a=s},,function(e,t,n){"use strict";function r(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;var n,r,o,l,u,d,h,f,p=new Array(80),g=1732584193,m=-271733879,v=-1732584194,_=271733878,b=-1009589776;for(n=0;n<e.length;n+=16){for(l=g,u=m,d=v,h=_,f=b,r=0;r<80;r++)p[r]=r<16?e[n+r]:c(p[r-3]^p[r-8]^p[r-14]^p[r-16],1),o=a(a(c(g,5),i(r,m,v,_)),a(a(b,p[r]),s(r))),b=_,_=v,v=c(m,30),m=g,g=o;g=a(g,l),m=a(m,u),v=a(v,d),_=a(_,h),b=a(b,f)}return[g,m,v,_,b]}function i(e,t,n,r){return e<20?t&n|~t&r:e<40?t^n^r:e<60?t&n|t&r|n&r:t^n^r}function s(e){return e<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514}function o(e,t){var n=l(e);n.length>16&&(n=r(n,8*e.length));for(var i=new Array(16),s=new Array(16),o=0;o<16;o++)i[o]=909522486^n[o],s[o]=1549556828^n[o];var a=r(i.concat(l(t)),512+8*t.length);return r(s.concat(a),672)}function a(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function c(e,t){return e<<t|e>>>32-t}function l(e){for(var t=[],n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<24-n%32;return t}function u(e){for(var t,n,r="",i=0;i<4*e.length;i+=3)for(t=(e[i>>2]>>8*(3-i%4)&255)<<16|(e[i+1>>2]>>8*(3-(i+1)%4)&255)<<8|e[i+2>>2]>>8*(3-(i+2)%4)&255,n=0;n<4;n++)8*i+6*n>32*e.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t>>6*(3-n)&63);return r}function d(e){for(var t="",n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>24-n%32&255);return t}n.d(t,"a",(function(){return h}));const h={b64_hmac_sha1:function(e,t){return u(o(e,t))},b64_sha1:function(e){return u(r(l(e),8*e.length))},binb2str:d,core_hmac_sha1:o,str_hmac_sha1:function(e,t){return d(o(e,t))},str_sha1:function(e){return d(r(l(e),8*e.length))}}},function(e,t,n){var r=n(408),i=n(113),s=/[&<>"']/g,o=RegExp(s.source);e.exports=function(e){return(e=i(e))&&o.test(e)?e.replace(s,r):e}},function(e,t,n){"use strict";const r=n(288),i=n(289);e.exports={atob:r,btoa:i}},function(e,t,n){var r=n(72),i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")();e.exports=s},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";(function(e){var r=n(49),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=i&&"object"==typeof e&&e&&!e.nodeType&&e,o=s&&s.exports===i&&r.a.process,a=function(){try{var e=s&&s.require&&s.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(e){}}();t.a=a}).call(this,n(55)(e))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));!function(){let t=e.WebSocket;if(void 0===t)try{t=n(286)}catch(e){throw new Error('You must install the "ws" package to use Strophe in nodejs.')}}();const r=function(){let t=e.DOMParser;if(void 0===t)try{t=n(37).DOMParser}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}return t}();function i(){if("undefined"==typeof document)try{return(new(0,n(37).DOMImplementation)).createDocument("jabber:client","strophe",null)}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}if(void 0===document.implementation.createDocument||document.implementation.createDocument&&document.documentMode&&document.documentMode<10){const e=function(){const e=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(let t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}();return e.appendChild(e.createElement("strophe")),e}return document.implementation.createDocument("jabber:client","strophe",null)}}).call(this,n(11))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));!function(){let t=e.WebSocket;if(void 0===t)try{t=n(411)}catch(e){throw new Error('You must install the "ws" package to use Strophe in nodejs.')}}();const r=function(){let t=e.DOMParser;if(void 0===t)try{t=n(37).DOMParser}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}return t}();function i(){if("undefined"==typeof document)try{return(new(0,n(37).DOMImplementation)).createDocument("jabber:client","strophe",null)}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}if(void 0===document.implementation.createDocument||document.implementation.createDocument&&document.documentMode&&document.documentMode<10){const e=function(){const e=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(let t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}();return e.appendChild(e.createElement("strophe")),e}return document.implementation.createDocument("jabber:client","strophe",null)}}).call(this,n(11))},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){!function e(t,n,r){function i(o,a){if(!n[o]){if(!t[o]){if(s)return s(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){return i(t[o][1][e]||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var s=!1,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){var r=e("cssfilter").FilterCSS,i=e("cssfilter").getDefaultWhiteList,s=e("./util");function o(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}var a=new r;function c(e){return e.replace(l,"<").replace(u,">")}var l=/</g,u=/>/g,d=/"/g,h=/"/g,f=/&#([a-zA-Z0-9]*);?/gim,p=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,_=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(d,""")}function y(e){return e.replace(h,'"')}function w(e){return e.replace(f,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function S(e){return e.replace(p,":").replace(g," ")}function x(e){for(var t="",n=0,r=e.length;n<r;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return s.trim(t)}function E(e){return e=x(e=S(e=w(e=y(e))))}function A(e){return e=c(e=b(e))}var C=/<!--[\s\S]*?-->/g;n.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},n.getDefaultWhiteList=o,n.onTag=function(e,t,n){},n.onIgnoreTag=function(e,t,n){},n.onTagAttr=function(e,t,n){},n.onIgnoreTagAttr=function(e,t,n){},n.safeAttrValue=function(e,t,n,r){if(n=E(n),"href"===t||"src"===t){if("#"===(n=s.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(n))return""}else if("style"===t){if(v.lastIndex=0,v.test(n))return"";if(_.lastIndex=0,_.test(n)&&(m.lastIndex=0,m.test(n)))return"";!1!==r&&(n=(r=r||a).process(n))}return n=A(n)},n.escapeHtml=c,n.escapeQuote=b,n.unescapeQuote=y,n.escapeHtmlEntities=w,n.escapeDangerHtml5Entities=S,n.clearNonPrintableCharacter=x,n.friendlyAttrValue=E,n.escapeAttrValue=A,n.onIgnoreTagStripAll=function(){return""},n.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),r=[],i=!1;return{onIgnoreTag:function(o,a,c){if(function(t){return!!n||-1!==s.indexOf(e,t)}(o)){if(c.isClosing){var l="[/removed]",u=c.position+l.length;return r.push([!1!==i?i:c.position,u]),i=!1,l}return i||(i=c.position),"[removed]"}return t(o,a,c)},remove:function(e){var t="",n=0;return s.forEach(r,(function(r){t+=e.slice(n,r[0]),n=r[1]})),t+=e.slice(n)}}},n.stripCommentTag=function(e){return e.replace(C,"")},n.stripBlankChar=function(e){var t=e.split("");return(t=t.filter((function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}))).join("")},n.cssFilter=a,n.getDefaultCSSWhiteList=i},{"./util":4,cssfilter:8}],2:[function(e,t,n){var r=e("./default"),i=e("./parser"),s=e("./xss");function o(e,t){return new s(t).process(e)}for(var a in(n=t.exports=o).filterXSS=o,n.FilterXSS=s,r)n[a]=r[a];for(var a in i)n[a]=i[a];"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)},{"./default":1,"./parser":3,"./xss":5}],3:[function(e,t,n){var r=e("./util");function i(e){var t=r.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else n=e.slice(1,t+1);return"/"===(n=r.trim(n).toLowerCase()).slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function s(e){return"</"===e.slice(0,2)}var o=/[^a-zA-Z0-9_:\.\-]/gim;function a(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function l(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}n.parseTag=function(e,t,n){"use strict";var r="",o=0,a=!1,c=!1,l=0,u=e.length,d="",h="";for(l=0;l<u;l++){var f=e.charAt(l);if(!1===a){if("<"===f){a=l;continue}}else if(!1===c){if("<"===f){r+=n(e.slice(o,l)),a=l,o=l;continue}if(">"===f){r+=n(e.slice(o,a)),d=i(h=e.slice(a,l+1)),r+=t(a,r.length,d,h,s(h)),o=l+1,a=!1;continue}if(('"'===f||"'"===f)&&"="===e.charAt(l-1)){c=f;continue}}else if(f===c){c=!1;continue}}return o<e.length&&(r+=n(e.substr(o))),r},n.parseAttr=function(e,t){"use strict";var n=0,i=[],s=!1,u=e.length;function d(e,n){if(!((e=(e=r.trim(e)).replace(o,"").toLowerCase()).length<1)){var s=t(e,n||"");s&&i.push(s)}}for(var h=0;h<u;h++){var f,p=e.charAt(h);if(!1!==s||"="!==p)if(!1===s||h!==n||'"'!==p&&"'"!==p||"="!==e.charAt(h-1))if(/\s|\n|\t/.test(p)){if(e=e.replace(/\s|\n|\t/g," "),!1===s){if(-1===(f=a(e,h))){d(r.trim(e.slice(n,h))),s=!1,n=h+1;continue}h=f-1;continue}if(-1===(f=c(e,h-1))){d(s,l(r.trim(e.slice(n,h)))),s=!1,n=h+1;continue}}else;else{if(-1===(f=e.indexOf(p,h+1)))break;d(s,r.trim(e.slice(n+1,f))),s=!1,n=(h=f)+1}else s=e.slice(n,h),n=h+1}return n<e.length&&(!1===s?d(e.slice(n)):d(s,l(r.trim(e.slice(n))))),r.trim(i.join(" "))}},{"./util":4}],4:[function(e,t,n){t.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}}},{}],5:[function(e,t,n){var r=e("cssfilter").FilterCSS,i=e("./default"),s=e("./parser"),o=s.parseTag,a=s.parseAttr,c=e("./util");function l(e){return null==e}function u(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=i.onIgnoreTagStripAll),e.whiteList=e.whiteList||i.whiteList,e.onTag=e.onTag||i.onTag,e.onTagAttr=e.onTagAttr||i.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||i.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||i.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||i.safeAttrValue,e.escapeHtml=e.escapeHtml||i.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new r(e.css))}u.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onTag,s=t.onIgnoreTag,u=t.onTagAttr,d=t.onIgnoreTagAttr,h=t.safeAttrValue,f=t.escapeHtml,p=this.cssFilter;t.stripBlankChar&&(e=i.stripBlankChar(e)),t.allowCommentTag||(e=i.stripCommentTag(e));var g=!1;if(t.stripIgnoreTagBody){g=i.StripTagBody(t.stripIgnoreTagBody,s);s=g.onIgnoreTag}var m=o(e,(function(e,t,i,o,g){var m,v={sourcePosition:e,position:t,isClosing:g,isWhite:n.hasOwnProperty(i)};if(!l(m=r(i,o,v)))return m;if(v.isWhite){if(v.isClosing)return"</"+i+">";var _=function(e){var t=c.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=c.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=c.trim(e.slice(0,-1))),{html:e,closing:n}}(o),b=n[i],y=a(_.html,(function(e,t){var n,r=-1!==c.indexOf(b,e);return l(n=u(i,e,t,r))?r?(t=h(i,e,t,p))?e+'="'+t+'"':e:l(n=d(i,e,t,r))?void 0:n:n}));o="<"+i;return y&&(o+=" "+y),_.closing&&(o+=" /"),o+=">"}return l(m=s(i,o,v))?f(o):m}),f);return g&&(m=g.remove(m)),m},t.exports=u},{"./default":1,"./parser":3,"./util":4,cssfilter:8}],6:[function(e,t,n){var r=e("./default"),i=e("./parser");e("./util");function s(e){return null==e}function o(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||r.whiteList,e.onAttr=e.onAttr||r.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||r.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||r.safeAttrValue,this.options=e}o.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onAttr,o=t.onIgnoreAttr,a=t.safeAttrValue;return i(e,(function(e,t,i,c,l){var u=n[i],d=!1;if(!0===u?d=u:"function"==typeof u?d=u(c):u instanceof RegExp&&(d=u.test(c)),!0!==d&&(d=!1),c=a(i,c)){var h,f={position:t,sourcePosition:e,source:l,isWhite:d};return d?s(h=r(i,c,f))?i+":"+c:h:s(h=o(i,c,f))?void 0:h}}))},t.exports=o},{"./default":7,"./parser":9,"./util":10}],7:[function(e,t,n){function r(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var i=/javascript\s*\:/gim;n.whiteList=r(),n.getDefaultWhiteList=r,n.onAttr=function(e,t,n){},n.onIgnoreAttr=function(e,t,n){},n.safeAttrValue=function(e,t){return i.test(t)?"":t}},{}],8:[function(e,t,n){var r=e("./default"),i=e("./css");for(var s in(n=t.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,r)n[s]=r[s];"undefined"!=typeof window&&(window.filterCSS=t.exports)},{"./css":6,"./default":7}],9:[function(e,t,n){var r=e("./util");t.exports=function(e,t){";"!==(e=r.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,s=0,o=0,a="";function c(){if(!i){var n=r.trim(e.slice(s,o)),c=n.indexOf(":");if(-1!==c){var l=r.trim(n.slice(0,c)),u=r.trim(n.slice(c+1));if(l){var d=t(s,a.length,l,u,n);d&&(a+=d+"; ")}}}s=o+1}for(;o<n;o++){var l=e[o];if("/"===l&&"*"===e[o+1]){var u=e.indexOf("*/",o+2);if(-1===u)break;s=(o=u+1)+1,i=!1}else"("===l?i=!0:")"===l?i=!1:";"===l?i||c():"\n"===l&&c()}return r.trim(a)}},{"./util":10}],10:[function(e,t,n){t.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},{}]},{},[2]),t.filterXSS=filterXSS,t.filterCSS=filterCSS},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";(function(e){var r=n(5),i=n(120),s="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=s&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===s?r.a.Buffer:void 0,c=(a?a.isBuffer:void 0)||i.a;t.a=c}).call(this,n(55)(e))},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(e){n(410),n(119),n(412);var r=n(1);n.d(t,"b",(function(){return r.c})),n.d(t,"a",(function(){return r.b})),e.$build=r.d.$build,e.$iq=r.d.$iq,e.$msg=r.d.$msg,e.$pres=r.d.$pres,e.Strophe=r.d.Strophe}).call(this,n(11))},function(e,t,n){var r=n(39),i=n(293),s=n(294),o=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?i(e):s(e)}},function(e,t,n){var r=n(311),i=n(314);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},function(e,t,n){(function(t){e.exports=function e(t,n,r){function i(o,a){if(!n[o]){if(!t[o]){if(s)return s(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,(function(e){var n=t[o][1][e];return i(n||e)}),l,l.exports,e,t,n,r)}return n[o].exports}for(var s=!1,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,n,r){(function(e){"use strict";var t,r,i=e.MutationObserver||e.WebKitMutationObserver;if(i){var s=0,o=new i(u),a=e.document.createTextNode("");o.observe(a,{characterData:!0}),t=function(){a.data=s=++s%2}}else if(e.setImmediate||void 0===e.MessageChannel)t="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var c=new e.MessageChannel;c.port1.onmessage=u,t=function(){c.port2.postMessage(0)}}var l=[];function u(){var e,t;r=!0;for(var n=l.length;n;){for(t=l,l=[],e=-1;++e<n;)t[e]();n=l.length}r=!1}n.exports=function(e){1!==l.push(e)||r||t()}}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function i(){}var s={},o=["REJECTED"],a=["FULFILLED"],c=["PENDING"];function l(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=c,this.queue=[],this.outcome=void 0,e!==i&&f(this,e)}function u(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function d(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return s.reject(e,t)}r===e?s.reject(e,new TypeError("Cannot resolve promise with itself")):s.resolve(e,r)}))}function h(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function f(e,t){var n=!1;function r(t){n||(n=!0,s.reject(e,t))}function i(t){n||(n=!0,s.resolve(e,t))}var o=p((function(){t(i,r)}));"error"===o.status&&r(o.value)}function p(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=l,l.prototype.catch=function(e){return this.then(null,e)},l.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===o)return this;var n=new this.constructor(i);return this.state!==c?d(n,this.state===a?e:t,this.outcome):this.queue.push(new u(n,e,t)),n},u.prototype.callFulfilled=function(e){s.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){d(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){s.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){d(this.promise,this.onRejected,e)},s.resolve=function(e,t){var n=p(h,t);if("error"===n.status)return s.reject(e,n.value);var r=n.value;if(r)f(e,r);else{e.state=a,e.outcome=t;for(var i=-1,o=e.queue.length;++i<o;)e.queue[i].callFulfilled(t)}return e},s.reject=function(e,t){e.state=o,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},l.resolve=function(e){return e instanceof this?e:s.resolve(new this(i),e)},l.reject=function(e){var t=new this(i);return s.reject(t,e)},l.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var o=new Array(n),a=0,c=-1,l=new this(i);++c<n;)u(e[c],c);return l;function u(e,i){t.resolve(e).then((function(e){o[i]=e,++a!==n||r||(r=!0,s.resolve(l,o))}),(function(e){r||(r=!0,s.reject(l,e))}))}},l.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var o,a=-1,c=new this(i);++a<n;)o=e[a],t.resolve(o).then((function(e){r||(r=!0,s.resolve(c,e))}),(function(e){r||(r=!0,s.reject(c,e))}));return c}},{1:1}],3:[function(e,n,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function s(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(i){if("TypeError"!==i.name)throw i;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var o=Promise;function a(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function c(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function l(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var d=void 0,h={},f=Object.prototype.toString;function p(e){return"boolean"==typeof d?o.resolve(d):function(e){return new o((function(t){var n=e.transaction("local-forage-detect-blob-support","readwrite"),r=s([""]);n.objectStore("local-forage-detect-blob-support").put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return d=e}))}function g(e){var t=h[e.name],n={};n.promise=new o((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function m(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function v(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function _(e,t){return new o((function(n,r){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);g(e),e.db.close()}var s=[e.name];t&&s.push(e.version);var o=i.open.apply(i,s);t&&(o.onupgradeneeded=function(t){var n=o.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore("local-forage-detect-blob-support")}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),o.onerror=function(e){e.preventDefault(),r(o.error)},o.onsuccess=function(){n(o.result),m(e)}}))}function b(e){return _(e,!1)}function y(e){return _(e,!0)}function w(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,i=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||n){if(n){var s=e.db.version+1;s>e.version&&(e.version=s)}return!0}return!1}function S(e){return s([function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=0;i<t;i++)r[i]=e.charCodeAt(i);return n}(atob(e.data))],{type:e.type})}function x(e){return e&&e.__local_forage_encoded_blob}function E(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return c(n,e,e),n}function A(e,t,n,r){void 0===r&&(r=1);try{var i=e.db.transaction(e.storeName,t);n(null,i)}catch(i){if(r>0&&(!e.db||"InvalidStateError"===i.name||"NotFoundError"===i.name))return o.resolve().then((function(){if(!e.db||"NotFoundError"===i.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),y(e)})).then((function(){return function(e){g(e);for(var t=h[e.name],n=t.forages,r=0;r<n.length;r++){var i=n[r];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,b(e).then((function(t){return e.db=t,w(e)?y(e):t})).then((function(r){e.db=t.db=r;for(var i=0;i<n.length;i++)n[i]._dbInfo.db=r})).catch((function(t){throw v(e,t),t}))}(e).then((function(){A(e,t,n,r-1)}))})).catch(n);n(i)}}var C={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var i=h[n.name];i||(i={forages:[],db:null,dbReady:null,deferredOperations:[]},h[n.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=E);var s=[];function a(){return o.resolve()}for(var c=0;c<i.forages.length;c++){var l=i.forages[c];l!==t&&s.push(l._initReady().catch(a))}var u=i.forages.slice(0);return o.all(s).then((function(){return n.db=i.db,b(n)})).then((function(e){return n.db=e,w(n,t._defaultConfig.version)?y(n):e})).then((function(e){n.db=i.db=e,t._dbInfo=n;for(var r=0;r<u.length;r++){var s=u[r];s!==t&&(s._dbInfo.db=n.db,s._dbInfo.version=n.version)}}))},_support:function(){try{if(!i||!i.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new o((function(t,r){n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,s){if(i)return r(i);try{var o=s.objectStore(n._dbInfo.storeName).openCursor(),a=1;o.onsuccess=function(){var n=o.result;if(n){var r=n.value;x(r)&&(r=S(r));var i=e(r,n.key,a++);void 0!==i?t(i):n.continue()}else t()},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new o((function(t,r){n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,s){if(i)return r(i);try{var o=s.objectStore(n._dbInfo.storeName).get(e);o.onsuccess=function(){var e=o.result;void 0===e&&(e=null),x(e)&&(e=S(e)),t(e)},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var i=new o((function(n,i){var s;r.ready().then((function(){return s=r._dbInfo,"[object Blob]"===f.call(t)?p(s.db).then((function(e){return e?t:(n=t,new o((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){A(r._dbInfo,"readwrite",(function(s,o){if(s)return i(s);try{var a=o.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var c=a.put(t,e);o.oncomplete=function(){void 0===t&&(t=null),n(t)},o.onabort=o.onerror=function(){var e=c.error?c.error:c.transaction.error;i(e)}}catch(e){i(e)}}))})).catch(i)}));return a(i,n),i},removeItem:function(e,t){var n=this;e=l(e);var r=new o((function(t,r){n.ready().then((function(){A(n._dbInfo,"readwrite",(function(i,s){if(i)return r(i);try{var o=s.objectStore(n._dbInfo.storeName).delete(e);s.oncomplete=function(){t()},s.onerror=function(){r(o.error)},s.onabort=function(){var e=o.error?o.error:o.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},clear:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){A(t._dbInfo,"readwrite",(function(r,i){if(r)return n(r);try{var s=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=s.error?s.error:s.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},length:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){A(t._dbInfo,"readonly",(function(r,i){if(r)return n(r);try{var s=i.objectStore(t._dbInfo.storeName).count();s.onsuccess=function(){e(s.result)},s.onerror=function(){n(s.error)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},key:function(e,t){var n=this,r=new o((function(t,r){e<0?t(null):n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,s){if(i)return r(i);try{var o=s.objectStore(n._dbInfo.storeName),a=!1,c=o.openKeyCursor();c.onsuccess=function(){var n=c.result;n?0===e||a?t(n.key):(a=!0,n.advance(e)):t(null)},c.onerror=function(){r(c.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},keys:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){A(t._dbInfo,"readonly",(function(r,i){if(r)return n(r);try{var s=i.objectStore(t._dbInfo.storeName).openKeyCursor(),o=[];s.onsuccess=function(){var t=s.result;t?(o.push(t.key),t.continue()):e(o)},s.onerror=function(){n(s.error)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,s=this;if(e.name){var c=e.name===n.name&&s._dbInfo.db,l=c?o.resolve(s._dbInfo.db):b(e).then((function(t){var n=h[e.name],r=n.forages;n.db=t;for(var i=0;i<r.length;i++)r[i]._dbInfo.db=t;return t}));r=e.storeName?l.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;g(e);var r=h[e.name],s=r.forages;t.close();for(var a=0;a<s.length;a++){var c=s[a];c._dbInfo.db=null,c._dbInfo.version=n}return new o((function(t,r){var s=i.open(e.name,n);s.onerror=function(e){s.result.close(),r(e)},s.onupgradeneeded=function(){s.result.deleteObjectStore(e.storeName)},s.onsuccess=function(){var e=s.result;e.close(),t(e)}})).then((function(e){r.db=e;for(var t=0;t<s.length;t++){var n=s[t];n._dbInfo.db=e,m(n._dbInfo)}})).catch((function(t){throw(v(e,t)||o.resolve()).catch((function(){})),t}))}})):l.then((function(t){g(e);var n=h[e.name],r=n.forages;t.close();for(var s=0;s<r.length;s++)r[s]._dbInfo.db=null;return new o((function(t,n){var r=i.deleteDatabase(e.name);r.onerror=r.onblocked=function(e){var t=r.result;t&&t.close(),n(e)},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}})).then((function(e){n.db=e;for(var t=0;t<r.length;t++)m(r[t]._dbInfo)})).catch((function(t){throw(v(e,t)||o.resolve()).catch((function(){})),t}))}))}else r=o.reject("Invalid arguments");return a(r,t),r}},j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=/^~~local_forage_type~([^~]+)~/,O="__lfsc__:".length,k=O+"arbf".length,N=Object.prototype.toString;function I(e){var t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var l=new ArrayBuffer(o),u=new Uint8Array(l);for(t=0;t<a;t+=4)n=j.indexOf(e[t]),r=j.indexOf(e[t+1]),i=j.indexOf(e[t+2]),s=j.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&s;return l}function M(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=j[n[t]>>2],r+=j[(3&n[t])<<4|n[t+1]>>4],r+=j[(15&n[t+1])<<2|n[t+2]>>6],r+=j[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var R={serialize:function(e,t){var n="";if(e&&(n=N.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===N.call(e.buffer))){var r,i="__lfsc__:";e instanceof ArrayBuffer?(r=e,i+="arbf"):(r=e.buffer,"[object Int8Array]"===n?i+="si08":"[object Uint8Array]"===n?i+="ui08":"[object Uint8ClampedArray]"===n?i+="uic8":"[object Int16Array]"===n?i+="si16":"[object Uint16Array]"===n?i+="ur16":"[object Int32Array]"===n?i+="si32":"[object Uint32Array]"===n?i+="ui32":"[object Float32Array]"===n?i+="fl32":"[object Float64Array]"===n?i+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(i+M(r))}else if("[object Blob]"===n){var s=new FileReader;s.onload=function(){var n="~~local_forage_type~"+e.type+"~"+M(this.result);t("__lfsc__:blob"+n)},s.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if("__lfsc__:"!==e.substring(0,O))return JSON.parse(e);var t,n=e.substring(k),r=e.substring(O,k);if("blob"===r&&T.test(n)){var i=n.match(T);t=i[1],n=n.substring(i[0].length)}var o=I(n);switch(r){case"arbf":return o;case"blob":return s([o],{type:t});case"si08":return new Int8Array(o);case"ui08":return new Uint8Array(o);case"uic8":return new Uint8ClampedArray(o);case"si16":return new Int16Array(o);case"ur16":return new Uint16Array(o);case"si32":return new Int32Array(o);case"ui32":return new Uint32Array(o);case"fl32":return new Float32Array(o);case"fl64":return new Float64Array(o);default:throw new Error("Unkown type: "+r)}},stringToBuffer:I,bufferToString:M};function D(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function P(e,t,n,r,i,s){e.executeSql(n,r,i,(function(e,o){o.code===o.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,a){a.rows.length?s(e,o):D(e,t,(function(){e.executeSql(n,r,i,s)}),s)}),s):s(e,o)}),s)}function L(e,t,n,r){var i=this;e=l(e);var s=new o((function(s,o){i.ready().then((function(){void 0===t&&(t=null);var a=t,c=i._dbInfo;c.serializer.serialize(t,(function(t,l){l?o(l):c.db.transaction((function(n){P(n,c,"INSERT OR REPLACE INTO "+c.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){s(a)}),(function(e,t){o(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void s(L.apply(i,[e,a,n,r-1]));o(t)}}))}))})).catch(o)}));return a(s,n),s}function z(e){return new o((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var i=[],s=0;s<r.rows.length;s++)i.push(r.rows.item(s).name);t({db:e,storeNames:i})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var F={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var i=new o((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(i){D(i,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=R,i},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new o((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT * FROM "+i.storeName,[],(function(n,r){for(var s=r.rows,o=s.length,a=0;a<o;a++){var c=s.item(a),l=c.value;if(l&&(l=i.serializer.deserialize(l)),void 0!==(l=e(l,c.key,a+1)))return void t(l)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new o((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT * FROM "+i.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=i.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},setItem:function(e,t,n){return L.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=l(e);var r=new o((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"DELETE FROM "+i.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},clear:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},length:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},key:function(e,t){var n=this,r=new o((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT key FROM "+i.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},keys:function(e){var t=this,n=new o((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],i=0;i<n.rows.length;i++)r.push(n.rows.item(i).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,i=this;return a(r=e.name?new o((function(t){var r;r=e.name===n.name?i._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(z(r))})).then((function(e){return new o((function(t,n){e.db.transaction((function(r){function i(e){return new o((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var s=[],a=0,c=e.storeNames.length;a<c;a++)s.push(i(e.storeNames[a]));o.all(s).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):o.reject("Invalid arguments"),t),r}};function B(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}function q(){return!function(){try{return localStorage.setItem("_localforage_support_test",!0),localStorage.removeItem("_localforage_support_test"),!1}catch(e){return!0}}()||localStorage.length>0}var H={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=B(e,this._defaultConfig),q()?(this._dbInfo=t,t.serializer=R,o.resolve()):o.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,i=r.length,s=localStorage.length,o=1,a=0;a<s;a++){var c=localStorage.key(a);if(0===c.indexOf(r)){var l=localStorage.getItem(c);if(l&&(l=t.serializer.deserialize(l)),void 0!==(l=e(l,c.substring(i),o++)))return l}}}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return a(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var i=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new o((function(i,s){var o=r._dbInfo;o.serializer.serialize(t,(function(t,r){if(r)s(r);else try{localStorage.setItem(o.keyPrefix+e,t),i(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||s(e),s(e)}}))}))}));return a(i,n),i},removeItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return a(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return a(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return a(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return a(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],i=0;i<n;i++){var s=localStorage.key(i);0===s.indexOf(e.keyPrefix)&&r.push(s.substring(e.keyPrefix.length))}return r}));return a(n,e),n},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,i=this;return a(r=e.name?new o((function(t){e.storeName?t(B(e,i._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):o.reject("Invalid arguments"),t),r}},U=function(e,t){for(var n,r,i=e.length,s=0;s<i;){if((n=e[s])===(r=t)||"number"==typeof n&&"number"==typeof r&&isNaN(n)&&isNaN(r))return!0;s++}return!1},$=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},W={},V={},G={INDEXEDDB:C,WEBSQL:F,LOCALSTORAGE:H},J=[G.INDEXEDDB._driver,G.WEBSQL._driver,G.LOCALSTORAGE._driver],X=["dropInstance"],Q=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(X),Y={description:"",driver:J.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function K(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function Z(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&($(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var ee=new(function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),G)if(G.hasOwnProperty(n)){var r=G[n],i=r._driver;this[n]=i,W[i]||this.defineDriver(r)}this._defaultConfig=Z({},Y),this._config=Z({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new o((function(t,n){try{var r=e._driver,i=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(i);for(var s=Q.concat("_initStorage"),c=0,l=s.length;c<l;c++){var u=s[c];if((!U(X,u)||e[u])&&"function"!=typeof e[u])return void n(i)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=o.reject(t);return a(n,arguments[arguments.length-1]),n}},n=0,r=X.length;n<r;n++){var i=X[n];e[i]||(e[i]=t(i))}}();var d=function(n){W[r]&&console.info("Redefining LocalForage driver: "+r),W[r]=e,V[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(d,n):d(!!e._support):d(!0)}catch(e){n(e)}}));return c(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=W[e]?o.resolve(W[e]):o.reject(new Error("Driver not found."));return c(r,t,n),r},e.prototype.getSerializer=function(e){var t=o.resolve(R);return c(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return c(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;$(e)||(e=[e]);var i=this._getSupportedDrivers(e);function s(){r._config.driver=r.driver()}function a(e){return r._extend(e),s(),r._ready=r._initStorage(r._config),r._ready}var l=null!==this._driverSet?this._driverSet.catch((function(){return o.resolve()})):o.resolve();return this._driverSet=l.then((function(){var e=i[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,s(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var i=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(i).then(a).catch(n)}s();var c=new Error("No available storage method found.");return r._driverSet=o.reject(c),r._driverSet}()}}(i)}))})).catch((function(){s();var e=new Error("No available storage method found.");return r._driverSet=o.reject(e),r._driverSet})),c(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!V[e]},e.prototype._extend=function(e){Z(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var i=e[n];this.supports(i)&&t.push(i)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=Q.length;e<t;e++)K(this,Q[e])},e.prototype.createInstance=function(t){return new e(t)},e}());t.exports=ee},{3:3}]},{},[4])(4)}).call(this,n(11))},,function(e,t,n){var r=n(48),i=n(57);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},function(e,t,n){var r=n(74),i=n(78),s=n(25);e.exports=function(e){return s(e)?r(e):i(e)}},function(e,t,n){(function(n){var r,i,s;i=[],void 0===(s="function"==typeof(r=function(){"use strict";var e=void 0!==n?n:this||window,t=document,r=t.documentElement,i="body",s=e.BSN={},o=s.supports=[],a="data-toggle",c="delay",l="target",u="animation",d="onmouseleave"in t?["mouseenter","mouseleave"]:["mouseover","mouseout"],h="getAttribute",f="setAttribute",p="parentNode",g="length",m="style",v="push",_="active",b="left",y="top",w=/\b(top|bottom|left|right)+/,S=0,x="WebkitTransition"in r[m]||"Transition".toLowerCase()in r[m],E="WebkitTransition"in r[m]?"Webkit".toLowerCase()+"TransitionEnd":"Transition".toLowerCase()+"end",A="WebkitDuration"in r[m]?"Webkit".toLowerCase()+"TransitionDuration":"Transition".toLowerCase()+"Duration",C=function(e){e.focus?e.focus():e.setActive()},j=function(e,t){e.classList.add(t)},T=function(e,t){e.classList.remove(t)},O=function(e,t){return e.classList.contains(t)},k=function(e,t){return[].slice.call(e.getElementsByClassName(t))},N=function(e,n){return"object"==typeof e?e:(n||t).querySelector(e)},I=function(e,n){var r=n.charAt(0),i=n.substr(1);if("."===r){for(;e&&e!==t;e=e[p])if(null!==N(n,e[p])&&O(e,i))return e}else if("#"===r)for(;e&&e!==t;e=e[p])if(e.id===i)return e;return!1},M=function(e,t,n,r){r=r||!1,e.addEventListener(t,n,r)},R=function(e,t,n,r){r=r||!1,e.removeEventListener(t,n,r)},D=function(e,t,n,r){M(e,t,(function i(s){n(s),R(e,t,i,r)}),r)},P=!!function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});D(e,"testPassive",null,n)}catch(e){}return t}()&&{passive:!0},L=function(t){var n=x?e.getComputedStyle(t)[A]:0;return n="number"!=typeof(n=parseFloat(n))||isNaN(n)?0:1e3*n},z=function(e,t){var n=0;L(e)?D(e,E,(function(e){!n&&t(e),n=1})):setTimeout((function(){!n&&t(),n=1}),17)},F=function(e,t,n){var r=new CustomEvent(e+".bs."+t);r.relatedTarget=n,this.dispatchEvent(r)},B=function(n,s,o,a){var c,l,u,d,h,f,p=s.offsetWidth,g=s.offsetHeight,v=r.clientWidth||t[i].clientWidth,_=r.clientHeight||t[i].clientHeight,S=n.getBoundingClientRect(),x=a===t[i]?{y:e.pageYOffset||r.scrollTop,x:e.pageXOffset||r.scrollLeft}:{x:a.offsetLeft+a.scrollLeft,y:a.offsetTop+a.scrollTop},E=S.right-S[b],A=S.bottom-S.top,C=O(s,"popover"),j=N(".arrow",s),T=S.top+A/2-g/2<0,k=S[b]+E/2-p/2<0,I=S[b]+p/2+E/2>=v,M=S.top+g/2+A/2>=_,R=S.top-g<0,D=S[b]-p<0,P=S.top+g+A>=_,L=S[b]+p+E>=v;o="right"===(o=(o="bottom"===(o=(o=(o===b||"right"===o)&&D&&L?y:o)===y&&R?"bottom":o)&&P?y:o)===b&&D?"right":o)&&L?b:o,-1===s.className.indexOf(o)&&(s.className=s.className.replace(w,o)),h=j.offsetWidth,f=j.offsetHeight,o===b||"right"===o?(l=o===b?S[b]+x.x-p-(C?h:0):S[b]+x.x+E,T?(c=S.top+x.y,u=A/2-h):M?(c=S.top+x.y-g+A,u=g-A/2-h):(c=S.top+x.y-g/2+A/2,u=g/2-(C?.9*f:f/2))):o!==y&&"bottom"!==o||(c=o===y?S.top+x.y-g-(C?f:0):S.top+x.y+A,k?(l=0,d=S[b]+E/2-h):I?(l=v-1.01*p,d=p-(v-S[b])+E/2-h/2):(l=S[b]+x.x-p/2+E/2,d=p/2-(C?h:h/2))),s[m].top=c+"px",s[m][b]=l+"px",u&&(j[m].top=u+"px"),d&&(j[m][b]=d+"px")};s.version="2.0.27";var q=function(e){e=N(e);var t=this,n=I(e,".alert"),r=function(r){n=I(r[l],".alert"),(e=N('[data-dismiss="alert"]',n))&&n&&(e===r[l]||e.contains(r[l]))&&t.close()},i=function(){F.call(n,"closed","alert"),R(e,"click",r),n[p].removeChild(n)};this.close=function(){n&&e&&O(n,"show")&&(F.call(n,"close","alert"),T(n,"show"),n&&(O(n,"fade")?z(n,i):i()))},"Alert"in e||M(e,"click",r),e.Alert=t};o[v](["Alert",q,'[data-dismiss="alert"]']);var H=function(e){e=N(e);var n=!1,r="checked",i=function(t){var i="LABEL"===t[l].tagName?t[l]:"LABEL"===t[l][p].tagName?t[l][p]:null;if(i){var s=k(i[p],"btn"),o=i.getElementsByTagName("INPUT")[0];if(o){if("checkbox"===o.type&&(o[r]?(T(i,_),o[h](r),o.removeAttribute(r),o[r]=!1):(j(i,_),o[h](r),o[f](r,r),o[r]=!0),n||(n=!0,F.call(o,"change","button"),F.call(e,"change","button"))),"radio"===o.type&&!n&&(!o[r]||0===t.screenX&&0==t.screenY)){j(i,_),j(i,"focus"),o[f](r,r),o[r]=!0,F.call(o,"change","button"),F.call(e,"change","button"),n=!0;for(var a=0,c=s[g];a<c;a++){var u=s[a],d=u.getElementsByTagName("INPUT")[0];u!==i&&O(u,_)&&(T(u,_),d.removeAttribute(r),d[r]=!1,F.call(d,"change","button"))}}setTimeout((function(){n=!1}),50)}}},s=function(e){j(e[l][p],"focus")},o=function(e){T(e[l][p],"focus")};if(!("Button"in e)){M(e,"click",i),M(e,"keyup",(function(e){32===(e.which||e.keyCode)&&e[l]===t.activeElement&&i(e)})),M(e,"keydown",(function(e){32===(e.which||e.keyCode)&&e.preventDefault()}));for(var a=k(e,"btn"),c=0;c<a.length;c++){var u=a[c].getElementsByTagName("INPUT")[0];M(u,"focus",s),M(u,"blur",o)}}var d=k(e,"btn"),m=d[g];for(c=0;c<m;c++)!O(d[c],_)&&N("input:checked",d[c])&&j(d[c],_);e.Button=this};o[v](["Button",H,"["+a+'="buttons"]']);var U=function(e,t){e=N(e),t=t||{};var n,r,i,s,o,a=null,c=null,l=this,u=e[h]("data-parent"),d=function(e,t){F.call(e,"hide","collapse"),e.isAnimating=!0,e[m].height=e.scrollHeight+"px",T(e,"collapse"),T(e,"show"),j(e,"collapsing"),e.offsetWidth,e[m].height="0px",z(e,(function(){e.isAnimating=!1,e[f]("aria-expanded","false"),t[f]("aria-expanded","false"),T(e,"collapsing"),j(e,"collapse"),e[m].height="",F.call(e,"hidden","collapse")}))};this.toggle=function(e){e.preventDefault(),O(c,"show")?l.hide():l.show()},this.hide=function(){c.isAnimating||(d(c,e),j(e,"collapsed"))},this.show=function(){var t,i;a&&(n=N(".collapse.show",a),r=n&&(N('[data-target="#'+n.id+'"]',a)||N('[href="#'+n.id+'"]',a))),(!c.isAnimating||n&&!n.isAnimating)&&(r&&n!==c&&(d(n,r),j(r,"collapsed")),i=e,F.call(t=c,"show","collapse"),t.isAnimating=!0,j(t,"collapsing"),T(t,"collapse"),t[m].height=t.scrollHeight+"px",z(t,(function(){t.isAnimating=!1,t[f]("aria-expanded","true"),i[f]("aria-expanded","true"),T(t,"collapsing"),j(t,"collapse"),j(t,"show"),t[m].height="",F.call(t,"shown","collapse")})),T(e,"collapsed"))},"Collapse"in e||M(e,"click",l.toggle),i=e.href&&e[h]("href"),s=e[h]("data-target"),o=i||s&&"#"===s.charAt(0)&&s,(c=o&&N(o)).isAnimating=!1,a=N(t.parent)||u&&I(e,u),e.Collapse=l};o[v](["Collapse",U,"["+a+'="collapse"]']);var $=function(e,n){e=N(e),this.persist=!0===n||"true"===e[h]("data-persist")||!1;var r=this,i=e[p],s=null,o=N(".dropdown-menu",i),c=function(){for(var e=o.children,t=[],n=0;n<e[g];n++)e[n].children[g]&&"A"===e[n].children[0].tagName&&t[v](e[n].children[0]),"A"===e[n].tagName&&t[v](e[n]);return t}(),u=function(e){(e.href&&"#"===e.href.slice(-1)||e[p]&&e[p].href&&"#"===e[p].href.slice(-1))&&this.preventDefault()},d=function(){var n=e.open?M:R;n(t,"click",m),n(t,"keydown",b),n(t,"keyup",y),n(t,"focus",m,!0)},m=function(t){var n=t[l],i=n&&(n[h](a)||n[p]&&h in n[p]&&n[p][h](a));("focus"!==t.type||n!==e&&n!==o&&!o.contains(n))&&(n!==o&&!o.contains(n)||!r.persist&&!i)&&(s=n===e||e.contains(n)?e:null,S(),u.call(t,n))},_=function(t){s=e,w(),u.call(t,t[l])},b=function(e){var t=e.which||e.keyCode;38!==t&&40!==t||e.preventDefault()},y=function(n){var i=n.which||n.keyCode,a=t.activeElement,l=c.indexOf(a),u=a===e,d=o.contains(a),h=a[p]===o||a[p][p]===o;h&&(l=u?0:38===i?l>1?l-1:0:40===i&&l<c[g]-1?l+1:l,c[l]&&C(c[l])),(c[g]&&h||!c[g]&&(d||u)||!d)&&e.open&&27===i&&(r.toggle(),s=null)},w=function(){F.call(i,"show","dropdown",s),j(o,"show"),j(i,"show"),e[f]("aria-expanded",!0),F.call(i,"shown","dropdown",s),e.open=!0,R(e,"click",_),setTimeout((function(){C(o.getElementsByTagName("INPUT")[0]||e),d()}),1)},S=function(){F.call(i,"hide","dropdown",s),T(o,"show"),T(i,"show"),e[f]("aria-expanded",!1),F.call(i,"hidden","dropdown",s),e.open=!1,d(),C(e),setTimeout((function(){M(e,"click",_)}),1)};e.open=!1,this.toggle=function(){O(i,"show")&&e.open?S():w()},"Dropdown"in e||(!1 in o&&o[f]("tabindex","0"),M(e,"click",_)),e.Dropdown=r};o[v](["Dropdown",$,"["+a+'="dropdown"]']);var W=function(n,s){var o=(n=N(n))[h]("data-target")||n[h]("href"),a=N(o),c=O(n,"modal")?n:a;if(O(n,"modal")&&(n=null),c){s=s||{},this.keyboard=!1!==s.keyboard&&"false"!==c[h]("data-keyboard"),this.backdrop="static"!==s.backdrop&&"static"!==c[h]("data-backdrop")||"static",this.backdrop=!1!==s.backdrop&&"false"!==c[h]("data-backdrop")&&this.backdrop,this[u]=!!O(c,"fade"),this.content=s.content,c.isAnimating=!1;var d,v,_,y,w,E=this,A=null,I=k(r,"fixed-top").concat(k(r,"fixed-bottom")),D=function(){var n,r=e.getComputedStyle(t[i]),s=parseInt(r.paddingRight,10);if(d&&(t[i][m].paddingRight=s+v+"px",c[m].paddingRight=v+"px",I[g]))for(var o=0;o<I[g];o++)n=e.getComputedStyle(I[o]).paddingRight,I[o][m].paddingRight=parseInt(n)+v+"px"},B=function(){var n,s,o;d=t[i].clientWidth<(n=r.getBoundingClientRect(),e.innerWidth||n.right-Math.abs(n[b])),(o=t.createElement("div")).className="modal-scrollbar-measure",t[i].appendChild(o),s=o.offsetWidth-o.clientWidth,t[i].removeChild(o),v=s},q=function(){(_=N(".modal-backdrop"))&&null!==_&&"object"==typeof _&&(S=0,t[i].removeChild(_),_=null)},H=function(){C(c),c.isAnimating=!1,F.call(c,"shown","modal",A),M(e,"resize",E.update,P),M(c,"click",W),M(t,"keydown",$)},U=function(){c[m].display="",n&&C(n),F.call(c,"hidden","modal"),k(t,"modal show")[0]||(function(){if(t[i][m].paddingRight="",c[m].paddingRight="",I[g])for(var e=0;e<I[g];e++)I[e][m].paddingRight=""}(),T(t[i],"modal-open"),_&&O(_,"fade")?(T(_,"show"),z(_,q)):q(),R(e,"resize",E.update,P),R(c,"click",W),R(t,"keydown",$)),c.isAnimating=!1},$=function(e){c.isAnimating||E.keyboard&&27==e.which&&O(c,"show")&&E.hide()},W=function(e){if(!c.isAnimating){var t=e[l];O(c,"show")&&("modal"===t[p][h]("data-dismiss")||"modal"===t[h]("data-dismiss")||t===c&&"static"!==E.backdrop)&&(E.hide(),A=null,e.preventDefault())}};this.toggle=function(){O(c,"show")?this.hide():this.show()},this.show=function(){O(c,"show")||c.isAnimating||(clearTimeout(w),w=setTimeout((function(){c.isAnimating=!0,F.call(c,"show","modal",A);var e,n=k(t,"modal show")[0];n&&n!==c&&("modalTrigger"in n&&n.modalTrigger.Modal.hide(),"Modal"in n&&n.Modal.hide()),E.backdrop&&!S&&!_&&(e=t.createElement("div"),null===(_=N(".modal-backdrop"))&&(e[f]("class","modal-backdrop"+(E[u]?" fade":"")),_=e,t[i].appendChild(_)),S=1),_&&!O(_,"show")&&(_.offsetWidth,y=L(_),j(_,"show")),setTimeout((function(){c[m].display="block",B(),D(),j(t[i],"modal-open"),j(c,"show"),c[f]("aria-hidden",!1),O(c,"fade")?z(c,H):H()}),x&&_&&y?y:1)}),1))},this.hide=function(){!c.isAnimating&&O(c,"show")&&(clearTimeout(w),w=setTimeout((function(){c.isAnimating=!0,F.call(c,"hide","modal"),_=N(".modal-backdrop"),y=_&&L(_),T(c,"show"),c[f]("aria-hidden",!0),setTimeout((function(){O(c,"fade")?z(c,U):U()}),x&&_&&y?y:2)}),2))},this.setContent=function(e){N(".modal-content",c).innerHTML=e},this.update=function(){O(c,"show")&&(B(),D())},n&&!("Modal"in n)&&M(n,"click",(function(e){if(!c.isAnimating){var t=e[l];(t=t.hasAttribute("data-target")||t.hasAttribute("href")?t:t[p])!==n||O(c,"show")||(c.modalTrigger=n,A=n,E.show(),e.preventDefault())}})),E.content&&E.setContent(E.content),n?(n.Modal=E,c.modalTrigger=n):c.Modal=E}};o[v](["Modal",W,"["+a+'="modal"]']);var V=function(n,r){n=N(n),r=r||{};var s=n[h]("data-trigger"),o=n[h]("data-animation"),a=n[h]("data-placement"),p=n[h]("data-dismissible"),g=n[h]("data-delay"),v=n[h]("data-container"),_='<button type="button" class="close">×</button>',b=N(r.container),w=N(v),S=I(n,".modal"),x=I(n,".fixed-top"),E=I(n,".fixed-bottom");this.template=r.template?r.template:null,this.trigger=r.trigger?r.trigger:s||"hover",this[u]=r[u]&&"fade"!==r[u]?r[u]:o||"fade",this.placement=r.placement?r.placement:a||y,this[c]=parseInt(r[c]||g)||200,this.dismissible=!(!r.dismissible&&"true"!==p),this.container=b||w||x||E||S||t[i];var A=this,C=r.title||n[h]("data-title")||null,k=r.content||n[h]("data-content")||null;if(k||this.template){var D=null,L=0,q=this.placement,H=function(e){null!==D&&e[l]===N(".close",D)&&A.hide()},U=function(r){"click"!=A.trigger&&"focus"!=A.trigger||!A.dismissible&&r(n,"blur",A.hide),A.dismissible&&r(t,"click",H),r(e,"resize",A.hide,P)},$=function(){U(M),F.call(n,"shown","popover")},W=function(){U(R),A.container.removeChild(D),L=null,D=null,F.call(n,"hidden","popover")};this.toggle=function(){null===D?A.show():A.hide()},this.show=function(){clearTimeout(L),L=setTimeout((function(){null===D&&(q=A.placement,function(){C=r.title||n[h]("data-title"),k=(k=r.content||n[h]("data-content"))?k.trim():null,D=t.createElement("div");var e=t.createElement("div");if(e[f]("class","arrow"),D.appendChild(e),null!==k&&null===A.template){if(D[f]("role","tooltip"),null!==C){var i=t.createElement("h3");i[f]("class","popover-header"),i.innerHTML=A.dismissible?C+_:C,D.appendChild(i)}var s=t.createElement("div");s[f]("class","popover-body"),s.innerHTML=A.dismissible&&null===C?k+_:k,D.appendChild(s)}else{var o=t.createElement("div");A.template=A.template.trim(),o.innerHTML=A.template,D.innerHTML=o.firstChild.innerHTML}A.container.appendChild(D),D[m].display="block",D[f]("class","popover bs-popover-"+q+" "+A[u])}(),B(n,D,q,A.container),!O(D,"show")&&j(D,"show"),F.call(n,"show","popover"),A[u]?z(D,$):$())}),20)},this.hide=function(){clearTimeout(L),L=setTimeout((function(){D&&null!==D&&O(D,"show")&&(F.call(n,"hide","popover"),T(D,"show"),A[u]?z(D,W):W())}),A[c])},"Popover"in n||("hover"===A.trigger?(M(n,d[0],A.show),A.dismissible||M(n,d[1],A.hide)):"click"!=A.trigger&&"focus"!=A.trigger||M(n,A.trigger,A.toggle)),n.Popover=A}};o[v](["Popover",V,"["+a+'="popover"]']);var G=function(e,t){var n=(e=N(e))[h]("data-height");t=t||{},this.height=!!x&&(t.height||"true"===n);var r,i,s,o,a,c,l,u=this,d=I(e,".nav"),v=!1,y=d&&N(".dropdown-toggle",d),w=function(){v[m].height="",T(v,"collapsing"),d.isAnimating=!1},S=function(){v?c?w():setTimeout((function(){v[m].height=l+"px",v.offsetWidth,z(v,w)}),50):d.isAnimating=!1,F.call(r,"shown","tab",i)},E=function(){v&&(s[m].float=b,o[m].float=b,a=s.scrollHeight),j(o,_),F.call(r,"show","tab",i),T(s,_),F.call(i,"hidden","tab",r),v&&(l=o.scrollHeight,c=l===a,j(v,"collapsing"),v[m].height=a+"px",v.offsetHeight,s[m].float="",o[m].float=""),O(o,"fade")?setTimeout((function(){j(o,"show"),z(o,S)}),20):S()};if(d){d.isAnimating=!1;var A=function(){var e,t=k(d,_);return 1!==t[g]||O(t[0][p],"dropdown")?t[g]>1&&(e=t[t[g]-1]):e=t[0],e},C=function(){return N(A()[h]("href"))};this.show=function(){o=N((r=r||e)[h]("href")),i=A(),s=C(),d.isAnimating=!0,T(i,_),i[f]("aria-selected","false"),j(r,_),r[f]("aria-selected","true"),y&&(O(e[p],"dropdown-menu")?O(y,_)||j(y,_):O(y,_)&&T(y,_)),F.call(i,"hide","tab",r),O(s,"fade")?(T(s,"show"),z(s,E)):E()},"Tab"in e||M(e,"click",(function(e){e.preventDefault(),r=e.currentTarget,!d.isAnimating&&!O(r,_)&&u.show()})),u.height&&(v=C()[p]),e.Tab=u}};o[v](["Tab",G,"["+a+'="tab"]']);var J=function(e,t){t=t||{};var n=(e=N(e))[h]("data-animation"),r=e[h]("data-autohide"),i=e[h]("data-delay");this.animation=!1===t.animation||"false"===n?0:1,this.autohide=!1===t.autohide||"false"===r?0:1,this[c]=parseInt(t[c]||i)||500;var s=this,o=0,a=I(e,".toast"),l=function(){T(a,"showing"),j(a,"show"),F.call(a,"shown","toast"),s.autohide&&s.hide()},u=function(){j(a,"hide"),F.call(a,"hidden","toast")},d=function(){T(a,"show"),s.animation?z(a,u):u()},f=function(){clearTimeout(o),o=null,j(a,"hide"),R(e,"click",s.hide),e.Toast=null,e=null,a=null};this.show=function(){a&&(F.call(a,"show","toast"),s.animation&&j(a,"fade"),T(a,"hide"),j(a,"showing"),s.animation?z(a,l):l())},this.hide=function(e){a&&O(a,"show")&&(F.call(a,"hide","toast"),e?d():o=setTimeout(d,s[c]))},this.dispose=function(){a&&O(a,"show")&&(T(a,"show"),s.animation?z(a,f):f())},"Toast"in e||M(e,"click",s.hide),e.Toast=s};o[v](["Toast",J,'[data-dismiss="toast"]']);var X=function(n,r){r=r||{};var s=(n=N(n))[h]("data-animation"),o=n[h]("data-placement"),a=n[h]("data-delay"),l=n[h]("data-container"),p=N(r.container),g=N(l),v=I(n,".modal"),_=I(n,".fixed-top"),w=I(n,".fixed-bottom");this[u]=r[u]&&"fade"!==r[u]?r[u]:s||"fade",this.placement=r.placement?r.placement:o||y,this[c]=parseInt(r[c]||a)||200,this.container=p||g||_||w||v||t[i];var S=this,x=0,E=this.placement,A=null,C=n[h]("title")||n[h]("data-title")||n[h]("data-original-title");if(C&&""!=C){var k=function(){M(e,"resize",S.hide,P),F.call(n,"shown","tooltip")},D=function(){R(e,"resize",S.hide,P),S.container.removeChild(A),A=null,x=null,F.call(n,"hidden","tooltip")};this.show=function(){clearTimeout(x),x=setTimeout((function(){null===A&&(E=S.placement,!1!==function(){if((C=n[h]("title")||n[h]("data-title")||n[h]("data-original-title"))&&""!==C){(A=t.createElement("div"))[f]("role","tooltip"),A[m][b]="0",A[m].top="0";var e=t.createElement("div");e[f]("class","arrow"),A.appendChild(e);var r=t.createElement("div");r[f]("class","tooltip-inner"),A.appendChild(r),r.innerHTML=C,S.container.appendChild(A),A[f]("class","tooltip bs-tooltip-"+E+" "+S[u])}}()&&(B(n,A,E,S.container),!O(A,"show")&&j(A,"show"),F.call(n,"show","tooltip"),S[u]?z(A,k):k()))}),20)},this.hide=function(){clearTimeout(x),x=setTimeout((function(){A&&O(A,"show")&&(F.call(n,"hide","tooltip"),T(A,"show"),S[u]?z(A,D):D())}),S[c])},this.toggle=function(){A?S.hide():S.show()},"Tooltip"in n||(n[f]("data-original-title",C),n.removeAttribute("title"),M(n,d[0],S.show),M(n,d[1],S.hide)),n.Tooltip=S}};o[v](["Tooltip",X,"["+a+'="tooltip"]']);var Q=function(e,t){for(var n=0,r=t[g];n<r;n++)new e(t[n])},Y=s.initCallback=function(e){e=e||t;for(var n=0,r=o[g];n<r;n++)Q(o[n][1],e.querySelectorAll(o[n][2]))};return t[i]?Y():M(t,"DOMContentLoaded",(function(){Y()})),{Alert:q,Button:H,Collapse:U,Dropdown:$,Modal:W,Popover:V,Tab:G,Toast:J,Tooltip:X}})?r.apply(t,i):r)||(e.exports=s)}).call(this,n(11))},function(e,t,n){var r,i,s; + */!function(i){var o,s,a,c,l,u,d,h,f,p,g,m,v,_,b,y,w,S,x,E="sizzle"+1*new Date,A=i.document,C=0,j=0,T=he(),O=he(),k=he(),N=he(),I=function(e,t){return e===t&&(g=!0),0},M={}.hasOwnProperty,R=[],D=R.pop,P=R.push,L=R.push,z=R.slice,F=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",q="[\\x20\\t\\r\\n\\f]",H="(?:\\\\[\\da-fA-F]{1,6}"+q+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",U="\\["+q+"*("+H+")(?:"+q+"*([*^$|!~]?=)"+q+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+H+"))|)"+q+"*\\]",$=":("+H+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+U+")*)|.*)\\)|)",W=new RegExp(q+"+","g"),G=new RegExp("^"+q+"+|((?:^|[^\\\\])(?:\\\\.)*)"+q+"+$","g"),V=new RegExp("^"+q+"*,"+q+"*"),J=new RegExp("^"+q+"*([>+~]|"+q+")"+q+"*"),X=new RegExp(q+"|>"),Q=new RegExp($),Y=new RegExp("^"+H+"$"),K={ID:new RegExp("^#("+H+")"),CLASS:new RegExp("^\\.("+H+")"),TAG:new RegExp("^("+H+"|[*])"),ATTR:new RegExp("^"+U),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+q+"*(even|odd|(([+-]|)(\\d*)n|)"+q+"*(?:([+-]|)"+q+"*(\\d+)|))"+q+"*\\)|)","i"),bool:new RegExp("^(?:"+B+")$","i"),needsContext:new RegExp("^"+q+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+q+"*((?:-\\d)?\\d*)"+q+"*\\)|)(?=[^-]|$)","i")},Z=/HTML$/i,ee=/^(?:input|select|textarea|button)$/i,te=/^h\d$/i,ne=/^[^{]+\{\s*\[native \w/,re=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ie=/[+~]/,oe=new RegExp("\\\\[\\da-fA-F]{1,6}"+q+"?|\\\\([^\\r\\n\\f])","g"),se=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},ae=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ce=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},le=function(){m()},ue=Ee((function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()}),{dir:"parentNode",next:"legend"});try{L.apply(R=z.call(A.childNodes),A.childNodes),R[A.childNodes.length].nodeType}catch(e){L={apply:R.length?function(e,t){P.apply(e,z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function de(e,t,n,r){var i,o,a,c,l,d,f,p=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&(m(t),t=t||v,b)){if(11!==g&&(l=re.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(p&&(a=p.getElementById(i))&&x(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return L.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&s.getElementsByClassName&&t.getElementsByClassName)return L.apply(n,t.getElementsByClassName(i)),n}if(s.qsa&&!N[e+" "]&&(!y||!y.test(e))&&(1!==g||"object"!==t.nodeName.toLowerCase())){if(f=e,p=t,1===g&&(X.test(e)||J.test(e))){for((p=ie.test(e)&&we(t.parentNode)||t)===t&&s.scope||((c=t.getAttribute("id"))?c=c.replace(ae,ce):t.setAttribute("id",c=E)),o=(d=u(e)).length;o--;)d[o]=(c?"#"+c:":scope")+" "+xe(d[o]);f=d.join(",")}try{return L.apply(n,p.querySelectorAll(f)),n}catch(t){N(e,!0)}finally{c===E&&t.removeAttribute("id")}}}return h(e.replace(G,"$1"),t,n,r)}function he(){var e=[];return function t(n,r){return e.push(n+" ")>a.cacheLength&&delete t[e.shift()],t[n+" "]=r}}function fe(e){return e[E]=!0,e}function pe(e){var t=v.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ge(e,t){for(var n=e.split("|"),r=n.length;r--;)a.attrHandle[n[r]]=t}function me(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function ve(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function _e(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function be(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ue(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function ye(e){return fe((function(t){return t=+t,fe((function(n,r){for(var i,o=e([],n.length,t),s=o.length;s--;)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))}))}))}function we(e){return e&&void 0!==e.getElementsByTagName&&e}for(o in s=de.support={},l=de.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Z.test(t||n&&n.nodeName||"HTML")},m=de.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:A;return r!=v&&9===r.nodeType&&r.documentElement?(_=(v=r).documentElement,b=!l(v),A!=v&&(n=v.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",le,!1):n.attachEvent&&n.attachEvent("onunload",le)),s.scope=pe((function(e){return _.appendChild(e).appendChild(v.createElement("div")),void 0!==e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length})),s.attributes=pe((function(e){return e.className="i",!e.getAttribute("className")})),s.getElementsByTagName=pe((function(e){return e.appendChild(v.createComment("")),!e.getElementsByTagName("*").length})),s.getElementsByClassName=ne.test(v.getElementsByClassName),s.getById=pe((function(e){return _.appendChild(e).id=E,!v.getElementsByName||!v.getElementsByName(E).length})),s.getById?(a.filter.ID=function(e){var t=e.replace(oe,se);return function(e){return e.getAttribute("id")===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&b){var n=t.getElementById(e);return n?[n]:[]}}):(a.filter.ID=function(e){var t=e.replace(oe,se);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},a.find.ID=function(e,t){if(void 0!==t.getElementById&&b){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),a.find.TAG=s.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):s.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},a.find.CLASS=s.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&b)return t.getElementsByClassName(e)},w=[],y=[],(s.qsa=ne.test(v.querySelectorAll))&&(pe((function(e){var t;_.appendChild(e).innerHTML="<a id='"+E+"'></a><select id='"+E+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+q+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+q+"*(?:value|"+B+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=v.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+q+"*name"+q+"*="+q+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")})),pe((function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=v.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+q+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),_.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")}))),(s.matchesSelector=ne.test(S=_.matches||_.webkitMatchesSelector||_.mozMatchesSelector||_.oMatchesSelector||_.msMatchesSelector))&&pe((function(e){s.disconnectedMatch=S.call(e,"*"),S.call(e,"[s!='']:x"),w.push("!=",$)})),y=y.length&&new RegExp(y.join("|")),w=w.length&&new RegExp(w.join("|")),t=ne.test(_.compareDocumentPosition),x=t||ne.test(_.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},I=t?function(e,t){if(e===t)return g=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!s.sortDetached&&t.compareDocumentPosition(e)===n?e==v||e.ownerDocument==A&&x(A,e)?-1:t==v||t.ownerDocument==A&&x(A,t)?1:p?F(p,e)-F(p,t):0:4&n?-1:1)}:function(e,t){if(e===t)return g=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],a=[t];if(!i||!o)return e==v?-1:t==v?1:i?-1:o?1:p?F(p,e)-F(p,t):0;if(i===o)return me(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?me(s[r],a[r]):s[r]==A?-1:a[r]==A?1:0},v):v},de.matches=function(e,t){return de(e,null,null,t)},de.matchesSelector=function(e,t){if(m(e),s.matchesSelector&&b&&!N[t+" "]&&(!w||!w.test(t))&&(!y||!y.test(t)))try{var n=S.call(e,t);if(n||s.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return de(t,v,null,[e]).length>0},de.contains=function(e,t){return(e.ownerDocument||e)!=v&&m(e),x(e,t)},de.attr=function(e,t){(e.ownerDocument||e)!=v&&m(e);var n=a.attrHandle[t.toLowerCase()],r=n&&M.call(a.attrHandle,t.toLowerCase())?n(e,t,!b):void 0;return void 0!==r?r:s.attributes||!b?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},de.escape=function(e){return(e+"").replace(ae,ce)},de.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},de.uniqueSort=function(e){var t,n=[],r=0,i=0;if(g=!s.detectDuplicates,p=!s.sortStable&&e.slice(0),e.sort(I),g){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return p=null,e},c=de.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=c(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=c(t);return n},(a=de.selectors={cacheLength:50,createPseudo:fe,match:K,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(oe,se),e[3]=(e[3]||e[4]||e[5]||"").replace(oe,se),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||de.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&de.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return K.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&Q.test(n)&&(t=u(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(oe,se).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=T[e+" "];return t||(t=new RegExp("(^|"+q+")"+e+"("+q+"|$)"))&&T(e,(function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")}))},ATTR:function(e,t,n){return function(r){var i=de.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace(W," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,c){var l,u,d,h,f,p,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),_=!c&&!a,b=!1;if(m){if(o){for(;g;){for(h=t;h=h[g];)if(a?h.nodeName.toLowerCase()===v:1===h.nodeType)return!1;p=g="only"===e&&!p&&"nextSibling"}return!0}if(p=[s?m.firstChild:m.lastChild],s&&_){for(b=(f=(l=(u=(d=(h=m)[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===C&&l[1])&&l[2],h=f&&m.childNodes[f];h=++f&&h&&h[g]||(b=f=0)||p.pop();)if(1===h.nodeType&&++b&&h===t){u[e]=[C,f,b];break}}else if(_&&(b=f=(l=(u=(d=(h=t)[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]||[])[0]===C&&l[1]),!1===b)for(;(h=++f&&h&&h[g]||(b=f=0)||p.pop())&&((a?h.nodeName.toLowerCase()!==v:1!==h.nodeType)||!++b||(_&&((u=(d=h[E]||(h[E]={}))[h.uniqueID]||(d[h.uniqueID]={}))[e]=[C,b]),h!==t)););return(b-=i)===r||b%r==0&&b/r>=0}}},PSEUDO:function(e,t){var n,r=a.pseudos[e]||a.setFilters[e.toLowerCase()]||de.error("unsupported pseudo: "+e);return r[E]?r(t):r.length>1?(n=[e,e,"",t],a.setFilters.hasOwnProperty(e.toLowerCase())?fe((function(e,n){for(var i,o=r(e,t),s=o.length;s--;)e[i=F(e,o[s])]=!(n[i]=o[s])})):function(e){return r(e,0,n)}):r}},pseudos:{not:fe((function(e){var t=[],n=[],r=d(e.replace(G,"$1"));return r[E]?fe((function(e,t,n,i){for(var o,s=r(e,null,i,[]),a=e.length;a--;)(o=s[a])&&(e[a]=!(t[a]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:fe((function(e){return function(t){return de(e,t).length>0}})),contains:fe((function(e){return e=e.replace(oe,se),function(t){return(t.textContent||c(t)).indexOf(e)>-1}})),lang:fe((function(e){return Y.test(e||"")||de.error("unsupported lang: "+e),e=e.replace(oe,se).toLowerCase(),function(t){var n;do{if(n=b?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(e){var t=i.location&&i.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===_},focus:function(e){return e===v.activeElement&&(!v.hasFocus||v.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:be(!1),disabled:be(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!a.pseudos.empty(e)},header:function(e){return te.test(e.nodeName)},input:function(e){return ee.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ye((function(){return[0]})),last:ye((function(e,t){return[t-1]})),eq:ye((function(e,t,n){return[n<0?n+t:n]})),even:ye((function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e})),odd:ye((function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e})),lt:ye((function(e,t,n){for(var r=n<0?n+t:n>t?t:n;--r>=0;)e.push(r);return e})),gt:ye((function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e}))}}).pseudos.nth=a.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})a.pseudos[o]=ve(o);for(o in{submit:!0,reset:!0})a.pseudos[o]=_e(o);function Se(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function Ee(e,t,n){var r=t.dir,i=t.next,o=i||r,s=n&&"parentNode"===o,a=j++;return t.first?function(t,n,i){for(;t=t[r];)if(1===t.nodeType||s)return e(t,n,i);return!1}:function(t,n,c){var l,u,d,h=[C,a];if(c){for(;t=t[r];)if((1===t.nodeType||s)&&e(t,n,c))return!0}else for(;t=t[r];)if(1===t.nodeType||s)if(u=(d=t[E]||(t[E]={}))[t.uniqueID]||(d[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=u[o])&&l[0]===C&&l[1]===a)return h[2]=l[2];if(u[o]=h,h[2]=e(t,n,c))return!0}return!1}}function Ae(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Ce(e,t,n,r,i){for(var o,s=[],a=0,c=e.length,l=null!=t;a<c;a++)(o=e[a])&&(n&&!n(o,r,i)||(s.push(o),l&&t.push(a)));return s}function je(e,t,n,r,i,o){return r&&!r[E]&&(r=je(r)),i&&!i[E]&&(i=je(i,o)),fe((function(o,s,a,c){var l,u,d,h=[],f=[],p=s.length,g=o||function(e,t,n){for(var r=0,i=t.length;r<i;r++)de(e,t[r],n);return n}(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:Ce(g,h,e,a,c),v=n?i||(o?e:p||r)?[]:s:m;if(n&&n(m,v,a,c),r)for(l=Ce(v,f),r(l,[],a,c),u=l.length;u--;)(d=l[u])&&(v[f[u]]=!(m[f[u]]=d));if(o){if(i||e){if(i){for(l=[],u=v.length;u--;)(d=v[u])&&l.push(m[u]=d);i(null,v=[],l,c)}for(u=v.length;u--;)(d=v[u])&&(l=i?F(o,d):h[u])>-1&&(o[l]=!(s[l]=d))}}else v=Ce(v===s?v.splice(p,v.length):v),i?i(null,s,v,c):L.apply(s,v)}))}function Te(e){for(var t,n,r,i=e.length,o=a.relative[e[0].type],s=o||a.relative[" "],c=o?1:0,l=Ee((function(e){return e===t}),s,!0),u=Ee((function(e){return F(t,e)>-1}),s,!0),d=[function(e,n,r){var i=!o&&(r||n!==f)||((t=n).nodeType?l(e,n,r):u(e,n,r));return t=null,i}];c<i;c++)if(n=a.relative[e[c].type])d=[Ee(Ae(d),n)];else{if((n=a.filter[e[c].type].apply(null,e[c].matches))[E]){for(r=++c;r<i&&!a.relative[e[r].type];r++);return je(c>1&&Ae(d),c>1&&xe(e.slice(0,c-1).concat({value:" "===e[c-2].type?"*":""})).replace(G,"$1"),n,c<r&&Te(e.slice(c,r)),r<i&&Te(e=e.slice(r)),r<i&&xe(e))}d.push(n)}return Ae(d)}Se.prototype=a.filters=a.pseudos,a.setFilters=new Se,u=de.tokenize=function(e,t){var n,r,i,o,s,c,l,u=O[e+" "];if(u)return t?0:u.slice(0);for(s=e,c=[],l=a.preFilter;s;){for(o in n&&!(r=V.exec(s))||(r&&(s=s.slice(r[0].length)||s),c.push(i=[])),n=!1,(r=J.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(G," ")}),s=s.slice(n.length)),a.filter)!(r=K[o].exec(s))||l[o]&&!(r=l[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?de.error(e):O(e,c).slice(0)},d=de.compile=function(e,t){var n,r=[],i=[],o=k[e+" "];if(!o){for(t||(t=u(e)),n=t.length;n--;)(o=Te(t[n]))[E]?r.push(o):i.push(o);(o=k(e,function(e,t){var n=t.length>0,r=e.length>0,i=function(i,o,s,c,l){var u,d,h,p=0,g="0",_=i&&[],y=[],w=f,S=i||r&&a.find.TAG("*",l),x=C+=null==w?1:Math.random()||.1,E=S.length;for(l&&(f=o==v||o||l);g!==E&&null!=(u=S[g]);g++){if(r&&u){for(d=0,o||u.ownerDocument==v||(m(u),s=!b);h=e[d++];)if(h(u,o||v,s)){c.push(u);break}l&&(C=x)}n&&((u=!h&&u)&&p--,i&&_.push(u))}if(p+=g,n&&g!==p){for(d=0;h=t[d++];)h(_,y,o,s);if(i){if(p>0)for(;g--;)_[g]||y[g]||(y[g]=D.call(c));y=Ce(y)}L.apply(c,y),l&&!i&&y.length>0&&p+t.length>1&&de.uniqueSort(c)}return l&&(C=x,f=w),_};return n?fe(i):i}(i,r))).selector=e}return o},h=de.select=function(e,t,n,r){var i,o,s,c,l,h="function"==typeof e&&e,f=!r&&u(e=h.selector||e);if(n=n||[],1===f.length){if((o=f[0]=f[0].slice(0)).length>2&&"ID"===(s=o[0]).type&&9===t.nodeType&&b&&a.relative[o[1].type]){if(!(t=(a.find.ID(s.matches[0].replace(oe,se),t)||[])[0]))return n;h&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=K.needsContext.test(e)?0:o.length;i--&&(s=o[i],!a.relative[c=s.type]);)if((l=a.find[c])&&(r=l(s.matches[0].replace(oe,se),ie.test(o[0].type)&&we(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return L.apply(n,r),n;break}}return(h||d(e,f))(r,t,!b,n,!t||ie.test(e)&&we(t.parentNode)||t),n},s.sortStable=E.split("").sort(I).join("")===E,s.detectDuplicates=!!g,m(),s.sortDetached=pe((function(e){return 1&e.compareDocumentPosition(v.createElement("fieldset"))})),pe((function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")}))||ge("type|href|height|width",(function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)})),s.attributes&&pe((function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")}))||ge("value",(function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue})),pe((function(e){return null==e.getAttribute("disabled")}))||ge(B,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}));var Oe=i.Sizzle;de.noConflict=function(){return i.Sizzle===de&&(i.Sizzle=Oe),de},void 0===(r=function(){return de}.call(t,n,t,e))||(e.exports=r)}(window)},,function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",i="day",o="week",s="month",a="quarter",c="year",l=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,u=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},h={s:d,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),i=n%60;return(t<=0?"+":"-")+d(r,2,"0")+":"+d(i,2,"0")},m:function(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,s),i=t-r<0,o=e.clone().add(n+(i?-1:1),s);return Number(-(n+(t-r)/(i?r-o:o-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(l){return{M:s,y:c,w:o,d:i,D:"date",h:r,m:n,s:t,ms:e,Q:a}[l]||String(l||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},f={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},p="en",g={};g[p]=f;var m=function(e){return e instanceof y},v=function(e,t,n){var r;if(!e)return p;if("string"==typeof e)g[e]&&(r=e),t&&(g[e]=t,r=e);else{var i=e.name;g[i]=e,r=i}return!n&&r&&(p=r),r||!n&&p},_=function(e,t){if(m(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new y(n)},b=h;b.l=v,b.i=m,b.w=function(e,t){return _(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var y=function(){function d(e){this.$L=this.$L||v(e.locale,null,!0),this.parse(e)}var h=d.prototype;return h.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(l);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(t)}(e),this.init()},h.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},h.$utils=function(){return b},h.isValid=function(){return!("Invalid Date"===this.$d.toString())},h.isSame=function(e,t){var n=_(e);return this.startOf(t)<=n&&n<=this.endOf(t)},h.isAfter=function(e,t){return _(e)<this.startOf(t)},h.isBefore=function(e,t){return this.endOf(t)<_(e)},h.$g=function(e,t,n){return b.u(e)?this[t]:this.set(n,e)},h.year=function(e){return this.$g(e,"$y",c)},h.month=function(e){return this.$g(e,"$M",s)},h.day=function(e){return this.$g(e,"$W",i)},h.date=function(e){return this.$g(e,"$D","date")},h.hour=function(e){return this.$g(e,"$H",r)},h.minute=function(e){return this.$g(e,"$m",n)},h.second=function(e){return this.$g(e,"$s",t)},h.millisecond=function(t){return this.$g(t,"$ms",e)},h.unix=function(){return Math.floor(this.valueOf()/1e3)},h.valueOf=function(){return this.$d.getTime()},h.startOf=function(e,a){var l=this,u=!!b.u(a)||a,d=b.p(e),h=function(e,t){var n=b.w(l.$u?Date.UTC(l.$y,t,e):new Date(l.$y,t,e),l);return u?n:n.endOf(i)},f=function(e,t){return b.w(l.toDate()[e].apply(l.toDate("s"),(u?[0,0,0,0]:[23,59,59,999]).slice(t)),l)},p=this.$W,g=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(d){case c:return u?h(1,0):h(31,11);case s:return u?h(1,g):h(0,g+1);case o:var _=this.$locale().weekStart||0,y=(p<_?p+7:p)-_;return h(u?m-y:m+(6-y),g);case i:case"date":return f(v+"Hours",0);case r:return f(v+"Minutes",1);case n:return f(v+"Seconds",2);case t:return f(v+"Milliseconds",3);default:return this.clone()}},h.endOf=function(e){return this.startOf(e,!1)},h.$set=function(o,a){var l,u=b.p(o),d="set"+(this.$u?"UTC":""),h=(l={},l.day=d+"Date",l.date=d+"Date",l[s]=d+"Month",l[c]=d+"FullYear",l[r]=d+"Hours",l[n]=d+"Minutes",l[t]=d+"Seconds",l[e]=d+"Milliseconds",l)[u],f=u===i?this.$D+(a-this.$W):a;if(u===s||u===c){var p=this.clone().set("date",1);p.$d[h](f),p.init(),this.$d=p.set("date",Math.min(this.$D,p.daysInMonth())).$d}else h&&this.$d[h](f);return this.init(),this},h.set=function(e,t){return this.clone().$set(e,t)},h.get=function(e){return this[b.p(e)]()},h.add=function(e,a){var l,u=this;e=Number(e);var d=b.p(a),h=function(t){var n=_(u);return b.w(n.date(n.date()+Math.round(t*e)),u)};if(d===s)return this.set(s,this.$M+e);if(d===c)return this.set(c,this.$y+e);if(d===i)return h(1);if(d===o)return h(7);var f=(l={},l[n]=6e4,l[r]=36e5,l[t]=1e3,l)[d]||1,p=this.$d.getTime()+e*f;return b.w(p,this)},h.subtract=function(e,t){return this.add(-1*e,t)},h.format=function(e){var t=this;if(!this.isValid())return"Invalid Date";var n=e||"YYYY-MM-DDTHH:mm:ssZ",r=b.z(this),i=this.$locale(),o=this.$H,s=this.$m,a=this.$M,c=i.weekdays,l=i.months,d=function(e,r,i,o){return e&&(e[r]||e(t,n))||i[r].substr(0,o)},h=function(e){return b.s(o%12||12,e,"0")},f=i.meridiem||function(e,t,n){var r=e<12?"AM":"PM";return n?r.toLowerCase():r},p={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:b.s(a+1,2,"0"),MMM:d(i.monthsShort,a,l,3),MMMM:d(l,a),D:this.$D,DD:b.s(this.$D,2,"0"),d:String(this.$W),dd:d(i.weekdaysMin,this.$W,c,2),ddd:d(i.weekdaysShort,this.$W,c,3),dddd:c[this.$W],H:String(o),HH:b.s(o,2,"0"),h:h(1),hh:h(2),a:f(o,s,!0),A:f(o,s,!1),m:String(s),mm:b.s(s,2,"0"),s:String(this.$s),ss:b.s(this.$s,2,"0"),SSS:b.s(this.$ms,3,"0"),Z:r};return n.replace(u,(function(e,t){return t||p[e]||r.replace(":","")}))},h.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},h.diff=function(e,i,l){var u,d=b.p(i),h=_(e),f=6e4*(h.utcOffset()-this.utcOffset()),p=this-h,g=b.m(this,h);return g=(u={},u[c]=g/12,u[s]=g,u[a]=g/3,u[o]=(p-f)/6048e5,u.day=(p-f)/864e5,u[r]=p/36e5,u[n]=p/6e4,u[t]=p/1e3,u)[d]||p,l?g:b.a(g)},h.daysInMonth=function(){return this.endOf(s).$D},h.$locale=function(){return g[this.$L]},h.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),r=v(e,t,!0);return r&&(n.$L=r),n},h.clone=function(){return b.w(this.$d,this)},h.toDate=function(){return new Date(this.valueOf())},h.toJSON=function(){return this.isValid()?this.toISOString():null},h.toISOString=function(){return this.$d.toISOString()},h.toString=function(){return this.$d.toUTCString()},d}();return _.prototype=y.prototype,_.extend=function(e,t){return e(t,y,_),_},_.locale=v,_.isDayjs=m,_.unix=function(e){return _(1e3*e)},_.en=g[p],_.Ls=g,_}()},function(e,t,n){"use strict";var r=n(63),i="object"==typeof self&&self&&self.Object===Object&&self,o=r.a||i||Function("return this")();t.a=o},function(e,t,n){"use strict";function r(e,t){e[t>>5]|=128<<24-t%32,e[15+(t+64>>9<<4)]=t;var n,r,s,l,u,d,h,f,p=new Array(80),g=1732584193,m=-271733879,v=-1732584194,_=271733878,b=-1009589776;for(n=0;n<e.length;n+=16){for(l=g,u=m,d=v,h=_,f=b,r=0;r<80;r++)p[r]=r<16?e[n+r]:c(p[r-3]^p[r-8]^p[r-14]^p[r-16],1),s=a(a(c(g,5),i(r,m,v,_)),a(a(b,p[r]),o(r))),b=_,_=v,v=c(m,30),m=g,g=s;g=a(g,l),m=a(m,u),v=a(v,d),_=a(_,h),b=a(b,f)}return[g,m,v,_,b]}function i(e,t,n,r){return e<20?t&n|~t&r:e<40?t^n^r:e<60?t&n|t&r|n&r:t^n^r}function o(e){return e<20?1518500249:e<40?1859775393:e<60?-1894007588:-899497514}function s(e,t){var n=l(e);n.length>16&&(n=r(n,8*e.length));for(var i=new Array(16),o=new Array(16),s=0;s<16;s++)i[s]=909522486^n[s],o[s]=1549556828^n[s];var a=r(i.concat(l(t)),512+8*t.length);return r(o.concat(a),672)}function a(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function c(e,t){return e<<t|e>>>32-t}function l(e){for(var t=[],n=0;n<8*e.length;n+=8)t[n>>5]|=(255&e.charCodeAt(n/8))<<24-n%32;return t}function u(e){for(var t,n,r="",i=0;i<4*e.length;i+=3)for(t=(e[i>>2]>>8*(3-i%4)&255)<<16|(e[i+1>>2]>>8*(3-(i+1)%4)&255)<<8|e[i+2>>2]>>8*(3-(i+2)%4)&255,n=0;n<4;n++)8*i+6*n>32*e.length?r+="=":r+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(t>>6*(3-n)&63);return r}function d(e){for(var t="",n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>24-n%32&255);return t}n.d(t,"a",(function(){return h}));const h={b64_hmac_sha1:function(e,t){return u(s(e,t))},b64_sha1:function(e){return u(r(l(e),8*e.length))},binb2str:d,core_hmac_sha1:s,str_hmac_sha1:function(e,t){return d(s(e,t))},str_sha1:function(e){return d(r(l(e),8*e.length))}}},function(e,t,n){var r=n(496),i=n(137),o=/[&<>"']/g,s=RegExp(o.source);e.exports=function(e){return(e=i(e))&&s.test(e)?e.replace(o,r):e}},function(e,t,n){"use strict";(function(e){n.d(t,"b",(function(){return r})),n.d(t,"a",(function(){return i})),n.d(t,"c",(function(){return o}));const r=function(){let t=e.WebSocket;if(void 0===t)try{t=n(499)}catch(e){throw new Error('You must install the "ws" package to use Strophe in nodejs.')}return t}();const i=function(){let t=e.DOMParser;if(void 0===t)try{t=n(47).DOMParser}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}return t}();function o(){if("undefined"==typeof document)try{return(new(0,n(47).DOMImplementation)).createDocument("jabber:client","strophe",null)}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}if(void 0===document.implementation.createDocument||document.implementation.createDocument&&document.documentMode&&document.documentMode<10){const e=function(){const e=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(let t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}();return e.appendChild(e.createElement("strophe")),e}return document.implementation.createDocument("jabber:client","strophe",null)}}).call(this,n(12))},function(e,t,n){"use strict";const r=n(330),i=n(331);e.exports={atob:r,btoa:i}},function(e,t,n){var r=n(96),i="object"==typeof self&&self&&self.Object===Object&&self,o=r||i||Function("return this")();e.exports=o},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t,n){"use strict";(function(e){var r=n(63),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,s=o&&o.exports===i&&r.a.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();t.a=a}).call(this,n(69)(e))},function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}));!function(){let t=e.WebSocket;if(void 0===t)try{t=n(328)}catch(e){throw new Error('You must install the "ws" package to use Strophe in nodejs.')}}();const r=function(){let t=e.DOMParser;if(void 0===t)try{t=n(47).DOMParser}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}return t}();function i(){if("undefined"==typeof document)try{return(new(0,n(47).DOMImplementation)).createDocument("jabber:client","strophe",null)}catch(e){throw new Error('You must install the "xmldom" package to use Strophe in nodejs.')}if(void 0===document.implementation.createDocument||document.implementation.createDocument&&document.documentMode&&document.documentMode<10){const e=function(){const e=["Msxml2.DOMDocument.6.0","Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","MSXML.DOMDocument","Microsoft.XMLDOM"];for(let t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(e){}}();return e.appendChild(e.createElement("strophe")),e}return document.implementation.createDocument("jabber:client","strophe",null)}}).call(this,n(12))},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(144)("wks"),i=n(145),o=n(13).Symbol,s="function"==typeof o;(e.exports=function(e){return r[e]||(r[e]=s&&o[e]||(s?o:i)("Symbol."+e))}).store=r},function(e,t,n){!function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,(function(e){return i(t[s][1][e]||e)}),l,l.exports,e,t,n,r)}return n[s].exports}for(var o=!1,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,t,n){var r=e("cssfilter").FilterCSS,i=e("cssfilter").getDefaultWhiteList,o=e("./util");function s(){return{a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]}}var a=new r;function c(e){return e.replace(l,"<").replace(u,">")}var l=/</g,u=/>/g,d=/"/g,h=/"/g,f=/&#([a-zA-Z0-9]*);?/gim,p=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,_=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(d,""")}function y(e){return e.replace(h,'"')}function w(e){return e.replace(f,(function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))}))}function S(e){return e.replace(p,":").replace(g," ")}function x(e){for(var t="",n=0,r=e.length;n<r;n++)t+=e.charCodeAt(n)<32?" ":e.charAt(n);return o.trim(t)}function E(e){return e=x(e=S(e=w(e=y(e))))}function A(e){return e=c(e=b(e))}var C=/<!--[\s\S]*?-->/g;n.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},n.getDefaultWhiteList=s,n.onTag=function(e,t,n){},n.onIgnoreTag=function(e,t,n){},n.onTagAttr=function(e,t,n){},n.onIgnoreTagAttr=function(e,t,n){},n.safeAttrValue=function(e,t,n,r){if(n=E(n),"href"===t||"src"===t){if("#"===(n=o.trim(n)))return"#";if("http://"!==n.substr(0,7)&&"https://"!==n.substr(0,8)&&"mailto:"!==n.substr(0,7)&&"tel:"!==n.substr(0,4)&&"data:image/"!==n.substr(0,11)&&"ftp://"!==n.substr(0,6)&&"./"!==n.substr(0,2)&&"../"!==n.substr(0,3)&&"#"!==n[0]&&"/"!==n[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(n))return""}else if("style"===t){if(v.lastIndex=0,v.test(n))return"";if(_.lastIndex=0,_.test(n)&&(m.lastIndex=0,m.test(n)))return"";!1!==r&&(n=(r=r||a).process(n))}return n=A(n)},n.escapeHtml=c,n.escapeQuote=b,n.unescapeQuote=y,n.escapeHtmlEntities=w,n.escapeDangerHtml5Entities=S,n.clearNonPrintableCharacter=x,n.friendlyAttrValue=E,n.escapeAttrValue=A,n.onIgnoreTagStripAll=function(){return""},n.StripTagBody=function(e,t){"function"!=typeof t&&(t=function(){});var n=!Array.isArray(e),r=[],i=!1;return{onIgnoreTag:function(s,a,c){if(function(t){return!!n||-1!==o.indexOf(e,t)}(s)){if(c.isClosing){var l="[/removed]",u=c.position+l.length;return r.push([!1!==i?i:c.position,u]),i=!1,l}return i||(i=c.position),"[removed]"}return t(s,a,c)},remove:function(e){var t="",n=0;return o.forEach(r,(function(r){t+=e.slice(n,r[0]),n=r[1]})),t+=e.slice(n)}}},n.stripCommentTag=function(e){return e.replace(C,"")},n.stripBlankChar=function(e){var t=e.split("");return(t=t.filter((function(e){var t=e.charCodeAt(0);return 127!==t&&(!(t<=31)||(10===t||13===t))}))).join("")},n.cssFilter=a,n.getDefaultCSSWhiteList=i},{"./util":4,cssfilter:8}],2:[function(e,t,n){var r=e("./default"),i=e("./parser"),o=e("./xss");function s(e,t){return new o(t).process(e)}for(var a in(n=t.exports=s).filterXSS=s,n.FilterXSS=o,r)n[a]=r[a];for(var a in i)n[a]=i[a];"undefined"!=typeof window&&(window.filterXSS=t.exports),"undefined"!=typeof self&&"undefined"!=typeof DedicatedWorkerGlobalScope&&self instanceof DedicatedWorkerGlobalScope&&(self.filterXSS=t.exports)},{"./default":1,"./parser":3,"./xss":5}],3:[function(e,t,n){var r=e("./util");function i(e){var t=r.spaceIndex(e);if(-1===t)var n=e.slice(1,-1);else n=e.slice(1,t+1);return"/"===(n=r.trim(n).toLowerCase()).slice(0,1)&&(n=n.slice(1)),"/"===n.slice(-1)&&(n=n.slice(0,-1)),n}function o(e){return"</"===e.slice(0,2)}var s=/[^a-zA-Z0-9_:\.\-]/gim;function a(e,t){for(;t<e.length;t++){var n=e[t];if(" "!==n)return"="===n?t:-1}}function c(e,t){for(;t>0;t--){var n=e[t];if(" "!==n)return"="===n?t:-1}}function l(e){return function(e){return'"'===e[0]&&'"'===e[e.length-1]||"'"===e[0]&&"'"===e[e.length-1]}(e)?e.substr(1,e.length-2):e}n.parseTag=function(e,t,n){"use strict";var r="",s=0,a=!1,c=!1,l=0,u=e.length,d="",h="";for(l=0;l<u;l++){var f=e.charAt(l);if(!1===a){if("<"===f){a=l;continue}}else if(!1===c){if("<"===f){r+=n(e.slice(s,l)),a=l,s=l;continue}if(">"===f){r+=n(e.slice(s,a)),d=i(h=e.slice(a,l+1)),r+=t(a,r.length,d,h,o(h)),s=l+1,a=!1;continue}if(('"'===f||"'"===f)&&"="===e.charAt(l-1)){c=f;continue}}else if(f===c){c=!1;continue}}return s<e.length&&(r+=n(e.substr(s))),r},n.parseAttr=function(e,t){"use strict";var n=0,i=[],o=!1,u=e.length;function d(e,n){if(!((e=(e=r.trim(e)).replace(s,"").toLowerCase()).length<1)){var o=t(e,n||"");o&&i.push(o)}}for(var h=0;h<u;h++){var f,p=e.charAt(h);if(!1!==o||"="!==p)if(!1===o||h!==n||'"'!==p&&"'"!==p||"="!==e.charAt(h-1))if(/\s|\n|\t/.test(p)){if(e=e.replace(/\s|\n|\t/g," "),!1===o){if(-1===(f=a(e,h))){d(r.trim(e.slice(n,h))),o=!1,n=h+1;continue}h=f-1;continue}if(-1===(f=c(e,h-1))){d(o,l(r.trim(e.slice(n,h)))),o=!1,n=h+1;continue}}else;else{if(-1===(f=e.indexOf(p,h+1)))break;d(o,r.trim(e.slice(n+1,f))),o=!1,n=(h=f)+1}else o=e.slice(n,h),n=h+1}return n<e.length&&(!1===o?d(e.slice(n)):d(o,l(r.trim(e.slice(n))))),r.trim(i.join(" "))}},{"./util":4}],4:[function(e,t,n){t.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},spaceIndex:function(e){var t=/\s|\n|\t/.exec(e);return t?t.index:-1}}},{}],5:[function(e,t,n){var r=e("cssfilter").FilterCSS,i=e("./default"),o=e("./parser"),s=o.parseTag,a=o.parseAttr,c=e("./util");function l(e){return null==e}function u(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).stripIgnoreTag&&(e.onIgnoreTag&&console.error('Notes: cannot use these two options "stripIgnoreTag" and "onIgnoreTag" at the same time'),e.onIgnoreTag=i.onIgnoreTagStripAll),e.whiteList=e.whiteList||i.whiteList,e.onTag=e.onTag||i.onTag,e.onTagAttr=e.onTagAttr||i.onTagAttr,e.onIgnoreTag=e.onIgnoreTag||i.onIgnoreTag,e.onIgnoreTagAttr=e.onIgnoreTagAttr||i.onIgnoreTagAttr,e.safeAttrValue=e.safeAttrValue||i.safeAttrValue,e.escapeHtml=e.escapeHtml||i.escapeHtml,this.options=e,!1===e.css?this.cssFilter=!1:(e.css=e.css||{},this.cssFilter=new r(e.css))}u.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onTag,o=t.onIgnoreTag,u=t.onTagAttr,d=t.onIgnoreTagAttr,h=t.safeAttrValue,f=t.escapeHtml,p=this.cssFilter;t.stripBlankChar&&(e=i.stripBlankChar(e)),t.allowCommentTag||(e=i.stripCommentTag(e));var g=!1;if(t.stripIgnoreTagBody){g=i.StripTagBody(t.stripIgnoreTagBody,o);o=g.onIgnoreTag}var m=s(e,(function(e,t,i,s,g){var m,v={sourcePosition:e,position:t,isClosing:g,isWhite:n.hasOwnProperty(i)};if(!l(m=r(i,s,v)))return m;if(v.isWhite){if(v.isClosing)return"</"+i+">";var _=function(e){var t=c.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var n="/"===(e=c.trim(e.slice(t+1,-1)))[e.length-1];return n&&(e=c.trim(e.slice(0,-1))),{html:e,closing:n}}(s),b=n[i],y=a(_.html,(function(e,t){var n,r=-1!==c.indexOf(b,e);return l(n=u(i,e,t,r))?r?(t=h(i,e,t,p))?e+'="'+t+'"':e:l(n=d(i,e,t,r))?void 0:n:n}));s="<"+i;return y&&(s+=" "+y),_.closing&&(s+=" /"),s+=">"}return l(m=o(i,s,v))?f(s):m}),f);return g&&(m=g.remove(m)),m},t.exports=u},{"./default":1,"./parser":3,"./util":4,cssfilter:8}],6:[function(e,t,n){var r=e("./default"),i=e("./parser");e("./util");function o(e){return null==e}function s(e){(e=function(e){var t={};for(var n in e)t[n]=e[n];return t}(e||{})).whiteList=e.whiteList||r.whiteList,e.onAttr=e.onAttr||r.onAttr,e.onIgnoreAttr=e.onIgnoreAttr||r.onIgnoreAttr,e.safeAttrValue=e.safeAttrValue||r.safeAttrValue,this.options=e}s.prototype.process=function(e){if(!(e=(e=e||"").toString()))return"";var t=this.options,n=t.whiteList,r=t.onAttr,s=t.onIgnoreAttr,a=t.safeAttrValue;return i(e,(function(e,t,i,c,l){var u=n[i],d=!1;if(!0===u?d=u:"function"==typeof u?d=u(c):u instanceof RegExp&&(d=u.test(c)),!0!==d&&(d=!1),c=a(i,c)){var h,f={position:t,sourcePosition:e,source:l,isWhite:d};return d?o(h=r(i,c,f))?i+":"+c:h:o(h=s(i,c,f))?void 0:h}}))},t.exports=s},{"./default":7,"./parser":9,"./util":10}],7:[function(e,t,n){function r(){var e={"align-content":!1,"align-items":!1,"align-self":!1,"alignment-adjust":!1,"alignment-baseline":!1,all:!1,"anchor-point":!1,animation:!1,"animation-delay":!1,"animation-direction":!1,"animation-duration":!1,"animation-fill-mode":!1,"animation-iteration-count":!1,"animation-name":!1,"animation-play-state":!1,"animation-timing-function":!1,azimuth:!1,"backface-visibility":!1,background:!0,"background-attachment":!0,"background-clip":!0,"background-color":!0,"background-image":!0,"background-origin":!0,"background-position":!0,"background-repeat":!0,"background-size":!0,"baseline-shift":!1,binding:!1,bleed:!1,"bookmark-label":!1,"bookmark-level":!1,"bookmark-state":!1,border:!0,"border-bottom":!0,"border-bottom-color":!0,"border-bottom-left-radius":!0,"border-bottom-right-radius":!0,"border-bottom-style":!0,"border-bottom-width":!0,"border-collapse":!0,"border-color":!0,"border-image":!0,"border-image-outset":!0,"border-image-repeat":!0,"border-image-slice":!0,"border-image-source":!0,"border-image-width":!0,"border-left":!0,"border-left-color":!0,"border-left-style":!0,"border-left-width":!0,"border-radius":!0,"border-right":!0,"border-right-color":!0,"border-right-style":!0,"border-right-width":!0,"border-spacing":!0,"border-style":!0,"border-top":!0,"border-top-color":!0,"border-top-left-radius":!0,"border-top-right-radius":!0,"border-top-style":!0,"border-top-width":!0,"border-width":!0,bottom:!1,"box-decoration-break":!0,"box-shadow":!0,"box-sizing":!0,"box-snap":!0,"box-suppress":!0,"break-after":!0,"break-before":!0,"break-inside":!0,"caption-side":!1,chains:!1,clear:!0,clip:!1,"clip-path":!1,"clip-rule":!1,color:!0,"color-interpolation-filters":!0,"column-count":!1,"column-fill":!1,"column-gap":!1,"column-rule":!1,"column-rule-color":!1,"column-rule-style":!1,"column-rule-width":!1,"column-span":!1,"column-width":!1,columns:!1,contain:!1,content:!1,"counter-increment":!1,"counter-reset":!1,"counter-set":!1,crop:!1,cue:!1,"cue-after":!1,"cue-before":!1,cursor:!1,direction:!1,display:!0,"display-inside":!0,"display-list":!0,"display-outside":!0,"dominant-baseline":!1,elevation:!1,"empty-cells":!1,filter:!1,flex:!1,"flex-basis":!1,"flex-direction":!1,"flex-flow":!1,"flex-grow":!1,"flex-shrink":!1,"flex-wrap":!1,float:!1,"float-offset":!1,"flood-color":!1,"flood-opacity":!1,"flow-from":!1,"flow-into":!1,font:!0,"font-family":!0,"font-feature-settings":!0,"font-kerning":!0,"font-language-override":!0,"font-size":!0,"font-size-adjust":!0,"font-stretch":!0,"font-style":!0,"font-synthesis":!0,"font-variant":!0,"font-variant-alternates":!0,"font-variant-caps":!0,"font-variant-east-asian":!0,"font-variant-ligatures":!0,"font-variant-numeric":!0,"font-variant-position":!0,"font-weight":!0,grid:!1,"grid-area":!1,"grid-auto-columns":!1,"grid-auto-flow":!1,"grid-auto-rows":!1,"grid-column":!1,"grid-column-end":!1,"grid-column-start":!1,"grid-row":!1,"grid-row-end":!1,"grid-row-start":!1,"grid-template":!1,"grid-template-areas":!1,"grid-template-columns":!1,"grid-template-rows":!1,"hanging-punctuation":!1,height:!0,hyphens:!1,icon:!1,"image-orientation":!1,"image-resolution":!1,"ime-mode":!1,"initial-letters":!1,"inline-box-align":!1,"justify-content":!1,"justify-items":!1,"justify-self":!1,left:!1,"letter-spacing":!0,"lighting-color":!0,"line-box-contain":!1,"line-break":!1,"line-grid":!1,"line-height":!1,"line-snap":!1,"line-stacking":!1,"line-stacking-ruby":!1,"line-stacking-shift":!1,"line-stacking-strategy":!1,"list-style":!0,"list-style-image":!0,"list-style-position":!0,"list-style-type":!0,margin:!0,"margin-bottom":!0,"margin-left":!0,"margin-right":!0,"margin-top":!0,"marker-offset":!1,"marker-side":!1,marks:!1,mask:!1,"mask-box":!1,"mask-box-outset":!1,"mask-box-repeat":!1,"mask-box-slice":!1,"mask-box-source":!1,"mask-box-width":!1,"mask-clip":!1,"mask-image":!1,"mask-origin":!1,"mask-position":!1,"mask-repeat":!1,"mask-size":!1,"mask-source-type":!1,"mask-type":!1,"max-height":!0,"max-lines":!1,"max-width":!0,"min-height":!0,"min-width":!0,"move-to":!1,"nav-down":!1,"nav-index":!1,"nav-left":!1,"nav-right":!1,"nav-up":!1,"object-fit":!1,"object-position":!1,opacity:!1,order:!1,orphans:!1,outline:!1,"outline-color":!1,"outline-offset":!1,"outline-style":!1,"outline-width":!1,overflow:!1,"overflow-wrap":!1,"overflow-x":!1,"overflow-y":!1,padding:!0,"padding-bottom":!0,"padding-left":!0,"padding-right":!0,"padding-top":!0,page:!1,"page-break-after":!1,"page-break-before":!1,"page-break-inside":!1,"page-policy":!1,pause:!1,"pause-after":!1,"pause-before":!1,perspective:!1,"perspective-origin":!1,pitch:!1,"pitch-range":!1,"play-during":!1,position:!1,"presentation-level":!1,quotes:!1,"region-fragment":!1,resize:!1,rest:!1,"rest-after":!1,"rest-before":!1,richness:!1,right:!1,rotation:!1,"rotation-point":!1,"ruby-align":!1,"ruby-merge":!1,"ruby-position":!1,"shape-image-threshold":!1,"shape-outside":!1,"shape-margin":!1,size:!1,speak:!1,"speak-as":!1,"speak-header":!1,"speak-numeral":!1,"speak-punctuation":!1,"speech-rate":!1,stress:!1,"string-set":!1,"tab-size":!1,"table-layout":!1,"text-align":!0,"text-align-last":!0,"text-combine-upright":!0,"text-decoration":!0,"text-decoration-color":!0,"text-decoration-line":!0,"text-decoration-skip":!0,"text-decoration-style":!0,"text-emphasis":!0,"text-emphasis-color":!0,"text-emphasis-position":!0,"text-emphasis-style":!0,"text-height":!0,"text-indent":!0,"text-justify":!0,"text-orientation":!0,"text-overflow":!0,"text-shadow":!0,"text-space-collapse":!0,"text-transform":!0,"text-underline-position":!0,"text-wrap":!0,top:!1,transform:!1,"transform-origin":!1,"transform-style":!1,transition:!1,"transition-delay":!1,"transition-duration":!1,"transition-property":!1,"transition-timing-function":!1,"unicode-bidi":!1,"vertical-align":!1,visibility:!1,"voice-balance":!1,"voice-duration":!1,"voice-family":!1,"voice-pitch":!1,"voice-range":!1,"voice-rate":!1,"voice-stress":!1,"voice-volume":!1,volume:!1,"white-space":!1,widows:!1,width:!0,"will-change":!1,"word-break":!0,"word-spacing":!0,"word-wrap":!0,"wrap-flow":!1,"wrap-through":!1,"writing-mode":!1,"z-index":!1};return e}var i=/javascript\s*\:/gim;n.whiteList=r(),n.getDefaultWhiteList=r,n.onAttr=function(e,t,n){},n.onIgnoreAttr=function(e,t,n){},n.safeAttrValue=function(e,t){return i.test(t)?"":t}},{}],8:[function(e,t,n){var r=e("./default"),i=e("./css");for(var o in(n=t.exports=function(e,t){return new i(t).process(e)}).FilterCSS=i,r)n[o]=r[o];"undefined"!=typeof window&&(window.filterCSS=t.exports)},{"./css":6,"./default":7}],9:[function(e,t,n){var r=e("./util");t.exports=function(e,t){";"!==(e=r.trimRight(e))[e.length-1]&&(e+=";");var n=e.length,i=!1,o=0,s=0,a="";function c(){if(!i){var n=r.trim(e.slice(o,s)),c=n.indexOf(":");if(-1!==c){var l=r.trim(n.slice(0,c)),u=r.trim(n.slice(c+1));if(l){var d=t(o,a.length,l,u,n);d&&(a+=d+"; ")}}}o=s+1}for(;s<n;s++){var l=e[s];if("/"===l&&"*"===e[s+1]){var u=e.indexOf("*/",s+2);if(-1===u)break;o=(s=u+1)+1,i=!1}else"("===l?i=!0:")"===l?i=!1:";"===l?i||c():"\n"===l&&c()}return r.trim(a)}},{"./util":10}],10:[function(e,t,n){t.exports={indexOf:function(e,t){var n,r;if(Array.prototype.indexOf)return e.indexOf(t);for(n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t,n){var r,i;if(Array.prototype.forEach)return e.forEach(t,n);for(r=0,i=e.length;r<i;r++)t.call(n,e[r],r,e)},trim:function(e){return String.prototype.trim?e.trim():e.replace(/(^\s*)|(\s*$)/g,"")},trimRight:function(e){return String.prototype.trimRight?e.trimRight():e.replace(/(\s*$)/g,"")}}},{}]},{},[2]),t.filterXSS=filterXSS,t.filterCSS=filterCSS},function(e,t){var n=e.exports={version:"2.6.12"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){"use strict";(function(e){var r=n(6),i=n(159),o="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=s&&s.exports===o?r.a.Buffer:void 0,c=(a?a.isBuffer:void 0)||i.a;t.a=c}).call(this,n(69)(e))},function(e,t,n){(function(t){e.exports=function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){if(o)return o(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,(function(e){var n=t[s][1][e];return i(n||e)}),l,l.exports,e,t,n,r)}return n[s].exports}for(var o=!1,s=0;s<r.length;s++)i(r[s]);return i}({1:[function(e,n,r){(function(e){"use strict";var t,r,i=e.MutationObserver||e.WebKitMutationObserver;if(i){var o=0,s=new i(u),a=e.document.createTextNode("");s.observe(a,{characterData:!0}),t=function(){a.data=o=++o%2}}else if(e.setImmediate||void 0===e.MessageChannel)t="document"in e&&"onreadystatechange"in e.document.createElement("script")?function(){var t=e.document.createElement("script");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var c=new e.MessageChannel;c.port1.onmessage=u,t=function(){c.port2.postMessage(0)}}var l=[];function u(){var e,t;r=!0;for(var n=l.length;n;){for(t=l,l=[],e=-1;++e<n;)t[e]();n=l.length}r=!1}n.exports=function(e){1!==l.push(e)||r||t()}}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],2:[function(e,t,n){"use strict";var r=e(1);function i(){}var o={},s=["REJECTED"],a=["FULFILLED"],c=["PENDING"];function l(e){if("function"!=typeof e)throw new TypeError("resolver must be a function");this.state=c,this.queue=[],this.outcome=void 0,e!==i&&f(this,e)}function u(e,t,n){this.promise=e,"function"==typeof t&&(this.onFulfilled=t,this.callFulfilled=this.otherCallFulfilled),"function"==typeof n&&(this.onRejected=n,this.callRejected=this.otherCallRejected)}function d(e,t,n){r((function(){var r;try{r=t(n)}catch(t){return o.reject(e,t)}r===e?o.reject(e,new TypeError("Cannot resolve promise with itself")):o.resolve(e,r)}))}function h(e){var t=e&&e.then;if(e&&("object"==typeof e||"function"==typeof e)&&"function"==typeof t)return function(){t.apply(e,arguments)}}function f(e,t){var n=!1;function r(t){n||(n=!0,o.reject(e,t))}function i(t){n||(n=!0,o.resolve(e,t))}var s=p((function(){t(i,r)}));"error"===s.status&&r(s.value)}function p(e,t){var n={};try{n.value=e(t),n.status="success"}catch(e){n.status="error",n.value=e}return n}t.exports=l,l.prototype.catch=function(e){return this.then(null,e)},l.prototype.then=function(e,t){if("function"!=typeof e&&this.state===a||"function"!=typeof t&&this.state===s)return this;var n=new this.constructor(i);return this.state!==c?d(n,this.state===a?e:t,this.outcome):this.queue.push(new u(n,e,t)),n},u.prototype.callFulfilled=function(e){o.resolve(this.promise,e)},u.prototype.otherCallFulfilled=function(e){d(this.promise,this.onFulfilled,e)},u.prototype.callRejected=function(e){o.reject(this.promise,e)},u.prototype.otherCallRejected=function(e){d(this.promise,this.onRejected,e)},o.resolve=function(e,t){var n=p(h,t);if("error"===n.status)return o.reject(e,n.value);var r=n.value;if(r)f(e,r);else{e.state=a,e.outcome=t;for(var i=-1,s=e.queue.length;++i<s;)e.queue[i].callFulfilled(t)}return e},o.reject=function(e,t){e.state=s,e.outcome=t;for(var n=-1,r=e.queue.length;++n<r;)e.queue[n].callRejected(t);return e},l.resolve=function(e){return e instanceof this?e:o.resolve(new this(i),e)},l.reject=function(e){var t=new this(i);return o.reject(t,e)},l.all=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var s=new Array(n),a=0,c=-1,l=new this(i);++c<n;)u(e[c],c);return l;function u(e,i){t.resolve(e).then((function(e){s[i]=e,++a!==n||r||(r=!0,o.resolve(l,s))}),(function(e){r||(r=!0,o.reject(l,e))}))}},l.race=function(e){var t=this;if("[object Array]"!==Object.prototype.toString.call(e))return this.reject(new TypeError("must be an array"));var n=e.length,r=!1;if(!n)return this.resolve([]);for(var s,a=-1,c=new this(i);++a<n;)s=e[a],t.resolve(s).then((function(e){r||(r=!0,o.resolve(c,e))}),(function(e){r||(r=!0,o.reject(c,e))}));return c}},{1:1}],3:[function(e,n,r){(function(t){"use strict";"function"!=typeof t.Promise&&(t.Promise=e(2))}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{2:2}],4:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){return}}();function o(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(i){if("TypeError"!==i.name)throw i;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}}"undefined"==typeof Promise&&e(3);var s=Promise;function a(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function c(e,t,n){"function"==typeof t&&e.then(t),"function"==typeof n&&e.catch(n)}function l(e){return"string"!=typeof e&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function u(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}var d=void 0,h={},f=Object.prototype.toString;function p(e){return"boolean"==typeof d?s.resolve(d):function(e){return new s((function(t){var n=e.transaction("local-forage-detect-blob-support","readwrite"),r=o([""]);n.objectStore("local-forage-detect-blob-support").put(r,"key"),n.onabort=function(e){e.preventDefault(),e.stopPropagation(),t(!1)},n.oncomplete=function(){var e=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!e||parseInt(e[1],10)>=43)}})).catch((function(){return!1}))}(e).then((function(e){return d=e}))}function g(e){var t=h[e.name],n={};n.promise=new s((function(e,t){n.resolve=e,n.reject=t})),t.deferredOperations.push(n),t.dbReady?t.dbReady=t.dbReady.then((function(){return n.promise})):t.dbReady=n.promise}function m(e){var t=h[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function v(e,t){var n=h[e.name].deferredOperations.pop();if(n)return n.reject(t),n.promise}function _(e,t){return new s((function(n,r){if(h[e.name]=h[e.name]||{forages:[],db:null,dbReady:null,deferredOperations:[]},e.db){if(!t)return n(e.db);g(e),e.db.close()}var o=[e.name];t&&o.push(e.version);var s=i.open.apply(i,o);t&&(s.onupgradeneeded=function(t){var n=s.result;try{n.createObjectStore(e.storeName),t.oldVersion<=1&&n.createObjectStore("local-forage-detect-blob-support")}catch(n){if("ConstraintError"!==n.name)throw n;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),s.onerror=function(e){e.preventDefault(),r(s.error)},s.onsuccess=function(){n(s.result),m(e)}}))}function b(e){return _(e,!1)}function y(e){return _(e,!0)}function w(e,t){if(!e.db)return!0;var n=!e.db.objectStoreNames.contains(e.storeName),r=e.version<e.db.version,i=e.version>e.db.version;if(r&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||n){if(n){var o=e.db.version+1;o>e.version&&(e.version=o)}return!0}return!1}function S(e){return o([function(e){for(var t=e.length,n=new ArrayBuffer(t),r=new Uint8Array(n),i=0;i<t;i++)r[i]=e.charCodeAt(i);return n}(atob(e.data))],{type:e.type})}function x(e){return e&&e.__local_forage_encoded_blob}function E(e){var t=this,n=t._initReady().then((function(){var e=h[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return c(n,e,e),n}function A(e,t,n,r){void 0===r&&(r=1);try{var i=e.db.transaction(e.storeName,t);n(null,i)}catch(i){if(r>0&&(!e.db||"InvalidStateError"===i.name||"NotFoundError"===i.name))return s.resolve().then((function(){if(!e.db||"NotFoundError"===i.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),y(e)})).then((function(){return function(e){g(e);for(var t=h[e.name],n=t.forages,r=0;r<n.length;r++){var i=n[r];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,b(e).then((function(t){return e.db=t,w(e)?y(e):t})).then((function(r){e.db=t.db=r;for(var i=0;i<n.length;i++)n[i]._dbInfo.db=r})).catch((function(t){throw v(e,t),t}))}(e).then((function(){A(e,t,n,r-1)}))})).catch(n);n(i)}}var C={_driver:"asyncStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]=e[r];var i=h[n.name];i||(i={forages:[],db:null,dbReady:null,deferredOperations:[]},h[n.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=E);var o=[];function a(){return s.resolve()}for(var c=0;c<i.forages.length;c++){var l=i.forages[c];l!==t&&o.push(l._initReady().catch(a))}var u=i.forages.slice(0);return s.all(o).then((function(){return n.db=i.db,b(n)})).then((function(e){return n.db=e,w(n,t._defaultConfig.version)?y(n):e})).then((function(e){n.db=i.db=e,t._dbInfo=n;for(var r=0;r<u.length;r++){var o=u[r];o!==t&&(o._dbInfo.db=n.db,o._dbInfo.version=n.version)}}))},_support:function(){try{if(!i||!i.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=new s((function(t,r){n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,o){if(i)return r(i);try{var s=o.objectStore(n._dbInfo.storeName).openCursor(),a=1;s.onsuccess=function(){var n=s.result;if(n){var r=n.value;x(r)&&(r=S(r));var i=e(r,n.key,a++);void 0!==i?t(i):n.continue()}else t()},s.onerror=function(){r(s.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new s((function(t,r){n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,o){if(i)return r(i);try{var s=o.objectStore(n._dbInfo.storeName).get(e);s.onsuccess=function(){var e=s.result;void 0===e&&(e=null),x(e)&&(e=S(e)),t(e)},s.onerror=function(){r(s.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var i=new s((function(n,i){var o;r.ready().then((function(){return o=r._dbInfo,"[object Blob]"===f.call(t)?p(o.db).then((function(e){return e?t:(n=t,new s((function(e,t){var r=new FileReader;r.onerror=t,r.onloadend=function(t){var r=btoa(t.target.result||"");e({__local_forage_encoded_blob:!0,data:r,type:n.type})},r.readAsBinaryString(n)})));var n})):t})).then((function(t){A(r._dbInfo,"readwrite",(function(o,s){if(o)return i(o);try{var a=s.objectStore(r._dbInfo.storeName);null===t&&(t=void 0);var c=a.put(t,e);s.oncomplete=function(){void 0===t&&(t=null),n(t)},s.onabort=s.onerror=function(){var e=c.error?c.error:c.transaction.error;i(e)}}catch(e){i(e)}}))})).catch(i)}));return a(i,n),i},removeItem:function(e,t){var n=this;e=l(e);var r=new s((function(t,r){n.ready().then((function(){A(n._dbInfo,"readwrite",(function(i,o){if(i)return r(i);try{var s=o.objectStore(n._dbInfo.storeName).delete(e);o.oncomplete=function(){t()},o.onerror=function(){r(s.error)},o.onabort=function(){var e=s.error?s.error:s.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},clear:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){A(t._dbInfo,"readwrite",(function(r,i){if(r)return n(r);try{var o=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=o.error?o.error:o.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},length:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){A(t._dbInfo,"readonly",(function(r,i){if(r)return n(r);try{var o=i.objectStore(t._dbInfo.storeName).count();o.onsuccess=function(){e(o.result)},o.onerror=function(){n(o.error)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},key:function(e,t){var n=this,r=new s((function(t,r){e<0?t(null):n.ready().then((function(){A(n._dbInfo,"readonly",(function(i,o){if(i)return r(i);try{var s=o.objectStore(n._dbInfo.storeName),a=!1,c=s.openKeyCursor();c.onsuccess=function(){var n=c.result;n?0===e||a?t(n.key):(a=!0,n.advance(e)):t(null)},c.onerror=function(){r(c.error)}}catch(e){r(e)}}))})).catch(r)}));return a(r,t),r},keys:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){A(t._dbInfo,"readonly",(function(r,i){if(r)return n(r);try{var o=i.objectStore(t._dbInfo.storeName).openKeyCursor(),s=[];o.onsuccess=function(){var t=o.result;t?(s.push(t.key),t.continue()):e(s)},o.onerror=function(){n(o.error)}}catch(e){n(e)}}))})).catch(n)}));return a(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,o=this;if(e.name){var c=e.name===n.name&&o._dbInfo.db,l=c?s.resolve(o._dbInfo.db):b(e).then((function(t){var n=h[e.name],r=n.forages;n.db=t;for(var i=0;i<r.length;i++)r[i]._dbInfo.db=t;return t}));r=e.storeName?l.then((function(t){if(t.objectStoreNames.contains(e.storeName)){var n=t.version+1;g(e);var r=h[e.name],o=r.forages;t.close();for(var a=0;a<o.length;a++){var c=o[a];c._dbInfo.db=null,c._dbInfo.version=n}return new s((function(t,r){var o=i.open(e.name,n);o.onerror=function(e){o.result.close(),r(e)},o.onupgradeneeded=function(){o.result.deleteObjectStore(e.storeName)},o.onsuccess=function(){var e=o.result;e.close(),t(e)}})).then((function(e){r.db=e;for(var t=0;t<o.length;t++){var n=o[t];n._dbInfo.db=e,m(n._dbInfo)}})).catch((function(t){throw(v(e,t)||s.resolve()).catch((function(){})),t}))}})):l.then((function(t){g(e);var n=h[e.name],r=n.forages;t.close();for(var o=0;o<r.length;o++)r[o]._dbInfo.db=null;return new s((function(t,n){var r=i.deleteDatabase(e.name);r.onerror=r.onblocked=function(e){var t=r.result;t&&t.close(),n(e)},r.onsuccess=function(){var e=r.result;e&&e.close(),t(e)}})).then((function(e){n.db=e;for(var t=0;t<r.length;t++)m(r[t]._dbInfo)})).catch((function(t){throw(v(e,t)||s.resolve()).catch((function(){})),t}))}))}else r=s.reject("Invalid arguments");return a(r,t),r}},j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=/^~~local_forage_type~([^~]+)~/,O="__lfsc__:".length,k=O+"arbf".length,N=Object.prototype.toString;function I(e){var t,n,r,i,o,s=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);var l=new ArrayBuffer(s),u=new Uint8Array(l);for(t=0;t<a;t+=4)n=j.indexOf(e[t]),r=j.indexOf(e[t+1]),i=j.indexOf(e[t+2]),o=j.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&o;return l}function M(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=j[n[t]>>2],r+=j[(3&n[t])<<4|n[t+1]>>4],r+=j[(15&n[t+1])<<2|n[t+2]>>6],r+=j[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var R={serialize:function(e,t){var n="";if(e&&(n=N.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===N.call(e.buffer))){var r,i="__lfsc__:";e instanceof ArrayBuffer?(r=e,i+="arbf"):(r=e.buffer,"[object Int8Array]"===n?i+="si08":"[object Uint8Array]"===n?i+="ui08":"[object Uint8ClampedArray]"===n?i+="uic8":"[object Int16Array]"===n?i+="si16":"[object Uint16Array]"===n?i+="ur16":"[object Int32Array]"===n?i+="si32":"[object Uint32Array]"===n?i+="ui32":"[object Float32Array]"===n?i+="fl32":"[object Float64Array]"===n?i+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(i+M(r))}else if("[object Blob]"===n){var o=new FileReader;o.onload=function(){var n="~~local_forage_type~"+e.type+"~"+M(this.result);t("__lfsc__:blob"+n)},o.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if("__lfsc__:"!==e.substring(0,O))return JSON.parse(e);var t,n=e.substring(k),r=e.substring(O,k);if("blob"===r&&T.test(n)){var i=n.match(T);t=i[1],n=n.substring(i[0].length)}var s=I(n);switch(r){case"arbf":return s;case"blob":return o([s],{type:t});case"si08":return new Int8Array(s);case"ui08":return new Uint8Array(s);case"uic8":return new Uint8ClampedArray(s);case"si16":return new Int16Array(s);case"ur16":return new Uint16Array(s);case"si32":return new Int32Array(s);case"ui32":return new Uint32Array(s);case"fl32":return new Float32Array(s);case"fl64":return new Float64Array(s);default:throw new Error("Unkown type: "+r)}},stringToBuffer:I,bufferToString:M};function D(e,t,n,r){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],n,r)}function P(e,t,n,r,i,o){e.executeSql(n,r,i,(function(e,s){s.code===s.SYNTAX_ERR?e.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],(function(e,a){a.rows.length?o(e,s):D(e,t,(function(){e.executeSql(n,r,i,o)}),o)}),o):o(e,s)}),o)}function L(e,t,n,r){var i=this;e=l(e);var o=new s((function(o,s){i.ready().then((function(){void 0===t&&(t=null);var a=t,c=i._dbInfo;c.serializer.serialize(t,(function(t,l){l?s(l):c.db.transaction((function(n){P(n,c,"INSERT OR REPLACE INTO "+c.storeName+" (key, value) VALUES (?, ?)",[e,t],(function(){o(a)}),(function(e,t){s(t)}))}),(function(t){if(t.code===t.QUOTA_ERR){if(r>0)return void o(L.apply(i,[e,a,n,r-1]));s(t)}}))}))})).catch(s)}));return a(o,n),o}function z(e){return new s((function(t,n){e.transaction((function(r){r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],(function(n,r){for(var i=[],o=0;o<r.rows.length;o++)i.push(r.rows.item(o).name);t({db:e,storeNames:i})}),(function(e,t){n(t)}))}),(function(e){n(e)}))}))}var F={_driver:"webSQLStorage",_initStorage:function(e){var t=this,n={db:null};if(e)for(var r in e)n[r]="string"!=typeof e[r]?e[r].toString():e[r];var i=new s((function(e,r){try{n.db=openDatabase(n.name,String(n.version),n.description,n.size)}catch(e){return r(e)}n.db.transaction((function(i){D(i,n,(function(){t._dbInfo=n,e()}),(function(e,t){r(t)}))}),r)}));return n.serializer=R,i},_support:"function"==typeof openDatabase,iterate:function(e,t){var n=this,r=new s((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT * FROM "+i.storeName,[],(function(n,r){for(var o=r.rows,s=o.length,a=0;a<s;a++){var c=o.item(a),l=c.value;if(l&&(l=i.serializer.deserialize(l)),void 0!==(l=e(l,c.key,a+1)))return void t(l)}t()}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=new s((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT * FROM "+i.storeName+" WHERE key = ? LIMIT 1",[e],(function(e,n){var r=n.rows.length?n.rows.item(0).value:null;r&&(r=i.serializer.deserialize(r)),t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},setItem:function(e,t,n){return L.apply(this,[e,t,n,1])},removeItem:function(e,t){var n=this;e=l(e);var r=new s((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"DELETE FROM "+i.storeName+" WHERE key = ?",[e],(function(){t()}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},clear:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"DELETE FROM "+r.storeName,[],(function(){e()}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},length:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"SELECT COUNT(key) as c FROM "+r.storeName,[],(function(t,n){var r=n.rows.item(0).c;e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},key:function(e,t){var n=this,r=new s((function(t,r){n.ready().then((function(){var i=n._dbInfo;i.db.transaction((function(n){P(n,i,"SELECT key FROM "+i.storeName+" WHERE id = ? LIMIT 1",[e+1],(function(e,n){var r=n.rows.length?n.rows.item(0).key:null;t(r)}),(function(e,t){r(t)}))}))})).catch(r)}));return a(r,t),r},keys:function(e){var t=this,n=new s((function(e,n){t.ready().then((function(){var r=t._dbInfo;r.db.transaction((function(t){P(t,r,"SELECT key FROM "+r.storeName,[],(function(t,n){for(var r=[],i=0;i<n.rows.length;i++)r.push(n.rows.item(i).key);e(r)}),(function(e,t){n(t)}))}))})).catch(n)}));return a(n,e),n},dropInstance:function(e,t){t=u.apply(this,arguments);var n=this.config();(e="function"!=typeof e&&e||{}).name||(e.name=e.name||n.name,e.storeName=e.storeName||n.storeName);var r,i=this;return a(r=e.name?new s((function(t){var r;r=e.name===n.name?i._dbInfo.db:openDatabase(e.name,"","",0),e.storeName?t({db:r,storeNames:[e.storeName]}):t(z(r))})).then((function(e){return new s((function(t,n){e.db.transaction((function(r){function i(e){return new s((function(t,n){r.executeSql("DROP TABLE IF EXISTS "+e,[],(function(){t()}),(function(e,t){n(t)}))}))}for(var o=[],a=0,c=e.storeNames.length;a<c;a++)o.push(i(e.storeNames[a]));s.all(o).then((function(){t()})).catch((function(e){n(e)}))}),(function(e){n(e)}))}))})):s.reject("Invalid arguments"),t),r}};function B(e,t){var n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}function q(){return!function(){try{return localStorage.setItem("_localforage_support_test",!0),localStorage.removeItem("_localforage_support_test"),!1}catch(e){return!0}}()||localStorage.length>0}var H={_driver:"localStorageWrapper",_initStorage:function(e){var t={};if(e)for(var n in e)t[n]=e[n];return t.keyPrefix=B(e,this._defaultConfig),q()?(this._dbInfo=t,t.serializer=R,s.resolve()):s.reject()},_support:function(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}(),iterate:function(e,t){var n=this,r=n.ready().then((function(){for(var t=n._dbInfo,r=t.keyPrefix,i=r.length,o=localStorage.length,s=1,a=0;a<o;a++){var c=localStorage.key(a);if(0===c.indexOf(r)){var l=localStorage.getItem(c);if(l&&(l=t.serializer.deserialize(l)),void 0!==(l=e(l,c.substring(i),s++)))return l}}}));return a(r,t),r},getItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo,r=localStorage.getItem(t.keyPrefix+e);return r&&(r=t.serializer.deserialize(r)),r}));return a(r,t),r},setItem:function(e,t,n){var r=this;e=l(e);var i=r.ready().then((function(){void 0===t&&(t=null);var n=t;return new s((function(i,o){var s=r._dbInfo;s.serializer.serialize(t,(function(t,r){if(r)o(r);else try{localStorage.setItem(s.keyPrefix+e,t),i(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||o(e),o(e)}}))}))}));return a(i,n),i},removeItem:function(e,t){var n=this;e=l(e);var r=n.ready().then((function(){var t=n._dbInfo;localStorage.removeItem(t.keyPrefix+e)}));return a(r,t),r},clear:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo.keyPrefix,n=localStorage.length-1;n>=0;n--){var r=localStorage.key(n);0===r.indexOf(e)&&localStorage.removeItem(r)}}));return a(n,e),n},length:function(e){var t=this.keys().then((function(e){return e.length}));return a(t,e),t},key:function(e,t){var n=this,r=n.ready().then((function(){var t,r=n._dbInfo;try{t=localStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(r.keyPrefix.length)),t}));return a(r,t),r},keys:function(e){var t=this,n=t.ready().then((function(){for(var e=t._dbInfo,n=localStorage.length,r=[],i=0;i<n;i++){var o=localStorage.key(i);0===o.indexOf(e.keyPrefix)&&r.push(o.substring(e.keyPrefix.length))}return r}));return a(n,e),n},dropInstance:function(e,t){if(t=u.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){var n=this.config();e.name=e.name||n.name,e.storeName=e.storeName||n.storeName}var r,i=this;return a(r=e.name?new s((function(t){e.storeName?t(B(e,i._defaultConfig)):t(e.name+"/")})).then((function(e){for(var t=localStorage.length-1;t>=0;t--){var n=localStorage.key(t);0===n.indexOf(e)&&localStorage.removeItem(n)}})):s.reject("Invalid arguments"),t),r}},U=function(e,t){for(var n,r,i=e.length,o=0;o<i;){if((n=e[o])===(r=t)||"number"==typeof n&&"number"==typeof r&&isNaN(n)&&isNaN(r))return!0;o++}return!1},$=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},W={},G={},V={INDEXEDDB:C,WEBSQL:F,LOCALSTORAGE:H},J=[V.INDEXEDDB._driver,V.WEBSQL._driver,V.LOCALSTORAGE._driver],X=["dropInstance"],Q=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(X),Y={description:"",driver:J.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function K(e,t){e[t]=function(){var n=arguments;return e.ready().then((function(){return e[t].apply(e,n)}))}}function Z(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var n in t)t.hasOwnProperty(n)&&($(t[n])?arguments[0][n]=t[n].slice():arguments[0][n]=t[n])}return arguments[0]}var ee=new(function(){function e(t){for(var n in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),V)if(V.hasOwnProperty(n)){var r=V[n],i=r._driver;this[n]=i,W[i]||this.defineDriver(r)}this._defaultConfig=Z({},Y),this._config=Z({},this._defaultConfig,t),this._driverSet=null,this._initDriver=null,this._ready=!1,this._dbInfo=null,this._wrapLibraryMethodsWithReady(),this.setDriver(this._config.driver).catch((function(){}))}return e.prototype.config=function(e){if("object"===(void 0===e?"undefined":r(e))){if(this._ready)return new Error("Can't call config() after localforage has been used.");for(var t in e){if("storeName"===t&&(e[t]=e[t].replace(/\W/g,"_")),"version"===t&&"number"!=typeof e[t])return new Error("Database version must be a number.");this._config[t]=e[t]}return!("driver"in e)||!e.driver||this.setDriver(this._config.driver)}return"string"==typeof e?this._config[e]:this._config},e.prototype.defineDriver=function(e,t,n){var r=new s((function(t,n){try{var r=e._driver,i=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!e._driver)return void n(i);for(var o=Q.concat("_initStorage"),c=0,l=o.length;c<l;c++){var u=o[c];if((!U(X,u)||e[u])&&"function"!=typeof e[u])return void n(i)}!function(){for(var t=function(e){return function(){var t=new Error("Method "+e+" is not implemented by the current driver"),n=s.reject(t);return a(n,arguments[arguments.length-1]),n}},n=0,r=X.length;n<r;n++){var i=X[n];e[i]||(e[i]=t(i))}}();var d=function(n){W[r]&&console.info("Redefining LocalForage driver: "+r),W[r]=e,G[r]=n,t()};"_support"in e?e._support&&"function"==typeof e._support?e._support().then(d,n):d(!!e._support):d(!0)}catch(e){n(e)}}));return c(r,t,n),r},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(e,t,n){var r=W[e]?s.resolve(W[e]):s.reject(new Error("Driver not found."));return c(r,t,n),r},e.prototype.getSerializer=function(e){var t=s.resolve(R);return c(t,e),t},e.prototype.ready=function(e){var t=this,n=t._driverSet.then((function(){return null===t._ready&&(t._ready=t._initDriver()),t._ready}));return c(n,e,e),n},e.prototype.setDriver=function(e,t,n){var r=this;$(e)||(e=[e]);var i=this._getSupportedDrivers(e);function o(){r._config.driver=r.driver()}function a(e){return r._extend(e),o(),r._ready=r._initStorage(r._config),r._ready}var l=null!==this._driverSet?this._driverSet.catch((function(){return s.resolve()})):s.resolve();return this._driverSet=l.then((function(){var e=i[0];return r._dbInfo=null,r._ready=null,r.getDriver(e).then((function(e){r._driver=e._driver,o(),r._wrapLibraryMethodsWithReady(),r._initDriver=function(e){return function(){var t=0;return function n(){for(;t<e.length;){var i=e[t];return t++,r._dbInfo=null,r._ready=null,r.getDriver(i).then(a).catch(n)}o();var c=new Error("No available storage method found.");return r._driverSet=s.reject(c),r._driverSet}()}}(i)}))})).catch((function(){o();var e=new Error("No available storage method found.");return r._driverSet=s.reject(e),r._driverSet})),c(this._driverSet,t,n),this._driverSet},e.prototype.supports=function(e){return!!G[e]},e.prototype._extend=function(e){Z(this,e)},e.prototype._getSupportedDrivers=function(e){for(var t=[],n=0,r=e.length;n<r;n++){var i=e[n];this.supports(i)&&t.push(i)}return t},e.prototype._wrapLibraryMethodsWithReady=function(){for(var e=0,t=Q.length;e<t;e++)K(this,Q[e])},e.prototype.createInstance=function(t){return new e(t)},e}());t.exports=ee},{3:3}]},{},[4])(4)}).call(this,n(12))},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(e){n(498),n(158),n(500);var r=n(2);n.d(t,"b",(function(){return r.d})),n.d(t,"a",(function(){return r.b})),e.$build=r.e.$build,e.$iq=r.e.$iq,e.$msg=r.e.$msg,e.$pres=r.e.$pres,e.Strophe=r.e.Strophe;const{b64_sha1:i}=r.c}).call(this,n(12))},function(e,t,n){var r=n(49),i=n(335),o=n(336),s=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":s&&s in Object(e)?i(e):o(e)}},function(e,t,n){var r=n(353),i=n(356);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},function(e,t,n){var r=n(41);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},,function(e,t,n){var r=n(62),i=n(71);e.exports=function(e){return null!=e&&i(e.length)&&!r(e)}},function(e,t,n){var r=n(13),i=n(19),o=n(58),s=n(31),a=n(60),c=function(e,t,n){var l,u,d,h=e&c.F,f=e&c.G,p=e&c.S,g=e&c.P,m=e&c.B,v=e&c.W,_=f?i:i[t]||(i[t]={}),b=_.prototype,y=f?r:p?r[t]:(r[t]||{}).prototype;for(l in f&&(n=t),n)(u=!h&&y&&void 0!==y[l])&&a(_,l)||(d=u?y[l]:n[l],_[l]=f&&"function"!=typeof y[l]?n[l]:m&&u?o(d,r):v&&y[l]==d?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):g&&"function"==typeof d?o(Function.call,d):d,g&&((_.virtual||(_.virtual={}))[l]=d,e&c.R&&b&&!b[l]&&s(b,l,d)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var r=n(40),i=n(140);e.exports=n(32)?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){e.exports=!n(82)((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(98),i=n(102),o=n(29);e.exports=function(e){return o(e)?r(e):i(e)}},function(e,t,n){(function(n){var r,i,o;i=[],void 0===(o="function"==typeof(r=function(){"use strict";var e=void 0!==n?n:this||window,t=document,r=t.documentElement,i="body",o=e.BSN={},s=o.supports=[],a="data-toggle",c="delay",l="target",u="animation",d="onmouseleave"in t?["mouseenter","mouseleave"]:["mouseover","mouseout"],h="getAttribute",f="setAttribute",p="parentNode",g="length",m="style",v="push",_="active",b="left",y="top",w=/\b(top|bottom|left|right)+/,S=0,x="WebkitTransition"in r[m]||"Transition".toLowerCase()in r[m],E="WebkitTransition"in r[m]?"Webkit".toLowerCase()+"TransitionEnd":"Transition".toLowerCase()+"end",A="WebkitDuration"in r[m]?"Webkit".toLowerCase()+"TransitionDuration":"Transition".toLowerCase()+"Duration",C=function(e){e.focus?e.focus():e.setActive()},j=function(e,t){e.classList.add(t)},T=function(e,t){e.classList.remove(t)},O=function(e,t){return e.classList.contains(t)},k=function(e,t){return[].slice.call(e.getElementsByClassName(t))},N=function(e,n){return"object"==typeof e?e:(n||t).querySelector(e)},I=function(e,n){var r=n.charAt(0),i=n.substr(1);if("."===r){for(;e&&e!==t;e=e[p])if(null!==N(n,e[p])&&O(e,i))return e}else if("#"===r)for(;e&&e!==t;e=e[p])if(e.id===i)return e;return!1},M=function(e,t,n,r){r=r||!1,e.addEventListener(t,n,r)},R=function(e,t,n,r){r=r||!1,e.removeEventListener(t,n,r)},D=function(e,t,n,r){M(e,t,(function i(o){n(o),R(e,t,i,r)}),r)},P=!!function(){var t=!1;try{var n=Object.defineProperty({},"passive",{get:function(){t=!0}});D(e,"testPassive",null,n)}catch(e){}return t}()&&{passive:!0},L=function(t){var n=x?e.getComputedStyle(t)[A]:0;return n="number"!=typeof(n=parseFloat(n))||isNaN(n)?0:1e3*n},z=function(e,t){var n=0;L(e)?D(e,E,(function(e){!n&&t(e),n=1})):setTimeout((function(){!n&&t(),n=1}),17)},F=function(e,t,n){var r=new CustomEvent(e+".bs."+t);r.relatedTarget=n,this.dispatchEvent(r)},B=function(n,o,s,a){var c,l,u,d,h,f,p=o.offsetWidth,g=o.offsetHeight,v=r.clientWidth||t[i].clientWidth,_=r.clientHeight||t[i].clientHeight,S=n.getBoundingClientRect(),x=a===t[i]?{y:e.pageYOffset||r.scrollTop,x:e.pageXOffset||r.scrollLeft}:{x:a.offsetLeft+a.scrollLeft,y:a.offsetTop+a.scrollTop},E=S.right-S[b],A=S.bottom-S.top,C=O(o,"popover"),j=N(".arrow",o),T=S.top+A/2-g/2<0,k=S[b]+E/2-p/2<0,I=S[b]+p/2+E/2>=v,M=S.top+g/2+A/2>=_,R=S.top-g<0,D=S[b]-p<0,P=S.top+g+A>=_,L=S[b]+p+E>=v;s="right"===(s=(s="bottom"===(s=(s=(s===b||"right"===s)&&D&&L?y:s)===y&&R?"bottom":s)&&P?y:s)===b&&D?"right":s)&&L?b:s,-1===o.className.indexOf(s)&&(o.className=o.className.replace(w,s)),h=j.offsetWidth,f=j.offsetHeight,s===b||"right"===s?(l=s===b?S[b]+x.x-p-(C?h:0):S[b]+x.x+E,T?(c=S.top+x.y,u=A/2-h):M?(c=S.top+x.y-g+A,u=g-A/2-h):(c=S.top+x.y-g/2+A/2,u=g/2-(C?.9*f:f/2))):s!==y&&"bottom"!==s||(c=s===y?S.top+x.y-g-(C?f:0):S.top+x.y+A,k?(l=0,d=S[b]+E/2-h):I?(l=v-1.01*p,d=p-(v-S[b])+E/2-h/2):(l=S[b]+x.x-p/2+E/2,d=p/2-(C?h:h/2))),o[m].top=c+"px",o[m][b]=l+"px",u&&(j[m].top=u+"px"),d&&(j[m][b]=d+"px")};o.version="2.0.27";var q=function(e){e=N(e);var t=this,n=I(e,".alert"),r=function(r){n=I(r[l],".alert"),(e=N('[data-dismiss="alert"]',n))&&n&&(e===r[l]||e.contains(r[l]))&&t.close()},i=function(){F.call(n,"closed","alert"),R(e,"click",r),n[p].removeChild(n)};this.close=function(){n&&e&&O(n,"show")&&(F.call(n,"close","alert"),T(n,"show"),n&&(O(n,"fade")?z(n,i):i()))},"Alert"in e||M(e,"click",r),e.Alert=t};s[v](["Alert",q,'[data-dismiss="alert"]']);var H=function(e){e=N(e);var n=!1,r="checked",i=function(t){var i="LABEL"===t[l].tagName?t[l]:"LABEL"===t[l][p].tagName?t[l][p]:null;if(i){var o=k(i[p],"btn"),s=i.getElementsByTagName("INPUT")[0];if(s){if("checkbox"===s.type&&(s[r]?(T(i,_),s[h](r),s.removeAttribute(r),s[r]=!1):(j(i,_),s[h](r),s[f](r,r),s[r]=!0),n||(n=!0,F.call(s,"change","button"),F.call(e,"change","button"))),"radio"===s.type&&!n&&(!s[r]||0===t.screenX&&0==t.screenY)){j(i,_),j(i,"focus"),s[f](r,r),s[r]=!0,F.call(s,"change","button"),F.call(e,"change","button"),n=!0;for(var a=0,c=o[g];a<c;a++){var u=o[a],d=u.getElementsByTagName("INPUT")[0];u!==i&&O(u,_)&&(T(u,_),d.removeAttribute(r),d[r]=!1,F.call(d,"change","button"))}}setTimeout((function(){n=!1}),50)}}},o=function(e){j(e[l][p],"focus")},s=function(e){T(e[l][p],"focus")};if(!("Button"in e)){M(e,"click",i),M(e,"keyup",(function(e){32===(e.which||e.keyCode)&&e[l]===t.activeElement&&i(e)})),M(e,"keydown",(function(e){32===(e.which||e.keyCode)&&e.preventDefault()}));for(var a=k(e,"btn"),c=0;c<a.length;c++){var u=a[c].getElementsByTagName("INPUT")[0];M(u,"focus",o),M(u,"blur",s)}}var d=k(e,"btn"),m=d[g];for(c=0;c<m;c++)!O(d[c],_)&&N("input:checked",d[c])&&j(d[c],_);e.Button=this};s[v](["Button",H,"["+a+'="buttons"]']);var U=function(e,t){e=N(e),t=t||{};var n,r,i,o,s,a=null,c=null,l=this,u=e[h]("data-parent"),d=function(e,t){F.call(e,"hide","collapse"),e.isAnimating=!0,e[m].height=e.scrollHeight+"px",T(e,"collapse"),T(e,"show"),j(e,"collapsing"),e.offsetWidth,e[m].height="0px",z(e,(function(){e.isAnimating=!1,e[f]("aria-expanded","false"),t[f]("aria-expanded","false"),T(e,"collapsing"),j(e,"collapse"),e[m].height="",F.call(e,"hidden","collapse")}))};this.toggle=function(e){e.preventDefault(),O(c,"show")?l.hide():l.show()},this.hide=function(){c.isAnimating||(d(c,e),j(e,"collapsed"))},this.show=function(){var t,i;a&&(n=N(".collapse.show",a),r=n&&(N('[data-target="#'+n.id+'"]',a)||N('[href="#'+n.id+'"]',a))),(!c.isAnimating||n&&!n.isAnimating)&&(r&&n!==c&&(d(n,r),j(r,"collapsed")),i=e,F.call(t=c,"show","collapse"),t.isAnimating=!0,j(t,"collapsing"),T(t,"collapse"),t[m].height=t.scrollHeight+"px",z(t,(function(){t.isAnimating=!1,t[f]("aria-expanded","true"),i[f]("aria-expanded","true"),T(t,"collapsing"),j(t,"collapse"),j(t,"show"),t[m].height="",F.call(t,"shown","collapse")})),T(e,"collapsed"))},"Collapse"in e||M(e,"click",l.toggle),i=e.href&&e[h]("href"),o=e[h]("data-target"),s=i||o&&"#"===o.charAt(0)&&o,(c=s&&N(s)).isAnimating=!1,a=N(t.parent)||u&&I(e,u),e.Collapse=l};s[v](["Collapse",U,"["+a+'="collapse"]']);var $=function(e,n){e=N(e),this.persist=!0===n||"true"===e[h]("data-persist")||!1;var r=this,i=e[p],o=null,s=N(".dropdown-menu",i),c=function(){for(var e=s.children,t=[],n=0;n<e[g];n++)e[n].children[g]&&"A"===e[n].children[0].tagName&&t[v](e[n].children[0]),"A"===e[n].tagName&&t[v](e[n]);return t}(),u=function(e){(e.href&&"#"===e.href.slice(-1)||e[p]&&e[p].href&&"#"===e[p].href.slice(-1))&&this.preventDefault()},d=function(){var n=e.open?M:R;n(t,"click",m),n(t,"keydown",b),n(t,"keyup",y),n(t,"focus",m,!0)},m=function(t){var n=t[l],i=n&&(n[h](a)||n[p]&&h in n[p]&&n[p][h](a));("focus"!==t.type||n!==e&&n!==s&&!s.contains(n))&&(n!==s&&!s.contains(n)||!r.persist&&!i)&&(o=n===e||e.contains(n)?e:null,S(),u.call(t,n))},_=function(t){o=e,w(),u.call(t,t[l])},b=function(e){var t=e.which||e.keyCode;38!==t&&40!==t||e.preventDefault()},y=function(n){var i=n.which||n.keyCode,a=t.activeElement,l=c.indexOf(a),u=a===e,d=s.contains(a),h=a[p]===s||a[p][p]===s;h&&(l=u?0:38===i?l>1?l-1:0:40===i&&l<c[g]-1?l+1:l,c[l]&&C(c[l])),(c[g]&&h||!c[g]&&(d||u)||!d)&&e.open&&27===i&&(r.toggle(),o=null)},w=function(){F.call(i,"show","dropdown",o),j(s,"show"),j(i,"show"),e[f]("aria-expanded",!0),F.call(i,"shown","dropdown",o),e.open=!0,R(e,"click",_),setTimeout((function(){C(s.getElementsByTagName("INPUT")[0]||e),d()}),1)},S=function(){F.call(i,"hide","dropdown",o),T(s,"show"),T(i,"show"),e[f]("aria-expanded",!1),F.call(i,"hidden","dropdown",o),e.open=!1,d(),C(e),setTimeout((function(){M(e,"click",_)}),1)};e.open=!1,this.toggle=function(){O(i,"show")&&e.open?S():w()},"Dropdown"in e||(!1 in s&&s[f]("tabindex","0"),M(e,"click",_)),e.Dropdown=r};s[v](["Dropdown",$,"["+a+'="dropdown"]']);var W=function(n,o){var s=(n=N(n))[h]("data-target")||n[h]("href"),a=N(s),c=O(n,"modal")?n:a;if(O(n,"modal")&&(n=null),c){o=o||{},this.keyboard=!1!==o.keyboard&&"false"!==c[h]("data-keyboard"),this.backdrop="static"!==o.backdrop&&"static"!==c[h]("data-backdrop")||"static",this.backdrop=!1!==o.backdrop&&"false"!==c[h]("data-backdrop")&&this.backdrop,this[u]=!!O(c,"fade"),this.content=o.content,c.isAnimating=!1;var d,v,_,y,w,E=this,A=null,I=k(r,"fixed-top").concat(k(r,"fixed-bottom")),D=function(){var n,r=e.getComputedStyle(t[i]),o=parseInt(r.paddingRight,10);if(d&&(t[i][m].paddingRight=o+v+"px",c[m].paddingRight=v+"px",I[g]))for(var s=0;s<I[g];s++)n=e.getComputedStyle(I[s]).paddingRight,I[s][m].paddingRight=parseInt(n)+v+"px"},B=function(){var n,o,s;d=t[i].clientWidth<(n=r.getBoundingClientRect(),e.innerWidth||n.right-Math.abs(n[b])),(s=t.createElement("div")).className="modal-scrollbar-measure",t[i].appendChild(s),o=s.offsetWidth-s.clientWidth,t[i].removeChild(s),v=o},q=function(){(_=N(".modal-backdrop"))&&null!==_&&"object"==typeof _&&(S=0,t[i].removeChild(_),_=null)},H=function(){C(c),c.isAnimating=!1,F.call(c,"shown","modal",A),M(e,"resize",E.update,P),M(c,"click",W),M(t,"keydown",$)},U=function(){c[m].display="",n&&C(n),F.call(c,"hidden","modal"),k(t,"modal show")[0]||(function(){if(t[i][m].paddingRight="",c[m].paddingRight="",I[g])for(var e=0;e<I[g];e++)I[e][m].paddingRight=""}(),T(t[i],"modal-open"),_&&O(_,"fade")?(T(_,"show"),z(_,q)):q(),R(e,"resize",E.update,P),R(c,"click",W),R(t,"keydown",$)),c.isAnimating=!1},$=function(e){c.isAnimating||E.keyboard&&27==e.which&&O(c,"show")&&E.hide()},W=function(e){if(!c.isAnimating){var t=e[l];O(c,"show")&&("modal"===t[p][h]("data-dismiss")||"modal"===t[h]("data-dismiss")||t===c&&"static"!==E.backdrop)&&(E.hide(),A=null,e.preventDefault())}};this.toggle=function(){O(c,"show")?this.hide():this.show()},this.show=function(){O(c,"show")||c.isAnimating||(clearTimeout(w),w=setTimeout((function(){c.isAnimating=!0,F.call(c,"show","modal",A);var e,n=k(t,"modal show")[0];n&&n!==c&&("modalTrigger"in n&&n.modalTrigger.Modal.hide(),"Modal"in n&&n.Modal.hide()),E.backdrop&&!S&&!_&&(e=t.createElement("div"),null===(_=N(".modal-backdrop"))&&(e[f]("class","modal-backdrop"+(E[u]?" fade":"")),_=e,t[i].appendChild(_)),S=1),_&&!O(_,"show")&&(_.offsetWidth,y=L(_),j(_,"show")),setTimeout((function(){c[m].display="block",B(),D(),j(t[i],"modal-open"),j(c,"show"),c[f]("aria-hidden",!1),O(c,"fade")?z(c,H):H()}),x&&_&&y?y:1)}),1))},this.hide=function(){!c.isAnimating&&O(c,"show")&&(clearTimeout(w),w=setTimeout((function(){c.isAnimating=!0,F.call(c,"hide","modal"),_=N(".modal-backdrop"),y=_&&L(_),T(c,"show"),c[f]("aria-hidden",!0),setTimeout((function(){O(c,"fade")?z(c,U):U()}),x&&_&&y?y:2)}),2))},this.setContent=function(e){N(".modal-content",c).innerHTML=e},this.update=function(){O(c,"show")&&(B(),D())},n&&!("Modal"in n)&&M(n,"click",(function(e){if(!c.isAnimating){var t=e[l];(t=t.hasAttribute("data-target")||t.hasAttribute("href")?t:t[p])!==n||O(c,"show")||(c.modalTrigger=n,A=n,E.show(),e.preventDefault())}})),E.content&&E.setContent(E.content),n?(n.Modal=E,c.modalTrigger=n):c.Modal=E}};s[v](["Modal",W,"["+a+'="modal"]']);var G=function(n,r){n=N(n),r=r||{};var o=n[h]("data-trigger"),s=n[h]("data-animation"),a=n[h]("data-placement"),p=n[h]("data-dismissible"),g=n[h]("data-delay"),v=n[h]("data-container"),_='<button type="button" class="close">×</button>',b=N(r.container),w=N(v),S=I(n,".modal"),x=I(n,".fixed-top"),E=I(n,".fixed-bottom");this.template=r.template?r.template:null,this.trigger=r.trigger?r.trigger:o||"hover",this[u]=r[u]&&"fade"!==r[u]?r[u]:s||"fade",this.placement=r.placement?r.placement:a||y,this[c]=parseInt(r[c]||g)||200,this.dismissible=!(!r.dismissible&&"true"!==p),this.container=b||w||x||E||S||t[i];var A=this,C=r.title||n[h]("data-title")||null,k=r.content||n[h]("data-content")||null;if(k||this.template){var D=null,L=0,q=this.placement,H=function(e){null!==D&&e[l]===N(".close",D)&&A.hide()},U=function(r){"click"!=A.trigger&&"focus"!=A.trigger||!A.dismissible&&r(n,"blur",A.hide),A.dismissible&&r(t,"click",H),r(e,"resize",A.hide,P)},$=function(){U(M),F.call(n,"shown","popover")},W=function(){U(R),A.container.removeChild(D),L=null,D=null,F.call(n,"hidden","popover")};this.toggle=function(){null===D?A.show():A.hide()},this.show=function(){clearTimeout(L),L=setTimeout((function(){null===D&&(q=A.placement,function(){C=r.title||n[h]("data-title"),k=(k=r.content||n[h]("data-content"))?k.trim():null,D=t.createElement("div");var e=t.createElement("div");if(e[f]("class","arrow"),D.appendChild(e),null!==k&&null===A.template){if(D[f]("role","tooltip"),null!==C){var i=t.createElement("h3");i[f]("class","popover-header"),i.innerHTML=A.dismissible?C+_:C,D.appendChild(i)}var o=t.createElement("div");o[f]("class","popover-body"),o.innerHTML=A.dismissible&&null===C?k+_:k,D.appendChild(o)}else{var s=t.createElement("div");A.template=A.template.trim(),s.innerHTML=A.template,D.innerHTML=s.firstChild.innerHTML}A.container.appendChild(D),D[m].display="block",D[f]("class","popover bs-popover-"+q+" "+A[u])}(),B(n,D,q,A.container),!O(D,"show")&&j(D,"show"),F.call(n,"show","popover"),A[u]?z(D,$):$())}),20)},this.hide=function(){clearTimeout(L),L=setTimeout((function(){D&&null!==D&&O(D,"show")&&(F.call(n,"hide","popover"),T(D,"show"),A[u]?z(D,W):W())}),A[c])},"Popover"in n||("hover"===A.trigger?(M(n,d[0],A.show),A.dismissible||M(n,d[1],A.hide)):"click"!=A.trigger&&"focus"!=A.trigger||M(n,A.trigger,A.toggle)),n.Popover=A}};s[v](["Popover",G,"["+a+'="popover"]']);var V=function(e,t){var n=(e=N(e))[h]("data-height");t=t||{},this.height=!!x&&(t.height||"true"===n);var r,i,o,s,a,c,l,u=this,d=I(e,".nav"),v=!1,y=d&&N(".dropdown-toggle",d),w=function(){v[m].height="",T(v,"collapsing"),d.isAnimating=!1},S=function(){v?c?w():setTimeout((function(){v[m].height=l+"px",v.offsetWidth,z(v,w)}),50):d.isAnimating=!1,F.call(r,"shown","tab",i)},E=function(){v&&(o[m].float=b,s[m].float=b,a=o.scrollHeight),j(s,_),F.call(r,"show","tab",i),T(o,_),F.call(i,"hidden","tab",r),v&&(l=s.scrollHeight,c=l===a,j(v,"collapsing"),v[m].height=a+"px",v.offsetHeight,o[m].float="",s[m].float=""),O(s,"fade")?setTimeout((function(){j(s,"show"),z(s,S)}),20):S()};if(d){d.isAnimating=!1;var A=function(){var e,t=k(d,_);return 1!==t[g]||O(t[0][p],"dropdown")?t[g]>1&&(e=t[t[g]-1]):e=t[0],e},C=function(){return N(A()[h]("href"))};this.show=function(){s=N((r=r||e)[h]("href")),i=A(),o=C(),d.isAnimating=!0,T(i,_),i[f]("aria-selected","false"),j(r,_),r[f]("aria-selected","true"),y&&(O(e[p],"dropdown-menu")?O(y,_)||j(y,_):O(y,_)&&T(y,_)),F.call(i,"hide","tab",r),O(o,"fade")?(T(o,"show"),z(o,E)):E()},"Tab"in e||M(e,"click",(function(e){e.preventDefault(),r=e.currentTarget,!d.isAnimating&&!O(r,_)&&u.show()})),u.height&&(v=C()[p]),e.Tab=u}};s[v](["Tab",V,"["+a+'="tab"]']);var J=function(e,t){t=t||{};var n=(e=N(e))[h]("data-animation"),r=e[h]("data-autohide"),i=e[h]("data-delay");this.animation=!1===t.animation||"false"===n?0:1,this.autohide=!1===t.autohide||"false"===r?0:1,this[c]=parseInt(t[c]||i)||500;var o=this,s=0,a=I(e,".toast"),l=function(){T(a,"showing"),j(a,"show"),F.call(a,"shown","toast"),o.autohide&&o.hide()},u=function(){j(a,"hide"),F.call(a,"hidden","toast")},d=function(){T(a,"show"),o.animation?z(a,u):u()},f=function(){clearTimeout(s),s=null,j(a,"hide"),R(e,"click",o.hide),e.Toast=null,e=null,a=null};this.show=function(){a&&(F.call(a,"show","toast"),o.animation&&j(a,"fade"),T(a,"hide"),j(a,"showing"),o.animation?z(a,l):l())},this.hide=function(e){a&&O(a,"show")&&(F.call(a,"hide","toast"),e?d():s=setTimeout(d,o[c]))},this.dispose=function(){a&&O(a,"show")&&(T(a,"show"),o.animation?z(a,f):f())},"Toast"in e||M(e,"click",o.hide),e.Toast=o};s[v](["Toast",J,'[data-dismiss="toast"]']);var X=function(n,r){r=r||{};var o=(n=N(n))[h]("data-animation"),s=n[h]("data-placement"),a=n[h]("data-delay"),l=n[h]("data-container"),p=N(r.container),g=N(l),v=I(n,".modal"),_=I(n,".fixed-top"),w=I(n,".fixed-bottom");this[u]=r[u]&&"fade"!==r[u]?r[u]:o||"fade",this.placement=r.placement?r.placement:s||y,this[c]=parseInt(r[c]||a)||200,this.container=p||g||_||w||v||t[i];var S=this,x=0,E=this.placement,A=null,C=n[h]("title")||n[h]("data-title")||n[h]("data-original-title");if(C&&""!=C){var k=function(){M(e,"resize",S.hide,P),F.call(n,"shown","tooltip")},D=function(){R(e,"resize",S.hide,P),S.container.removeChild(A),A=null,x=null,F.call(n,"hidden","tooltip")};this.show=function(){clearTimeout(x),x=setTimeout((function(){null===A&&(E=S.placement,!1!==function(){if((C=n[h]("title")||n[h]("data-title")||n[h]("data-original-title"))&&""!==C){(A=t.createElement("div"))[f]("role","tooltip"),A[m][b]="0",A[m].top="0";var e=t.createElement("div");e[f]("class","arrow"),A.appendChild(e);var r=t.createElement("div");r[f]("class","tooltip-inner"),A.appendChild(r),r.innerHTML=C,S.container.appendChild(A),A[f]("class","tooltip bs-tooltip-"+E+" "+S[u])}}()&&(B(n,A,E,S.container),!O(A,"show")&&j(A,"show"),F.call(n,"show","tooltip"),S[u]?z(A,k):k()))}),20)},this.hide=function(){clearTimeout(x),x=setTimeout((function(){A&&O(A,"show")&&(F.call(n,"hide","tooltip"),T(A,"show"),S[u]?z(A,D):D())}),S[c])},this.toggle=function(){A?S.hide():S.show()},"Tooltip"in n||(n[f]("data-original-title",C),n.removeAttribute("title"),M(n,d[0],S.show),M(n,d[1],S.hide)),n.Tooltip=S}};s[v](["Tooltip",X,"["+a+'="tooltip"]']);var Q=function(e,t){for(var n=0,r=t[g];n<r;n++)new e(t[n])},Y=o.initCallback=function(e){e=e||t;for(var n=0,r=s[g];n<r;n++)Q(s[n][1],e.querySelectorAll(s[n][2]))};return t[i]?Y():M(t,"DOMContentLoaded",(function(){Y()})),{Alert:q,Button:H,Collapse:U,Dropdown:$,Modal:W,Popover:G,Tab:V,Toast:J,Tooltip:X}})?r.apply(t,i):r)||(e.exports=o)}).call(this,n(12))},function(e,t,n){var r,i,o; /*! * URI.js - Mutating URLs * @@ -20,7 +20,7 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */!function(o,a){"use strict";e.exports?e.exports=a(n(116),n(117),n(118)):(i=[n(116),n(117),n(118)],void 0===(s="function"==typeof(r=a)?r.apply(t,i):r)||(e.exports=s))}(0,(function(e,t,n,r){"use strict";var i=r&&r.URI;function s(e,t){var n=arguments.length>=1,r=arguments.length>=2;if(!(this instanceof s))return n?r?new s(e,t):new s(e):new s;if(void 0===e){if(n)throw new TypeError("undefined is not a valid argument for URI");e="undefined"!=typeof location?location.href+"":""}if(null===e&&n)throw new TypeError("null is not a valid argument for URI");return this.href(e),void 0!==t?this.absoluteTo(t):this}s.version="1.19.2";var o=s.prototype,a=Object.prototype.hasOwnProperty;function c(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function l(e){return void 0===e?"Undefined":String(Object.prototype.toString.call(e)).slice(8,-1)}function u(e){return"Array"===l(e)}function d(e,t){var n,r,i={};if("RegExp"===l(t))i=null;else if(u(t))for(n=0,r=t.length;n<r;n++)i[t[n]]=!0;else i[t]=!0;for(n=0,r=e.length;n<r;n++){(i&&void 0!==i[e[n]]||!i&&t.test(e[n]))&&(e.splice(n,1),r--,n--)}return e}function h(e,t){var n,r;if(u(t)){for(n=0,r=t.length;n<r;n++)if(!h(e,t[n]))return!1;return!0}var i=l(t);for(n=0,r=e.length;n<r;n++)if("RegExp"===i){if("string"==typeof e[n]&&e[n].match(t))return!0}else if(e[n]===t)return!0;return!1}function f(e,t){if(!u(e)||!u(t))return!1;if(e.length!==t.length)return!1;e.sort(),t.sort();for(var n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}function p(e){return e.replace(/^\/+|\/+$/g,"")}function g(e){return escape(e)}function m(e){return encodeURIComponent(e).replace(/[!'()*]/g,g).replace(/\*/g,"%2A")}s._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:s.preventInvalidHostname,duplicateQueryParameters:s.duplicateQueryParameters,escapeQuerySpace:s.escapeQuerySpace}},s.preventInvalidHostname=!1,s.duplicateQueryParameters=!1,s.escapeQuerySpace=!0,s.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,s.idn_expression=/[^a-z0-9\._-]/i,s.punycode_expression=/(xn--)/i,s.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,s.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,s.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“â€â€˜â€™]))/gi,s.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“â€â€žâ€˜â€™]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},s.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},s.hostProtocols=["http","https"],s.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,s.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},s.getDomAttribute=function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();if("input"!==t||"image"===e.type)return s.domAttributes[t]}},s.encode=m,s.decode=decodeURIComponent,s.iso8859=function(){s.encode=escape,s.decode=unescape},s.unicode=function(){s.encode=m,s.decode=decodeURIComponent},s.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/gi,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},s.encodeQuery=function(e,t){var n=s.encode(e+"");return void 0===t&&(t=s.escapeQuerySpace),t?n.replace(/%20/g,"+"):n},s.decodeQuery=function(e,t){e+="",void 0===t&&(t=s.escapeQuerySpace);try{return s.decode(t?e.replace(/\+/g,"%20"):e)}catch(t){return e}};var v,_={encode:"encode",decode:"decode"},b=function(e,t){return function(n){try{return s[t](n+"").replace(s.characters[e][t].expression,(function(n){return s.characters[e][t].map[n]}))}catch(e){return n}}};for(v in _)s[v+"PathSegment"]=b("pathname",_[v]),s[v+"UrnPathSegment"]=b("urnpath",_[v]);var y=function(e,t,n){return function(r){var i;i=n?function(e){return s[t](s[n](e))}:s[t];for(var o=(r+"").split(e),a=0,c=o.length;a<c;a++)o[a]=i(o[a]);return o.join(e)}};function w(e){return function(t,n){return void 0===t?this._parts[e]||"":(this._parts[e]=t||null,this.build(!n),this)}}function S(e,t){return function(n,r){return void 0===n?this._parts[e]||"":(null!==n&&(n+="").charAt(0)===t&&(n=n.substring(1)),this._parts[e]=n,this.build(!r),this)}}s.decodePath=y("/","decodePathSegment"),s.decodeUrnPath=y(":","decodeUrnPathSegment"),s.recodePath=y("/","encodePathSegment","decode"),s.recodeUrnPath=y(":","encodeUrnPathSegment","decode"),s.encodeReserved=b("reserved","encode"),s.parse=function(e,t){var n;return t||(t={preventInvalidHostname:s.preventInvalidHostname}),(n=e.indexOf("#"))>-1&&(t.fragment=e.substring(n+1)||null,e=e.substring(0,n)),(n=e.indexOf("?"))>-1&&(t.query=e.substring(n+1)||null,e=e.substring(0,n)),"//"===e.substring(0,2)?(t.protocol=null,e=e.substring(2),e=s.parseAuthority(e,t)):(n=e.indexOf(":"))>-1&&(t.protocol=e.substring(0,n)||null,t.protocol&&!t.protocol.match(s.protocol_expression)?t.protocol=void 0:"//"===e.substring(n+1,n+3)?(e=e.substring(n+3),e=s.parseAuthority(e,t)):(e=e.substring(n+1),t.urn=!0)),t.path=e,t},s.parseHost=function(e,t){e||(e="");var n,r,i=(e=e.replace(/\\/g,"/")).indexOf("/");if(-1===i&&(i=e.length),"["===e.charAt(0))n=e.indexOf("]"),t.hostname=e.substring(1,n)||null,t.port=e.substring(n+2,i)||null,"/"===t.port&&(t.port=null);else{var o=e.indexOf(":"),a=e.indexOf("/"),c=e.indexOf(":",o+1);-1!==c&&(-1===a||c<a)?(t.hostname=e.substring(0,i)||null,t.port=null):(r=e.substring(0,i).split(":"),t.hostname=r[0]||null,t.port=r[1]||null)}return t.hostname&&"/"!==e.substring(i).charAt(0)&&(i++,e="/"+e),t.preventInvalidHostname&&s.ensureValidHostname(t.hostname,t.protocol),t.port&&s.ensureValidPort(t.port),e.substring(i)||"/"},s.parseAuthority=function(e,t){return e=s.parseUserinfo(e,t),s.parseHost(e,t)},s.parseUserinfo=function(e,t){var n,r=e.indexOf("/"),i=e.lastIndexOf("@",r>-1?r:e.length-1);return i>-1&&(-1===r||i<r)?(n=e.substring(0,i).split(":"),t.username=n[0]?s.decode(n[0]):null,n.shift(),t.password=n[0]?s.decode(n.join(":")):null,e=e.substring(i+1)):(t.username=null,t.password=null),e},s.parseQuery=function(e,t){if(!e)return{};if(!(e=e.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"")))return{};for(var n,r,i,o={},c=e.split("&"),l=c.length,u=0;u<l;u++)n=c[u].split("="),r=s.decodeQuery(n.shift(),t),i=n.length?s.decodeQuery(n.join("="),t):null,a.call(o,r)?("string"!=typeof o[r]&&null!==o[r]||(o[r]=[o[r]]),o[r].push(i)):o[r]=i;return o},s.build=function(e){var t="",n=!1;return e.protocol&&(t+=e.protocol+":"),e.urn||!t&&!e.hostname||(t+="//",n=!0),t+=s.buildAuthority(e)||"","string"==typeof e.path&&("/"!==e.path.charAt(0)&&n&&(t+="/"),t+=e.path),"string"==typeof e.query&&e.query&&(t+="?"+e.query),"string"==typeof e.fragment&&e.fragment&&(t+="#"+e.fragment),t},s.buildHost=function(e){var t="";return e.hostname?(s.ip6_expression.test(e.hostname)?t+="["+e.hostname+"]":t+=e.hostname,e.port&&(t+=":"+e.port),t):""},s.buildAuthority=function(e){return s.buildUserinfo(e)+s.buildHost(e)},s.buildUserinfo=function(e){var t="";return e.username&&(t+=s.encode(e.username)),e.password&&(t+=":"+s.encode(e.password)),t&&(t+="@"),t},s.buildQuery=function(e,t,n){var r,i,o,c,l="";for(i in e)if(a.call(e,i))if(u(e[i]))for(r={},o=0,c=e[i].length;o<c;o++)void 0!==e[i][o]&&void 0===r[e[i][o]+""]&&(l+="&"+s.buildQueryParameter(i,e[i][o],n),!0!==t&&(r[e[i][o]+""]=!0));else void 0!==e[i]&&(l+="&"+s.buildQueryParameter(i,e[i],n));return l.substring(1)},s.buildQueryParameter=function(e,t,n){return s.encodeQuery(e,n)+(null!==t?"="+s.encodeQuery(t,n):"")},s.addQuery=function(e,t,n){if("object"==typeof t)for(var r in t)a.call(t,r)&&s.addQuery(e,r,t[r]);else{if("string"!=typeof t)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");if(void 0===e[t])return void(e[t]=n);"string"==typeof e[t]&&(e[t]=[e[t]]),u(n)||(n=[n]),e[t]=(e[t]||[]).concat(n)}},s.setQuery=function(e,t,n){if("object"==typeof t)for(var r in t)a.call(t,r)&&s.setQuery(e,r,t[r]);else{if("string"!=typeof t)throw new TypeError("URI.setQuery() accepts an object, string as the name parameter");e[t]=void 0===n?null:n}},s.removeQuery=function(e,t,n){var r,i,o;if(u(t))for(r=0,i=t.length;r<i;r++)e[t[r]]=void 0;else if("RegExp"===l(t))for(o in e)t.test(o)&&(e[o]=void 0);else if("object"==typeof t)for(o in t)a.call(t,o)&&s.removeQuery(e,o,t[o]);else{if("string"!=typeof t)throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter");void 0!==n?"RegExp"===l(n)?!u(e[t])&&n.test(e[t])?e[t]=void 0:e[t]=d(e[t],n):e[t]!==String(n)||u(n)&&1!==n.length?u(e[t])&&(e[t]=d(e[t],n)):e[t]=void 0:e[t]=void 0}},s.hasQuery=function(e,t,n,r){switch(l(t)){case"String":break;case"RegExp":for(var i in e)if(a.call(e,i)&&t.test(i)&&(void 0===n||s.hasQuery(e,i,n)))return!0;return!1;case"Object":for(var o in t)if(a.call(t,o)&&!s.hasQuery(e,o,t[o]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(l(n)){case"Undefined":return t in e;case"Boolean":return n===Boolean(u(e[t])?e[t].length:e[t]);case"Function":return!!n(e[t],t,e);case"Array":return!!u(e[t])&&(r?h:f)(e[t],n);case"RegExp":return u(e[t])?!!r&&h(e[t],n):Boolean(e[t]&&e[t].match(n));case"Number":n=String(n);case"String":return u(e[t])?!!r&&h(e[t],n):e[t]===n;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},s.joinPaths=function(){for(var e=[],t=[],n=0,r=0;r<arguments.length;r++){var i=new s(arguments[r]);e.push(i);for(var o=i.segment(),a=0;a<o.length;a++)"string"==typeof o[a]&&t.push(o[a]),o[a]&&n++}if(!t.length||!n)return new s("");var c=new s("").segment(t);return""!==e[0].path()&&"/"!==e[0].path().slice(0,1)||c.path("/"+c.path()),c.normalize()},s.commonPath=function(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n++)if(e.charAt(n)!==t.charAt(n)){n--;break}return n<1?e.charAt(0)===t.charAt(0)&&"/"===e.charAt(0)?"/":"":("/"===e.charAt(n)&&"/"===t.charAt(n)||(n=e.substring(0,n).lastIndexOf("/")),e.substring(0,n+1))},s.withinString=function(e,t,n){n||(n={});var r=n.start||s.findUri.start,i=n.end||s.findUri.end,o=n.trim||s.findUri.trim,a=n.parens||s.findUri.parens,c=/[a-z0-9-]=["']?$/i;for(r.lastIndex=0;;){var l=r.exec(e);if(!l)break;var u=l.index;if(n.ignoreHtml){var d=e.slice(Math.max(u-3,0),u);if(d&&c.test(d))continue}for(var h=u+e.slice(u).search(i),f=e.slice(u,h),p=-1;;){var g=a.exec(f);if(!g)break;var m=g.index+g[0].length;p=Math.max(p,m)}if(!((f=p>-1?f.slice(0,p)+f.slice(p).replace(o,""):f.replace(o,"")).length<=l[0].length||n.ignore&&n.ignore.test(f))){var v=t(f,u,h=u+f.length,e);void 0!==v?(v=String(v),e=e.slice(0,u)+v+e.slice(h),r.lastIndex=u+v.length):r.lastIndex=h}}return r.lastIndex=0,e},s.ensureValidHostname=function(t,n){var r=!!t,i=!1;if(!!n&&(i=h(s.hostProtocols,n)),i&&!r)throw new TypeError("Hostname cannot be empty, if protocol is "+n);if(t&&t.match(s.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+t+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(t).match(s.invalid_hostname_characters))throw new TypeError('Hostname "'+t+'" contains characters other than [A-Z0-9.-:_]')}},s.ensureValidPort=function(e){if(e){var t=Number(e);if(!(/^[0-9]+$/.test(t)&&t>0&&t<65536))throw new TypeError('Port "'+e+'" is not a valid port')}},s.noConflict=function(e){if(e){var t={URI:this.noConflict()};return r.URITemplate&&"function"==typeof r.URITemplate.noConflict&&(t.URITemplate=r.URITemplate.noConflict()),r.IPv6&&"function"==typeof r.IPv6.noConflict&&(t.IPv6=r.IPv6.noConflict()),r.SecondLevelDomains&&"function"==typeof r.SecondLevelDomains.noConflict&&(t.SecondLevelDomains=r.SecondLevelDomains.noConflict()),t}return r.URI===this&&(r.URI=i),this},o.build=function(e){return!0===e?this._deferred_build=!0:(void 0===e||this._deferred_build)&&(this._string=s.build(this._parts),this._deferred_build=!1),this},o.clone=function(){return new s(this)},o.valueOf=o.toString=function(){return this.build(!1)._string},o.protocol=w("protocol"),o.username=w("username"),o.password=w("password"),o.hostname=w("hostname"),o.port=w("port"),o.query=S("query","?"),o.fragment=S("fragment","#"),o.search=function(e,t){var n=this.query(e,t);return"string"==typeof n&&n.length?"?"+n:n},o.hash=function(e,t){var n=this.fragment(e,t);return"string"==typeof n&&n.length?"#"+n:n},o.pathname=function(e,t){if(void 0===e||!0===e){var n=this._parts.path||(this._parts.hostname?"/":"");return e?(this._parts.urn?s.decodeUrnPath:s.decodePath)(n):n}return this._parts.urn?this._parts.path=e?s.recodeUrnPath(e):"":this._parts.path=e?s.recodePath(e):"/",this.build(!t),this},o.path=o.pathname,o.href=function(e,t){var n;if(void 0===e)return this.toString();this._string="",this._parts=s._parts();var r=e instanceof s,i="object"==typeof e&&(e.hostname||e.path||e.pathname);e.nodeName&&(e=e[s.getDomAttribute(e)]||"",i=!1);if(!r&&i&&void 0!==e.pathname&&(e=e.toString()),"string"==typeof e||e instanceof String)this._parts=s.parse(String(e),this._parts);else{if(!r&&!i)throw new TypeError("invalid input");var o=r?e._parts:e;for(n in o)"query"!==n&&a.call(this._parts,n)&&(this._parts[n]=o[n]);o.query&&this.query(o.query,!1)}return this.build(!t),this},o.is=function(e){var t=!1,r=!1,i=!1,o=!1,a=!1,c=!1,l=!1,u=!this._parts.urn;switch(this._parts.hostname&&(u=!1,r=s.ip4_expression.test(this._parts.hostname),i=s.ip6_expression.test(this._parts.hostname),a=(o=!(t=r||i))&&n&&n.has(this._parts.hostname),c=o&&s.idn_expression.test(this._parts.hostname),l=o&&s.punycode_expression.test(this._parts.hostname)),e.toLowerCase()){case"relative":return u;case"absolute":return!u;case"domain":case"name":return o;case"sld":return a;case"ip":return t;case"ip4":case"ipv4":case"inet4":return r;case"ip6":case"ipv6":case"inet6":return i;case"idn":return c;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return l}return null};var x=o.protocol,E=o.port,A=o.hostname;o.protocol=function(e,t){if(e&&!(e=e.replace(/:(\/\/)?$/,"")).match(s.protocol_expression))throw new TypeError('Protocol "'+e+"\" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]");return x.call(this,e,t)},o.scheme=o.protocol,o.port=function(e,t){return this._parts.urn?void 0===e?"":this:(void 0!==e&&(0===e&&(e=null),e&&(":"===(e+="").charAt(0)&&(e=e.substring(1)),s.ensureValidPort(e))),E.call(this,e,t))},o.hostname=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0!==e){var n={preventInvalidHostname:this._parts.preventInvalidHostname};if("/"!==s.parseHost(e,n))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');e=n.hostname,this._parts.preventInvalidHostname&&s.ensureValidHostname(e,this._parts.protocol)}return A.call(this,e,t)},o.origin=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){var n=this.protocol();return this.authority()?(n?n+"://":"")+this.authority():""}var r=s(e);return this.protocol(r.protocol()).authority(r.authority()).build(!t),this},o.host=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e)return this._parts.hostname?s.buildHost(this._parts):"";if("/"!==s.parseHost(e,this._parts))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');return this.build(!t),this},o.authority=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e)return this._parts.hostname?s.buildAuthority(this._parts):"";if("/"!==s.parseAuthority(e,this._parts))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');return this.build(!t),this},o.userinfo=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){var n=s.buildUserinfo(this._parts);return n?n.substring(0,n.length-1):n}return"@"!==e[e.length-1]&&(e+="@"),s.parseUserinfo(e,this._parts),this.build(!t),this},o.resource=function(e,t){var n;return void 0===e?this.path()+this.search()+this.hash():(n=s.parse(e),this._parts.path=n.path,this._parts.query=n.query,this._parts.fragment=n.fragment,this.build(!t),this)},o.subdomain=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var n=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,n)||""}var r=this._parts.hostname.length-this.domain().length,i=this._parts.hostname.substring(0,r),o=new RegExp("^"+c(i));if(e&&"."!==e.charAt(e.length-1)&&(e+="."),-1!==e.indexOf(":"))throw new TypeError("Domains cannot contain colons");return e&&s.ensureValidHostname(e,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(o,e),this.build(!t),this},o.domain=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("boolean"==typeof e&&(t=e,e=void 0),void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var n=this._parts.hostname.match(/\./g);if(n&&n.length<2)return this._parts.hostname;var r=this._parts.hostname.length-this.tld(t).length-1;return r=this._parts.hostname.lastIndexOf(".",r-1)+1,this._parts.hostname.substring(r)||""}if(!e)throw new TypeError("cannot set domain empty");if(-1!==e.indexOf(":"))throw new TypeError("Domains cannot contain colons");if(s.ensureValidHostname(e,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=e;else{var i=new RegExp(c(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(i,e)}return this.build(!t),this},o.tld=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("boolean"==typeof e&&(t=e,e=void 0),void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var r=this._parts.hostname.lastIndexOf("."),i=this._parts.hostname.substring(r+1);return!0!==t&&n&&n.list[i.toLowerCase()]&&n.get(this._parts.hostname)||i}var s;if(!e)throw new TypeError("cannot set TLD empty");if(e.match(/[^a-zA-Z0-9-]/)){if(!n||!n.is(e))throw new TypeError('TLD "'+e+'" contains characters other than [A-Z0-9]');s=new RegExp(c(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(s,e)}else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");s=new RegExp(c(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(s,e)}return this.build(!t),this},o.directory=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e||!0===e){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var n=this._parts.path.length-this.filename().length-1,r=this._parts.path.substring(0,n)||(this._parts.hostname?"/":"");return e?s.decodePath(r):r}var i=this._parts.path.length-this.filename().length,o=this._parts.path.substring(0,i),a=new RegExp("^"+c(o));return this.is("relative")||(e||(e="/"),"/"!==e.charAt(0)&&(e="/"+e)),e&&"/"!==e.charAt(e.length-1)&&(e+="/"),e=s.recodePath(e),this._parts.path=this._parts.path.replace(a,e),this.build(!t),this},o.filename=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("string"!=typeof e){if(!this._parts.path||"/"===this._parts.path)return"";var n=this._parts.path.lastIndexOf("/"),r=this._parts.path.substring(n+1);return e?s.decodePathSegment(r):r}var i=!1;"/"===e.charAt(0)&&(e=e.substring(1)),e.match(/\.?\//)&&(i=!0);var o=new RegExp(c(this.filename())+"$");return e=s.recodePath(e),this._parts.path=this._parts.path.replace(o,e),i?this.normalizePath(t):this.build(!t),this},o.suffix=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e||!0===e){if(!this._parts.path||"/"===this._parts.path)return"";var n,r,i=this.filename(),o=i.lastIndexOf(".");return-1===o?"":(n=i.substring(o+1),r=/^[a-z0-9%]+$/i.test(n)?n:"",e?s.decodePathSegment(r):r)}"."===e.charAt(0)&&(e=e.substring(1));var a,l=this.suffix();if(l)a=e?new RegExp(c(l)+"$"):new RegExp(c("."+l)+"$");else{if(!e)return this;this._parts.path+="."+s.recodePath(e)}return a&&(e=s.recodePath(e),this._parts.path=this._parts.path.replace(a,e)),this.build(!t),this},o.segment=function(e,t,n){var r=this._parts.urn?":":"/",i=this.path(),s="/"===i.substring(0,1),o=i.split(r);if(void 0!==e&&"number"!=typeof e&&(n=t,t=e,e=void 0),void 0!==e&&"number"!=typeof e)throw new Error('Bad segment "'+e+'", must be 0-based integer');if(s&&o.shift(),e<0&&(e=Math.max(o.length+e,0)),void 0===t)return void 0===e?o:o[e];if(null===e||void 0===o[e])if(u(t)){o=[];for(var a=0,c=t.length;a<c;a++)(t[a].length||o.length&&o[o.length-1].length)&&(o.length&&!o[o.length-1].length&&o.pop(),o.push(p(t[a])))}else(t||"string"==typeof t)&&(t=p(t),""===o[o.length-1]?o[o.length-1]=t:o.push(t));else t?o[e]=p(t):o.splice(e,1);return s&&o.unshift(""),this.path(o.join(r),n)},o.segmentCoded=function(e,t,n){var r,i,o;if("number"!=typeof e&&(n=t,t=e,e=void 0),void 0===t){if(u(r=this.segment(e,t,n)))for(i=0,o=r.length;i<o;i++)r[i]=s.decode(r[i]);else r=void 0!==r?s.decode(r):void 0;return r}if(u(t))for(i=0,o=t.length;i<o;i++)t[i]=s.encode(t[i]);else t="string"==typeof t||t instanceof String?s.encode(t):t;return this.segment(e,t,n)};var C=o.query;return o.query=function(e,t){if(!0===e)return s.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"==typeof e){var n=s.parseQuery(this._parts.query,this._parts.escapeQuerySpace),r=e.call(this,n);return this._parts.query=s.buildQuery(r||n,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!t),this}return void 0!==e&&"string"!=typeof e?(this._parts.query=s.buildQuery(e,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!t),this):C.call(this,e,t)},o.setQuery=function(e,t,n){var r=s.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("string"==typeof e||e instanceof String)r[e]=void 0!==t?t:null;else{if("object"!=typeof e)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");for(var i in e)a.call(e,i)&&(r[i]=e[i])}return this._parts.query=s.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},o.addQuery=function(e,t,n){var r=s.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return s.addQuery(r,e,void 0===t?null:t),this._parts.query=s.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},o.removeQuery=function(e,t,n){var r=s.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return s.removeQuery(r,e,t),this._parts.query=s.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},o.hasQuery=function(e,t,n){var r=s.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return s.hasQuery(r,e,t,n)},o.setSearch=o.setQuery,o.addSearch=o.addQuery,o.removeSearch=o.removeQuery,o.hasSearch=o.hasQuery,o.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},o.normalizeProtocol=function(e){return"string"==typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!e)),this},o.normalizeHostname=function(n){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!n)),this},o.normalizePort=function(e){return"string"==typeof this._parts.protocol&&this._parts.port===s.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!e)),this},o.normalizePath=function(e){var t,n=this._parts.path;if(!n)return this;if(this._parts.urn)return this._parts.path=s.recodeUrnPath(this._parts.path),this.build(!e),this;if("/"===this._parts.path)return this;var r,i,o="";for("/"!==(n=s.recodePath(n)).charAt(0)&&(t=!0,n="/"+n),"/.."!==n.slice(-3)&&"/."!==n.slice(-2)||(n+="/"),n=n.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),t&&(o=n.substring(1).match(/^(\.\.\/)+/)||"")&&(o=o[0]);-1!==(r=n.search(/\/\.\.(\/|$)/));)0!==r?(-1===(i=n.substring(0,r).lastIndexOf("/"))&&(i=r),n=n.substring(0,i)+n.substring(r+3)):n=n.substring(3);return t&&this.is("relative")&&(n=o+n.substring(1)),this._parts.path=n,this.build(!e),this},o.normalizePathname=o.normalizePath,o.normalizeQuery=function(e){return"string"==typeof this._parts.query&&(this._parts.query.length?this.query(s.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!e)),this},o.normalizeFragment=function(e){return this._parts.fragment||(this._parts.fragment=null,this.build(!e)),this},o.normalizeSearch=o.normalizeQuery,o.normalizeHash=o.normalizeFragment,o.iso8859=function(){var e=s.encode,t=s.decode;s.encode=escape,s.decode=decodeURIComponent;try{this.normalize()}finally{s.encode=e,s.decode=t}return this},o.unicode=function(){var e=s.encode,t=s.decode;s.encode=m,s.decode=unescape;try{this.normalize()}finally{s.encode=e,s.decode=t}return this},o.readable=function(){var t=this.clone();t.username("").password("").normalize();var n="";if(t._parts.protocol&&(n+=t._parts.protocol+"://"),t._parts.hostname&&(t.is("punycode")&&e?(n+=e.toUnicode(t._parts.hostname),t._parts.port&&(n+=":"+t._parts.port)):n+=t.host()),t._parts.hostname&&t._parts.path&&"/"!==t._parts.path.charAt(0)&&(n+="/"),n+=t.path(!0),t._parts.query){for(var r="",i=0,o=t._parts.query.split("&"),a=o.length;i<a;i++){var c=(o[i]||"").split("=");r+="&"+s.decodeQuery(c[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),void 0!==c[1]&&(r+="="+s.decodeQuery(c[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}n+="?"+r.substring(1)}return n+=s.decodeQuery(t.hash(),!0)},o.absoluteTo=function(e){var t,n,r,i=this.clone(),o=["protocol","username","password","hostname","port"];if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(e instanceof s||(e=new s(e)),i._parts.protocol)return i;if(i._parts.protocol=e._parts.protocol,this._parts.hostname)return i;for(n=0;r=o[n];n++)i._parts[r]=e._parts[r];return i._parts.path?(".."===i._parts.path.substring(-2)&&(i._parts.path+="/"),"/"!==i.path().charAt(0)&&(t=(t=e.directory())||(0===e.path().indexOf("/")?"/":""),i._parts.path=(t?t+"/":"")+i._parts.path,i.normalizePath())):(i._parts.path=e._parts.path,i._parts.query||(i._parts.query=e._parts.query)),i.build(),i},o.relativeTo=function(e){var t,n,r,i,o,a=this.clone().normalize();if(a._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(e=new s(e).normalize(),t=a._parts,n=e._parts,i=a.path(),o=e.path(),"/"!==i.charAt(0))throw new Error("URI is already relative");if("/"!==o.charAt(0))throw new Error("Cannot calculate a URI relative to another relative URI");if(t.protocol===n.protocol&&(t.protocol=null),t.username!==n.username||t.password!==n.password)return a.build();if(null!==t.protocol||null!==t.username||null!==t.password)return a.build();if(t.hostname!==n.hostname||t.port!==n.port)return a.build();if(t.hostname=null,t.port=null,i===o)return t.path="",a.build();if(!(r=s.commonPath(i,o)))return a.build();var c=n.path.substring(r.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return t.path=c+t.path.substring(r.length)||"./",a.build()},o.equals=function(e){var t,n,r,i,o,c=this.clone(),l=new s(e),d={};if(c.normalize(),l.normalize(),c.toString()===l.toString())return!0;if(r=c.query(),i=l.query(),c.query(""),l.query(""),c.toString()!==l.toString())return!1;if(r.length!==i.length)return!1;for(o in t=s.parseQuery(r,this._parts.escapeQuerySpace),n=s.parseQuery(i,this._parts.escapeQuerySpace),t)if(a.call(t,o)){if(u(t[o])){if(!f(t[o],n[o]))return!1}else if(t[o]!==n[o])return!1;d[o]=!0}for(o in n)if(a.call(n,o)&&!d[o])return!1;return!0},o.preventInvalidHostname=function(e){return this._parts.preventInvalidHostname=!!e,this},o.duplicateQueryParameters=function(e){return this._parts.duplicateQueryParameters=!!e,this},o.escapeQuerySpace=function(e){return this._parts.escapeQuerySpace=!!e,this},s}))},function(e,t,n){var r=n(89),i=n(25),s=n(90),o=n(56),a=n(68),c=Math.max;e.exports=function(e,t,n,l){e=i(e)?e:a(e),n=n&&!l?o(n):0;var u=e.length;return n<0&&(n=c(u+n,0)),s(e)?n<=u&&e.indexOf(t,n)>-1:!!u&&r(e,t,n)>-1}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(38);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){(function(e,r){var i; + */!function(s,a){"use strict";e.exports?e.exports=a(n(155),n(156),n(157)):(i=[n(155),n(156),n(157)],void 0===(o="function"==typeof(r=a)?r.apply(t,i):r)||(e.exports=o))}(0,(function(e,t,n,r){"use strict";var i=r&&r.URI;function o(e,t){var n=arguments.length>=1,r=arguments.length>=2;if(!(this instanceof o))return n?r?new o(e,t):new o(e):new o;if(void 0===e){if(n)throw new TypeError("undefined is not a valid argument for URI");e="undefined"!=typeof location?location.href+"":""}if(null===e&&n)throw new TypeError("null is not a valid argument for URI");return this.href(e),void 0!==t?this.absoluteTo(t):this}o.version="1.19.2";var s=o.prototype,a=Object.prototype.hasOwnProperty;function c(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function l(e){return void 0===e?"Undefined":String(Object.prototype.toString.call(e)).slice(8,-1)}function u(e){return"Array"===l(e)}function d(e,t){var n,r,i={};if("RegExp"===l(t))i=null;else if(u(t))for(n=0,r=t.length;n<r;n++)i[t[n]]=!0;else i[t]=!0;for(n=0,r=e.length;n<r;n++){(i&&void 0!==i[e[n]]||!i&&t.test(e[n]))&&(e.splice(n,1),r--,n--)}return e}function h(e,t){var n,r;if(u(t)){for(n=0,r=t.length;n<r;n++)if(!h(e,t[n]))return!1;return!0}var i=l(t);for(n=0,r=e.length;n<r;n++)if("RegExp"===i){if("string"==typeof e[n]&&e[n].match(t))return!0}else if(e[n]===t)return!0;return!1}function f(e,t){if(!u(e)||!u(t))return!1;if(e.length!==t.length)return!1;e.sort(),t.sort();for(var n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}function p(e){return e.replace(/^\/+|\/+$/g,"")}function g(e){return escape(e)}function m(e){return encodeURIComponent(e).replace(/[!'()*]/g,g).replace(/\*/g,"%2A")}o._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:o.preventInvalidHostname,duplicateQueryParameters:o.duplicateQueryParameters,escapeQuerySpace:o.escapeQuerySpace}},o.preventInvalidHostname=!1,o.duplicateQueryParameters=!1,o.escapeQuerySpace=!0,o.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,o.idn_expression=/[^a-z0-9\._-]/i,o.punycode_expression=/(xn--)/i,o.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,o.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,o.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“â€â€˜â€™]))/gi,o.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“â€â€žâ€˜â€™]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},o.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},o.hostProtocols=["http","https"],o.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,o.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},o.getDomAttribute=function(e){if(e&&e.nodeName){var t=e.nodeName.toLowerCase();if("input"!==t||"image"===e.type)return o.domAttributes[t]}},o.encode=m,o.decode=decodeURIComponent,o.iso8859=function(){o.encode=escape,o.decode=unescape},o.unicode=function(){o.encode=m,o.decode=decodeURIComponent},o.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/gi,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/gi,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/gi,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},o.encodeQuery=function(e,t){var n=o.encode(e+"");return void 0===t&&(t=o.escapeQuerySpace),t?n.replace(/%20/g,"+"):n},o.decodeQuery=function(e,t){e+="",void 0===t&&(t=o.escapeQuerySpace);try{return o.decode(t?e.replace(/\+/g,"%20"):e)}catch(t){return e}};var v,_={encode:"encode",decode:"decode"},b=function(e,t){return function(n){try{return o[t](n+"").replace(o.characters[e][t].expression,(function(n){return o.characters[e][t].map[n]}))}catch(e){return n}}};for(v in _)o[v+"PathSegment"]=b("pathname",_[v]),o[v+"UrnPathSegment"]=b("urnpath",_[v]);var y=function(e,t,n){return function(r){var i;i=n?function(e){return o[t](o[n](e))}:o[t];for(var s=(r+"").split(e),a=0,c=s.length;a<c;a++)s[a]=i(s[a]);return s.join(e)}};function w(e){return function(t,n){return void 0===t?this._parts[e]||"":(this._parts[e]=t||null,this.build(!n),this)}}function S(e,t){return function(n,r){return void 0===n?this._parts[e]||"":(null!==n&&(n+="").charAt(0)===t&&(n=n.substring(1)),this._parts[e]=n,this.build(!r),this)}}o.decodePath=y("/","decodePathSegment"),o.decodeUrnPath=y(":","decodeUrnPathSegment"),o.recodePath=y("/","encodePathSegment","decode"),o.recodeUrnPath=y(":","encodeUrnPathSegment","decode"),o.encodeReserved=b("reserved","encode"),o.parse=function(e,t){var n;return t||(t={preventInvalidHostname:o.preventInvalidHostname}),(n=e.indexOf("#"))>-1&&(t.fragment=e.substring(n+1)||null,e=e.substring(0,n)),(n=e.indexOf("?"))>-1&&(t.query=e.substring(n+1)||null,e=e.substring(0,n)),"//"===e.substring(0,2)?(t.protocol=null,e=e.substring(2),e=o.parseAuthority(e,t)):(n=e.indexOf(":"))>-1&&(t.protocol=e.substring(0,n)||null,t.protocol&&!t.protocol.match(o.protocol_expression)?t.protocol=void 0:"//"===e.substring(n+1,n+3)?(e=e.substring(n+3),e=o.parseAuthority(e,t)):(e=e.substring(n+1),t.urn=!0)),t.path=e,t},o.parseHost=function(e,t){e||(e="");var n,r,i=(e=e.replace(/\\/g,"/")).indexOf("/");if(-1===i&&(i=e.length),"["===e.charAt(0))n=e.indexOf("]"),t.hostname=e.substring(1,n)||null,t.port=e.substring(n+2,i)||null,"/"===t.port&&(t.port=null);else{var s=e.indexOf(":"),a=e.indexOf("/"),c=e.indexOf(":",s+1);-1!==c&&(-1===a||c<a)?(t.hostname=e.substring(0,i)||null,t.port=null):(r=e.substring(0,i).split(":"),t.hostname=r[0]||null,t.port=r[1]||null)}return t.hostname&&"/"!==e.substring(i).charAt(0)&&(i++,e="/"+e),t.preventInvalidHostname&&o.ensureValidHostname(t.hostname,t.protocol),t.port&&o.ensureValidPort(t.port),e.substring(i)||"/"},o.parseAuthority=function(e,t){return e=o.parseUserinfo(e,t),o.parseHost(e,t)},o.parseUserinfo=function(e,t){var n,r=e.indexOf("/"),i=e.lastIndexOf("@",r>-1?r:e.length-1);return i>-1&&(-1===r||i<r)?(n=e.substring(0,i).split(":"),t.username=n[0]?o.decode(n[0]):null,n.shift(),t.password=n[0]?o.decode(n.join(":")):null,e=e.substring(i+1)):(t.username=null,t.password=null),e},o.parseQuery=function(e,t){if(!e)return{};if(!(e=e.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,"")))return{};for(var n,r,i,s={},c=e.split("&"),l=c.length,u=0;u<l;u++)n=c[u].split("="),r=o.decodeQuery(n.shift(),t),i=n.length?o.decodeQuery(n.join("="),t):null,a.call(s,r)?("string"!=typeof s[r]&&null!==s[r]||(s[r]=[s[r]]),s[r].push(i)):s[r]=i;return s},o.build=function(e){var t="",n=!1;return e.protocol&&(t+=e.protocol+":"),e.urn||!t&&!e.hostname||(t+="//",n=!0),t+=o.buildAuthority(e)||"","string"==typeof e.path&&("/"!==e.path.charAt(0)&&n&&(t+="/"),t+=e.path),"string"==typeof e.query&&e.query&&(t+="?"+e.query),"string"==typeof e.fragment&&e.fragment&&(t+="#"+e.fragment),t},o.buildHost=function(e){var t="";return e.hostname?(o.ip6_expression.test(e.hostname)?t+="["+e.hostname+"]":t+=e.hostname,e.port&&(t+=":"+e.port),t):""},o.buildAuthority=function(e){return o.buildUserinfo(e)+o.buildHost(e)},o.buildUserinfo=function(e){var t="";return e.username&&(t+=o.encode(e.username)),e.password&&(t+=":"+o.encode(e.password)),t&&(t+="@"),t},o.buildQuery=function(e,t,n){var r,i,s,c,l="";for(i in e)if(a.call(e,i))if(u(e[i]))for(r={},s=0,c=e[i].length;s<c;s++)void 0!==e[i][s]&&void 0===r[e[i][s]+""]&&(l+="&"+o.buildQueryParameter(i,e[i][s],n),!0!==t&&(r[e[i][s]+""]=!0));else void 0!==e[i]&&(l+="&"+o.buildQueryParameter(i,e[i],n));return l.substring(1)},o.buildQueryParameter=function(e,t,n){return o.encodeQuery(e,n)+(null!==t?"="+o.encodeQuery(t,n):"")},o.addQuery=function(e,t,n){if("object"==typeof t)for(var r in t)a.call(t,r)&&o.addQuery(e,r,t[r]);else{if("string"!=typeof t)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");if(void 0===e[t])return void(e[t]=n);"string"==typeof e[t]&&(e[t]=[e[t]]),u(n)||(n=[n]),e[t]=(e[t]||[]).concat(n)}},o.setQuery=function(e,t,n){if("object"==typeof t)for(var r in t)a.call(t,r)&&o.setQuery(e,r,t[r]);else{if("string"!=typeof t)throw new TypeError("URI.setQuery() accepts an object, string as the name parameter");e[t]=void 0===n?null:n}},o.removeQuery=function(e,t,n){var r,i,s;if(u(t))for(r=0,i=t.length;r<i;r++)e[t[r]]=void 0;else if("RegExp"===l(t))for(s in e)t.test(s)&&(e[s]=void 0);else if("object"==typeof t)for(s in t)a.call(t,s)&&o.removeQuery(e,s,t[s]);else{if("string"!=typeof t)throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter");void 0!==n?"RegExp"===l(n)?!u(e[t])&&n.test(e[t])?e[t]=void 0:e[t]=d(e[t],n):e[t]!==String(n)||u(n)&&1!==n.length?u(e[t])&&(e[t]=d(e[t],n)):e[t]=void 0:e[t]=void 0}},o.hasQuery=function(e,t,n,r){switch(l(t)){case"String":break;case"RegExp":for(var i in e)if(a.call(e,i)&&t.test(i)&&(void 0===n||o.hasQuery(e,i,n)))return!0;return!1;case"Object":for(var s in t)if(a.call(t,s)&&!o.hasQuery(e,s,t[s]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(l(n)){case"Undefined":return t in e;case"Boolean":return n===Boolean(u(e[t])?e[t].length:e[t]);case"Function":return!!n(e[t],t,e);case"Array":return!!u(e[t])&&(r?h:f)(e[t],n);case"RegExp":return u(e[t])?!!r&&h(e[t],n):Boolean(e[t]&&e[t].match(n));case"Number":n=String(n);case"String":return u(e[t])?!!r&&h(e[t],n):e[t]===n;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},o.joinPaths=function(){for(var e=[],t=[],n=0,r=0;r<arguments.length;r++){var i=new o(arguments[r]);e.push(i);for(var s=i.segment(),a=0;a<s.length;a++)"string"==typeof s[a]&&t.push(s[a]),s[a]&&n++}if(!t.length||!n)return new o("");var c=new o("").segment(t);return""!==e[0].path()&&"/"!==e[0].path().slice(0,1)||c.path("/"+c.path()),c.normalize()},o.commonPath=function(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n<r;n++)if(e.charAt(n)!==t.charAt(n)){n--;break}return n<1?e.charAt(0)===t.charAt(0)&&"/"===e.charAt(0)?"/":"":("/"===e.charAt(n)&&"/"===t.charAt(n)||(n=e.substring(0,n).lastIndexOf("/")),e.substring(0,n+1))},o.withinString=function(e,t,n){n||(n={});var r=n.start||o.findUri.start,i=n.end||o.findUri.end,s=n.trim||o.findUri.trim,a=n.parens||o.findUri.parens,c=/[a-z0-9-]=["']?$/i;for(r.lastIndex=0;;){var l=r.exec(e);if(!l)break;var u=l.index;if(n.ignoreHtml){var d=e.slice(Math.max(u-3,0),u);if(d&&c.test(d))continue}for(var h=u+e.slice(u).search(i),f=e.slice(u,h),p=-1;;){var g=a.exec(f);if(!g)break;var m=g.index+g[0].length;p=Math.max(p,m)}if(!((f=p>-1?f.slice(0,p)+f.slice(p).replace(s,""):f.replace(s,"")).length<=l[0].length||n.ignore&&n.ignore.test(f))){var v=t(f,u,h=u+f.length,e);void 0!==v?(v=String(v),e=e.slice(0,u)+v+e.slice(h),r.lastIndex=u+v.length):r.lastIndex=h}}return r.lastIndex=0,e},o.ensureValidHostname=function(t,n){var r=!!t,i=!1;if(!!n&&(i=h(o.hostProtocols,n)),i&&!r)throw new TypeError("Hostname cannot be empty, if protocol is "+n);if(t&&t.match(o.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+t+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(t).match(o.invalid_hostname_characters))throw new TypeError('Hostname "'+t+'" contains characters other than [A-Z0-9.-:_]')}},o.ensureValidPort=function(e){if(e){var t=Number(e);if(!(/^[0-9]+$/.test(t)&&t>0&&t<65536))throw new TypeError('Port "'+e+'" is not a valid port')}},o.noConflict=function(e){if(e){var t={URI:this.noConflict()};return r.URITemplate&&"function"==typeof r.URITemplate.noConflict&&(t.URITemplate=r.URITemplate.noConflict()),r.IPv6&&"function"==typeof r.IPv6.noConflict&&(t.IPv6=r.IPv6.noConflict()),r.SecondLevelDomains&&"function"==typeof r.SecondLevelDomains.noConflict&&(t.SecondLevelDomains=r.SecondLevelDomains.noConflict()),t}return r.URI===this&&(r.URI=i),this},s.build=function(e){return!0===e?this._deferred_build=!0:(void 0===e||this._deferred_build)&&(this._string=o.build(this._parts),this._deferred_build=!1),this},s.clone=function(){return new o(this)},s.valueOf=s.toString=function(){return this.build(!1)._string},s.protocol=w("protocol"),s.username=w("username"),s.password=w("password"),s.hostname=w("hostname"),s.port=w("port"),s.query=S("query","?"),s.fragment=S("fragment","#"),s.search=function(e,t){var n=this.query(e,t);return"string"==typeof n&&n.length?"?"+n:n},s.hash=function(e,t){var n=this.fragment(e,t);return"string"==typeof n&&n.length?"#"+n:n},s.pathname=function(e,t){if(void 0===e||!0===e){var n=this._parts.path||(this._parts.hostname?"/":"");return e?(this._parts.urn?o.decodeUrnPath:o.decodePath)(n):n}return this._parts.urn?this._parts.path=e?o.recodeUrnPath(e):"":this._parts.path=e?o.recodePath(e):"/",this.build(!t),this},s.path=s.pathname,s.href=function(e,t){var n;if(void 0===e)return this.toString();this._string="",this._parts=o._parts();var r=e instanceof o,i="object"==typeof e&&(e.hostname||e.path||e.pathname);e.nodeName&&(e=e[o.getDomAttribute(e)]||"",i=!1);if(!r&&i&&void 0!==e.pathname&&(e=e.toString()),"string"==typeof e||e instanceof String)this._parts=o.parse(String(e),this._parts);else{if(!r&&!i)throw new TypeError("invalid input");var s=r?e._parts:e;for(n in s)"query"!==n&&a.call(this._parts,n)&&(this._parts[n]=s[n]);s.query&&this.query(s.query,!1)}return this.build(!t),this},s.is=function(e){var t=!1,r=!1,i=!1,s=!1,a=!1,c=!1,l=!1,u=!this._parts.urn;switch(this._parts.hostname&&(u=!1,r=o.ip4_expression.test(this._parts.hostname),i=o.ip6_expression.test(this._parts.hostname),a=(s=!(t=r||i))&&n&&n.has(this._parts.hostname),c=s&&o.idn_expression.test(this._parts.hostname),l=s&&o.punycode_expression.test(this._parts.hostname)),e.toLowerCase()){case"relative":return u;case"absolute":return!u;case"domain":case"name":return s;case"sld":return a;case"ip":return t;case"ip4":case"ipv4":case"inet4":return r;case"ip6":case"ipv6":case"inet6":return i;case"idn":return c;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return l}return null};var x=s.protocol,E=s.port,A=s.hostname;s.protocol=function(e,t){if(e&&!(e=e.replace(/:(\/\/)?$/,"")).match(o.protocol_expression))throw new TypeError('Protocol "'+e+"\" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]");return x.call(this,e,t)},s.scheme=s.protocol,s.port=function(e,t){return this._parts.urn?void 0===e?"":this:(void 0!==e&&(0===e&&(e=null),e&&(":"===(e+="").charAt(0)&&(e=e.substring(1)),o.ensureValidPort(e))),E.call(this,e,t))},s.hostname=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0!==e){var n={preventInvalidHostname:this._parts.preventInvalidHostname};if("/"!==o.parseHost(e,n))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');e=n.hostname,this._parts.preventInvalidHostname&&o.ensureValidHostname(e,this._parts.protocol)}return A.call(this,e,t)},s.origin=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){var n=this.protocol();return this.authority()?(n?n+"://":"")+this.authority():""}var r=o(e);return this.protocol(r.protocol()).authority(r.authority()).build(!t),this},s.host=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e)return this._parts.hostname?o.buildHost(this._parts):"";if("/"!==o.parseHost(e,this._parts))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');return this.build(!t),this},s.authority=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e)return this._parts.hostname?o.buildAuthority(this._parts):"";if("/"!==o.parseAuthority(e,this._parts))throw new TypeError('Hostname "'+e+'" contains characters other than [A-Z0-9.-]');return this.build(!t),this},s.userinfo=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){var n=o.buildUserinfo(this._parts);return n?n.substring(0,n.length-1):n}return"@"!==e[e.length-1]&&(e+="@"),o.parseUserinfo(e,this._parts),this.build(!t),this},s.resource=function(e,t){var n;return void 0===e?this.path()+this.search()+this.hash():(n=o.parse(e),this._parts.path=n.path,this._parts.query=n.query,this._parts.fragment=n.fragment,this.build(!t),this)},s.subdomain=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var n=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,n)||""}var r=this._parts.hostname.length-this.domain().length,i=this._parts.hostname.substring(0,r),s=new RegExp("^"+c(i));if(e&&"."!==e.charAt(e.length-1)&&(e+="."),-1!==e.indexOf(":"))throw new TypeError("Domains cannot contain colons");return e&&o.ensureValidHostname(e,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(s,e),this.build(!t),this},s.domain=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("boolean"==typeof e&&(t=e,e=void 0),void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var n=this._parts.hostname.match(/\./g);if(n&&n.length<2)return this._parts.hostname;var r=this._parts.hostname.length-this.tld(t).length-1;return r=this._parts.hostname.lastIndexOf(".",r-1)+1,this._parts.hostname.substring(r)||""}if(!e)throw new TypeError("cannot set domain empty");if(-1!==e.indexOf(":"))throw new TypeError("Domains cannot contain colons");if(o.ensureValidHostname(e,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=e;else{var i=new RegExp(c(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(i,e)}return this.build(!t),this},s.tld=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("boolean"==typeof e&&(t=e,e=void 0),void 0===e){if(!this._parts.hostname||this.is("IP"))return"";var r=this._parts.hostname.lastIndexOf("."),i=this._parts.hostname.substring(r+1);return!0!==t&&n&&n.list[i.toLowerCase()]&&n.get(this._parts.hostname)||i}var o;if(!e)throw new TypeError("cannot set TLD empty");if(e.match(/[^a-zA-Z0-9-]/)){if(!n||!n.is(e))throw new TypeError('TLD "'+e+'" contains characters other than [A-Z0-9]');o=new RegExp(c(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(o,e)}else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");o=new RegExp(c(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(o,e)}return this.build(!t),this},s.directory=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e||!0===e){if(!this._parts.path&&!this._parts.hostname)return"";if("/"===this._parts.path)return"/";var n=this._parts.path.length-this.filename().length-1,r=this._parts.path.substring(0,n)||(this._parts.hostname?"/":"");return e?o.decodePath(r):r}var i=this._parts.path.length-this.filename().length,s=this._parts.path.substring(0,i),a=new RegExp("^"+c(s));return this.is("relative")||(e||(e="/"),"/"!==e.charAt(0)&&(e="/"+e)),e&&"/"!==e.charAt(e.length-1)&&(e+="/"),e=o.recodePath(e),this._parts.path=this._parts.path.replace(a,e),this.build(!t),this},s.filename=function(e,t){if(this._parts.urn)return void 0===e?"":this;if("string"!=typeof e){if(!this._parts.path||"/"===this._parts.path)return"";var n=this._parts.path.lastIndexOf("/"),r=this._parts.path.substring(n+1);return e?o.decodePathSegment(r):r}var i=!1;"/"===e.charAt(0)&&(e=e.substring(1)),e.match(/\.?\//)&&(i=!0);var s=new RegExp(c(this.filename())+"$");return e=o.recodePath(e),this._parts.path=this._parts.path.replace(s,e),i?this.normalizePath(t):this.build(!t),this},s.suffix=function(e,t){if(this._parts.urn)return void 0===e?"":this;if(void 0===e||!0===e){if(!this._parts.path||"/"===this._parts.path)return"";var n,r,i=this.filename(),s=i.lastIndexOf(".");return-1===s?"":(n=i.substring(s+1),r=/^[a-z0-9%]+$/i.test(n)?n:"",e?o.decodePathSegment(r):r)}"."===e.charAt(0)&&(e=e.substring(1));var a,l=this.suffix();if(l)a=e?new RegExp(c(l)+"$"):new RegExp(c("."+l)+"$");else{if(!e)return this;this._parts.path+="."+o.recodePath(e)}return a&&(e=o.recodePath(e),this._parts.path=this._parts.path.replace(a,e)),this.build(!t),this},s.segment=function(e,t,n){var r=this._parts.urn?":":"/",i=this.path(),o="/"===i.substring(0,1),s=i.split(r);if(void 0!==e&&"number"!=typeof e&&(n=t,t=e,e=void 0),void 0!==e&&"number"!=typeof e)throw new Error('Bad segment "'+e+'", must be 0-based integer');if(o&&s.shift(),e<0&&(e=Math.max(s.length+e,0)),void 0===t)return void 0===e?s:s[e];if(null===e||void 0===s[e])if(u(t)){s=[];for(var a=0,c=t.length;a<c;a++)(t[a].length||s.length&&s[s.length-1].length)&&(s.length&&!s[s.length-1].length&&s.pop(),s.push(p(t[a])))}else(t||"string"==typeof t)&&(t=p(t),""===s[s.length-1]?s[s.length-1]=t:s.push(t));else t?s[e]=p(t):s.splice(e,1);return o&&s.unshift(""),this.path(s.join(r),n)},s.segmentCoded=function(e,t,n){var r,i,s;if("number"!=typeof e&&(n=t,t=e,e=void 0),void 0===t){if(u(r=this.segment(e,t,n)))for(i=0,s=r.length;i<s;i++)r[i]=o.decode(r[i]);else r=void 0!==r?o.decode(r):void 0;return r}if(u(t))for(i=0,s=t.length;i<s;i++)t[i]=o.encode(t[i]);else t="string"==typeof t||t instanceof String?o.encode(t):t;return this.segment(e,t,n)};var C=s.query;return s.query=function(e,t){if(!0===e)return o.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("function"==typeof e){var n=o.parseQuery(this._parts.query,this._parts.escapeQuerySpace),r=e.call(this,n);return this._parts.query=o.buildQuery(r||n,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!t),this}return void 0!==e&&"string"!=typeof e?(this._parts.query=o.buildQuery(e,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!t),this):C.call(this,e,t)},s.setQuery=function(e,t,n){var r=o.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if("string"==typeof e||e instanceof String)r[e]=void 0!==t?t:null;else{if("object"!=typeof e)throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");for(var i in e)a.call(e,i)&&(r[i]=e[i])}return this._parts.query=o.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},s.addQuery=function(e,t,n){var r=o.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return o.addQuery(r,e,void 0===t?null:t),this._parts.query=o.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},s.removeQuery=function(e,t,n){var r=o.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return o.removeQuery(r,e,t),this._parts.query=o.buildQuery(r,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),"string"!=typeof e&&(n=t),this.build(!n),this},s.hasQuery=function(e,t,n){var r=o.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return o.hasQuery(r,e,t,n)},s.setSearch=s.setQuery,s.addSearch=s.addQuery,s.removeSearch=s.removeQuery,s.hasSearch=s.hasQuery,s.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},s.normalizeProtocol=function(e){return"string"==typeof this._parts.protocol&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!e)),this},s.normalizeHostname=function(n){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!n)),this},s.normalizePort=function(e){return"string"==typeof this._parts.protocol&&this._parts.port===o.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!e)),this},s.normalizePath=function(e){var t,n=this._parts.path;if(!n)return this;if(this._parts.urn)return this._parts.path=o.recodeUrnPath(this._parts.path),this.build(!e),this;if("/"===this._parts.path)return this;var r,i,s="";for("/"!==(n=o.recodePath(n)).charAt(0)&&(t=!0,n="/"+n),"/.."!==n.slice(-3)&&"/."!==n.slice(-2)||(n+="/"),n=n.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),t&&(s=n.substring(1).match(/^(\.\.\/)+/)||"")&&(s=s[0]);-1!==(r=n.search(/\/\.\.(\/|$)/));)0!==r?(-1===(i=n.substring(0,r).lastIndexOf("/"))&&(i=r),n=n.substring(0,i)+n.substring(r+3)):n=n.substring(3);return t&&this.is("relative")&&(n=s+n.substring(1)),this._parts.path=n,this.build(!e),this},s.normalizePathname=s.normalizePath,s.normalizeQuery=function(e){return"string"==typeof this._parts.query&&(this._parts.query.length?this.query(o.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!e)),this},s.normalizeFragment=function(e){return this._parts.fragment||(this._parts.fragment=null,this.build(!e)),this},s.normalizeSearch=s.normalizeQuery,s.normalizeHash=s.normalizeFragment,s.iso8859=function(){var e=o.encode,t=o.decode;o.encode=escape,o.decode=decodeURIComponent;try{this.normalize()}finally{o.encode=e,o.decode=t}return this},s.unicode=function(){var e=o.encode,t=o.decode;o.encode=m,o.decode=unescape;try{this.normalize()}finally{o.encode=e,o.decode=t}return this},s.readable=function(){var t=this.clone();t.username("").password("").normalize();var n="";if(t._parts.protocol&&(n+=t._parts.protocol+"://"),t._parts.hostname&&(t.is("punycode")&&e?(n+=e.toUnicode(t._parts.hostname),t._parts.port&&(n+=":"+t._parts.port)):n+=t.host()),t._parts.hostname&&t._parts.path&&"/"!==t._parts.path.charAt(0)&&(n+="/"),n+=t.path(!0),t._parts.query){for(var r="",i=0,s=t._parts.query.split("&"),a=s.length;i<a;i++){var c=(s[i]||"").split("=");r+="&"+o.decodeQuery(c[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),void 0!==c[1]&&(r+="="+o.decodeQuery(c[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}n+="?"+r.substring(1)}return n+=o.decodeQuery(t.hash(),!0)},s.absoluteTo=function(e){var t,n,r,i=this.clone(),s=["protocol","username","password","hostname","port"];if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(e instanceof o||(e=new o(e)),i._parts.protocol)return i;if(i._parts.protocol=e._parts.protocol,this._parts.hostname)return i;for(n=0;r=s[n];n++)i._parts[r]=e._parts[r];return i._parts.path?(".."===i._parts.path.substring(-2)&&(i._parts.path+="/"),"/"!==i.path().charAt(0)&&(t=(t=e.directory())||(0===e.path().indexOf("/")?"/":""),i._parts.path=(t?t+"/":"")+i._parts.path,i.normalizePath())):(i._parts.path=e._parts.path,i._parts.query||(i._parts.query=e._parts.query)),i.build(),i},s.relativeTo=function(e){var t,n,r,i,s,a=this.clone().normalize();if(a._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(e=new o(e).normalize(),t=a._parts,n=e._parts,i=a.path(),s=e.path(),"/"!==i.charAt(0))throw new Error("URI is already relative");if("/"!==s.charAt(0))throw new Error("Cannot calculate a URI relative to another relative URI");if(t.protocol===n.protocol&&(t.protocol=null),t.username!==n.username||t.password!==n.password)return a.build();if(null!==t.protocol||null!==t.username||null!==t.password)return a.build();if(t.hostname!==n.hostname||t.port!==n.port)return a.build();if(t.hostname=null,t.port=null,i===s)return t.path="",a.build();if(!(r=o.commonPath(i,s)))return a.build();var c=n.path.substring(r.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return t.path=c+t.path.substring(r.length)||"./",a.build()},s.equals=function(e){var t,n,r,i,s,c=this.clone(),l=new o(e),d={};if(c.normalize(),l.normalize(),c.toString()===l.toString())return!0;if(r=c.query(),i=l.query(),c.query(""),l.query(""),c.toString()!==l.toString())return!1;if(r.length!==i.length)return!1;for(s in t=o.parseQuery(r,this._parts.escapeQuerySpace),n=o.parseQuery(i,this._parts.escapeQuerySpace),t)if(a.call(t,s)){if(u(t[s])){if(!f(t[s],n[s]))return!1}else if(t[s]!==n[s])return!1;d[s]=!0}for(s in n)if(a.call(n,s)&&!d[s])return!1;return!0},s.preventInvalidHostname=function(e){return this._parts.preventInvalidHostname=!!e,this},s.duplicateQueryParameters=function(e){return this._parts.duplicateQueryParameters=!!e,this},s.escapeQuerySpace=function(e){return this._parts.escapeQuerySpace=!!e,this},o}))},function(e,t,n){var r=n(113),i=n(29),o=n(114),s=n(70),a=n(92),c=Math.max;e.exports=function(e,t,n,l){e=i(e)?e:a(e),n=n&&!l?s(n):0;var u=e.length;return n<0&&(n=c(u+n,0)),o(e)?n<=u&&e.indexOf(t,n)>-1:!!u&&r(e,t,n)>-1}},function(e,t){var n=/^(?:0|[1-9]\d*)$/;e.exports=function(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&n.test(e))&&e>-1&&e%1==0&&e<t}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(48);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},function(e,t,n){var r=n(27),i=n(451),o=n(452),s=Object.defineProperty;t.f=n(32)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),i)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports={}},function(e,t,n){(function(e,r){var i; /** * @license * Lodash <https://lodash.com/> @@ -28,11 +28,11 @@ * Released under MIT license <https://lodash.com/license> * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var s="Expected a function",o="__lodash_placeholder__",a=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],c="[object Arguments]",l="[object Array]",u="[object Boolean]",d="[object Date]",h="[object Error]",f="[object Function]",p="[object GeneratorFunction]",g="[object Map]",m="[object Number]",v="[object Object]",_="[object RegExp]",b="[object Set]",y="[object String]",w="[object Symbol]",S="[object WeakMap]",x="[object ArrayBuffer]",E="[object DataView]",A="[object Float32Array]",C="[object Float64Array]",j="[object Int8Array]",T="[object Int16Array]",O="[object Int32Array]",k="[object Uint8Array]",N="[object Uint16Array]",I="[object Uint32Array]",M=/\b__p \+= '';/g,R=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,L=/[&<>"']/g,z=RegExp(P.source),F=RegExp(L.source),B=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,H=/<%=([\s\S]+?)%>/g,U=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$=/^\w*$/,W=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,V=/[\\^$.*+?()[\]{}|]/g,G=RegExp(V.source),J=/^\s+|\s+$/g,X=/^\s+/,Q=/\s+$/,Y=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,K=/\{\n\/\* \[wrapped with (.+)\] \*/,Z=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,se=/^0b[01]+$/i,oe=/^\[object .+?Constructor\]$/,ae=/^0o[0-7]+$/i,ce=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ue=/($^)/,de=/['\n\r\u2028\u2029\\]/g,he="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",fe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pe="[\\ud800-\\udfff]",ge="["+fe+"]",me="["+he+"]",ve="\\d+",_e="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",ye="[^\\ud800-\\udfff"+fe+ve+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",Se="[^\\ud800-\\udfff]",xe="(?:\\ud83c[\\udde6-\\uddff]){2}",Ee="[\\ud800-\\udbff][\\udc00-\\udfff]",Ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+be+"|"+ye+")",je="(?:"+Ae+"|"+ye+")",Te="(?:"+me+"|"+we+")"+"?",Oe="[\\ufe0e\\ufe0f]?"+Te+("(?:\\u200d(?:"+[Se,xe,Ee].join("|")+")[\\ufe0e\\ufe0f]?"+Te+")*"),ke="(?:"+[_e,xe,Ee].join("|")+")"+Oe,Ne="(?:"+[Se+me+"?",me,xe,Ee,pe].join("|")+")",Ie=RegExp("['’]","g"),Me=RegExp(me,"g"),Re=RegExp(we+"(?="+we+")|"+Ne+Oe,"g"),De=RegExp([Ae+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ge,Ae,"$"].join("|")+")",je+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ge,Ae+Ce,"$"].join("|")+")",Ae+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Ae+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ve,ke].join("|"),"g"),Pe=RegExp("[\\u200d\\ud800-\\udfff"+he+"\\ufe0e\\ufe0f]"),Le=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ze=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Fe=-1,Be={};Be[A]=Be[C]=Be[j]=Be[T]=Be[O]=Be[k]=Be["[object Uint8ClampedArray]"]=Be[N]=Be[I]=!0,Be[c]=Be[l]=Be[x]=Be[u]=Be[E]=Be[d]=Be[h]=Be[f]=Be[g]=Be[m]=Be[v]=Be[_]=Be[b]=Be[y]=Be[S]=!1;var qe={};qe[c]=qe[l]=qe[x]=qe[E]=qe[u]=qe[d]=qe[A]=qe[C]=qe[j]=qe[T]=qe[O]=qe[g]=qe[m]=qe[v]=qe[_]=qe[b]=qe[y]=qe[w]=qe[k]=qe["[object Uint8ClampedArray]"]=qe[N]=qe[I]=!0,qe[h]=qe[f]=qe[S]=!1;var He={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ue=parseFloat,$e=parseInt,We="object"==typeof e&&e&&e.Object===Object&&e,Ve="object"==typeof self&&self&&self.Object===Object&&self,Ge=We||Ve||Function("return this")(),Je=t&&!t.nodeType&&t,Xe=Je&&"object"==typeof r&&r&&!r.nodeType&&r,Qe=Xe&&Xe.exports===Je,Ye=Qe&&We.process,Ke=function(){try{var e=Xe&&Xe.require&&Xe.require("util").types;return e||Ye&&Ye.binding&&Ye.binding("util")}catch(e){}}(),Ze=Ke&&Ke.isArrayBuffer,et=Ke&&Ke.isDate,tt=Ke&&Ke.isMap,nt=Ke&&Ke.isRegExp,rt=Ke&&Ke.isSet,it=Ke&&Ke.isTypedArray;function st(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function ot(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i<s;){var o=e[i];t(r,o,n(o),e)}return r}function at(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function ct(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function lt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function ut(e,t){for(var n=-1,r=null==e?0:e.length,i=0,s=[];++n<r;){var o=e[n];t(o,n,e)&&(s[i++]=o)}return s}function dt(e,t){return!!(null==e?0:e.length)&&wt(e,t,0)>-1}function ht(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function ft(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}function pt(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}function gt(e,t,n,r){var i=-1,s=null==e?0:e.length;for(r&&s&&(n=e[++i]);++i<s;)n=t(n,e[i],i,e);return n}function mt(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n}function vt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var _t=At("length");function bt(e,t,n){var r;return n(e,(function(e,n,i){if(t(e,n,i))return r=n,!1})),r}function yt(e,t,n,r){for(var i=e.length,s=n+(r?1:-1);r?s--:++s<i;)if(t(e[s],s,e))return s;return-1}function wt(e,t,n){return t==t?function(e,t,n){var r=n-1,i=e.length;for(;++r<i;)if(e[r]===t)return r;return-1}(e,t,n):yt(e,xt,n)}function St(e,t,n,r){for(var i=n-1,s=e.length;++i<s;)if(r(e[i],t))return i;return-1}function xt(e){return e!=e}function Et(e,t){var n=null==e?0:e.length;return n?Tt(e,t)/n:NaN}function At(e){return function(t){return null==t?void 0:t[e]}}function Ct(e){return function(t){return null==e?void 0:e[t]}}function jt(e,t,n,r,i){return i(e,(function(e,i,s){n=r?(r=!1,e):t(n,e,i,s)})),n}function Tt(e,t){for(var n,r=-1,i=e.length;++r<i;){var s=t(e[r]);void 0!==s&&(n=void 0===n?s:n+s)}return n}function Ot(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function kt(e){return function(t){return e(t)}}function Nt(e,t){return ft(t,(function(t){return e[t]}))}function It(e,t){return e.has(t)}function Mt(e,t){for(var n=-1,r=e.length;++n<r&&wt(t,e[n],0)>-1;);return n}function Rt(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Dt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Pt=Ct({À:"A",Ã:"A",Â:"A",Ã:"A",Ä:"A",Ã…:"A",à :"a",á:"a",â:"a",ã:"a",ä:"a",Ã¥:"a",Ç:"C",ç:"c",Ã:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",ÃŒ:"I",Ã:"I",ÃŽ:"I",Ã:"I",ì:"i",Ã:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ã’:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ãœ:"U",ù:"u",ú:"u",û:"u",ü:"u",Ã:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ä€:"A",Ä‚:"A",Ä„:"A",Ä:"a",ă:"a",Ä…:"a",Ć:"C",Ĉ:"C",ÄŠ:"C",ÄŒ:"C",ć:"c",ĉ:"c",Ä‹:"c",Ä:"c",ÄŽ:"D",Ä:"D",Ä:"d",Ä‘:"d",Ä’:"E",Ä”:"E",Ä–:"E",Ę:"E",Äš:"E",Ä“:"e",Ä•:"e",Ä—:"e",Ä™:"e",Ä›:"e",Äœ:"G",Äž:"G",Ä :"G",Ä¢:"G",Ä:"g",ÄŸ:"g",Ä¡:"g",Ä£:"g",Ĥ:"H",Ħ:"H",Ä¥:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Ä®:"I",Ä°:"I",Ä©:"i",Ä«:"i",Ä:"i",į:"i",ı:"i",Ä´:"J",ĵ:"j",Ķ:"K",Ä·:"k",ĸ:"k",Ĺ:"L",Ä»:"L",Ľ:"L",Ä¿:"L",Å:"L",ĺ:"l",ļ:"l",ľ:"l",Å€:"l",Å‚:"l",Ń:"N",Å…:"N",Ň:"N",ÅŠ:"N",Å„:"n",ņ:"n",ň:"n",Å‹:"n",ÅŒ:"O",ÅŽ:"O",Å:"O",Å:"o",Å:"o",Å‘:"o",Å”:"R",Å–:"R",Ř:"R",Å•:"r",Å—:"r",Å™:"r",Åš:"S",Åœ:"S",Åž:"S",Å :"S",Å›:"s",Å:"s",ÅŸ:"s",Å¡:"s",Å¢:"T",Ť:"T",Ŧ:"T",Å£:"t",Å¥:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Å®:"U",Å°:"U",Ų:"U",Å©:"u",Å«:"u",Å:"u",ů:"u",ű:"u",ų:"u",Å´:"W",ŵ:"w",Ŷ:"Y",Å·:"y",Ÿ:"Y",Ź:"Z",Å»:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Å’:"Oe",Å“:"oe",ʼn:"'n",Å¿:"s"}),Lt=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function zt(e){return"\\"+He[e]}function Ft(e){return Pe.test(e)}function Bt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function qt(e,t){return function(n){return e(t(n))}}function Ht(e,t){for(var n=-1,r=e.length,i=0,s=[];++n<r;){var a=e[n];a!==t&&a!==o||(e[n]=o,s[i++]=n)}return s}function Ut(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function $t(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function Wt(e){return Ft(e)?function(e){var t=Re.lastIndex=0;for(;Re.test(e);)++t;return t}(e):_t(e)}function Vt(e){return Ft(e)?function(e){return e.match(Re)||[]}(e):function(e){return e.split("")}(e)}var Gt=Ct({"&":"&","<":"<",">":">",""":'"',"'":"'"});var Jt=function e(t){var n,r=(t=null==t?Ge:Jt.defaults(Ge.Object(),t,Jt.pick(Ge,ze))).Array,i=t.Date,he=t.Error,fe=t.Function,pe=t.Math,ge=t.Object,me=t.RegExp,ve=t.String,_e=t.TypeError,be=r.prototype,ye=fe.prototype,we=ge.prototype,Se=t["__core-js_shared__"],xe=ye.toString,Ee=we.hasOwnProperty,Ae=0,Ce=(n=/[^.]+$/.exec(Se&&Se.keys&&Se.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",je=we.toString,Te=xe.call(ge),Oe=Ge._,ke=me("^"+xe.call(Ee).replace(V,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ne=Qe?t.Buffer:void 0,Re=t.Symbol,Pe=t.Uint8Array,He=Ne?Ne.allocUnsafe:void 0,We=qt(ge.getPrototypeOf,ge),Ve=ge.create,Je=we.propertyIsEnumerable,Xe=be.splice,Ye=Re?Re.isConcatSpreadable:void 0,Ke=Re?Re.iterator:void 0,_t=Re?Re.toStringTag:void 0,Ct=function(){try{var e=Zi(ge,"defineProperty");return e({},"",{}),e}catch(e){}}(),Xt=t.clearTimeout!==Ge.clearTimeout&&t.clearTimeout,Qt=i&&i.now!==Ge.Date.now&&i.now,Yt=t.setTimeout!==Ge.setTimeout&&t.setTimeout,Kt=pe.ceil,Zt=pe.floor,en=ge.getOwnPropertySymbols,tn=Ne?Ne.isBuffer:void 0,nn=t.isFinite,rn=be.join,sn=qt(ge.keys,ge),on=pe.max,an=pe.min,cn=i.now,ln=t.parseInt,un=pe.random,dn=be.reverse,hn=Zi(t,"DataView"),fn=Zi(t,"Map"),pn=Zi(t,"Promise"),gn=Zi(t,"Set"),mn=Zi(t,"WeakMap"),vn=Zi(ge,"create"),_n=mn&&new mn,bn={},yn=Cs(hn),wn=Cs(fn),Sn=Cs(pn),xn=Cs(gn),En=Cs(mn),An=Re?Re.prototype:void 0,Cn=An?An.valueOf:void 0,jn=An?An.toString:void 0;function Tn(e){if($o(e)&&!Mo(e)&&!(e instanceof In)){if(e instanceof Nn)return e;if(Ee.call(e,"__wrapped__"))return js(e)}return new Nn(e)}var On=function(){function e(){}return function(t){if(!Uo(t))return{};if(Ve)return Ve(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function kn(){}function Nn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function In(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Rn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Dn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Pn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Dn;++t<n;)this.add(e[t])}function Ln(e){var t=this.__data__=new Rn(e);this.size=t.size}function zn(e,t){var n=Mo(e),r=!n&&Io(e),i=!n&&!r&&Lo(e),s=!n&&!r&&!i&&Ko(e),o=n||r||i||s,a=o?Ot(e.length,ve):[],c=a.length;for(var l in e)!t&&!Ee.call(e,l)||o&&("length"==l||i&&("offset"==l||"parent"==l)||s&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||os(l,c))||a.push(l);return a}function Fn(e){var t=e.length;return t?e[Pr(0,t-1)]:void 0}function Bn(e,t){return xs(vi(e),Xn(t,0,e.length))}function qn(e){return xs(vi(e))}function Hn(e,t,n){(void 0!==n&&!Oo(e[t],n)||void 0===n&&!(t in e))&&Gn(e,t,n)}function Un(e,t,n){var r=e[t];Ee.call(e,t)&&Oo(r,n)&&(void 0!==n||t in e)||Gn(e,t,n)}function $n(e,t){for(var n=e.length;n--;)if(Oo(e[n][0],t))return n;return-1}function Wn(e,t,n,r){return er(e,(function(e,i,s){t(r,e,n(e),s)})),r}function Vn(e,t){return e&&_i(t,ya(t),e)}function Gn(e,t,n){"__proto__"==t&&Ct?Ct(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Jn(e,t){for(var n=-1,i=t.length,s=r(i),o=null==e;++n<i;)s[n]=o?void 0:ga(e,t[n]);return s}function Xn(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}function Qn(e,t,n,r,i,s){var o,a=1&t,l=2&t,h=4&t;if(n&&(o=i?n(e,r,i,s):n(e)),void 0!==o)return o;if(!Uo(e))return e;var S=Mo(e);if(S){if(o=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Ee.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!a)return vi(e,o)}else{var M=ns(e),R=M==f||M==p;if(Lo(e))return di(e,a);if(M==v||M==c||R&&!i){if(o=l||R?{}:is(e),!a)return l?function(e,t){return _i(e,ts(e),t)}(e,function(e,t){return e&&_i(t,wa(t),e)}(o,e)):function(e,t){return _i(e,es(e),t)}(e,Vn(o,e))}else{if(!qe[M])return i?e:{};o=function(e,t,n){var r=e.constructor;switch(t){case x:return hi(e);case u:case d:return new r(+e);case E:return function(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case A:case C:case j:case T:case O:case k:case"[object Uint8ClampedArray]":case N:case I:return fi(e,n);case g:return new r;case m:case y:return new r(e);case _:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new r;case w:return i=e,Cn?ge(Cn.call(i)):{}}var i}(e,M,a)}}s||(s=new Ln);var D=s.get(e);if(D)return D;s.set(e,o),Xo(e)?e.forEach((function(r){o.add(Qn(r,t,n,r,e,s))})):Wo(e)&&e.forEach((function(r,i){o.set(i,Qn(r,t,n,i,e,s))}));var P=S?void 0:(h?l?Vi:Wi:l?wa:ya)(e);return at(P||e,(function(r,i){P&&(r=e[i=r]),Un(o,i,Qn(r,t,n,i,e,s))})),o}function Yn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ge(e);r--;){var i=n[r],s=t[i],o=e[i];if(void 0===o&&!(i in e)||!s(o))return!1}return!0}function Kn(e,t,n){if("function"!=typeof e)throw new _e(s);return bs((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var i=-1,s=dt,o=!0,a=e.length,c=[],l=t.length;if(!a)return c;n&&(t=ft(t,kt(n))),r?(s=ht,o=!1):t.length>=200&&(s=It,o=!1,t=new Pn(t));e:for(;++i<a;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,o&&d==d){for(var h=l;h--;)if(t[h]===d)continue e;c.push(u)}else s(t,d,r)||c.push(u)}return c}Tn.templateSettings={escape:B,evaluate:q,interpolate:H,variable:"",imports:{_:Tn}},Tn.prototype=kn.prototype,Tn.prototype.constructor=Tn,Nn.prototype=On(kn.prototype),Nn.prototype.constructor=Nn,In.prototype=On(kn.prototype),In.prototype.constructor=In,Mn.prototype.clear=function(){this.__data__=vn?vn(null):{},this.size=0},Mn.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Mn.prototype.get=function(e){var t=this.__data__;if(vn){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Ee.call(t,e)?t[e]:void 0},Mn.prototype.has=function(e){var t=this.__data__;return vn?void 0!==t[e]:Ee.call(t,e)},Mn.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=vn&&void 0===t?"__lodash_hash_undefined__":t,this},Rn.prototype.clear=function(){this.__data__=[],this.size=0},Rn.prototype.delete=function(e){var t=this.__data__,n=$n(t,e);return!(n<0)&&(n==t.length-1?t.pop():Xe.call(t,n,1),--this.size,!0)},Rn.prototype.get=function(e){var t=this.__data__,n=$n(t,e);return n<0?void 0:t[n][1]},Rn.prototype.has=function(e){return $n(this.__data__,e)>-1},Rn.prototype.set=function(e,t){var n=this.__data__,r=$n(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(fn||Rn),string:new Mn}},Dn.prototype.delete=function(e){var t=Yi(this,e).delete(e);return this.size-=t?1:0,t},Dn.prototype.get=function(e){return Yi(this,e).get(e)},Dn.prototype.has=function(e){return Yi(this,e).has(e)},Dn.prototype.set=function(e,t){var n=Yi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Pn.prototype.add=Pn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Rn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Rn){var r=n.__data__;if(!fn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Dn(r)}return n.set(e,t),this.size=n.size,this};var er=wi(cr),tr=wi(lr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r<i;){var s=e[r],o=t(s);if(null!=o&&(void 0===a?o==o&&!Yo(o):n(o,a)))var a=o,c=s}return c}function ir(e,t){var n=[];return er(e,(function(e,r,i){t(e,r,i)&&n.push(e)})),n}function sr(e,t,n,r,i){var s=-1,o=e.length;for(n||(n=ss),i||(i=[]);++s<o;){var a=e[s];t>0&&n(a)?t>1?sr(a,t-1,n,r,i):pt(i,a):r||(i[i.length]=a)}return i}var or=Si(),ar=Si(!0);function cr(e,t){return e&&or(e,t,ya)}function lr(e,t){return e&&ar(e,t,ya)}function ur(e,t){return ut(t,(function(t){return Bo(e[t])}))}function dr(e,t){for(var n=0,r=(t=ai(t,e)).length;null!=e&&n<r;)e=e[As(t[n++])];return n&&n==r?e:void 0}function hr(e,t,n){var r=t(e);return Mo(e)?r:pt(r,n(e))}function fr(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":_t&&_t in ge(e)?function(e){var t=Ee.call(e,_t),n=e[_t];try{e[_t]=void 0;var r=!0}catch(e){}var i=je.call(e);r&&(t?e[_t]=n:delete e[_t]);return i}(e):function(e){return je.call(e)}(e)}function pr(e,t){return e>t}function gr(e,t){return null!=e&&Ee.call(e,t)}function mr(e,t){return null!=e&&t in ge(e)}function vr(e,t,n){for(var i=n?ht:dt,s=e[0].length,o=e.length,a=o,c=r(o),l=1/0,u=[];a--;){var d=e[a];a&&t&&(d=ft(d,kt(t))),l=an(d.length,l),c[a]=!n&&(t||s>=120&&d.length>=120)?new Pn(a&&d):void 0}d=e[0];var h=-1,f=c[0];e:for(;++h<s&&u.length<l;){var p=d[h],g=t?t(p):p;if(p=n||0!==p?p:0,!(f?It(f,g):i(u,g,n))){for(a=o;--a;){var m=c[a];if(!(m?It(m,g):i(e[a],g,n)))continue e}f&&f.push(g),u.push(p)}}return u}function _r(e,t,n){var r=null==(e=gs(e,t=ai(t,e)))?e:e[As(zs(t))];return null==r?void 0:st(r,e,n)}function br(e){return $o(e)&&fr(e)==c}function yr(e,t,n,r,i){return e===t||(null==e||null==t||!$o(e)&&!$o(t)?e!=e&&t!=t:function(e,t,n,r,i,s){var o=Mo(e),a=Mo(t),f=o?l:ns(e),p=a?l:ns(t),S=(f=f==c?v:f)==v,A=(p=p==c?v:p)==v,C=f==p;if(C&&Lo(e)){if(!Lo(t))return!1;o=!0,S=!1}if(C&&!S)return s||(s=new Ln),o||Ko(e)?Ui(e,t,n,r,i,s):function(e,t,n,r,i,s,o){switch(n){case E:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case x:return!(e.byteLength!=t.byteLength||!s(new Pe(e),new Pe(t)));case u:case d:case m:return Oo(+e,+t);case h:return e.name==t.name&&e.message==t.message;case _:case y:return e==t+"";case g:var a=Bt;case b:var c=1&r;if(a||(a=Ut),e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=2,o.set(e,t);var f=Ui(a(e),a(t),r,i,s,o);return o.delete(e),f;case w:if(Cn)return Cn.call(e)==Cn.call(t)}return!1}(e,t,f,n,r,i,s);if(!(1&n)){var j=S&&Ee.call(e,"__wrapped__"),T=A&&Ee.call(t,"__wrapped__");if(j||T){var O=j?e.value():e,k=T?t.value():t;return s||(s=new Ln),i(O,k,n,r,s)}}if(!C)return!1;return s||(s=new Ln),function(e,t,n,r,i,s){var o=1&n,a=Wi(e),c=a.length,l=Wi(t).length;if(c!=l&&!o)return!1;var u=c;for(;u--;){var d=a[u];if(!(o?d in t:Ee.call(t,d)))return!1}var h=s.get(e),f=s.get(t);if(h&&f)return h==t&&f==e;var p=!0;s.set(e,t),s.set(t,e);var g=o;for(;++u<c;){d=a[u];var m=e[d],v=t[d];if(r)var _=o?r(v,m,d,t,e,s):r(m,v,d,e,t,s);if(!(void 0===_?m===v||i(m,v,n,r,s):_)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,y=t.constructor;b==y||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof y&&y instanceof y||(p=!1)}return s.delete(e),s.delete(t),p}(e,t,n,r,i,s)}(e,t,n,r,yr,i))}function wr(e,t,n,r){var i=n.length,s=i,o=!r;if(null==e)return!s;for(e=ge(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<s;){var c=(a=n[i])[0],l=e[c],u=a[1];if(o&&a[2]){if(void 0===l&&!(c in e))return!1}else{var d=new Ln;if(r)var h=r(l,u,c,e,t,d);if(!(void 0===h?yr(u,l,3,r,d):h))return!1}}return!0}function Sr(e){return!(!Uo(e)||(t=e,Ce&&Ce in t))&&(Bo(e)?ke:oe).test(Cs(e));var t}function xr(e){return"function"==typeof e?e:null==e?Va:"object"==typeof e?Mo(e)?Or(e[0],e[1]):Tr(e):tc(e)}function Er(e){if(!ds(e))return sn(e);var t=[];for(var n in ge(e))Ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Ar(e){if(!Uo(e))return function(e){var t=[];if(null!=e)for(var n in ge(e))t.push(n);return t}(e);var t=ds(e),n=[];for(var r in e)("constructor"!=r||!t&&Ee.call(e,r))&&n.push(r);return n}function Cr(e,t){return e<t}function jr(e,t){var n=-1,i=Do(e)?r(e.length):[];return er(e,(function(e,r,s){i[++n]=t(e,r,s)})),i}function Tr(e){var t=Ki(e);return 1==t.length&&t[0][2]?fs(t[0][0],t[0][1]):function(n){return n===e||wr(n,e,t)}}function Or(e,t){return cs(e)&&hs(t)?fs(As(e),t):function(n){var r=ga(n,e);return void 0===r&&r===t?ma(n,e):yr(t,r,3)}}function kr(e,t,n,r,i){e!==t&&or(t,(function(s,o){if(i||(i=new Ln),Uo(s))!function(e,t,n,r,i,s,o){var a=vs(e,n),c=vs(t,n),l=o.get(c);if(l)return void Hn(e,n,l);var u=s?s(a,c,n+"",e,t,o):void 0,d=void 0===u;if(d){var h=Mo(c),f=!h&&Lo(c),p=!h&&!f&&Ko(c);u=c,h||f||p?Mo(a)?u=a:Po(a)?u=vi(a):f?(d=!1,u=di(c,!0)):p?(d=!1,u=fi(c,!0)):u=[]:Go(c)||Io(c)?(u=a,Io(a)?u=oa(a):Uo(a)&&!Bo(a)||(u=is(c))):d=!1}d&&(o.set(c,u),i(u,c,r,s,o),o.delete(c));Hn(e,n,u)}(e,t,o,n,kr,r,i);else{var a=r?r(vs(e,o),s,o+"",e,t,i):void 0;void 0===a&&(a=s),Hn(e,o,a)}}),wa)}function Nr(e,t){var n=e.length;if(n)return os(t+=t<0?n:0,n)?e[t]:void 0}function Ir(e,t,n){t=t.length?ft(t,(function(e){return Mo(e)?function(t){return dr(t,1===e.length?e[0]:e)}:e})):[Va];var r=-1;return t=ft(t,kt(Qi())),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(jr(e,(function(e,n,i){return{criteria:ft(t,(function(t){return t(e)})),index:++r,value:e}})),(function(e,t){return function(e,t,n){var r=-1,i=e.criteria,s=t.criteria,o=i.length,a=n.length;for(;++r<o;){var c=pi(i[r],s[r]);if(c){if(r>=a)return c;var l=n[r];return c*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)}))}function Mr(e,t,n){for(var r=-1,i=t.length,s={};++r<i;){var o=t[r],a=dr(e,o);n(a,o)&&qr(s,ai(o,e),a)}return s}function Rr(e,t,n,r){var i=r?St:wt,s=-1,o=t.length,a=e;for(e===t&&(t=vi(t)),n&&(a=ft(e,kt(n)));++s<o;)for(var c=0,l=t[s],u=n?n(l):l;(c=i(a,u,c,r))>-1;)a!==e&&Xe.call(a,c,1),Xe.call(e,c,1);return e}function Dr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==s){var s=i;os(i)?Xe.call(e,i,1):Zr(e,i)}}return e}function Pr(e,t){return e+Zt(un()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function zr(e,t){return ys(ps(e,t,Va),e+"")}function Fr(e){return Fn(Oa(e))}function Br(e,t){var n=Oa(e);return xs(n,Xn(t,0,n.length))}function qr(e,t,n,r){if(!Uo(e))return e;for(var i=-1,s=(t=ai(t,e)).length,o=s-1,a=e;null!=a&&++i<s;){var c=As(t[i]),l=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(i!=o){var u=a[c];void 0===(l=r?r(u,c,a):void 0)&&(l=Uo(u)?u:os(t[i+1])?[]:{})}Un(a,c,l),a=a[c]}return e}var Hr=_n?function(e,t){return _n.set(e,t),e}:Va,Ur=Ct?function(e,t){return Ct(e,"toString",{configurable:!0,enumerable:!1,value:Ua(t),writable:!0})}:Va;function $r(e){return xs(Oa(e))}function Wr(e,t,n){var i=-1,s=e.length;t<0&&(t=-t>s?0:s+t),(n=n>s?s:n)<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var o=r(s);++i<s;)o[i]=e[i+t];return o}function Vr(e,t){var n;return er(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n}function Gr(e,t,n){var r=0,i=null==e?r:e.length;if("number"==typeof t&&t==t&&i<=2147483647){for(;r<i;){var s=r+i>>>1,o=e[s];null!==o&&!Yo(o)&&(n?o<=t:o<t)?r=s+1:i=s}return i}return Jr(e,t,Va,n)}function Jr(e,t,n,r){var i=0,s=null==e?0:e.length;if(0===s)return 0;for(var o=(t=n(t))!=t,a=null===t,c=Yo(t),l=void 0===t;i<s;){var u=Zt((i+s)/2),d=n(e[u]),h=void 0!==d,f=null===d,p=d==d,g=Yo(d);if(o)var m=r||p;else m=l?p&&(r||h):a?p&&h&&(r||!f):c?p&&h&&!f&&(r||!g):!f&&!g&&(r?d<=t:d<t);m?i=u+1:s=u}return an(s,4294967294)}function Xr(e,t){for(var n=-1,r=e.length,i=0,s=[];++n<r;){var o=e[n],a=t?t(o):o;if(!n||!Oo(a,c)){var c=a;s[i++]=0===o?0:o}}return s}function Qr(e){return"number"==typeof e?e:Yo(e)?NaN:+e}function Yr(e){if("string"==typeof e)return e;if(Mo(e))return ft(e,Yr)+"";if(Yo(e))return jn?jn.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Kr(e,t,n){var r=-1,i=dt,s=e.length,o=!0,a=[],c=a;if(n)o=!1,i=ht;else if(s>=200){var l=t?null:Li(e);if(l)return Ut(l);o=!1,i=It,c=new Pn}else c=t?[]:a;e:for(;++r<s;){var u=e[r],d=t?t(u):u;if(u=n||0!==u?u:0,o&&d==d){for(var h=c.length;h--;)if(c[h]===d)continue e;t&&c.push(d),a.push(u)}else i(c,d,n)||(c!==a&&c.push(d),a.push(u))}return a}function Zr(e,t){return null==(e=gs(e,t=ai(t,e)))||delete e[As(zs(t))]}function ei(e,t,n,r){return qr(e,t,n(dr(e,t)),r)}function ti(e,t,n,r){for(var i=e.length,s=r?i:-1;(r?s--:++s<i)&&t(e[s],s,e););return n?Wr(e,r?0:s,r?s+1:i):Wr(e,r?s+1:0,r?i:s)}function ni(e,t){var n=e;return n instanceof In&&(n=n.value()),gt(t,(function(e,t){return t.func.apply(t.thisArg,pt([e],t.args))}),n)}function ri(e,t,n){var i=e.length;if(i<2)return i?Kr(e[0]):[];for(var s=-1,o=r(i);++s<i;)for(var a=e[s],c=-1;++c<i;)c!=s&&(o[s]=Zn(o[s]||a,e[c],t,n));return Kr(sr(o,1),t,n)}function ii(e,t,n){for(var r=-1,i=e.length,s=t.length,o={};++r<i;){var a=r<s?t[r]:void 0;n(o,e[r],a)}return o}function si(e){return Po(e)?e:[]}function oi(e){return"function"==typeof e?e:Va}function ai(e,t){return Mo(e)?e:cs(e,t)?[e]:Es(aa(e))}var ci=zr;function li(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:Wr(e,t,n)}var ui=Xt||function(e){return Ge.clearTimeout(e)};function di(e,t){if(t)return e.slice();var n=e.length,r=He?He(n):new e.constructor(n);return e.copy(r),r}function hi(e){var t=new e.constructor(e.byteLength);return new Pe(t).set(new Pe(e)),t}function fi(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function pi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,s=Yo(e),o=void 0!==t,a=null===t,c=t==t,l=Yo(t);if(!a&&!l&&!s&&e>t||s&&o&&c&&!a&&!l||r&&o&&c||!n&&c||!i)return 1;if(!r&&!s&&!l&&e<t||l&&n&&i&&!r&&!s||a&&n&&i||!o&&i||!c)return-1}return 0}function gi(e,t,n,i){for(var s=-1,o=e.length,a=n.length,c=-1,l=t.length,u=on(o-a,0),d=r(l+u),h=!i;++c<l;)d[c]=t[c];for(;++s<a;)(h||s<o)&&(d[n[s]]=e[s]);for(;u--;)d[c++]=e[s++];return d}function mi(e,t,n,i){for(var s=-1,o=e.length,a=-1,c=n.length,l=-1,u=t.length,d=on(o-c,0),h=r(d+u),f=!i;++s<d;)h[s]=e[s];for(var p=s;++l<u;)h[p+l]=t[l];for(;++a<c;)(f||s<o)&&(h[p+n[a]]=e[s++]);return h}function vi(e,t){var n=-1,i=e.length;for(t||(t=r(i));++n<i;)t[n]=e[n];return t}function _i(e,t,n,r){var i=!n;n||(n={});for(var s=-1,o=t.length;++s<o;){var a=t[s],c=r?r(n[a],e[a],a,n,e):void 0;void 0===c&&(c=e[a]),i?Gn(n,a,c):Un(n,a,c)}return n}function bi(e,t){return function(n,r){var i=Mo(n)?ot:Wn,s=t?t():{};return i(n,e,Qi(r,2),s)}}function yi(e){return zr((function(t,n){var r=-1,i=n.length,s=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(i--,s):void 0,o&&as(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),t=ge(t);++r<i;){var a=n[r];a&&e(t,a,r,s)}return t}))}function wi(e,t){return function(n,r){if(null==n)return n;if(!Do(n))return e(n,r);for(var i=n.length,s=t?i:-1,o=ge(n);(t?s--:++s<i)&&!1!==r(o[s],s,o););return n}}function Si(e){return function(t,n,r){for(var i=-1,s=ge(t),o=r(t),a=o.length;a--;){var c=o[e?a:++i];if(!1===n(s[c],c,s))break}return t}}function xi(e){return function(t){var n=Ft(t=aa(t))?Vt(t):void 0,r=n?n[0]:t.charAt(0),i=n?li(n,1).join(""):t.slice(1);return r[e]()+i}}function Ei(e){return function(t){return gt(Ba(Ia(t).replace(Ie,"")),e,"")}}function Ai(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=On(e.prototype),r=e.apply(n,t);return Uo(r)?r:n}}function Ci(e){return function(t,n,r){var i=ge(t);if(!Do(t)){var s=Qi(n,3);t=ya(t),n=function(e){return s(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[s?t[o]:o]:void 0}}function ji(e){return $i((function(t){var n=t.length,r=n,i=Nn.prototype.thru;for(e&&t.reverse();r--;){var o=t[r];if("function"!=typeof o)throw new _e(s);if(i&&!a&&"wrapper"==Ji(o))var a=new Nn([],!0)}for(r=a?r:n;++r<n;){var c=Ji(o=t[r]),l="wrapper"==c?Gi(o):void 0;a=l&&ls(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?a[Ji(l[0])].apply(a,l[3]):1==o.length&&ls(o)?a[c]():a.thru(o)}return function(){var e=arguments,r=e[0];if(a&&1==e.length&&Mo(r))return a.plant(r).value();for(var i=0,s=n?t[i].apply(this,e):r;++i<n;)s=t[i].call(this,s);return s}}))}function Ti(e,t,n,i,s,o,a,c,l,u){var d=128&t,h=1&t,f=2&t,p=24&t,g=512&t,m=f?void 0:Ai(e);return function v(){for(var _=arguments.length,b=r(_),y=_;y--;)b[y]=arguments[y];if(p)var w=Xi(v),S=Dt(b,w);if(i&&(b=gi(b,i,s,p)),o&&(b=mi(b,o,a,p)),_-=S,p&&_<u){var x=Ht(b,w);return Di(e,t,Ti,v.placeholder,n,b,x,c,l,u-_)}var E=h?n:this,A=f?E[e]:e;return _=b.length,c?b=ms(b,c):g&&_>1&&b.reverse(),d&&l<_&&(b.length=l),this&&this!==Ge&&this instanceof v&&(A=m||Ai(A)),A.apply(E,b)}}function Oi(e,t){return function(n,r){return function(e,t,n,r){return cr(e,(function(e,i,s){t(r,n(e),i,s)})),r}(n,e,t(r),{})}}function ki(e,t){return function(n,r){var i;if(void 0===n&&void 0===r)return t;if(void 0!==n&&(i=n),void 0!==r){if(void 0===i)return r;"string"==typeof n||"string"==typeof r?(n=Yr(n),r=Yr(r)):(n=Qr(n),r=Qr(r)),i=e(n,r)}return i}}function Ni(e){return $i((function(t){return t=ft(t,kt(Qi())),zr((function(n){var r=this;return e(t,(function(e){return st(e,r,n)}))}))}))}function Ii(e,t){var n=(t=void 0===t?" ":Yr(t)).length;if(n<2)return n?Lr(t,e):t;var r=Lr(t,Kt(e/Wt(t)));return Ft(t)?li(Vt(r),0,e).join(""):r.slice(0,e)}function Mi(e){return function(t,n,i){return i&&"number"!=typeof i&&as(t,n,i)&&(n=i=void 0),t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n,i){for(var s=-1,o=on(Kt((t-e)/(n||1)),0),a=r(o);o--;)a[i?o:++s]=e,e+=n;return a}(t,n,i=void 0===i?t<n?1:-1:na(i),e)}}function Ri(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=sa(t),n=sa(n)),e(t,n)}}function Di(e,t,n,r,i,s,o,a,c,l){var u=8&t;t|=u?32:64,4&(t&=~(u?64:32))||(t&=-4);var d=[e,t,i,u?s:void 0,u?o:void 0,u?void 0:s,u?void 0:o,a,c,l],h=n.apply(void 0,d);return ls(e)&&_s(h,d),h.placeholder=r,ws(h,e,t)}function Pi(e){var t=pe[e];return function(e,n){if(e=sa(e),(n=null==n?0:an(ra(n),292))&&nn(e)){var r=(aa(e)+"e").split("e");return+((r=(aa(t(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}var Li=gn&&1/Ut(new gn([,-0]))[1]==1/0?function(e){return new gn(e)}:Ya;function zi(e){return function(t){var n=ns(t);return n==g?Bt(t):n==b?$t(t):function(e,t){return ft(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Fi(e,t,n,i,a,c,l,u){var d=2&t;if(!d&&"function"!=typeof e)throw new _e(s);var h=i?i.length:0;if(h||(t&=-97,i=a=void 0),l=void 0===l?l:on(ra(l),0),u=void 0===u?u:ra(u),h-=a?a.length:0,64&t){var f=i,p=a;i=a=void 0}var g=d?void 0:Gi(e),m=[e,t,n,i,a,f,p,c,l,u];if(g&&function(e,t){var n=e[1],r=t[1],i=n|r,s=i<131,a=128==r&&8==n||128==r&&256==n&&e[7].length<=t[8]||384==r&&t[7].length<=t[8]&&8==n;if(!s&&!a)return e;1&r&&(e[2]=t[2],i|=1&n?0:4);var c=t[3];if(c){var l=e[3];e[3]=l?gi(l,c,t[4]):c,e[4]=l?Ht(e[3],o):t[4]}(c=t[5])&&(l=e[5],e[5]=l?mi(l,c,t[6]):c,e[6]=l?Ht(e[5],o):t[6]);(c=t[7])&&(e[7]=c);128&r&&(e[8]=null==e[8]?t[8]:an(e[8],t[8]));null==e[9]&&(e[9]=t[9]);e[0]=t[0],e[1]=i}(m,g),e=m[0],t=m[1],n=m[2],i=m[3],a=m[4],!(u=m[9]=void 0===m[9]?d?0:e.length:on(m[9]-h,0))&&24&t&&(t&=-25),t&&1!=t)v=8==t||16==t?function(e,t,n){var i=Ai(e);return function s(){for(var o=arguments.length,a=r(o),c=o,l=Xi(s);c--;)a[c]=arguments[c];var u=o<3&&a[0]!==l&&a[o-1]!==l?[]:Ht(a,l);if((o-=u.length)<n)return Di(e,t,Ti,s.placeholder,void 0,a,u,void 0,void 0,n-o);var d=this&&this!==Ge&&this instanceof s?i:e;return st(d,this,a)}}(e,t,u):32!=t&&33!=t||a.length?Ti.apply(void 0,m):function(e,t,n,i){var s=1&t,o=Ai(e);return function t(){for(var a=-1,c=arguments.length,l=-1,u=i.length,d=r(u+c),h=this&&this!==Ge&&this instanceof t?o:e;++l<u;)d[l]=i[l];for(;c--;)d[l++]=arguments[++a];return st(h,s?n:this,d)}}(e,t,n,i);else var v=function(e,t,n){var r=1&t,i=Ai(e);return function t(){var s=this&&this!==Ge&&this instanceof t?i:e;return s.apply(r?n:this,arguments)}}(e,t,n);return ws((g?Hr:_s)(v,m),e,t)}function Bi(e,t,n,r){return void 0===e||Oo(e,we[n])&&!Ee.call(r,n)?t:e}function qi(e,t,n,r,i,s){return Uo(e)&&Uo(t)&&(s.set(t,e),kr(e,t,void 0,qi,s),s.delete(t)),e}function Hi(e){return Go(e)?void 0:e}function Ui(e,t,n,r,i,s){var o=1&n,a=e.length,c=t.length;if(a!=c&&!(o&&c>a))return!1;var l=s.get(e),u=s.get(t);if(l&&u)return l==t&&u==e;var d=-1,h=!0,f=2&n?new Pn:void 0;for(s.set(e,t),s.set(t,e);++d<a;){var p=e[d],g=t[d];if(r)var m=o?r(g,p,d,t,e,s):r(p,g,d,e,t,s);if(void 0!==m){if(m)continue;h=!1;break}if(f){if(!vt(t,(function(e,t){if(!It(f,t)&&(p===e||i(p,e,n,r,s)))return f.push(t)}))){h=!1;break}}else if(p!==g&&!i(p,g,n,r,s)){h=!1;break}}return s.delete(e),s.delete(t),h}function $i(e){return ys(ps(e,void 0,Ms),e+"")}function Wi(e){return hr(e,ya,es)}function Vi(e){return hr(e,wa,ts)}var Gi=_n?function(e){return _n.get(e)}:Ya;function Ji(e){for(var t=e.name+"",n=bn[t],r=Ee.call(bn,t)?n.length:0;r--;){var i=n[r],s=i.func;if(null==s||s==e)return i.name}return t}function Xi(e){return(Ee.call(Tn,"placeholder")?Tn:e).placeholder}function Qi(){var e=Tn.iteratee||Ga;return e=e===Ga?xr:e,arguments.length?e(arguments[0],arguments[1]):e}function Yi(e,t){var n,r,i=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function Ki(e){for(var t=ya(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,hs(i)]}return t}function Zi(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Sr(n)?n:void 0}var es=en?function(e){return null==e?[]:(e=ge(e),ut(en(e),(function(t){return Je.call(e,t)})))}:ic,ts=en?function(e){for(var t=[];e;)pt(t,es(e)),e=We(e);return t}:ic,ns=fr;function rs(e,t,n){for(var r=-1,i=(t=ai(t,e)).length,s=!1;++r<i;){var o=As(t[r]);if(!(s=null!=e&&n(e,o)))break;e=e[o]}return s||++r!=i?s:!!(i=null==e?0:e.length)&&Ho(i)&&os(o,i)&&(Mo(e)||Io(e))}function is(e){return"function"!=typeof e.constructor||ds(e)?{}:On(We(e))}function ss(e){return Mo(e)||Io(e)||!!(Ye&&e&&e[Ye])}function os(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&ce.test(e))&&e>-1&&e%1==0&&e<t}function as(e,t,n){if(!Uo(n))return!1;var r=typeof t;return!!("number"==r?Do(n)&&os(t,n.length):"string"==r&&t in n)&&Oo(n[t],e)}function cs(e,t){if(Mo(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Yo(e))||($.test(e)||!U.test(e)||null!=t&&e in ge(t))}function ls(e){var t=Ji(e),n=Tn[t];if("function"!=typeof n||!(t in In.prototype))return!1;if(e===n)return!0;var r=Gi(n);return!!r&&e===r[0]}(hn&&ns(new hn(new ArrayBuffer(1)))!=E||fn&&ns(new fn)!=g||pn&&"[object Promise]"!=ns(pn.resolve())||gn&&ns(new gn)!=b||mn&&ns(new mn)!=S)&&(ns=function(e){var t=fr(e),n=t==v?e.constructor:void 0,r=n?Cs(n):"";if(r)switch(r){case yn:return E;case wn:return g;case Sn:return"[object Promise]";case xn:return b;case En:return S}return t});var us=Se?Bo:sc;function ds(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||we)}function hs(e){return e==e&&!Uo(e)}function fs(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in ge(n)))}}function ps(e,t,n){return t=on(void 0===t?e.length-1:t,0),function(){for(var i=arguments,s=-1,o=on(i.length-t,0),a=r(o);++s<o;)a[s]=i[t+s];s=-1;for(var c=r(t+1);++s<t;)c[s]=i[s];return c[t]=n(a),st(e,this,c)}}function gs(e,t){return t.length<2?e:dr(e,Wr(t,0,-1))}function ms(e,t){for(var n=e.length,r=an(t.length,n),i=vi(e);r--;){var s=t[r];e[r]=os(s,n)?i[s]:void 0}return e}function vs(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var _s=Ss(Hr),bs=Yt||function(e,t){return Ge.setTimeout(e,t)},ys=Ss(Ur);function ws(e,t,n){var r=t+"";return ys(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Y,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return at(a,(function(n){var r="_."+n[0];t&n[1]&&!dt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(K);return t?t[1].split(Z):[]}(r),n)))}function Ss(e){var t=0,n=0;return function(){var r=cn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function xs(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n<t;){var s=Pr(n,i),o=e[s];e[s]=e[n],e[n]=o}return e.length=t,e}var Es=function(e){var t=xo(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(W,(function(e,n,r,i){t.push(r?i.replace(te,"$1"):n||e)})),t}));function As(e){if("string"==typeof e||Yo(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Cs(e){if(null!=e){try{return xe.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function js(e){if(e instanceof In)return e.clone();var t=new Nn(e.__wrapped__,e.__chain__);return t.__actions__=vi(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Ts=zr((function(e,t){return Po(e)?Zn(e,sr(t,1,Po,!0)):[]})),Os=zr((function(e,t){var n=zs(t);return Po(n)&&(n=void 0),Po(e)?Zn(e,sr(t,1,Po,!0),Qi(n,2)):[]})),ks=zr((function(e,t){var n=zs(t);return Po(n)&&(n=void 0),Po(e)?Zn(e,sr(t,1,Po,!0),void 0,n):[]}));function Ns(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=on(r+i,0)),yt(e,Qi(t,3),i)}function Is(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return void 0!==n&&(i=ra(n),i=n<0?on(r+i,0):an(i,r-1)),yt(e,Qi(t,3),i,!0)}function Ms(e){return(null==e?0:e.length)?sr(e,1):[]}function Rs(e){return e&&e.length?e[0]:void 0}var Ds=zr((function(e){var t=ft(e,si);return t.length&&t[0]===e[0]?vr(t):[]})),Ps=zr((function(e){var t=zs(e),n=ft(e,si);return t===zs(n)?t=void 0:n.pop(),n.length&&n[0]===e[0]?vr(n,Qi(t,2)):[]})),Ls=zr((function(e){var t=zs(e),n=ft(e,si);return(t="function"==typeof t?t:void 0)&&n.pop(),n.length&&n[0]===e[0]?vr(n,void 0,t):[]}));function zs(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}var Fs=zr(Bs);function Bs(e,t){return e&&e.length&&t&&t.length?Rr(e,t):e}var qs=$i((function(e,t){var n=null==e?0:e.length,r=Jn(e,t);return Dr(e,ft(t,(function(e){return os(e,n)?+e:e})).sort(pi)),r}));function Hs(e){return null==e?e:dn.call(e)}var Us=zr((function(e){return Kr(sr(e,1,Po,!0))})),$s=zr((function(e){var t=zs(e);return Po(t)&&(t=void 0),Kr(sr(e,1,Po,!0),Qi(t,2))})),Ws=zr((function(e){var t=zs(e);return t="function"==typeof t?t:void 0,Kr(sr(e,1,Po,!0),void 0,t)}));function Vs(e){if(!e||!e.length)return[];var t=0;return e=ut(e,(function(e){if(Po(e))return t=on(e.length,t),!0})),Ot(t,(function(t){return ft(e,At(t))}))}function Gs(e,t){if(!e||!e.length)return[];var n=Vs(e);return null==t?n:ft(n,(function(e){return st(t,void 0,e)}))}var Js=zr((function(e,t){return Po(e)?Zn(e,t):[]})),Xs=zr((function(e){return ri(ut(e,Po))})),Qs=zr((function(e){var t=zs(e);return Po(t)&&(t=void 0),ri(ut(e,Po),Qi(t,2))})),Ys=zr((function(e){var t=zs(e);return t="function"==typeof t?t:void 0,ri(ut(e,Po),void 0,t)})),Ks=zr(Vs);var Zs=zr((function(e){var t=e.length,n=t>1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Gs(e,n)}));function eo(e){var t=Tn(e);return t.__chain__=!0,t}function to(e,t){return t(e)}var no=$i((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Jn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof In&&os(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:to,args:[i],thisArg:void 0}),new Nn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var ro=bi((function(e,t,n){Ee.call(e,n)?++e[n]:Gn(e,n,1)}));var io=Ci(Ns),so=Ci(Is);function oo(e,t){return(Mo(e)?at:er)(e,Qi(t,3))}function ao(e,t){return(Mo(e)?ct:tr)(e,Qi(t,3))}var co=bi((function(e,t,n){Ee.call(e,n)?e[n].push(t):Gn(e,n,[t])}));var lo=zr((function(e,t,n){var i=-1,s="function"==typeof t,o=Do(e)?r(e.length):[];return er(e,(function(e){o[++i]=s?st(t,e,n):_r(e,t,n)})),o})),uo=bi((function(e,t,n){Gn(e,n,t)}));function ho(e,t){return(Mo(e)?ft:jr)(e,Qi(t,3))}var fo=bi((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var po=zr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&as(e,t[0],t[1])?t=[]:n>2&&as(t[0],t[1],t[2])&&(t=[t[0]]),Ir(e,sr(t,1),[])})),go=Qt||function(){return Ge.Date.now()};function mo(e,t,n){return t=n?void 0:t,Fi(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function vo(e,t){var n;if("function"!=typeof t)throw new _e(s);return e=ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var _o=zr((function(e,t,n){var r=1;if(n.length){var i=Ht(n,Xi(_o));r|=32}return Fi(e,r,t,n,i)})),bo=zr((function(e,t,n){var r=3;if(n.length){var i=Ht(n,Xi(bo));r|=32}return Fi(t,r,e,n,i)}));function yo(e,t,n){var r,i,o,a,c,l,u=0,d=!1,h=!1,f=!0;if("function"!=typeof e)throw new _e(s);function p(t){var n=r,s=i;return r=i=void 0,u=t,a=e.apply(s,n)}function g(e){return u=e,c=bs(v,t),d?p(e):a}function m(e){var n=e-l;return void 0===l||n>=t||n<0||h&&e-u>=o}function v(){var e=go();if(m(e))return _(e);c=bs(v,function(e){var n=t-(e-l);return h?an(n,o-(e-u)):n}(e))}function _(e){return c=void 0,f&&r?p(e):(r=i=void 0,a)}function b(){var e=go(),n=m(e);if(r=arguments,i=this,l=e,n){if(void 0===c)return g(l);if(h)return ui(c),c=bs(v,t),p(l)}return void 0===c&&(c=bs(v,t)),a}return t=sa(t)||0,Uo(n)&&(d=!!n.leading,o=(h="maxWait"in n)?on(sa(n.maxWait)||0,t):o,f="trailing"in n?!!n.trailing:f),b.cancel=function(){void 0!==c&&ui(c),u=0,r=l=i=c=void 0},b.flush=function(){return void 0===c?a:_(go())},b}var wo=zr((function(e,t){return Kn(e,1,t)})),So=zr((function(e,t,n){return Kn(e,sa(t)||0,n)}));function xo(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new _e(s);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var o=e.apply(this,r);return n.cache=s.set(i,o)||s,o};return n.cache=new(xo.Cache||Dn),n}function Eo(e){if("function"!=typeof e)throw new _e(s);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}xo.Cache=Dn;var Ao=ci((function(e,t){var n=(t=1==t.length&&Mo(t[0])?ft(t[0],kt(Qi())):ft(sr(t,1),kt(Qi()))).length;return zr((function(r){for(var i=-1,s=an(r.length,n);++i<s;)r[i]=t[i].call(this,r[i]);return st(e,this,r)}))})),Co=zr((function(e,t){return Fi(e,32,void 0,t,Ht(t,Xi(Co)))})),jo=zr((function(e,t){return Fi(e,64,void 0,t,Ht(t,Xi(jo)))})),To=$i((function(e,t){return Fi(e,256,void 0,void 0,void 0,t)}));function Oo(e,t){return e===t||e!=e&&t!=t}var ko=Ri(pr),No=Ri((function(e,t){return e>=t})),Io=br(function(){return arguments}())?br:function(e){return $o(e)&&Ee.call(e,"callee")&&!Je.call(e,"callee")},Mo=r.isArray,Ro=Ze?kt(Ze):function(e){return $o(e)&&fr(e)==x};function Do(e){return null!=e&&Ho(e.length)&&!Bo(e)}function Po(e){return $o(e)&&Do(e)}var Lo=tn||sc,zo=et?kt(et):function(e){return $o(e)&&fr(e)==d};function Fo(e){if(!$o(e))return!1;var t=fr(e);return t==h||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Go(e)}function Bo(e){if(!Uo(e))return!1;var t=fr(e);return t==f||t==p||"[object AsyncFunction]"==t||"[object Proxy]"==t}function qo(e){return"number"==typeof e&&e==ra(e)}function Ho(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Uo(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function $o(e){return null!=e&&"object"==typeof e}var Wo=tt?kt(tt):function(e){return $o(e)&&ns(e)==g};function Vo(e){return"number"==typeof e||$o(e)&&fr(e)==m}function Go(e){if(!$o(e)||fr(e)!=v)return!1;var t=We(e);if(null===t)return!0;var n=Ee.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&xe.call(n)==Te}var Jo=nt?kt(nt):function(e){return $o(e)&&fr(e)==_};var Xo=rt?kt(rt):function(e){return $o(e)&&ns(e)==b};function Qo(e){return"string"==typeof e||!Mo(e)&&$o(e)&&fr(e)==y}function Yo(e){return"symbol"==typeof e||$o(e)&&fr(e)==w}var Ko=it?kt(it):function(e){return $o(e)&&Ho(e.length)&&!!Be[fr(e)]};var Zo=Ri(Cr),ea=Ri((function(e,t){return e<=t}));function ta(e){if(!e)return[];if(Do(e))return Qo(e)?Vt(e):vi(e);if(Ke&&e[Ke])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ke]());var t=ns(e);return(t==g?Bt:t==b?Ut:Oa)(e)}function na(e){return e?(e=sa(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ra(e){var t=na(e),n=t%1;return t==t?n?t-n:t:0}function ia(e){return e?Xn(ra(e),0,4294967295):0}function sa(e){if("number"==typeof e)return e;if(Yo(e))return NaN;if(Uo(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Uo(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(J,"");var n=se.test(e);return n||ae.test(e)?$e(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function oa(e){return _i(e,wa(e))}function aa(e){return null==e?"":Yr(e)}var ca=yi((function(e,t){if(ds(t)||Do(t))_i(t,ya(t),e);else for(var n in t)Ee.call(t,n)&&Un(e,n,t[n])})),la=yi((function(e,t){_i(t,wa(t),e)})),ua=yi((function(e,t,n,r){_i(t,wa(t),e,r)})),da=yi((function(e,t,n,r){_i(t,ya(t),e,r)})),ha=$i(Jn);var fa=zr((function(e,t){e=ge(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&as(t[0],t[1],i)&&(r=1);++n<r;)for(var s=t[n],o=wa(s),a=-1,c=o.length;++a<c;){var l=o[a],u=e[l];(void 0===u||Oo(u,we[l])&&!Ee.call(e,l))&&(e[l]=s[l])}return e})),pa=zr((function(e){return e.push(void 0,qi),st(xa,void 0,e)}));function ga(e,t,n){var r=null==e?void 0:dr(e,t);return void 0===r?n:r}function ma(e,t){return null!=e&&rs(e,t,mr)}var va=Oi((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=je.call(t)),e[t]=n}),Ua(Va)),_a=Oi((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=je.call(t)),Ee.call(e,t)?e[t].push(n):e[t]=[n]}),Qi),ba=zr(_r);function ya(e){return Do(e)?zn(e):Er(e)}function wa(e){return Do(e)?zn(e,!0):Ar(e)}var Sa=yi((function(e,t,n){kr(e,t,n)})),xa=yi((function(e,t,n,r){kr(e,t,n,r)})),Ea=$i((function(e,t){var n={};if(null==e)return n;var r=!1;t=ft(t,(function(t){return t=ai(t,e),r||(r=t.length>1),t})),_i(e,Vi(e),n),r&&(n=Qn(n,7,Hi));for(var i=t.length;i--;)Zr(n,t[i]);return n}));var Aa=$i((function(e,t){return null==e?{}:function(e,t){return Mr(e,t,(function(t,n){return ma(e,n)}))}(e,t)}));function Ca(e,t){if(null==e)return{};var n=ft(Vi(e),(function(e){return[e]}));return t=Qi(t),Mr(e,n,(function(e,n){return t(e,n[0])}))}var ja=zi(ya),Ta=zi(wa);function Oa(e){return null==e?[]:Nt(e,ya(e))}var ka=Ei((function(e,t,n){return t=t.toLowerCase(),e+(n?Na(t):t)}));function Na(e){return Fa(aa(e).toLowerCase())}function Ia(e){return(e=aa(e))&&e.replace(le,Pt).replace(Me,"")}var Ma=Ei((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ra=Ei((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Da=xi("toLowerCase");var Pa=Ei((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var La=Ei((function(e,t,n){return e+(n?" ":"")+Fa(t)}));var za=Ei((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Fa=xi("toUpperCase");function Ba(e,t,n){return e=aa(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(De)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var qa=zr((function(e,t){try{return st(e,void 0,t)}catch(e){return Fo(e)?e:new he(e)}})),Ha=$i((function(e,t){return at(t,(function(t){t=As(t),Gn(e,t,_o(e[t],e))})),e}));function Ua(e){return function(){return e}}var $a=ji(),Wa=ji(!0);function Va(e){return e}function Ga(e){return xr("function"==typeof e?e:Qn(e,1))}var Ja=zr((function(e,t){return function(n){return _r(n,e,t)}})),Xa=zr((function(e,t){return function(n){return _r(e,n,t)}}));function Qa(e,t,n){var r=ya(t),i=ur(t,r);null!=n||Uo(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=ur(t,ya(t)));var s=!(Uo(n)&&"chain"in n&&!n.chain),o=Bo(e);return at(i,(function(n){var r=t[n];e[n]=r,o&&(e.prototype[n]=function(){var t=this.__chain__;if(s||t){var n=e(this.__wrapped__),i=n.__actions__=vi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,pt([this.value()],arguments))})})),e}function Ya(){}var Ka=Ni(ft),Za=Ni(lt),ec=Ni(vt);function tc(e){return cs(e)?At(As(e)):function(e){return function(t){return dr(t,e)}}(e)}var nc=Mi(),rc=Mi(!0);function ic(){return[]}function sc(){return!1}var oc=ki((function(e,t){return e+t}),0),ac=Pi("ceil"),cc=ki((function(e,t){return e/t}),1),lc=Pi("floor");var uc,dc=ki((function(e,t){return e*t}),1),hc=Pi("round"),fc=ki((function(e,t){return e-t}),0);return Tn.after=function(e,t){if("function"!=typeof t)throw new _e(s);return e=ra(e),function(){if(--e<1)return t.apply(this,arguments)}},Tn.ary=mo,Tn.assign=ca,Tn.assignIn=la,Tn.assignInWith=ua,Tn.assignWith=da,Tn.at=ha,Tn.before=vo,Tn.bind=_o,Tn.bindAll=Ha,Tn.bindKey=bo,Tn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Mo(e)?e:[e]},Tn.chain=eo,Tn.chunk=function(e,t,n){t=(n?as(e,t,n):void 0===t)?1:on(ra(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var s=0,o=0,a=r(Kt(i/t));s<i;)a[o++]=Wr(e,s,s+=t);return a},Tn.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var s=e[t];s&&(i[r++]=s)}return i},Tn.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],i=e;i--;)t[i-1]=arguments[i];return pt(Mo(n)?vi(n):[n],sr(t,1))},Tn.cond=function(e){var t=null==e?0:e.length,n=Qi();return e=t?ft(e,(function(e){if("function"!=typeof e[1])throw new _e(s);return[n(e[0]),e[1]]})):[],zr((function(n){for(var r=-1;++r<t;){var i=e[r];if(st(i[0],this,n))return st(i[1],this,n)}}))},Tn.conforms=function(e){return function(e){var t=ya(e);return function(n){return Yn(n,e,t)}}(Qn(e,1))},Tn.constant=Ua,Tn.countBy=ro,Tn.create=function(e,t){var n=On(e);return null==t?n:Vn(n,t)},Tn.curry=function e(t,n,r){var i=Fi(t,8,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},Tn.curryRight=function e(t,n,r){var i=Fi(t,16,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},Tn.debounce=yo,Tn.defaults=fa,Tn.defaultsDeep=pa,Tn.defer=wo,Tn.delay=So,Tn.difference=Ts,Tn.differenceBy=Os,Tn.differenceWith=ks,Tn.drop=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,(t=n||void 0===t?1:ra(t))<0?0:t,r):[]},Tn.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,0,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t):[]},Tn.dropRightWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!0,!0):[]},Tn.dropWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!0):[]},Tn.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&as(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=ra(n))<0&&(n=-n>i?0:i+n),(r=void 0===r||r>i?i:ra(r))<0&&(r+=i),r=n>r?0:ia(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},Tn.filter=function(e,t){return(Mo(e)?ut:ir)(e,Qi(t,3))},Tn.flatMap=function(e,t){return sr(ho(e,t),1)},Tn.flatMapDeep=function(e,t){return sr(ho(e,t),1/0)},Tn.flatMapDepth=function(e,t,n){return n=void 0===n?1:ra(n),sr(ho(e,t),n)},Tn.flatten=Ms,Tn.flattenDeep=function(e){return(null==e?0:e.length)?sr(e,1/0):[]},Tn.flattenDepth=function(e,t){return(null==e?0:e.length)?sr(e,t=void 0===t?1:ra(t)):[]},Tn.flip=function(e){return Fi(e,512)},Tn.flow=$a,Tn.flowRight=Wa,Tn.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var i=e[t];r[i[0]]=i[1]}return r},Tn.functions=function(e){return null==e?[]:ur(e,ya(e))},Tn.functionsIn=function(e){return null==e?[]:ur(e,wa(e))},Tn.groupBy=co,Tn.initial=function(e){return(null==e?0:e.length)?Wr(e,0,-1):[]},Tn.intersection=Ds,Tn.intersectionBy=Ps,Tn.intersectionWith=Ls,Tn.invert=va,Tn.invertBy=_a,Tn.invokeMap=lo,Tn.iteratee=Ga,Tn.keyBy=uo,Tn.keys=ya,Tn.keysIn=wa,Tn.map=ho,Tn.mapKeys=function(e,t){var n={};return t=Qi(t,3),cr(e,(function(e,r,i){Gn(n,t(e,r,i),e)})),n},Tn.mapValues=function(e,t){var n={};return t=Qi(t,3),cr(e,(function(e,r,i){Gn(n,r,t(e,r,i))})),n},Tn.matches=function(e){return Tr(Qn(e,1))},Tn.matchesProperty=function(e,t){return Or(e,Qn(t,1))},Tn.memoize=xo,Tn.merge=Sa,Tn.mergeWith=xa,Tn.method=Ja,Tn.methodOf=Xa,Tn.mixin=Qa,Tn.negate=Eo,Tn.nthArg=function(e){return e=ra(e),zr((function(t){return Nr(t,e)}))},Tn.omit=Ea,Tn.omitBy=function(e,t){return Ca(e,Eo(Qi(t)))},Tn.once=function(e){return vo(2,e)},Tn.orderBy=function(e,t,n,r){return null==e?[]:(Mo(t)||(t=null==t?[]:[t]),Mo(n=r?void 0:n)||(n=null==n?[]:[n]),Ir(e,t,n))},Tn.over=Ka,Tn.overArgs=Ao,Tn.overEvery=Za,Tn.overSome=ec,Tn.partial=Co,Tn.partialRight=jo,Tn.partition=fo,Tn.pick=Aa,Tn.pickBy=Ca,Tn.property=tc,Tn.propertyOf=function(e){return function(t){return null==e?void 0:dr(e,t)}},Tn.pull=Fs,Tn.pullAll=Bs,Tn.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?Rr(e,t,Qi(n,2)):e},Tn.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?Rr(e,t,void 0,n):e},Tn.pullAt=qs,Tn.range=nc,Tn.rangeRight=rc,Tn.rearg=To,Tn.reject=function(e,t){return(Mo(e)?ut:ir)(e,Eo(Qi(t,3)))},Tn.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,i=[],s=e.length;for(t=Qi(t,3);++r<s;){var o=e[r];t(o,r,e)&&(n.push(o),i.push(r))}return Dr(e,i),n},Tn.rest=function(e,t){if("function"!=typeof e)throw new _e(s);return zr(e,t=void 0===t?t:ra(t))},Tn.reverse=Hs,Tn.sampleSize=function(e,t,n){return t=(n?as(e,t,n):void 0===t)?1:ra(t),(Mo(e)?Bn:Br)(e,t)},Tn.set=function(e,t,n){return null==e?e:qr(e,t,n)},Tn.setWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:qr(e,t,n,r)},Tn.shuffle=function(e){return(Mo(e)?qn:$r)(e)},Tn.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&as(e,t,n)?(t=0,n=r):(t=null==t?0:ra(t),n=void 0===n?r:ra(n)),Wr(e,t,n)):[]},Tn.sortBy=po,Tn.sortedUniq=function(e){return e&&e.length?Xr(e):[]},Tn.sortedUniqBy=function(e,t){return e&&e.length?Xr(e,Qi(t,2)):[]},Tn.split=function(e,t,n){return n&&"number"!=typeof n&&as(e,t,n)&&(t=n=void 0),(n=void 0===n?4294967295:n>>>0)?(e=aa(e))&&("string"==typeof t||null!=t&&!Jo(t))&&!(t=Yr(t))&&Ft(e)?li(Vt(e),0,n):e.split(t,n):[]},Tn.spread=function(e,t){if("function"!=typeof e)throw new _e(s);return t=null==t?0:on(ra(t),0),zr((function(n){var r=n[t],i=li(n,0,t);return r&&pt(i,r),st(e,this,i)}))},Tn.tail=function(e){var t=null==e?0:e.length;return t?Wr(e,1,t):[]},Tn.take=function(e,t,n){return e&&e.length?Wr(e,0,(t=n||void 0===t?1:ra(t))<0?0:t):[]},Tn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t,r):[]},Tn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!1,!0):[]},Tn.takeWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3)):[]},Tn.tap=function(e,t){return t(e),e},Tn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new _e(s);return Uo(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),yo(e,t,{leading:r,maxWait:t,trailing:i})},Tn.thru=to,Tn.toArray=ta,Tn.toPairs=ja,Tn.toPairsIn=Ta,Tn.toPath=function(e){return Mo(e)?ft(e,As):Yo(e)?[e]:vi(Es(aa(e)))},Tn.toPlainObject=oa,Tn.transform=function(e,t,n){var r=Mo(e),i=r||Lo(e)||Ko(e);if(t=Qi(t,4),null==n){var s=e&&e.constructor;n=i?r?new s:[]:Uo(e)&&Bo(s)?On(We(e)):{}}return(i?at:cr)(e,(function(e,r,i){return t(n,e,r,i)})),n},Tn.unary=function(e){return mo(e,1)},Tn.union=Us,Tn.unionBy=$s,Tn.unionWith=Ws,Tn.uniq=function(e){return e&&e.length?Kr(e):[]},Tn.uniqBy=function(e,t){return e&&e.length?Kr(e,Qi(t,2)):[]},Tn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Kr(e,void 0,t):[]},Tn.unset=function(e,t){return null==e||Zr(e,t)},Tn.unzip=Vs,Tn.unzipWith=Gs,Tn.update=function(e,t,n){return null==e?e:ei(e,t,oi(n))},Tn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,oi(n),r)},Tn.values=Oa,Tn.valuesIn=function(e){return null==e?[]:Nt(e,wa(e))},Tn.without=Js,Tn.words=Ba,Tn.wrap=function(e,t){return Co(oi(t),e)},Tn.xor=Xs,Tn.xorBy=Qs,Tn.xorWith=Ys,Tn.zip=Ks,Tn.zipObject=function(e,t){return ii(e||[],t||[],Un)},Tn.zipObjectDeep=function(e,t){return ii(e||[],t||[],qr)},Tn.zipWith=Zs,Tn.entries=ja,Tn.entriesIn=Ta,Tn.extend=la,Tn.extendWith=ua,Qa(Tn,Tn),Tn.add=oc,Tn.attempt=qa,Tn.camelCase=ka,Tn.capitalize=Na,Tn.ceil=ac,Tn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=sa(n))==n?n:0),void 0!==t&&(t=(t=sa(t))==t?t:0),Xn(sa(e),t,n)},Tn.clone=function(e){return Qn(e,4)},Tn.cloneDeep=function(e){return Qn(e,5)},Tn.cloneDeepWith=function(e,t){return Qn(e,5,t="function"==typeof t?t:void 0)},Tn.cloneWith=function(e,t){return Qn(e,4,t="function"==typeof t?t:void 0)},Tn.conformsTo=function(e,t){return null==t||Yn(e,t,ya(t))},Tn.deburr=Ia,Tn.defaultTo=function(e,t){return null==e||e!=e?t:e},Tn.divide=cc,Tn.endsWith=function(e,t,n){e=aa(e),t=Yr(t);var r=e.length,i=n=void 0===n?r:Xn(ra(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},Tn.eq=Oo,Tn.escape=function(e){return(e=aa(e))&&F.test(e)?e.replace(L,Lt):e},Tn.escapeRegExp=function(e){return(e=aa(e))&&G.test(e)?e.replace(V,"\\$&"):e},Tn.every=function(e,t,n){var r=Mo(e)?lt:nr;return n&&as(e,t,n)&&(t=void 0),r(e,Qi(t,3))},Tn.find=io,Tn.findIndex=Ns,Tn.findKey=function(e,t){return bt(e,Qi(t,3),cr)},Tn.findLast=so,Tn.findLastIndex=Is,Tn.findLastKey=function(e,t){return bt(e,Qi(t,3),lr)},Tn.floor=lc,Tn.forEach=oo,Tn.forEachRight=ao,Tn.forIn=function(e,t){return null==e?e:or(e,Qi(t,3),wa)},Tn.forInRight=function(e,t){return null==e?e:ar(e,Qi(t,3),wa)},Tn.forOwn=function(e,t){return e&&cr(e,Qi(t,3))},Tn.forOwnRight=function(e,t){return e&&lr(e,Qi(t,3))},Tn.get=ga,Tn.gt=ko,Tn.gte=No,Tn.has=function(e,t){return null!=e&&rs(e,t,gr)},Tn.hasIn=ma,Tn.head=Rs,Tn.identity=Va,Tn.includes=function(e,t,n,r){e=Do(e)?e:Oa(e),n=n&&!r?ra(n):0;var i=e.length;return n<0&&(n=on(i+n,0)),Qo(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&wt(e,t,n)>-1},Tn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=on(r+i,0)),wt(e,t,i)},Tn.inRange=function(e,t,n){return t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n){return e>=an(t,n)&&e<on(t,n)}(e=sa(e),t,n)},Tn.invoke=ba,Tn.isArguments=Io,Tn.isArray=Mo,Tn.isArrayBuffer=Ro,Tn.isArrayLike=Do,Tn.isArrayLikeObject=Po,Tn.isBoolean=function(e){return!0===e||!1===e||$o(e)&&fr(e)==u},Tn.isBuffer=Lo,Tn.isDate=zo,Tn.isElement=function(e){return $o(e)&&1===e.nodeType&&!Go(e)},Tn.isEmpty=function(e){if(null==e)return!0;if(Do(e)&&(Mo(e)||"string"==typeof e||"function"==typeof e.splice||Lo(e)||Ko(e)||Io(e)))return!e.length;var t=ns(e);if(t==g||t==b)return!e.size;if(ds(e))return!Er(e).length;for(var n in e)if(Ee.call(e,n))return!1;return!0},Tn.isEqual=function(e,t){return yr(e,t)},Tn.isEqualWith=function(e,t,n){var r=(n="function"==typeof n?n:void 0)?n(e,t):void 0;return void 0===r?yr(e,t,void 0,n):!!r},Tn.isError=Fo,Tn.isFinite=function(e){return"number"==typeof e&&nn(e)},Tn.isFunction=Bo,Tn.isInteger=qo,Tn.isLength=Ho,Tn.isMap=Wo,Tn.isMatch=function(e,t){return e===t||wr(e,t,Ki(t))},Tn.isMatchWith=function(e,t,n){return n="function"==typeof n?n:void 0,wr(e,t,Ki(t),n)},Tn.isNaN=function(e){return Vo(e)&&e!=+e},Tn.isNative=function(e){if(us(e))throw new he("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Sr(e)},Tn.isNil=function(e){return null==e},Tn.isNull=function(e){return null===e},Tn.isNumber=Vo,Tn.isObject=Uo,Tn.isObjectLike=$o,Tn.isPlainObject=Go,Tn.isRegExp=Jo,Tn.isSafeInteger=function(e){return qo(e)&&e>=-9007199254740991&&e<=9007199254740991},Tn.isSet=Xo,Tn.isString=Qo,Tn.isSymbol=Yo,Tn.isTypedArray=Ko,Tn.isUndefined=function(e){return void 0===e},Tn.isWeakMap=function(e){return $o(e)&&ns(e)==S},Tn.isWeakSet=function(e){return $o(e)&&"[object WeakSet]"==fr(e)},Tn.join=function(e,t){return null==e?"":rn.call(e,t)},Tn.kebabCase=Ma,Tn.last=zs,Tn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ra(n))<0?on(r+i,0):an(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yt(e,xt,i,!0)},Tn.lowerCase=Ra,Tn.lowerFirst=Da,Tn.lt=Zo,Tn.lte=ea,Tn.max=function(e){return e&&e.length?rr(e,Va,pr):void 0},Tn.maxBy=function(e,t){return e&&e.length?rr(e,Qi(t,2),pr):void 0},Tn.mean=function(e){return Et(e,Va)},Tn.meanBy=function(e,t){return Et(e,Qi(t,2))},Tn.min=function(e){return e&&e.length?rr(e,Va,Cr):void 0},Tn.minBy=function(e,t){return e&&e.length?rr(e,Qi(t,2),Cr):void 0},Tn.stubArray=ic,Tn.stubFalse=sc,Tn.stubObject=function(){return{}},Tn.stubString=function(){return""},Tn.stubTrue=function(){return!0},Tn.multiply=dc,Tn.nth=function(e,t){return e&&e.length?Nr(e,ra(t)):void 0},Tn.noConflict=function(){return Ge._===this&&(Ge._=Oe),this},Tn.noop=Ya,Tn.now=go,Tn.pad=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ii(Zt(i),n)+e+Ii(Kt(i),n)},Tn.padEnd=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;return t&&r<t?e+Ii(t-r,n):e},Tn.padStart=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;return t&&r<t?Ii(t-r,n)+e:e},Tn.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),ln(aa(e).replace(X,""),t||0)},Tn.random=function(e,t,n){if(n&&"boolean"!=typeof n&&as(e,t,n)&&(t=n=void 0),void 0===n&&("boolean"==typeof t?(n=t,t=void 0):"boolean"==typeof e&&(n=e,e=void 0)),void 0===e&&void 0===t?(e=0,t=1):(e=na(e),void 0===t?(t=e,e=0):t=na(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=un();return an(e+i*(t-e+Ue("1e-"+((i+"").length-1))),t)}return Pr(e,t)},Tn.reduce=function(e,t,n){var r=Mo(e)?gt:jt,i=arguments.length<3;return r(e,Qi(t,4),n,i,er)},Tn.reduceRight=function(e,t,n){var r=Mo(e)?mt:jt,i=arguments.length<3;return r(e,Qi(t,4),n,i,tr)},Tn.repeat=function(e,t,n){return t=(n?as(e,t,n):void 0===t)?1:ra(t),Lr(aa(e),t)},Tn.replace=function(){var e=arguments,t=aa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Tn.result=function(e,t,n){var r=-1,i=(t=ai(t,e)).length;for(i||(i=1,e=void 0);++r<i;){var s=null==e?void 0:e[As(t[r])];void 0===s&&(r=i,s=n),e=Bo(s)?s.call(e):s}return e},Tn.round=hc,Tn.runInContext=e,Tn.sample=function(e){return(Mo(e)?Fn:Fr)(e)},Tn.size=function(e){if(null==e)return 0;if(Do(e))return Qo(e)?Wt(e):e.length;var t=ns(e);return t==g||t==b?e.size:Er(e).length},Tn.snakeCase=Pa,Tn.some=function(e,t,n){var r=Mo(e)?vt:Vr;return n&&as(e,t,n)&&(t=void 0),r(e,Qi(t,3))},Tn.sortedIndex=function(e,t){return Gr(e,t)},Tn.sortedIndexBy=function(e,t,n){return Jr(e,t,Qi(n,2))},Tn.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=Gr(e,t);if(r<n&&Oo(e[r],t))return r}return-1},Tn.sortedLastIndex=function(e,t){return Gr(e,t,!0)},Tn.sortedLastIndexBy=function(e,t,n){return Jr(e,t,Qi(n,2),!0)},Tn.sortedLastIndexOf=function(e,t){if(null==e?0:e.length){var n=Gr(e,t,!0)-1;if(Oo(e[n],t))return n}return-1},Tn.startCase=La,Tn.startsWith=function(e,t,n){return e=aa(e),n=null==n?0:Xn(ra(n),0,e.length),t=Yr(t),e.slice(n,n+t.length)==t},Tn.subtract=fc,Tn.sum=function(e){return e&&e.length?Tt(e,Va):0},Tn.sumBy=function(e,t){return e&&e.length?Tt(e,Qi(t,2)):0},Tn.template=function(e,t,n){var r=Tn.templateSettings;n&&as(e,t,n)&&(t=void 0),e=aa(e),t=ua({},t,r,Bi);var i,s,o=ua({},t.imports,r.imports,Bi),a=ya(o),c=Nt(o,a),l=0,u=t.interpolate||ue,d="__p += '",h=me((t.escape||ue).source+"|"+u.source+"|"+(u===H?ne:ue).source+"|"+(t.evaluate||ue).source+"|$","g"),f="//# sourceURL="+(Ee.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Fe+"]")+"\n";e.replace(h,(function(t,n,r,o,a,c){return r||(r=o),d+=e.slice(l,c).replace(de,zt),n&&(i=!0,d+="' +\n__e("+n+") +\n'"),a&&(s=!0,d+="';\n"+a+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=c+t.length,t})),d+="';\n";var p=Ee.call(t,"variable")&&t.variable;p||(d="with (obj) {\n"+d+"\n}\n"),d=(s?d.replace(M,""):d).replace(R,"$1").replace(D,"$1;"),d="function("+(p||"obj")+") {\n"+(p?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(s?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var g=qa((function(){return fe(a,f+"return "+d).apply(void 0,c)}));if(g.source=d,Fo(g))throw g;return g},Tn.times=function(e,t){if((e=ra(e))<1||e>9007199254740991)return[];var n=4294967295,r=an(e,4294967295);e-=4294967295;for(var i=Ot(r,t=Qi(t));++n<e;)t(n);return i},Tn.toFinite=na,Tn.toInteger=ra,Tn.toLength=ia,Tn.toLower=function(e){return aa(e).toLowerCase()},Tn.toNumber=sa,Tn.toSafeInteger=function(e){return e?Xn(ra(e),-9007199254740991,9007199254740991):0===e?e:0},Tn.toString=aa,Tn.toUpper=function(e){return aa(e).toUpperCase()},Tn.trim=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(J,"");if(!e||!(t=Yr(t)))return e;var r=Vt(e),i=Vt(t);return li(r,Mt(r,i),Rt(r,i)+1).join("")},Tn.trimEnd=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(Q,"");if(!e||!(t=Yr(t)))return e;var r=Vt(e);return li(r,0,Rt(r,Vt(t))+1).join("")},Tn.trimStart=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(X,"");if(!e||!(t=Yr(t)))return e;var r=Vt(e);return li(r,Mt(r,Vt(t))).join("")},Tn.truncate=function(e,t){var n=30,r="...";if(Uo(t)){var i="separator"in t?t.separator:i;n="length"in t?ra(t.length):n,r="omission"in t?Yr(t.omission):r}var s=(e=aa(e)).length;if(Ft(e)){var o=Vt(e);s=o.length}if(n>=s)return e;var a=n-Wt(r);if(a<1)return r;var c=o?li(o,0,a).join(""):e.slice(0,a);if(void 0===i)return c+r;if(o&&(a+=c.length-a),Jo(i)){if(e.slice(a).search(i)){var l,u=c;for(i.global||(i=me(i.source,aa(re.exec(i))+"g")),i.lastIndex=0;l=i.exec(u);)var d=l.index;c=c.slice(0,void 0===d?a:d)}}else if(e.indexOf(Yr(i),a)!=a){var h=c.lastIndexOf(i);h>-1&&(c=c.slice(0,h))}return c+r},Tn.unescape=function(e){return(e=aa(e))&&z.test(e)?e.replace(P,Gt):e},Tn.uniqueId=function(e){var t=++Ae;return aa(e)+t},Tn.upperCase=za,Tn.upperFirst=Fa,Tn.each=oo,Tn.eachRight=ao,Tn.first=Rs,Qa(Tn,(uc={},cr(Tn,(function(e,t){Ee.call(Tn.prototype,t)||(uc[t]=e)})),uc),{chain:!1}),Tn.VERSION="4.17.20",at(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Tn[e].placeholder=Tn})),at(["drop","take"],(function(e,t){In.prototype[e]=function(n){n=void 0===n?1:on(ra(n),0);var r=this.__filtered__&&!t?new In(this):this.clone();return r.__filtered__?r.__takeCount__=an(n,r.__takeCount__):r.__views__.push({size:an(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},In.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),at(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;In.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Qi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),at(["head","last"],(function(e,t){var n="take"+(t?"Right":"");In.prototype[e]=function(){return this[n](1).value()[0]}})),at(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");In.prototype[e]=function(){return this.__filtered__?new In(this):this[n](1)}})),In.prototype.compact=function(){return this.filter(Va)},In.prototype.find=function(e){return this.filter(e).head()},In.prototype.findLast=function(e){return this.reverse().find(e)},In.prototype.invokeMap=zr((function(e,t){return"function"==typeof e?new In(this):this.map((function(n){return _r(n,e,t)}))})),In.prototype.reject=function(e){return this.filter(Eo(Qi(e)))},In.prototype.slice=function(e,t){e=ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new In(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},In.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},In.prototype.toArray=function(){return this.take(4294967295)},cr(In.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=Tn[r?"take"+("last"==t?"Right":""):t],s=r||/^find/.test(t);i&&(Tn.prototype[t]=function(){var t=this.__wrapped__,o=r?[1]:arguments,a=t instanceof In,c=o[0],l=a||Mo(t),u=function(e){var t=i.apply(Tn,pt([e],o));return r&&d?t[0]:t};l&&n&&"function"==typeof c&&1!=c.length&&(a=l=!1);var d=this.__chain__,h=!!this.__actions__.length,f=s&&!d,p=a&&!h;if(!s&&l){t=p?t:new In(this);var g=e.apply(t,o);return g.__actions__.push({func:to,args:[u],thisArg:void 0}),new Nn(g,d)}return f&&p?e.apply(this,o):(g=this.thru(u),f?r?g.value()[0]:g.value():g)})})),at(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Tn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Mo(i)?i:[],e)}return this[n]((function(n){return t.apply(Mo(n)?n:[],e)}))}})),cr(In.prototype,(function(e,t){var n=Tn[t];if(n){var r=n.name+"";Ee.call(bn,r)||(bn[r]=[]),bn[r].push({name:t,func:n})}})),bn[Ti(void 0,2).name]=[{name:"wrapper",func:void 0}],In.prototype.clone=function(){var e=new In(this.__wrapped__);return e.__actions__=vi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=vi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=vi(this.__views__),e},In.prototype.reverse=function(){if(this.__filtered__){var e=new In(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},In.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Mo(e),r=t<0,i=n?e.length:0,s=function(e,t,n){var r=-1,i=n.length;for(;++r<i;){var s=n[r],o=s.size;switch(s.type){case"drop":e+=o;break;case"dropRight":t-=o;break;case"take":t=an(t,e+o);break;case"takeRight":e=on(e,t-o)}}return{start:e,end:t}}(0,i,this.__views__),o=s.start,a=s.end,c=a-o,l=r?a:o-1,u=this.__iteratees__,d=u.length,h=0,f=an(c,this.__takeCount__);if(!n||!r&&i==c&&f==c)return ni(e,this.__actions__);var p=[];e:for(;c--&&h<f;){for(var g=-1,m=e[l+=t];++g<d;){var v=u[g],_=v.iteratee,b=v.type,y=_(m);if(2==b)m=y;else if(!y){if(1==b)continue e;break e}}p[h++]=m}return p},Tn.prototype.at=no,Tn.prototype.chain=function(){return eo(this)},Tn.prototype.commit=function(){return new Nn(this.value(),this.__chain__)},Tn.prototype.next=function(){void 0===this.__values__&&(this.__values__=ta(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Tn.prototype.plant=function(e){for(var t,n=this;n instanceof kn;){var r=js(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},Tn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof In){var t=e;return this.__actions__.length&&(t=new In(this)),(t=t.reverse()).__actions__.push({func:to,args:[Hs],thisArg:void 0}),new Nn(t,this.__chain__)}return this.thru(Hs)},Tn.prototype.toJSON=Tn.prototype.valueOf=Tn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},Tn.prototype.first=Tn.prototype.head,Ke&&(Tn.prototype[Ke]=function(){return this}),Tn}();Ge._=Jt,void 0===(i=function(){return Jt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n(11),n(36)(e))},function(e,t,n){e.exports=n(295)},function(e,t,n){e.exports=n(309)},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){function r(e){this.options=e||{locator:{}}}function i(){this.cdata=!1}function s(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}function o(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function a(e,t,n){return"string"==typeof e?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+"":e}function c(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}r.prototype.parseFromString=function(e,t){var n=this.options,r=new l,s=n.domBuilder||new i,a=n.errorHandler,c=n.locator,u=n.xmlns||{},d={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return c&&s.setDocumentLocator(c),r.errorHandler=function(e,t,n){if(!e){if(t instanceof i)return t;e=t}var r={},s=e instanceof Function;function a(t){var i=e[t];!i&&s&&(i=2==e.length?function(n){e(t,n)}:e),r[t]=i&&function(e){i("[xmldom "+t+"]\t"+e+o(n))}||function(){}}return n=n||{},a("warning"),a("error"),a("fatalError"),r}(a,s,c),r.domBuilder=n.domBuilder||s,/\/x?html?$/.test(t)&&(d.nbsp=" ",d.copy="©",u[""]="http://www.w3.org/1999/xhtml"),u.xml=u.xml||"http://www.w3.org/XML/1998/namespace",e?r.parse(e,u,d):r.errorHandler.error("invalid doc source"),s.doc},i.prototype={startDocument:function(){this.doc=(new u).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,n,r){var i=this.doc,o=i.createElementNS(e,n||t),a=r.length;c(this,o),this.currentElement=o,this.locator&&s(this.locator,o);for(var l=0;l<a;l++){e=r.getURI(l);var u=r.getValue(l),d=(n=r.getQName(l),i.createAttributeNS(e,n));this.locator&&s(r.getLocator(l),d),d.value=d.nodeValue=u,o.setAttributeNode(d)}},endElement:function(e,t,n){var r=this.currentElement;r.tagName;this.currentElement=r.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.doc.createProcessingInstruction(e,t);this.locator&&s(this.locator,n),c(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){if(e=a.apply(this,arguments)){if(this.cdata)var r=this.doc.createCDATASection(e);else r=this.doc.createTextNode(e);this.currentElement?this.currentElement.appendChild(r):/^\s*$/.test(e)&&this.doc.appendChild(r),this.locator&&s(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(e){(this.locator=e)&&(e.lineNumber=0)},comment:function(e,t,n){e=a.apply(this,arguments);var r=this.doc.createComment(e);this.locator&&s(this.locator,r),c(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n){var r=this.doc.implementation;if(r&&r.createDocumentType){var i=r.createDocumentType(e,t,n);this.locator&&s(this.locator,i),c(this,i)}},warning:function(e){console.warn("[xmldom warning]\t"+e,o(this.locator))},error:function(e){console.error("[xmldom error]\t"+e,o(this.locator))},fatalError:function(e){throw console.error("[xmldom fatalError]\t"+e,o(this.locator)),e}},"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,(function(e){i.prototype[e]=function(){return null}}));var l=n(287).XMLReader,u=t.DOMImplementation=n(71).DOMImplementation;t.XMLSerializer=n(71).XMLSerializer,t.DOMParser=r},function(e,t,n){var r=n(21),i=n(19);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(10).Symbol;e.exports=r},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(60),i=n(17);e.exports=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=r(e.prototype),s=e.apply(n,t);return i(s)?s:n}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=e.length,i=0,s=[];++n<r;){var o=e[n];o!==t&&"__lodash_placeholder__"!==o||(e[n]="__lodash_placeholder__",s[i++]=n)}return s}},function(e,t,n){var r=n(346),i=n(347),s=n(348),o=n(349),a=n(350);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=s,c.prototype.has=o,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(40);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(22)(Object,"create");e.exports=r},function(e,t,n){var r=n(364);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(15),i=n(67),s=n(387),o=n(113);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:s(o(e))}},function(e,t,n){var r=n(21),i=n(17);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){"use strict";(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.a=n}).call(this,n(11))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_input.html --\x3e\n<div class="form-group">\n ',"hidden"!==e.type&&(t+='\n <label for="'+n(e.id)+'">'+n(e.label)+"</label>\n "),t+="\n ","password"===e.type&&e.fixed_username&&(t+='\n \x3c!-- This is a hack to prevent Chrome from auto-filling the username in\n any of the other input fields in the MUC configuration form. --\x3e\n <input class="hidden-username" type="text" autocomplete="username" value="'+n(e.fixed_username)+'"></input>\n '),t+='\n <input \n class="form-control" name="'+n(e.name)+'" type="'+n(e.type)+'" id="'+n(e.id)+'"\n ',e.autocomplete&&(t+=' autocomplete="'+n(e.autocomplete)+'" '),t+="\n ",e.placeholder&&(t+=' placeholder="'+n(e.placeholder)+'" '),t+="\n ",e.value&&(t+=' value="'+n(e.value)+'" '),t+="\n ",e.required&&(t+=' required="required" '),t+=" />\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_username.html --\x3e\n<div class="form-group">\n ',e.label&&(t+="\n <label>\n "+n(e.label)+"\n </label>\n "),t+='\n <div class="input-group">\n <div class="input-group-prepend">\n <input name="'+n(e.name)+'" type="'+n(e.type)+'"\n ',e.value&&(t+=' value="'+n(e.value)+'" '),t+="\n ",e.required&&(t+=' required="required" '),t+=' />\n <div class="input-group-text col" title="'+n(e.domain)+'">'+n(e.domain)+"</div>\n </div>\n </div>\n</div>\n"}},function(e,t,n){var r,i;r=[n(33)],void 0===(i=function(e){return e.noConflict()}.apply(t,r))||(e.exports=i)},function(e,t,n){ + */(function(){var o="Expected a function",s="__lodash_placeholder__",a=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],c="[object Arguments]",l="[object Array]",u="[object Boolean]",d="[object Date]",h="[object Error]",f="[object Function]",p="[object GeneratorFunction]",g="[object Map]",m="[object Number]",v="[object Object]",_="[object RegExp]",b="[object Set]",y="[object String]",w="[object Symbol]",S="[object WeakMap]",x="[object ArrayBuffer]",E="[object DataView]",A="[object Float32Array]",C="[object Float64Array]",j="[object Int8Array]",T="[object Int16Array]",O="[object Int32Array]",k="[object Uint8Array]",N="[object Uint16Array]",I="[object Uint32Array]",M=/\b__p \+= '';/g,R=/\b(__p \+=) '' \+/g,D=/(__e\(.*?\)|\b__t\)) \+\n'';/g,P=/&(?:amp|lt|gt|quot|#39);/g,L=/[&<>"']/g,z=RegExp(P.source),F=RegExp(L.source),B=/<%-([\s\S]+?)%>/g,q=/<%([\s\S]+?)%>/g,H=/<%=([\s\S]+?)%>/g,U=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$=/^\w*$/,W=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,G=/[\\^$.*+?()[\]{}|]/g,V=RegExp(G.source),J=/^\s+|\s+$/g,X=/^\s+/,Q=/\s+$/,Y=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,K=/\{\n\/\* \[wrapped with (.+)\] \*/,Z=/,? & /,ee=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,te=/\\(\\)?/g,ne=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,re=/\w*$/,ie=/^[-+]0x[0-9a-f]+$/i,oe=/^0b[01]+$/i,se=/^\[object .+?Constructor\]$/,ae=/^0o[0-7]+$/i,ce=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ue=/($^)/,de=/['\n\r\u2028\u2029\\]/g,he="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",fe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pe="[\\ud800-\\udfff]",ge="["+fe+"]",me="["+he+"]",ve="\\d+",_e="[\\u2700-\\u27bf]",be="[a-z\\xdf-\\xf6\\xf8-\\xff]",ye="[^\\ud800-\\udfff"+fe+ve+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",we="\\ud83c[\\udffb-\\udfff]",Se="[^\\ud800-\\udfff]",xe="(?:\\ud83c[\\udde6-\\uddff]){2}",Ee="[\\ud800-\\udbff][\\udc00-\\udfff]",Ae="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+be+"|"+ye+")",je="(?:"+Ae+"|"+ye+")",Te="(?:"+me+"|"+we+")"+"?",Oe="[\\ufe0e\\ufe0f]?"+Te+("(?:\\u200d(?:"+[Se,xe,Ee].join("|")+")[\\ufe0e\\ufe0f]?"+Te+")*"),ke="(?:"+[_e,xe,Ee].join("|")+")"+Oe,Ne="(?:"+[Se+me+"?",me,xe,Ee,pe].join("|")+")",Ie=RegExp("['’]","g"),Me=RegExp(me,"g"),Re=RegExp(we+"(?="+we+")|"+Ne+Oe,"g"),De=RegExp([Ae+"?"+be+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ge,Ae,"$"].join("|")+")",je+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ge,Ae+Ce,"$"].join("|")+")",Ae+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Ae+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ve,ke].join("|"),"g"),Pe=RegExp("[\\u200d\\ud800-\\udfff"+he+"\\ufe0e\\ufe0f]"),Le=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ze=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Fe=-1,Be={};Be[A]=Be[C]=Be[j]=Be[T]=Be[O]=Be[k]=Be["[object Uint8ClampedArray]"]=Be[N]=Be[I]=!0,Be[c]=Be[l]=Be[x]=Be[u]=Be[E]=Be[d]=Be[h]=Be[f]=Be[g]=Be[m]=Be[v]=Be[_]=Be[b]=Be[y]=Be[S]=!1;var qe={};qe[c]=qe[l]=qe[x]=qe[E]=qe[u]=qe[d]=qe[A]=qe[C]=qe[j]=qe[T]=qe[O]=qe[g]=qe[m]=qe[v]=qe[_]=qe[b]=qe[y]=qe[w]=qe[k]=qe["[object Uint8ClampedArray]"]=qe[N]=qe[I]=!0,qe[h]=qe[f]=qe[S]=!1;var He={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Ue=parseFloat,$e=parseInt,We="object"==typeof e&&e&&e.Object===Object&&e,Ge="object"==typeof self&&self&&self.Object===Object&&self,Ve=We||Ge||Function("return this")(),Je=t&&!t.nodeType&&t,Xe=Je&&"object"==typeof r&&r&&!r.nodeType&&r,Qe=Xe&&Xe.exports===Je,Ye=Qe&&We.process,Ke=function(){try{var e=Xe&&Xe.require&&Xe.require("util").types;return e||Ye&&Ye.binding&&Ye.binding("util")}catch(e){}}(),Ze=Ke&&Ke.isArrayBuffer,et=Ke&&Ke.isDate,tt=Ke&&Ke.isMap,nt=Ke&&Ke.isRegExp,rt=Ke&&Ke.isSet,it=Ke&&Ke.isTypedArray;function ot(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function st(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i<o;){var s=e[i];t(r,s,n(s),e)}return r}function at(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}function ct(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););return e}function lt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0}function ut(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var s=e[n];t(s,n,e)&&(o[i++]=s)}return o}function dt(e,t){return!!(null==e?0:e.length)&&wt(e,t,0)>-1}function ht(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}function ft(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}function pt(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}function gt(e,t,n,r){var i=-1,o=null==e?0:e.length;for(r&&o&&(n=e[++i]);++i<o;)n=t(n,e[i],i,e);return n}function mt(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n}function vt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var _t=At("length");function bt(e,t,n){var r;return n(e,(function(e,n,i){if(t(e,n,i))return r=n,!1})),r}function yt(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1}function wt(e,t,n){return t==t?function(e,t,n){var r=n-1,i=e.length;for(;++r<i;)if(e[r]===t)return r;return-1}(e,t,n):yt(e,xt,n)}function St(e,t,n,r){for(var i=n-1,o=e.length;++i<o;)if(r(e[i],t))return i;return-1}function xt(e){return e!=e}function Et(e,t){var n=null==e?0:e.length;return n?Tt(e,t)/n:NaN}function At(e){return function(t){return null==t?void 0:t[e]}}function Ct(e){return function(t){return null==e?void 0:e[t]}}function jt(e,t,n,r,i){return i(e,(function(e,i,o){n=r?(r=!1,e):t(n,e,i,o)})),n}function Tt(e,t){for(var n,r=-1,i=e.length;++r<i;){var o=t(e[r]);void 0!==o&&(n=void 0===n?o:n+o)}return n}function Ot(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}function kt(e){return function(t){return e(t)}}function Nt(e,t){return ft(t,(function(t){return e[t]}))}function It(e,t){return e.has(t)}function Mt(e,t){for(var n=-1,r=e.length;++n<r&&wt(t,e[n],0)>-1;);return n}function Rt(e,t){for(var n=e.length;n--&&wt(t,e[n],0)>-1;);return n}function Dt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Pt=Ct({À:"A",Ã:"A",Â:"A",Ã:"A",Ä:"A",Ã…:"A",à :"a",á:"a",â:"a",ã:"a",ä:"a",Ã¥:"a",Ç:"C",ç:"c",Ã:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",ÃŒ:"I",Ã:"I",ÃŽ:"I",Ã:"I",ì:"i",Ã:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ã’:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ãœ:"U",ù:"u",ú:"u",û:"u",ü:"u",Ã:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ä€:"A",Ä‚:"A",Ä„:"A",Ä:"a",ă:"a",Ä…:"a",Ć:"C",Ĉ:"C",ÄŠ:"C",ÄŒ:"C",ć:"c",ĉ:"c",Ä‹:"c",Ä:"c",ÄŽ:"D",Ä:"D",Ä:"d",Ä‘:"d",Ä’:"E",Ä”:"E",Ä–:"E",Ę:"E",Äš:"E",Ä“:"e",Ä•:"e",Ä—:"e",Ä™:"e",Ä›:"e",Äœ:"G",Äž:"G",Ä :"G",Ä¢:"G",Ä:"g",ÄŸ:"g",Ä¡:"g",Ä£:"g",Ĥ:"H",Ħ:"H",Ä¥:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Ä®:"I",Ä°:"I",Ä©:"i",Ä«:"i",Ä:"i",į:"i",ı:"i",Ä´:"J",ĵ:"j",Ķ:"K",Ä·:"k",ĸ:"k",Ĺ:"L",Ä»:"L",Ľ:"L",Ä¿:"L",Å:"L",ĺ:"l",ļ:"l",ľ:"l",Å€:"l",Å‚:"l",Ń:"N",Å…:"N",Ň:"N",ÅŠ:"N",Å„:"n",ņ:"n",ň:"n",Å‹:"n",ÅŒ:"O",ÅŽ:"O",Å:"O",Å:"o",Å:"o",Å‘:"o",Å”:"R",Å–:"R",Ř:"R",Å•:"r",Å—:"r",Å™:"r",Åš:"S",Åœ:"S",Åž:"S",Å :"S",Å›:"s",Å:"s",ÅŸ:"s",Å¡:"s",Å¢:"T",Ť:"T",Ŧ:"T",Å£:"t",Å¥:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Å®:"U",Å°:"U",Ų:"U",Å©:"u",Å«:"u",Å:"u",ů:"u",ű:"u",ų:"u",Å´:"W",ŵ:"w",Ŷ:"Y",Å·:"y",Ÿ:"Y",Ź:"Z",Å»:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Å’:"Oe",Å“:"oe",ʼn:"'n",Å¿:"s"}),Lt=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function zt(e){return"\\"+He[e]}function Ft(e){return Pe.test(e)}function Bt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function qt(e,t){return function(n){return e(t(n))}}function Ht(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var a=e[n];a!==t&&a!==s||(e[n]=s,o[i++]=n)}return o}function Ut(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}function $t(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=[e,e]})),n}function Wt(e){return Ft(e)?function(e){var t=Re.lastIndex=0;for(;Re.test(e);)++t;return t}(e):_t(e)}function Gt(e){return Ft(e)?function(e){return e.match(Re)||[]}(e):function(e){return e.split("")}(e)}var Vt=Ct({"&":"&","<":"<",">":">",""":'"',"'":"'"});var Jt=function e(t){var n,r=(t=null==t?Ve:Jt.defaults(Ve.Object(),t,Jt.pick(Ve,ze))).Array,i=t.Date,he=t.Error,fe=t.Function,pe=t.Math,ge=t.Object,me=t.RegExp,ve=t.String,_e=t.TypeError,be=r.prototype,ye=fe.prototype,we=ge.prototype,Se=t["__core-js_shared__"],xe=ye.toString,Ee=we.hasOwnProperty,Ae=0,Ce=(n=/[^.]+$/.exec(Se&&Se.keys&&Se.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",je=we.toString,Te=xe.call(ge),Oe=Ve._,ke=me("^"+xe.call(Ee).replace(G,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ne=Qe?t.Buffer:void 0,Re=t.Symbol,Pe=t.Uint8Array,He=Ne?Ne.allocUnsafe:void 0,We=qt(ge.getPrototypeOf,ge),Ge=ge.create,Je=we.propertyIsEnumerable,Xe=be.splice,Ye=Re?Re.isConcatSpreadable:void 0,Ke=Re?Re.iterator:void 0,_t=Re?Re.toStringTag:void 0,Ct=function(){try{var e=Zi(ge,"defineProperty");return e({},"",{}),e}catch(e){}}(),Xt=t.clearTimeout!==Ve.clearTimeout&&t.clearTimeout,Qt=i&&i.now!==Ve.Date.now&&i.now,Yt=t.setTimeout!==Ve.setTimeout&&t.setTimeout,Kt=pe.ceil,Zt=pe.floor,en=ge.getOwnPropertySymbols,tn=Ne?Ne.isBuffer:void 0,nn=t.isFinite,rn=be.join,on=qt(ge.keys,ge),sn=pe.max,an=pe.min,cn=i.now,ln=t.parseInt,un=pe.random,dn=be.reverse,hn=Zi(t,"DataView"),fn=Zi(t,"Map"),pn=Zi(t,"Promise"),gn=Zi(t,"Set"),mn=Zi(t,"WeakMap"),vn=Zi(ge,"create"),_n=mn&&new mn,bn={},yn=jo(hn),wn=jo(fn),Sn=jo(pn),xn=jo(gn),En=jo(mn),An=Re?Re.prototype:void 0,Cn=An?An.valueOf:void 0,jn=An?An.toString:void 0;function Tn(e){if($s(e)&&!Ms(e)&&!(e instanceof In)){if(e instanceof Nn)return e;if(Ee.call(e,"__wrapped__"))return To(e)}return new Nn(e)}var On=function(){function e(){}return function(t){if(!Us(t))return{};if(Ge)return Ge(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function kn(){}function Nn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function In(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Rn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Dn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Pn(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Dn;++t<n;)this.add(e[t])}function Ln(e){var t=this.__data__=new Rn(e);this.size=t.size}function zn(e,t){var n=Ms(e),r=!n&&Is(e),i=!n&&!r&&Ls(e),o=!n&&!r&&!i&&Ks(e),s=n||r||i||o,a=s?Ot(e.length,ve):[],c=a.length;for(var l in e)!t&&!Ee.call(e,l)||s&&("length"==l||i&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||so(l,c))||a.push(l);return a}function Fn(e){var t=e.length;return t?e[Pr(0,t-1)]:void 0}function Bn(e,t){return Eo(vi(e),Xn(t,0,e.length))}function qn(e){return Eo(vi(e))}function Hn(e,t,n){(void 0!==n&&!Os(e[t],n)||void 0===n&&!(t in e))&&Vn(e,t,n)}function Un(e,t,n){var r=e[t];Ee.call(e,t)&&Os(r,n)&&(void 0!==n||t in e)||Vn(e,t,n)}function $n(e,t){for(var n=e.length;n--;)if(Os(e[n][0],t))return n;return-1}function Wn(e,t,n,r){return er(e,(function(e,i,o){t(r,e,n(e),o)})),r}function Gn(e,t){return e&&_i(t,ya(t),e)}function Vn(e,t,n){"__proto__"==t&&Ct?Ct(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Jn(e,t){for(var n=-1,i=t.length,o=r(i),s=null==e;++n<i;)o[n]=s?void 0:ga(e,t[n]);return o}function Xn(e,t,n){return e==e&&(void 0!==n&&(e=e<=n?e:n),void 0!==t&&(e=e>=t?e:t)),e}function Qn(e,t,n,r,i,o){var s,a=1&t,l=2&t,h=4&t;if(n&&(s=i?n(e,r,i,o):n(e)),void 0!==s)return s;if(!Us(e))return e;var S=Ms(e);if(S){if(s=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Ee.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!a)return vi(e,s)}else{var M=no(e),R=M==f||M==p;if(Ls(e))return di(e,a);if(M==v||M==c||R&&!i){if(s=l||R?{}:io(e),!a)return l?function(e,t){return _i(e,to(e),t)}(e,function(e,t){return e&&_i(t,wa(t),e)}(s,e)):function(e,t){return _i(e,eo(e),t)}(e,Gn(s,e))}else{if(!qe[M])return i?e:{};s=function(e,t,n){var r=e.constructor;switch(t){case x:return hi(e);case u:case d:return new r(+e);case E:return function(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case A:case C:case j:case T:case O:case k:case"[object Uint8ClampedArray]":case N:case I:return fi(e,n);case g:return new r;case m:case y:return new r(e);case _:return function(e){var t=new e.constructor(e.source,re.exec(e));return t.lastIndex=e.lastIndex,t}(e);case b:return new r;case w:return i=e,Cn?ge(Cn.call(i)):{}}var i}(e,M,a)}}o||(o=new Ln);var D=o.get(e);if(D)return D;o.set(e,s),Xs(e)?e.forEach((function(r){s.add(Qn(r,t,n,r,e,o))})):Ws(e)&&e.forEach((function(r,i){s.set(i,Qn(r,t,n,i,e,o))}));var P=S?void 0:(h?l?Gi:Wi:l?wa:ya)(e);return at(P||e,(function(r,i){P&&(r=e[i=r]),Un(s,i,Qn(r,t,n,i,e,o))})),s}function Yn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ge(e);r--;){var i=n[r],o=t[i],s=e[i];if(void 0===s&&!(i in e)||!o(s))return!1}return!0}function Kn(e,t,n){if("function"!=typeof e)throw new _e(o);return yo((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var i=-1,o=dt,s=!0,a=e.length,c=[],l=t.length;if(!a)return c;n&&(t=ft(t,kt(n))),r?(o=ht,s=!1):t.length>=200&&(o=It,s=!1,t=new Pn(t));e:for(;++i<a;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,s&&d==d){for(var h=l;h--;)if(t[h]===d)continue e;c.push(u)}else o(t,d,r)||c.push(u)}return c}Tn.templateSettings={escape:B,evaluate:q,interpolate:H,variable:"",imports:{_:Tn}},Tn.prototype=kn.prototype,Tn.prototype.constructor=Tn,Nn.prototype=On(kn.prototype),Nn.prototype.constructor=Nn,In.prototype=On(kn.prototype),In.prototype.constructor=In,Mn.prototype.clear=function(){this.__data__=vn?vn(null):{},this.size=0},Mn.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},Mn.prototype.get=function(e){var t=this.__data__;if(vn){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return Ee.call(t,e)?t[e]:void 0},Mn.prototype.has=function(e){var t=this.__data__;return vn?void 0!==t[e]:Ee.call(t,e)},Mn.prototype.set=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=vn&&void 0===t?"__lodash_hash_undefined__":t,this},Rn.prototype.clear=function(){this.__data__=[],this.size=0},Rn.prototype.delete=function(e){var t=this.__data__,n=$n(t,e);return!(n<0)&&(n==t.length-1?t.pop():Xe.call(t,n,1),--this.size,!0)},Rn.prototype.get=function(e){var t=this.__data__,n=$n(t,e);return n<0?void 0:t[n][1]},Rn.prototype.has=function(e){return $n(this.__data__,e)>-1},Rn.prototype.set=function(e,t){var n=this.__data__,r=$n(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Dn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(fn||Rn),string:new Mn}},Dn.prototype.delete=function(e){var t=Yi(this,e).delete(e);return this.size-=t?1:0,t},Dn.prototype.get=function(e){return Yi(this,e).get(e)},Dn.prototype.has=function(e){return Yi(this,e).has(e)},Dn.prototype.set=function(e,t){var n=Yi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Pn.prototype.add=Pn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Pn.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Rn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Rn){var r=n.__data__;if(!fn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Dn(r)}return n.set(e,t),this.size=n.size,this};var er=wi(cr),tr=wi(lr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r<i;){var o=e[r],s=t(o);if(null!=s&&(void 0===a?s==s&&!Ys(s):n(s,a)))var a=s,c=o}return c}function ir(e,t){var n=[];return er(e,(function(e,r,i){t(e,r,i)&&n.push(e)})),n}function or(e,t,n,r,i){var o=-1,s=e.length;for(n||(n=oo),i||(i=[]);++o<s;){var a=e[o];t>0&&n(a)?t>1?or(a,t-1,n,r,i):pt(i,a):r||(i[i.length]=a)}return i}var sr=Si(),ar=Si(!0);function cr(e,t){return e&&sr(e,t,ya)}function lr(e,t){return e&&ar(e,t,ya)}function ur(e,t){return ut(t,(function(t){return Bs(e[t])}))}function dr(e,t){for(var n=0,r=(t=ai(t,e)).length;null!=e&&n<r;)e=e[Co(t[n++])];return n&&n==r?e:void 0}function hr(e,t,n){var r=t(e);return Ms(e)?r:pt(r,n(e))}function fr(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":_t&&_t in ge(e)?function(e){var t=Ee.call(e,_t),n=e[_t];try{e[_t]=void 0;var r=!0}catch(e){}var i=je.call(e);r&&(t?e[_t]=n:delete e[_t]);return i}(e):function(e){return je.call(e)}(e)}function pr(e,t){return e>t}function gr(e,t){return null!=e&&Ee.call(e,t)}function mr(e,t){return null!=e&&t in ge(e)}function vr(e,t,n){for(var i=n?ht:dt,o=e[0].length,s=e.length,a=s,c=r(s),l=1/0,u=[];a--;){var d=e[a];a&&t&&(d=ft(d,kt(t))),l=an(d.length,l),c[a]=!n&&(t||o>=120&&d.length>=120)?new Pn(a&&d):void 0}d=e[0];var h=-1,f=c[0];e:for(;++h<o&&u.length<l;){var p=d[h],g=t?t(p):p;if(p=n||0!==p?p:0,!(f?It(f,g):i(u,g,n))){for(a=s;--a;){var m=c[a];if(!(m?It(m,g):i(e[a],g,n)))continue e}f&&f.push(g),u.push(p)}}return u}function _r(e,t,n){var r=null==(e=mo(e,t=ai(t,e)))?e:e[Co(Fo(t))];return null==r?void 0:ot(r,e,n)}function br(e){return $s(e)&&fr(e)==c}function yr(e,t,n,r,i){return e===t||(null==e||null==t||!$s(e)&&!$s(t)?e!=e&&t!=t:function(e,t,n,r,i,o){var s=Ms(e),a=Ms(t),f=s?l:no(e),p=a?l:no(t),S=(f=f==c?v:f)==v,A=(p=p==c?v:p)==v,C=f==p;if(C&&Ls(e)){if(!Ls(t))return!1;s=!0,S=!1}if(C&&!S)return o||(o=new Ln),s||Ks(e)?Ui(e,t,n,r,i,o):function(e,t,n,r,i,o,s){switch(n){case E:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case x:return!(e.byteLength!=t.byteLength||!o(new Pe(e),new Pe(t)));case u:case d:case m:return Os(+e,+t);case h:return e.name==t.name&&e.message==t.message;case _:case y:return e==t+"";case g:var a=Bt;case b:var c=1&r;if(a||(a=Ut),e.size!=t.size&&!c)return!1;var l=s.get(e);if(l)return l==t;r|=2,s.set(e,t);var f=Ui(a(e),a(t),r,i,o,s);return s.delete(e),f;case w:if(Cn)return Cn.call(e)==Cn.call(t)}return!1}(e,t,f,n,r,i,o);if(!(1&n)){var j=S&&Ee.call(e,"__wrapped__"),T=A&&Ee.call(t,"__wrapped__");if(j||T){var O=j?e.value():e,k=T?t.value():t;return o||(o=new Ln),i(O,k,n,r,o)}}if(!C)return!1;return o||(o=new Ln),function(e,t,n,r,i,o){var s=1&n,a=Wi(e),c=a.length,l=Wi(t).length;if(c!=l&&!s)return!1;var u=c;for(;u--;){var d=a[u];if(!(s?d in t:Ee.call(t,d)))return!1}var h=o.get(e),f=o.get(t);if(h&&f)return h==t&&f==e;var p=!0;o.set(e,t),o.set(t,e);var g=s;for(;++u<c;){d=a[u];var m=e[d],v=t[d];if(r)var _=s?r(v,m,d,t,e,o):r(m,v,d,e,t,o);if(!(void 0===_?m===v||i(m,v,n,r,o):_)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,y=t.constructor;b==y||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof y&&y instanceof y||(p=!1)}return o.delete(e),o.delete(t),p}(e,t,n,r,i,o)}(e,t,n,r,yr,i))}function wr(e,t,n,r){var i=n.length,o=i,s=!r;if(null==e)return!o;for(e=ge(e);i--;){var a=n[i];if(s&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<o;){var c=(a=n[i])[0],l=e[c],u=a[1];if(s&&a[2]){if(void 0===l&&!(c in e))return!1}else{var d=new Ln;if(r)var h=r(l,u,c,e,t,d);if(!(void 0===h?yr(u,l,3,r,d):h))return!1}}return!0}function Sr(e){return!(!Us(e)||(t=e,Ce&&Ce in t))&&(Bs(e)?ke:se).test(jo(e));var t}function xr(e){return"function"==typeof e?e:null==e?Ga:"object"==typeof e?Ms(e)?Or(e[0],e[1]):Tr(e):tc(e)}function Er(e){if(!ho(e))return on(e);var t=[];for(var n in ge(e))Ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}function Ar(e){if(!Us(e))return function(e){var t=[];if(null!=e)for(var n in ge(e))t.push(n);return t}(e);var t=ho(e),n=[];for(var r in e)("constructor"!=r||!t&&Ee.call(e,r))&&n.push(r);return n}function Cr(e,t){return e<t}function jr(e,t){var n=-1,i=Ds(e)?r(e.length):[];return er(e,(function(e,r,o){i[++n]=t(e,r,o)})),i}function Tr(e){var t=Ki(e);return 1==t.length&&t[0][2]?po(t[0][0],t[0][1]):function(n){return n===e||wr(n,e,t)}}function Or(e,t){return co(e)&&fo(t)?po(Co(e),t):function(n){var r=ga(n,e);return void 0===r&&r===t?ma(n,e):yr(t,r,3)}}function kr(e,t,n,r,i){e!==t&&sr(t,(function(o,s){if(i||(i=new Ln),Us(o))!function(e,t,n,r,i,o,s){var a=_o(e,n),c=_o(t,n),l=s.get(c);if(l)return void Hn(e,n,l);var u=o?o(a,c,n+"",e,t,s):void 0,d=void 0===u;if(d){var h=Ms(c),f=!h&&Ls(c),p=!h&&!f&&Ks(c);u=c,h||f||p?Ms(a)?u=a:Ps(a)?u=vi(a):f?(d=!1,u=di(c,!0)):p?(d=!1,u=fi(c,!0)):u=[]:Vs(c)||Is(c)?(u=a,Is(a)?u=sa(a):Us(a)&&!Bs(a)||(u=io(c))):d=!1}d&&(s.set(c,u),i(u,c,r,o,s),s.delete(c));Hn(e,n,u)}(e,t,s,n,kr,r,i);else{var a=r?r(_o(e,s),o,s+"",e,t,i):void 0;void 0===a&&(a=o),Hn(e,s,a)}}),wa)}function Nr(e,t){var n=e.length;if(n)return so(t+=t<0?n:0,n)?e[t]:void 0}function Ir(e,t,n){t=t.length?ft(t,(function(e){return Ms(e)?function(t){return dr(t,1===e.length?e[0]:e)}:e})):[Ga];var r=-1;return t=ft(t,kt(Qi())),function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e}(jr(e,(function(e,n,i){return{criteria:ft(t,(function(t){return t(e)})),index:++r,value:e}})),(function(e,t){return function(e,t,n){var r=-1,i=e.criteria,o=t.criteria,s=i.length,a=n.length;for(;++r<s;){var c=pi(i[r],o[r]);if(c){if(r>=a)return c;var l=n[r];return c*("desc"==l?-1:1)}}return e.index-t.index}(e,t,n)}))}function Mr(e,t,n){for(var r=-1,i=t.length,o={};++r<i;){var s=t[r],a=dr(e,s);n(a,s)&&qr(o,ai(s,e),a)}return o}function Rr(e,t,n,r){var i=r?St:wt,o=-1,s=t.length,a=e;for(e===t&&(t=vi(t)),n&&(a=ft(e,kt(n)));++o<s;)for(var c=0,l=t[o],u=n?n(l):l;(c=i(a,u,c,r))>-1;)a!==e&&Xe.call(a,c,1),Xe.call(e,c,1);return e}function Dr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;so(i)?Xe.call(e,i,1):Zr(e,i)}}return e}function Pr(e,t){return e+Zt(un()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function zr(e,t){return wo(go(e,t,Ga),e+"")}function Fr(e){return Fn(Oa(e))}function Br(e,t){var n=Oa(e);return Eo(n,Xn(t,0,n.length))}function qr(e,t,n,r){if(!Us(e))return e;for(var i=-1,o=(t=ai(t,e)).length,s=o-1,a=e;null!=a&&++i<o;){var c=Co(t[i]),l=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(i!=s){var u=a[c];void 0===(l=r?r(u,c,a):void 0)&&(l=Us(u)?u:so(t[i+1])?[]:{})}Un(a,c,l),a=a[c]}return e}var Hr=_n?function(e,t){return _n.set(e,t),e}:Ga,Ur=Ct?function(e,t){return Ct(e,"toString",{configurable:!0,enumerable:!1,value:Ua(t),writable:!0})}:Ga;function $r(e){return Eo(Oa(e))}function Wr(e,t,n){var i=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=r(o);++i<o;)s[i]=e[i+t];return s}function Gr(e,t){var n;return er(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n}function Vr(e,t,n){var r=0,i=null==e?r:e.length;if("number"==typeof t&&t==t&&i<=2147483647){for(;r<i;){var o=r+i>>>1,s=e[o];null!==s&&!Ys(s)&&(n?s<=t:s<t)?r=o+1:i=o}return i}return Jr(e,t,Ga,n)}function Jr(e,t,n,r){var i=0,o=null==e?0:e.length;if(0===o)return 0;for(var s=(t=n(t))!=t,a=null===t,c=Ys(t),l=void 0===t;i<o;){var u=Zt((i+o)/2),d=n(e[u]),h=void 0!==d,f=null===d,p=d==d,g=Ys(d);if(s)var m=r||p;else m=l?p&&(r||h):a?p&&h&&(r||!f):c?p&&h&&!f&&(r||!g):!f&&!g&&(r?d<=t:d<t);m?i=u+1:o=u}return an(o,4294967294)}function Xr(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var s=e[n],a=t?t(s):s;if(!n||!Os(a,c)){var c=a;o[i++]=0===s?0:s}}return o}function Qr(e){return"number"==typeof e?e:Ys(e)?NaN:+e}function Yr(e){if("string"==typeof e)return e;if(Ms(e))return ft(e,Yr)+"";if(Ys(e))return jn?jn.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Kr(e,t,n){var r=-1,i=dt,o=e.length,s=!0,a=[],c=a;if(n)s=!1,i=ht;else if(o>=200){var l=t?null:Li(e);if(l)return Ut(l);s=!1,i=It,c=new Pn}else c=t?[]:a;e:for(;++r<o;){var u=e[r],d=t?t(u):u;if(u=n||0!==u?u:0,s&&d==d){for(var h=c.length;h--;)if(c[h]===d)continue e;t&&c.push(d),a.push(u)}else i(c,d,n)||(c!==a&&c.push(d),a.push(u))}return a}function Zr(e,t){return null==(e=mo(e,t=ai(t,e)))||delete e[Co(Fo(t))]}function ei(e,t,n,r){return qr(e,t,n(dr(e,t)),r)}function ti(e,t,n,r){for(var i=e.length,o=r?i:-1;(r?o--:++o<i)&&t(e[o],o,e););return n?Wr(e,r?0:o,r?o+1:i):Wr(e,r?o+1:0,r?i:o)}function ni(e,t){var n=e;return n instanceof In&&(n=n.value()),gt(t,(function(e,t){return t.func.apply(t.thisArg,pt([e],t.args))}),n)}function ri(e,t,n){var i=e.length;if(i<2)return i?Kr(e[0]):[];for(var o=-1,s=r(i);++o<i;)for(var a=e[o],c=-1;++c<i;)c!=o&&(s[o]=Zn(s[o]||a,e[c],t,n));return Kr(or(s,1),t,n)}function ii(e,t,n){for(var r=-1,i=e.length,o=t.length,s={};++r<i;){var a=r<o?t[r]:void 0;n(s,e[r],a)}return s}function oi(e){return Ps(e)?e:[]}function si(e){return"function"==typeof e?e:Ga}function ai(e,t){return Ms(e)?e:co(e,t)?[e]:Ao(aa(e))}var ci=zr;function li(e,t,n){var r=e.length;return n=void 0===n?r:n,!t&&n>=r?e:Wr(e,t,n)}var ui=Xt||function(e){return Ve.clearTimeout(e)};function di(e,t){if(t)return e.slice();var n=e.length,r=He?He(n):new e.constructor(n);return e.copy(r),r}function hi(e){var t=new e.constructor(e.byteLength);return new Pe(t).set(new Pe(e)),t}function fi(e,t){var n=t?hi(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function pi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Ys(e),s=void 0!==t,a=null===t,c=t==t,l=Ys(t);if(!a&&!l&&!o&&e>t||o&&s&&c&&!a&&!l||r&&s&&c||!n&&c||!i)return 1;if(!r&&!o&&!l&&e<t||l&&n&&i&&!r&&!o||a&&n&&i||!s&&i||!c)return-1}return 0}function gi(e,t,n,i){for(var o=-1,s=e.length,a=n.length,c=-1,l=t.length,u=sn(s-a,0),d=r(l+u),h=!i;++c<l;)d[c]=t[c];for(;++o<a;)(h||o<s)&&(d[n[o]]=e[o]);for(;u--;)d[c++]=e[o++];return d}function mi(e,t,n,i){for(var o=-1,s=e.length,a=-1,c=n.length,l=-1,u=t.length,d=sn(s-c,0),h=r(d+u),f=!i;++o<d;)h[o]=e[o];for(var p=o;++l<u;)h[p+l]=t[l];for(;++a<c;)(f||o<s)&&(h[p+n[a]]=e[o++]);return h}function vi(e,t){var n=-1,i=e.length;for(t||(t=r(i));++n<i;)t[n]=e[n];return t}function _i(e,t,n,r){var i=!n;n||(n={});for(var o=-1,s=t.length;++o<s;){var a=t[o],c=r?r(n[a],e[a],a,n,e):void 0;void 0===c&&(c=e[a]),i?Vn(n,a,c):Un(n,a,c)}return n}function bi(e,t){return function(n,r){var i=Ms(n)?st:Wn,o=t?t():{};return i(n,e,Qi(r,2),o)}}function yi(e){return zr((function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,s&&ao(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=ge(t);++r<i;){var a=n[r];a&&e(t,a,r,o)}return t}))}function wi(e,t){return function(n,r){if(null==n)return n;if(!Ds(n))return e(n,r);for(var i=n.length,o=t?i:-1,s=ge(n);(t?o--:++o<i)&&!1!==r(s[o],o,s););return n}}function Si(e){return function(t,n,r){for(var i=-1,o=ge(t),s=r(t),a=s.length;a--;){var c=s[e?a:++i];if(!1===n(o[c],c,o))break}return t}}function xi(e){return function(t){var n=Ft(t=aa(t))?Gt(t):void 0,r=n?n[0]:t.charAt(0),i=n?li(n,1).join(""):t.slice(1);return r[e]()+i}}function Ei(e){return function(t){return gt(Ba(Ia(t).replace(Ie,"")),e,"")}}function Ai(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=On(e.prototype),r=e.apply(n,t);return Us(r)?r:n}}function Ci(e){return function(t,n,r){var i=ge(t);if(!Ds(t)){var o=Qi(n,3);t=ya(t),n=function(e){return o(i[e],e,i)}}var s=e(t,n,r);return s>-1?i[o?t[s]:s]:void 0}}function ji(e){return $i((function(t){var n=t.length,r=n,i=Nn.prototype.thru;for(e&&t.reverse();r--;){var s=t[r];if("function"!=typeof s)throw new _e(o);if(i&&!a&&"wrapper"==Ji(s))var a=new Nn([],!0)}for(r=a?r:n;++r<n;){var c=Ji(s=t[r]),l="wrapper"==c?Vi(s):void 0;a=l&&lo(l[0])&&424==l[1]&&!l[4].length&&1==l[9]?a[Ji(l[0])].apply(a,l[3]):1==s.length&&lo(s)?a[c]():a.thru(s)}return function(){var e=arguments,r=e[0];if(a&&1==e.length&&Ms(r))return a.plant(r).value();for(var i=0,o=n?t[i].apply(this,e):r;++i<n;)o=t[i].call(this,o);return o}}))}function Ti(e,t,n,i,o,s,a,c,l,u){var d=128&t,h=1&t,f=2&t,p=24&t,g=512&t,m=f?void 0:Ai(e);return function v(){for(var _=arguments.length,b=r(_),y=_;y--;)b[y]=arguments[y];if(p)var w=Xi(v),S=Dt(b,w);if(i&&(b=gi(b,i,o,p)),s&&(b=mi(b,s,a,p)),_-=S,p&&_<u){var x=Ht(b,w);return Di(e,t,Ti,v.placeholder,n,b,x,c,l,u-_)}var E=h?n:this,A=f?E[e]:e;return _=b.length,c?b=vo(b,c):g&&_>1&&b.reverse(),d&&l<_&&(b.length=l),this&&this!==Ve&&this instanceof v&&(A=m||Ai(A)),A.apply(E,b)}}function Oi(e,t){return function(n,r){return function(e,t,n,r){return cr(e,(function(e,i,o){t(r,n(e),i,o)})),r}(n,e,t(r),{})}}function ki(e,t){return function(n,r){var i;if(void 0===n&&void 0===r)return t;if(void 0!==n&&(i=n),void 0!==r){if(void 0===i)return r;"string"==typeof n||"string"==typeof r?(n=Yr(n),r=Yr(r)):(n=Qr(n),r=Qr(r)),i=e(n,r)}return i}}function Ni(e){return $i((function(t){return t=ft(t,kt(Qi())),zr((function(n){var r=this;return e(t,(function(e){return ot(e,r,n)}))}))}))}function Ii(e,t){var n=(t=void 0===t?" ":Yr(t)).length;if(n<2)return n?Lr(t,e):t;var r=Lr(t,Kt(e/Wt(t)));return Ft(t)?li(Gt(r),0,e).join(""):r.slice(0,e)}function Mi(e){return function(t,n,i){return i&&"number"!=typeof i&&ao(t,n,i)&&(n=i=void 0),t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n,i){for(var o=-1,s=sn(Kt((t-e)/(n||1)),0),a=r(s);s--;)a[i?s:++o]=e,e+=n;return a}(t,n,i=void 0===i?t<n?1:-1:na(i),e)}}function Ri(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=oa(t),n=oa(n)),e(t,n)}}function Di(e,t,n,r,i,o,s,a,c,l){var u=8&t;t|=u?32:64,4&(t&=~(u?64:32))||(t&=-4);var d=[e,t,i,u?o:void 0,u?s:void 0,u?void 0:o,u?void 0:s,a,c,l],h=n.apply(void 0,d);return lo(e)&&bo(h,d),h.placeholder=r,So(h,e,t)}function Pi(e){var t=pe[e];return function(e,n){if(e=oa(e),(n=null==n?0:an(ra(n),292))&&nn(e)){var r=(aa(e)+"e").split("e");return+((r=(aa(t(r[0]+"e"+(+r[1]+n)))+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}var Li=gn&&1/Ut(new gn([,-0]))[1]==1/0?function(e){return new gn(e)}:Ya;function zi(e){return function(t){var n=no(t);return n==g?Bt(t):n==b?$t(t):function(e,t){return ft(t,(function(t){return[t,e[t]]}))}(t,e(t))}}function Fi(e,t,n,i,a,c,l,u){var d=2&t;if(!d&&"function"!=typeof e)throw new _e(o);var h=i?i.length:0;if(h||(t&=-97,i=a=void 0),l=void 0===l?l:sn(ra(l),0),u=void 0===u?u:ra(u),h-=a?a.length:0,64&t){var f=i,p=a;i=a=void 0}var g=d?void 0:Vi(e),m=[e,t,n,i,a,f,p,c,l,u];if(g&&function(e,t){var n=e[1],r=t[1],i=n|r,o=i<131,a=128==r&&8==n||128==r&&256==n&&e[7].length<=t[8]||384==r&&t[7].length<=t[8]&&8==n;if(!o&&!a)return e;1&r&&(e[2]=t[2],i|=1&n?0:4);var c=t[3];if(c){var l=e[3];e[3]=l?gi(l,c,t[4]):c,e[4]=l?Ht(e[3],s):t[4]}(c=t[5])&&(l=e[5],e[5]=l?mi(l,c,t[6]):c,e[6]=l?Ht(e[5],s):t[6]);(c=t[7])&&(e[7]=c);128&r&&(e[8]=null==e[8]?t[8]:an(e[8],t[8]));null==e[9]&&(e[9]=t[9]);e[0]=t[0],e[1]=i}(m,g),e=m[0],t=m[1],n=m[2],i=m[3],a=m[4],!(u=m[9]=void 0===m[9]?d?0:e.length:sn(m[9]-h,0))&&24&t&&(t&=-25),t&&1!=t)v=8==t||16==t?function(e,t,n){var i=Ai(e);return function o(){for(var s=arguments.length,a=r(s),c=s,l=Xi(o);c--;)a[c]=arguments[c];var u=s<3&&a[0]!==l&&a[s-1]!==l?[]:Ht(a,l);if((s-=u.length)<n)return Di(e,t,Ti,o.placeholder,void 0,a,u,void 0,void 0,n-s);var d=this&&this!==Ve&&this instanceof o?i:e;return ot(d,this,a)}}(e,t,u):32!=t&&33!=t||a.length?Ti.apply(void 0,m):function(e,t,n,i){var o=1&t,s=Ai(e);return function t(){for(var a=-1,c=arguments.length,l=-1,u=i.length,d=r(u+c),h=this&&this!==Ve&&this instanceof t?s:e;++l<u;)d[l]=i[l];for(;c--;)d[l++]=arguments[++a];return ot(h,o?n:this,d)}}(e,t,n,i);else var v=function(e,t,n){var r=1&t,i=Ai(e);return function t(){var o=this&&this!==Ve&&this instanceof t?i:e;return o.apply(r?n:this,arguments)}}(e,t,n);return So((g?Hr:bo)(v,m),e,t)}function Bi(e,t,n,r){return void 0===e||Os(e,we[n])&&!Ee.call(r,n)?t:e}function qi(e,t,n,r,i,o){return Us(e)&&Us(t)&&(o.set(t,e),kr(e,t,void 0,qi,o),o.delete(t)),e}function Hi(e){return Vs(e)?void 0:e}function Ui(e,t,n,r,i,o){var s=1&n,a=e.length,c=t.length;if(a!=c&&!(s&&c>a))return!1;var l=o.get(e),u=o.get(t);if(l&&u)return l==t&&u==e;var d=-1,h=!0,f=2&n?new Pn:void 0;for(o.set(e,t),o.set(t,e);++d<a;){var p=e[d],g=t[d];if(r)var m=s?r(g,p,d,t,e,o):r(p,g,d,e,t,o);if(void 0!==m){if(m)continue;h=!1;break}if(f){if(!vt(t,(function(e,t){if(!It(f,t)&&(p===e||i(p,e,n,r,o)))return f.push(t)}))){h=!1;break}}else if(p!==g&&!i(p,g,n,r,o)){h=!1;break}}return o.delete(e),o.delete(t),h}function $i(e){return wo(go(e,void 0,Ro),e+"")}function Wi(e){return hr(e,ya,eo)}function Gi(e){return hr(e,wa,to)}var Vi=_n?function(e){return _n.get(e)}:Ya;function Ji(e){for(var t=e.name+"",n=bn[t],r=Ee.call(bn,t)?n.length:0;r--;){var i=n[r],o=i.func;if(null==o||o==e)return i.name}return t}function Xi(e){return(Ee.call(Tn,"placeholder")?Tn:e).placeholder}function Qi(){var e=Tn.iteratee||Va;return e=e===Va?xr:e,arguments.length?e(arguments[0],arguments[1]):e}function Yi(e,t){var n,r,i=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function Ki(e){for(var t=ya(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,fo(i)]}return t}function Zi(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return Sr(n)?n:void 0}var eo=en?function(e){return null==e?[]:(e=ge(e),ut(en(e),(function(t){return Je.call(e,t)})))}:ic,to=en?function(e){for(var t=[];e;)pt(t,eo(e)),e=We(e);return t}:ic,no=fr;function ro(e,t,n){for(var r=-1,i=(t=ai(t,e)).length,o=!1;++r<i;){var s=Co(t[r]);if(!(o=null!=e&&n(e,s)))break;e=e[s]}return o||++r!=i?o:!!(i=null==e?0:e.length)&&Hs(i)&&so(s,i)&&(Ms(e)||Is(e))}function io(e){return"function"!=typeof e.constructor||ho(e)?{}:On(We(e))}function oo(e){return Ms(e)||Is(e)||!!(Ye&&e&&e[Ye])}function so(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&ce.test(e))&&e>-1&&e%1==0&&e<t}function ao(e,t,n){if(!Us(n))return!1;var r=typeof t;return!!("number"==r?Ds(n)&&so(t,n.length):"string"==r&&t in n)&&Os(n[t],e)}function co(e,t){if(Ms(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Ys(e))||($.test(e)||!U.test(e)||null!=t&&e in ge(t))}function lo(e){var t=Ji(e),n=Tn[t];if("function"!=typeof n||!(t in In.prototype))return!1;if(e===n)return!0;var r=Vi(n);return!!r&&e===r[0]}(hn&&no(new hn(new ArrayBuffer(1)))!=E||fn&&no(new fn)!=g||pn&&"[object Promise]"!=no(pn.resolve())||gn&&no(new gn)!=b||mn&&no(new mn)!=S)&&(no=function(e){var t=fr(e),n=t==v?e.constructor:void 0,r=n?jo(n):"";if(r)switch(r){case yn:return E;case wn:return g;case Sn:return"[object Promise]";case xn:return b;case En:return S}return t});var uo=Se?Bs:oc;function ho(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||we)}function fo(e){return e==e&&!Us(e)}function po(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in ge(n)))}}function go(e,t,n){return t=sn(void 0===t?e.length-1:t,0),function(){for(var i=arguments,o=-1,s=sn(i.length-t,0),a=r(s);++o<s;)a[o]=i[t+o];o=-1;for(var c=r(t+1);++o<t;)c[o]=i[o];return c[t]=n(a),ot(e,this,c)}}function mo(e,t){return t.length<2?e:dr(e,Wr(t,0,-1))}function vo(e,t){for(var n=e.length,r=an(t.length,n),i=vi(e);r--;){var o=t[r];e[r]=so(o,n)?i[o]:void 0}return e}function _o(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}var bo=xo(Hr),yo=Yt||function(e,t){return Ve.setTimeout(e,t)},wo=xo(Ur);function So(e,t,n){var r=t+"";return wo(e,function(e,t){var n=t.length;if(!n)return e;var r=n-1;return t[r]=(n>1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(Y,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return at(a,(function(n){var r="_."+n[0];t&n[1]&&!dt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(K);return t?t[1].split(Z):[]}(r),n)))}function xo(e){var t=0,n=0;return function(){var r=cn(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Eo(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n<t;){var o=Pr(n,i),s=e[o];e[o]=e[n],e[n]=s}return e.length=t,e}var Ao=function(e){var t=xs(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(W,(function(e,n,r,i){t.push(r?i.replace(te,"$1"):n||e)})),t}));function Co(e){if("string"==typeof e||Ys(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function jo(e){if(null!=e){try{return xe.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function To(e){if(e instanceof In)return e.clone();var t=new Nn(e.__wrapped__,e.__chain__);return t.__actions__=vi(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}var Oo=zr((function(e,t){return Ps(e)?Zn(e,or(t,1,Ps,!0)):[]})),ko=zr((function(e,t){var n=Fo(t);return Ps(n)&&(n=void 0),Ps(e)?Zn(e,or(t,1,Ps,!0),Qi(n,2)):[]})),No=zr((function(e,t){var n=Fo(t);return Ps(n)&&(n=void 0),Ps(e)?Zn(e,or(t,1,Ps,!0),void 0,n):[]}));function Io(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=sn(r+i,0)),yt(e,Qi(t,3),i)}function Mo(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return void 0!==n&&(i=ra(n),i=n<0?sn(r+i,0):an(i,r-1)),yt(e,Qi(t,3),i,!0)}function Ro(e){return(null==e?0:e.length)?or(e,1):[]}function Do(e){return e&&e.length?e[0]:void 0}var Po=zr((function(e){var t=ft(e,oi);return t.length&&t[0]===e[0]?vr(t):[]})),Lo=zr((function(e){var t=Fo(e),n=ft(e,oi);return t===Fo(n)?t=void 0:n.pop(),n.length&&n[0]===e[0]?vr(n,Qi(t,2)):[]})),zo=zr((function(e){var t=Fo(e),n=ft(e,oi);return(t="function"==typeof t?t:void 0)&&n.pop(),n.length&&n[0]===e[0]?vr(n,void 0,t):[]}));function Fo(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}var Bo=zr(qo);function qo(e,t){return e&&e.length&&t&&t.length?Rr(e,t):e}var Ho=$i((function(e,t){var n=null==e?0:e.length,r=Jn(e,t);return Dr(e,ft(t,(function(e){return so(e,n)?+e:e})).sort(pi)),r}));function Uo(e){return null==e?e:dn.call(e)}var $o=zr((function(e){return Kr(or(e,1,Ps,!0))})),Wo=zr((function(e){var t=Fo(e);return Ps(t)&&(t=void 0),Kr(or(e,1,Ps,!0),Qi(t,2))})),Go=zr((function(e){var t=Fo(e);return t="function"==typeof t?t:void 0,Kr(or(e,1,Ps,!0),void 0,t)}));function Vo(e){if(!e||!e.length)return[];var t=0;return e=ut(e,(function(e){if(Ps(e))return t=sn(e.length,t),!0})),Ot(t,(function(t){return ft(e,At(t))}))}function Jo(e,t){if(!e||!e.length)return[];var n=Vo(e);return null==t?n:ft(n,(function(e){return ot(t,void 0,e)}))}var Xo=zr((function(e,t){return Ps(e)?Zn(e,t):[]})),Qo=zr((function(e){return ri(ut(e,Ps))})),Yo=zr((function(e){var t=Fo(e);return Ps(t)&&(t=void 0),ri(ut(e,Ps),Qi(t,2))})),Ko=zr((function(e){var t=Fo(e);return t="function"==typeof t?t:void 0,ri(ut(e,Ps),void 0,t)})),Zo=zr(Vo);var es=zr((function(e){var t=e.length,n=t>1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Jo(e,n)}));function ts(e){var t=Tn(e);return t.__chain__=!0,t}function ns(e,t){return t(e)}var rs=$i((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Jn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof In&&so(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:ns,args:[i],thisArg:void 0}),new Nn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var is=bi((function(e,t,n){Ee.call(e,n)?++e[n]:Vn(e,n,1)}));var os=Ci(Io),ss=Ci(Mo);function as(e,t){return(Ms(e)?at:er)(e,Qi(t,3))}function cs(e,t){return(Ms(e)?ct:tr)(e,Qi(t,3))}var ls=bi((function(e,t,n){Ee.call(e,n)?e[n].push(t):Vn(e,n,[t])}));var us=zr((function(e,t,n){var i=-1,o="function"==typeof t,s=Ds(e)?r(e.length):[];return er(e,(function(e){s[++i]=o?ot(t,e,n):_r(e,t,n)})),s})),ds=bi((function(e,t,n){Vn(e,n,t)}));function hs(e,t){return(Ms(e)?ft:jr)(e,Qi(t,3))}var fs=bi((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var ps=zr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ao(e,t[0],t[1])?t=[]:n>2&&ao(t[0],t[1],t[2])&&(t=[t[0]]),Ir(e,or(t,1),[])})),gs=Qt||function(){return Ve.Date.now()};function ms(e,t,n){return t=n?void 0:t,Fi(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function vs(e,t){var n;if("function"!=typeof t)throw new _e(o);return e=ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var _s=zr((function(e,t,n){var r=1;if(n.length){var i=Ht(n,Xi(_s));r|=32}return Fi(e,r,t,n,i)})),bs=zr((function(e,t,n){var r=3;if(n.length){var i=Ht(n,Xi(bs));r|=32}return Fi(t,r,e,n,i)}));function ys(e,t,n){var r,i,s,a,c,l,u=0,d=!1,h=!1,f=!0;if("function"!=typeof e)throw new _e(o);function p(t){var n=r,o=i;return r=i=void 0,u=t,a=e.apply(o,n)}function g(e){return u=e,c=yo(v,t),d?p(e):a}function m(e){var n=e-l;return void 0===l||n>=t||n<0||h&&e-u>=s}function v(){var e=gs();if(m(e))return _(e);c=yo(v,function(e){var n=t-(e-l);return h?an(n,s-(e-u)):n}(e))}function _(e){return c=void 0,f&&r?p(e):(r=i=void 0,a)}function b(){var e=gs(),n=m(e);if(r=arguments,i=this,l=e,n){if(void 0===c)return g(l);if(h)return ui(c),c=yo(v,t),p(l)}return void 0===c&&(c=yo(v,t)),a}return t=oa(t)||0,Us(n)&&(d=!!n.leading,s=(h="maxWait"in n)?sn(oa(n.maxWait)||0,t):s,f="trailing"in n?!!n.trailing:f),b.cancel=function(){void 0!==c&&ui(c),u=0,r=l=i=c=void 0},b.flush=function(){return void 0===c?a:_(gs())},b}var ws=zr((function(e,t){return Kn(e,1,t)})),Ss=zr((function(e,t,n){return Kn(e,oa(t)||0,n)}));function xs(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new _e(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=e.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(xs.Cache||Dn),n}function Es(e){if("function"!=typeof e)throw new _e(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}xs.Cache=Dn;var As=ci((function(e,t){var n=(t=1==t.length&&Ms(t[0])?ft(t[0],kt(Qi())):ft(or(t,1),kt(Qi()))).length;return zr((function(r){for(var i=-1,o=an(r.length,n);++i<o;)r[i]=t[i].call(this,r[i]);return ot(e,this,r)}))})),Cs=zr((function(e,t){return Fi(e,32,void 0,t,Ht(t,Xi(Cs)))})),js=zr((function(e,t){return Fi(e,64,void 0,t,Ht(t,Xi(js)))})),Ts=$i((function(e,t){return Fi(e,256,void 0,void 0,void 0,t)}));function Os(e,t){return e===t||e!=e&&t!=t}var ks=Ri(pr),Ns=Ri((function(e,t){return e>=t})),Is=br(function(){return arguments}())?br:function(e){return $s(e)&&Ee.call(e,"callee")&&!Je.call(e,"callee")},Ms=r.isArray,Rs=Ze?kt(Ze):function(e){return $s(e)&&fr(e)==x};function Ds(e){return null!=e&&Hs(e.length)&&!Bs(e)}function Ps(e){return $s(e)&&Ds(e)}var Ls=tn||oc,zs=et?kt(et):function(e){return $s(e)&&fr(e)==d};function Fs(e){if(!$s(e))return!1;var t=fr(e);return t==h||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!Vs(e)}function Bs(e){if(!Us(e))return!1;var t=fr(e);return t==f||t==p||"[object AsyncFunction]"==t||"[object Proxy]"==t}function qs(e){return"number"==typeof e&&e==ra(e)}function Hs(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Us(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function $s(e){return null!=e&&"object"==typeof e}var Ws=tt?kt(tt):function(e){return $s(e)&&no(e)==g};function Gs(e){return"number"==typeof e||$s(e)&&fr(e)==m}function Vs(e){if(!$s(e)||fr(e)!=v)return!1;var t=We(e);if(null===t)return!0;var n=Ee.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&xe.call(n)==Te}var Js=nt?kt(nt):function(e){return $s(e)&&fr(e)==_};var Xs=rt?kt(rt):function(e){return $s(e)&&no(e)==b};function Qs(e){return"string"==typeof e||!Ms(e)&&$s(e)&&fr(e)==y}function Ys(e){return"symbol"==typeof e||$s(e)&&fr(e)==w}var Ks=it?kt(it):function(e){return $s(e)&&Hs(e.length)&&!!Be[fr(e)]};var Zs=Ri(Cr),ea=Ri((function(e,t){return e<=t}));function ta(e){if(!e)return[];if(Ds(e))return Qs(e)?Gt(e):vi(e);if(Ke&&e[Ke])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ke]());var t=no(e);return(t==g?Bt:t==b?Ut:Oa)(e)}function na(e){return e?(e=oa(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ra(e){var t=na(e),n=t%1;return t==t?n?t-n:t:0}function ia(e){return e?Xn(ra(e),0,4294967295):0}function oa(e){if("number"==typeof e)return e;if(Ys(e))return NaN;if(Us(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Us(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(J,"");var n=oe.test(e);return n||ae.test(e)?$e(e.slice(2),n?2:8):ie.test(e)?NaN:+e}function sa(e){return _i(e,wa(e))}function aa(e){return null==e?"":Yr(e)}var ca=yi((function(e,t){if(ho(t)||Ds(t))_i(t,ya(t),e);else for(var n in t)Ee.call(t,n)&&Un(e,n,t[n])})),la=yi((function(e,t){_i(t,wa(t),e)})),ua=yi((function(e,t,n,r){_i(t,wa(t),e,r)})),da=yi((function(e,t,n,r){_i(t,ya(t),e,r)})),ha=$i(Jn);var fa=zr((function(e,t){e=ge(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&ao(t[0],t[1],i)&&(r=1);++n<r;)for(var o=t[n],s=wa(o),a=-1,c=s.length;++a<c;){var l=s[a],u=e[l];(void 0===u||Os(u,we[l])&&!Ee.call(e,l))&&(e[l]=o[l])}return e})),pa=zr((function(e){return e.push(void 0,qi),ot(xa,void 0,e)}));function ga(e,t,n){var r=null==e?void 0:dr(e,t);return void 0===r?n:r}function ma(e,t){return null!=e&&ro(e,t,mr)}var va=Oi((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=je.call(t)),e[t]=n}),Ua(Ga)),_a=Oi((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=je.call(t)),Ee.call(e,t)?e[t].push(n):e[t]=[n]}),Qi),ba=zr(_r);function ya(e){return Ds(e)?zn(e):Er(e)}function wa(e){return Ds(e)?zn(e,!0):Ar(e)}var Sa=yi((function(e,t,n){kr(e,t,n)})),xa=yi((function(e,t,n,r){kr(e,t,n,r)})),Ea=$i((function(e,t){var n={};if(null==e)return n;var r=!1;t=ft(t,(function(t){return t=ai(t,e),r||(r=t.length>1),t})),_i(e,Gi(e),n),r&&(n=Qn(n,7,Hi));for(var i=t.length;i--;)Zr(n,t[i]);return n}));var Aa=$i((function(e,t){return null==e?{}:function(e,t){return Mr(e,t,(function(t,n){return ma(e,n)}))}(e,t)}));function Ca(e,t){if(null==e)return{};var n=ft(Gi(e),(function(e){return[e]}));return t=Qi(t),Mr(e,n,(function(e,n){return t(e,n[0])}))}var ja=zi(ya),Ta=zi(wa);function Oa(e){return null==e?[]:Nt(e,ya(e))}var ka=Ei((function(e,t,n){return t=t.toLowerCase(),e+(n?Na(t):t)}));function Na(e){return Fa(aa(e).toLowerCase())}function Ia(e){return(e=aa(e))&&e.replace(le,Pt).replace(Me,"")}var Ma=Ei((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ra=Ei((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Da=xi("toLowerCase");var Pa=Ei((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var La=Ei((function(e,t,n){return e+(n?" ":"")+Fa(t)}));var za=Ei((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Fa=xi("toUpperCase");function Ba(e,t,n){return e=aa(e),void 0===(t=n?void 0:t)?function(e){return Le.test(e)}(e)?function(e){return e.match(De)||[]}(e):function(e){return e.match(ee)||[]}(e):e.match(t)||[]}var qa=zr((function(e,t){try{return ot(e,void 0,t)}catch(e){return Fs(e)?e:new he(e)}})),Ha=$i((function(e,t){return at(t,(function(t){t=Co(t),Vn(e,t,_s(e[t],e))})),e}));function Ua(e){return function(){return e}}var $a=ji(),Wa=ji(!0);function Ga(e){return e}function Va(e){return xr("function"==typeof e?e:Qn(e,1))}var Ja=zr((function(e,t){return function(n){return _r(n,e,t)}})),Xa=zr((function(e,t){return function(n){return _r(e,n,t)}}));function Qa(e,t,n){var r=ya(t),i=ur(t,r);null!=n||Us(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=ur(t,ya(t)));var o=!(Us(n)&&"chain"in n&&!n.chain),s=Bs(e);return at(i,(function(n){var r=t[n];e[n]=r,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=vi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,pt([this.value()],arguments))})})),e}function Ya(){}var Ka=Ni(ft),Za=Ni(lt),ec=Ni(vt);function tc(e){return co(e)?At(Co(e)):function(e){return function(t){return dr(t,e)}}(e)}var nc=Mi(),rc=Mi(!0);function ic(){return[]}function oc(){return!1}var sc=ki((function(e,t){return e+t}),0),ac=Pi("ceil"),cc=ki((function(e,t){return e/t}),1),lc=Pi("floor");var uc,dc=ki((function(e,t){return e*t}),1),hc=Pi("round"),fc=ki((function(e,t){return e-t}),0);return Tn.after=function(e,t){if("function"!=typeof t)throw new _e(o);return e=ra(e),function(){if(--e<1)return t.apply(this,arguments)}},Tn.ary=ms,Tn.assign=ca,Tn.assignIn=la,Tn.assignInWith=ua,Tn.assignWith=da,Tn.at=ha,Tn.before=vs,Tn.bind=_s,Tn.bindAll=Ha,Tn.bindKey=bs,Tn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ms(e)?e:[e]},Tn.chain=ts,Tn.chunk=function(e,t,n){t=(n?ao(e,t,n):void 0===t)?1:sn(ra(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,s=0,a=r(Kt(i/t));o<i;)a[s++]=Wr(e,o,o+=t);return a},Tn.compact=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var o=e[t];o&&(i[r++]=o)}return i},Tn.concat=function(){var e=arguments.length;if(!e)return[];for(var t=r(e-1),n=arguments[0],i=e;i--;)t[i-1]=arguments[i];return pt(Ms(n)?vi(n):[n],or(t,1))},Tn.cond=function(e){var t=null==e?0:e.length,n=Qi();return e=t?ft(e,(function(e){if("function"!=typeof e[1])throw new _e(o);return[n(e[0]),e[1]]})):[],zr((function(n){for(var r=-1;++r<t;){var i=e[r];if(ot(i[0],this,n))return ot(i[1],this,n)}}))},Tn.conforms=function(e){return function(e){var t=ya(e);return function(n){return Yn(n,e,t)}}(Qn(e,1))},Tn.constant=Ua,Tn.countBy=is,Tn.create=function(e,t){var n=On(e);return null==t?n:Gn(n,t)},Tn.curry=function e(t,n,r){var i=Fi(t,8,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},Tn.curryRight=function e(t,n,r){var i=Fi(t,16,void 0,void 0,void 0,void 0,void 0,n=r?void 0:n);return i.placeholder=e.placeholder,i},Tn.debounce=ys,Tn.defaults=fa,Tn.defaultsDeep=pa,Tn.defer=ws,Tn.delay=Ss,Tn.difference=Oo,Tn.differenceBy=ko,Tn.differenceWith=No,Tn.drop=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,(t=n||void 0===t?1:ra(t))<0?0:t,r):[]},Tn.dropRight=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,0,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t):[]},Tn.dropRightWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!0,!0):[]},Tn.dropWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!0):[]},Tn.fill=function(e,t,n,r){var i=null==e?0:e.length;return i?(n&&"number"!=typeof n&&ao(e,t,n)&&(n=0,r=i),function(e,t,n,r){var i=e.length;for((n=ra(n))<0&&(n=-n>i?0:i+n),(r=void 0===r||r>i?i:ra(r))<0&&(r+=i),r=n>r?0:ia(r);n<r;)e[n++]=t;return e}(e,t,n,r)):[]},Tn.filter=function(e,t){return(Ms(e)?ut:ir)(e,Qi(t,3))},Tn.flatMap=function(e,t){return or(hs(e,t),1)},Tn.flatMapDeep=function(e,t){return or(hs(e,t),1/0)},Tn.flatMapDepth=function(e,t,n){return n=void 0===n?1:ra(n),or(hs(e,t),n)},Tn.flatten=Ro,Tn.flattenDeep=function(e){return(null==e?0:e.length)?or(e,1/0):[]},Tn.flattenDepth=function(e,t){return(null==e?0:e.length)?or(e,t=void 0===t?1:ra(t)):[]},Tn.flip=function(e){return Fi(e,512)},Tn.flow=$a,Tn.flowRight=Wa,Tn.fromPairs=function(e){for(var t=-1,n=null==e?0:e.length,r={};++t<n;){var i=e[t];r[i[0]]=i[1]}return r},Tn.functions=function(e){return null==e?[]:ur(e,ya(e))},Tn.functionsIn=function(e){return null==e?[]:ur(e,wa(e))},Tn.groupBy=ls,Tn.initial=function(e){return(null==e?0:e.length)?Wr(e,0,-1):[]},Tn.intersection=Po,Tn.intersectionBy=Lo,Tn.intersectionWith=zo,Tn.invert=va,Tn.invertBy=_a,Tn.invokeMap=us,Tn.iteratee=Va,Tn.keyBy=ds,Tn.keys=ya,Tn.keysIn=wa,Tn.map=hs,Tn.mapKeys=function(e,t){var n={};return t=Qi(t,3),cr(e,(function(e,r,i){Vn(n,t(e,r,i),e)})),n},Tn.mapValues=function(e,t){var n={};return t=Qi(t,3),cr(e,(function(e,r,i){Vn(n,r,t(e,r,i))})),n},Tn.matches=function(e){return Tr(Qn(e,1))},Tn.matchesProperty=function(e,t){return Or(e,Qn(t,1))},Tn.memoize=xs,Tn.merge=Sa,Tn.mergeWith=xa,Tn.method=Ja,Tn.methodOf=Xa,Tn.mixin=Qa,Tn.negate=Es,Tn.nthArg=function(e){return e=ra(e),zr((function(t){return Nr(t,e)}))},Tn.omit=Ea,Tn.omitBy=function(e,t){return Ca(e,Es(Qi(t)))},Tn.once=function(e){return vs(2,e)},Tn.orderBy=function(e,t,n,r){return null==e?[]:(Ms(t)||(t=null==t?[]:[t]),Ms(n=r?void 0:n)||(n=null==n?[]:[n]),Ir(e,t,n))},Tn.over=Ka,Tn.overArgs=As,Tn.overEvery=Za,Tn.overSome=ec,Tn.partial=Cs,Tn.partialRight=js,Tn.partition=fs,Tn.pick=Aa,Tn.pickBy=Ca,Tn.property=tc,Tn.propertyOf=function(e){return function(t){return null==e?void 0:dr(e,t)}},Tn.pull=Bo,Tn.pullAll=qo,Tn.pullAllBy=function(e,t,n){return e&&e.length&&t&&t.length?Rr(e,t,Qi(n,2)):e},Tn.pullAllWith=function(e,t,n){return e&&e.length&&t&&t.length?Rr(e,t,void 0,n):e},Tn.pullAt=Ho,Tn.range=nc,Tn.rangeRight=rc,Tn.rearg=Ts,Tn.reject=function(e,t){return(Ms(e)?ut:ir)(e,Es(Qi(t,3)))},Tn.remove=function(e,t){var n=[];if(!e||!e.length)return n;var r=-1,i=[],o=e.length;for(t=Qi(t,3);++r<o;){var s=e[r];t(s,r,e)&&(n.push(s),i.push(r))}return Dr(e,i),n},Tn.rest=function(e,t){if("function"!=typeof e)throw new _e(o);return zr(e,t=void 0===t?t:ra(t))},Tn.reverse=Uo,Tn.sampleSize=function(e,t,n){return t=(n?ao(e,t,n):void 0===t)?1:ra(t),(Ms(e)?Bn:Br)(e,t)},Tn.set=function(e,t,n){return null==e?e:qr(e,t,n)},Tn.setWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:qr(e,t,n,r)},Tn.shuffle=function(e){return(Ms(e)?qn:$r)(e)},Tn.slice=function(e,t,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&ao(e,t,n)?(t=0,n=r):(t=null==t?0:ra(t),n=void 0===n?r:ra(n)),Wr(e,t,n)):[]},Tn.sortBy=ps,Tn.sortedUniq=function(e){return e&&e.length?Xr(e):[]},Tn.sortedUniqBy=function(e,t){return e&&e.length?Xr(e,Qi(t,2)):[]},Tn.split=function(e,t,n){return n&&"number"!=typeof n&&ao(e,t,n)&&(t=n=void 0),(n=void 0===n?4294967295:n>>>0)?(e=aa(e))&&("string"==typeof t||null!=t&&!Js(t))&&!(t=Yr(t))&&Ft(e)?li(Gt(e),0,n):e.split(t,n):[]},Tn.spread=function(e,t){if("function"!=typeof e)throw new _e(o);return t=null==t?0:sn(ra(t),0),zr((function(n){var r=n[t],i=li(n,0,t);return r&&pt(i,r),ot(e,this,i)}))},Tn.tail=function(e){var t=null==e?0:e.length;return t?Wr(e,1,t):[]},Tn.take=function(e,t,n){return e&&e.length?Wr(e,0,(t=n||void 0===t?1:ra(t))<0?0:t):[]},Tn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?Wr(e,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t,r):[]},Tn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3),!1,!0):[]},Tn.takeWhile=function(e,t){return e&&e.length?ti(e,Qi(t,3)):[]},Tn.tap=function(e,t){return t(e),e},Tn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new _e(o);return Us(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),ys(e,t,{leading:r,maxWait:t,trailing:i})},Tn.thru=ns,Tn.toArray=ta,Tn.toPairs=ja,Tn.toPairsIn=Ta,Tn.toPath=function(e){return Ms(e)?ft(e,Co):Ys(e)?[e]:vi(Ao(aa(e)))},Tn.toPlainObject=sa,Tn.transform=function(e,t,n){var r=Ms(e),i=r||Ls(e)||Ks(e);if(t=Qi(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Us(e)&&Bs(o)?On(We(e)):{}}return(i?at:cr)(e,(function(e,r,i){return t(n,e,r,i)})),n},Tn.unary=function(e){return ms(e,1)},Tn.union=$o,Tn.unionBy=Wo,Tn.unionWith=Go,Tn.uniq=function(e){return e&&e.length?Kr(e):[]},Tn.uniqBy=function(e,t){return e&&e.length?Kr(e,Qi(t,2)):[]},Tn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Kr(e,void 0,t):[]},Tn.unset=function(e,t){return null==e||Zr(e,t)},Tn.unzip=Vo,Tn.unzipWith=Jo,Tn.update=function(e,t,n){return null==e?e:ei(e,t,si(n))},Tn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,si(n),r)},Tn.values=Oa,Tn.valuesIn=function(e){return null==e?[]:Nt(e,wa(e))},Tn.without=Xo,Tn.words=Ba,Tn.wrap=function(e,t){return Cs(si(t),e)},Tn.xor=Qo,Tn.xorBy=Yo,Tn.xorWith=Ko,Tn.zip=Zo,Tn.zipObject=function(e,t){return ii(e||[],t||[],Un)},Tn.zipObjectDeep=function(e,t){return ii(e||[],t||[],qr)},Tn.zipWith=es,Tn.entries=ja,Tn.entriesIn=Ta,Tn.extend=la,Tn.extendWith=ua,Qa(Tn,Tn),Tn.add=sc,Tn.attempt=qa,Tn.camelCase=ka,Tn.capitalize=Na,Tn.ceil=ac,Tn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=oa(n))==n?n:0),void 0!==t&&(t=(t=oa(t))==t?t:0),Xn(oa(e),t,n)},Tn.clone=function(e){return Qn(e,4)},Tn.cloneDeep=function(e){return Qn(e,5)},Tn.cloneDeepWith=function(e,t){return Qn(e,5,t="function"==typeof t?t:void 0)},Tn.cloneWith=function(e,t){return Qn(e,4,t="function"==typeof t?t:void 0)},Tn.conformsTo=function(e,t){return null==t||Yn(e,t,ya(t))},Tn.deburr=Ia,Tn.defaultTo=function(e,t){return null==e||e!=e?t:e},Tn.divide=cc,Tn.endsWith=function(e,t,n){e=aa(e),t=Yr(t);var r=e.length,i=n=void 0===n?r:Xn(ra(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},Tn.eq=Os,Tn.escape=function(e){return(e=aa(e))&&F.test(e)?e.replace(L,Lt):e},Tn.escapeRegExp=function(e){return(e=aa(e))&&V.test(e)?e.replace(G,"\\$&"):e},Tn.every=function(e,t,n){var r=Ms(e)?lt:nr;return n&&ao(e,t,n)&&(t=void 0),r(e,Qi(t,3))},Tn.find=os,Tn.findIndex=Io,Tn.findKey=function(e,t){return bt(e,Qi(t,3),cr)},Tn.findLast=ss,Tn.findLastIndex=Mo,Tn.findLastKey=function(e,t){return bt(e,Qi(t,3),lr)},Tn.floor=lc,Tn.forEach=as,Tn.forEachRight=cs,Tn.forIn=function(e,t){return null==e?e:sr(e,Qi(t,3),wa)},Tn.forInRight=function(e,t){return null==e?e:ar(e,Qi(t,3),wa)},Tn.forOwn=function(e,t){return e&&cr(e,Qi(t,3))},Tn.forOwnRight=function(e,t){return e&&lr(e,Qi(t,3))},Tn.get=ga,Tn.gt=ks,Tn.gte=Ns,Tn.has=function(e,t){return null!=e&&ro(e,t,gr)},Tn.hasIn=ma,Tn.head=Do,Tn.identity=Ga,Tn.includes=function(e,t,n,r){e=Ds(e)?e:Oa(e),n=n&&!r?ra(n):0;var i=e.length;return n<0&&(n=sn(i+n,0)),Qs(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&wt(e,t,n)>-1},Tn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=sn(r+i,0)),wt(e,t,i)},Tn.inRange=function(e,t,n){return t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n){return e>=an(t,n)&&e<sn(t,n)}(e=oa(e),t,n)},Tn.invoke=ba,Tn.isArguments=Is,Tn.isArray=Ms,Tn.isArrayBuffer=Rs,Tn.isArrayLike=Ds,Tn.isArrayLikeObject=Ps,Tn.isBoolean=function(e){return!0===e||!1===e||$s(e)&&fr(e)==u},Tn.isBuffer=Ls,Tn.isDate=zs,Tn.isElement=function(e){return $s(e)&&1===e.nodeType&&!Vs(e)},Tn.isEmpty=function(e){if(null==e)return!0;if(Ds(e)&&(Ms(e)||"string"==typeof e||"function"==typeof e.splice||Ls(e)||Ks(e)||Is(e)))return!e.length;var t=no(e);if(t==g||t==b)return!e.size;if(ho(e))return!Er(e).length;for(var n in e)if(Ee.call(e,n))return!1;return!0},Tn.isEqual=function(e,t){return yr(e,t)},Tn.isEqualWith=function(e,t,n){var r=(n="function"==typeof n?n:void 0)?n(e,t):void 0;return void 0===r?yr(e,t,void 0,n):!!r},Tn.isError=Fs,Tn.isFinite=function(e){return"number"==typeof e&&nn(e)},Tn.isFunction=Bs,Tn.isInteger=qs,Tn.isLength=Hs,Tn.isMap=Ws,Tn.isMatch=function(e,t){return e===t||wr(e,t,Ki(t))},Tn.isMatchWith=function(e,t,n){return n="function"==typeof n?n:void 0,wr(e,t,Ki(t),n)},Tn.isNaN=function(e){return Gs(e)&&e!=+e},Tn.isNative=function(e){if(uo(e))throw new he("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Sr(e)},Tn.isNil=function(e){return null==e},Tn.isNull=function(e){return null===e},Tn.isNumber=Gs,Tn.isObject=Us,Tn.isObjectLike=$s,Tn.isPlainObject=Vs,Tn.isRegExp=Js,Tn.isSafeInteger=function(e){return qs(e)&&e>=-9007199254740991&&e<=9007199254740991},Tn.isSet=Xs,Tn.isString=Qs,Tn.isSymbol=Ys,Tn.isTypedArray=Ks,Tn.isUndefined=function(e){return void 0===e},Tn.isWeakMap=function(e){return $s(e)&&no(e)==S},Tn.isWeakSet=function(e){return $s(e)&&"[object WeakSet]"==fr(e)},Tn.join=function(e,t){return null==e?"":rn.call(e,t)},Tn.kebabCase=Ma,Tn.last=Fo,Tn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ra(n))<0?sn(r+i,0):an(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):yt(e,xt,i,!0)},Tn.lowerCase=Ra,Tn.lowerFirst=Da,Tn.lt=Zs,Tn.lte=ea,Tn.max=function(e){return e&&e.length?rr(e,Ga,pr):void 0},Tn.maxBy=function(e,t){return e&&e.length?rr(e,Qi(t,2),pr):void 0},Tn.mean=function(e){return Et(e,Ga)},Tn.meanBy=function(e,t){return Et(e,Qi(t,2))},Tn.min=function(e){return e&&e.length?rr(e,Ga,Cr):void 0},Tn.minBy=function(e,t){return e&&e.length?rr(e,Qi(t,2),Cr):void 0},Tn.stubArray=ic,Tn.stubFalse=oc,Tn.stubObject=function(){return{}},Tn.stubString=function(){return""},Tn.stubTrue=function(){return!0},Tn.multiply=dc,Tn.nth=function(e,t){return e&&e.length?Nr(e,ra(t)):void 0},Tn.noConflict=function(){return Ve._===this&&(Ve._=Oe),this},Tn.noop=Ya,Tn.now=gs,Tn.pad=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ii(Zt(i),n)+e+Ii(Kt(i),n)},Tn.padEnd=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;return t&&r<t?e+Ii(t-r,n):e},Tn.padStart=function(e,t,n){e=aa(e);var r=(t=ra(t))?Wt(e):0;return t&&r<t?Ii(t-r,n)+e:e},Tn.parseInt=function(e,t,n){return n||null==t?t=0:t&&(t=+t),ln(aa(e).replace(X,""),t||0)},Tn.random=function(e,t,n){if(n&&"boolean"!=typeof n&&ao(e,t,n)&&(t=n=void 0),void 0===n&&("boolean"==typeof t?(n=t,t=void 0):"boolean"==typeof e&&(n=e,e=void 0)),void 0===e&&void 0===t?(e=0,t=1):(e=na(e),void 0===t?(t=e,e=0):t=na(t)),e>t){var r=e;e=t,t=r}if(n||e%1||t%1){var i=un();return an(e+i*(t-e+Ue("1e-"+((i+"").length-1))),t)}return Pr(e,t)},Tn.reduce=function(e,t,n){var r=Ms(e)?gt:jt,i=arguments.length<3;return r(e,Qi(t,4),n,i,er)},Tn.reduceRight=function(e,t,n){var r=Ms(e)?mt:jt,i=arguments.length<3;return r(e,Qi(t,4),n,i,tr)},Tn.repeat=function(e,t,n){return t=(n?ao(e,t,n):void 0===t)?1:ra(t),Lr(aa(e),t)},Tn.replace=function(){var e=arguments,t=aa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Tn.result=function(e,t,n){var r=-1,i=(t=ai(t,e)).length;for(i||(i=1,e=void 0);++r<i;){var o=null==e?void 0:e[Co(t[r])];void 0===o&&(r=i,o=n),e=Bs(o)?o.call(e):o}return e},Tn.round=hc,Tn.runInContext=e,Tn.sample=function(e){return(Ms(e)?Fn:Fr)(e)},Tn.size=function(e){if(null==e)return 0;if(Ds(e))return Qs(e)?Wt(e):e.length;var t=no(e);return t==g||t==b?e.size:Er(e).length},Tn.snakeCase=Pa,Tn.some=function(e,t,n){var r=Ms(e)?vt:Gr;return n&&ao(e,t,n)&&(t=void 0),r(e,Qi(t,3))},Tn.sortedIndex=function(e,t){return Vr(e,t)},Tn.sortedIndexBy=function(e,t,n){return Jr(e,t,Qi(n,2))},Tn.sortedIndexOf=function(e,t){var n=null==e?0:e.length;if(n){var r=Vr(e,t);if(r<n&&Os(e[r],t))return r}return-1},Tn.sortedLastIndex=function(e,t){return Vr(e,t,!0)},Tn.sortedLastIndexBy=function(e,t,n){return Jr(e,t,Qi(n,2),!0)},Tn.sortedLastIndexOf=function(e,t){if(null==e?0:e.length){var n=Vr(e,t,!0)-1;if(Os(e[n],t))return n}return-1},Tn.startCase=La,Tn.startsWith=function(e,t,n){return e=aa(e),n=null==n?0:Xn(ra(n),0,e.length),t=Yr(t),e.slice(n,n+t.length)==t},Tn.subtract=fc,Tn.sum=function(e){return e&&e.length?Tt(e,Ga):0},Tn.sumBy=function(e,t){return e&&e.length?Tt(e,Qi(t,2)):0},Tn.template=function(e,t,n){var r=Tn.templateSettings;n&&ao(e,t,n)&&(t=void 0),e=aa(e),t=ua({},t,r,Bi);var i,o,s=ua({},t.imports,r.imports,Bi),a=ya(s),c=Nt(s,a),l=0,u=t.interpolate||ue,d="__p += '",h=me((t.escape||ue).source+"|"+u.source+"|"+(u===H?ne:ue).source+"|"+(t.evaluate||ue).source+"|$","g"),f="//# sourceURL="+(Ee.call(t,"sourceURL")?(t.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++Fe+"]")+"\n";e.replace(h,(function(t,n,r,s,a,c){return r||(r=s),d+=e.slice(l,c).replace(de,zt),n&&(i=!0,d+="' +\n__e("+n+") +\n'"),a&&(o=!0,d+="';\n"+a+";\n__p += '"),r&&(d+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),l=c+t.length,t})),d+="';\n";var p=Ee.call(t,"variable")&&t.variable;p||(d="with (obj) {\n"+d+"\n}\n"),d=(o?d.replace(M,""):d).replace(R,"$1").replace(D,"$1;"),d="function("+(p||"obj")+") {\n"+(p?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(i?", __e = _.escape":"")+(o?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var g=qa((function(){return fe(a,f+"return "+d).apply(void 0,c)}));if(g.source=d,Fs(g))throw g;return g},Tn.times=function(e,t){if((e=ra(e))<1||e>9007199254740991)return[];var n=4294967295,r=an(e,4294967295);e-=4294967295;for(var i=Ot(r,t=Qi(t));++n<e;)t(n);return i},Tn.toFinite=na,Tn.toInteger=ra,Tn.toLength=ia,Tn.toLower=function(e){return aa(e).toLowerCase()},Tn.toNumber=oa,Tn.toSafeInteger=function(e){return e?Xn(ra(e),-9007199254740991,9007199254740991):0===e?e:0},Tn.toString=aa,Tn.toUpper=function(e){return aa(e).toUpperCase()},Tn.trim=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(J,"");if(!e||!(t=Yr(t)))return e;var r=Gt(e),i=Gt(t);return li(r,Mt(r,i),Rt(r,i)+1).join("")},Tn.trimEnd=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(Q,"");if(!e||!(t=Yr(t)))return e;var r=Gt(e);return li(r,0,Rt(r,Gt(t))+1).join("")},Tn.trimStart=function(e,t,n){if((e=aa(e))&&(n||void 0===t))return e.replace(X,"");if(!e||!(t=Yr(t)))return e;var r=Gt(e);return li(r,Mt(r,Gt(t))).join("")},Tn.truncate=function(e,t){var n=30,r="...";if(Us(t)){var i="separator"in t?t.separator:i;n="length"in t?ra(t.length):n,r="omission"in t?Yr(t.omission):r}var o=(e=aa(e)).length;if(Ft(e)){var s=Gt(e);o=s.length}if(n>=o)return e;var a=n-Wt(r);if(a<1)return r;var c=s?li(s,0,a).join(""):e.slice(0,a);if(void 0===i)return c+r;if(s&&(a+=c.length-a),Js(i)){if(e.slice(a).search(i)){var l,u=c;for(i.global||(i=me(i.source,aa(re.exec(i))+"g")),i.lastIndex=0;l=i.exec(u);)var d=l.index;c=c.slice(0,void 0===d?a:d)}}else if(e.indexOf(Yr(i),a)!=a){var h=c.lastIndexOf(i);h>-1&&(c=c.slice(0,h))}return c+r},Tn.unescape=function(e){return(e=aa(e))&&z.test(e)?e.replace(P,Vt):e},Tn.uniqueId=function(e){var t=++Ae;return aa(e)+t},Tn.upperCase=za,Tn.upperFirst=Fa,Tn.each=as,Tn.eachRight=cs,Tn.first=Do,Qa(Tn,(uc={},cr(Tn,(function(e,t){Ee.call(Tn.prototype,t)||(uc[t]=e)})),uc),{chain:!1}),Tn.VERSION="4.17.20",at(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Tn[e].placeholder=Tn})),at(["drop","take"],(function(e,t){In.prototype[e]=function(n){n=void 0===n?1:sn(ra(n),0);var r=this.__filtered__&&!t?new In(this):this.clone();return r.__filtered__?r.__takeCount__=an(n,r.__takeCount__):r.__views__.push({size:an(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},In.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),at(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;In.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Qi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),at(["head","last"],(function(e,t){var n="take"+(t?"Right":"");In.prototype[e]=function(){return this[n](1).value()[0]}})),at(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");In.prototype[e]=function(){return this.__filtered__?new In(this):this[n](1)}})),In.prototype.compact=function(){return this.filter(Ga)},In.prototype.find=function(e){return this.filter(e).head()},In.prototype.findLast=function(e){return this.reverse().find(e)},In.prototype.invokeMap=zr((function(e,t){return"function"==typeof e?new In(this):this.map((function(n){return _r(n,e,t)}))})),In.prototype.reject=function(e){return this.filter(Es(Qi(e)))},In.prototype.slice=function(e,t){e=ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new In(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},In.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},In.prototype.toArray=function(){return this.take(4294967295)},cr(In.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=Tn[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(Tn.prototype[t]=function(){var t=this.__wrapped__,s=r?[1]:arguments,a=t instanceof In,c=s[0],l=a||Ms(t),u=function(e){var t=i.apply(Tn,pt([e],s));return r&&d?t[0]:t};l&&n&&"function"==typeof c&&1!=c.length&&(a=l=!1);var d=this.__chain__,h=!!this.__actions__.length,f=o&&!d,p=a&&!h;if(!o&&l){t=p?t:new In(this);var g=e.apply(t,s);return g.__actions__.push({func:ns,args:[u],thisArg:void 0}),new Nn(g,d)}return f&&p?e.apply(this,s):(g=this.thru(u),f?r?g.value()[0]:g.value():g)})})),at(["pop","push","shift","sort","splice","unshift"],(function(e){var t=be[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Tn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Ms(i)?i:[],e)}return this[n]((function(n){return t.apply(Ms(n)?n:[],e)}))}})),cr(In.prototype,(function(e,t){var n=Tn[t];if(n){var r=n.name+"";Ee.call(bn,r)||(bn[r]=[]),bn[r].push({name:t,func:n})}})),bn[Ti(void 0,2).name]=[{name:"wrapper",func:void 0}],In.prototype.clone=function(){var e=new In(this.__wrapped__);return e.__actions__=vi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=vi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=vi(this.__views__),e},In.prototype.reverse=function(){if(this.__filtered__){var e=new In(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},In.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ms(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r<i;){var o=n[r],s=o.size;switch(o.type){case"drop":e+=s;break;case"dropRight":t-=s;break;case"take":t=an(t,e+s);break;case"takeRight":e=sn(e,t-s)}}return{start:e,end:t}}(0,i,this.__views__),s=o.start,a=o.end,c=a-s,l=r?a:s-1,u=this.__iteratees__,d=u.length,h=0,f=an(c,this.__takeCount__);if(!n||!r&&i==c&&f==c)return ni(e,this.__actions__);var p=[];e:for(;c--&&h<f;){for(var g=-1,m=e[l+=t];++g<d;){var v=u[g],_=v.iteratee,b=v.type,y=_(m);if(2==b)m=y;else if(!y){if(1==b)continue e;break e}}p[h++]=m}return p},Tn.prototype.at=rs,Tn.prototype.chain=function(){return ts(this)},Tn.prototype.commit=function(){return new Nn(this.value(),this.__chain__)},Tn.prototype.next=function(){void 0===this.__values__&&(this.__values__=ta(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},Tn.prototype.plant=function(e){for(var t,n=this;n instanceof kn;){var r=To(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},Tn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof In){var t=e;return this.__actions__.length&&(t=new In(this)),(t=t.reverse()).__actions__.push({func:ns,args:[Uo],thisArg:void 0}),new Nn(t,this.__chain__)}return this.thru(Uo)},Tn.prototype.toJSON=Tn.prototype.valueOf=Tn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},Tn.prototype.first=Tn.prototype.head,Ke&&(Tn.prototype[Ke]=function(){return this}),Tn}();Ve._=Jt,void 0===(i=function(){return Jt}.call(t,n,t,r))||(r.exports=i)}).call(this)}).call(this,n(12),n(46)(e))},function(e,t,n){e.exports=n(337)},function(e,t,n){e.exports=n(351)},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,n){function r(e){this.options=e||{locator:{}}}function i(){this.cdata=!1}function o(e,t){t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber}function s(e){if(e)return"\n@"+(e.systemId||"")+"#[line:"+e.lineNumber+",col:"+e.columnNumber+"]"}function a(e,t,n){return"string"==typeof e?e.substr(t,n):e.length>=t+n||t?new java.lang.String(e,t,n)+"":e}function c(e,t){e.currentElement?e.currentElement.appendChild(t):e.doc.appendChild(t)}r.prototype.parseFromString=function(e,t){var n=this.options,r=new l,o=n.domBuilder||new i,a=n.errorHandler,c=n.locator,u=n.xmlns||{},d={lt:"<",gt:">",amp:"&",quot:'"',apos:"'"};return c&&o.setDocumentLocator(c),r.errorHandler=function(e,t,n){if(!e){if(t instanceof i)return t;e=t}var r={},o=e instanceof Function;function a(t){var i=e[t];!i&&o&&(i=2==e.length?function(n){e(t,n)}:e),r[t]=i&&function(e){i("[xmldom "+t+"]\t"+e+s(n))}||function(){}}return n=n||{},a("warning"),a("error"),a("fatalError"),r}(a,o,c),r.domBuilder=n.domBuilder||o,/\/x?html?$/.test(t)&&(d.nbsp=" ",d.copy="©",u[""]="http://www.w3.org/1999/xhtml"),u.xml=u.xml||"http://www.w3.org/XML/1998/namespace",e?r.parse(e,u,d):r.errorHandler.error("invalid doc source"),o.doc},i.prototype={startDocument:function(){this.doc=(new u).createDocument(null,null,null),this.locator&&(this.doc.documentURI=this.locator.systemId)},startElement:function(e,t,n,r){var i=this.doc,s=i.createElementNS(e,n||t),a=r.length;c(this,s),this.currentElement=s,this.locator&&o(this.locator,s);for(var l=0;l<a;l++){e=r.getURI(l);var u=r.getValue(l),d=(n=r.getQName(l),i.createAttributeNS(e,n));this.locator&&o(r.getLocator(l),d),d.value=d.nodeValue=u,s.setAttributeNode(d)}},endElement:function(e,t,n){var r=this.currentElement;r.tagName;this.currentElement=r.parentNode},startPrefixMapping:function(e,t){},endPrefixMapping:function(e){},processingInstruction:function(e,t){var n=this.doc.createProcessingInstruction(e,t);this.locator&&o(this.locator,n),c(this,n)},ignorableWhitespace:function(e,t,n){},characters:function(e,t,n){if(e=a.apply(this,arguments)){if(this.cdata)var r=this.doc.createCDATASection(e);else r=this.doc.createTextNode(e);this.currentElement?this.currentElement.appendChild(r):/^\s*$/.test(e)&&this.doc.appendChild(r),this.locator&&o(this.locator,r)}},skippedEntity:function(e){},endDocument:function(){this.doc.normalize()},setDocumentLocator:function(e){(this.locator=e)&&(e.lineNumber=0)},comment:function(e,t,n){e=a.apply(this,arguments);var r=this.doc.createComment(e);this.locator&&o(this.locator,r),c(this,r)},startCDATA:function(){this.cdata=!0},endCDATA:function(){this.cdata=!1},startDTD:function(e,t,n){var r=this.doc.implementation;if(r&&r.createDocumentType){var i=r.createDocumentType(e,t,n);this.locator&&o(this.locator,i),c(this,i)}},warning:function(e){console.warn("[xmldom warning]\t"+e,s(this.locator))},error:function(e){console.error("[xmldom error]\t"+e,s(this.locator))},fatalError:function(e){throw console.error("[xmldom fatalError]\t"+e,s(this.locator)),e}},"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g,(function(e){i.prototype[e]=function(){return null}}));var l=n(329).XMLReader,u=t.DOMImplementation=n(95).DOMImplementation;t.XMLSerializer=n(95).XMLSerializer,t.DOMParser=r},function(e,t,n){var r=n(25),i=n(23);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(11).Symbol;e.exports=r},function(e,t){e.exports=function(e,t){return e===t||e!=e&&t!=t}},function(e,t,n){var r=n(74),i=n(20);e.exports=function(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var n=r(e.prototype),o=e.apply(n,t);return i(o)?o:n}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=e.length,i=0,o=[];++n<r;){var s=e[n];s!==t&&"__lodash_placeholder__"!==s||(e[n]="__lodash_placeholder__",o[i++]=n)}return o}},function(e,t,n){var r=n(388),i=n(389),o=n(390),s=n(391),a=n(392);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=s,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(50);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(26)(Object,"create");e.exports=r},function(e,t,n){var r=n(406);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},function(e,t,n){var r=n(16),i=n(81),o=n(429),s=n(137);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:o(s(e))}},function(e,t,n){var r=n(59);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(25),i=n(20);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},function(e,t,n){"use strict";(function(e){var n="object"==typeof e&&e&&e.Object===Object&&e;t.a=n}).call(this,n(12))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_input.html --\x3e\n<div class="form-group">\n ',"hidden"!==e.type&&(t+='\n <label for="'+n(e.id)+'">'+n(e.label)+"</label>\n "),t+="\n ","password"===e.type&&e.fixed_username&&(t+='\n \x3c!-- This is a hack to prevent Chrome from auto-filling the username in\n any of the other input fields in the MUC configuration form. --\x3e\n <input class="hidden-username" type="text" autocomplete="username" value="'+n(e.fixed_username)+'"></input>\n '),t+='\n <input \n class="form-control" name="'+n(e.name)+'" type="'+n(e.type)+'" id="'+n(e.id)+'"\n ',e.autocomplete&&(t+=' autocomplete="'+n(e.autocomplete)+'" '),t+="\n ",e.placeholder&&(t+=' placeholder="'+n(e.placeholder)+'" '),t+="\n ",e.value&&(t+=' value="'+n(e.value)+'" '),t+="\n ",e.required&&(t+=' required="required" '),t+=" />\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_username.html --\x3e\n<div class="form-group">\n ',e.label&&(t+="\n <label>\n "+n(e.label)+"\n </label>\n "),t+='\n <div class="input-group">\n <div class="input-group-prepend">\n <input name="'+n(e.name)+'" type="'+n(e.type)+'"\n ',e.value&&(t+=' value="'+n(e.value)+'" '),t+="\n ",e.required&&(t+=' required="required" '),t+=' />\n <div class="input-group-text col" title="'+n(e.domain)+'">'+n(e.domain)+"</div>\n </div>\n </div>\n</div>\n"}},function(e,t,n){var r,i;r=[n(43)],void 0===(i=function(e){return e.noConflict()}.apply(t,r))||(e.exports=i)},function(e,t,n){ /** * @preserve jed.js https://github.com/SlexAxton/Jed */ -!function(n,r){var i=Array.prototype,s=Object.prototype,o=i.slice,a=s.hasOwnProperty,c=i.forEach,l={},u={forEach:function(e,t,n){var r,i,s;if(null!==e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===l)return}else for(s in e)if(a.call(e,s)&&t.call(n,e[s],s,e)===l)return},extend:function(e){return this.forEach(o.call(arguments,1),(function(t){for(var n in t)e[n]=t[n]})),e}},d=function(e){if(this.defaults={locale_data:{messages:{"":{domain:"messages",lang:"en",plural_forms:"nplurals=2; plural=(n != 1);"}}},domain:"messages",debug:!1},this.options=u.extend({},this.defaults,e),this.textdomain(this.options.domain),e.domain&&!this.options.locale_data[this.options.domain])throw new Error("Text domain set to non-existent domain: `"+e.domain+"`")};function h(e){return d.PF.compile(e||"nplurals=2; plural=(n != 1);")}function f(e,t){this._key=e,this._i18n=t}d.context_delimiter=String.fromCharCode(4),u.extend(f.prototype,{onDomain:function(e){return this._domain=e,this},withContext:function(e){return this._context=e,this},ifPlural:function(e,t){return this._val=e,this._pkey=t,this},fetch:function(e){return"[object Array]"!={}.toString.call(e)&&(e=[].slice.call(arguments,0)),(e&&e.length?d.sprintf:function(e){return e})(this._i18n.dcnpgettext(this._domain,this._context,this._key,this._pkey,this._val),e)}}),u.extend(d.prototype,{translate:function(e){return new f(e,this)},textdomain:function(e){if(!e)return this._textdomain;this._textdomain=e},gettext:function(e){return this.dcnpgettext.call(this,void 0,void 0,e)},dgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},dcgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},ngettext:function(e,t,n){return this.dcnpgettext.call(this,void 0,void 0,e,t,n)},dngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},dcngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},pgettext:function(e,t){return this.dcnpgettext.call(this,void 0,e,t)},dpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},dcpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},npgettext:function(e,t,n,r){return this.dcnpgettext.call(this,void 0,e,t,n,r)},dnpgettext:function(e,t,n,r,i){return this.dcnpgettext.call(this,e,t,n,r,i)},dcnpgettext:function(e,t,n,r,i){var s;if(r=r||n,e=e||this._textdomain,!this.options)return(s=new d).dcnpgettext.call(s,void 0,void 0,n,r,i);if(!this.options.locale_data)throw new Error("No locale data provided.");if(!this.options.locale_data[e])throw new Error("Domain `"+e+"` was not found.");if(!this.options.locale_data[e][""])throw new Error("No locale meta information provided.");if(!n)throw new Error("No translation key found.");var o,a,c,l=t?t+d.context_delimiter+n:n,u=this.options.locale_data,f=u[e],p=(u.messages||this.defaults.locale_data.messages)[""],g=f[""].plural_forms||f[""]["Plural-Forms"]||f[""]["plural-forms"]||p.plural_forms||p["Plural-Forms"]||p["plural-forms"];if(void 0===i)c=0;else{if("number"!=typeof i&&(i=parseInt(i,10),isNaN(i)))throw new Error("The number that was passed in is not a number.");c=h(g)(i)}if(!f)throw new Error("No domain named `"+e+"` could be found.");return!(o=f[l])||c>o.length?(this.options.missing_key_callback&&this.options.missing_key_callback(l,e),a=[n,r],!0===this.options.debug&&console.log(a[h(g)(i)]),a[h()(i)]):(a=o[c])||(a=[n,r])[h()(i)]}});var p,g,m=function(){function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}var n=function(){return n.cache.hasOwnProperty(arguments[0])||(n.cache[arguments[0]]=n.parse(arguments[0])),n.format.call(null,n.cache[arguments[0]],arguments)};return n.format=function(n,r){var i,s,o,a,c,l,u,d=1,h=n.length,f="",p=[];for(s=0;s<h;s++)if("string"===(f=e(n[s])))p.push(n[s]);else if("array"===f){if((a=n[s])[2])for(i=r[d],o=0;o<a[2].length;o++){if(!i.hasOwnProperty(a[2][o]))throw m('[sprintf] property "%s" does not exist',a[2][o]);i=i[a[2][o]]}else i=a[1]?r[a[1]]:r[d++];if(/[^s]/.test(a[8])&&"number"!=e(i))throw m("[sprintf] expecting number but found %s",e(i));switch(null==i&&(i=""),a[8]){case"b":i=i.toString(2);break;case"c":i=String.fromCharCode(i);break;case"d":i=parseInt(i,10);break;case"e":i=a[7]?i.toExponential(a[7]):i.toExponential();break;case"f":i=a[7]?parseFloat(i).toFixed(a[7]):parseFloat(i);break;case"o":i=i.toString(8);break;case"s":i=(i=String(i))&&a[7]?i.substring(0,a[7]):i;break;case"u":i=Math.abs(i);break;case"x":i=i.toString(16);break;case"X":i=i.toString(16).toUpperCase()}i=/[def]/.test(a[8])&&a[3]&&i>=0?"+"+i:i,l=a[4]?"0"==a[4]?"0":a[4].charAt(1):" ",u=a[6]-String(i).length,c=a[6]?t(l,u):"",p.push(a[5]?i+c:c+i)}return p.join("")},n.cache={},n.parse=function(e){for(var t=e,n=[],r=[],i=0;t;){if(null!==(n=/^[^\x25]+/.exec(t)))r.push(n[0]);else if(null!==(n=/^\x25{2}/.exec(t)))r.push("%");else{if(null===(n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t)))throw"[sprintf] huh?";if(n[2]){i|=1;var s=[],o=n[2],a=[];if(null===(a=/^([a-z_][a-z_\d]*)/i.exec(o)))throw"[sprintf] huh?";for(s.push(a[1]);""!==(o=o.substring(a[0].length));)if(null!==(a=/^\.([a-z_][a-z_\d]*)/i.exec(o)))s.push(a[1]);else{if(null===(a=/^\[(\d+)\]/.exec(o)))throw"[sprintf] huh?";s.push(a[1])}n[2]=s}else i|=2;if(3===i)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";r.push(n)}t=t.substring(n[0].length)}return r},n}(),v=function(e,t){return t.unshift(e),m.apply(null,t)};d.parse_plural=function(e,t){return e=e.replace(/n/g,t),d.parse_expression(e)},d.sprintf=function(e,t){return"[object Array]"=={}.toString.call(t)?v(e,[].slice.call(t)):m.apply(this,[].slice.call(arguments))},d.prototype.sprintf=function(){return d.sprintf.apply(this,arguments)},(d.PF={}).parse=function(e){var t=d.PF.extractPluralExpr(e);return d.PF.parser.parse.call(d.PF.parser,t)},d.PF.compile=function(e){var t=d.PF.parse(e);return function(e){return!0===(n=d.PF.interpreter(t)(e))?1:n||0;var n}},d.PF.interpreter=function(e){return function(t){switch(e.type){case"GROUP":return d.PF.interpreter(e.expr)(t);case"TERNARY":return d.PF.interpreter(e.expr)(t)?d.PF.interpreter(e.truthy)(t):d.PF.interpreter(e.falsey)(t);case"OR":return d.PF.interpreter(e.left)(t)||d.PF.interpreter(e.right)(t);case"AND":return d.PF.interpreter(e.left)(t)&&d.PF.interpreter(e.right)(t);case"LT":return d.PF.interpreter(e.left)(t)<d.PF.interpreter(e.right)(t);case"GT":return d.PF.interpreter(e.left)(t)>d.PF.interpreter(e.right)(t);case"LTE":return d.PF.interpreter(e.left)(t)<=d.PF.interpreter(e.right)(t);case"GTE":return d.PF.interpreter(e.left)(t)>=d.PF.interpreter(e.right)(t);case"EQ":return d.PF.interpreter(e.left)(t)==d.PF.interpreter(e.right)(t);case"NEQ":return d.PF.interpreter(e.left)(t)!=d.PF.interpreter(e.right)(t);case"MOD":return d.PF.interpreter(e.left)(t)%d.PF.interpreter(e.right)(t);case"VAR":return t;case"NUM":return e.val;default:throw new Error("Invalid Token found.")}}},d.PF.extractPluralExpr=function(e){e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,""),/;\s*$/.test(e)||(e=e.concat(";"));var t,n=/nplurals\=(\d+);/,r=e.match(n);if(!(r.length>1))throw new Error("nplurals not found in plural_forms string: "+e);if(r[1],!((t=(e=e.replace(n,"")).match(/plural\=(.*);/))&&t.length>1))throw new Error("`plural` expression not found: "+e);return t[1]},d.PF.parser=(p={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,n:19,NUMBER:20,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function(e,t,n,r,i,s,o){var a=s.length-1;switch(i){case 1:return{type:"GROUP",expr:s[a-1]};case 2:this.$={type:"TERNARY",expr:s[a-4],truthy:s[a-2],falsey:s[a]};break;case 3:this.$={type:"OR",left:s[a-2],right:s[a]};break;case 4:this.$={type:"AND",left:s[a-2],right:s[a]};break;case 5:this.$={type:"LT",left:s[a-2],right:s[a]};break;case 6:this.$={type:"LTE",left:s[a-2],right:s[a]};break;case 7:this.$={type:"GT",left:s[a-2],right:s[a]};break;case 8:this.$={type:"GTE",left:s[a-2],right:s[a]};break;case 9:this.$={type:"NEQ",left:s[a-2],right:s[a]};break;case 10:this.$={type:"EQ",left:s[a-2],right:s[a]};break;case 11:this.$={type:"MOD",left:s[a-2],right:s[a]};break;case 12:this.$={type:"GROUP",expr:s[a-1]};break;case 13:this.$={type:"VAR"};break;case 14:this.$={type:"NUM",val:Number(e)}}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function(e,t){throw new Error(e)},parse:function(e){var t=this,n=[0],r=[null],i=[],s=this.table,o="",a=0,c=0,l=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;function d(){var e;return"number"!=typeof(e=t.lexer.lex()||1)&&(e=t.symbols_[e]||e),e}i.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var h,f,p,g,m,v,_,b,y,w,S={};;){if(p=n[n.length-1],this.defaultActions[p]?g=this.defaultActions[p]:(null==h&&(h=d()),g=s[p]&&s[p][h]),void 0===g||!g.length||!g[0]){if(!l){for(v in y=[],s[p])this.terminals_[v]&&v>2&&y.push("'"+this.terminals_[v]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+y.join(", ")+", got '"+this.terminals_[h]+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==h?"end of input":"'"+(this.terminals_[h]||h)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[h]||h,line:this.lexer.yylineno,loc:u,expected:y})}if(3==l){if(1==h)throw new Error(x||"Parsing halted.");c=this.lexer.yyleng,o=this.lexer.yytext,a=this.lexer.yylineno,u=this.lexer.yylloc,h=d()}for(;!(2..toString()in s[p]);){if(0==p)throw new Error(x||"Parsing halted.");w=1,n.length=n.length-2*w,r.length=r.length-w,i.length=i.length-w,p=n[n.length-1]}f=h,h=2,g=s[p=n[n.length-1]]&&s[p][2],l=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+h);switch(g[0]){case 1:n.push(h),r.push(this.lexer.yytext),i.push(this.lexer.yylloc),n.push(g[1]),h=null,f?(h=f,f=null):(c=this.lexer.yyleng,o=this.lexer.yytext,a=this.lexer.yylineno,u=this.lexer.yylloc,l>0&&l--);break;case 2:if(_=this.productions_[g[1]][1],S.$=r[r.length-_],S._$={first_line:i[i.length-(_||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(_||1)].first_column,last_column:i[i.length-1].last_column},void 0!==(m=this.performAction.call(S,o,c,a,this.yy,g[1],r,i)))return m;_&&(n=n.slice(0,-1*_*2),r=r.slice(0,-1*_),i=i.slice(0,-1*_)),n.push(this.productions_[g[1]][0]),r.push(S.$),i.push(S._$),b=s[n[n.length-2]][n[n.length-1]],n.push(b);break;case 3:return!0}}return!0}},g=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;var e,t;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if(e=this._input.match(this.rules[n[r]]))return(t=e[0].match(/\n.*/g))&&(this.yylineno+=t.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:t?t[t.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],this.performAction.call(this,this.yy,this,n[r],this.conditionStack[this.conditionStack.length-1])||void 0;if(""===this._input)return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)},performAction:function(e,t,n,r){switch(n){case 0:break;case 1:return 20;case 2:return 19;case 3:return 8;case 4:return 9;case 5:return 6;case 6:return 7;case 7:return 11;case 8:return 13;case 9:return 10;case 10:return 12;case 11:return 14;case 12:return 15;case 13:return 16;case 14:return 17;case 15:return 18;case 16:return 5;case 17:return"INVALID"}},rules:[/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^</,/^>/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};return e}(),p.lexer=g,p),e.exports&&(t=e.exports=d),t.Jed=d}()},function(e,t,n){"use strict";var r=n(13),i=n(0);i.e.Websocket=class{constructor(e){this._conn=e,this.strip="wrapper";const t=e.service;if(0!==t.indexOf("ws:")&&0!==t.indexOf("wss:")){let n="";"ws"===e.options.protocol&&"https:"!==window.location.protocol?n+="ws":n+="wss",n+="://"+window.location.host,0!==t.indexOf("/")?n+=window.location.pathname+t:n+=t,e.service=n}}_buildStream(){return Object(i.a)("open",{xmlns:i.e.NS.FRAMING,to:this._conn.domain,version:"1.0"})}_checkStreamError(e,t){let n;if(n=e.getElementsByTagNameNS?e.getElementsByTagNameNS(i.e.NS.STREAM,"error"):e.getElementsByTagName("stream:error"),0===n.length)return!1;const r=n[0];let s="",o="";for(let e=0;e<r.childNodes.length;e++){const t=r.childNodes[e];if("urn:ietf:params:xml:ns:xmpp-streams"!==t.getAttribute("xmlns"))break;"text"===t.nodeName?o=t.textContent:s=t.nodeName}let a="WebSocket stream error: ";return a+=s||"unknown",o&&(a+=" - "+o),i.e.error(a),this._conn._changeConnectStatus(t,s),this._conn._doDisconnect(),!0}_reset(){}_connect(){this._closeSocket(),this.socket=new WebSocket(this._conn.service,"xmpp"),this.socket.onopen=()=>this._onOpen(),this.socket.onerror=e=>this._onError(e),this.socket.onclose=e=>this._onClose(e),this.socket.onmessage=e=>this._onInitialMessage(e)}_connect_cb(e){if(this._checkStreamError(e,i.e.Status.CONNFAIL))return i.e.Status.CONNFAIL}_handleStreamStart(e){let t=!1;const n=e.getAttribute("xmlns");"string"!=typeof n?t="Missing xmlns in <open />":n!==i.e.NS.FRAMING&&(t="Wrong xmlns in <open />: "+n);const r=e.getAttribute("version");return"string"!=typeof r?t="Missing version in <open />":"1.0"!==r&&(t="Wrong version in <open />: "+r),!t||(this._conn._changeConnectStatus(i.e.Status.CONNFAIL,t),this._conn._doDisconnect(),!1)}_onInitialMessage(e){if(0===e.data.indexOf("<open ")||0===e.data.indexOf("<?xml")){const t=e.data.replace(/^(<\?.*?\?>\s*)*/,"");if(""===t)return;const n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn.xmlInput(n),this._conn.rawInput(e.data),this._handleStreamStart(n)&&this._connect_cb(n)}else if(0===e.data.indexOf("<close ")){const t=(new r.a).parseFromString(e.data,"text/xml").documentElement;this._conn.xmlInput(t),this._conn.rawInput(e.data);const n=t.getAttribute("see-other-uri");if(n){const e=this._conn.service;(e.indexOf("wss:")>=0&&n.indexOf("wss:")>=0||e.indexOf("ws:")>=0)&&(this._conn._changeConnectStatus(i.e.Status.REDIRECT,"Received see-other-uri, resetting connection"),this._conn.reset(),this._conn.service=n,this._connect())}else this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"Received closing stream"),this._conn._doDisconnect()}else{this._replaceMessageHandler();const t=this._streamWrap(e.data),n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn._connect_cb(n,null,e.data)}}_replaceMessageHandler(){this.socket.onmessage=e=>this._onMessage(e)}_disconnect(e){if(this.socket&&this.socket.readyState!==WebSocket.CLOSED){e&&this._conn.send(e);const t=Object(i.a)("close",{xmlns:i.e.NS.FRAMING});this._conn.xmlOutput(t.tree());const n=i.e.serialize(t);this._conn.rawOutput(n);try{this.socket.send(n)}catch(e){i.e.warn("Couldn't send <close /> tag.")}}this._conn._doDisconnect()}_doDisconnect(){i.e.debug("WebSockets _doDisconnect was called"),this._closeSocket()}_streamWrap(e){return"<wrapper>"+e+"</wrapper>"}_closeSocket(){if(this.socket)try{this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket.close()}catch(e){i.e.debug(e.message)}this.socket=null}_emptyQueue(){return!0}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(i.e.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected&&this.socket?(i.e.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):i.e.debug("Websocket closed")}_no_auth_received(e){i.e.error("Server did not offer a supported authentication mechanism"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,i.e.ErrorCondition.NO_AUTH_MECH),e&&e.call(this._conn),this._conn._doDisconnect()}_onDisconnectTimeout(){}_abortAllRequests(){}_onError(e){i.e.error("Websocket error "+e),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._disconnect()}_onIdle(){const e=this._conn._data;if(e.length>0&&!this._conn.paused){for(let t=0;t<e.length;t++)if(null!==e[t]){let n;n="restart"===e[t]?this._buildStream().tree():e[t];const r=i.e.serialize(n);this._conn.xmlOutput(n),this._conn.rawOutput(r),this.socket.send(r)}this._conn._data=[]}}_onMessage(e){let t;const n='<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';if(e.data===n)return this._conn.rawInput(n),this._conn.xmlInput(e),void(this._conn.disconnecting||this._conn._doDisconnect());if(0===e.data.search("<open ")){if(t=(new r.a).parseFromString(e.data,"text/xml").documentElement,!this._handleStreamStart(t))return}else{const n=this._streamWrap(e.data);t=(new r.a).parseFromString(n,"text/xml").documentElement}return this._checkStreamError(t,i.e.Status.ERROR)?void 0:this._conn.disconnecting&&"presence"===t.firstChild.nodeName&&"unavailable"===t.firstChild.getAttribute("type")?(this._conn.xmlInput(t),void this._conn.rawInput(i.e.serialize(t))):void this._conn._dataRecv(t,e.data)}_onOpen(){i.e.debug("Websocket open");const e=this._buildStream();this._conn.xmlOutput(e.tree());const t=i.e.serialize(e);this._conn.rawOutput(t),this.socket.send(t)}_reqToData(e){return e}_send(){this._conn.flush()}_sendRestart(){clearTimeout(this._conn._idleTimeout),this._conn._onIdle.bind(this._conn)()}}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){var r=n(291);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}},function(e,t,n){var r=n(17),i=Object.create,s=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=s},function(e,t,n){var r=n(60),i=n(62);function s(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}s.prototype=r(i.prototype),s.prototype.constructor=s,e.exports=s},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e){return e.placeholder}},function(e,t,n){var r=n(22)(n(10),"Map");e.exports=r},function(e,t,n){var r=n(356),i=n(363),s=n(365),o=n(366),a=n(367);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=s,c.prototype.has=o,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(47),i=n(32);e.exports=function(e,t){for(var n=0,s=(t=r(t,e)).length;null!=e&&n<s;)e=e[i(t[n++])];return n&&n==s?e:void 0}},function(e,t,n){var r=n(15),i=n(38),s=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(o.test(e)||!s.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(325),i=n(26);e.exports=function(e){return null==e?[]:r(e,i(e))}},function(e,t,n){var r=n(85),i=n(326),s=n(63),o=n(42),a=r((function(e,t){var n=o(t,s(a));return i(e,32,void 0,t,n)}));a.placeholder={},e.exports=a},function(e,t,n){var r;!function(){"use strict";var i={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function s(e){return a(l(e),arguments)}function o(e,t){return s.apply(null,[e].concat(t||[]))}function a(e,t){var n,r,o,a,c,l,u,d,h,f=1,p=e.length,g="";for(r=0;r<p;r++)if("string"==typeof e[r])g+=e[r];else if("object"==typeof e[r]){if((a=e[r]).keys)for(n=t[f],o=0;o<a.keys.length;o++){if(null==n)throw new Error(s('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[o],a.keys[o-1]));n=n[a.keys[o]]}else n=a.param_no?t[a.param_no]:t[f++];if(i.not_type.test(a.type)&&i.not_primitive.test(a.type)&&n instanceof Function&&(n=n()),i.numeric_arg.test(a.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(s("[sprintf] expecting number but found %T",n));switch(i.number.test(a.type)&&(d=n>=0),a.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,a.width?parseInt(a.width):0);break;case"e":n=a.precision?parseFloat(n).toExponential(a.precision):parseFloat(n).toExponential();break;case"f":n=a.precision?parseFloat(n).toFixed(a.precision):parseFloat(n);break;case"g":n=a.precision?String(Number(n.toPrecision(a.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=a.precision?n.substring(0,a.precision):n;break;case"t":n=String(!!n),n=a.precision?n.substring(0,a.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=a.precision?n.substring(0,a.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=a.precision?n.substring(0,a.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}i.json.test(a.type)?g+=n:(!i.number.test(a.type)||d&&!a.sign?h="":(h=d?"+":"-",n=n.toString().replace(i.sign,"")),l=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",u=a.width-(h+n).length,c=a.width&&u>0?l.repeat(u):"",g+=a.align?h+n+c:"0"===l?h+c+n:c+h+n)}return g}var c=Object.create(null);function l(e){if(c[e])return c[e];for(var t,n=e,r=[],s=0;n;){if(null!==(t=i.text.exec(n)))r.push(t[0]);else if(null!==(t=i.modulo.exec(n)))r.push("%");else{if(null===(t=i.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){s|=1;var o=[],a=t[2],l=[];if(null===(l=i.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(l[1]);""!==(a=a.substring(l[0].length));)if(null!==(l=i.key_access.exec(a)))o.push(l[1]);else{if(null===(l=i.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(l[1])}t[2]=o}else s|=2;if(3===s)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return c[e]=r}t.sprintf=s,t.vsprintf=o,"undefined"!=typeof window&&(window.sprintf=s,window.vsprintf=o,void 0===(r=function(){return{sprintf:s,vsprintf:o}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t){function n(e,t){for(var n in e)t[n]=e[n]}function r(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){function s(){}s.prototype=t.prototype,n(r,s=new s),e.prototype=r=s}r.constructor!=e&&("function"!=typeof e&&console.error("unknow Class:"+e),r.constructor=e)}var i={},s=i.ELEMENT_NODE=1,o=i.ATTRIBUTE_NODE=2,a=i.TEXT_NODE=3,c=i.CDATA_SECTION_NODE=4,l=i.ENTITY_REFERENCE_NODE=5,u=i.ENTITY_NODE=6,d=i.PROCESSING_INSTRUCTION_NODE=7,h=i.COMMENT_NODE=8,f=i.DOCUMENT_NODE=9,p=i.DOCUMENT_TYPE_NODE=10,g=i.DOCUMENT_FRAGMENT_NODE=11,m=i.NOTATION_NODE=12,v={},_={},b=(v.INDEX_SIZE_ERR=(_[1]="Index size error",1),v.DOMSTRING_SIZE_ERR=(_[2]="DOMString size error",2),v.HIERARCHY_REQUEST_ERR=(_[3]="Hierarchy request error",3)),y=(v.WRONG_DOCUMENT_ERR=(_[4]="Wrong document",4),v.INVALID_CHARACTER_ERR=(_[5]="Invalid character",5),v.NO_DATA_ALLOWED_ERR=(_[6]="No data allowed",6),v.NO_MODIFICATION_ALLOWED_ERR=(_[7]="No modification allowed",7),v.NOT_FOUND_ERR=(_[8]="Not found",8)),w=(v.NOT_SUPPORTED_ERR=(_[9]="Not supported",9),v.INUSE_ATTRIBUTE_ERR=(_[10]="Attribute in use",10));v.INVALID_STATE_ERR=(_[11]="Invalid state",11),v.SYNTAX_ERR=(_[12]="Syntax error",12),v.INVALID_MODIFICATION_ERR=(_[13]="Invalid modification",13),v.NAMESPACE_ERR=(_[14]="Invalid namespace",14),v.INVALID_ACCESS_ERR=(_[15]="Invalid access",15);function S(e,t){if(t instanceof Error)var n=t;else n=this,Error.call(this,_[e]),this.message=_[e],Error.captureStackTrace&&Error.captureStackTrace(this,S);return n.code=e,t&&(this.message=this.message+": "+t),n}function x(){}function E(e,t){this._node=e,this._refresh=t,A(this)}function A(e){var t=e._node._inc||e._node.ownerDocument._inc;if(e._inc!=t){var r=e._refresh(e._node);te(e,"length",r.length),n(r,e),e._inc=t}}function C(){}function j(e,t){for(var n=e.length;n--;)if(e[n]===t)return n}function T(e,t,n,r){if(r?t[j(t,r)]=n:t[t.length++]=n,e){n.ownerElement=e;var i=e.ownerDocument;i&&(r&&D(i,e,r),function(e,t,n){e&&e._inc++,"http://www.w3.org/2000/xmlns/"==n.namespaceURI&&(t._nsMap[n.prefix?n.localName:""]=n.value)}(i,e,n))}}function O(e,t,n){var r=j(t,n);if(!(r>=0))throw S(y,new Error(e.tagName+"@"+n));for(var i=t.length-1;r<i;)t[r]=t[++r];if(t.length=i,e){var s=e.ownerDocument;s&&(D(s,e,n),n.ownerElement=null)}}function k(e){if(this._features={},e)for(var t in e)this._features=e[t]}function N(){}function I(e){return("<"==e?"<":">"==e&&">")||"&"==e&&"&"||'"'==e&&"""||"&#"+e.charCodeAt()+";"}function M(e,t){if(t(e))return!0;if(e=e.firstChild)do{if(M(e,t))return!0}while(e=e.nextSibling)}function R(){}function D(e,t,n,r){e&&e._inc++,"http://www.w3.org/2000/xmlns/"==n.namespaceURI&&delete t._nsMap[n.prefix?n.localName:""]}function P(e,t,n){if(e&&e._inc){e._inc++;var r=t.childNodes;if(n)r[r.length++]=n;else{for(var i=t.firstChild,s=0;i;)r[s++]=i,i=i.nextSibling;r.length=s}}}function L(e,t){var n=t.previousSibling,r=t.nextSibling;return n?n.nextSibling=r:e.firstChild=r,r?r.previousSibling=n:e.lastChild=n,P(e.ownerDocument,e),t}function z(e,t,n){var r=t.parentNode;if(r&&r.removeChild(t),t.nodeType===g){var i=t.firstChild;if(null==i)return t;var s=t.lastChild}else i=s=t;var o=n?n.previousSibling:e.lastChild;i.previousSibling=o,s.nextSibling=n,o?o.nextSibling=i:e.firstChild=i,null==n?e.lastChild=s:n.previousSibling=s;do{i.parentNode=e}while(i!==s&&(i=i.nextSibling));return P(e.ownerDocument||e,e),t.nodeType==g&&(t.firstChild=t.lastChild=null),t}function F(){this._nsMap={}}function B(){}function q(){}function H(){}function U(){}function $(){}function W(){}function V(){}function G(){}function J(){}function X(){}function Q(){}function Y(){}function K(e,t){var n=[],r=9==this.nodeType?this.documentElement:this,i=r.prefix,s=r.namespaceURI;if(s&&null==i&&null==(i=r.lookupPrefix(s)))var o=[{namespace:s,prefix:null}];return ee(this,n,e,t,o),n.join("")}function Z(e,t,n){var r=e.prefix||"",i=e.namespaceURI;if(!r&&!i)return!1;if("xml"===r&&"http://www.w3.org/XML/1998/namespace"===i||"http://www.w3.org/2000/xmlns/"==i)return!1;for(var s=n.length;s--;){var o=n[s];if(o.prefix==r)return o.namespace!=i}return!0}function ee(e,t,n,r,i){if(r){if(!(e=r(e)))return;if("string"==typeof e)return void t.push(e)}switch(e.nodeType){case s:i||(i=[]);i.length;var u=e.attributes,m=u.length,v=e.firstChild,_=e.tagName;n="http://www.w3.org/1999/xhtml"===e.namespaceURI||n,t.push("<",_);for(var b=0;b<m;b++){"xmlns"==(y=u.item(b)).prefix?i.push({prefix:y.localName,namespace:y.value}):"xmlns"==y.nodeName&&i.push({prefix:"",namespace:y.value})}for(b=0;b<m;b++){var y;if(Z(y=u.item(b),0,i)){var w=y.prefix||"",S=y.namespaceURI,x=w?" xmlns:"+w:" xmlns";t.push(x,'="',S,'"'),i.push({prefix:w,namespace:S})}ee(y,t,n,r,i)}if(Z(e,0,i)){w=e.prefix||"",S=e.namespaceURI,x=w?" xmlns:"+w:" xmlns";t.push(x,'="',S,'"'),i.push({prefix:w,namespace:S})}if(v||n&&!/^(?:meta|link|img|br|hr|input)$/i.test(_)){if(t.push(">"),n&&/^script$/i.test(_))for(;v;)v.data?t.push(v.data):ee(v,t,n,r,i),v=v.nextSibling;else for(;v;)ee(v,t,n,r,i),v=v.nextSibling;t.push("</",_,">")}else t.push("/>");return;case f:case g:for(v=e.firstChild;v;)ee(v,t,n,r,i),v=v.nextSibling;return;case o:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,I),'"');case a:return t.push(e.data.replace(/[<&]/g,I));case c:return t.push("<![CDATA[",e.data,"]]>");case h:return t.push("\x3c!--",e.data,"--\x3e");case p:var E=e.publicId,A=e.systemId;if(t.push("<!DOCTYPE ",e.name),E)t.push(' PUBLIC "',E),A&&"."!=A&&t.push('" "',A),t.push('">');else if(A&&"."!=A)t.push(' SYSTEM "',A,'">');else{var C=e.internalSubset;C&&t.push(" [",C,"]"),t.push(">")}return;case d:return t.push("<?",e.target," ",e.data,"?>");case l:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function te(e,t,n){e[t]=n}S.prototype=Error.prototype,n(v,S),x.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var n=[],r=0;r<this.length;r++)ee(this[r],n,e,t);return n.join("")}},E.prototype.item=function(e){return A(this),this[e]},r(E,x),C.prototype={length:0,item:x.prototype.item,getNamedItem:function(e){for(var t=this.length;t--;){var n=this[t];if(n.nodeName==e)return n}},setNamedItem:function(e){var t=e.ownerElement;if(t&&t!=this._ownerElement)throw new S(w);var n=this.getNamedItem(e.nodeName);return T(this._ownerElement,this,e,n),n},setNamedItemNS:function(e){var t,n=e.ownerElement;if(n&&n!=this._ownerElement)throw new S(w);return t=this.getNamedItemNS(e.namespaceURI,e.localName),T(this._ownerElement,this,e,t),t},removeNamedItem:function(e){var t=this.getNamedItem(e);return O(this._ownerElement,this,t),t},removeNamedItemNS:function(e,t){var n=this.getNamedItemNS(e,t);return O(this._ownerElement,this,n),n},getNamedItemNS:function(e,t){for(var n=this.length;n--;){var r=this[n];if(r.localName==t&&r.namespaceURI==e)return r}return null}},k.prototype={hasFeature:function(e,t){var n=this._features[e.toLowerCase()];return!(!n||t&&!(t in n))},createDocument:function(e,t,n){var r=new R;if(r.implementation=this,r.childNodes=new x,r.doctype=n,n&&r.appendChild(n),t){var i=r.createElementNS(e,t);r.appendChild(i)}return r},createDocumentType:function(e,t,n){var r=new W;return r.name=e,r.nodeName=e,r.publicId=t,r.systemId=n,r}},N.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(e,t){return z(this,e,t)},replaceChild:function(e,t){this.insertBefore(e,t),t&&this.removeChild(t)},removeChild:function(e){return L(this,e)},appendChild:function(e){return this.insertBefore(e,null)},hasChildNodes:function(){return null!=this.firstChild},cloneNode:function(e){return function e(t,n,r){var i=new n.constructor;for(var a in n){var c=n[a];"object"!=typeof c&&c!=i[a]&&(i[a]=c)}n.childNodes&&(i.childNodes=new x);switch(i.ownerDocument=t,i.nodeType){case s:var l=n.attributes,u=i.attributes=new C,d=l.length;u._ownerElement=i;for(var h=0;h<d;h++)i.setAttributeNode(e(t,l.item(h),!0));break;case o:r=!0}if(r)for(var f=n.firstChild;f;)i.appendChild(e(t,f,r)),f=f.nextSibling;return i}(this.ownerDocument||this,this,e)},normalize:function(){for(var e=this.firstChild;e;){var t=e.nextSibling;t&&t.nodeType==a&&e.nodeType==a?(this.removeChild(t),e.appendData(t.data)):(e.normalize(),e=t)}},isSupported:function(e,t){return this.ownerDocument.implementation.hasFeature(e,t)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(e){for(var t=this;t;){var n=t._nsMap;if(n)for(var r in n)if(n[r]==e)return r;t=t.nodeType==o?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var n=t._nsMap;if(n&&e in n)return n[e];t=t.nodeType==o?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){return null==this.lookupPrefix(e)}},n(i,N),n(i,N.prototype),R.prototype={nodeName:"#document",nodeType:f,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==g){for(var n=e.firstChild;n;){var r=n.nextSibling;this.insertBefore(n,t),n=r}return e}return null==this.documentElement&&e.nodeType==s&&(this.documentElement=e),z(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),L(this,e)},importNode:function(e,t){return function e(t,n,r){var i;switch(n.nodeType){case s:(i=n.cloneNode(!1)).ownerDocument=t;case g:break;case o:r=!0}i||(i=n.cloneNode(!1));if(i.ownerDocument=t,i.parentNode=null,r)for(var a=n.firstChild;a;)i.appendChild(e(t,a,r)),a=a.nextSibling;return i}(this,e,t)},getElementById:function(e){var t=null;return M(this.documentElement,(function(n){if(n.nodeType==s&&n.getAttribute("id")==e)return t=n,!0})),t},createElement:function(e){var t=new F;return t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new x,(t.attributes=new C)._ownerElement=t,t},createDocumentFragment:function(){var e=new X;return e.ownerDocument=this,e.childNodes=new x,e},createTextNode:function(e){var t=new H;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new U;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new $;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var n=new Q;return n.ownerDocument=this,n.tagName=n.target=e,n.nodeValue=n.data=t,n},createAttribute:function(e){var t=new B;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new J;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var n=new F,r=t.split(":"),i=n.attributes=new C;return n.childNodes=new x,n.ownerDocument=this,n.nodeName=t,n.tagName=t,n.namespaceURI=e,2==r.length?(n.prefix=r[0],n.localName=r[1]):n.localName=t,i._ownerElement=n,n},createAttributeNS:function(e,t){var n=new B,r=t.split(":");return n.ownerDocument=this,n.nodeName=t,n.name=t,n.namespaceURI=e,n.specified=!0,2==r.length?(n.prefix=r[0],n.localName=r[1]):n.localName=t,n}},r(R,N),F.prototype={nodeType:s,hasAttribute:function(e){return null!=this.getAttributeNode(e)},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var n=this.ownerDocument.createAttribute(e);n.value=n.nodeValue=""+t,this.setAttributeNode(n)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===g?this.insertBefore(e,null):function(e,t){var n=t.parentNode;if(n){var r=e.lastChild;n.removeChild(t);r=e.lastChild}return r=e.lastChild,t.parentNode=e,t.previousSibling=r,t.nextSibling=null,r?r.nextSibling=t:e.firstChild=t,e.lastChild=t,P(e.ownerDocument,e,t),t}(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);n&&this.removeAttributeNode(n)},hasAttributeNS:function(e,t){return null!=this.getAttributeNodeNS(e,t)},getAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);return n&&n.value||""},setAttributeNS:function(e,t,n){var r=this.ownerDocument.createAttributeNS(e,t);r.value=r.nodeValue=""+n,this.setAttributeNode(r)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new E(this,(function(t){var n=[];return M(t,(function(r){r===t||r.nodeType!=s||"*"!==e&&r.tagName!=e||n.push(r)})),n}))},getElementsByTagNameNS:function(e,t){return new E(this,(function(n){var r=[];return M(n,(function(i){i===n||i.nodeType!==s||"*"!==e&&i.namespaceURI!==e||"*"!==t&&i.localName!=t||r.push(i)})),r}))}},R.prototype.getElementsByTagName=F.prototype.getElementsByTagName,R.prototype.getElementsByTagNameNS=F.prototype.getElementsByTagNameNS,r(F,N),B.prototype.nodeType=o,r(B,N),q.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(_[b])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,n){n=this.data.substring(0,e)+n+this.data.substring(e+t),this.nodeValue=this.data=n,this.length=n.length}},r(q,N),H.prototype={nodeName:"#text",nodeType:a,splitText:function(e){var t=this.data,n=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var r=this.ownerDocument.createTextNode(n);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}},r(H,q),U.prototype={nodeName:"#comment",nodeType:h},r(U,q),$.prototype={nodeName:"#cdata-section",nodeType:c},r($,q),W.prototype.nodeType=p,r(W,N),V.prototype.nodeType=m,r(V,N),G.prototype.nodeType=u,r(G,N),J.prototype.nodeType=l,r(J,N),X.prototype.nodeName="#document-fragment",X.prototype.nodeType=g,r(X,N),Q.prototype.nodeType=d,r(Q,N),Y.prototype.serializeToString=function(e,t,n){return K.call(e,t,n)},N.prototype.toString=K;try{if(Object.defineProperty){Object.defineProperty(E.prototype,"length",{get:function(){return A(this),this.$$length}}),Object.defineProperty(N.prototype,"textContent",{get:function(){return function e(t){switch(t.nodeType){case s:case g:var n=[];for(t=t.firstChild;t;)7!==t.nodeType&&8!==t.nodeType&&n.push(e(t)),t=t.nextSibling;return n.join("");default:return t.nodeValue}}(this)},set:function(e){switch(this.nodeType){case s:case g:for(;this.firstChild;)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=e,this.nodeValue=e}}}),te=function(e,t,n){e["$$"+t]=n}}}catch(e){}t.DOMImplementation=k,t.XMLSerializer=Y},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(11))},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t,n){var r=n(300),i=n(75),s=n(15),o=n(76),a=n(30),c=n(77),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=s(e),u=!n&&i(e),d=!n&&!u&&o(e),h=!n&&!u&&!d&&c(e),f=n||u||d||h,p=f?r(e.length,String):[],g=p.length;for(var m in e)!t&&!l.call(e,m)||f&&("length"==m||d&&("offset"==m||"parent"==m)||h&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||a(m,g))||p.push(m);return p}},function(e,t,n){var r=n(301),i=n(19),s=Object.prototype,o=s.hasOwnProperty,a=s.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return i(e)&&o.call(e,"callee")&&!a.call(e,"callee")};e.exports=c},function(e,t,n){(function(e){var r=n(10),i=n(302),s=t&&!t.nodeType&&t,o=s&&"object"==typeof e&&e&&!e.nodeType&&e,a=o&&o.exports===s?r.Buffer:void 0,c=(a?a.isBuffer:void 0)||i;e.exports=c}).call(this,n(36)(e))},function(e,t,n){var r=n(303),i=n(304),s=n(305),o=s&&s.isTypedArray,a=o?i(o):r;e.exports=a},function(e,t,n){var r=n(79),i=n(306),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))s.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(82),i=n(40),s=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var o=e[t];s.call(e,t)&&i(o,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t,n){var r=n(83);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(22),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(31),i=n(316),s=n(86);e.exports=function(e,t){return s(i(e,t,r),e+"")}},function(e,t,n){var r=n(317),i=n(87)(r);e.exports=i},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var i=n(),s=16-(i-r);if(r=i,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(74),i=n(320),s=n(25);e.exports=function(e){return s(e)?r(e,!0):i(e)}},function(e,t,n){var r=n(322),i=n(323),s=n(324);e.exports=function(e,t,n){return t==t?s(e,t,n):r(e,i,n)}},function(e,t,n){var r=n(21),i=n(15),s=n(19);e.exports=function(e){return"string"==typeof e||!i(e)&&s(e)&&"[object String]"==r(e)}},function(e,t,n){var r=n(31),i=n(92),s=i?function(e,t){return i.set(e,t),e}:r;e.exports=s},function(e,t,n){var r=n(93),i=r&&new r;e.exports=i},function(e,t,n){var r=n(22)(n(10),"WeakMap");e.exports=r},function(e,t,n){var r=n(95),i=n(96),s=n(329),o=n(41),a=n(97),c=n(63),l=n(340),u=n(42),d=n(10);e.exports=function e(t,n,h,f,p,g,m,v,_,b){var y=128&n,w=1&n,S=2&n,x=24&n,E=512&n,A=S?void 0:o(t);return function C(){for(var j=arguments.length,T=Array(j),O=j;O--;)T[O]=arguments[O];if(x)var k=c(C),N=s(T,k);if(f&&(T=r(T,f,p,x)),g&&(T=i(T,g,m,x)),j-=N,x&&j<b){var I=u(T,k);return a(t,n,e,C.placeholder,h,T,I,v,_,b-j)}var M=w?h:this,R=S?M[t]:t;return j=T.length,v?T=l(T,v):E&&j>1&&T.reverse(),y&&_<j&&(T.length=_),this&&this!==d&&this instanceof C&&(R=A||o(R)),R.apply(M,T)}}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var s=-1,o=e.length,a=r.length,c=-1,l=t.length,u=n(o-a,0),d=Array(l+u),h=!i;++c<l;)d[c]=t[c];for(;++s<a;)(h||s<o)&&(d[r[s]]=e[s]);for(;u--;)d[c++]=e[s++];return d}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var s=-1,o=e.length,a=-1,c=r.length,l=-1,u=t.length,d=n(o-c,0),h=Array(d+u),f=!i;++s<d;)h[s]=e[s];for(var p=s;++l<u;)h[p+l]=t[l];for(;++a<c;)(f||s<o)&&(h[p+r[a]]=e[s++]);return h}},function(e,t,n){var r=n(330),i=n(101),s=n(102);e.exports=function(e,t,n,o,a,c,l,u,d,h){var f=8&t;t|=f?32:64,4&(t&=~(f?64:32))||(t&=-4);var p=[e,t,a,f?c:void 0,f?l:void 0,f?void 0:c,f?void 0:l,u,d,h],g=n.apply(void 0,p);return r(e)&&i(g,p),g.placeholder=o,s(g,e,t)}},function(e,t,n){var r=n(92),i=n(331),s=r?function(e){return r.get(e)}:i;e.exports=s},function(e,t,n){var r=n(60),i=n(62);function s(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}s.prototype=r(i.prototype),s.prototype.constructor=s,e.exports=s},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){var r=n(91),i=n(87)(r);e.exports=i},function(e,t,n){var r=n(336),i=n(337),s=n(86),o=n(338);e.exports=function(e,t,n){var a=t+"";return s(e,i(a,o(r(a),n)))}},function(e,t,n){var r=n(43),i=n(351),s=n(352),o=n(353),a=n(354),c=n(355);function l(e){var t=this.__data__=new r(e);this.size=t.size}l.prototype.clear=i,l.prototype.delete=s,l.prototype.get=o,l.prototype.has=a,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(368),i=n(19);e.exports=function e(t,n,s,o,a){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:r(t,n,s,o,e,a))}},function(e,t,n){var r=n(369),i=n(372),s=n(373);e.exports=function(e,t,n,o,a,c){var l=1&n,u=e.length,d=t.length;if(u!=d&&!(l&&d>u))return!1;var h=c.get(e),f=c.get(t);if(h&&f)return h==t&&f==e;var p=-1,g=!0,m=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++p<u;){var v=e[p],_=t[p];if(o)var b=l?o(_,v,p,t,e,c):o(v,_,p,e,t,c);if(void 0!==b){if(b)continue;g=!1;break}if(m){if(!i(t,(function(e,t){if(!s(m,t)&&(v===e||a(v,e,n,o,c)))return m.push(t)}))){g=!1;break}}else if(v!==_&&!a(v,_,n,o,c)){g=!1;break}}return c.delete(e),c.delete(t),g}},function(e,t,n){var r=n(107),i=n(15);e.exports=function(e,t,n){var s=t(e);return i(e)?s:r(s,n(e))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}},function(e,t,n){var r=n(380),i=n(109),s=Object.prototype.propertyIsEnumerable,o=Object.getOwnPropertySymbols,a=o?function(e){return null==e?[]:(e=Object(e),r(o(e),(function(t){return s.call(e,t)})))}:i;e.exports=a},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(381),i=n(64),s=n(382),o=n(383),a=n(93),c=n(21),l=n(84),u=l(r),d=l(i),h=l(s),f=l(o),p=l(a),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||s&&"[object Promise]"!=g(s.resolve())||o&&"[object Set]"!=g(new o)||a&&"[object WeakMap]"!=g(new a))&&(g=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?l(n):"";if(r)switch(r){case u:return"[object DataView]";case d:return"[object Map]";case h:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return t}),e.exports=g},function(e,t,n){var r=n(17);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var r=n(390);e.exports=function(e){return null==e?"":r(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){"use strict";var r=n(13),i=n(0);i.e.Request=class{constructor(e,t,n,r){this.id=++i.e._requestId,this.xmlData=e,this.data=i.e.serialize(e),this.origFunc=t,this.func=t,this.rid=n,this.date=NaN,this.sends=r||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;return(new Date-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;return(new Date-this.dead)/1e3},this.xhr=this._newXHR()}getResponse(){let e=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){if(e=this.xhr.responseXML.documentElement,"parsererror"===e.tagName)throw i.e.error("invalid response received"),i.e.error("responseText: "+this.xhr.responseText),i.e.error("responseXML: "+i.e.serialize(this.xhr.responseXML)),new Error("parsererror")}else if(this.xhr.responseText){if(i.e.debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."),e=(new r.a).parseFromString(this.xhr.responseText,"application/xml").documentElement,!e)throw new Error("Parsing produced null node");if(e.querySelector("parsererror")){i.e.error("invalid response received: "+e.querySelector("parsererror").textContent),i.e.error("responseText: "+this.xhr.responseText);const t=new Error;throw t.name=i.e.ErrorCondition.BAD_FORMAT,t}}return e}_newXHR(){let e=null;return window.XMLHttpRequest?(e=new XMLHttpRequest,e.overrideMimeType&&e.overrideMimeType("text/xml; charset=utf-8")):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),e.onreadystatechange=this.func.bind(null,this),e}},i.e.Bosh=class e{constructor(e){this._conn=e,this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.hold=1,this.wait=60,this.window=5,this.errors=0,this.inactivity=null,this.lastResponseHeaders=null,this._requests=[]}_buildBody(){const e=Object(i.a)("body",{rid:this.rid++,xmlns:i.e.NS.HTTPBIND});return null!==this.sid&&e.attrs({sid:this.sid}),this._conn.options.keepalive&&this._conn._sessionCachingSupported()&&this._cacheSession(),e}_reset(){this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.errors=0,this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_connect(e,t,n){this.wait=e||this.wait,this.hold=t||this.hold,this.errors=0;const r=this._buildBody().attrs({to:this._conn.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":i.e.NS.BOSH});n&&r.attrs({route:n});const s=this._conn._connect_cb;this._requests.push(new i.e.Request(r.tree(),this._onRequestStateChange.bind(this,s.bind(this._conn)),r.tree().getAttribute("rid"))),this._throttledRequestHandler()}_attach(e,t,n,r,s,o,a){this._conn.jid=e,this.sid=t,this.rid=n,this._conn.connect_callback=r,this._conn.domain=i.e.getDomainFromJid(this._conn.jid),this._conn.authenticated=!0,this._conn.connected=!0,this.wait=s||this.wait,this.hold=o||this.hold,this.window=a||this.window,this._conn._changeConnectStatus(i.e.Status.ATTACHED,null)}_restore(e,t,n,r,s){const o=JSON.parse(window.sessionStorage.getItem("strophe-bosh-session"));if(!(null!=o&&o.rid&&o.sid&&o.jid&&(null==e||i.e.getBareJidFromJid(o.jid)===i.e.getBareJidFromJid(e)||null===i.e.getNodeFromJid(e)&&i.e.getDomainFromJid(o.jid)===e))){const e=new Error("_restore: no restoreable session.");throw e.name="StropheSessionError",e}this._conn.restored=!0,this._attach(o.jid,o.sid,o.rid,t,n,r,s)}_cacheSession(){this._conn.authenticated?this._conn.jid&&this.rid&&this.sid&&window.sessionStorage.setItem("strophe-bosh-session",JSON.stringify({jid:this._conn.jid,rid:this.rid,sid:this.sid})):window.sessionStorage.removeItem("strophe-bosh-session")}_connect_cb(e){const t=e.getAttribute("type");if(null!==t&&"terminate"===t){let t=e.getAttribute("condition");i.e.error("BOSH-Connection failed: "+t);const n=e.getElementsByTagName("conflict");return null!==t?("remote-stream-error"===t&&n.length>0&&(t="conflict"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,t)):this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"unknown"),this._conn._doDisconnect(t),i.e.Status.CONNFAIL}this.sid||(this.sid=e.getAttribute("sid"));const n=e.getAttribute("requests");n&&(this.window=parseInt(n,10));const r=e.getAttribute("hold");r&&(this.hold=parseInt(r,10));const s=e.getAttribute("wait");s&&(this.wait=parseInt(s,10));const o=e.getAttribute("inactivity");o&&(this.inactivity=parseInt(o,10))}_disconnect(e){this._sendTerminate(e)}_doDisconnect(){this.sid=null,this.rid=Math.floor(4294967295*Math.random()),this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_emptyQueue(){return 0===this._requests.length}_callProtocolErrorHandlers(t){const n=e._getRequestStatus(t),r=this._conn.protocolErrorHandlers.HTTP[n];r&&r.call(this,n)}_hitError(e){this.errors++,i.e.warn("request errored, status: "+e+", number of errors: "+this.errors),this.errors>4&&this._conn._onDisconnectTimeout()}_no_auth_received(e){i.e.warn("Server did not yet offer a supported authentication mechanism. Sending a blank poll request."),e=e?e.bind(this._conn):this._conn._connect_cb.bind(this._conn);const t=this._buildBody();this._requests.push(new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,e),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}_onDisconnectTimeout(){this._abortAllRequests()}_abortAllRequests(){for(;this._requests.length>0;){const e=this._requests.pop();e.abort=!0,e.xhr.abort(),e.xhr.onreadystatechange=function(){}}}_onIdle(){const e=this._conn._data;if(this._conn.authenticated&&0===this._requests.length&&0===e.length&&!this._conn.disconnecting&&(i.e.debug("no requests during idle cycle, sending blank request"),e.push(null)),!this._conn.paused){if(this._requests.length<2&&e.length>0){const t=this._buildBody();for(let n=0;n<e.length;n++)null!==e[n]&&("restart"===e[n]?t.attrs({to:this._conn.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":i.e.NS.BOSH}):t.cnode(e[n]).up());delete this._conn._data,this._conn._data=[],this._requests.push(new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}if(this._requests.length>0){const e=this._requests[0].age();null!==this._requests[0].dead&&this._requests[0].timeDead()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),e>Math.floor(i.e.TIMEOUT*this.wait)&&(i.e.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(i.e.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())}}}static _getRequestStatus(e,t){let n;if(4===e.xhr.readyState)try{n=e.xhr.status}catch(e){i.e.error("Caught an error while retrieving a request's status, reqStatus: "+n)}return void 0===n&&(n="number"==typeof t?t:0),n}_onRequestStateChange(t,n){if(i.e.debug("request id "+n.id+"."+n.sends+" state changed to "+n.xhr.readyState),n.abort)return void(n.abort=!1);if(4!==n.xhr.readyState)return;const r=e._getRequestStatus(n);if(this.lastResponseHeaders=n.xhr.getAllResponseHeaders(),this._conn.disconnecting&&r>=400)return this._hitError(r),void this._callProtocolErrorHandlers(n);const s=r>0&&r<500,o=n.sends>this._conn.maxRetries;if((s||o)&&(this._removeRequest(n),i.e.debug("request id "+n.id+" should now be removed")),200===r){const e=this._requests[0]===n;(this._requests[1]===n||e&&this._requests.length>0&&this._requests[0].age()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),this._conn.nextValidRid(Number(n.rid)+1),i.e.debug("request id "+n.id+"."+n.sends+" got 200"),t(n),this.errors=0}else 0===r||r>=400&&r<600||r>=12e3?(i.e.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),this._hitError(r),this._callProtocolErrorHandlers(n),r>=400&&r<500&&(this._conn._changeConnectStatus(i.e.Status.DISCONNECTING,null),this._conn._doDisconnect())):i.e.error("request id "+n.id+"."+n.sends+" error "+r+" happened");s||o?o&&!this._conn.connected&&this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"giving-up"):this._throttledRequestHandler()}_processRequest(t){let n=this._requests[t];const r=e._getRequestStatus(n,-1);if(n.sends>this._conn.maxRetries)return void this._conn._onDisconnectTimeout();const s=n.age(),o=!isNaN(s)&&s>Math.floor(i.e.TIMEOUT*this.wait),a=null!==n.dead&&n.timeDead()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait),c=4===n.xhr.readyState&&(r<1||r>=500);if((o||a||c)&&(a&&i.e.error("Request ".concat(this._requests[t].id," timed out (secondary), restarting")),n.abort=!0,n.xhr.abort(),n.xhr.onreadystatechange=function(){},this._requests[t]=new i.e.Request(n.xmlData,n.origFunc,n.rid,n.sends),n=this._requests[t]),0===n.xhr.readyState){i.e.debug("request id "+n.id+"."+n.sends+" posting");try{const e=this._conn.options.contentType||"text/xml; charset=utf-8";n.xhr.open("POST",this._conn.service,!this._conn.options.sync),void 0!==n.xhr.setRequestHeader&&n.xhr.setRequestHeader("Content-Type",e),this._conn.options.withCredentials&&(n.xhr.withCredentials=!0)}catch(e){return i.e.error("XHR open failed: "+e.toString()),this._conn.connected||this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"bad-service"),void this._conn.disconnect()}const e=()=>{if(n.date=new Date,this._conn.options.customHeaders){const e=this._conn.options.customHeaders;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.xhr.setRequestHeader(t,e[t])}n.xhr.send(n.data)};if(n.sends>1){const t=1e3*Math.min(Math.floor(i.e.TIMEOUT*this.wait),Math.pow(n.sends,3));setTimeout((function(){e()}),t)}else e();n.sends++,this._conn.xmlOutput!==i.e.Connection.prototype.xmlOutput&&(n.xmlData.nodeName===this.strip&&n.xmlData.childNodes.length?this._conn.xmlOutput(n.xmlData.childNodes[0]):this._conn.xmlOutput(n.xmlData)),this._conn.rawOutput!==i.e.Connection.prototype.rawOutput&&this._conn.rawOutput(n.data)}else i.e.debug("_processRequest: "+(0===t?"first":"second")+" request has readyState of "+n.xhr.readyState)}_removeRequest(e){i.e.debug("removing request");for(let t=this._requests.length-1;t>=0;t--)e===this._requests[t]&&this._requests.splice(t,1);e.xhr.onreadystatechange=function(){},this._throttledRequestHandler()}_restartRequest(e){const t=this._requests[e];null===t.dead&&(t.dead=new Date),this._processRequest(e)}_reqToData(e){try{return e.getResponse()}catch(e){if("parsererror"!==e.message)throw e;this._conn.disconnect("strophe-parsererror")}}_sendTerminate(e){i.e.debug("_sendTerminate was called");const t=this._buildBody().attrs({type:"terminate"});e&&t.cnode(e.tree());const n=new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"));this._requests.push(n),this._throttledRequestHandler()}_send(){clearTimeout(this._conn._idleTimeout),this._throttledRequestHandler(),this._conn._idleTimeout=setTimeout(()=>this._conn._onIdle(),100)}_sendRestart(){this._throttledRequestHandler(),clearTimeout(this._conn._idleTimeout)}_throttledRequestHandler(){this._requests?i.e.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):i.e.debug("_throttledRequestHandler called with undefined requests"),this._requests&&0!==this._requests.length&&(this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1))}},i.e.Bosh.prototype.strip=null},function(e,t,n){(function(e,r){var i;/*! https://mths.be/punycode v1.4.0 by @mathias */!function(s){t&&t.nodeType,e&&e.nodeType;var o="object"==typeof r&&r;o.global!==o&&o.window!==o&&o.self;var a,c=2147483647,l=/^xn--/,u=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,p=String.fromCharCode;function g(e){throw new RangeError(h[e])}function m(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function v(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+m((e=e.replace(d,".")).split("."),t).join(".")}function _(e){for(var t,n,r=[],i=0,s=e.length;i<s;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<s?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function b(e){return m(e,(function(e){var t="";return e>65535&&(t+=p((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=p(e)})).join("")}function y(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,n){var r=0;for(e=n?f(e/700):e>>1,e+=f(e/t);e>455;r+=36)e=f(e/35);return f(r+36*e/(e+38))}function S(e){var t,n,r,i,s,o,a,l,u,d,h,p=[],m=e.length,v=0,_=128,y=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&g("not-basic"),p.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<m;){for(s=v,o=1,a=36;i>=m&&g("invalid-input"),((l=(h=e.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||l>f((c-v)/o))&&g("overflow"),v+=l*o,!(l<(u=a<=y?1:a>=y+26?26:a-y));a+=36)o>f(c/(d=36-u))&&g("overflow"),o*=d;y=w(v-s,t=p.length+1,0==s),f(v/t)>c-_&&g("overflow"),_+=f(v/t),v%=t,p.splice(v++,0,_)}return b(p)}function x(e){var t,n,r,i,s,o,a,l,u,d,h,m,v,b,S,x=[];for(m=(e=_(e)).length,t=128,n=0,s=72,o=0;o<m;++o)(h=e[o])<128&&x.push(p(h));for(r=i=x.length,i&&x.push("-");r<m;){for(a=c,o=0;o<m;++o)(h=e[o])>=t&&h<a&&(a=h);for(a-t>f((c-n)/(v=r+1))&&g("overflow"),n+=(a-t)*v,t=a,o=0;o<m;++o)if((h=e[o])<t&&++n>c&&g("overflow"),h==t){for(l=n,u=36;!(l<(d=u<=s?1:u>=s+26?26:u-s));u+=36)S=l-d,b=36-d,x.push(p(y(d+S%b,0))),l=f(S/b);x.push(p(y(l,0))),s=w(n,v,r==i),n=0,++r}++n,++t}return x.join("")}a={version:"1.3.2",ucs2:{decode:_,encode:b},decode:S,encode:x,toASCII:function(e){return v(e,(function(e){return u.test(e)?"xn--"+x(e):e}))},toUnicode:function(e){return v(e,(function(e){return l.test(e)?S(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return a}.call(t,n,t,e))||(e.exports=i)}()}).call(this,n(36)(e),n(11))},function(e,t,n){var r,i; +!function(n,r){var i=Array.prototype,o=Object.prototype,s=i.slice,a=o.hasOwnProperty,c=i.forEach,l={},u={forEach:function(e,t,n){var r,i,o;if(null!==e)if(c&&e.forEach===c)e.forEach(t,n);else if(e.length===+e.length){for(r=0,i=e.length;r<i;r++)if(r in e&&t.call(n,e[r],r,e)===l)return}else for(o in e)if(a.call(e,o)&&t.call(n,e[o],o,e)===l)return},extend:function(e){return this.forEach(s.call(arguments,1),(function(t){for(var n in t)e[n]=t[n]})),e}},d=function(e){if(this.defaults={locale_data:{messages:{"":{domain:"messages",lang:"en",plural_forms:"nplurals=2; plural=(n != 1);"}}},domain:"messages",debug:!1},this.options=u.extend({},this.defaults,e),this.textdomain(this.options.domain),e.domain&&!this.options.locale_data[this.options.domain])throw new Error("Text domain set to non-existent domain: `"+e.domain+"`")};function h(e){return d.PF.compile(e||"nplurals=2; plural=(n != 1);")}function f(e,t){this._key=e,this._i18n=t}d.context_delimiter=String.fromCharCode(4),u.extend(f.prototype,{onDomain:function(e){return this._domain=e,this},withContext:function(e){return this._context=e,this},ifPlural:function(e,t){return this._val=e,this._pkey=t,this},fetch:function(e){return"[object Array]"!={}.toString.call(e)&&(e=[].slice.call(arguments,0)),(e&&e.length?d.sprintf:function(e){return e})(this._i18n.dcnpgettext(this._domain,this._context,this._key,this._pkey,this._val),e)}}),u.extend(d.prototype,{translate:function(e){return new f(e,this)},textdomain:function(e){if(!e)return this._textdomain;this._textdomain=e},gettext:function(e){return this.dcnpgettext.call(this,void 0,void 0,e)},dgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},dcgettext:function(e,t){return this.dcnpgettext.call(this,e,void 0,t)},ngettext:function(e,t,n){return this.dcnpgettext.call(this,void 0,void 0,e,t,n)},dngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},dcngettext:function(e,t,n,r){return this.dcnpgettext.call(this,e,void 0,t,n,r)},pgettext:function(e,t){return this.dcnpgettext.call(this,void 0,e,t)},dpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},dcpgettext:function(e,t,n){return this.dcnpgettext.call(this,e,t,n)},npgettext:function(e,t,n,r){return this.dcnpgettext.call(this,void 0,e,t,n,r)},dnpgettext:function(e,t,n,r,i){return this.dcnpgettext.call(this,e,t,n,r,i)},dcnpgettext:function(e,t,n,r,i){var o;if(r=r||n,e=e||this._textdomain,!this.options)return(o=new d).dcnpgettext.call(o,void 0,void 0,n,r,i);if(!this.options.locale_data)throw new Error("No locale data provided.");if(!this.options.locale_data[e])throw new Error("Domain `"+e+"` was not found.");if(!this.options.locale_data[e][""])throw new Error("No locale meta information provided.");if(!n)throw new Error("No translation key found.");var s,a,c,l=t?t+d.context_delimiter+n:n,u=this.options.locale_data,f=u[e],p=(u.messages||this.defaults.locale_data.messages)[""],g=f[""].plural_forms||f[""]["Plural-Forms"]||f[""]["plural-forms"]||p.plural_forms||p["Plural-Forms"]||p["plural-forms"];if(void 0===i)c=0;else{if("number"!=typeof i&&(i=parseInt(i,10),isNaN(i)))throw new Error("The number that was passed in is not a number.");c=h(g)(i)}if(!f)throw new Error("No domain named `"+e+"` could be found.");return!(s=f[l])||c>s.length?(this.options.missing_key_callback&&this.options.missing_key_callback(l,e),a=[n,r],!0===this.options.debug&&console.log(a[h(g)(i)]),a[h()(i)]):(a=s[c])||(a=[n,r])[h()(i)]}});var p,g,m=function(){function e(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function t(e,t){for(var n=[];t>0;n[--t]=e);return n.join("")}var n=function(){return n.cache.hasOwnProperty(arguments[0])||(n.cache[arguments[0]]=n.parse(arguments[0])),n.format.call(null,n.cache[arguments[0]],arguments)};return n.format=function(n,r){var i,o,s,a,c,l,u,d=1,h=n.length,f="",p=[];for(o=0;o<h;o++)if("string"===(f=e(n[o])))p.push(n[o]);else if("array"===f){if((a=n[o])[2])for(i=r[d],s=0;s<a[2].length;s++){if(!i.hasOwnProperty(a[2][s]))throw m('[sprintf] property "%s" does not exist',a[2][s]);i=i[a[2][s]]}else i=a[1]?r[a[1]]:r[d++];if(/[^s]/.test(a[8])&&"number"!=e(i))throw m("[sprintf] expecting number but found %s",e(i));switch(null==i&&(i=""),a[8]){case"b":i=i.toString(2);break;case"c":i=String.fromCharCode(i);break;case"d":i=parseInt(i,10);break;case"e":i=a[7]?i.toExponential(a[7]):i.toExponential();break;case"f":i=a[7]?parseFloat(i).toFixed(a[7]):parseFloat(i);break;case"o":i=i.toString(8);break;case"s":i=(i=String(i))&&a[7]?i.substring(0,a[7]):i;break;case"u":i=Math.abs(i);break;case"x":i=i.toString(16);break;case"X":i=i.toString(16).toUpperCase()}i=/[def]/.test(a[8])&&a[3]&&i>=0?"+"+i:i,l=a[4]?"0"==a[4]?"0":a[4].charAt(1):" ",u=a[6]-String(i).length,c=a[6]?t(l,u):"",p.push(a[5]?i+c:c+i)}return p.join("")},n.cache={},n.parse=function(e){for(var t=e,n=[],r=[],i=0;t;){if(null!==(n=/^[^\x25]+/.exec(t)))r.push(n[0]);else if(null!==(n=/^\x25{2}/.exec(t)))r.push("%");else{if(null===(n=/^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(t)))throw"[sprintf] huh?";if(n[2]){i|=1;var o=[],s=n[2],a=[];if(null===(a=/^([a-z_][a-z_\d]*)/i.exec(s)))throw"[sprintf] huh?";for(o.push(a[1]);""!==(s=s.substring(a[0].length));)if(null!==(a=/^\.([a-z_][a-z_\d]*)/i.exec(s)))o.push(a[1]);else{if(null===(a=/^\[(\d+)\]/.exec(s)))throw"[sprintf] huh?";o.push(a[1])}n[2]=o}else i|=2;if(3===i)throw"[sprintf] mixing positional and named placeholders is not (yet) supported";r.push(n)}t=t.substring(n[0].length)}return r},n}(),v=function(e,t){return t.unshift(e),m.apply(null,t)};d.parse_plural=function(e,t){return e=e.replace(/n/g,t),d.parse_expression(e)},d.sprintf=function(e,t){return"[object Array]"=={}.toString.call(t)?v(e,[].slice.call(t)):m.apply(this,[].slice.call(arguments))},d.prototype.sprintf=function(){return d.sprintf.apply(this,arguments)},(d.PF={}).parse=function(e){var t=d.PF.extractPluralExpr(e);return d.PF.parser.parse.call(d.PF.parser,t)},d.PF.compile=function(e){var t=d.PF.parse(e);return function(e){return!0===(n=d.PF.interpreter(t)(e))?1:n||0;var n}},d.PF.interpreter=function(e){return function(t){switch(e.type){case"GROUP":return d.PF.interpreter(e.expr)(t);case"TERNARY":return d.PF.interpreter(e.expr)(t)?d.PF.interpreter(e.truthy)(t):d.PF.interpreter(e.falsey)(t);case"OR":return d.PF.interpreter(e.left)(t)||d.PF.interpreter(e.right)(t);case"AND":return d.PF.interpreter(e.left)(t)&&d.PF.interpreter(e.right)(t);case"LT":return d.PF.interpreter(e.left)(t)<d.PF.interpreter(e.right)(t);case"GT":return d.PF.interpreter(e.left)(t)>d.PF.interpreter(e.right)(t);case"LTE":return d.PF.interpreter(e.left)(t)<=d.PF.interpreter(e.right)(t);case"GTE":return d.PF.interpreter(e.left)(t)>=d.PF.interpreter(e.right)(t);case"EQ":return d.PF.interpreter(e.left)(t)==d.PF.interpreter(e.right)(t);case"NEQ":return d.PF.interpreter(e.left)(t)!=d.PF.interpreter(e.right)(t);case"MOD":return d.PF.interpreter(e.left)(t)%d.PF.interpreter(e.right)(t);case"VAR":return t;case"NUM":return e.val;default:throw new Error("Invalid Token found.")}}},d.PF.extractPluralExpr=function(e){e=e.replace(/^\s\s*/,"").replace(/\s\s*$/,""),/;\s*$/.test(e)||(e=e.concat(";"));var t,n=/nplurals\=(\d+);/,r=e.match(n);if(!(r.length>1))throw new Error("nplurals not found in plural_forms string: "+e);if(r[1],!((t=(e=e.replace(n,"")).match(/plural\=(.*);/))&&t.length>1))throw new Error("`plural` expression not found: "+e);return t[1]},d.PF.parser=(p={trace:function(){},yy:{},symbols_:{error:2,expressions:3,e:4,EOF:5,"?":6,":":7,"||":8,"&&":9,"<":10,"<=":11,">":12,">=":13,"!=":14,"==":15,"%":16,"(":17,")":18,n:19,NUMBER:20,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",6:"?",7:":",8:"||",9:"&&",10:"<",11:"<=",12:">",13:">=",14:"!=",15:"==",16:"%",17:"(",18:")",19:"n",20:"NUMBER"},productions_:[0,[3,2],[4,5],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,3],[4,1],[4,1]],performAction:function(e,t,n,r,i,o,s){var a=o.length-1;switch(i){case 1:return{type:"GROUP",expr:o[a-1]};case 2:this.$={type:"TERNARY",expr:o[a-4],truthy:o[a-2],falsey:o[a]};break;case 3:this.$={type:"OR",left:o[a-2],right:o[a]};break;case 4:this.$={type:"AND",left:o[a-2],right:o[a]};break;case 5:this.$={type:"LT",left:o[a-2],right:o[a]};break;case 6:this.$={type:"LTE",left:o[a-2],right:o[a]};break;case 7:this.$={type:"GT",left:o[a-2],right:o[a]};break;case 8:this.$={type:"GTE",left:o[a-2],right:o[a]};break;case 9:this.$={type:"NEQ",left:o[a-2],right:o[a]};break;case 10:this.$={type:"EQ",left:o[a-2],right:o[a]};break;case 11:this.$={type:"MOD",left:o[a-2],right:o[a]};break;case 12:this.$={type:"GROUP",expr:o[a-1]};break;case 13:this.$={type:"VAR"};break;case 14:this.$={type:"NUM",val:Number(e)}}},table:[{3:1,4:2,17:[1,3],19:[1,4],20:[1,5]},{1:[3]},{5:[1,6],6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{4:17,17:[1,3],19:[1,4],20:[1,5]},{5:[2,13],6:[2,13],7:[2,13],8:[2,13],9:[2,13],10:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13],15:[2,13],16:[2,13],18:[2,13]},{5:[2,14],6:[2,14],7:[2,14],8:[2,14],9:[2,14],10:[2,14],11:[2,14],12:[2,14],13:[2,14],14:[2,14],15:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{4:18,17:[1,3],19:[1,4],20:[1,5]},{4:19,17:[1,3],19:[1,4],20:[1,5]},{4:20,17:[1,3],19:[1,4],20:[1,5]},{4:21,17:[1,3],19:[1,4],20:[1,5]},{4:22,17:[1,3],19:[1,4],20:[1,5]},{4:23,17:[1,3],19:[1,4],20:[1,5]},{4:24,17:[1,3],19:[1,4],20:[1,5]},{4:25,17:[1,3],19:[1,4],20:[1,5]},{4:26,17:[1,3],19:[1,4],20:[1,5]},{4:27,17:[1,3],19:[1,4],20:[1,5]},{6:[1,7],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[1,28]},{6:[1,7],7:[1,29],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16]},{5:[2,3],6:[2,3],7:[2,3],8:[2,3],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,3]},{5:[2,4],6:[2,4],7:[2,4],8:[2,4],9:[2,4],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,4]},{5:[2,5],6:[2,5],7:[2,5],8:[2,5],9:[2,5],10:[2,5],11:[2,5],12:[2,5],13:[2,5],14:[2,5],15:[2,5],16:[1,16],18:[2,5]},{5:[2,6],6:[2,6],7:[2,6],8:[2,6],9:[2,6],10:[2,6],11:[2,6],12:[2,6],13:[2,6],14:[2,6],15:[2,6],16:[1,16],18:[2,6]},{5:[2,7],6:[2,7],7:[2,7],8:[2,7],9:[2,7],10:[2,7],11:[2,7],12:[2,7],13:[2,7],14:[2,7],15:[2,7],16:[1,16],18:[2,7]},{5:[2,8],6:[2,8],7:[2,8],8:[2,8],9:[2,8],10:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[1,16],18:[2,8]},{5:[2,9],6:[2,9],7:[2,9],8:[2,9],9:[2,9],10:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[1,16],18:[2,9]},{5:[2,10],6:[2,10],7:[2,10],8:[2,10],9:[2,10],10:[2,10],11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[2,10],16:[1,16],18:[2,10]},{5:[2,11],6:[2,11],7:[2,11],8:[2,11],9:[2,11],10:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11],15:[2,11],16:[2,11],18:[2,11]},{5:[2,12],6:[2,12],7:[2,12],8:[2,12],9:[2,12],10:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12],15:[2,12],16:[2,12],18:[2,12]},{4:30,17:[1,3],19:[1,4],20:[1,5]},{5:[2,2],6:[1,7],7:[2,2],8:[1,8],9:[1,9],10:[1,10],11:[1,11],12:[1,12],13:[1,13],14:[1,14],15:[1,15],16:[1,16],18:[2,2]}],defaultActions:{6:[2,1]},parseError:function(e,t){throw new Error(e)},parse:function(e){var t=this,n=[0],r=[null],i=[],o=this.table,s="",a=0,c=0,l=0;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;function d(){var e;return"number"!=typeof(e=t.lexer.lex()||1)&&(e=t.symbols_[e]||e),e}i.push(u),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var h,f,p,g,m,v,_,b,y,w,S={};;){if(p=n[n.length-1],this.defaultActions[p]?g=this.defaultActions[p]:(null==h&&(h=d()),g=o[p]&&o[p][h]),void 0===g||!g.length||!g[0]){if(!l){for(v in y=[],o[p])this.terminals_[v]&&v>2&&y.push("'"+this.terminals_[v]+"'");var x="";x=this.lexer.showPosition?"Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+y.join(", ")+", got '"+this.terminals_[h]+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==h?"end of input":"'"+(this.terminals_[h]||h)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[h]||h,line:this.lexer.yylineno,loc:u,expected:y})}if(3==l){if(1==h)throw new Error(x||"Parsing halted.");c=this.lexer.yyleng,s=this.lexer.yytext,a=this.lexer.yylineno,u=this.lexer.yylloc,h=d()}for(;!(2..toString()in o[p]);){if(0==p)throw new Error(x||"Parsing halted.");w=1,n.length=n.length-2*w,r.length=r.length-w,i.length=i.length-w,p=n[n.length-1]}f=h,h=2,g=o[p=n[n.length-1]]&&o[p][2],l=3}if(g[0]instanceof Array&&g.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+h);switch(g[0]){case 1:n.push(h),r.push(this.lexer.yytext),i.push(this.lexer.yylloc),n.push(g[1]),h=null,f?(h=f,f=null):(c=this.lexer.yyleng,s=this.lexer.yytext,a=this.lexer.yylineno,u=this.lexer.yylloc,l>0&&l--);break;case 2:if(_=this.productions_[g[1]][1],S.$=r[r.length-_],S._$={first_line:i[i.length-(_||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(_||1)].first_column,last_column:i[i.length-1].last_column},void 0!==(m=this.performAction.call(S,s,c,a,this.yy,g[1],r,i)))return m;_&&(n=n.slice(0,-1*_*2),r=r.slice(0,-1*_),i=i.slice(0,-1*_)),n.push(this.productions_[g[1]][0]),r.push(S.$),i.push(S._$),b=o[n[n.length-2]][n[n.length-1]],n.push(b);break;case 3:return!0}}return!0}},g=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parseError)throw new Error(e);this.yy.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.match+=e,this.matched+=e,e.match(/\n/)&&this.yylineno++,this._input=this._input.slice(1),e},unput:function(e){return this._input=e+this._input,this},more:function(){return this._more=!0,this},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},next:function(){if(this.done)return this.EOF;var e,t;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;r<n.length;r++)if(e=this._input.match(this.rules[n[r]]))return(t=e[0].match(/\n.*/g))&&(this.yylineno+=t.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:t?t[t.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],this.performAction.call(this,this.yy,this,n[r],this.conditionStack[this.conditionStack.length-1])||void 0;if(""===this._input)return this.EOF;this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return void 0!==e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(e){this.begin(e)},performAction:function(e,t,n,r){switch(n){case 0:break;case 1:return 20;case 2:return 19;case 3:return 8;case 4:return 9;case 5:return 6;case 6:return 7;case 7:return 11;case 8:return 13;case 9:return 10;case 10:return 12;case 11:return 14;case 12:return 15;case 13:return 16;case 14:return 17;case 15:return 18;case 16:return 5;case 17:return"INVALID"}},rules:[/^\s+/,/^[0-9]+(\.[0-9]+)?\b/,/^n\b/,/^\|\|/,/^&&/,/^\?/,/^:/,/^<=/,/^>=/,/^</,/^>/,/^!=/,/^==/,/^%/,/^\(/,/^\)/,/^$/,/^./],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17],inclusive:!0}}};return e}(),p.lexer=g,p),e.exports&&(t=e.exports=d),t.Jed=d}()},function(e,t,n){"use strict";var r=n(15),i=n(0);i.e.Websocket=class{constructor(e){this._conn=e,this.strip="wrapper";const t=e.service;if(0!==t.indexOf("ws:")&&0!==t.indexOf("wss:")){let n="";"ws"===e.options.protocol&&"https:"!==window.location.protocol?n+="ws":n+="wss",n+="://"+window.location.host,0!==t.indexOf("/")?n+=window.location.pathname+t:n+=t,e.service=n}}_buildStream(){return Object(i.a)("open",{xmlns:i.e.NS.FRAMING,to:this._conn.domain,version:"1.0"})}_checkStreamError(e,t){let n;if(n=e.getElementsByTagNameNS?e.getElementsByTagNameNS(i.e.NS.STREAM,"error"):e.getElementsByTagName("stream:error"),0===n.length)return!1;const r=n[0];let o="",s="";for(let e=0;e<r.childNodes.length;e++){const t=r.childNodes[e];if("urn:ietf:params:xml:ns:xmpp-streams"!==t.getAttribute("xmlns"))break;"text"===t.nodeName?s=t.textContent:o=t.nodeName}let a="WebSocket stream error: ";return a+=o||"unknown",s&&(a+=" - "+s),i.e.error(a),this._conn._changeConnectStatus(t,o),this._conn._doDisconnect(),!0}_reset(){}_connect(){this._closeSocket(),this.socket=new WebSocket(this._conn.service,"xmpp"),this.socket.onopen=()=>this._onOpen(),this.socket.onerror=e=>this._onError(e),this.socket.onclose=e=>this._onClose(e),this.socket.onmessage=e=>this._onInitialMessage(e)}_connect_cb(e){if(this._checkStreamError(e,i.e.Status.CONNFAIL))return i.e.Status.CONNFAIL}_handleStreamStart(e){let t=!1;const n=e.getAttribute("xmlns");"string"!=typeof n?t="Missing xmlns in <open />":n!==i.e.NS.FRAMING&&(t="Wrong xmlns in <open />: "+n);const r=e.getAttribute("version");return"string"!=typeof r?t="Missing version in <open />":"1.0"!==r&&(t="Wrong version in <open />: "+r),!t||(this._conn._changeConnectStatus(i.e.Status.CONNFAIL,t),this._conn._doDisconnect(),!1)}_onInitialMessage(e){if(0===e.data.indexOf("<open ")||0===e.data.indexOf("<?xml")){const t=e.data.replace(/^(<\?.*?\?>\s*)*/,"");if(""===t)return;const n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn.xmlInput(n),this._conn.rawInput(e.data),this._handleStreamStart(n)&&this._connect_cb(n)}else if(0===e.data.indexOf("<close ")){const t=(new r.a).parseFromString(e.data,"text/xml").documentElement;this._conn.xmlInput(t),this._conn.rawInput(e.data);const n=t.getAttribute("see-other-uri");if(n){const e=this._conn.service;(e.indexOf("wss:")>=0&&n.indexOf("wss:")>=0||e.indexOf("ws:")>=0)&&(this._conn._changeConnectStatus(i.e.Status.REDIRECT,"Received see-other-uri, resetting connection"),this._conn.reset(),this._conn.service=n,this._connect())}else this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"Received closing stream"),this._conn._doDisconnect()}else{this._replaceMessageHandler();const t=this._streamWrap(e.data),n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn._connect_cb(n,null,e.data)}}_replaceMessageHandler(){this.socket.onmessage=e=>this._onMessage(e)}_disconnect(e){if(this.socket&&this.socket.readyState!==WebSocket.CLOSED){e&&this._conn.send(e);const t=Object(i.a)("close",{xmlns:i.e.NS.FRAMING});this._conn.xmlOutput(t.tree());const n=i.e.serialize(t);this._conn.rawOutput(n);try{this.socket.send(n)}catch(e){i.e.warn("Couldn't send <close /> tag.")}}this._conn._doDisconnect()}_doDisconnect(){i.e.debug("WebSockets _doDisconnect was called"),this._closeSocket()}_streamWrap(e){return"<wrapper>"+e+"</wrapper>"}_closeSocket(){if(this.socket)try{this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket.close()}catch(e){i.e.debug(e.message)}this.socket=null}_emptyQueue(){return!0}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(i.e.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected&&this.socket?(i.e.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):i.e.debug("Websocket closed")}_no_auth_received(e){i.e.error("Server did not offer a supported authentication mechanism"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,i.e.ErrorCondition.NO_AUTH_MECH),e&&e.call(this._conn),this._conn._doDisconnect()}_onDisconnectTimeout(){}_abortAllRequests(){}_onError(e){i.e.error("Websocket error "+e),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._disconnect()}_onIdle(){const e=this._conn._data;if(e.length>0&&!this._conn.paused){for(let t=0;t<e.length;t++)if(null!==e[t]){let n;n="restart"===e[t]?this._buildStream().tree():e[t];const r=i.e.serialize(n);this._conn.xmlOutput(n),this._conn.rawOutput(r),this.socket.send(r)}this._conn._data=[]}}_onMessage(e){let t;const n='<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';if(e.data===n)return this._conn.rawInput(n),this._conn.xmlInput(e),void(this._conn.disconnecting||this._conn._doDisconnect());if(0===e.data.search("<open ")){if(t=(new r.a).parseFromString(e.data,"text/xml").documentElement,!this._handleStreamStart(t))return}else{const n=this._streamWrap(e.data);t=(new r.a).parseFromString(n,"text/xml").documentElement}return this._checkStreamError(t,i.e.Status.ERROR)?void 0:this._conn.disconnecting&&"presence"===t.firstChild.nodeName&&"unavailable"===t.firstChild.getAttribute("type")?(this._conn.xmlInput(t),void this._conn.rawInput(i.e.serialize(t))):void this._conn._dataRecv(t,e.data)}_onOpen(){i.e.debug("Websocket open");const e=this._buildStream();this._conn.xmlOutput(e.tree());const t=i.e.serialize(e);this._conn.rawOutput(t),this.socket.send(t)}_reqToData(e){return e}_send(){this._conn.flush()}_sendRestart(){clearTimeout(this._conn._idleTimeout),this._conn._onIdle.bind(this._conn)()}}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){var r=n(333);e.exports=function(e){var t=r(e),n=t%1;return t==t?n?t-n:t:0}},function(e,t){e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},function(e,t){e.exports=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}},function(e,t,n){var r=n(20),i=Object.create,o=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();e.exports=o},function(e,t,n){var r=n(74),i=n(76);function o(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}o.prototype=r(i.prototype),o.prototype.constructor=o,e.exports=o},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e){return e.placeholder}},function(e,t,n){var r=n(26)(n(11),"Map");e.exports=r},function(e,t,n){var r=n(398),i=n(405),o=n(407),s=n(408),a=n(409);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=s,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(57),i=n(39);e.exports=function(e,t){for(var n=0,o=(t=r(t,e)).length;null!=e&&n<o;)e=e[i(t[n++])];return n&&n==o?e:void 0}},function(e,t,n){var r=n(16),i=n(48),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,s=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(s.test(e)||!o.test(e)||null!=t&&e in Object(t))}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(41),i=n(13).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(457),i=n(84);e.exports=function(e){return r(i(e))}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(144)("keys"),i=n(145);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t){e.exports=!0},function(e,t,n){e.exports={default:n(465),__esModule:!0}},function(e,t,n){var r=n(40).f,i=n(60),o=n(17)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(59);function i(e){var t,n;this.promise=new e((function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)}e.exports.f=function(e){return new i(e)}},function(e,t,n){var r=n(367),i=n(33);e.exports=function(e){return null==e?[]:r(e,i(e))}},function(e,t,n){var r=n(109),i=n(368),o=n(77),s=n(52),a=r((function(e,t){var n=s(t,o(a));return i(e,32,void 0,t,n)}));a.placeholder={},e.exports=a},function(e,t,n){var r;!function(){"use strict";var i={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function o(e){return a(l(e),arguments)}function s(e,t){return o.apply(null,[e].concat(t||[]))}function a(e,t){var n,r,s,a,c,l,u,d,h,f=1,p=e.length,g="";for(r=0;r<p;r++)if("string"==typeof e[r])g+=e[r];else if("object"==typeof e[r]){if((a=e[r]).keys)for(n=t[f],s=0;s<a.keys.length;s++){if(null==n)throw new Error(o('[sprintf] Cannot access property "%s" of undefined value "%s"',a.keys[s],a.keys[s-1]));n=n[a.keys[s]]}else n=a.param_no?t[a.param_no]:t[f++];if(i.not_type.test(a.type)&&i.not_primitive.test(a.type)&&n instanceof Function&&(n=n()),i.numeric_arg.test(a.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(o("[sprintf] expecting number but found %T",n));switch(i.number.test(a.type)&&(d=n>=0),a.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,a.width?parseInt(a.width):0);break;case"e":n=a.precision?parseFloat(n).toExponential(a.precision):parseFloat(n).toExponential();break;case"f":n=a.precision?parseFloat(n).toFixed(a.precision):parseFloat(n);break;case"g":n=a.precision?String(Number(n.toPrecision(a.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=a.precision?n.substring(0,a.precision):n;break;case"t":n=String(!!n),n=a.precision?n.substring(0,a.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=a.precision?n.substring(0,a.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=a.precision?n.substring(0,a.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}i.json.test(a.type)?g+=n:(!i.number.test(a.type)||d&&!a.sign?h="":(h=d?"+":"-",n=n.toString().replace(i.sign,"")),l=a.pad_char?"0"===a.pad_char?"0":a.pad_char.charAt(1):" ",u=a.width-(h+n).length,c=a.width&&u>0?l.repeat(u):"",g+=a.align?h+n+c:"0"===l?h+c+n:c+h+n)}return g}var c=Object.create(null);function l(e){if(c[e])return c[e];for(var t,n=e,r=[],o=0;n;){if(null!==(t=i.text.exec(n)))r.push(t[0]);else if(null!==(t=i.modulo.exec(n)))r.push("%");else{if(null===(t=i.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){o|=1;var s=[],a=t[2],l=[];if(null===(l=i.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(l[1]);""!==(a=a.substring(l[0].length));)if(null!==(l=i.key_access.exec(a)))s.push(l[1]);else{if(null===(l=i.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(l[1])}t[2]=s}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return c[e]=r}t.sprintf=o,t.vsprintf=s,"undefined"!=typeof window&&(window.sprintf=o,window.vsprintf=s,void 0===(r=function(){return{sprintf:o,vsprintf:s}}.call(t,n,t,e))||(e.exports=r))}()},function(e,t){function n(e,t){for(var n in e)t[n]=e[n]}function r(e,t){var r=e.prototype;if(Object.create){var i=Object.create(t.prototype);r.__proto__=i}if(!(r instanceof t)){function o(){}o.prototype=t.prototype,n(r,o=new o),e.prototype=r=o}r.constructor!=e&&("function"!=typeof e&&console.error("unknow Class:"+e),r.constructor=e)}var i={},o=i.ELEMENT_NODE=1,s=i.ATTRIBUTE_NODE=2,a=i.TEXT_NODE=3,c=i.CDATA_SECTION_NODE=4,l=i.ENTITY_REFERENCE_NODE=5,u=i.ENTITY_NODE=6,d=i.PROCESSING_INSTRUCTION_NODE=7,h=i.COMMENT_NODE=8,f=i.DOCUMENT_NODE=9,p=i.DOCUMENT_TYPE_NODE=10,g=i.DOCUMENT_FRAGMENT_NODE=11,m=i.NOTATION_NODE=12,v={},_={},b=(v.INDEX_SIZE_ERR=(_[1]="Index size error",1),v.DOMSTRING_SIZE_ERR=(_[2]="DOMString size error",2),v.HIERARCHY_REQUEST_ERR=(_[3]="Hierarchy request error",3)),y=(v.WRONG_DOCUMENT_ERR=(_[4]="Wrong document",4),v.INVALID_CHARACTER_ERR=(_[5]="Invalid character",5),v.NO_DATA_ALLOWED_ERR=(_[6]="No data allowed",6),v.NO_MODIFICATION_ALLOWED_ERR=(_[7]="No modification allowed",7),v.NOT_FOUND_ERR=(_[8]="Not found",8)),w=(v.NOT_SUPPORTED_ERR=(_[9]="Not supported",9),v.INUSE_ATTRIBUTE_ERR=(_[10]="Attribute in use",10));v.INVALID_STATE_ERR=(_[11]="Invalid state",11),v.SYNTAX_ERR=(_[12]="Syntax error",12),v.INVALID_MODIFICATION_ERR=(_[13]="Invalid modification",13),v.NAMESPACE_ERR=(_[14]="Invalid namespace",14),v.INVALID_ACCESS_ERR=(_[15]="Invalid access",15);function S(e,t){if(t instanceof Error)var n=t;else n=this,Error.call(this,_[e]),this.message=_[e],Error.captureStackTrace&&Error.captureStackTrace(this,S);return n.code=e,t&&(this.message=this.message+": "+t),n}function x(){}function E(e,t){this._node=e,this._refresh=t,A(this)}function A(e){var t=e._node._inc||e._node.ownerDocument._inc;if(e._inc!=t){var r=e._refresh(e._node);te(e,"length",r.length),n(r,e),e._inc=t}}function C(){}function j(e,t){for(var n=e.length;n--;)if(e[n]===t)return n}function T(e,t,n,r){if(r?t[j(t,r)]=n:t[t.length++]=n,e){n.ownerElement=e;var i=e.ownerDocument;i&&(r&&D(i,e,r),function(e,t,n){e&&e._inc++,"http://www.w3.org/2000/xmlns/"==n.namespaceURI&&(t._nsMap[n.prefix?n.localName:""]=n.value)}(i,e,n))}}function O(e,t,n){var r=j(t,n);if(!(r>=0))throw S(y,new Error(e.tagName+"@"+n));for(var i=t.length-1;r<i;)t[r]=t[++r];if(t.length=i,e){var o=e.ownerDocument;o&&(D(o,e,n),n.ownerElement=null)}}function k(e){if(this._features={},e)for(var t in e)this._features=e[t]}function N(){}function I(e){return("<"==e?"<":">"==e&&">")||"&"==e&&"&"||'"'==e&&"""||"&#"+e.charCodeAt()+";"}function M(e,t){if(t(e))return!0;if(e=e.firstChild)do{if(M(e,t))return!0}while(e=e.nextSibling)}function R(){}function D(e,t,n,r){e&&e._inc++,"http://www.w3.org/2000/xmlns/"==n.namespaceURI&&delete t._nsMap[n.prefix?n.localName:""]}function P(e,t,n){if(e&&e._inc){e._inc++;var r=t.childNodes;if(n)r[r.length++]=n;else{for(var i=t.firstChild,o=0;i;)r[o++]=i,i=i.nextSibling;r.length=o}}}function L(e,t){var n=t.previousSibling,r=t.nextSibling;return n?n.nextSibling=r:e.firstChild=r,r?r.previousSibling=n:e.lastChild=n,P(e.ownerDocument,e),t}function z(e,t,n){var r=t.parentNode;if(r&&r.removeChild(t),t.nodeType===g){var i=t.firstChild;if(null==i)return t;var o=t.lastChild}else i=o=t;var s=n?n.previousSibling:e.lastChild;i.previousSibling=s,o.nextSibling=n,s?s.nextSibling=i:e.firstChild=i,null==n?e.lastChild=o:n.previousSibling=o;do{i.parentNode=e}while(i!==o&&(i=i.nextSibling));return P(e.ownerDocument||e,e),t.nodeType==g&&(t.firstChild=t.lastChild=null),t}function F(){this._nsMap={}}function B(){}function q(){}function H(){}function U(){}function $(){}function W(){}function G(){}function V(){}function J(){}function X(){}function Q(){}function Y(){}function K(e,t){var n=[],r=9==this.nodeType?this.documentElement:this,i=r.prefix,o=r.namespaceURI;if(o&&null==i&&null==(i=r.lookupPrefix(o)))var s=[{namespace:o,prefix:null}];return ee(this,n,e,t,s),n.join("")}function Z(e,t,n){var r=e.prefix||"",i=e.namespaceURI;if(!r&&!i)return!1;if("xml"===r&&"http://www.w3.org/XML/1998/namespace"===i||"http://www.w3.org/2000/xmlns/"==i)return!1;for(var o=n.length;o--;){var s=n[o];if(s.prefix==r)return s.namespace!=i}return!0}function ee(e,t,n,r,i){if(r){if(!(e=r(e)))return;if("string"==typeof e)return void t.push(e)}switch(e.nodeType){case o:i||(i=[]);i.length;var u=e.attributes,m=u.length,v=e.firstChild,_=e.tagName;n="http://www.w3.org/1999/xhtml"===e.namespaceURI||n,t.push("<",_);for(var b=0;b<m;b++){"xmlns"==(y=u.item(b)).prefix?i.push({prefix:y.localName,namespace:y.value}):"xmlns"==y.nodeName&&i.push({prefix:"",namespace:y.value})}for(b=0;b<m;b++){var y;if(Z(y=u.item(b),0,i)){var w=y.prefix||"",S=y.namespaceURI,x=w?" xmlns:"+w:" xmlns";t.push(x,'="',S,'"'),i.push({prefix:w,namespace:S})}ee(y,t,n,r,i)}if(Z(e,0,i)){w=e.prefix||"",S=e.namespaceURI,x=w?" xmlns:"+w:" xmlns";t.push(x,'="',S,'"'),i.push({prefix:w,namespace:S})}if(v||n&&!/^(?:meta|link|img|br|hr|input)$/i.test(_)){if(t.push(">"),n&&/^script$/i.test(_))for(;v;)v.data?t.push(v.data):ee(v,t,n,r,i),v=v.nextSibling;else for(;v;)ee(v,t,n,r,i),v=v.nextSibling;t.push("</",_,">")}else t.push("/>");return;case f:case g:for(v=e.firstChild;v;)ee(v,t,n,r,i),v=v.nextSibling;return;case s:return t.push(" ",e.name,'="',e.value.replace(/[<&"]/g,I),'"');case a:return t.push(e.data.replace(/[<&]/g,I));case c:return t.push("<![CDATA[",e.data,"]]>");case h:return t.push("\x3c!--",e.data,"--\x3e");case p:var E=e.publicId,A=e.systemId;if(t.push("<!DOCTYPE ",e.name),E)t.push(' PUBLIC "',E),A&&"."!=A&&t.push('" "',A),t.push('">');else if(A&&"."!=A)t.push(' SYSTEM "',A,'">');else{var C=e.internalSubset;C&&t.push(" [",C,"]"),t.push(">")}return;case d:return t.push("<?",e.target," ",e.data,"?>");case l:return t.push("&",e.nodeName,";");default:t.push("??",e.nodeName)}}function te(e,t,n){e[t]=n}S.prototype=Error.prototype,n(v,S),x.prototype={length:0,item:function(e){return this[e]||null},toString:function(e,t){for(var n=[],r=0;r<this.length;r++)ee(this[r],n,e,t);return n.join("")}},E.prototype.item=function(e){return A(this),this[e]},r(E,x),C.prototype={length:0,item:x.prototype.item,getNamedItem:function(e){for(var t=this.length;t--;){var n=this[t];if(n.nodeName==e)return n}},setNamedItem:function(e){var t=e.ownerElement;if(t&&t!=this._ownerElement)throw new S(w);var n=this.getNamedItem(e.nodeName);return T(this._ownerElement,this,e,n),n},setNamedItemNS:function(e){var t,n=e.ownerElement;if(n&&n!=this._ownerElement)throw new S(w);return t=this.getNamedItemNS(e.namespaceURI,e.localName),T(this._ownerElement,this,e,t),t},removeNamedItem:function(e){var t=this.getNamedItem(e);return O(this._ownerElement,this,t),t},removeNamedItemNS:function(e,t){var n=this.getNamedItemNS(e,t);return O(this._ownerElement,this,n),n},getNamedItemNS:function(e,t){for(var n=this.length;n--;){var r=this[n];if(r.localName==t&&r.namespaceURI==e)return r}return null}},k.prototype={hasFeature:function(e,t){var n=this._features[e.toLowerCase()];return!(!n||t&&!(t in n))},createDocument:function(e,t,n){var r=new R;if(r.implementation=this,r.childNodes=new x,r.doctype=n,n&&r.appendChild(n),t){var i=r.createElementNS(e,t);r.appendChild(i)}return r},createDocumentType:function(e,t,n){var r=new W;return r.name=e,r.nodeName=e,r.publicId=t,r.systemId=n,r}},N.prototype={firstChild:null,lastChild:null,previousSibling:null,nextSibling:null,attributes:null,parentNode:null,childNodes:null,ownerDocument:null,nodeValue:null,namespaceURI:null,prefix:null,localName:null,insertBefore:function(e,t){return z(this,e,t)},replaceChild:function(e,t){this.insertBefore(e,t),t&&this.removeChild(t)},removeChild:function(e){return L(this,e)},appendChild:function(e){return this.insertBefore(e,null)},hasChildNodes:function(){return null!=this.firstChild},cloneNode:function(e){return function e(t,n,r){var i=new n.constructor;for(var a in n){var c=n[a];"object"!=typeof c&&c!=i[a]&&(i[a]=c)}n.childNodes&&(i.childNodes=new x);switch(i.ownerDocument=t,i.nodeType){case o:var l=n.attributes,u=i.attributes=new C,d=l.length;u._ownerElement=i;for(var h=0;h<d;h++)i.setAttributeNode(e(t,l.item(h),!0));break;case s:r=!0}if(r)for(var f=n.firstChild;f;)i.appendChild(e(t,f,r)),f=f.nextSibling;return i}(this.ownerDocument||this,this,e)},normalize:function(){for(var e=this.firstChild;e;){var t=e.nextSibling;t&&t.nodeType==a&&e.nodeType==a?(this.removeChild(t),e.appendData(t.data)):(e.normalize(),e=t)}},isSupported:function(e,t){return this.ownerDocument.implementation.hasFeature(e,t)},hasAttributes:function(){return this.attributes.length>0},lookupPrefix:function(e){for(var t=this;t;){var n=t._nsMap;if(n)for(var r in n)if(n[r]==e)return r;t=t.nodeType==s?t.ownerDocument:t.parentNode}return null},lookupNamespaceURI:function(e){for(var t=this;t;){var n=t._nsMap;if(n&&e in n)return n[e];t=t.nodeType==s?t.ownerDocument:t.parentNode}return null},isDefaultNamespace:function(e){return null==this.lookupPrefix(e)}},n(i,N),n(i,N.prototype),R.prototype={nodeName:"#document",nodeType:f,doctype:null,documentElement:null,_inc:1,insertBefore:function(e,t){if(e.nodeType==g){for(var n=e.firstChild;n;){var r=n.nextSibling;this.insertBefore(n,t),n=r}return e}return null==this.documentElement&&e.nodeType==o&&(this.documentElement=e),z(this,e,t),e.ownerDocument=this,e},removeChild:function(e){return this.documentElement==e&&(this.documentElement=null),L(this,e)},importNode:function(e,t){return function e(t,n,r){var i;switch(n.nodeType){case o:(i=n.cloneNode(!1)).ownerDocument=t;case g:break;case s:r=!0}i||(i=n.cloneNode(!1));if(i.ownerDocument=t,i.parentNode=null,r)for(var a=n.firstChild;a;)i.appendChild(e(t,a,r)),a=a.nextSibling;return i}(this,e,t)},getElementById:function(e){var t=null;return M(this.documentElement,(function(n){if(n.nodeType==o&&n.getAttribute("id")==e)return t=n,!0})),t},createElement:function(e){var t=new F;return t.ownerDocument=this,t.nodeName=e,t.tagName=e,t.childNodes=new x,(t.attributes=new C)._ownerElement=t,t},createDocumentFragment:function(){var e=new X;return e.ownerDocument=this,e.childNodes=new x,e},createTextNode:function(e){var t=new H;return t.ownerDocument=this,t.appendData(e),t},createComment:function(e){var t=new U;return t.ownerDocument=this,t.appendData(e),t},createCDATASection:function(e){var t=new $;return t.ownerDocument=this,t.appendData(e),t},createProcessingInstruction:function(e,t){var n=new Q;return n.ownerDocument=this,n.tagName=n.target=e,n.nodeValue=n.data=t,n},createAttribute:function(e){var t=new B;return t.ownerDocument=this,t.name=e,t.nodeName=e,t.localName=e,t.specified=!0,t},createEntityReference:function(e){var t=new J;return t.ownerDocument=this,t.nodeName=e,t},createElementNS:function(e,t){var n=new F,r=t.split(":"),i=n.attributes=new C;return n.childNodes=new x,n.ownerDocument=this,n.nodeName=t,n.tagName=t,n.namespaceURI=e,2==r.length?(n.prefix=r[0],n.localName=r[1]):n.localName=t,i._ownerElement=n,n},createAttributeNS:function(e,t){var n=new B,r=t.split(":");return n.ownerDocument=this,n.nodeName=t,n.name=t,n.namespaceURI=e,n.specified=!0,2==r.length?(n.prefix=r[0],n.localName=r[1]):n.localName=t,n}},r(R,N),F.prototype={nodeType:o,hasAttribute:function(e){return null!=this.getAttributeNode(e)},getAttribute:function(e){var t=this.getAttributeNode(e);return t&&t.value||""},getAttributeNode:function(e){return this.attributes.getNamedItem(e)},setAttribute:function(e,t){var n=this.ownerDocument.createAttribute(e);n.value=n.nodeValue=""+t,this.setAttributeNode(n)},removeAttribute:function(e){var t=this.getAttributeNode(e);t&&this.removeAttributeNode(t)},appendChild:function(e){return e.nodeType===g?this.insertBefore(e,null):function(e,t){var n=t.parentNode;if(n){var r=e.lastChild;n.removeChild(t);r=e.lastChild}return r=e.lastChild,t.parentNode=e,t.previousSibling=r,t.nextSibling=null,r?r.nextSibling=t:e.firstChild=t,e.lastChild=t,P(e.ownerDocument,e,t),t}(this,e)},setAttributeNode:function(e){return this.attributes.setNamedItem(e)},setAttributeNodeNS:function(e){return this.attributes.setNamedItemNS(e)},removeAttributeNode:function(e){return this.attributes.removeNamedItem(e.nodeName)},removeAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);n&&this.removeAttributeNode(n)},hasAttributeNS:function(e,t){return null!=this.getAttributeNodeNS(e,t)},getAttributeNS:function(e,t){var n=this.getAttributeNodeNS(e,t);return n&&n.value||""},setAttributeNS:function(e,t,n){var r=this.ownerDocument.createAttributeNS(e,t);r.value=r.nodeValue=""+n,this.setAttributeNode(r)},getAttributeNodeNS:function(e,t){return this.attributes.getNamedItemNS(e,t)},getElementsByTagName:function(e){return new E(this,(function(t){var n=[];return M(t,(function(r){r===t||r.nodeType!=o||"*"!==e&&r.tagName!=e||n.push(r)})),n}))},getElementsByTagNameNS:function(e,t){return new E(this,(function(n){var r=[];return M(n,(function(i){i===n||i.nodeType!==o||"*"!==e&&i.namespaceURI!==e||"*"!==t&&i.localName!=t||r.push(i)})),r}))}},R.prototype.getElementsByTagName=F.prototype.getElementsByTagName,R.prototype.getElementsByTagNameNS=F.prototype.getElementsByTagNameNS,r(F,N),B.prototype.nodeType=s,r(B,N),q.prototype={data:"",substringData:function(e,t){return this.data.substring(e,e+t)},appendData:function(e){e=this.data+e,this.nodeValue=this.data=e,this.length=e.length},insertData:function(e,t){this.replaceData(e,0,t)},appendChild:function(e){throw new Error(_[b])},deleteData:function(e,t){this.replaceData(e,t,"")},replaceData:function(e,t,n){n=this.data.substring(0,e)+n+this.data.substring(e+t),this.nodeValue=this.data=n,this.length=n.length}},r(q,N),H.prototype={nodeName:"#text",nodeType:a,splitText:function(e){var t=this.data,n=t.substring(e);t=t.substring(0,e),this.data=this.nodeValue=t,this.length=t.length;var r=this.ownerDocument.createTextNode(n);return this.parentNode&&this.parentNode.insertBefore(r,this.nextSibling),r}},r(H,q),U.prototype={nodeName:"#comment",nodeType:h},r(U,q),$.prototype={nodeName:"#cdata-section",nodeType:c},r($,q),W.prototype.nodeType=p,r(W,N),G.prototype.nodeType=m,r(G,N),V.prototype.nodeType=u,r(V,N),J.prototype.nodeType=l,r(J,N),X.prototype.nodeName="#document-fragment",X.prototype.nodeType=g,r(X,N),Q.prototype.nodeType=d,r(Q,N),Y.prototype.serializeToString=function(e,t,n){return K.call(e,t,n)},N.prototype.toString=K;try{if(Object.defineProperty){Object.defineProperty(E.prototype,"length",{get:function(){return A(this),this.$$length}}),Object.defineProperty(N.prototype,"textContent",{get:function(){return function e(t){switch(t.nodeType){case o:case g:var n=[];for(t=t.firstChild;t;)7!==t.nodeType&&8!==t.nodeType&&n.push(e(t)),t=t.nextSibling;return n.join("");default:return t.nodeValue}}(this)},set:function(e){switch(this.nodeType){case o:case g:for(;this.firstChild;)this.removeChild(this.firstChild);(e||String(e))&&this.appendChild(this.ownerDocument.createTextNode(e));break;default:this.data=e,this.value=e,this.nodeValue=e}}}),te=function(e,t,n){e["$$"+t]=n}}}catch(e){}t.DOMImplementation=k,t.XMLSerializer=Y},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(12))},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e}},function(e,t,n){var r=n(342),i=n(99),o=n(16),s=n(100),a=n(37),c=n(101),l=Object.prototype.hasOwnProperty;e.exports=function(e,t){var n=o(e),u=!n&&i(e),d=!n&&!u&&s(e),h=!n&&!u&&!d&&c(e),f=n||u||d||h,p=f?r(e.length,String):[],g=p.length;for(var m in e)!t&&!l.call(e,m)||f&&("length"==m||d&&("offset"==m||"parent"==m)||h&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||a(m,g))||p.push(m);return p}},function(e,t,n){var r=n(343),i=n(23),o=Object.prototype,s=o.hasOwnProperty,a=o.propertyIsEnumerable,c=r(function(){return arguments}())?r:function(e){return i(e)&&s.call(e,"callee")&&!a.call(e,"callee")};e.exports=c},function(e,t,n){(function(e){var r=n(11),i=n(344),o=t&&!t.nodeType&&t,s=o&&"object"==typeof e&&e&&!e.nodeType&&e,a=s&&s.exports===o?r.Buffer:void 0,c=(a?a.isBuffer:void 0)||i;e.exports=c}).call(this,n(46)(e))},function(e,t,n){var r=n(345),i=n(346),o=n(347),s=o&&o.isTypedArray,a=s?i(s):r;e.exports=a},function(e,t,n){var r=n(103),i=n(348),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return i(e);var t=[];for(var n in Object(e))o.call(e,n)&&"constructor"!=n&&t.push(n);return t}},function(e,t){var n=Object.prototype;e.exports=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||n)}},function(e,t){e.exports=function(e,t){return function(n){return e(t(n))}}},function(e,t,n){var r=n(106),i=n(50),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var s=e[t];o.call(e,t)&&i(s,n)&&(void 0!==n||t in e)||r(e,t,n)}},function(e,t,n){var r=n(107);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},function(e,t,n){var r=n(26),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=i},function(e,t){var n=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return n.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},function(e,t,n){var r=n(38),i=n(358),o=n(110);e.exports=function(e,t){return o(i(e,t,r),e+"")}},function(e,t,n){var r=n(359),i=n(111)(r);e.exports=i},function(e,t){var n=Date.now;e.exports=function(e){var t=0,r=0;return function(){var i=n(),o=16-(i-r);if(r=i,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}},function(e,t,n){var r=n(98),i=n(362),o=n(29);e.exports=function(e){return o(e)?r(e,!0):i(e)}},function(e,t,n){var r=n(364),i=n(365),o=n(366);e.exports=function(e,t,n){return t==t?o(e,t,n):r(e,i,n)}},function(e,t,n){var r=n(25),i=n(16),o=n(23);e.exports=function(e){return"string"==typeof e||!i(e)&&o(e)&&"[object String]"==r(e)}},function(e,t,n){var r=n(38),i=n(116),o=i?function(e,t){return i.set(e,t),e}:r;e.exports=o},function(e,t,n){var r=n(117),i=r&&new r;e.exports=i},function(e,t,n){var r=n(26)(n(11),"WeakMap");e.exports=r},function(e,t,n){var r=n(119),i=n(120),o=n(371),s=n(51),a=n(121),c=n(77),l=n(382),u=n(52),d=n(11);e.exports=function e(t,n,h,f,p,g,m,v,_,b){var y=128&n,w=1&n,S=2&n,x=24&n,E=512&n,A=S?void 0:s(t);return function C(){for(var j=arguments.length,T=Array(j),O=j;O--;)T[O]=arguments[O];if(x)var k=c(C),N=o(T,k);if(f&&(T=r(T,f,p,x)),g&&(T=i(T,g,m,x)),j-=N,x&&j<b){var I=u(T,k);return a(t,n,e,C.placeholder,h,T,I,v,_,b-j)}var M=w?h:this,R=S?M[t]:t;return j=T.length,v?T=l(T,v):E&&j>1&&T.reverse(),y&&_<j&&(T.length=_),this&&this!==d&&this instanceof C&&(R=A||s(R)),R.apply(M,T)}}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var o=-1,s=e.length,a=r.length,c=-1,l=t.length,u=n(s-a,0),d=Array(l+u),h=!i;++c<l;)d[c]=t[c];for(;++o<a;)(h||o<s)&&(d[r[o]]=e[o]);for(;u--;)d[c++]=e[o++];return d}},function(e,t){var n=Math.max;e.exports=function(e,t,r,i){for(var o=-1,s=e.length,a=-1,c=r.length,l=-1,u=t.length,d=n(s-c,0),h=Array(d+u),f=!i;++o<d;)h[o]=e[o];for(var p=o;++l<u;)h[p+l]=t[l];for(;++a<c;)(f||o<s)&&(h[p+r[a]]=e[o++]);return h}},function(e,t,n){var r=n(372),i=n(125),o=n(126);e.exports=function(e,t,n,s,a,c,l,u,d,h){var f=8&t;t|=f?32:64,4&(t&=~(f?64:32))||(t&=-4);var p=[e,t,a,f?c:void 0,f?l:void 0,f?void 0:c,f?void 0:l,u,d,h],g=n.apply(void 0,p);return r(e)&&i(g,p),g.placeholder=s,o(g,e,t)}},function(e,t,n){var r=n(116),i=n(373),o=r?function(e){return r.get(e)}:i;e.exports=o},function(e,t,n){var r=n(74),i=n(76);function o(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}o.prototype=r(i.prototype),o.prototype.constructor=o,e.exports=o},function(e,t){e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}},function(e,t,n){var r=n(115),i=n(111)(r);e.exports=i},function(e,t,n){var r=n(378),i=n(379),o=n(110),s=n(380);e.exports=function(e,t,n){var a=t+"";return o(e,i(a,s(r(a),n)))}},function(e,t,n){var r=n(53),i=n(393),o=n(394),s=n(395),a=n(396),c=n(397);function l(e){var t=this.__data__=new r(e);this.size=t.size}l.prototype.clear=i,l.prototype.delete=o,l.prototype.get=s,l.prototype.has=a,l.prototype.set=c,e.exports=l},function(e,t,n){var r=n(410),i=n(23);e.exports=function e(t,n,o,s,a){return t===n||(null==t||null==n||!i(t)&&!i(n)?t!=t&&n!=n:r(t,n,o,s,e,a))}},function(e,t,n){var r=n(411),i=n(414),o=n(415);e.exports=function(e,t,n,s,a,c){var l=1&n,u=e.length,d=t.length;if(u!=d&&!(l&&d>u))return!1;var h=c.get(e),f=c.get(t);if(h&&f)return h==t&&f==e;var p=-1,g=!0,m=2&n?new r:void 0;for(c.set(e,t),c.set(t,e);++p<u;){var v=e[p],_=t[p];if(s)var b=l?s(_,v,p,t,e,c):s(v,_,p,e,t,c);if(void 0!==b){if(b)continue;g=!1;break}if(m){if(!i(t,(function(e,t){if(!o(m,t)&&(v===e||a(v,e,n,s,c)))return m.push(t)}))){g=!1;break}}else if(v!==_&&!a(v,_,n,s,c)){g=!1;break}}return c.delete(e),c.delete(t),g}},function(e,t,n){var r=n(131),i=n(16);e.exports=function(e,t,n){var o=t(e);return i(e)?o:r(o,n(e))}},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}},function(e,t,n){var r=n(422),i=n(133),o=Object.prototype.propertyIsEnumerable,s=Object.getOwnPropertySymbols,a=s?function(e){return null==e?[]:(e=Object(e),r(s(e),(function(t){return o.call(e,t)})))}:i;e.exports=a},function(e,t){e.exports=function(){return[]}},function(e,t,n){var r=n(423),i=n(78),o=n(424),s=n(425),a=n(117),c=n(25),l=n(108),u=l(r),d=l(i),h=l(o),f=l(s),p=l(a),g=c;(r&&"[object DataView]"!=g(new r(new ArrayBuffer(1)))||i&&"[object Map]"!=g(new i)||o&&"[object Promise]"!=g(o.resolve())||s&&"[object Set]"!=g(new s)||a&&"[object WeakMap]"!=g(new a))&&(g=function(e){var t=c(e),n="[object Object]"==t?e.constructor:void 0,r=n?l(n):"";if(r)switch(r){case u:return"[object DataView]";case d:return"[object Map]";case h:return"[object Promise]";case f:return"[object Set]";case p:return"[object WeakMap]"}return t}),e.exports=g},function(e,t,n){var r=n(20);e.exports=function(e){return e==e&&!r(e)}},function(e,t){e.exports=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}},function(e,t,n){var r=n(432);e.exports=function(e){return null==e?"":r(e)}},function(e,t){e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(447)),i=l(n(453)),o=l(n(461)),s=l(n(464)),a=l(n(89));t.default=function(e,t){var n=(0,c.getStorage)(),l=!(!n||!n[t]),u=l?n[t]:{clear:function(){},get:function(){},remove:function(){},set:function(){}},d=u.clear.bind(u),h=u.get.bind(u),f=u.remove.bind(u),p=u.set.bind(u);return{_driver:e,_support:l,_initStorage:function(){return a.default.resolve()},clear:function(e){var t=this;return(0,s.default)(o.default.mark((function n(){return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:d(),e&&e();case 2:case"end":return t.stop()}}),n,t)})))()},iterate:function(e,t){var n=this;return(0,s.default)(o.default.mark((function r(){var s;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,c.usePromise)(h,null);case 2:s=n.sent,(0,i.default)(s).forEach((function(t,n){return e(s[t],t,n)})),t&&t();case 6:case"end":return n.stop()}}),r,n)})))()},getItem:function(e,t){var n=this;return(0,s.default)(o.default.mark((function r(){var i;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,(0,c.usePromise)(h,e);case 3:return i=n.sent,i=void 0===(i="string"==typeof e?i[e]:i)?null:i,t&&t(null,i),n.abrupt("return",i);case 10:throw n.prev=10,n.t0=n.catch(0),t&&t(n.t0),n.t0;case 14:case"end":return n.stop()}}),r,n,[[0,10]])})))()},key:function(e,t){var n=this;return(0,s.default)(o.default.mark((function r(){var s,a;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,c.usePromise)(h,null);case 2:return s=n.sent,a=(0,i.default)(s)[e],t&&t(a),n.abrupt("return",a);case 6:case"end":return n.stop()}}),r,n)})))()},keys:function(e){var t=this;return(0,s.default)(o.default.mark((function n(){var r,s;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,(0,c.usePromise)(h,null);case 2:return r=t.sent,s=(0,i.default)(r),e&&e(s),t.abrupt("return",s);case 6:case"end":return t.stop()}}),n,t)})))()},length:function(e){var t=this;return(0,s.default)(o.default.mark((function n(){var r,s;return o.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,(0,c.usePromise)(h,null);case 2:return r=t.sent,s=(0,i.default)(r).length,e&&e(s),t.abrupt("return",s);case 6:case"end":return t.stop()}}),n,t)})))()},removeItem:function(e,t){var n=this;return(0,s.default)(o.default.mark((function r(){return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,c.usePromise)(f,e);case 2:t&&t();case 3:case"end":return n.stop()}}),r,n)})))()},setItem:function(e,t,n){var i=this;return(0,s.default)(o.default.mark((function s(){return o.default.wrap((function(i){for(;;)switch(i.prev=i.next){case 0:return i.next=2,(0,c.usePromise)(p,(0,r.default)({},e,t));case 2:n&&n();case 3:case"end":return i.stop()}}),s,i)})))()}}};var c=n(492);function l(e){return e&&e.__esModule?e:{default:e}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(84);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(456),i=n(146);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(86),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(19),i=n(13),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(88)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){"use strict";var r=n(88),i=n(30),o=n(469),s=n(31),a=n(42),c=n(470),l=n(90),u=n(473),d=n(17)("iterator"),h=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,p,g,m,v){c(n,t,p);var _,b,y,w=function(e){if(!h&&e in A)return A[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",x="values"==g,E=!1,A=e.prototype,C=A[d]||A["@@iterator"]||g&&A[g],j=C||w(g),T=g?x?w("entries"):j:void 0,O="Array"==t&&A.entries||C;if(O&&(y=u(O.call(new e)))!==Object.prototype&&y.next&&(l(y,S,!0),r||"function"==typeof y[d]||s(y,d,f)),x&&C&&"values"!==C.name&&(E=!0,j=function(){return C.call(this)}),r&&!v||!h&&!E&&A[d]||s(A,d,j),a[t]=j,a[S]=f,g)if(_={values:x?j:w("values"),keys:m?j:w("keys"),entries:T},v)for(b in _)b in A||o(A,b,_[b]);else i(i.P+i.F*(h||E),t,_);return _}},function(e,t,n){var r=n(13).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(61),i=n(17)("toStringTag"),o="Arguments"==r(function(){return arguments}());e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),i))?n:o?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},function(e,t,n){var r=n(27),i=n(59),o=n(17)("species");e.exports=function(e,t){var n,s=r(e).constructor;return void 0===s||null==(n=r(s)[o])?t:i(n)}},function(e,t,n){var r,i,o,s=n(58),a=n(484),c=n(148),l=n(83),u=n(13),d=u.process,h=u.setImmediate,f=u.clearImmediate,p=u.MessageChannel,g=u.Dispatch,m=0,v={},_=function(){var e=+this;if(v.hasOwnProperty(e)){var t=v[e];delete v[e],t()}},b=function(e){_.call(e.data)};h&&f||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return v[++m]=function(){a("function"==typeof e?e:Function(e),t)},r(m),m},f=function(e){delete v[e]},"process"==n(61)(d)?r=function(e){d.nextTick(s(_,e,1))}:g&&g.now?r=function(e){g.now(s(_,e,1))}:p?(o=(i=new p).port2,i.port1.onmessage=b,r=s(o.postMessage,o,1)):u.addEventListener&&"function"==typeof postMessage&&!u.importScripts?(r=function(e){u.postMessage(e+"","*")},u.addEventListener("message",b,!1)):r="onreadystatechange"in l("script")?function(e){c.appendChild(l("script")).onreadystatechange=function(){c.removeChild(this),_.call(e)}}:function(e){setTimeout(s(_,e,1),0)}),e.exports={set:h,clear:f}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(27),i=n(41),o=n(91);e.exports=function(e,t){if(r(e),i(t)&&t.constructor===e)return t;var n=o.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var r=n(15),i=n(0);i.e.Request=class{constructor(e,t,n,r){this.id=++i.e._requestId,this.xmlData=e,this.data=i.e.serialize(e),this.origFunc=t,this.func=t,this.rid=n,this.date=NaN,this.sends=r||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;return(new Date-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;return(new Date-this.dead)/1e3},this.xhr=this._newXHR()}getResponse(){let e=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){if(e=this.xhr.responseXML.documentElement,"parsererror"===e.tagName)throw i.e.error("invalid response received"),i.e.error("responseText: "+this.xhr.responseText),i.e.error("responseXML: "+i.e.serialize(this.xhr.responseXML)),new Error("parsererror")}else if(this.xhr.responseText){if(i.e.debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."),e=(new r.a).parseFromString(this.xhr.responseText,"application/xml").documentElement,!e)throw new Error("Parsing produced null node");if(e.querySelector("parsererror")){i.e.error("invalid response received: "+e.querySelector("parsererror").textContent),i.e.error("responseText: "+this.xhr.responseText);const t=new Error;throw t.name=i.e.ErrorCondition.BAD_FORMAT,t}}return e}_newXHR(){let e=null;return window.XMLHttpRequest?(e=new XMLHttpRequest,e.overrideMimeType&&e.overrideMimeType("text/xml; charset=utf-8")):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),e.onreadystatechange=this.func.bind(null,this),e}},i.e.Bosh=class e{constructor(e){this._conn=e,this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.hold=1,this.wait=60,this.window=5,this.errors=0,this.inactivity=null,this.lastResponseHeaders=null,this._requests=[]}_buildBody(){const e=Object(i.a)("body",{rid:this.rid++,xmlns:i.e.NS.HTTPBIND});return null!==this.sid&&e.attrs({sid:this.sid}),this._conn.options.keepalive&&this._conn._sessionCachingSupported()&&this._cacheSession(),e}_reset(){this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.errors=0,this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_connect(e,t,n){this.wait=e||this.wait,this.hold=t||this.hold,this.errors=0;const r=this._buildBody().attrs({to:this._conn.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":i.e.NS.BOSH});n&&r.attrs({route:n});const o=this._conn._connect_cb;this._requests.push(new i.e.Request(r.tree(),this._onRequestStateChange.bind(this,o.bind(this._conn)),r.tree().getAttribute("rid"))),this._throttledRequestHandler()}_attach(e,t,n,r,o,s,a){this._conn.jid=e,this.sid=t,this.rid=n,this._conn.connect_callback=r,this._conn.domain=i.e.getDomainFromJid(this._conn.jid),this._conn.authenticated=!0,this._conn.connected=!0,this.wait=o||this.wait,this.hold=s||this.hold,this.window=a||this.window,this._conn._changeConnectStatus(i.e.Status.ATTACHED,null)}_restore(e,t,n,r,o){const s=JSON.parse(window.sessionStorage.getItem("strophe-bosh-session"));if(!(null!=s&&s.rid&&s.sid&&s.jid&&(null==e||i.e.getBareJidFromJid(s.jid)===i.e.getBareJidFromJid(e)||null===i.e.getNodeFromJid(e)&&i.e.getDomainFromJid(s.jid)===e))){const e=new Error("_restore: no restoreable session.");throw e.name="StropheSessionError",e}this._conn.restored=!0,this._attach(s.jid,s.sid,s.rid,t,n,r,o)}_cacheSession(){this._conn.authenticated?this._conn.jid&&this.rid&&this.sid&&window.sessionStorage.setItem("strophe-bosh-session",JSON.stringify({jid:this._conn.jid,rid:this.rid,sid:this.sid})):window.sessionStorage.removeItem("strophe-bosh-session")}_connect_cb(e){const t=e.getAttribute("type");if(null!==t&&"terminate"===t){let t=e.getAttribute("condition");i.e.error("BOSH-Connection failed: "+t);const n=e.getElementsByTagName("conflict");return null!==t?("remote-stream-error"===t&&n.length>0&&(t="conflict"),this._conn._changeConnectStatus(i.e.Status.CONNFAIL,t)):this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"unknown"),this._conn._doDisconnect(t),i.e.Status.CONNFAIL}this.sid||(this.sid=e.getAttribute("sid"));const n=e.getAttribute("requests");n&&(this.window=parseInt(n,10));const r=e.getAttribute("hold");r&&(this.hold=parseInt(r,10));const o=e.getAttribute("wait");o&&(this.wait=parseInt(o,10));const s=e.getAttribute("inactivity");s&&(this.inactivity=parseInt(s,10))}_disconnect(e){this._sendTerminate(e)}_doDisconnect(){this.sid=null,this.rid=Math.floor(4294967295*Math.random()),this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_emptyQueue(){return 0===this._requests.length}_callProtocolErrorHandlers(t){const n=e._getRequestStatus(t),r=this._conn.protocolErrorHandlers.HTTP[n];r&&r.call(this,n)}_hitError(e){this.errors++,i.e.warn("request errored, status: "+e+", number of errors: "+this.errors),this.errors>4&&this._conn._onDisconnectTimeout()}_no_auth_received(e){i.e.warn("Server did not yet offer a supported authentication mechanism. Sending a blank poll request."),e=e?e.bind(this._conn):this._conn._connect_cb.bind(this._conn);const t=this._buildBody();this._requests.push(new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,e),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}_onDisconnectTimeout(){this._abortAllRequests()}_abortAllRequests(){for(;this._requests.length>0;){const e=this._requests.pop();e.abort=!0,e.xhr.abort(),e.xhr.onreadystatechange=function(){}}}_onIdle(){const e=this._conn._data;if(this._conn.authenticated&&0===this._requests.length&&0===e.length&&!this._conn.disconnecting&&(i.e.debug("no requests during idle cycle, sending blank request"),e.push(null)),!this._conn.paused){if(this._requests.length<2&&e.length>0){const t=this._buildBody();for(let n=0;n<e.length;n++)null!==e[n]&&("restart"===e[n]?t.attrs({to:this._conn.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":i.e.NS.BOSH}):t.cnode(e[n]).up());delete this._conn._data,this._conn._data=[],this._requests.push(new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}if(this._requests.length>0){const e=this._requests[0].age();null!==this._requests[0].dead&&this._requests[0].timeDead()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),e>Math.floor(i.e.TIMEOUT*this.wait)&&(i.e.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(i.e.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())}}}static _getRequestStatus(e,t){let n;if(4===e.xhr.readyState)try{n=e.xhr.status}catch(e){i.e.error("Caught an error while retrieving a request's status, reqStatus: "+n)}return void 0===n&&(n="number"==typeof t?t:0),n}_onRequestStateChange(t,n){if(i.e.debug("request id "+n.id+"."+n.sends+" state changed to "+n.xhr.readyState),n.abort)return void(n.abort=!1);if(4!==n.xhr.readyState)return;const r=e._getRequestStatus(n);if(this.lastResponseHeaders=n.xhr.getAllResponseHeaders(),this._conn.disconnecting&&r>=400)return this._hitError(r),void this._callProtocolErrorHandlers(n);const o=r>0&&r<500,s=n.sends>this._conn.maxRetries;if((o||s)&&(this._removeRequest(n),i.e.debug("request id "+n.id+" should now be removed")),200===r){const e=this._requests[0]===n;(this._requests[1]===n||e&&this._requests.length>0&&this._requests[0].age()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),this._conn.nextValidRid(Number(n.rid)+1),i.e.debug("request id "+n.id+"."+n.sends+" got 200"),t(n),this.errors=0}else 0===r||r>=400&&r<600||r>=12e3?(i.e.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),this._hitError(r),this._callProtocolErrorHandlers(n),r>=400&&r<500&&(this._conn._changeConnectStatus(i.e.Status.DISCONNECTING,null),this._conn._doDisconnect())):i.e.error("request id "+n.id+"."+n.sends+" error "+r+" happened");o||s?s&&!this._conn.connected&&this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"giving-up"):this._throttledRequestHandler()}_processRequest(t){let n=this._requests[t];const r=e._getRequestStatus(n,-1);if(n.sends>this._conn.maxRetries)return void this._conn._onDisconnectTimeout();const o=n.age(),s=!isNaN(o)&&o>Math.floor(i.e.TIMEOUT*this.wait),a=null!==n.dead&&n.timeDead()>Math.floor(i.e.SECONDARY_TIMEOUT*this.wait),c=4===n.xhr.readyState&&(r<1||r>=500);if((s||a||c)&&(a&&i.e.error("Request ".concat(this._requests[t].id," timed out (secondary), restarting")),n.abort=!0,n.xhr.abort(),n.xhr.onreadystatechange=function(){},this._requests[t]=new i.e.Request(n.xmlData,n.origFunc,n.rid,n.sends),n=this._requests[t]),0===n.xhr.readyState){i.e.debug("request id "+n.id+"."+n.sends+" posting");try{const e=this._conn.options.contentType||"text/xml; charset=utf-8";n.xhr.open("POST",this._conn.service,!this._conn.options.sync),void 0!==n.xhr.setRequestHeader&&n.xhr.setRequestHeader("Content-Type",e),this._conn.options.withCredentials&&(n.xhr.withCredentials=!0)}catch(e){return i.e.error("XHR open failed: "+e.toString()),this._conn.connected||this._conn._changeConnectStatus(i.e.Status.CONNFAIL,"bad-service"),void this._conn.disconnect()}const e=()=>{if(n.date=new Date,this._conn.options.customHeaders){const e=this._conn.options.customHeaders;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.xhr.setRequestHeader(t,e[t])}n.xhr.send(n.data)};if(n.sends>1){const t=1e3*Math.min(Math.floor(i.e.TIMEOUT*this.wait),Math.pow(n.sends,3));setTimeout((function(){e()}),t)}else e();n.sends++,this._conn.xmlOutput!==i.e.Connection.prototype.xmlOutput&&(n.xmlData.nodeName===this.strip&&n.xmlData.childNodes.length?this._conn.xmlOutput(n.xmlData.childNodes[0]):this._conn.xmlOutput(n.xmlData)),this._conn.rawOutput!==i.e.Connection.prototype.rawOutput&&this._conn.rawOutput(n.data)}else i.e.debug("_processRequest: "+(0===t?"first":"second")+" request has readyState of "+n.xhr.readyState)}_removeRequest(e){i.e.debug("removing request");for(let t=this._requests.length-1;t>=0;t--)e===this._requests[t]&&this._requests.splice(t,1);e.xhr.onreadystatechange=function(){},this._throttledRequestHandler()}_restartRequest(e){const t=this._requests[e];null===t.dead&&(t.dead=new Date),this._processRequest(e)}_reqToData(e){try{return e.getResponse()}catch(e){if("parsererror"!==e.message)throw e;this._conn.disconnect("strophe-parsererror")}}_sendTerminate(e){i.e.debug("_sendTerminate was called");const t=this._buildBody().attrs({type:"terminate"});e&&t.cnode(e.tree());const n=new i.e.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"));this._requests.push(n),this._throttledRequestHandler()}_send(){clearTimeout(this._conn._idleTimeout),this._throttledRequestHandler(),this._conn._idleTimeout=setTimeout(()=>this._conn._onIdle(),100)}_sendRestart(){this._throttledRequestHandler(),clearTimeout(this._conn._idleTimeout)}_throttledRequestHandler(){this._requests?i.e.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):i.e.debug("_throttledRequestHandler called with undefined requests"),this._requests&&0!==this._requests.length&&(this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1))}},i.e.Bosh.prototype.strip=null},function(e,t,n){(function(e,r){var i;/*! https://mths.be/punycode v1.4.0 by @mathias */!function(o){t&&t.nodeType,e&&e.nodeType;var s="object"==typeof r&&r;s.global!==s&&s.window!==s&&s.self;var a,c=2147483647,l=/^xn--/,u=/[^\x20-\x7E]/,d=/[\x2E\u3002\uFF0E\uFF61]/g,h={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,p=String.fromCharCode;function g(e){throw new RangeError(h[e])}function m(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r}function v(e,t){var n=e.split("@"),r="";return n.length>1&&(r=n[0]+"@",e=n[1]),r+m((e=e.replace(d,".")).split("."),t).join(".")}function _(e){for(var t,n,r=[],i=0,o=e.length;i<o;)(t=e.charCodeAt(i++))>=55296&&t<=56319&&i<o?56320==(64512&(n=e.charCodeAt(i++)))?r.push(((1023&t)<<10)+(1023&n)+65536):(r.push(t),i--):r.push(t);return r}function b(e){return m(e,(function(e){var t="";return e>65535&&(t+=p((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=p(e)})).join("")}function y(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function w(e,t,n){var r=0;for(e=n?f(e/700):e>>1,e+=f(e/t);e>455;r+=36)e=f(e/35);return f(r+36*e/(e+38))}function S(e){var t,n,r,i,o,s,a,l,u,d,h,p=[],m=e.length,v=0,_=128,y=72;for((n=e.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)e.charCodeAt(r)>=128&&g("not-basic"),p.push(e.charCodeAt(r));for(i=n>0?n+1:0;i<m;){for(o=v,s=1,a=36;i>=m&&g("invalid-input"),((l=(h=e.charCodeAt(i++))-48<10?h-22:h-65<26?h-65:h-97<26?h-97:36)>=36||l>f((c-v)/s))&&g("overflow"),v+=l*s,!(l<(u=a<=y?1:a>=y+26?26:a-y));a+=36)s>f(c/(d=36-u))&&g("overflow"),s*=d;y=w(v-o,t=p.length+1,0==o),f(v/t)>c-_&&g("overflow"),_+=f(v/t),v%=t,p.splice(v++,0,_)}return b(p)}function x(e){var t,n,r,i,o,s,a,l,u,d,h,m,v,b,S,x=[];for(m=(e=_(e)).length,t=128,n=0,o=72,s=0;s<m;++s)(h=e[s])<128&&x.push(p(h));for(r=i=x.length,i&&x.push("-");r<m;){for(a=c,s=0;s<m;++s)(h=e[s])>=t&&h<a&&(a=h);for(a-t>f((c-n)/(v=r+1))&&g("overflow"),n+=(a-t)*v,t=a,s=0;s<m;++s)if((h=e[s])<t&&++n>c&&g("overflow"),h==t){for(l=n,u=36;!(l<(d=u<=o?1:u>=o+26?26:u-o));u+=36)S=l-d,b=36-d,x.push(p(y(d+S%b,0))),l=f(S/b);x.push(p(y(l,0))),o=w(n,v,r==i),n=0,++r}++n,++t}return x.join("")}a={version:"1.3.2",ucs2:{decode:_,encode:b},decode:S,encode:x,toASCII:function(e){return v(e,(function(e){return u.test(e)?"xn--"+x(e):e}))},toUnicode:function(e){return v(e,(function(e){return l.test(e)?S(e.slice(4).toLowerCase()):e}))}},void 0===(i=function(){return a}.call(t,n,t,e))||(e.exports=i)}()}).call(this,n(46)(e),n(12))},function(e,t,n){var r,i; /*! * URI.js - Mutating URLs * IPv6 Support @@ -45,7 +45,7 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */!function(s,o){"use strict";e.exports?e.exports=o():void 0===(i="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=i)}(0,(function(e){"use strict";var t=e&&e.IPv6;return{best:function(e){var t,n,r=e.toLowerCase().split(":"),i=r.length,s=8;for(""===r[0]&&""===r[1]&&""===r[2]?(r.shift(),r.shift()):""===r[0]&&""===r[1]?r.shift():""===r[i-1]&&""===r[i-2]&&r.pop(),-1!==r[(i=r.length)-1].indexOf(".")&&(s=7),t=0;t<i&&""!==r[t];t++);if(t<s)for(r.splice(t,1,"0000");r.length<s;)r.splice(t,0,"0000");for(var o=0;o<s;o++){n=r[o].split("");for(var a=0;a<3&&("0"===n[0]&&n.length>1);a++)n.splice(0,1);r[o]=n.join("")}var c=-1,l=0,u=0,d=-1,h=!1;for(o=0;o<s;o++)h?"0"===r[o]?u+=1:(h=!1,u>l&&(c=d,l=u)):"0"===r[o]&&(h=!0,d=o,u=1);u>l&&(c=d,l=u),l>1&&r.splice(c,l,""),i=r.length;var f="";for(""===r[0]&&(f=":"),o=0;o<i&&(f+=r[o],o!==i-1);o++)f+=":";return""===r[i-1]&&(f+=":"),f},noConflict:function(){return e.IPv6===this&&(e.IPv6=t),this}}}))},function(e,t,n){var r,i; + */!function(o,s){"use strict";e.exports?e.exports=s():void 0===(i="function"==typeof(r=s)?r.call(t,n,t,e):r)||(e.exports=i)}(0,(function(e){"use strict";var t=e&&e.IPv6;return{best:function(e){var t,n,r=e.toLowerCase().split(":"),i=r.length,o=8;for(""===r[0]&&""===r[1]&&""===r[2]?(r.shift(),r.shift()):""===r[0]&&""===r[1]?r.shift():""===r[i-1]&&""===r[i-2]&&r.pop(),-1!==r[(i=r.length)-1].indexOf(".")&&(o=7),t=0;t<i&&""!==r[t];t++);if(t<o)for(r.splice(t,1,"0000");r.length<o;)r.splice(t,0,"0000");for(var s=0;s<o;s++){n=r[s].split("");for(var a=0;a<3&&("0"===n[0]&&n.length>1);a++)n.splice(0,1);r[s]=n.join("")}var c=-1,l=0,u=0,d=-1,h=!1;for(s=0;s<o;s++)h?"0"===r[s]?u+=1:(h=!1,u>l&&(c=d,l=u)):"0"===r[s]&&(h=!0,d=s,u=1);u>l&&(c=d,l=u),l>1&&r.splice(c,l,""),i=r.length;var f="";for(""===r[0]&&(f=":"),s=0;s<i&&(f+=r[s],s!==i-1);s++)f+=":";return""===r[i-1]&&(f+=":"),f},noConflict:function(){return e.IPv6===this&&(e.IPv6=t),this}}}))},function(e,t,n){var r,i; /*! * URI.js - Mutating URLs * Second Level Domain (SLD) Support @@ -58,12 +58,19 @@ * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * - */!function(s,o){"use strict";e.exports?e.exports=o():void 0===(i="function"==typeof(r=o)?r.call(t,n,t,e):r)||(e.exports=i)}(0,(function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return!1;var r=e.lastIndexOf(".",t-1);if(r<=0||r>=t-1)return!1;var i=n.list[e.slice(t+1)];return!!i&&i.indexOf(" "+e.slice(r+1,t)+" ")>=0},is:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return!1;if(e.lastIndexOf(".",t-1)>=0)return!1;var r=n.list[e.slice(t+1)];return!!r&&r.indexOf(" "+e.slice(0,t)+" ")>=0},get:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return null;var r=e.lastIndexOf(".",t-1);if(r<=0||r>=t-1)return null;var i=n.list[e.slice(t+1)];return i?i.indexOf(" "+e.slice(r+1,t)+" ")<0?null:e.slice(r+1):null},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n}))},function(e,t,n){"use strict";var r=n(14),i=n(1);i.c.Websocket=class{constructor(e){this._conn=e,this.strip="wrapper";const t=e.service;if(0!==t.indexOf("ws:")&&0!==t.indexOf("wss:")){let n="";"ws"===e.options.protocol&&"https:"!==window.location.protocol?n+="ws":n+="wss",n+="://"+window.location.host,0!==t.indexOf("/")?n+=window.location.pathname+t:n+=t,e.service=n}}_buildStream(){return Object(i.a)("open",{xmlns:i.c.NS.FRAMING,to:this._conn.domain,version:"1.0"})}_checkStreamError(e,t){let n;if(n=e.getElementsByTagNameNS?e.getElementsByTagNameNS(i.c.NS.STREAM,"error"):e.getElementsByTagName("stream:error"),0===n.length)return!1;const r=n[0];let s="",o="";for(let e=0;e<r.childNodes.length;e++){const t=r.childNodes[e];if("urn:ietf:params:xml:ns:xmpp-streams"!==t.getAttribute("xmlns"))break;"text"===t.nodeName?o=t.textContent:s=t.nodeName}let a="WebSocket stream error: ";return a+=s||"unknown",o&&(a+=" - "+o),i.c.error(a),this._conn._changeConnectStatus(t,s),this._conn._doDisconnect(),!0}_reset(){}_connect(){this._closeSocket(),this.socket=new WebSocket(this._conn.service,"xmpp"),this.socket.onopen=()=>this._onOpen(),this.socket.onerror=e=>this._onError(e),this.socket.onclose=e=>this._onClose(e),this.socket.onmessage=e=>this._onInitialMessage(e)}_connect_cb(e){if(this._checkStreamError(e,i.c.Status.CONNFAIL))return i.c.Status.CONNFAIL}_handleStreamStart(e){let t=!1;const n=e.getAttribute("xmlns");"string"!=typeof n?t="Missing xmlns in <open />":n!==i.c.NS.FRAMING&&(t="Wrong xmlns in <open />: "+n);const r=e.getAttribute("version");return"string"!=typeof r?t="Missing version in <open />":"1.0"!==r&&(t="Wrong version in <open />: "+r),!t||(this._conn._changeConnectStatus(i.c.Status.CONNFAIL,t),this._conn._doDisconnect(),!1)}_onInitialMessage(e){if(0===e.data.indexOf("<open ")||0===e.data.indexOf("<?xml")){const t=e.data.replace(/^(<\?.*?\?>\s*)*/,"");if(""===t)return;const n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn.xmlInput(n),this._conn.rawInput(e.data),this._handleStreamStart(n)&&this._connect_cb(n)}else if(0===e.data.indexOf("<close ")){const t=(new r.a).parseFromString(e.data,"text/xml").documentElement;this._conn.xmlInput(t),this._conn.rawInput(e.data);const n=t.getAttribute("see-other-uri");if(n){const e=this._conn.service;(e.indexOf("wss:")>=0&&n.indexOf("wss:")>=0||e.indexOf("ws:")>=0)&&(this._conn._changeConnectStatus(i.c.Status.REDIRECT,"Received see-other-uri, resetting connection"),this._conn.reset(),this._conn.service=n,this._connect())}else this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"Received closing stream"),this._conn._doDisconnect()}else{this._replaceMessageHandler();const t=this._streamWrap(e.data),n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn._connect_cb(n,null,e.data)}}_replaceMessageHandler(){this.socket.onmessage=e=>this._onMessage(e)}_disconnect(e){if(this.socket&&this.socket.readyState!==WebSocket.CLOSED){e&&this._conn.send(e);const t=Object(i.a)("close",{xmlns:i.c.NS.FRAMING});this._conn.xmlOutput(t.tree());const n=i.c.serialize(t);this._conn.rawOutput(n);try{this.socket.send(n)}catch(e){i.c.warn("Couldn't send <close /> tag.")}}setTimeout(()=>this._conn._doDisconnect,0)}_doDisconnect(){i.c.debug("WebSockets _doDisconnect was called"),this._closeSocket()}_streamWrap(e){return"<wrapper>"+e+"</wrapper>"}_closeSocket(){if(this.socket)try{this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket.close()}catch(e){i.c.debug(e.message)}this.socket=null}_emptyQueue(){return!0}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(i.c.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected&&this.socket?(i.c.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):i.c.debug("Websocket closed")}_no_auth_received(e){i.c.error("Server did not offer a supported authentication mechanism"),this._conn._changeConnectStatus(i.c.Status.CONNFAIL,i.c.ErrorCondition.NO_AUTH_MECH),e&&e.call(this._conn),this._conn._doDisconnect()}_onDisconnectTimeout(){}_abortAllRequests(){}_onError(e){i.c.error("Websocket error "+e),this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._disconnect()}_onIdle(){const e=this._conn._data;if(e.length>0&&!this._conn.paused){for(let t=0;t<e.length;t++)if(null!==e[t]){let n;n="restart"===e[t]?this._buildStream().tree():e[t];const r=i.c.serialize(n);this._conn.xmlOutput(n),this._conn.rawOutput(r),this.socket.send(r)}this._conn._data=[]}}_onMessage(e){let t;const n='<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';if(e.data===n)return this._conn.rawInput(n),this._conn.xmlInput(e),void(this._conn.disconnecting||this._conn._doDisconnect());if(0===e.data.search("<open ")){if(t=(new r.a).parseFromString(e.data,"text/xml").documentElement,!this._handleStreamStart(t))return}else{const n=this._streamWrap(e.data);t=(new r.a).parseFromString(n,"text/xml").documentElement}return this._checkStreamError(t,i.c.Status.ERROR)?void 0:this._conn.disconnecting&&"presence"===t.firstChild.nodeName&&"unavailable"===t.firstChild.getAttribute("type")?(this._conn.xmlInput(t),void this._conn.rawInput(i.c.serialize(t))):void this._conn._dataRecv(t,e.data)}_onOpen(){i.c.debug("Websocket open");const e=this._buildStream();this._conn.xmlOutput(e.tree());const t=i.c.serialize(e);this._conn.rawOutput(t),this.socket.send(t)}_reqToData(e){return e}_send(){this._conn.flush()}_sendRestart(){clearTimeout(this._conn._idleTimeout),this._conn._onIdle.bind(this._conn)()}}},function(e,t,n){"use strict";t.a=function(){return!1}},function(e,t,n){"use strict";(function(e){var r=n(5),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,s=i&&"object"==typeof e&&e&&!e.nodeType&&e,o=s&&s.exports===i?r.a.Buffer:void 0,a=o?o.allocUnsafe:void 0;t.a=function(e,t){if(t)return e.slice();var n=e.length,r=a?a(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(55)(e))},function(e,t,n){e.exports=function(){"use strict";return function(e,t,n){var r=t.prototype,i=r.format;n.en.ordinal=function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"},r.format=function(e){var t=this,n=this.$locale(),r=this.$utils(),s=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|gggg|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return r.s(t.week(),"w"===e?1:2,"0");case"k":case"kk":return r.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();default:return e}}));return i.bind(this)(s)}}}()},function(e,t,n){var r=n(290),i=n(56);e.exports=function(e,t,n){var s=null==e?0:e.length;return s?(t=n||void 0===t?1:i(t),r(e,t<0?0:t,s)):[]}},function(e,t,n){var r=n(21),i=n(19);e.exports=function(e){return!0===e||!1===e||i(e)&&"[object Boolean]"==r(e)}},function(e,t){e.exports=function(e){return null==e}},function(e,t,n){var r=n(59),i=n(343),s=n(396),o=n(398);e.exports=function(e,t){if(null==e)return{};var n=r(o(e),(function(e){return[e]}));return t=i(t),s(e,n,(function(e,n){return t(e,n[0])}))}},function(e,t,n){var r=n(78),i=n(110),s=n(25),o=n(90),a=n(401);e.exports=function(e){if(null==e)return 0;if(s(e))return o(e)?a(e):e.length;var t=i(e);return"[object Map]"==t||"[object Set]"==t?e.size:r(e).length}},function(e,t,n){"use strict";(function(t){!function(t){var n=/^(b|B)$/,r={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function s(e){var t,s,o,a,c,l,u,d,h,f,p,g,m,v,_,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},y=[],w=0,S=void 0,x=void 0;if(isNaN(e))throw new TypeError("Invalid number");return s=!0===b.bits,p=!0===b.unix,t=b.base||2,f=void 0!==b.round?b.round:p?1:2,l=void 0!==b.locale?b.locale:"",u=b.localeOptions||{},g=void 0!==b.separator?b.separator:"",m=void 0!==b.spacer?b.spacer:p?"":" ",_=b.symbols||{},v=2===t&&b.standard||"jedec",h=b.output||"string",a=!0===b.fullform,c=b.fullforms instanceof Array?b.fullforms:[],S=void 0!==b.exponent?b.exponent:-1,o=2<t?1e3:1024,(d=(x=Number(e))<0)&&(x=-x),(-1===S||isNaN(S))&&(S=Math.floor(Math.log(x)/Math.log(o)))<0&&(S=0),8<S&&(S=8),"exponent"===h?S:(0===x?(y[0]=0,y[1]=p?"":r[v][s?"bits":"bytes"][S]):(w=x/(2===t?Math.pow(2,10*S):Math.pow(1e3,S)),s&&o<=(w*=8)&&S<8&&(w/=o,S++),y[0]=Number(w.toFixed(0<S?f:0)),y[0]===o&&S<8&&void 0===b.exponent&&(y[0]=1,S++),y[1]=10===t&&1===S?s?"kb":"kB":r[v][s?"bits":"bytes"][S],p&&(y[1]="jedec"===v?y[1].charAt(0):0<S?y[1].replace(/B$/,""):y[1],n.test(y[1])&&(y[0]=Math.floor(y[0]),y[1]=""))),d&&(y[0]=-y[0]),y[1]=_[y[1]]||y[1],!0===l?y[0]=y[0].toLocaleString():0<l.length?y[0]=y[0].toLocaleString(l,u):0<g.length&&(y[0]=y[0].toString().replace(".",g)),"array"===h?y:(a&&(y[1]=c[S]?c[S]:i[v][S]+(s?"bit":"byte")+(1===y[0]?"":"s")),"object"===h?{value:y[0],symbol:y[1],exponent:S}:y.join(m)))}s.partial=function(e){return function(t){return s(t,e)}},e.exports=s}("undefined"!=typeof window&&window)}).call(this,n(11))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/form_captcha.html --\x3e\n",e.label&&(t+="\n<label>\n "+n(e.label)+"\n</label>\n"),t+='\n<img src="data:'+n(e.type)+";base64,"+n(e.data)+'">\n<input name="'+n(e.name)+'" type="text" ',e.required&&(t+=' required="required" '),t+=" />\n\n\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_checkbox.html --\x3e\n<div class="form-group">\n <input id="'+n(e.id)+'" name="'+n(e.name)+'" type="checkbox" '+n(e.checked)+" ",e.required&&(t+=" required "),t+=' />\n <label class="form-check-label" for="'+n(e.id)+'">'+n(e.label)+"</label>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t,n="",i=r.escape;Array.prototype.join;return n+='\x3c!-- src/templates/form_select.html --\x3e\n<div class="form-group">\n <label for="'+i(e.id)+'">'+i(e.label)+'</label>\n <select class="form-control" id="'+i(e.id)+'" name="'+i(e.name)+'" ',e.multiple&&(n+=' multiple="multiple" '),n+=">"+(null==(t=e.options)?"":t)+"</select>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;return t+='\x3c!-- src/templates/form_textarea.html --\x3e\n<label class="label-ta">'+n(e.label)+'</label>\n<textarea name="'+n(e.name)+'">'+n(e.value)+"</textarea>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;return t+="\x3c!-- src/templates/form_url.html --\x3e\n<label>\n "+n(e.label)+'\n <a class="form-url" target="_blank" rel="noopener" href="'+n(e.value)+'">'+n(e.value)+"</a>\n</label>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/select_option.html --\x3e\n<option value="'+n(e.value)+'" ',e.selected&&(t+=' selected="selected" '),t+=" >"+n(e.label)+"</option>\n"}},function(e,t,n){"use strict";(function(t){!function(t){var n=/^(b|B)$/,r={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function s(e){var t,s,o,a,c,l,u,d,h,f,p,g,m,v,_,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},y=[],w=0,S=void 0,x=void 0;if(isNaN(e))throw new TypeError("Invalid number");return s=!0===b.bits,p=!0===b.unix,t=b.base||2,f=void 0!==b.round?b.round:p?1:2,l=void 0!==b.locale?b.locale:"",u=b.localeOptions||{},g=void 0!==b.separator?b.separator:"",m=void 0!==b.spacer?b.spacer:p?"":" ",_=b.symbols||{},v=2===t&&b.standard||"jedec",h=b.output||"string",a=!0===b.fullform,c=b.fullforms instanceof Array?b.fullforms:[],S=void 0!==b.exponent?b.exponent:-1,o=2<t?1e3:1024,(d=(x=Number(e))<0)&&(x=-x),(-1===S||isNaN(S))&&(S=Math.floor(Math.log(x)/Math.log(o)))<0&&(S=0),8<S&&(S=8),"exponent"===h?S:(0===x?(y[0]=0,y[1]=p?"":r[v][s?"bits":"bytes"][S]):(w=x/(2===t?Math.pow(2,10*S):Math.pow(1e3,S)),s&&o<=(w*=8)&&S<8&&(w/=o,S++),y[0]=Number(w.toFixed(0<S?f:0)),y[0]===o&&S<8&&void 0===b.exponent&&(y[0]=1,S++),y[1]=10===t&&1===S?s?"kb":"kB":r[v][s?"bits":"bytes"][S],p&&(y[1]="jedec"===v?y[1].charAt(0):0<S?y[1].replace(/B$/,""):y[1],n.test(y[1])&&(y[0]=Math.floor(y[0]),y[1]=""))),d&&(y[0]=-y[0]),y[1]=_[y[1]]||y[1],!0===l?y[0]=y[0].toLocaleString():0<l.length?y[0]=y[0].toLocaleString(l,u):0<g.length&&(y[0]=y[0].toString().replace(".",g)),"array"===h?y:(a&&(y[1]=c[S]?c[S]:i[v][S]+(s?"bit":"byte")+(1===y[0]?"":"s")),"object"===h?{value:y[0],symbol:y[1],exponent:S}:y.join(m)))}s.partial=function(e){return function(t){return s(t,e)}},e.exports=s}("undefined"!=typeof window&&window)}).call(this,n(11))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="";return t+='\x3c!-- src/templates/controlbox_toggle.html --\x3e\n<span class="toggle-feedback">'+(0,r.escape)(e.label_toggle)+"</span>\n"}},function(e,t,n){n(8);e.exports=function(e){return'\x3c!-- src/templates/dragresize.html --\x3e\n<div class="dragresize dragresize-top"></div>\n<div class="dragresize dragresize-topleft"></div>\n<div class="dragresize dragresize-left"></div>\n','\x3c!-- src/templates/dragresize.html --\x3e\n<div class="dragresize dragresize-top"></div>\n<div class="dragresize dragresize-topleft"></div>\n<div class="dragresize dragresize-left"></div>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/room_description.html --\x3e\n\x3c!-- FIXME: check markup in mockup --\x3e\n<div class="room-info">\n<p class="room-info"><strong>'+n(e.label_jid)+"</strong> "+n(e.jid)+'</p>\n<p class="room-info"><strong>'+n(e.label_desc)+"</strong> "+n(e.desc)+'</p>\n<p class="room-info"><strong>'+n(e.label_occ)+"</strong> "+n(e.occ)+'</p>\n<p class="room-info"><strong>'+n(e.label_features)+"</strong>\n <ul>\n ",e.passwordprotected&&(t+='\n <li class="room-info locked">'+n(e.label_requires_auth)+"</li>\n "),t+="\n ",e.hidden&&(t+='\n <li class="room-info">'+n(e.label_hidden)+"</li>\n "),t+="\n ",e.membersonly&&(t+='\n <li class="room-info">'+n(e.label_requires_invite)+"</li>\n "),t+="\n ",e.moderated&&(t+='\n <li class="room-info">'+n(e.label_moderated)+"</li>\n "),t+="\n ",e.nonanonymous&&(t+='\n <li class="room-info">'+n(e.label_non_anon)+"</li>\n "),t+="\n ",e.open&&(t+='\n <li class="room-info">'+n(e.label_open_room)+"</li>\n "),t+="\n ",e.persistent&&(t+='\n <li class="room-info">'+n(e.label_permanent_room)+"</li>\n "),t+="\n ",e.publicroom&&(t+='\n <li class="room-info">'+n(e.label_public)+"</li>\n "),t+="\n ",e.semianonymous&&(t+='\n <li class="room-info">'+n(e.label_semi_anon)+"</li>\n "),t+="\n ",e.temporary&&(t+='\n <li class="room-info">'+n(e.label_temp_room)+"</li>\n "),t+="\n ",e.unmoderated&&(t+='\n <li class="room-info">'+n(e.label_unmoderated)+"</li>\n "),t+="\n </ul>\n</p>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/register_panel.html --\x3e\n<div>\n <form id="converse-register" class="converse-form">\n <legend class="col-form-label">'+n(e.__("Create your account"))+'</legend>\n\n <div class="form-group">\n <label>'+n(e.__("Please enter the XMPP provider to register with:"))+'</label>\n <div class="form-errors hidden"></div>\n\n ',e.default_domain?t+="\n "+n(e.default_domain)+"\n </div>\n ":t+='\n <input class="form-control" required="required" type="text" name="domain" placeholder="'+n(e.domain_placeholder)+'"/>\n <p class="form-text text-muted">'+n(e.help_providers)+' <a href="'+n(e.href_providers)+'" class="url" target="_blank" rel="noopener">'+n(e.help_providers_link)+'</a>.</p>\n </div>\n <fieldset class="buttons">\n <input class="btn btn-primary" type="submit" value="'+n(e.label_register)+'"/>\n <div class="switch-form">\n <p>'+n(e.__("Already have a chat account?"))+'</p>\n <p><a class="login-here toggle-register-login" href="#converse/login">'+n(e.__("Log in here"))+"</a></p>\n </div>\n </fieldset>\n ",t+="\n \x3c!--</div>--\x3e\n </form>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/registration_form.html --\x3e\n<legend class="col-form-label">'+n(e.__("Account Registration:"))+" "+n(e.domain)+'</legend>\n<p class="title">'+n(e.title)+'</p>\n<p class="form-help instructions">'+n(e.instructions)+'</p>\n<div class="form-errors hidden"></div>\n\n<fieldset class="buttons">\n <input type="submit" class="btn btn-primary" value="'+n(e.__("Register"))+'"/>\n ',e.registration_domain||(t+='\n <input type="button" class="btn btn-secondary button-cancel" value="'+n(e.__("Choose a different provider"))+'"/>\n '),t+='\n <div class="switch-form">\n <p>'+n(e.__("Already have a chat account?"))+'</p>\n <p><a class="login-here toggle-register-login" href="#converse/login">'+n(e.__("Log in here"))+"</a></p>\n </div>\n</fieldset>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/registration_request.html --\x3e\n<span class="spinner login-submit fa fa-spinner"></span>\n<p class="info">'+n(e.__("Hold tight, we're fetching the registration form…"))+"</p>\n",e.cancel&&(t+='\n <button class="btn btn-secondary button-cancel hor_centered">'+n(e.__("Cancel"))+"</button>\n"),t+="\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/group_header.html --\x3e\n<a href="#" class="list-toggle group-toggle controlbox-padded" title="'+n(e.desc_group_toggle)+'">\n <span class="fa ',e.toggle_state===e._converse.OPENED?t+=" fa-caret-down ":t+=" fa-caret-right ",t+='">\n </span> '+n(e.label_group)+'</a>\n<ul class="items-list roster-group-contacts ',e.toggle_state===e._converse.CLOSED&&(t+=" collapsed "),t+='"></ul>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/pending_contact.html --\x3e\n",e.allow_chat_pending_contacts&&(t+='\n<a class="list-item-link open-chat w-100" href="#">\n'),t+='\n<span class="pending-contact-name" title="JID: '+n(e.jid)+'">'+n(e.display_name)+"</span> \n",e.allow_chat_pending_contacts&&(t+="</a>"),t+='\n<a class="list-item-action remove-xmpp-contact far fa-trash-alt" title="'+n(e.desc_remove)+'" href="#"></a>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/requesting_contact.html --\x3e\n",e.allow_chat_pending_contacts&&(t+='\n<a class="open-chat w-100"href="#">\n'),t+='\n<span class="req-contact-name w-100" title="JID: '+n(e.jid)+'">'+n(e.display_name)+"</span>\n",e.allow_chat_pending_contacts&&(t+="\n</a>\n"),t+='\n<a class="accept-xmpp-request list-item-action list-item-action--visible fa fa-check"\n aria-label="'+n(e.desc_accept)+'" title="'+n(e.desc_accept)+'" href="#"></a>\n<a class="decline-xmpp-request list-item-action list-item-action--visible fa fa-times"\n aria-label="'+n(e.desc_decline)+'" title="'+n(e.desc_decline)+'" href="#"></a>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/roster.html --\x3e\n<div class="d-flex controlbox-padded">\n <span class="w-100 controlbox-heading controlbox-heading--contacts">'+n(e.heading_contacts)+'</span>\n <a class="controlbox-heading__btn sync-contacts fa fa-sync" title="'+n(e.title_sync_contacts)+'"></a>\n ',e.allow_contact_requests&&(t+='\n <a class="controlbox-heading__btn add-contact fa fa-user-plus"\n title="'+n(e.title_add_contact)+'"\n data-toggle="modal"\n data-target="#add-contact-modal"></a>\n '),t+='\n</div>\n\n<form class="roster-filter-form"></form>\n\n<div class="list-container roster-contacts"></div>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/roster_item.html --\x3e\n<a class="list-item-link cbox-list-item open-chat w-100 ',e.num_unread&&(t+=" unread-msgs "),t+='"\n title="'+n(e.desc_chat)+'" href="#">\n\n <canvas class="avatar" height="30" width="30"></canvas>\n <span class="'+n(e.status_icon)+'" title="'+n(e.desc_status)+'"></span>\n ',e.num_unread&&(t+=' <span class="msgs-indicator">'+n(e.num_unread)+"</span> "),t+='\n <span class="contact-name contact-name--'+n(e.show)+" ",e.num_unread&&(t+=" unread-msgs "),t+='">'+n(e.display_name)+"</span>\n</a>\n",e.allow_contact_removal&&(t+='\n<a class="list-item-action remove-xmpp-contact far fa-trash-alt" title="'+n(e.desc_remove)+'" href="#"></a>\n'),t+="\n"}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);const r={},i={plugins:{add(e,t){if(void 0!==r[e])throw new TypeError('Error: plugin with name "'.concat(e,'" has already been ')+"registered!");r[e]=t}},initialize(e={}){i.load(e).initialize(e)},load:(e={})=>(e.assets_path&&(n.p=e.assets_path),n(418),Object.keys(r).forEach(e=>i.plugins.add(e,r[e])),i)};window.converse=i,t.default=i},function(e,t){function n(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}"function"!=typeof window.CustomEvent&&(n.prototype=window.Event.prototype,window.CustomEvent=n),String.prototype.includes||(String.prototype.includes=function(e,t){"use strict";return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){const n=this.toString();(void 0===t||t>n.length)&&(t=n.length),t-=e.length;const r=n.indexOf(e,t);return-1!==r&&r===t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),String.prototype.splitOnce||(String.prototype.splitOnce=function(e){const t=this.split(e);return[t.shift(),t.join(e)]}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")})},function(e,t,n){"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},function(e,t){var n=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,r=new RegExp("[\\-\\.0-9"+n.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),i=new RegExp("^"+n.source+r.source+"*(?::"+n.source+r.source+"*)?$");function s(){}function o(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function a(e,t,n,r,i,s){for(var o,a=++t,c=0;;){var l=e.charAt(a);switch(l){case"=":if(1===c)o=e.slice(t,a),c=3;else{if(2!==c)throw new Error("attribute equal must after attrName");c=3}break;case"'":case'"':if(3===c||1===c){if(1===c&&(s.warning('attribute value must after "="'),o=e.slice(t,a)),t=a+1,!((a=e.indexOf(l,t))>0))throw new Error("attribute value no end '"+l+"' match");u=e.slice(t,a).replace(/&#?\w+;/g,i),n.add(o,u,t-1),c=5}else{if(4!=c)throw new Error('attribute value must after "="');u=e.slice(t,a).replace(/&#?\w+;/g,i),n.add(o,u,t),s.warning('attribute "'+o+'" missed start quot('+l+")!!"),t=a+1,c=5}break;case"/":switch(c){case 0:n.setTagName(e.slice(t,a));case 5:case 6:case 7:c=7,n.closed=!0;case 4:case 1:case 2:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return s.error("unexpected end of input"),0==c&&n.setTagName(e.slice(t,a)),a;case">":switch(c){case 0:n.setTagName(e.slice(t,a));case 5:case 6:case 7:break;case 4:case 1:"/"===(u=e.slice(t,a)).slice(-1)&&(n.closed=!0,u=u.slice(0,-1));case 2:2===c&&(u=o),4==c?(s.warning('attribute "'+u+'" missed quot(")!!'),n.add(o,u.replace(/&#?\w+;/g,i),t)):("http://www.w3.org/1999/xhtml"===r[""]&&u.match(/^(?:disabled|checked|selected)$/i)||s.warning('attribute "'+u+'" missed value!! "'+u+'" instead!!'),n.add(u,u,t));break;case 3:throw new Error("attribute value missed!!")}return a;case"€":l=" ";default:if(l<=" ")switch(c){case 0:n.setTagName(e.slice(t,a)),c=6;break;case 1:o=e.slice(t,a),c=2;break;case 4:var u=e.slice(t,a).replace(/&#?\w+;/g,i);s.warning('attribute "'+u+'" missed quot(")!!'),n.add(o,u,t);case 5:c=6}else switch(c){case 2:n.tagName;"http://www.w3.org/1999/xhtml"===r[""]&&o.match(/^(?:disabled|checked|selected)$/i)||s.warning('attribute "'+o+'" missed value!! "'+o+'" instead2!!'),n.add(o,o,t),t=a,c=1;break;case 5:s.warning('attribute space is required"'+o+'"!!');case 6:c=1,t=a;break;case 3:c=4,t=a;break;case 7:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function c(e,t,n){for(var r=e.tagName,i=null,s=e.length;s--;){var o=e[s],a=o.qName,c=o.value;if((f=a.indexOf(":"))>0)var l=o.prefix=a.slice(0,f),u=a.slice(f+1),h="xmlns"===l&&u;else u=a,l=null,h="xmlns"===a&&"";o.localName=u,!1!==h&&(null==i&&(i={},d(n,n={})),n[h]=i[h]=c,o.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(h,c))}for(s=e.length;s--;){(l=(o=e[s]).prefix)&&("xml"===l&&(o.uri="http://www.w3.org/XML/1998/namespace"),"xmlns"!==l&&(o.uri=n[l||""]))}var f;(f=r.indexOf(":"))>0?(l=e.prefix=r.slice(0,f),u=e.localName=r.slice(f+1)):(l=null,u=e.localName=r);var p=e.uri=n[l||""];if(t.startElement(p,u,r,e),!e.closed)return e.currentNSMap=n,e.localNSMap=i,!0;if(t.endElement(p,u,r),i)for(l in i)t.endPrefixMapping(l)}function l(e,t,n,r,i){if(/^(?:script|textarea)$/i.test(n)){var s=e.indexOf("</"+n+">",t),o=e.substring(t+1,s);if(/[&<]/.test(o))return/^script$/i.test(n)?(i.characters(o,0,o.length),s):(o=o.replace(/&#?\w+;/g,r),i.characters(o,0,o.length),s)}return t+1}function u(e,t,n,r){var i=r[n];return null==i&&((i=e.lastIndexOf("</"+n+">"))<t&&(i=e.lastIndexOf("</"+n)),r[n]=i),i<t}function d(e,t){for(var n in e)t[n]=e[n]}function h(e,t,n,r){switch(e.charAt(t+2)){case"-":return"-"===e.charAt(t+3)?(i=e.indexOf("--\x3e",t+4))>t?(n.comment(e,t+4,i-t-4),i+3):(r.error("Unclosed comment"),-1):-1;default:if("CDATA["==e.substr(t+3,6)){var i=e.indexOf("]]>",t+9);return n.startCDATA(),n.characters(e,t+9,i-t-9),n.endCDATA(),i+3}var s=function(e,t){var n,r=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;i.lastIndex=t,i.exec(e);for(;n=i.exec(e);)if(r.push(n),n[1])return r}(e,t),o=s.length;if(o>1&&/!doctype/i.test(s[0][0])){var a=s[1][0],c=o>3&&/^public$/i.test(s[2][0])&&s[3][0],l=o>4&&s[4][0],u=s[o-1];return n.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),l&&l.replace(/^(['"])(.*?)\1$/,"$2")),n.endDTD(),u.index+u[0].length}}return-1}function f(e,t,n){var r=e.indexOf("?>",t);if(r){var i=e.substring(t,r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(i){i[0].length;return n.processingInstruction(i[1],i[2]),r+2}return-1}return-1}function p(e){}function g(e,t){return e.__proto__=t,e}s.prototype={parse:function(e,t,n){var r=this.domBuilder;r.startDocument(),d(t,t={}),function(e,t,n,r,i){function s(e){var t=e.slice(1,-1);return t in n?n[t]:"#"===t.charAt(0)?function(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}(parseInt(t.substr(1).replace("x","0x"))):(i.error("entity not found:"+e),e)}function d(t){if(t>S){var n=e.substring(S,t).replace(/&#?\w+;/g,s);b&&g(S),r.characters(n,0,t-S),S=t}}function g(t,n){for(;t>=v&&(n=_.exec(e));)m=n.index,v=m+n[0].length,b.lineNumber++;b.columnNumber=t-m+1}var m=0,v=0,_=/.*(?:\r\n?|\n)|.*$/g,b=r.locator,y=[{currentNSMap:t}],w={},S=0;for(;;){try{var x=e.indexOf("<",S);if(x<0){if(!e.substr(S).match(/^\s*$/)){var E=r.doc,A=E.createTextNode(e.substr(S));E.appendChild(A),r.currentElement=A}return}switch(x>S&&d(x),e.charAt(x+1)){case"/":var C=e.indexOf(">",x+3),j=e.substring(x+2,C),T=y.pop();C<0?(j=e.substring(x+2).replace(/[\s<].*/,""),i.error("end tag name: "+j+" is not complete:"+T.tagName),C=x+1+j.length):j.match(/\s</)&&(j=j.replace(/[\s<].*/,""),i.error("end tag name: "+j+" maybe not complete"),C=x+1+j.length);var O=T.localNSMap,k=T.tagName==j;if(k||T.tagName&&T.tagName.toLowerCase()==j.toLowerCase()){if(r.endElement(T.uri,T.localName,j),O)for(var N in O)r.endPrefixMapping(N);k||i.fatalError("end tag name: "+j+" is not match the current start tagName:"+T.tagName)}else y.push(T);C++;break;case"?":b&&g(x),C=f(e,x,r);break;case"!":b&&g(x),C=h(e,x,r,i);break;default:b&&g(x);var I=new p,M=y[y.length-1].currentNSMap,R=(C=a(e,x,I,M,s,i),I.length);if(!I.closed&&u(e,C,I.tagName,w)&&(I.closed=!0,n.nbsp||i.warning("unclosed xml attribute")),b&&R){for(var D=o(b,{}),P=0;P<R;P++){var L=I[P];g(L.offset),L.locator=o(b,{})}r.locator=D,c(I,r,M)&&y.push(I),r.locator=b}else c(I,r,M)&&y.push(I);"http://www.w3.org/1999/xhtml"!==I.uri||I.closed?C++:C=l(e,C,I.tagName,s,r)}}catch(e){i.error("element parse error: "+e),C=-1}C>S?S=C:d(Math.max(x,S)+1)}}(e,t,n,r,this.errorHandler),r.endDocument()}},p.prototype={setTagName:function(e){if(!i.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,n){if(!i.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:n}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},g({},g.prototype)instanceof g||(g=function(e,t){function n(){}for(t in n.prototype=t,n=new n,e)n[t]=e[t];return n}),t.XMLReader=s},function(e,t,n){"use strict";function r(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e);return t<0?void 0:t}e.exports=function(e){if((e=(e=""+e).replace(/[ \t\n\f\r]/g,"")).length%4==0&&(e=e.replace(/==?$/,"")),e.length%4==1||/[^+/0-9A-Za-z]/.test(e))return null;let t="",n=0,i=0;for(let s=0;s<e.length;s++)n<<=6,n|=r(e[s]),i+=6,24===i&&(t+=String.fromCharCode((16711680&n)>>16),t+=String.fromCharCode((65280&n)>>8),t+=String.fromCharCode(255&n),n=i=0);return 12===i?(n>>=4,t+=String.fromCharCode(n)):18===i&&(n>>=2,t+=String.fromCharCode((65280&n)>>8),t+=String.fromCharCode(255&n)),t}},function(e,t,n){"use strict";function r(e){if(e>=0&&e<64)return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[e]}e.exports=function(e){let t;for(e=""+e,t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return null;let n="";for(t=0;t<e.length;t+=3){const i=[void 0,void 0,void 0,void 0];i[0]=e.charCodeAt(t)>>2,i[1]=(3&e.charCodeAt(t))<<4,e.length>t+1&&(i[1]|=e.charCodeAt(t+1)>>4,i[2]=(15&e.charCodeAt(t+1))<<2),e.length>t+2&&(i[2]|=e.charCodeAt(t+2)>>6,i[3]=63&e.charCodeAt(t+2));for(let e=0;e<i.length;e++)void 0===i[e]?n+="=":n+=r(i[e])}return n}},function(e,t){e.exports=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s}},function(e,t,n){var r=n(292);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(17),i=n(38),s=/^\s+|\s+$/g,o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(s,"");var n=a.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):o.test(e)?NaN:+e}},function(e,t,n){var r=n(39),i=Object.prototype,s=i.hasOwnProperty,o=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=s.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var i=o.call(e);return r&&(t?e[a]=n:delete e[a]),i}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(73),i=n(296),s=n(308),o=n(15);e.exports=function(e,t){return(o(e)?r:i)(e,s(t))}},function(e,t,n){var r=n(297),i=n(307)(r);e.exports=i},function(e,t,n){var r=n(298),i=n(26);e.exports=function(e,t){return e&&r(e,t,i)}},function(e,t,n){var r=n(299)();e.exports=r},function(e,t){e.exports=function(e){return function(t,n,r){for(var i=-1,s=Object(t),o=r(t),a=o.length;a--;){var c=o[e?a:++i];if(!1===n(s[c],c,s))break}return t}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(21),i=n(19);e.exports=function(e){return i(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(21),i=n(57),s=n(19),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1,e.exports=function(e){return s(e)&&i(e.length)&&!!o[r(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var r=n(72),i=t&&!t.nodeType&&t,s=i&&"object"==typeof e&&e&&!e.nodeType&&e,o=s&&s.exports===i&&r.process,a=function(){try{var e=s&&s.require&&s.require("util").types;return e||o&&o.binding&&o.binding("util")}catch(e){}}();e.exports=a}).call(this,n(36)(e))},function(e,t,n){var r=n(80)(Object.keys,Object);e.exports=r},function(e,t,n){var r=n(25);e.exports=function(e,t){return function(n,i){if(null==n)return n;if(!r(n))return e(n,i);for(var s=n.length,o=t?s:-1,a=Object(n);(t?o--:++o<s)&&!1!==i(a[o],o,a););return n}}},function(e,t,n){var r=n(31);e.exports=function(e){return"function"==typeof e?e:r}},function(e,t,n){var r=n(310),i=n(315),s=n(88),o=i((function(e,t){r(t,s(t),e)}));e.exports=o},function(e,t,n){var r=n(81),i=n(82);e.exports=function(e,t,n,s){var o=!n;n||(n={});for(var a=-1,c=t.length;++a<c;){var l=t[a],u=s?s(n[l],e[l],l,n,e):void 0;void 0===u&&(u=e[l]),o?i(n,l,u):r(n,l,u)}return n}},function(e,t,n){var r=n(48),i=n(312),s=n(17),o=n(84),a=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,d=l.hasOwnProperty,h=RegExp("^"+u.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!s(e)||i(e))&&(r(e)?h:a).test(o(e))}},function(e,t,n){var r,i=n(313),s=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!s&&s in e}},function(e,t,n){var r=n(10)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(85),i=n(319);e.exports=function(e){return r((function(t,n){var r=-1,s=n.length,o=s>1?n[s-1]:void 0,a=s>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(s--,o):void 0,a&&i(n[0],n[1],a)&&(o=s<3?void 0:o,s=1),t=Object(t);++r<s;){var c=n[r];c&&e(t,c,r,o)}return t}))}},function(e,t,n){var r=n(58),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var s=arguments,o=-1,a=i(s.length-t,0),c=Array(a);++o<a;)c[o]=s[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=s[o];return l[t]=n(c),r(e,this,l)}}},function(e,t,n){var r=n(318),i=n(83),s=n(31),o=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:s;e.exports=o},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t,n){var r=n(40),i=n(25),s=n(30),o=n(17);e.exports=function(e,t,n){if(!o(n))return!1;var a=typeof t;return!!("number"==a?i(n)&&s(t,n.length):"string"==a&&t in n)&&r(n[t],e)}},function(e,t,n){var r=n(17),i=n(79),s=n(321),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return s(e);var t=i(e),n=[];for(var a in e)("constructor"!=a||!t&&o.call(e,a))&&n.push(a);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t){e.exports=function(e,t,n,r){for(var i=e.length,s=n+(r?1:-1);r?s--:++s<i;)if(t(e[s],s,e))return s;return-1}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}},function(e,t,n){var r=n(59);e.exports=function(e,t){return r(t,(function(t){return e[t]}))}},function(e,t,n){var r=n(91),i=n(327),s=n(328),o=n(94),a=n(341),c=n(98),l=n(342),u=n(101),d=n(102),h=n(56),f=Math.max;e.exports=function(e,t,n,p,g,m,v,_){var b=2&t;if(!b&&"function"!=typeof e)throw new TypeError("Expected a function");var y=p?p.length:0;if(y||(t&=-97,p=g=void 0),v=void 0===v?v:f(h(v),0),_=void 0===_?_:h(_),y-=g?g.length:0,64&t){var w=p,S=g;p=g=void 0}var x=b?void 0:c(e),E=[e,t,n,p,g,w,S,m,v,_];if(x&&l(E,x),e=E[0],t=E[1],n=E[2],p=E[3],g=E[4],!(_=E[9]=void 0===E[9]?b?0:e.length:f(E[9]-y,0))&&24&t&&(t&=-25),t&&1!=t)A=8==t||16==t?s(e,t,_):32!=t&&33!=t||g.length?o.apply(void 0,E):a(e,t,n,p);else var A=i(e,t,n);return d((x?r:u)(A,E),e,t)}},function(e,t,n){var r=n(41),i=n(10);e.exports=function(e,t,n){var s=1&t,o=r(e);return function t(){var r=this&&this!==i&&this instanceof t?o:e;return r.apply(s?n:this,arguments)}}},function(e,t,n){var r=n(58),i=n(41),s=n(94),o=n(97),a=n(63),c=n(42),l=n(10);e.exports=function(e,t,n){var u=i(e);return function i(){for(var d=arguments.length,h=Array(d),f=d,p=a(i);f--;)h[f]=arguments[f];var g=d<3&&h[0]!==p&&h[d-1]!==p?[]:c(h,p);if((d-=g.length)<n)return o(e,t,s,i.placeholder,void 0,h,g,void 0,void 0,n-d);var m=this&&this!==l&&this instanceof i?u:e;return r(m,this,h)}}},function(e,t){e.exports=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}},function(e,t,n){var r=n(61),i=n(98),s=n(332),o=n(334);e.exports=function(e){var t=s(e),n=o[t];if("function"!=typeof n||!(t in r.prototype))return!1;if(e===n)return!0;var a=i(n);return!!a&&e===a[0]}},function(e,t){e.exports=function(){}},function(e,t,n){var r=n(333),i=Object.prototype.hasOwnProperty;e.exports=function(e){for(var t=e.name+"",n=r[t],s=i.call(r,t)?n.length:0;s--;){var o=n[s],a=o.func;if(null==a||a==e)return o.name}return t}},function(e,t){e.exports={}},function(e,t,n){var r=n(61),i=n(99),s=n(62),o=n(15),a=n(19),c=n(335),l=Object.prototype.hasOwnProperty;function u(e){if(a(e)&&!o(e)&&!(e instanceof r)){if(e instanceof i)return e;if(l.call(e,"__wrapped__"))return c(e)}return new i(e)}u.prototype=s.prototype,u.prototype.constructor=u,e.exports=u},function(e,t,n){var r=n(61),i=n(99),s=n(100);e.exports=function(e){if(e instanceof r)return e.clone();var t=new i(e.__wrapped__,e.__chain__);return t.__actions__=s(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}},function(e,t){var n=/\{\n\/\* \[wrapped with (.+)\] \*/,r=/,? & /;e.exports=function(e){var t=e.match(n);return t?t[1].split(r):[]}},function(e,t){var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,t){var r=t.length;if(!r)return e;var i=r-1;return t[i]=(r>1?"& ":"")+t[i],t=t.join(r>2?", ":" "),e.replace(n,"{\n/* [wrapped with "+t+"] */\n")}},function(e,t,n){var r=n(73),i=n(339),s=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,t){return r(s,(function(n){var r="_."+n[0];t&n[1]&&!i(e,r)&&e.push(r)})),e.sort()}},function(e,t,n){var r=n(89);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(100),i=n(30),s=Math.min;e.exports=function(e,t){for(var n=e.length,o=s(t.length,n),a=r(e);o--;){var c=t[o];e[o]=i(c,n)?a[c]:void 0}return e}},function(e,t,n){var r=n(58),i=n(41),s=n(10);e.exports=function(e,t,n,o){var a=1&t,c=i(e);return function t(){for(var i=-1,l=arguments.length,u=-1,d=o.length,h=Array(d+l),f=this&&this!==s&&this instanceof t?c:e;++u<d;)h[u]=o[u];for(;l--;)h[u++]=arguments[++i];return r(f,a?n:this,h)}}},function(e,t,n){var r=n(95),i=n(96),s=n(42),o=Math.min;e.exports=function(e,t){var n=e[1],a=t[1],c=n|a,l=c<131,u=128==a&&8==n||128==a&&256==n&&e[7].length<=t[8]||384==a&&t[7].length<=t[8]&&8==n;if(!l&&!u)return e;1&a&&(e[2]=t[2],c|=1&n?0:4);var d=t[3];if(d){var h=e[3];e[3]=h?r(h,d,t[4]):d,e[4]=h?s(e[3],"__lodash_placeholder__"):t[4]}return(d=t[5])&&(h=e[5],e[5]=h?i(h,d,t[6]):d,e[6]=h?s(e[5],"__lodash_placeholder__"):t[6]),(d=t[7])&&(e[7]=d),128&a&&(e[8]=null==e[8]?t[8]:o(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=c,e}},function(e,t,n){var r=n(344),i=n(385),s=n(31),o=n(15),a=n(394);e.exports=function(e){return"function"==typeof e?e:null==e?s:"object"==typeof e?o(e)?i(e[0],e[1]):r(e):a(e)}},function(e,t,n){var r=n(345),i=n(384),s=n(112);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?s(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(103),i=n(104);e.exports=function(e,t,n,s){var o=n.length,a=o,c=!s;if(null==e)return!a;for(e=Object(e);o--;){var l=n[o];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++o<a;){var u=(l=n[o])[0],d=e[u],h=l[1];if(c&&l[2]){if(void 0===d&&!(u in e))return!1}else{var f=new r;if(s)var p=s(d,h,u,e,t,f);if(!(void 0===p?i(h,d,3,s,f):p))return!1}}return!0}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(44),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(44);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(44);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(44);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},function(e,t,n){var r=n(43);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(43),i=n(64),s=n(65);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var o=n.__data__;if(!i||o.length<199)return o.push([e,t]),this.size=++n.size,this;n=this.__data__=new s(o)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(357),i=n(43),s=n(64);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(s||i),string:new r}}},function(e,t,n){var r=n(358),i=n(359),s=n(360),o=n(361),a=n(362);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=s,c.prototype.has=o,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(45);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(45),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(45),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},function(e,t,n){var r=n(45);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(46);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(46);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(46);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(46);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},function(e,t,n){var r=n(103),i=n(105),s=n(374),o=n(378),a=n(110),c=n(15),l=n(76),u=n(77),d="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,f,p,g){var m=c(e),v=c(t),_=m?"[object Array]":a(e),b=v?"[object Array]":a(t),y=(_="[object Arguments]"==_?d:_)==d,w=(b="[object Arguments]"==b?d:b)==d,S=_==b;if(S&&l(e)){if(!l(t))return!1;m=!0,y=!1}if(S&&!y)return g||(g=new r),m||u(e)?i(e,t,n,f,p,g):s(e,t,_,n,f,p,g);if(!(1&n)){var x=y&&h.call(e,"__wrapped__"),E=w&&h.call(t,"__wrapped__");if(x||E){var A=x?e.value():e,C=E?t.value():t;return g||(g=new r),p(A,C,n,f,g)}}return!!S&&(g||(g=new r),o(e,t,n,f,p,g))}},function(e,t,n){var r=n(65),i=n(370),s=n(371);function o(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}o.prototype.add=o.prototype.push=i,o.prototype.has=s,e.exports=o},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(39),i=n(375),s=n(40),o=n(105),a=n(376),c=n(377),l=r?r.prototype:void 0,u=l?l.valueOf:void 0;e.exports=function(e,t,n,r,l,d,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return s(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var p=1&r;if(f||(f=c),e.size!=t.size&&!p)return!1;var g=h.get(e);if(g)return g==t;r|=2,h.set(e,t);var m=o(f(e),f(t),r,l,d,h);return h.delete(e),m;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},function(e,t,n){var r=n(10).Uint8Array;e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(379),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,s,o,a){var c=1&n,l=r(e),u=l.length;if(u!=r(t).length&&!c)return!1;for(var d=u;d--;){var h=l[d];if(!(c?h in t:i.call(t,h)))return!1}var f=a.get(e),p=a.get(t);if(f&&p)return f==t&&p==e;var g=!0;a.set(e,t),a.set(t,e);for(var m=c;++d<u;){var v=e[h=l[d]],_=t[h];if(s)var b=c?s(_,v,h,t,e,a):s(v,_,h,e,t,a);if(!(void 0===b?v===_||o(v,_,n,s,a):b)){g=!1;break}m||(m="constructor"==h)}if(g&&!m){var y=e.constructor,w=t.constructor;y==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof y&&y instanceof y&&"function"==typeof w&&w instanceof w||(g=!1)}return a.delete(e),a.delete(t),g}},function(e,t,n){var r=n(106),i=n(108),s=n(26);e.exports=function(e){return r(e,s,i)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,s=[];++n<r;){var o=e[n];t(o,n,e)&&(s[i++]=o)}return s}},function(e,t,n){var r=n(22)(n(10),"DataView");e.exports=r},function(e,t,n){var r=n(22)(n(10),"Promise");e.exports=r},function(e,t,n){var r=n(22)(n(10),"Set");e.exports=r},function(e,t,n){var r=n(111),i=n(26);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var s=t[n],o=e[s];t[n]=[s,o,r(o)]}return t}},function(e,t,n){var r=n(104),i=n(386),s=n(391),o=n(67),a=n(111),c=n(112),l=n(32);e.exports=function(e,t){return o(e)&&a(t)?c(l(e),t):function(n){var o=i(n,e);return void 0===o&&o===t?s(n,e):r(t,o,3)}}},function(e,t,n){var r=n(66);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},function(e,t,n){var r=n(388),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,s=/\\(\\)?/g,o=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,r,i){t.push(r?i.replace(s,"$1"):n||e)})),t}));e.exports=o},function(e,t,n){var r=n(389);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(65);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var o=e.apply(this,r);return n.cache=s.set(i,o)||s,o};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},function(e,t,n){var r=n(39),i=n(59),s=n(15),o=n(38),a=r?r.prototype:void 0,c=a?a.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(s(t))return i(t,e)+"";if(o(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t,n){var r=n(392),i=n(393);e.exports=function(e,t){return null!=e&&i(e,t,r)}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(47),i=n(75),s=n(15),o=n(30),a=n(57),c=n(32);e.exports=function(e,t,n){for(var l=-1,u=(t=r(t,e)).length,d=!1;++l<u;){var h=c(t[l]);if(!(d=null!=e&&n(e,h)))break;e=e[h]}return d||++l!=u?d:!!(u=null==e?0:e.length)&&a(u)&&o(h,u)&&(s(e)||i(e))}},function(e,t,n){var r=n(114),i=n(395),s=n(67),o=n(32);e.exports=function(e){return s(e)?r(o(e)):i(e)}},function(e,t,n){var r=n(66);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(66),i=n(397),s=n(47);e.exports=function(e,t,n){for(var o=-1,a=t.length,c={};++o<a;){var l=t[o],u=r(e,l);n(u,l)&&i(c,s(l,e),u)}return c}},function(e,t,n){var r=n(81),i=n(47),s=n(30),o=n(17),a=n(32);e.exports=function(e,t,n,c){if(!o(e))return e;for(var l=-1,u=(t=i(t,e)).length,d=u-1,h=e;null!=h&&++l<u;){var f=a(t[l]),p=n;if("__proto__"===f||"constructor"===f||"prototype"===f)return e;if(l!=d){var g=h[f];void 0===(p=c?c(g,f,h):void 0)&&(p=o(g)?g:s(t[l+1])?[]:{})}r(h,f,p),h=h[f]}return e}},function(e,t,n){var r=n(106),i=n(399),s=n(88);e.exports=function(e){return r(e,s,i)}},function(e,t,n){var r=n(107),i=n(400),s=n(108),o=n(109),a=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,s(e)),e=i(e);return t}:o;e.exports=a},function(e,t,n){var r=n(80)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(402),i=n(403),s=n(404);e.exports=function(e){return i(e)?s(e):r(e)}},function(e,t,n){var r=n(114)("length");e.exports=r},function(e,t){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return n.test(e)}},function(e,t){var n="[\\ud800-\\udfff]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",s="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+r+"|"+i+")"+"?",l="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[s,o,a].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),u="(?:"+[s+r+"?",r,o,a,n].join("|")+")",d=RegExp(i+"(?="+i+")|"+u+l,"g");e.exports=function(e){for(var t=d.lastIndex=0;d.test(e);)++t;return t}},function(e,t,n){"use strict";n(54);var r=n(0);const i={};i.debug=r.e.LogLevel.DEBUG,i.info=r.e.LogLevel.INFO,i.warn=r.e.LogLevel.WARN,i.error=r.e.LogLevel.ERROR,i.fatal=r.e.LogLevel.FATAL,r.e.WorkerWebsocket=class extends r.e.Websocket{constructor(e){super(e),this._conn=e,this.worker=new SharedWorker(this._conn.options.worker,"Strophe XMPP Connection"),this.worker.onerror=e=>{var t;null===(t=console)||void 0===t||t.error(e),r.e.log(r.e.LogLevel.ERROR,"Shared Worker Error: ".concat(e))}}get socket(){return{send:e=>this.worker.port.postMessage(["send",e])}}_connect(){this._messageHandler=e=>this._onInitialMessage(e),this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_connect",this._conn.service,this._conn.jid])}_attach(e){this._messageHandler=e=>this._onMessage(e),this._conn.connect_callback=e,this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_attach",this._conn.service])}_attachCallback(e,t){e===r.e.Status.ATTACHED?(this._conn.jid=t,this._conn.authenticated=!0,this._conn.connected=!0,this._conn.restored=!0,this._conn._changeConnectStatus(r.e.Status.ATTACHED)):e===r.e.Status.ATTACHFAIL&&(this._conn.authenticated=!1,this._conn.connected=!1,this._conn.restored=!1,this._conn._changeConnectStatus(r.e.Status.ATTACHFAIL))}_disconnect(e,t){t&&this._conn.send(t);const n=Object(r.a)("close",{xmlns:r.e.NS.FRAMING});this._conn.xmlOutput(n.tree());const i=r.e.serialize(n);this._conn.rawOutput(i),this.worker.port.postMessage(["send",i]),this._conn._doDisconnect()}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(r.e.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected?(r.e.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(r.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):r.e.debug("Websocket closed")}_closeSocket(){this.worker.port.postMessage(["_closeSocket"])}_replaceMessageHandler(){this._messageHandler=e=>this._onMessage(e)}_onWorkerMessage(e){const{data:t}=e,n=t[0];if("_onMessage"===n)this._messageHandler(t[1]);else if(n in this)try{this[n].apply(this,e.data.slice(1))}catch(e){r.e.log(r.e.LogLevel.ERROR,e)}else if("log"===n){const e=t[1],n=t[2];r.e.log(i[e],n)}else r.e.log(r.e.LogLevel.ERROR,"Found unhandled service worker message: ".concat(t))}}},function(e,t,n){var r={"./af/LC_MESSAGES/converse.po":[419,139],"./ar/LC_MESSAGES/converse.po":[420,140],"./bg/LC_MESSAGES/converse.po":[421,141],"./ca/LC_MESSAGES/converse.po":[422,142],"./cs/LC_MESSAGES/converse.po":[423,143],"./da/LC_MESSAGES/converse.po":[424,144],"./de/LC_MESSAGES/converse.po":[425,147],"./eo/LC_MESSAGES/converse.po":[426,148],"./es/LC_MESSAGES/converse.po":[427,149],"./eu/LC_MESSAGES/converse.po":[428,150],"./fi/LC_MESSAGES/converse.po":[429,151],"./fr/LC_MESSAGES/converse.po":[430,152],"./gl/LC_MESSAGES/converse.po":[431,153],"./he/LC_MESSAGES/converse.po":[432,154],"./hi/LC_MESSAGES/converse.po":[433,155],"./hu/LC_MESSAGES/converse.po":[434,156],"./id/LC_MESSAGES/converse.po":[435,157],"./it/LC_MESSAGES/converse.po":[436,158],"./ja/LC_MESSAGES/converse.po":[437,159],"./lt/LC_MESSAGES/converse.po":[438,160],"./mr/LC_MESSAGES/converse.po":[439,161],"./nb/LC_MESSAGES/converse.po":[440,162],"./nl/LC_MESSAGES/converse.po":[441,163],"./nl_BE/LC_MESSAGES/converse.po":[442,164],"./oc/LC_MESSAGES/converse.po":[443,165],"./pl/LC_MESSAGES/converse.po":[444,166],"./pt/LC_MESSAGES/converse.po":[445,167],"./pt_BR/LC_MESSAGES/converse.po":[446,168],"./ro/LC_MESSAGES/converse.po":[447,169],"./ru/LC_MESSAGES/converse.po":[448,170],"./th/LC_MESSAGES/converse.po":[449,171],"./tr/LC_MESSAGES/converse.po":[450,172],"./uk/LC_MESSAGES/converse.po":[451,173],"./vi/LC_MESSAGES/converse.po":[452,174],"./zh_CN/LC_MESSAGES/converse.po":[453,175],"./zh_TW/LC_MESSAGES/converse.po":[454,176]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n.t(i,3)}))}i.keys=function(){return Object.keys(r)},i.id=406,e.exports=i},function(e,t,n){var r={"./af":[147,0],"./af.js":[147,0],"./ar":[154,1],"./ar-dz":[148,2],"./ar-dz.js":[148,2],"./ar-kw":[149,3],"./ar-kw.js":[149,3],"./ar-ly":[150,4],"./ar-ly.js":[150,4],"./ar-ma":[151,5],"./ar-ma.js":[151,5],"./ar-sa":[152,6],"./ar-sa.js":[152,6],"./ar-tn":[153,7],"./ar-tn.js":[153,7],"./ar.js":[154,1],"./az":[155,8],"./az.js":[155,8],"./be":[156,9],"./be.js":[156,9],"./bg":[157,10],"./bg.js":[157,10],"./bi":[158,11],"./bi.js":[158,11],"./bm":[159,12],"./bm.js":[159,12],"./bn":[160,13],"./bn.js":[160,13],"./bo":[161,14],"./bo.js":[161,14],"./br":[162,15],"./br.js":[162,15],"./bs":[163,16],"./bs.js":[163,16],"./ca":[164,17],"./ca.js":[164,17],"./cs":[165,18],"./cs.js":[165,18],"./cv":[166,19],"./cv.js":[166,19],"./cy":[167,20],"./cy.js":[167,20],"./da":[168,21],"./da.js":[168,21],"./de":[171,22],"./de-at":[169,23],"./de-at.js":[169,23],"./de-ch":[170,24],"./de-ch.js":[170,24],"./de.js":[171,22],"./dv":[172,25],"./dv.js":[172,25],"./el":[173,26],"./el.js":[173,26],"./en":[183,27],"./en-SG":[174,28],"./en-SG.js":[174,28],"./en-au":[175,29],"./en-au.js":[175,29],"./en-ca":[176,30],"./en-ca.js":[176,30],"./en-gb":[177,31],"./en-gb.js":[177,31],"./en-ie":[178,32],"./en-ie.js":[178,32],"./en-il":[179,33],"./en-il.js":[179,33],"./en-in":[180,34],"./en-in.js":[180,34],"./en-nz":[181,35],"./en-nz.js":[181,35],"./en-tt":[182,36],"./en-tt.js":[182,36],"./en.js":[183,27],"./eo":[184,37],"./eo.js":[184,37],"./es":[188,38],"./es-do":[185,39],"./es-do.js":[185,39],"./es-pr":[186,40],"./es-pr.js":[186,40],"./es-us":[187,41],"./es-us.js":[187,41],"./es.js":[188,38],"./et":[189,42],"./et.js":[189,42],"./eu":[190,43],"./eu.js":[190,43],"./fa":[191,44],"./fa.js":[191,44],"./fi":[192,45],"./fi.js":[192,45],"./fo":[193,46],"./fo.js":[193,46],"./fr":[196,47],"./fr-ca":[194,48],"./fr-ca.js":[194,48],"./fr-ch":[195,49],"./fr-ch.js":[195,49],"./fr.js":[196,47],"./fy":[197,50],"./fy.js":[197,50],"./ga":[198,51],"./ga.js":[198,51],"./gd":[199,52],"./gd.js":[199,52],"./gl":[200,53],"./gl.js":[200,53],"./gom-latn":[201,54],"./gom-latn.js":[201,54],"./gu":[202,55],"./gu.js":[202,55],"./he":[203,56],"./he.js":[203,56],"./hi":[204,57],"./hi.js":[204,57],"./hr":[205,58],"./hr.js":[205,58],"./ht":[206,59],"./ht.js":[206,59],"./hu":[207,60],"./hu.js":[207,60],"./hy-am":[208,61],"./hy-am.js":[208,61],"./id":[209,62],"./id.js":[209,62],"./index.d.ts":[455,145],"./is":[210,63],"./is.js":[210,63],"./it":[212,64],"./it-ch":[211,65],"./it-ch.js":[211,65],"./it.js":[212,64],"./ja":[213,66],"./ja.js":[213,66],"./jv":[214,67],"./jv.js":[214,67],"./ka":[215,68],"./ka.js":[215,68],"./kk":[216,69],"./kk.js":[216,69],"./km":[217,70],"./km.js":[217,70],"./kn":[218,71],"./kn.js":[218,71],"./ko":[219,72],"./ko.js":[219,72],"./ku":[220,73],"./ku.js":[220,73],"./ky":[221,74],"./ky.js":[221,74],"./lb":[222,75],"./lb.js":[222,75],"./lo":[223,76],"./lo.js":[223,76],"./lt":[224,77],"./lt.js":[224,77],"./lv":[225,78],"./lv.js":[225,78],"./me":[226,79],"./me.js":[226,79],"./mi":[227,80],"./mi.js":[227,80],"./mk":[228,81],"./mk.js":[228,81],"./ml":[229,82],"./ml.js":[229,82],"./mn":[230,83],"./mn.js":[230,83],"./mr":[231,84],"./mr.js":[231,84],"./ms":[233,85],"./ms-my":[232,86],"./ms-my.js":[232,86],"./ms.js":[233,85],"./mt":[234,87],"./mt.js":[234,87],"./my":[235,88],"./my.js":[235,88],"./nb":[236,89],"./nb.js":[236,89],"./ne":[237,90],"./ne.js":[237,90],"./nl":[239,91],"./nl-be":[238,92],"./nl-be.js":[238,92],"./nl.js":[239,91],"./nn":[240,93],"./nn.js":[240,93],"./oc-lnc":[241,94],"./oc-lnc.js":[241,94],"./pa-in":[242,95],"./pa-in.js":[242,95],"./pl":[243,96],"./pl.js":[243,96],"./pt":[245,97],"./pt-br":[244,98],"./pt-br.js":[244,98],"./pt.js":[245,97],"./ro":[246,99],"./ro.js":[246,99],"./ru":[247,100],"./ru.js":[247,100],"./rw":[248,101],"./rw.js":[248,101],"./sd":[249,102],"./sd.js":[249,102],"./se":[250,103],"./se.js":[250,103],"./si":[251,104],"./si.js":[251,104],"./sk":[252,105],"./sk.js":[252,105],"./sl":[253,106],"./sl.js":[253,106],"./sq":[254,107],"./sq.js":[254,107],"./sr":[256,108],"./sr-cyrl":[255,109],"./sr-cyrl.js":[255,109],"./sr.js":[256,108],"./ss":[257,110],"./ss.js":[257,110],"./sv":[258,111],"./sv.js":[258,111],"./sw":[259,112],"./sw.js":[259,112],"./ta":[260,113],"./ta.js":[260,113],"./te":[261,114],"./te.js":[261,114],"./tet":[262,115],"./tet.js":[262,115],"./tg":[263,116],"./tg.js":[263,116],"./th":[264,117],"./th.js":[264,117],"./tk":[265,118],"./tk.js":[265,118],"./tl-ph":[266,119],"./tl-ph.js":[266,119],"./tlh":[267,120],"./tlh.js":[267,120],"./tr":[268,121],"./tr.js":[268,121],"./types.d.ts":[456,146],"./tzl":[269,122],"./tzl.js":[269,122],"./tzm":[271,123],"./tzm-latn":[270,124],"./tzm-latn.js":[270,124],"./tzm.js":[271,123],"./ug-cn":[272,125],"./ug-cn.js":[272,125],"./uk":[273,126],"./uk.js":[273,126],"./ur":[274,127],"./ur.js":[274,127],"./uz":[276,128],"./uz-latn":[275,129],"./uz-latn.js":[275,129],"./uz.js":[276,128],"./vi":[277,130],"./vi.js":[277,130],"./x-pseudo":[278,131],"./x-pseudo.js":[278,131],"./yo":[279,132],"./yo.js":[279,132],"./zh":[283,133],"./zh-cn":[280,134],"./zh-cn.js":[280,134],"./zh-hk":[281,135],"./zh-hk.js":[281,135],"./zh-tw":[282,136],"./zh-tw.js":[282,136],"./zh.js":[283,133]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n.t(i,7)}))}i.keys=function(){return Object.keys(r)},i.id=407,e.exports=i},function(e,t,n){var r=n(409)({"&":"&","<":"<",">":">",'"':""","'":"'"});e.exports=r},function(e,t){e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},function(e,t,n){"use strict";var r=n(14),i=n(1);i.c.Request=class{constructor(e,t,n,r){this.id=++i.c._requestId,this.xmlData=e,this.data=i.c.serialize(e),this.origFunc=t,this.func=t,this.rid=n,this.date=NaN,this.sends=r||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;return(new Date-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;return(new Date-this.dead)/1e3},this.xhr=this._newXHR()}getResponse(){let e=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){if(e=this.xhr.responseXML.documentElement,"parsererror"===e.tagName)throw i.c.error("invalid response received"),i.c.error("responseText: "+this.xhr.responseText),i.c.error("responseXML: "+i.c.serialize(this.xhr.responseXML)),new Error("parsererror")}else if(this.xhr.responseText){if(i.c.debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."),e=(new r.a).parseFromString(this.xhr.responseText,"application/xml").documentElement,!e)throw new Error("Parsing produced null node");if(e.querySelector("parsererror")){i.c.error("invalid response received: "+e.querySelector("parsererror").textContent),i.c.error("responseText: "+this.xhr.responseText);const t=new Error;throw t.name=i.c.ErrorCondition.BAD_FORMAT,t}}return e}_newXHR(){let e=null;return window.XMLHttpRequest?(e=new XMLHttpRequest,e.overrideMimeType&&e.overrideMimeType("text/xml; charset=utf-8")):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),e.onreadystatechange=this.func.bind(null,this),e}},i.c.Bosh=class e{constructor(e){this._conn=e,this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.hold=1,this.wait=60,this.window=5,this.errors=0,this.inactivity=null,this.lastResponseHeaders=null,this._requests=[]}_buildBody(){const e=Object(i.a)("body",{rid:this.rid++,xmlns:i.c.NS.HTTPBIND});return null!==this.sid&&e.attrs({sid:this.sid}),this._conn.options.keepalive&&this._conn._sessionCachingSupported()&&this._cacheSession(),e}_reset(){this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.errors=0,this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_connect(e,t,n){this.wait=e||this.wait,this.hold=t||this.hold,this.errors=0;const r=this._buildBody().attrs({to:this._conn.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":i.c.NS.BOSH});n&&r.attrs({route:n});const s=this._conn._connect_cb;this._requests.push(new i.c.Request(r.tree(),this._onRequestStateChange.bind(this,s.bind(this._conn)),r.tree().getAttribute("rid"))),this._throttledRequestHandler()}_attach(e,t,n,r,s,o,a){this._conn.jid=e,this.sid=t,this.rid=n,this._conn.connect_callback=r,this._conn.domain=i.c.getDomainFromJid(this._conn.jid),this._conn.authenticated=!0,this._conn.connected=!0,this.wait=s||this.wait,this.hold=o||this.hold,this.window=a||this.window,this._conn._changeConnectStatus(i.c.Status.ATTACHED,null)}_restore(e,t,n,r,s){const o=JSON.parse(window.sessionStorage.getItem("strophe-bosh-session"));if(!(null!=o&&o.rid&&o.sid&&o.jid&&(null==e||i.c.getBareJidFromJid(o.jid)===i.c.getBareJidFromJid(e)||null===i.c.getNodeFromJid(e)&&i.c.getDomainFromJid(o.jid)===e))){const e=new Error("_restore: no restoreable session.");throw e.name="StropheSessionError",e}this._conn.restored=!0,this._attach(o.jid,o.sid,o.rid,t,n,r,s)}_cacheSession(){this._conn.authenticated?this._conn.jid&&this.rid&&this.sid&&window.sessionStorage.setItem("strophe-bosh-session",JSON.stringify({jid:this._conn.jid,rid:this.rid,sid:this.sid})):window.sessionStorage.removeItem("strophe-bosh-session")}_connect_cb(e){const t=e.getAttribute("type");if(null!==t&&"terminate"===t){let t=e.getAttribute("condition");i.c.error("BOSH-Connection failed: "+t);const n=e.getElementsByTagName("conflict");return null!==t?("remote-stream-error"===t&&n.length>0&&(t="conflict"),this._conn._changeConnectStatus(i.c.Status.CONNFAIL,t)):this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"unknown"),this._conn._doDisconnect(t),i.c.Status.CONNFAIL}this.sid||(this.sid=e.getAttribute("sid"));const n=e.getAttribute("requests");n&&(this.window=parseInt(n,10));const r=e.getAttribute("hold");r&&(this.hold=parseInt(r,10));const s=e.getAttribute("wait");s&&(this.wait=parseInt(s,10));const o=e.getAttribute("inactivity");o&&(this.inactivity=parseInt(o,10))}_disconnect(e){this._sendTerminate(e)}_doDisconnect(){this.sid=null,this.rid=Math.floor(4294967295*Math.random()),this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_emptyQueue(){return 0===this._requests.length}_callProtocolErrorHandlers(t){const n=e._getRequestStatus(t),r=this._conn.protocolErrorHandlers.HTTP[n];r&&r.call(this,n)}_hitError(e){this.errors++,i.c.warn("request errored, status: "+e+", number of errors: "+this.errors),this.errors>4&&this._conn._onDisconnectTimeout()}_no_auth_received(e){i.c.warn("Server did not yet offer a supported authentication mechanism. Sending a blank poll request."),e=e?e.bind(this._conn):this._conn._connect_cb.bind(this._conn);const t=this._buildBody();this._requests.push(new i.c.Request(t.tree(),this._onRequestStateChange.bind(this,e),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}_onDisconnectTimeout(){this._abortAllRequests()}_abortAllRequests(){for(;this._requests.length>0;){const e=this._requests.pop();e.abort=!0,e.xhr.abort(),e.xhr.onreadystatechange=function(){}}}_onIdle(){const e=this._conn._data;if(this._conn.authenticated&&0===this._requests.length&&0===e.length&&!this._conn.disconnecting&&(i.c.debug("no requests during idle cycle, sending blank request"),e.push(null)),!this._conn.paused){if(this._requests.length<2&&e.length>0){const t=this._buildBody();for(let n=0;n<e.length;n++)null!==e[n]&&("restart"===e[n]?t.attrs({to:this._conn.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":i.c.NS.BOSH}):t.cnode(e[n]).up());delete this._conn._data,this._conn._data=[],this._requests.push(new i.c.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}if(this._requests.length>0){const e=this._requests[0].age();null!==this._requests[0].dead&&this._requests[0].timeDead()>Math.floor(i.c.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),e>Math.floor(i.c.TIMEOUT*this.wait)&&(i.c.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(i.c.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())}}}static _getRequestStatus(e,t){let n;if(4===e.xhr.readyState)try{n=e.xhr.status}catch(e){i.c.error("Caught an error while retrieving a request's status, reqStatus: "+n)}return void 0===n&&(n="number"==typeof t?t:0),n}_onRequestStateChange(t,n){if(i.c.debug("request id "+n.id+"."+n.sends+" state changed to "+n.xhr.readyState),n.abort)return void(n.abort=!1);if(4!==n.xhr.readyState)return;const r=e._getRequestStatus(n);if(this.lastResponseHeaders=n.xhr.getAllResponseHeaders(),this._conn.disconnecting&&r>=400)return this._hitError(r),void this._callProtocolErrorHandlers(n);const s=r>0&&r<500,o=n.sends>this._conn.maxRetries;if((s||o)&&(this._removeRequest(n),i.c.debug("request id "+n.id+" should now be removed")),200===r){const e=this._requests[0]===n;(this._requests[1]===n||e&&this._requests.length>0&&this._requests[0].age()>Math.floor(i.c.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),this._conn.nextValidRid(Number(n.rid)+1),i.c.debug("request id "+n.id+"."+n.sends+" got 200"),t(n),this.errors=0}else 0===r||r>=400&&r<600||r>=12e3?(i.c.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),this._hitError(r),this._callProtocolErrorHandlers(n),r>=400&&r<500&&(this._conn._changeConnectStatus(i.c.Status.DISCONNECTING,null),this._conn._doDisconnect())):i.c.error("request id "+n.id+"."+n.sends+" error "+r+" happened");s||o?o&&!this._conn.connected&&this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"giving-up"):this._throttledRequestHandler()}_processRequest(t){let n=this._requests[t];const r=e._getRequestStatus(n,-1);if(n.sends>this._conn.maxRetries)return void this._conn._onDisconnectTimeout();const s=n.age(),o=!isNaN(s)&&s>Math.floor(i.c.TIMEOUT*this.wait),a=null!==n.dead&&n.timeDead()>Math.floor(i.c.SECONDARY_TIMEOUT*this.wait),c=4===n.xhr.readyState&&(r<1||r>=500);if((o||a||c)&&(a&&i.c.error("Request ".concat(this._requests[t].id," timed out (secondary), restarting")),n.abort=!0,n.xhr.abort(),n.xhr.onreadystatechange=function(){},this._requests[t]=new i.c.Request(n.xmlData,n.origFunc,n.rid,n.sends),n=this._requests[t]),0===n.xhr.readyState){i.c.debug("request id "+n.id+"."+n.sends+" posting");try{const e=this._conn.options.contentType||"text/xml; charset=utf-8";n.xhr.open("POST",this._conn.service,!this._conn.options.sync),void 0!==n.xhr.setRequestHeader&&n.xhr.setRequestHeader("Content-Type",e),this._conn.options.withCredentials&&(n.xhr.withCredentials=!0)}catch(e){return i.c.error("XHR open failed: "+e.toString()),this._conn.connected||this._conn._changeConnectStatus(i.c.Status.CONNFAIL,"bad-service"),void this._conn.disconnect()}const e=()=>{if(n.date=new Date,this._conn.options.customHeaders){const e=this._conn.options.customHeaders;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.xhr.setRequestHeader(t,e[t])}n.xhr.send(n.data)};if(n.sends>1){const t=1e3*Math.min(Math.floor(i.c.TIMEOUT*this.wait),Math.pow(n.sends,3));setTimeout((function(){e()}),t)}else e();n.sends++,this._conn.xmlOutput!==i.c.Connection.prototype.xmlOutput&&(n.xmlData.nodeName===this.strip&&n.xmlData.childNodes.length?this._conn.xmlOutput(n.xmlData.childNodes[0]):this._conn.xmlOutput(n.xmlData)),this._conn.rawOutput!==i.c.Connection.prototype.rawOutput&&this._conn.rawOutput(n.data)}else i.c.debug("_processRequest: "+(0===t?"first":"second")+" request has readyState of "+n.xhr.readyState)}_removeRequest(e){i.c.debug("removing request");for(let t=this._requests.length-1;t>=0;t--)e===this._requests[t]&&this._requests.splice(t,1);e.xhr.onreadystatechange=function(){},this._throttledRequestHandler()}_restartRequest(e){const t=this._requests[e];null===t.dead&&(t.dead=new Date),this._processRequest(e)}_reqToData(e){try{return e.getResponse()}catch(e){if("parsererror"!==e.message)throw e;this._conn.disconnect("strophe-parsererror")}}_sendTerminate(e){i.c.debug("_sendTerminate was called");const t=this._buildBody().attrs({type:"terminate"});e&&t.cnode(e.tree());const n=new i.c.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"));this._requests.push(n),this._throttledRequestHandler()}_send(){clearTimeout(this._conn._idleTimeout),this._throttledRequestHandler(),this._conn._idleTimeout=setTimeout(()=>this._conn._onIdle(),100)}_sendRestart(){this._throttledRequestHandler(),clearTimeout(this._conn._idleTimeout)}_throttledRequestHandler(){this._requests?i.c.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):i.c.debug("_throttledRequestHandler called with undefined requests"),this._requests&&0!==this._requests.length&&(this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1))}},i.c.Bosh.prototype.strip=null},function(e,t,n){"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},function(e,t,n){"use strict";n(119);var r=n(1);const i={};i.debug=r.c.LogLevel.DEBUG,i.info=r.c.LogLevel.INFO,i.warn=r.c.LogLevel.WARN,i.error=r.c.LogLevel.ERROR,i.fatal=r.c.LogLevel.FATAL,r.c.WorkerWebsocket=class extends r.c.Websocket{constructor(e){super(e),this._conn=e,this.worker=new SharedWorker(this._conn.options.worker,"Strophe XMPP Connection"),this.worker.onerror=e=>{var t;null===(t=console)||void 0===t||t.error(e),r.c.log(r.c.LogLevel.ERROR,"Shared Worker Error: ".concat(e))}}get socket(){return{send:e=>this.worker.port.postMessage(["send",e])}}_connect(){this._messageHandler=e=>this._onInitialMessage(e),this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_connect",this._conn.service,this._conn.jid])}_attach(e){this._messageHandler=e=>this._onMessage(e),this._conn.connect_callback=e,this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_attach",this._conn.service])}_attachCallback(e,t){e===r.c.Status.ATTACHED?(this._conn.jid=t,this._conn.authenticated=!0,this._conn.connected=!0,this._conn.restored=!0,this._conn._changeConnectStatus(r.c.Status.ATTACHED)):e===r.c.Status.ATTACHFAIL&&(this._conn.authenticated=!1,this._conn.connected=!1,this._conn.restored=!1,this._conn._changeConnectStatus(r.c.Status.ATTACHFAIL))}_disconnect(e,t){t&&this._conn.send(t);const n=Object(r.a)("close",{xmlns:r.c.NS.FRAMING});this._conn.xmlOutput(n.tree());const i=r.c.serialize(n);this._conn.rawOutput(i),this.worker.port.postMessage(["send",i]),this._conn._doDisconnect()}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(r.c.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected?(r.c.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(r.c.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):r.c.debug("Websocket closed")}_closeSocket(){this.worker.port.postMessage(["_closeSocket"])}_replaceMessageHandler(){this._messageHandler=e=>this._onMessage(e)}_onWorkerMessage(e){const{data:t}=e,n=t[0];if("_onMessage"===n)this._messageHandler(t[1]);else if(n in this)try{this[n].apply(this,e.data.slice(1))}catch(e){r.c.log(r.c.LogLevel.ERROR,e)}else if("log"===n){const e=t[1],n=t[2];r.c.log(i[e],n)}else r.c.log(r.c.LogLevel.ERROR,"Found unhandled service worker message: ".concat(t))}}},function(e,t,n){var r=n(414);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(416)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(415)(!0)).push([e.i,"","",{version:3,sources:[],names:[],mappings:"",file:"converse.scss"}]),e.exports=t},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(o=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(o)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),s=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(s).concat([i]).join("\n")}var o,a,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var s=0;s<this.length;s++){var o=this[s][0];null!=o&&(i[o]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);r&&i[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),t.push(c))}},t}},function(e,t,n){var r,i,s={},o=(r=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===i&&(i=r.apply(this,arguments)),i}),a=function(e,t){return t?t.querySelector(e):document.querySelector(e)},c=function(e){var t={};return function(e,n){if("function"==typeof e)return e();if(void 0===t[e]){var r=a.call(this,e,n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}}(),l=null,u=0,d=[],h=n(417);function f(e,t){for(var n=0;n<e.length;n++){var r=e[n],i=s[r.id];if(i){i.refs++;for(var o=0;o<i.parts.length;o++)i.parts[o](r.parts[o]);for(;o<r.parts.length;o++)i.parts.push(b(r.parts[o],t))}else{var a=[];for(o=0;o<r.parts.length;o++)a.push(b(r.parts[o],t));s[r.id]={id:r.id,refs:1,parts:a}}}}function p(e,t){for(var n=[],r={},i=0;i<e.length;i++){var s=e[i],o=t.base?s[0]+t.base:s[0],a={css:s[1],media:s[2],sourceMap:s[3]};r[o]?r[o].parts.push(a):n.push(r[o]={id:o,parts:[a]})}return n}function g(e,t){var n=c(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=d[d.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),d.push(t);else if("bottom"===e.insertAt)n.appendChild(t);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var i=c(e.insertAt.before,n);n.insertBefore(t,i)}}function m(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=d.indexOf(e);t>=0&&d.splice(t,1)}function v(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var r=function(){0;return n.nc}();r&&(e.attrs.nonce=r)}return _(t,e.attrs),g(e,t),t}function _(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function b(e,t){var n,r,i,s;if(t.transform&&e.css){if(!(s="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=s}if(t.singleton){var o=u++;n=l||(l=v(t)),r=S.bind(null,n,o,!1),i=S.bind(null,n,o,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",_(t,e.attrs),g(e,t),t}(t),r=E.bind(null,n,t),i=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(t),r=x.bind(null,n),i=function(){m(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=o()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=p(e,t);return f(n,t),function(e){for(var r=[],i=0;i<n.length;i++){var o=n[i];(a=s[o.id]).refs--,r.push(a)}e&&f(p(e,t),t);for(i=0;i<r.length;i++){var a;if(0===(a=r[i]).refs){for(var c=0;c<a.parts.length;c++)a.parts[c]();delete s[a.id]}}}};var y,w=(y=[],function(e,t){return y[e]=t,y.filter(Boolean).join("\n")});function S(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=w(t,i);else{var s=document.createTextNode(i),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(s,o[t]):e.appendChild(s)}}function x(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function E(e,t,n){var r=n.css,i=n.sourceMap,s=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||s)&&(r=h(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var o=new Blob([r],{type:"text/css"}),a=e.href;e.href=URL.createObjectURL(o),a&&URL.revokeObjectURL(a)}},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var i,s=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(s)?e:(i=0===s.indexOf("//")?s:0===s.indexOf("/")?n+s:r+s.replace(/^\.\//,""),"url("+JSON.stringify(i)+")")}))}},function(e,t,n){"use strict";n.r(t);var r=n(52),i=n.n(r),s=(n(285),n(54),n(23));var o=function(){this.__data__=[],this.size=0};var a=function(e,t){return e===t||e!=e&&t!=t};var c=function(e,t){for(var n=e.length;n--;)if(a(e[n][0],t))return n;return-1},l=Array.prototype.splice;var u=function(e){var t=this.__data__,n=c(t,e);return!(n<0)&&(n==t.length-1?t.pop():l.call(t,n,1),--this.size,!0)};var d=function(e){var t=this.__data__,n=c(t,e);return n<0?void 0:t[n][1]};var h=function(e){return c(this.__data__,e)>-1};var f=function(e,t){var n=this.__data__,r=c(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};function p(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}p.prototype.clear=o,p.prototype.delete=u,p.prototype.get=d,p.prototype.has=h,p.prototype.set=f;var g=p;var m=function(){this.__data__=new g,this.size=0};var v=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n};var _=function(e){return this.__data__.get(e)};var b=function(e){return this.__data__.has(e)},y=n(5),w=y.a.Symbol,S=Object.prototype,x=S.hasOwnProperty,E=S.toString,A=w?w.toStringTag:void 0;var C=function(e){var t=x.call(e,A),n=e[A];try{e[A]=void 0;var r=!0}catch(e){}var i=E.call(e);return r&&(t?e[A]=n:delete e[A]),i},j=Object.prototype.toString;var T=function(e){return j.call(e)},O=w?w.toStringTag:void 0;var k=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?C(e):T(e)};var N=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};var I,M=function(e){if(!N(e))return!1;var t=k(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},R=y.a["__core-js_shared__"],D=(I=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||""))?"Symbol(src)_1."+I:"";var P=function(e){return!!D&&D in e},L=Function.prototype.toString;var z=function(e){if(null!=e){try{return L.call(e)}catch(e){}try{return e+""}catch(e){}}return""},F=/^\[object .+?Constructor\]$/,B=Function.prototype,q=Object.prototype,H=B.toString,U=q.hasOwnProperty,$=RegExp("^"+H.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var W=function(e){return!(!N(e)||P(e))&&(M(e)?$:F).test(z(e))};var V=function(e,t){return null==e?void 0:e[t]};var G=function(e,t){var n=V(e,t);return W(n)?n:void 0},J=G(y.a,"Map"),X=G(Object,"create");var Q=function(){this.__data__=X?X(null):{},this.size=0};var Y=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},K=Object.prototype.hasOwnProperty;var Z=function(e){var t=this.__data__;if(X){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return K.call(t,e)?t[e]:void 0},ee=Object.prototype.hasOwnProperty;var te=function(e){var t=this.__data__;return X?void 0!==t[e]:ee.call(t,e)};var ne=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=X&&void 0===t?"__lodash_hash_undefined__":t,this};function re(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}re.prototype.clear=Q,re.prototype.delete=Y,re.prototype.get=Z,re.prototype.has=te,re.prototype.set=ne;var ie=re;var se=function(){this.size=0,this.__data__={hash:new ie,map:new(J||g),string:new ie}};var oe=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var ae=function(e,t){var n=e.__data__;return oe(t)?n["string"==typeof t?"string":"hash"]:n.map};var ce=function(e){var t=ae(this,e).delete(e);return this.size-=t?1:0,t};var le=function(e){return ae(this,e).get(e)};var ue=function(e){return ae(this,e).has(e)};var de=function(e,t){var n=ae(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this};function he(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}he.prototype.clear=se,he.prototype.delete=ce,he.prototype.get=le,he.prototype.has=ue,he.prototype.set=de;var fe=he;var pe=function(e,t){var n=this.__data__;if(n instanceof g){var r=n.__data__;if(!J||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new fe(r)}return n.set(e,t),this.size=n.size,this};function ge(e){var t=this.__data__=new g(e);this.size=t.size}ge.prototype.clear=m,ge.prototype.delete=v,ge.prototype.get=_,ge.prototype.has=b,ge.prototype.set=pe;var me=ge;var ve=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e},_e=function(){try{var e=G(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();var be=function(e,t,n){"__proto__"==t&&_e?_e(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n},ye=Object.prototype.hasOwnProperty;var we=function(e,t,n){var r=e[t];ye.call(e,t)&&a(r,n)&&(void 0!==n||t in e)||be(e,t,n)};var Se=function(e,t,n,r){var i=!n;n||(n={});for(var s=-1,o=t.length;++s<o;){var a=t[s],c=r?r(n[a],e[a],a,n,e):void 0;void 0===c&&(c=e[a]),i?be(n,a,c):we(n,a,c)}return n};var xe=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r};var Ee=function(e){return null!=e&&"object"==typeof e};var Ae=function(e){return Ee(e)&&"[object Arguments]"==k(e)},Ce=Object.prototype,je=Ce.hasOwnProperty,Te=Ce.propertyIsEnumerable,Oe=Ae(function(){return arguments}())?Ae:function(e){return Ee(e)&&je.call(e,"callee")&&!Te.call(e,"callee")},ke=Array.isArray,Ne=n(18),Ie=/^(?:0|[1-9]\d*)$/;var Me=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ie.test(e))&&e>-1&&e%1==0&&e<t};var Re=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},De={};De["[object Float32Array]"]=De["[object Float64Array]"]=De["[object Int8Array]"]=De["[object Int16Array]"]=De["[object Int32Array]"]=De["[object Uint8Array]"]=De["[object Uint8ClampedArray]"]=De["[object Uint16Array]"]=De["[object Uint32Array]"]=!0,De["[object Arguments]"]=De["[object Array]"]=De["[object ArrayBuffer]"]=De["[object Boolean]"]=De["[object DataView]"]=De["[object Date]"]=De["[object Error]"]=De["[object Function]"]=De["[object Map]"]=De["[object Number]"]=De["[object Object]"]=De["[object RegExp]"]=De["[object Set]"]=De["[object String]"]=De["[object WeakMap]"]=!1;var Pe=function(e){return Ee(e)&&Re(e.length)&&!!De[k(e)]};var Le=function(e){return function(t){return e(t)}},ze=n(12),Fe=ze.a&&ze.a.isTypedArray,Be=Fe?Le(Fe):Pe,qe=Object.prototype.hasOwnProperty;var He=function(e,t){var n=ke(e),r=!n&&Oe(e),i=!n&&!r&&Object(Ne.a)(e),s=!n&&!r&&!i&&Be(e),o=n||r||i||s,a=o?xe(e.length,String):[],c=a.length;for(var l in e)!t&&!qe.call(e,l)||o&&("length"==l||i&&("offset"==l||"parent"==l)||s&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Me(l,c))||a.push(l);return a},Ue=Object.prototype;var $e=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ue)};var We=function(e,t){return function(n){return e(t(n))}},Ve=We(Object.keys,Object),Ge=Object.prototype.hasOwnProperty;var Je=function(e){if(!$e(e))return Ve(e);var t=[];for(var n in Object(e))Ge.call(e,n)&&"constructor"!=n&&t.push(n);return t};var Xe=function(e){return null!=e&&Re(e.length)&&!M(e)};var Qe=function(e){return Xe(e)?He(e):Je(e)};var Ye=function(e,t){return e&&Se(t,Qe(t),e)};var Ke=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t},Ze=Object.prototype.hasOwnProperty;var et=function(e){if(!N(e))return Ke(e);var t=$e(e),n=[];for(var r in e)("constructor"!=r||!t&&Ze.call(e,r))&&n.push(r);return n};var tt=function(e){return Xe(e)?He(e,!0):et(e)};var nt=function(e,t){return e&&Se(t,tt(t),e)},rt=n(121);var it=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t};var st=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,s=[];++n<r;){var o=e[n];t(o,n,e)&&(s[i++]=o)}return s};var ot=function(){return[]},at=Object.prototype.propertyIsEnumerable,ct=Object.getOwnPropertySymbols,lt=ct?function(e){return null==e?[]:(e=Object(e),st(ct(e),(function(t){return at.call(e,t)})))}:ot;var ut=function(e,t){return Se(e,lt(e),t)};var dt=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e},ht=We(Object.getPrototypeOf,Object),ft=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)dt(t,lt(e)),e=ht(e);return t}:ot;var pt=function(e,t){return Se(e,ft(e),t)};var gt=function(e,t,n){var r=t(e);return ke(e)?r:dt(r,n(e))};var mt=function(e){return gt(e,Qe,lt)};var vt=function(e){return gt(e,tt,ft)},_t=G(y.a,"DataView"),bt=G(y.a,"Promise"),yt=G(y.a,"Set"),wt=G(y.a,"WeakMap"),St=z(_t),xt=z(J),Et=z(bt),At=z(yt),Ct=z(wt),jt=k;(_t&&"[object DataView]"!=jt(new _t(new ArrayBuffer(1)))||J&&"[object Map]"!=jt(new J)||bt&&"[object Promise]"!=jt(bt.resolve())||yt&&"[object Set]"!=jt(new yt)||wt&&"[object WeakMap]"!=jt(new wt))&&(jt=function(e){var t=k(e),n="[object Object]"==t?e.constructor:void 0,r=n?z(n):"";if(r)switch(r){case St:return"[object DataView]";case xt:return"[object Map]";case Et:return"[object Promise]";case At:return"[object Set]";case Ct:return"[object WeakMap]"}return t});var Tt=jt,Ot=Object.prototype.hasOwnProperty;var kt=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Ot.call(e,"index")&&(n.index=e.index,n.input=e.input),n},Nt=y.a.Uint8Array;var It=function(e){var t=new e.constructor(e.byteLength);return new Nt(t).set(new Nt(e)),t};var Mt=function(e,t){var n=t?It(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)},Rt=/\w*$/;var Dt=function(e){var t=new e.constructor(e.source,Rt.exec(e));return t.lastIndex=e.lastIndex,t},Pt=w?w.prototype:void 0,Lt=Pt?Pt.valueOf:void 0;var zt=function(e){return Lt?Object(Lt.call(e)):{}};var Ft=function(e,t){var n=t?It(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)};var Bt=function(e,t,n){var r=e.constructor;switch(t){case"[object ArrayBuffer]":return It(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return Mt(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ft(e,n);case"[object Map]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return Dt(e);case"[object Set]":return new r;case"[object Symbol]":return zt(e)}},qt=Object.create,Ht=function(){function e(){}return function(t){if(!N(t))return{};if(qt)return qt(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();var Ut=function(e){return"function"!=typeof e.constructor||$e(e)?{}:Ht(ht(e))};var $t=function(e){return Ee(e)&&"[object Map]"==Tt(e)},Wt=ze.a&&ze.a.isMap,Vt=Wt?Le(Wt):$t;var Gt=function(e){return Ee(e)&&"[object Set]"==Tt(e)},Jt=ze.a&&ze.a.isSet,Xt=Jt?Le(Jt):Gt,Qt={};Qt["[object Arguments]"]=Qt["[object Array]"]=Qt["[object ArrayBuffer]"]=Qt["[object DataView]"]=Qt["[object Boolean]"]=Qt["[object Date]"]=Qt["[object Float32Array]"]=Qt["[object Float64Array]"]=Qt["[object Int8Array]"]=Qt["[object Int16Array]"]=Qt["[object Int32Array]"]=Qt["[object Map]"]=Qt["[object Number]"]=Qt["[object Object]"]=Qt["[object RegExp]"]=Qt["[object Set]"]=Qt["[object String]"]=Qt["[object Symbol]"]=Qt["[object Uint8Array]"]=Qt["[object Uint8ClampedArray]"]=Qt["[object Uint16Array]"]=Qt["[object Uint32Array]"]=!0,Qt["[object Error]"]=Qt["[object Function]"]=Qt["[object WeakMap]"]=!1;var Yt=function e(t,n,r,i,s,o){var a,c=1&n,l=2&n,u=4&n;if(r&&(a=s?r(t,i,s,o):r(t)),void 0!==a)return a;if(!N(t))return t;var d=ke(t);if(d){if(a=kt(t),!c)return it(t,a)}else{var h=Tt(t),f="[object Function]"==h||"[object GeneratorFunction]"==h;if(Object(Ne.a)(t))return Object(rt.a)(t,c);if("[object Object]"==h||"[object Arguments]"==h||f&&!s){if(a=l||f?{}:Ut(t),!c)return l?pt(t,nt(a,t)):ut(t,Ye(a,t))}else{if(!Qt[h])return s?t:{};a=Bt(t,h,c)}}o||(o=new me);var p=o.get(t);if(p)return p;o.set(t,a),Xt(t)?t.forEach((function(i){a.add(e(i,n,r,i,t,o))})):Vt(t)&&t.forEach((function(i,s){a.set(s,e(i,n,r,s,t,o))}));var g=u?l?vt:mt:l?keysIn:Qe,m=d?void 0:g(t);return ve(m||t,(function(i,s){m&&(i=t[s=i]),we(a,s,e(i,n,r,s,t,o))})),a};var Kt=function(e){return Yt(e,5)};var Zt=function(e){return"string"==typeof e||!ke(e)&&Ee(e)&&"[object String]"==k(e)};var en=function(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))};function tn(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}function nn(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var rn=function(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(i){if("TypeError"!==i.name)throw i;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}},sn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",on=/^~~local_forage_type~([^~]+)~/,an="__lfsc__:".length,cn=an+"arbf".length,ln=Object.prototype.toString;function un(e){var t,n,r,i,s,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var l=new ArrayBuffer(o),u=new Uint8Array(l);for(t=0;t<a;t+=4)n=sn.indexOf(e[t]),r=sn.indexOf(e[t+1]),i=sn.indexOf(e[t+2]),s=sn.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&s;return l}function dn(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=sn[n[t]>>2],r+=sn[(3&n[t])<<4|n[t+1]>>4],r+=sn[(15&n[t+1])<<2|n[t+2]>>6],r+=sn[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var hn={serialize:function(e,t){var n="";if(e&&(n=ln.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===ln.call(e.buffer))){var r,i="__lfsc__:";e instanceof ArrayBuffer?(r=e,i+="arbf"):(r=e.buffer,"[object Int8Array]"===n?i+="si08":"[object Uint8Array]"===n?i+="ui08":"[object Uint8ClampedArray]"===n?i+="uic8":"[object Int16Array]"===n?i+="si16":"[object Uint16Array]"===n?i+="ur16":"[object Int32Array]"===n?i+="si32":"[object Uint32Array]"===n?i+="ui32":"[object Float32Array]"===n?i+="fl32":"[object Float64Array]"===n?i+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(i+dn(r))}else if("[object Blob]"===n){var s=new FileReader;s.onload=function(){var n="~~local_forage_type~"+e.type+"~"+dn(this.result);t("__lfsc__:blob"+n)},s.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if("__lfsc__:"!==e.substring(0,an))return JSON.parse(e);var t,n=e.substring(cn),r=e.substring(an,cn);if("blob"===r&&on.test(n)){var i=n.match(on);t=i[1],n=n.substring(i[0].length)}var s=un(n);switch(r){case"arbf":return s;case"blob":return rn([s],{type:t});case"si08":return new Int8Array(s);case"ui08":return new Uint8Array(s);case"uic8":return new Uint8ClampedArray(s);case"si16":return new Int16Array(s);case"ur16":return new Uint16Array(s);case"si32":return new Int32Array(s);case"ui32":return new Uint32Array(s);case"fl32":return new Float32Array(s);case"fl64":return new Float64Array(s);default:throw new Error("Unkown type: "+r)}},stringToBuffer:un,bufferToString:dn};function fn(e,t){let n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}const pn={serializer:{serialize:hn.serialize,deserialize:hn.deserialize}};var gn={_driver:"sessionStorageWrapper",_initStorage:function(e){if(pn.keyPrefix=fn(e,this._defaultConfig),e)for(const t in e)pn[t]=e[t]},_support:function(){try{if(sessionStorage&&"setItem"in sessionStorage)return!0}catch(e){console.log(e)}return!1}(),iterate:function(e,t){const n=this.ready().then((function(){const t=pn.keyPrefix,n=t.length,r=sessionStorage.length;let i=1;for(let s=0;s<r;s++){const r=sessionStorage.key(s);if(0!==r.indexOf(t))continue;let o=sessionStorage.getItem(r);if(o&&(o=pn.serializer.deserialize(o)),o=e(o,r.substring(n),i++),void 0!==o)return o}}));return en(n,t),n},getItem:function(e,t){e=nn(e);const n=this.ready().then((function(){let t=sessionStorage.getItem(pn.keyPrefix+e);return t&&(t=pn.serializer.deserialize(t)),t}));return en(n,t),n},setItem:function(e,t,n){e=nn(e);const r=this.ready().then((function(){void 0===t&&(t=null);const n=t;return new Promise((function(r,i){pn.serializer.serialize(t,(function(t,s){if(s)i(s);else try{sessionStorage.setItem(pn.keyPrefix+e,t),r(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||i(e),i(e)}}))}))}));return en(r,n),r},removeItem:function(e,t){e=nn(e);const n=this.ready().then((function(){sessionStorage.removeItem(pn.keyPrefix+e)}));return en(n,t),n},clear:function(e){const t=this.ready().then((function(){const e=pn.keyPrefix;for(let t=sessionStorage.length-1;t>=0;t--){const n=sessionStorage.key(t);0===n.indexOf(e)&&sessionStorage.removeItem(n)}}));return en(t,e),t},length:function(e){const t=this.keys().then((function(e){return e.length}));return en(t,e),t},key:function(e,t){const n=this.ready().then((function(){let t;try{t=sessionStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(pn.keyPrefix.length)),t}));return en(n,t),n},keys:function(e){const t=this.ready().then((function(){const e=sessionStorage.length,t=[];for(let n=0;n<e;n++){const e=sessionStorage.key(n);0===e.indexOf(pn.keyPrefix)&&t.push(e.substring(pn.keyPrefix.length))}return t}));return en(t,e),t},dropInstance:function(e,t){if(t=tn.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){const t=this.config();e.name=e.name||t.name,e.storeName=e.storeName||t.storeName}const n=this;let r;return r=e.name?new Promise((function(t){e.storeName?t(fn(e,n._defaultConfig)):t("".concat(e.name,"/"))})).then((function(e){for(let t=sessionStorage.length-1;t>=0;t--){const n=sessionStorage.key(t);0===n.indexOf(e)&&sessionStorage.removeItem(n)}})):Promise.reject(new Error("Invalid arguments")),en(r,t),r}};function mn(){return(65536*(1+Math.random())|0).toString(16).substring(1)}class vn{constructor(e,t){if("local"===t&&!window.localStorage)throw new Error("Skeletor.storage: Environment does not support localStorage.");if("session"===t&&!window.sessionStorage)throw new Error("Skeletor.storage: Environment does not support sessionStorage.");Zt(t)?this.storeInitialized=this.initStore(t):(this.store=t,this.storeInitialized=Promise.resolve()),this.name=e}async initStore(e){if("session"===e)s.setDriver(gn._driver);else if("local"===e)await s.config({driver:s.LOCALSTORAGE});else if("indexed"!==e)throw new Error("Skeletor.storage: No storage type was specified");this.store=s}async clear(){await this.store.removeItem(this.name).catch(e=>console.error(e));const e=new RegExp("^".concat(this.name,"-")),t=(await this.store.keys()).filter(t=>e.test(t));await Promise.all(t.map(e=>this.store.removeItem(e).catch(e=>console.error(e))))}sync(e){const t=this;async function n(e,n,r){let i,s,o,a;const c=n.collection;["patch","update"].includes(e)&&(a=Kt(n.attributes)),await t.storeInitialized;try{const s=n.attributes;switch(e){case"read":i=void 0!==n.id?await t.find(n):await t.findAll();break;case"create":i=await t.create(n,r);break;case"patch":case"update":r.wait&&(n.attributes=a),o=t.update(n,r),r.wait&&(n.attributes=s),i=await o;break;case"delete":i=await t.destroy(n,c)}}catch(e){s=22===e.code&&0===t.getStorageSize()?"Private browsing is unsupported":e.message}if(i){if(r&&r.success){const t="read"===e?i:null;r.success(t,r)}}else s=s||"Record Not Found",r&&r.error&&r.error(s)}return n.__name__="localSync",n}removeCollectionReference(e,t){if(!t)return;const n=t.filter(t=>t.id!==e.id).map(e=>this.getItemName(e.id));return this.store.setItem(this.name,n)}addCollectionReference(e,t){if(!t)return;const n=t.map(e=>this.getItemName(e.id)),r=this.getItemName(e.id);return n.includes(r)||n.push(r),this.store.setItem(this.name,n)}async save(e,t={}){const n=this.getItemName(e.id),r=await this.store.setItem(n,e.toJSON());return await this.addCollectionReference(e,e.collection),r}create(e,t){return e.id||(e.id=mn()+mn()+"-"+mn()+"-"+mn()+"-"+mn()+"-"+mn()+mn()+mn(),e.set(e.idAttribute,e.id,t)),this.save(e)}update(e,t){return this.save(e,t)}find(e){return this.store.getItem(this.getItemName(e.id))}async findAll(){const e=await this.store.getItem(this.name);return e&&e.length?Promise.all(e.map(e=>this.store.getItem(e))):[]}async destroy(e,t){return await this.store.removeItem(this.getItemName(e.id)),await this.removeCollectionReference(e,t),e}getStorageSize(){return this.store.length}getItemName(e){return this.name+"-"+e}}vn.sessionStorageInitialized=s.defineDriver(gn),vn.localForage=s;var _n=vn,bn=n(122),yn=n.n(bn),wn=n(4),Sn=n.n(wn),xn=Function.prototype,En=Object.prototype,An=xn.toString,Cn=En.hasOwnProperty,jn=An.call(Object);var Tn=function(e){if(!Ee(e)||"[object Object]"!=k(e))return!1;var t=ht(e);if(null===t)return!0;var n=Cn.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&An.call(n)==jn};var On,kn,Nn,In,Mn=function(e){return Ee(e)&&1===e.nodeType&&!Tn(e)};const Rn={debug:0,info:1,warn:2,error:3,fatal:4},Dn=Object.assign({debug:(null===(On=console)||void 0===On?void 0:On.log)?console.log.bind(console):function(){},error:(null===(kn=console)||void 0===kn?void 0:kn.log)?console.log.bind(console):function(){},info:(null===(Nn=console)||void 0===Nn?void 0:Nn.log)?console.log.bind(console):function(){},warn:(null===(In=console)||void 0===In?void 0:In.log)?console.log.bind(console):function(){}},console);var Pn={setLogLevel(e){if(!["debug","info","warn","error","fatal"].includes(e))throw new Error("Invalid loglevel: ".concat(e));this.loglevel=e},log(e,t,n=""){if(Rn[t]<Rn[this.loglevel])return;"error"===t||"fatal"===t?n=n||"color: maroon":"debug"===t&&(n=n||"color: green"),e instanceof Error?e=e.stack:Mn(e)&&(e=e.outerHTML);const r=n?"%c":"";"error"===t?Dn.error("".concat(r," ERROR: ").concat(e),n):"warn"===t?Dn.warn("".concat(r," ").concat((new Date).toISOString()," WARNING: ").concat(e),n):"fatal"===t?Dn.error("".concat(r," FATAL: ").concat(e),n):"debug"===t?Dn.debug("".concat(r," ").concat((new Date).toISOString()," DEBUG: ").concat(e),n):Dn.info("".concat(r," ").concat((new Date).toISOString()," INFO: ").concat(e),n)},debug(e,t){this.log(e,"debug",t)},error(e,t){this.log(e,"error",t)},info(e,t){this.log(e,"info",t)},warn(e,t){this.log(e,"warn",t)},fatal(e,t){this.log(e,"fatal",t)}},Ln=n(123),zn=n.n(Ln),Fn=n(34),Bn=n.n(Fn),qn=n(35),Hn=n.n(qn),Un=n(29),$n=n.n(Un),Wn=n(124),Vn=n.n(Wn),Gn=n(48),Jn=n.n(Gn),Xn=n(125),Qn=n.n(Xn),Yn=n(26),Kn=n.n(Yn),Zn=n(69),er=n.n(Zn),tr=n(126),nr=n.n(tr),rr=n(127),ir=n.n(rr),sr=n(68),or=n.n(sr);function ar(e,t){this.name=t,this.plugged=e,void 0===this.plugged.__super__?this.plugged.__super__={}:"string"==typeof this.plugged.__super__&&(this.plugged.__super__={__string__:this.plugged.__super__}),this.plugged.__super__[t]=this.plugged,this.plugins={},this.initialized_plugins=[]}Hn()(ar.prototype,{wrappedOverride:function(e,t,n,r){return"function"==typeof n&&(void 0===this.__super__&&(this.__super__=r),this.__super__[e]=n.bind(this)),t.apply(this,zn()(arguments,4))},_overrideAttribute:function(e,t){let n=t.overrides[e];if("function"==typeof n){let t={};t[this.name]=this.plugged;let r=er()(this.wrappedOverride,e,n,this.plugged[e],t);this.plugged[e]=r}else this.plugged[e]=n},_extendObject:function(e,t){e.prototype.__super__||(e.prototype.__super__={},e.prototype.__super__[this.name]=this.plugged);let n=this;Bn()(t,(function(t,r){if("events"===r)e.prototype[r]=Hn()(t,e.prototype[r]);else if("function"==typeof t){let i={};i[n.name]=n.plugged;let s=er()(n.wrappedOverride,r,t,e.prototype[r],i);e.prototype[r]=s}else e.prototype[r]=t}))},loadPluginDependencies:function(e){Bn()(e.dependencies,t=>{let n=this.plugins[t];if(n){if($n()(n.dependencies,e.__name__))throw'Found a circular dependency between the plugins "'+e.__name__+'" and "'+t+'"';this.initializePlugin(n)}else this.throwUndefinedDependencyError('Could not find dependency "'+t+'" for the plugin "'+e.__name__+"\". If it's needed, make sure it's loaded by require.js")})},throwUndefinedDependencyError:function(e){if(this.plugged.strict_plugin_dependencies)throw e;console.warn?console.warn(e):console.log(e)},applyOverrides:function(e){Bn()(Object.keys(e.overrides||{}),t=>{let n=e.overrides[t];"object"==typeof n?void 0===this.plugged[t]?this.throwUndefinedDependencyError('Plugin "'.concat(e.__name__,'" tried to override "').concat(t,"\" but it's not found.")):this._extendObject(this.plugged[t],n):this._overrideAttribute(t,e)})},initializePlugin:function(e){$n()(Kn()(this.allowed_plugins),e.__name__)&&($n()(this.initialized_plugins,e.__name__)||(Vn()(e.enabled)&&e.enabled||Jn()(e.enabled)&&e.enabled(this.plugged)||Qn()(e.enabled))&&(Hn()(e,this.properties),e.dependencies&&this.loadPluginDependencies(e),this.applyOverrides(e),"function"==typeof e.initialize&&e.initialize.bind(e)(this),this.initialized_plugins.push(e.__name__)))},registerPlugin:function(e,t){if(e in this.plugins)throw new Error("Error: Plugin name "+e+" is already taken");t.__name__=e,this.plugins[e]=t},initializePlugins:function(e={},t=[],n=[]){ir()(this.plugins)&&(this.properties=e,this.allowed_plugins=nr()(this.plugins,(function(e,r){return(!t.length||t.length&&$n()(t,r))&&!$n()(n,r)})),Bn()(or()(this.allowed_plugins),this.initializePlugin.bind(this)))}});var cr={enable:function(e,t,n){void 0===n&&(n="pluginSocket"),void 0===t&&(t="plugged");let r={};return r[n]=new ar(e,t),Hn()(e,r)}},lr=n(2),ur=n.n(lr),dr=n(0);var hr=function(e,t){var n=Ht(e);return null==t?n:Ye(n,t)};var fr=function(e){return e};var pr=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},gr=Math.max;var mr=function(e,t,n){return t=gr(void 0===t?e.length-1:t,0),function(){for(var r=arguments,i=-1,s=gr(r.length-t,0),o=Array(s);++i<s;)o[i]=r[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=r[i];return a[t]=n(o),pr(e,this,a)}};var vr=function(e){return function(){return e}},_r=_e?function(e,t){return _e(e,"toString",{configurable:!0,enumerable:!1,value:vr(t),writable:!0})}:fr,br=Date.now;var yr=function(e){var t=0,n=0;return function(){var r=br(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(_r);var wr=function(e,t){return yr(mr(e,t,fr),e+"")};var Sr=function(e,t,n){if(!N(n))return!1;var r=typeof t;return!!("number"==r?Xe(n)&&Me(t,n.length):"string"==r&&t in n)&&a(n[t],e)};var xr=function(e){return wr((function(t,n){var r=-1,i=n.length,s=i>1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(i--,s):void 0,o&&Sr(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),t=Object(t);++r<i;){var a=n[r];a&&e(t,a,r,s)}return t}))}((function(e,t){Se(t,tt(t),e)})),Er=Object.prototype.hasOwnProperty;var Ar=function(e,t){return null!=e&&Er.call(e,t)};var Cr=function(e){return"symbol"==typeof e||Ee(e)&&"[object Symbol]"==k(e)},jr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Tr=/^\w*$/;var Or=function(e,t){if(ke(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Cr(e))||(Tr.test(e)||!jr.test(e)||null!=t&&e in Object(t))};function kr(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],s=n.cache;if(s.has(i))return s.get(i);var o=e.apply(this,r);return n.cache=s.set(i,o)||s,o};return n.cache=new(kr.Cache||fe),n}kr.Cache=fe;var Nr=kr;var Ir=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Mr=/\\(\\)?/g,Rr=function(e){var t=Nr(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Ir,(function(e,n,r,i){t.push(r?i.replace(Mr,"$1"):n||e)})),t}));var Dr=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i},Pr=w?w.prototype:void 0,Lr=Pr?Pr.toString:void 0;var zr=function e(t){if("string"==typeof t)return t;if(ke(t))return Dr(t,e)+"";if(Cr(t))return Lr?Lr.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n};var Fr=function(e){return null==e?"":zr(e)};var Br=function(e,t){return ke(e)?e:Or(e,t)?[e]:Rr(Fr(e))};var qr=function(e){if("string"==typeof e||Cr(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t};var Hr=function(e,t,n){for(var r=-1,i=(t=Br(t,e)).length,s=!1;++r<i;){var o=qr(t[r]);if(!(s=null!=e&&n(e,o)))break;e=e[o]}return s||++r!=i?s:!!(i=null==e?0:e.length)&&Re(i)&&Me(o,i)&&(ke(e)||Oe(e))};var Ur=function(e,t){return null!=e&&Hr(e,t,Ar)};var $r=function(e,t,n){var r=-1,i=(t=Br(t,e)).length;for(i||(i=1,e=void 0);++r<i;){var s=null==e?void 0:e[qr(t[r])];void 0===s&&(r=i,s=n),e=M(s)?s.call(e):s}return e};Error;function Wr(e,t){const n=this;let r;return r=e&&Ur(e,"constructor")?e.constructor:function(){return n.apply(this,arguments)},xr(r,n,t),r.prototype=hr(n.prototype,e),r.prototype.constructor=r,r.__super__=n.prototype,r}function Vr(){const e={isResolved:!1,isPending:!0,isRejected:!1},t=new Promise((t,n)=>{e.resolve=t,e.reject=n});return Object.assign(t,e),t.then((function(e){return t.isResolved=!0,t.isPending=!1,t.isRejected=!1,e}),(function(e){throw t.isResolved=!1,t.isPending=!1,t.isRejected=!0,e})),t}function Gr(){throw new Error('A "url" property or function must be specified')}function Jr(e,t){const n=t.error;t.error=function(r){n&&n.call(t.context,e,r,t),e.trigger("error",e,r,t)}}const Xr={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};function Qr(e){const t=$r(e,"browserStorage")||$r(e.collection,"browserStorage");return t?t.sync():Yr}function Yr(e,t,n={}){const r={type:Xr[e],dataType:"json"};n.url||(r.url=$r(t,"url")||Gr()),null!=n.data||!t||"create"!==e&&"update"!==e&&"patch"!==e||(r.contentType="application/json",r.data=JSON.stringify(n.attrs||t.toJSON(n))),"GET"!==r.type&&(r.processData=!1);const i=n.error;n.error=function(e,t,r){n.textStatus=t,n.errorThrown=r,i&&i.call(n.context,e,t,r)};const s=n.xhr=function(){return fetch.apply(this,arguments)}(xr(r,n));return t.trigger("request",t,s,n),s}var Kr=Object.prototype.hasOwnProperty;var Zr=function(e){if(null==e)return!0;if(Xe(e)&&(ke(e)||"string"==typeof e||"function"==typeof e.splice||Object(Ne.a)(e)||Be(e)||Oe(e)))return!e.length;var t=Tt(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if($e(e))return!Je(e).length;for(var n in e)if(Kr.call(e,n))return!1;return!0},ei=/^\s+|\s+$/g,ti=/^[-+]0x[0-9a-f]+$/i,ni=/^0b[01]+$/i,ri=/^0o[0-7]+$/i,ii=parseInt;var si=function(e){if("number"==typeof e)return e;if(Cr(e))return NaN;if(N(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=N(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(ei,"");var n=ni.test(e);return n||ri.test(e)?ii(e.slice(2),n?2:8):ti.test(e)?NaN:+e};var oi=function(e){return e?(e=si(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};var ai=function(e){var t=oi(e),n=t%1;return t==t?n?t-n:t:0};var ci=function(e,t){var n;if("function"!=typeof t)throw new TypeError("Expected a function");return e=ai(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}};var li=function(e){return ci(2,e)},ui=0;var di=function(e){var t=++ui;return Fr(e)+t};const hi={},fi=/\s+/;let pi;const gi=function e(t,n,r,i,s){let o,a=0;if(r&&"object"==typeof r){void 0!==i&&"context"in s&&void 0===s.context&&(s.context=i);for(o=Qe(r);a<o.length;a++)n=e(t,n,o[a],r[o[a]],s)}else if(r&&fi.test(r))for(o=r.split(fi);a<o.length;a++)n=t(n,o[a],i,s);else n=t(n,r,i,s);return n};hi.on=function(e,t,n){if(this._events=gi(mi,this._events||{},e,t,{context:n,ctx:this,listening:pi}),pi){(this._listeners||(this._listeners={}))[pi.id]=pi,pi.interop=!1}return this},hi.listenTo=function(e,t,n){if(!e)return this;const r=e._listenId||(e._listenId=di("l")),i=this._listeningTo||(this._listeningTo={});let s=pi=i[r];s||(this._listenId||(this._listenId=di("l")),s=pi=i[r]=new Si(this,e));const o=vi(e,t,n,this);if(pi=void 0,o)throw o;return s.interop&&s.on(t,n),this};const mi=function(e,t,n,r){if(n){const i=e[t]||(e[t]=[]),s=r.context,o=r.ctx,a=r.listening;a&&a.count++,i.push({callback:n,context:s,ctx:s||o,listening:a})}return e},vi=function(e,t,n,r){try{e.on(t,n,r)}catch(e){return e}};hi.off=function(e,t,n){return this._events?(this._events=gi(_i,this._events,e,t,{context:n,listeners:this._listeners}),this):this},hi.stopListening=function(e,t,n){const r=this._listeningTo;if(!r)return this;const i=e?[e._listenId]:Qe(r);for(let e=0;e<i.length;e++){const s=r[i[e]];if(!s)break;s.obj.off(t,n,this),s.interop&&s.off(t,n)}return Zr(r)&&(this._listeningTo=void 0),this};const _i=function(e,t,n,r){if(!e)return;const i=r.context,s=r.listeners;let o,a=0;if(t||i||n){for(o=t?[t]:Qe(e);a<o.length;a++){const r=e[t=o[a]];if(!r)break;const s=[];for(let e=0;e<r.length;e++){const o=r[e];if(n&&n!==o.callback&&n!==o.callback._callback||i&&i!==o.context)s.push(o);else{const e=o.listening;e&&e.off(t,n)}}s.length?e[t]=s:delete e[t]}return e}for(o=Qe(s);a<o.length;a++)s[o[a]].cleanup()};hi.once=function(e,t,n){const r=gi(bi,{},e,t,this.off.bind(this));return"string"==typeof e&&null==n&&(t=void 0),this.on(r,t,n)},hi.listenToOnce=function(e,t,n){const r=gi(bi,{},t,n,this.stopListening.bind(this,e));return this.listenTo(e,r)};const bi=function(e,t,n,r){if(n){const i=e[t]=li((function(){r(t,i),n.apply(this,arguments)}));i._callback=n}return e};hi.trigger=function(e){if(!this._events)return this;const t=Math.max(0,arguments.length-1),n=Array(t);for(let e=0;e<t;e++)n[e]=arguments[e+1];return gi(yi,this._events,e,void 0,n),this};const yi=function(e,t,n,r){if(e){const n=e[t];let i=e.all;n&&i&&(i=i.slice()),n&&wi(n,r),i&&wi(i,[t].concat(r))}return e},wi=function(e,t){let n,r=-1;const i=e.length,s=t[0],o=t[1],a=t[2];switch(t.length){case 0:for(;++r<i;)(n=e[r]).callback.call(n.ctx);return;case 1:for(;++r<i;)(n=e[r]).callback.call(n.ctx,s);return;case 2:for(;++r<i;)(n=e[r]).callback.call(n.ctx,s,o);return;case 3:for(;++r<i;)(n=e[r]).callback.call(n.ctx,s,o,a);return;default:for(;++r<i;)(n=e[r]).callback.apply(n.ctx,t);return}},Si=function(e,t){this.id=e._listenId,this.listener=e,this.obj=t,this.interop=!0,this.count=0,this._events=void 0};Si.prototype.on=hi.on,Si.prototype.off=function(e,t){let n;this.interop?(this._events=gi(_i,this._events,e,t,{context:void 0,listeners:void 0}),n=!this._events):(this.count--,n=0===this.count),n&&this.cleanup()},Si.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId],this.interop||delete this.obj._listeners[this.id]},hi.bind=hi.on,hi.unbind=hi.off;var xi=function(e){return Yt(e,4)},Ei=Object.prototype,Ai=Ei.hasOwnProperty,Ci=wr((function(e,t){e=Object(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&Sr(t[0],t[1],i)&&(r=1);++n<r;)for(var s=t[n],o=tt(s),c=-1,l=o.length;++c<l;){var u=o[c],d=e[u];(void 0===d||a(d,Ei[u])&&!Ai.call(e,u))&&(e[u]=s[u])}return e}));var ji=function(e,t,n){if("function"!=typeof e)throw new TypeError("Expected a function");return setTimeout((function(){e.apply(void 0,n)}),t)},Ti=wr((function(e,t){return ji(e,1,t)}));var Oi=function(e){return function(t){return null==e?void 0:e[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),ki=/[&<>"']/g,Ni=RegExp(ki.source);var Ii=function(e){return(e=Fr(e))&&Ni.test(e)?e.replace(ki,Oi):e};var Mi=function(e){return function(t,n,r){for(var i=-1,s=Object(t),o=r(t),a=o.length;a--;){var c=o[e?a:++i];if(!1===n(s[c],c,s))break}return t}},Ri=Mi();var Di=function(e,t){return e&&Ri(e,t,Qe)};var Pi=function(e,t,n,r){return Di(e,(function(e,i,s){t(r,n(e),i,s)})),r};var Li=function(e,t){return function(n,r){return Pi(n,e,t(r),{})}},zi=Object.prototype.toString,Fi=Li((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=zi.call(t)),e[t]=n}),vr(fr));var Bi=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};var qi=function(e){return this.__data__.has(e)};function Hi(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new fe;++t<n;)this.add(e[t])}Hi.prototype.add=Hi.prototype.push=Bi,Hi.prototype.has=qi;var Ui=Hi;var $i=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1};var Wi=function(e,t){return e.has(t)};var Vi=function(e,t,n,r,i,s){var o=1&n,a=e.length,c=t.length;if(a!=c&&!(o&&c>a))return!1;var l=s.get(e);if(l&&s.get(t))return l==t;var u=-1,d=!0,h=2&n?new Ui:void 0;for(s.set(e,t),s.set(t,e);++u<a;){var f=e[u],p=t[u];if(r)var g=o?r(p,f,u,t,e,s):r(f,p,u,e,t,s);if(void 0!==g){if(g)continue;d=!1;break}if(h){if(!$i(t,(function(e,t){if(!Wi(h,t)&&(f===e||i(f,e,n,r,s)))return h.push(t)}))){d=!1;break}}else if(f!==p&&!i(f,p,n,r,s)){d=!1;break}}return s.delete(e),s.delete(t),d};var Gi=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n};var Ji=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n},Xi=w?w.prototype:void 0,Qi=Xi?Xi.valueOf:void 0;var Yi=function(e,t,n,r,i,s,o){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!s(new Nt(e),new Nt(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var c=Gi;case"[object Set]":var l=1&r;if(c||(c=Ji),e.size!=t.size&&!l)return!1;var u=o.get(e);if(u)return u==t;r|=2,o.set(e,t);var d=Vi(c(e),c(t),r,i,s,o);return o.delete(e),d;case"[object Symbol]":if(Qi)return Qi.call(e)==Qi.call(t)}return!1},Ki=Object.prototype.hasOwnProperty;var Zi=function(e,t,n,r,i,s){var o=1&n,a=mt(e),c=a.length;if(c!=mt(t).length&&!o)return!1;for(var l=c;l--;){var u=a[l];if(!(o?u in t:Ki.call(t,u)))return!1}var d=s.get(e);if(d&&s.get(t))return d==t;var h=!0;s.set(e,t),s.set(t,e);for(var f=o;++l<c;){var p=e[u=a[l]],g=t[u];if(r)var m=o?r(g,p,u,t,e,s):r(p,g,u,e,t,s);if(!(void 0===m?p===g||i(p,g,n,r,s):m)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=e.constructor,_=t.constructor;v==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof _&&_ instanceof _||(h=!1)}return s.delete(e),s.delete(t),h},es=Object.prototype.hasOwnProperty;var ts=function(e,t,n,r,i,s){var o=ke(e),a=ke(t),c=o?"[object Array]":Tt(e),l=a?"[object Array]":Tt(t),u="[object Object]"==(c="[object Arguments]"==c?"[object Object]":c),d="[object Object]"==(l="[object Arguments]"==l?"[object Object]":l),h=c==l;if(h&&Object(Ne.a)(e)){if(!Object(Ne.a)(t))return!1;o=!0,u=!1}if(h&&!u)return s||(s=new me),o||Be(e)?Vi(e,t,n,r,i,s):Yi(e,t,c,n,r,i,s);if(!(1&n)){var f=u&&es.call(e,"__wrapped__"),p=d&&es.call(t,"__wrapped__");if(f||p){var g=f?e.value():e,m=p?t.value():t;return s||(s=new me),i(g,m,n,r,s)}}return!!h&&(s||(s=new me),Zi(e,t,n,r,i,s))};var ns=function e(t,n,r,i,s){return t===n||(null==t||null==n||!Ee(t)&&!Ee(n)?t!=t&&n!=n:ts(t,n,r,i,e,s))};var rs=function(e,t){return ns(e,t)};var is=function(e,t,n,r){var i=n.length,s=i,o=!r;if(null==e)return!s;for(e=Object(e);i--;){var a=n[i];if(o&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<s;){var c=(a=n[i])[0],l=e[c],u=a[1];if(o&&a[2]){if(void 0===l&&!(c in e))return!1}else{var d=new me;if(r)var h=r(l,u,c,e,t,d);if(!(void 0===h?ns(u,l,3,r,d):h))return!1}}return!0};var ss=function(e){return e==e&&!N(e)};var os=function(e){for(var t=Qe(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,ss(i)]}return t};var as=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}};var cs=function(e){var t=os(e);return 1==t.length&&t[0][2]?as(t[0][0],t[0][1]):function(n){return n===e||is(n,e,t)}};var ls=function(e,t){for(var n=0,r=(t=Br(t,e)).length;null!=e&&n<r;)e=e[qr(t[n++])];return n&&n==r?e:void 0};var us=function(e,t,n){var r=null==e?void 0:ls(e,t);return void 0===r?n:r};var ds=function(e,t){return null!=e&&t in Object(e)};var hs=function(e,t){return null!=e&&Hr(e,t,ds)};var fs=function(e,t){return Or(e)&&ss(t)?as(qr(e),t):function(n){var r=us(n,e);return void 0===r&&r===t?hs(n,e):ns(t,r,3)}};var ps=function(e){return function(t){return null==t?void 0:t[e]}};var gs=function(e){return function(t){return ls(t,e)}};var ms=function(e){return Or(e)?ps(qr(e)):gs(e)};var vs=function(e){return"function"==typeof e?e:null==e?fr:"object"==typeof e?ke(e)?fs(e[0],e[1]):cs(e):ms(e)};var _s=function(e){return vs("function"==typeof e?e:Yt(e,1))};var bs=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var ys=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r<i;)s[r]=e[r+t];return s};var ws=function(e,t){return t.length<2?e:ls(e,ys(t,0,-1))};var Ss=function(e,t){return t=Br(t,e),null==(e=ws(e,t))||delete e[qr(bs(t))]};var xs=function(e){return Tn(e)?void 0:e},Es=w?w.isConcatSpreadable:void 0;var As=function(e){return ke(e)||Oe(e)||!!(Es&&e&&e[Es])};var Cs=function e(t,n,r,i,s){var o=-1,a=t.length;for(r||(r=As),s||(s=[]);++o<a;){var c=t[o];n>0&&r(c)?n>1?e(c,n-1,r,i,s):dt(s,c):i||(s[s.length]=c)}return s};var js=function(e){return(null==e?0:e.length)?Cs(e,1):[]};var Ts=function(e){return yr(mr(e,void 0,js),e+"")},Os=Ts((function(e,t){var n={};if(null==e)return n;var r=!1;t=Dr(t,(function(t){return t=Br(t,e),r||(r=t.length>1),t})),Se(e,vt(e),n),r&&(n=Yt(n,7,xs));for(var i=t.length;i--;)Ss(n,t[i]);return n}));var ks=function(e,t,n,r){if(!N(e))return e;for(var i=-1,s=(t=Br(t,e)).length,o=s-1,a=e;null!=a&&++i<s;){var c=qr(t[i]),l=n;if(i!=o){var u=a[c];void 0===(l=r?r(u,c,a):void 0)&&(l=N(u)?u:Me(t[i+1])?[]:{})}we(a,c,l),a=a[c]}return e};var Ns=function(e,t,n){for(var r=-1,i=t.length,s={};++r<i;){var o=t[r],a=ls(e,o);n(a,o)&&ks(s,Br(o,e),a)}return s};var Is=function(e,t){return Ns(e,t,(function(t,n){return hs(e,n)}))},Ms=Ts((function(e,t){return null==e?{}:Is(e,t)}));const Rs=function(e,t){let n=e||{};t||(t={}),this.preinitialize.apply(this,arguments),this.cid=di(this.cidPrefix),this.attributes={},t.collection&&(this.collection=t.collection),t.parse&&(n=this.parse(n,t)||{});const r=$r(this,"defaults");n=Ci(xr({},r,n),r),this.set(n,t),this.changed={},this.initialize.apply(this,arguments)};Rs.extend=Wr,Object.assign(Rs.prototype,hi,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",preinitialize:function(){},initialize:function(){},toJSON:function(e){return xi(this.attributes)},sync:function(e,t,n){return Qr(this)(e,t,n)},get:function(e){return this.attributes[e]},keys:function(){return Object.keys(this.attributes)},values:function(){return Object.values(this.attributes)},pairs:function(){return this.entries()},entries:function(){return Object.entries(this.attributes)},invert:function(){return Fi(this.attributes)},pick:function(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),Ms(this.attributes,e)},omit:function(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),Os(this.attributes,e)},isEmpty:function(){return Zr(this.attributes)},escape:function(e){return Ii(this.get(e))},has:function(e){return null!=this.get(e)},matches:function(e){return!!_s(e,this)(this.attributes)},set:function(e,t,n){if(null==e)return this;let r;if("object"==typeof e?(r=e,n=t):(r={})[e]=t,n||(n={}),!this._validate(r,n))return!1;const i=n.unset,s=n.silent,o=[],a=this._changing;this._changing=!0,a||(this._previousAttributes=xi(this.attributes),this.changed={});const c=this.attributes,l=this.changed,u=this._previousAttributes;for(const e in r)t=r[e],rs(c[e],t)||o.push(e),rs(u[e],t)?delete l[e]:l[e]=t,i?delete c[e]:c[e]=t;if(this.idAttribute in r&&(this.id=this.get(this.idAttribute)),!s){o.length&&(this._pending=n);for(let e=0;e<o.length;e++)this.trigger("change:"+o[e],this,c[o[e]],n)}if(a)return this;if(!s)for(;this._pending;)n=this._pending,this._pending=!1,this.trigger("change",this,n);return this._pending=!1,this._changing=!1,this},unset:function(e,t){return this.set(e,void 0,xr({},t,{unset:!0}))},clear:function(e){const t={};for(const e in this.attributes)t[e]=void 0;return this.set(t,xr({},e,{unset:!0}))},hasChanged:function(e){return null==e?!Zr(this.changed):Ur(this.changed,e)},changedAttributes:function(e){if(!e)return!!this.hasChanged()&&xi(this.changed);const t=this._changing?this._previousAttributes:this.attributes,n={};let r;for(const i in e){const s=e[i];rs(t[i],s)||(n[i]=s,r=!0)}return!!r&&n},previous:function(e){return null!=e&&this._previousAttributes?this._previousAttributes[e]:null},previousAttributes:function(){return xi(this._previousAttributes)},fetch:function(e){e=xr({parse:!0},e);const t=this,n=e.success;return e.success=function(r){const i=e.parse?t.parse(r,e):r;if(!t.set(i,e))return!1;n&&n.call(e.context,t,r,e),t.trigger("sync",t,r,e)},Jr(this,e),this.sync("read",this,e)},save:function(e,t,n){let r;null==e||"object"==typeof e?(r=e,n=t):(r={})[e]=t;const i=(n=xr({validate:!0,parse:!0},n)).wait,s=n.promise,o=s&&Vr();if(r&&!i){if(!this.set(r,n))return!1}else if(!this._validate(r,n))return!1;const a=this,c=n.success,l=n.error,u=this.attributes;n.success=function(e){a.attributes=u;let t=n.parse?a.parse(e,n):e;if(i&&(t=xr({},r,t)),t&&!a.set(t,n))return!1;c&&c.call(n.context,a,e,n),a.trigger("sync",a,e,n),s&&o.resolve()},n.error=function(e,t,n){l&&l.call(n.context,e,t,n),s&&o.reject(t)},Jr(this,n),r&&i&&(this.attributes=xr({},u,r));const d=this.isNew()?"create":n.patch?"patch":"update";"patch"!==d||n.attrs||(n.attrs=r);const h=this.sync(d,this,n);return this.attributes=u,s?o:h},destroy:function(e){e=e?xi(e):{};const t=this,n=e.success,r=e.wait,i=function(){t.stopListening(),t.trigger("destroy",t,t.collection,e)};e.success=function(s){r&&i(),n&&n.call(e.context,t,s,e),t.isNew()||t.trigger("sync",t,s,e)};let s=!1;return this.isNew()?Ti(e.success):(Jr(this,e),s=this.sync("delete",this,e)),r||i(),s},url:function(){const e=$r(this,"urlRoot")||$r(this.collection,"url")||Gr();if(this.isNew())return e;const t=this.get(this.idAttribute);return e.replace(/[^\/]$/,"$&/")+encodeURIComponent(t)},parse:function(e,t){return e},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(e){return this._validate({},xr({},e,{validate:!0}))},_validate:function(e,t){if(!t.validate||!this.validate)return!0;e=xr({},this.attributes,e);const n=this.validationError=this.validate(e,t)||null;return!n||(this.trigger("invalid",this,n,xr(t,{validationError:n})),!1)}});var Ds=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var s=e[t];s&&(i[r++]=s)}return i}; + */!function(o,s){"use strict";e.exports?e.exports=s():void 0===(i="function"==typeof(r=s)?r.call(t,n,t,e):r)||(e.exports=i)}(0,(function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return!1;var r=e.lastIndexOf(".",t-1);if(r<=0||r>=t-1)return!1;var i=n.list[e.slice(t+1)];return!!i&&i.indexOf(" "+e.slice(r+1,t)+" ")>=0},is:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return!1;if(e.lastIndexOf(".",t-1)>=0)return!1;var r=n.list[e.slice(t+1)];return!!r&&r.indexOf(" "+e.slice(0,t)+" ")>=0},get:function(e){var t=e.lastIndexOf(".");if(t<=0||t>=e.length-1)return null;var r=e.lastIndexOf(".",t-1);if(r<=0||r>=t-1)return null;var i=n.list[e.slice(t+1)];return i?i.indexOf(" "+e.slice(r+1,t)+" ")<0?null:e.slice(r+1):null},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n}))},function(e,t,n){"use strict";var r=n(9),i=n(2);i.d.Websocket=class{constructor(e){this._conn=e,this.strip="wrapper";const t=e.service;if(0!==t.indexOf("ws:")&&0!==t.indexOf("wss:")){let n="";"ws"===e.options.protocol&&"https:"!==window.location.protocol?n+="ws":n+="wss",n+="://"+window.location.host,0!==t.indexOf("/")?n+=window.location.pathname+t:n+=t,e.service=n}}_buildStream(){return Object(i.a)("open",{xmlns:i.d.NS.FRAMING,to:this._conn.domain,version:"1.0"})}_checkStreamError(e,t){let n;if(n=e.getElementsByTagNameNS?e.getElementsByTagNameNS(i.d.NS.STREAM,"error"):e.getElementsByTagName("stream:error"),0===n.length)return!1;const r=n[0];let o="",s="";for(let e=0;e<r.childNodes.length;e++){const t=r.childNodes[e];if("urn:ietf:params:xml:ns:xmpp-streams"!==t.getAttribute("xmlns"))break;"text"===t.nodeName?s=t.textContent:o=t.nodeName}let a="WebSocket stream error: ";return a+=o||"unknown",s&&(a+=" - "+s),i.d.error(a),this._conn._changeConnectStatus(t,o),this._conn._doDisconnect(),!0}_reset(){}_connect(){this._closeSocket(),this.socket=new r.b(this._conn.service,"xmpp"),this.socket.onopen=()=>this._onOpen(),this.socket.onerror=e=>this._onError(e),this.socket.onclose=e=>this._onClose(e),this.socket.onmessage=e=>this._onInitialMessage(e)}_connect_cb(e){if(this._checkStreamError(e,i.d.Status.CONNFAIL))return i.d.Status.CONNFAIL}_handleStreamStart(e){let t=!1;const n=e.getAttribute("xmlns");"string"!=typeof n?t="Missing xmlns in <open />":n!==i.d.NS.FRAMING&&(t="Wrong xmlns in <open />: "+n);const r=e.getAttribute("version");return"string"!=typeof r?t="Missing version in <open />":"1.0"!==r&&(t="Wrong version in <open />: "+r),!t||(this._conn._changeConnectStatus(i.d.Status.CONNFAIL,t),this._conn._doDisconnect(),!1)}_onInitialMessage(e){if(0===e.data.indexOf("<open ")||0===e.data.indexOf("<?xml")){const t=e.data.replace(/^(<\?.*?\?>\s*)*/,"");if(""===t)return;const n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn.xmlInput(n),this._conn.rawInput(e.data),this._handleStreamStart(n)&&this._connect_cb(n)}else if(0===e.data.indexOf("<close ")){const t=(new r.a).parseFromString(e.data,"text/xml").documentElement;this._conn.xmlInput(t),this._conn.rawInput(e.data);const n=t.getAttribute("see-other-uri");if(n){const e=this._conn.service;(e.indexOf("wss:")>=0&&n.indexOf("wss:")>=0||e.indexOf("ws:")>=0)&&(this._conn._changeConnectStatus(i.d.Status.REDIRECT,"Received see-other-uri, resetting connection"),this._conn.reset(),this._conn.service=n,this._connect())}else this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"Received closing stream"),this._conn._doDisconnect()}else{this._replaceMessageHandler();const t=this._streamWrap(e.data),n=(new r.a).parseFromString(t,"text/xml").documentElement;this._conn._connect_cb(n,null,e.data)}}_replaceMessageHandler(){this.socket.onmessage=e=>this._onMessage(e)}_disconnect(e){if(this.socket&&this.socket.readyState!==r.b.CLOSED){e&&this._conn.send(e);const t=Object(i.a)("close",{xmlns:i.d.NS.FRAMING});this._conn.xmlOutput(t.tree());const n=i.d.serialize(t);this._conn.rawOutput(n);try{this.socket.send(n)}catch(e){i.d.warn("Couldn't send <close /> tag.")}}setTimeout(()=>this._conn._doDisconnect,0)}_doDisconnect(){i.d.debug("WebSockets _doDisconnect was called"),this._closeSocket()}_streamWrap(e){return"<wrapper>"+e+"</wrapper>"}_closeSocket(){if(this.socket)try{this.socket.onclose=null,this.socket.onerror=null,this.socket.onmessage=null,this.socket.close()}catch(e){i.d.debug(e.message)}this.socket=null}_emptyQueue(){return!0}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(i.d.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected&&this.socket?(i.d.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):i.d.debug("Websocket closed")}_no_auth_received(e){i.d.error("Server did not offer a supported authentication mechanism"),this._conn._changeConnectStatus(i.d.Status.CONNFAIL,i.d.ErrorCondition.NO_AUTH_MECH),e&&e.call(this._conn),this._conn._doDisconnect()}_onDisconnectTimeout(){}_abortAllRequests(){}_onError(e){i.d.error("Websocket error "+e),this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._disconnect()}_onIdle(){const e=this._conn._data;if(e.length>0&&!this._conn.paused){for(let t=0;t<e.length;t++)if(null!==e[t]){let n;n="restart"===e[t]?this._buildStream().tree():e[t];const r=i.d.serialize(n);this._conn.xmlOutput(n),this._conn.rawOutput(r),this.socket.send(r)}this._conn._data=[]}}_onMessage(e){let t;const n='<close xmlns="urn:ietf:params:xml:ns:xmpp-framing" />';if(e.data===n)return this._conn.rawInput(n),this._conn.xmlInput(e),void(this._conn.disconnecting||this._conn._doDisconnect());if(0===e.data.search("<open ")){if(t=(new r.a).parseFromString(e.data,"text/xml").documentElement,!this._handleStreamStart(t))return}else{const n=this._streamWrap(e.data);t=(new r.a).parseFromString(n,"text/xml").documentElement}return this._checkStreamError(t,i.d.Status.ERROR)?void 0:this._conn.disconnecting&&"presence"===t.firstChild.nodeName&&"unavailable"===t.firstChild.getAttribute("type")?(this._conn.xmlInput(t),void this._conn.rawInput(i.d.serialize(t))):void this._conn._dataRecv(t,e.data)}_onOpen(){i.d.debug("Websocket open");const e=this._buildStream();this._conn.xmlOutput(e.tree());const t=i.d.serialize(e);this._conn.rawOutput(t),this.socket.send(t)}_reqToData(e){return e}_send(){this._conn.flush()}_sendRestart(){clearTimeout(this._conn._idleTimeout),this._conn._onIdle.bind(this._conn)()}}},function(e,t,n){"use strict";t.a=function(){return!1}},function(e,t,n){"use strict";(function(e){var r=n(6),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,s=o&&o.exports===i?r.a.Buffer:void 0,a=s?s.allocUnsafe:void 0;t.a=function(e,t){if(t)return e.slice();var n=e.length,r=a?a(n):new e.constructor(n);return e.copy(r),r}}).call(this,n(69)(e))},function(e,t,n){e.exports=function(){"use strict";return function(e,t,n){var r=t.prototype,i=r.format;n.en.ordinal=function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"},r.format=function(e){var t=this,n=this.$locale(),r=this.$utils(),o=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|gggg|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return n.ordinal(t.$D);case"gggg":return t.weekYear();case"wo":return n.ordinal(t.week(),"W");case"w":case"ww":return r.s(t.week(),"w"===e?1:2,"0");case"k":case"kk":return r.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();default:return e}}));return i.bind(this)(o)}}}()},function(e,t,n){var r=n(332),i=n(70);e.exports=function(e,t,n){var o=null==e?0:e.length;return o?(t=n||void 0===t?1:i(t),r(e,t<0?0:t,o)):[]}},function(e,t,n){var r=n(25),i=n(23);e.exports=function(e){return!0===e||!1===e||i(e)&&"[object Boolean]"==r(e)}},function(e,t){e.exports=function(e){return null==e}},function(e,t,n){var r=n(73),i=n(385),o=n(438),s=n(440);e.exports=function(e,t){if(null==e)return{};var n=r(s(e),(function(e){return[e]}));return t=i(t),o(e,n,(function(e,n){return t(e,n[0])}))}},function(e,t,n){var r=n(102),i=n(134),o=n(29),s=n(114),a=n(443);e.exports=function(e){if(null==e)return 0;if(o(e))return s(e)?a(e):e.length;var t=i(e);return"[object Map]"==t||"[object Set]"==t?e.size:r(e).length}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(139),o=(r=i)&&r.__esModule?r:{default:r};t.default=(0,o.default)("webExtensionSyncStorage","sync")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(139),o=(r=i)&&r.__esModule?r:{default:r};t.default=(0,o.default)("webExtensionLocalStorage","local")},function(e,t,n){"use strict";(function(t){!function(t){var n=/^(b|B)$/,r={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(e){var t,o,s,a,c,l,u,d,h,f,p,g,m,v,_,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},y=[],w=0,S=void 0,x=void 0;if(isNaN(e))throw new TypeError("Invalid number");return o=!0===b.bits,p=!0===b.unix,t=b.base||2,f=void 0!==b.round?b.round:p?1:2,l=void 0!==b.locale?b.locale:"",u=b.localeOptions||{},g=void 0!==b.separator?b.separator:"",m=void 0!==b.spacer?b.spacer:p?"":" ",_=b.symbols||{},v=2===t&&b.standard||"jedec",h=b.output||"string",a=!0===b.fullform,c=b.fullforms instanceof Array?b.fullforms:[],S=void 0!==b.exponent?b.exponent:-1,s=2<t?1e3:1024,(d=(x=Number(e))<0)&&(x=-x),(-1===S||isNaN(S))&&(S=Math.floor(Math.log(x)/Math.log(s)))<0&&(S=0),8<S&&(S=8),"exponent"===h?S:(0===x?(y[0]=0,y[1]=p?"":r[v][o?"bits":"bytes"][S]):(w=x/(2===t?Math.pow(2,10*S):Math.pow(1e3,S)),o&&s<=(w*=8)&&S<8&&(w/=s,S++),y[0]=Number(w.toFixed(0<S?f:0)),y[0]===s&&S<8&&void 0===b.exponent&&(y[0]=1,S++),y[1]=10===t&&1===S?o?"kb":"kB":r[v][o?"bits":"bytes"][S],p&&(y[1]="jedec"===v?y[1].charAt(0):0<S?y[1].replace(/B$/,""):y[1],n.test(y[1])&&(y[0]=Math.floor(y[0]),y[1]=""))),d&&(y[0]=-y[0]),y[1]=_[y[1]]||y[1],!0===l?y[0]=y[0].toLocaleString():0<l.length?y[0]=y[0].toLocaleString(l,u):0<g.length&&(y[0]=y[0].toString().replace(".",g)),"array"===h?y:(a&&(y[1]=c[S]?c[S]:i[v][S]+(o?"bit":"byte")+(1===y[0]?"":"s")),"object"===h?{value:y[0],symbol:y[1],exponent:S}:y.join(m)))}o.partial=function(e){return function(t){return o(t,e)}},e.exports=o}("undefined"!=typeof window&&window)}).call(this,n(12))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/form_captcha.html --\x3e\n",e.label&&(t+="\n<label>\n "+n(e.label)+"\n</label>\n"),t+='\n<img src="data:'+n(e.type)+";base64,"+n(e.data)+'">\n<input name="'+n(e.name)+'" type="text" ',e.required&&(t+=' required="required" '),t+=" />\n\n\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/form_checkbox.html --\x3e\n<div class="form-group">\n <input id="'+n(e.id)+'" name="'+n(e.name)+'" type="checkbox" '+n(e.checked)+" ",e.required&&(t+=" required "),t+=' />\n <label class="form-check-label" for="'+n(e.id)+'">'+n(e.label)+"</label>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t,n="",i=r.escape;Array.prototype.join;return n+='\x3c!-- src/templates/form_select.html --\x3e\n<div class="form-group">\n <label for="'+i(e.id)+'">'+i(e.label)+'</label>\n <select class="form-control" id="'+i(e.id)+'" name="'+i(e.name)+'" ',e.multiple&&(n+=' multiple="multiple" '),n+=">"+(null==(t=e.options)?"":t)+"</select>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;return t+='\x3c!-- src/templates/form_textarea.html --\x3e\n<label class="label-ta">'+n(e.label)+'</label>\n<textarea name="'+n(e.name)+'">'+n(e.value)+"</textarea>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;return t+="\x3c!-- src/templates/form_url.html --\x3e\n<label>\n "+n(e.label)+'\n <a class="form-url" target="_blank" rel="noopener" href="'+n(e.value)+'">'+n(e.value)+"</a>\n</label>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/select_option.html --\x3e\n<option value="'+n(e.value)+'" ',e.selected&&(t+=' selected="selected" '),t+=" >"+n(e.label)+"</option>\n"}},function(e,t,n){"use strict";(function(t){!function(t){var n=/^(b|B)$/,r={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},i={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};function o(e){var t,o,s,a,c,l,u,d,h,f,p,g,m,v,_,b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},y=[],w=0,S=void 0,x=void 0;if(isNaN(e))throw new TypeError("Invalid number");return o=!0===b.bits,p=!0===b.unix,t=b.base||2,f=void 0!==b.round?b.round:p?1:2,l=void 0!==b.locale?b.locale:"",u=b.localeOptions||{},g=void 0!==b.separator?b.separator:"",m=void 0!==b.spacer?b.spacer:p?"":" ",_=b.symbols||{},v=2===t&&b.standard||"jedec",h=b.output||"string",a=!0===b.fullform,c=b.fullforms instanceof Array?b.fullforms:[],S=void 0!==b.exponent?b.exponent:-1,s=2<t?1e3:1024,(d=(x=Number(e))<0)&&(x=-x),(-1===S||isNaN(S))&&(S=Math.floor(Math.log(x)/Math.log(s)))<0&&(S=0),8<S&&(S=8),"exponent"===h?S:(0===x?(y[0]=0,y[1]=p?"":r[v][o?"bits":"bytes"][S]):(w=x/(2===t?Math.pow(2,10*S):Math.pow(1e3,S)),o&&s<=(w*=8)&&S<8&&(w/=s,S++),y[0]=Number(w.toFixed(0<S?f:0)),y[0]===s&&S<8&&void 0===b.exponent&&(y[0]=1,S++),y[1]=10===t&&1===S?o?"kb":"kB":r[v][o?"bits":"bytes"][S],p&&(y[1]="jedec"===v?y[1].charAt(0):0<S?y[1].replace(/B$/,""):y[1],n.test(y[1])&&(y[0]=Math.floor(y[0]),y[1]=""))),d&&(y[0]=-y[0]),y[1]=_[y[1]]||y[1],!0===l?y[0]=y[0].toLocaleString():0<l.length?y[0]=y[0].toLocaleString(l,u):0<g.length&&(y[0]=y[0].toString().replace(".",g)),"array"===h?y:(a&&(y[1]=c[S]?c[S]:i[v][S]+(o?"bit":"byte")+(1===y[0]?"":"s")),"object"===h?{value:y[0],symbol:y[1],exponent:S}:y.join(m)))}o.partial=function(e){return function(t){return o(t,e)}},e.exports=o}("undefined"!=typeof window&&window)}).call(this,n(12))},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="";return t+='\x3c!-- src/plugins/controlbox/templates/toggle.html --\x3e\n<span class="toggle-feedback">'+(0,r.escape)(e.label_toggle)+"</span>\n"}},function(e,t,n){n(8);e.exports=function(e){return'\x3c!-- src/templates/dragresize.html --\x3e\n<div class="dragresize dragresize-top"></div>\n<div class="dragresize dragresize-topleft"></div>\n<div class="dragresize dragresize-left"></div>\n','\x3c!-- src/templates/dragresize.html --\x3e\n<div class="dragresize dragresize-top"></div>\n<div class="dragresize dragresize-topleft"></div>\n<div class="dragresize dragresize-left"></div>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/room_description.html --\x3e\n\x3c!-- FIXME: check markup in mockup --\x3e\n<div class="room-info">\n<p class="room-info"><strong>'+n(e.label_jid)+"</strong> "+n(e.jid)+'</p>\n<p class="room-info"><strong>'+n(e.label_desc)+"</strong> "+n(e.desc)+'</p>\n<p class="room-info"><strong>'+n(e.label_occ)+"</strong> "+n(e.occ)+'</p>\n<p class="room-info"><strong>'+n(e.label_features)+"</strong>\n <ul>\n ",e.passwordprotected&&(t+='\n <li class="room-info locked">'+n(e.label_requires_auth)+"</li>\n "),t+="\n ",e.hidden&&(t+='\n <li class="room-info">'+n(e.label_hidden)+"</li>\n "),t+="\n ",e.membersonly&&(t+='\n <li class="room-info">'+n(e.label_requires_invite)+"</li>\n "),t+="\n ",e.moderated&&(t+='\n <li class="room-info">'+n(e.label_moderated)+"</li>\n "),t+="\n ",e.nonanonymous&&(t+='\n <li class="room-info">'+n(e.label_non_anon)+"</li>\n "),t+="\n ",e.open&&(t+='\n <li class="room-info">'+n(e.label_open_room)+"</li>\n "),t+="\n ",e.persistent&&(t+='\n <li class="room-info">'+n(e.label_permanent_room)+"</li>\n "),t+="\n ",e.publicroom&&(t+='\n <li class="room-info">'+n(e.label_public)+"</li>\n "),t+="\n ",e.semianonymous&&(t+='\n <li class="room-info">'+n(e.label_semi_anon)+"</li>\n "),t+="\n ",e.temporary&&(t+='\n <li class="room-info">'+n(e.label_temp_room)+"</li>\n "),t+="\n ",e.unmoderated&&(t+='\n <li class="room-info">'+n(e.label_unmoderated)+"</li>\n "),t+="\n </ul>\n</p>\n</div>\n"}},function(e,t,n){var r,i; +/** + * @license MIT or GPL-2.0 + * @fileOverview Favico animations + * @author Miroslav Magda, http://blog.ejci.net + * @source: https://github.com/ejci/favico.js + * @version 0.3.10 + */i=function(e){"use strict";e=e||{};var t,n,r,i,o,s,a,c,l,u,d,h,f,p,g={bgColor:"#d00",textColor:"#fff",fontFamily:"sans-serif",fontStyle:"bold",type:"circle",position:"down",animation:"slide",elementId:!1,element:null,dataUrl:!1,win:window};(h={}).ff="undefined"!=typeof InstallTrigger,h.chrome=!!window.chrome,h.opera=!!window.opera||navigator.userAgent.indexOf("Opera")>=0,h.ie=/*@cc_on!@*/!1,h.safari=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0,h.supported=h.chrome||h.ff||h.opera;var m=[];d=function(){},c=!1;var v={ready:function(){c=!0,v.reset(),d()},reset:function(){c&&(m=[],l=!1,u=!1,s.clearRect(0,0,i,r),s.drawImage(a,0,0,i,r),y.setIcon(o),window.clearTimeout(f),window.clearTimeout(void 0))},start:function(){if(c&&!u&&m.length>0){u=!0;var e=function(){["type","animation","bgColor","textColor","fontFamily","fontStyle"].forEach((function(e){e in m[0].options&&(t[e]=m[0].options[e])})),x.run(m[0].options,(function(){l=m[0],u=!1,m.length>0&&(m.shift(),v.start())}),!1)};l?x.run(l.options,(function(){e()}),!0):e()}}},_={},b=function(e){return e.n="number"==typeof e.n?Math.abs(0|e.n):e.n,e.x=i*e.x,e.y=r*e.y,e.w=i*e.w,e.h=r*e.h,e.len=(""+e.n).length,e};_.circle=function(e){var n=!1;2===(e=b(e)).len?(e.x=e.x-.4*e.w,e.w=1.4*e.w,n=!0):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w,n=!0),s.clearRect(0,0,i,r),s.drawImage(a,0,0,i,r),s.beginPath(),s.font=t.fontStyle+" "+Math.floor(e.h*(e.n>99?.85:1))+"px "+t.fontFamily,s.textAlign="center",n?(s.moveTo(e.x+e.w/2,e.y),s.lineTo(e.x+e.w-e.h/2,e.y),s.quadraticCurveTo(e.x+e.w,e.y,e.x+e.w,e.y+e.h/2),s.lineTo(e.x+e.w,e.y+e.h-e.h/2),s.quadraticCurveTo(e.x+e.w,e.y+e.h,e.x+e.w-e.h/2,e.y+e.h),s.lineTo(e.x+e.h/2,e.y+e.h),s.quadraticCurveTo(e.x,e.y+e.h,e.x,e.y+e.h-e.h/2),s.lineTo(e.x,e.y+e.h/2),s.quadraticCurveTo(e.x,e.y,e.x+e.h/2,e.y)):s.arc(e.x+e.w/2,e.y+e.h/2,e.h/2,0,2*Math.PI),s.fillStyle="rgba("+t.bgColor.r+","+t.bgColor.g+","+t.bgColor.b+","+e.o+")",s.fill(),s.closePath(),s.beginPath(),s.stroke(),s.fillStyle="rgba("+t.textColor.r+","+t.textColor.g+","+t.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?s.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):s.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),s.closePath()},_.rectangle=function(e){2===(e=b(e)).len?(e.x=e.x-.4*e.w,e.w=1.4*e.w):e.len>=3&&(e.x=e.x-.65*e.w,e.w=1.65*e.w),s.clearRect(0,0,i,r),s.drawImage(a,0,0,i,r),s.beginPath(),s.font=t.fontStyle+" "+Math.floor(e.h*(e.n>99?.9:1))+"px "+t.fontFamily,s.textAlign="center",s.fillStyle="rgba("+t.bgColor.r+","+t.bgColor.g+","+t.bgColor.b+","+e.o+")",s.fillRect(e.x,e.y,e.w,e.h),s.fillStyle="rgba("+t.textColor.r+","+t.textColor.g+","+t.textColor.b+","+e.o+")","number"==typeof e.n&&e.n>999?s.fillText((e.n>9999?9:Math.floor(e.n/1e3))+"k+",Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.2*e.h)):s.fillText(e.n,Math.floor(e.x+e.w/2),Math.floor(e.y+e.h-.15*e.h)),s.closePath()};var y={};function w(e){e=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,r){return t+t+n+n+r+r}));var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return!!t&&{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}}function S(e,t){var n,r={};for(n in e)r[n]=e[n];for(n in t)r[n]=t[n];return r}y.getIcons=function(){var e=[];return t.element?e=[t.element]:t.elementId?(e=[p.getElementById(t.elementId)])[0].setAttribute("href",e[0].getAttribute("src")):0===(e=function(){for(var e=[],t=p.getElementsByTagName("head")[0].getElementsByTagName("link"),n=0;n<t.length;n++)/(^|\s)icon(\s|$)/i.test(t[n].getAttribute("rel"))&&e.push(t[n]);return e}()).length&&((e=[p.createElement("link")])[0].setAttribute("rel","icon"),p.getElementsByTagName("head")[0].appendChild(e[0])),e.forEach((function(e){e.setAttribute("type","image/png")})),e},y.setIcon=function(e){var t=e.toDataURL("image/png");y.setIconSrc(t)},y.setIconSrc=function(e){if(t.dataUrl&&t.dataUrl(e),t.element)t.element.setAttribute("href",e),t.element.setAttribute("src",e);else if(t.elementId){var r=p.getElementById(t.elementId);r.setAttribute("href",e),r.setAttribute("src",e)}else if(h.ff||h.opera){var i=n[n.length-1],o=p.createElement("link");n=[o],h.opera&&o.setAttribute("rel","icon"),o.setAttribute("rel","icon"),o.setAttribute("type","image/png"),p.getElementsByTagName("head")[0].appendChild(o),o.setAttribute("href",e),i.parentNode&&i.parentNode.removeChild(i)}else n.forEach((function(t){t.setAttribute("href",e)}))};var x={duration:40,types:{}};return x.types.fade=[{x:.4,y:.4,w:.6,h:.6,o:0},{x:.4,y:.4,w:.6,h:.6,o:.1},{x:.4,y:.4,w:.6,h:.6,o:.2},{x:.4,y:.4,w:.6,h:.6,o:.3},{x:.4,y:.4,w:.6,h:.6,o:.4},{x:.4,y:.4,w:.6,h:.6,o:.5},{x:.4,y:.4,w:.6,h:.6,o:.6},{x:.4,y:.4,w:.6,h:.6,o:.7},{x:.4,y:.4,w:.6,h:.6,o:.8},{x:.4,y:.4,w:.6,h:.6,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],x.types.none=[{x:.4,y:.4,w:.6,h:.6,o:1}],x.types.pop=[{x:1,y:1,w:0,h:0,o:1},{x:.9,y:.9,w:.1,h:.1,o:1},{x:.8,y:.8,w:.2,h:.2,o:1},{x:.7,y:.7,w:.3,h:.3,o:1},{x:.6,y:.6,w:.4,h:.4,o:1},{x:.5,y:.5,w:.5,h:.5,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],x.types.popFade=[{x:.75,y:.75,w:0,h:0,o:0},{x:.65,y:.65,w:.1,h:.1,o:.2},{x:.6,y:.6,w:.2,h:.2,o:.4},{x:.55,y:.55,w:.3,h:.3,o:.6},{x:.5,y:.5,w:.4,h:.4,o:.8},{x:.45,y:.45,w:.5,h:.5,o:.9},{x:.4,y:.4,w:.6,h:.6,o:1}],x.types.slide=[{x:.4,y:1,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.9,w:.6,h:.6,o:1},{x:.4,y:.8,w:.6,h:.6,o:1},{x:.4,y:.7,w:.6,h:.6,o:1},{x:.4,y:.6,w:.6,h:.6,o:1},{x:.4,y:.5,w:.6,h:.6,o:1},{x:.4,y:.4,w:.6,h:.6,o:1}],x.run=function(e,n,r,i){var s=x.types[p.hidden||p.msHidden||p.webkitHidden||p.mozHidden?"none":t.animation];i=!0===r?void 0!==i?i:s.length-1:void 0!==i?i:0,n=n||function(){},i<s.length&&i>=0?(_[t.type](S(e,s[i])),f=setTimeout((function(){r?i-=1:i+=1,x.run(e,n,r,i)}),x.duration),y.setIcon(o)):n()},function(){(t=S(g,e)).bgColor=w(t.bgColor),t.textColor=w(t.textColor),t.position=t.position.toLowerCase(),t.animation=x.types[""+t.animation]?t.animation:g.animation,p=t.win.document;var c=t.position.indexOf("up")>-1,l=t.position.indexOf("left")>-1;if(c||l)for(var u in x.types)for(var d=0;d<x.types[u].length;d++){var h=x.types[u][d];c&&(h.y<.6?h.y=h.y-.4:h.y=h.y-2*h.y+(1-h.w)),l&&(h.x<.6?h.x=h.x-.4:h.x=h.x-2*h.x+(1-h.h)),x.types[u][d]=h}t.type=_[""+t.type]?t.type:g.type,n=y.getIcons(),o=document.createElement("canvas"),a=document.createElement("img");var f=n[n.length-1];f.hasAttribute("href")?(a.setAttribute("crossOrigin","anonymous"),a.onload=function(){r=a.height>0?a.height:32,i=a.width>0?a.width:32,o.height=r,o.width=i,s=o.getContext("2d"),v.ready()},a.setAttribute("src",f.getAttribute("href"))):(r=32,i=32,a.height=r,a.width=i,o.height=r,o.width=i,s=o.getContext("2d"),v.ready())}(),{badge:function(e,t){t=("string"==typeof t?{animation:t}:t)||{},d=function(){try{if("number"==typeof e?e>0:""!==e){var n={type:"badge",options:{n:e}};if("animation"in t&&x.types[""+t.animation]&&(n.options.animation=""+t.animation),"type"in t&&_[""+t.type]&&(n.options.type=""+t.type),["bgColor","textColor"].forEach((function(e){e in t&&(n.options[e]=w(t[e]))})),["fontStyle","fontFamily"].forEach((function(e){e in t&&(n.options[e]=t[e])})),m.push(n),m.length>100)throw new Error("Too many badges requests in queue.");v.start()}else v.reset()}catch(e){throw new Error("Error setting badge. Message: "+e.message)}},c&&d()},setOpt:function(e,n){var r=e;null==n&&"[object Object]"==Object.prototype.toString.call(e)||((r={})[e]=n);for(var i=Object.keys(r),o=0;o<i.length;o++)"bgColor"==i[o]||"textColor"==i[o]?t[i[o]]=w(r[i[o]]):t[i[o]]=r[i[o]];m.push(l),v.start()},reset:v.reset,browser:{supported:h.supported}}},void 0===(r=function(){return i}.apply(t,[]))||(e.exports=r)},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/register_panel.html --\x3e\n<div>\n <form id="converse-register" class="converse-form">\n <legend class="col-form-label">'+n(e.__("Create your account"))+'</legend>\n\n <div class="form-group">\n <label>'+n(e.__("Please enter the XMPP provider to register with:"))+'</label>\n <div class="form-errors hidden"></div>\n\n ',e.default_domain?t+="\n "+n(e.default_domain)+"\n </div>\n ":t+='\n <input class="form-control" required="required" type="text" name="domain" placeholder="'+n(e.domain_placeholder)+'"/>\n <p class="form-text text-muted">'+n(e.help_providers)+' <a href="'+n(e.href_providers)+'" class="url" target="_blank" rel="noopener">'+n(e.help_providers_link)+'</a>.</p>\n </div>\n <fieldset class="buttons">\n <input class="btn btn-primary" type="submit" value="'+n(e.label_register)+'"/>\n <div class="switch-form">\n <p>'+n(e.__("Already have a chat account?"))+'</p>\n <p><a class="login-here toggle-register-login" href="#converse/login">'+n(e.__("Log in here"))+"</a></p>\n </div>\n </fieldset>\n ",t+="\n \x3c!--</div>--\x3e\n </form>\n</div>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/registration_form.html --\x3e\n<legend class="col-form-label">'+n(e.__("Account Registration:"))+" "+n(e.domain)+'</legend>\n<p class="title">'+n(e.title)+'</p>\n<p class="form-help instructions">'+n(e.instructions)+'</p>\n<div class="form-errors hidden"></div>\n\n<fieldset class="buttons">\n <input type="submit" class="btn btn-primary" value="'+n(e.__("Register"))+'"/>\n ',e.registration_domain||(t+='\n <input type="button" class="btn btn-secondary button-cancel" value="'+n(e.__("Choose a different provider"))+'"/>\n '),t+='\n <div class="switch-form">\n <p>'+n(e.__("Already have a chat account?"))+'</p>\n <p><a class="login-here toggle-register-login" href="#converse/login">'+n(e.__("Log in here"))+"</a></p>\n </div>\n</fieldset>\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/registration_request.html --\x3e\n<span class="spinner login-submit fa fa-spinner"></span>\n<p class="info">'+n(e.__("Hold tight, we're fetching the registration form…"))+"</p>\n",e.cancel&&(t+='\n <button class="btn btn-secondary button-cancel hor_centered">'+n(e.__("Cancel"))+"</button>\n"),t+="\n"}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/group_header.html --\x3e\n<a href="#" class="list-toggle group-toggle controlbox-padded" title="'+n(e.desc_group_toggle)+'">\n <span class="fa ',e.toggle_state===e._converse.OPENED?t+=" fa-caret-down ":t+=" fa-caret-right ",t+='">\n </span> '+n(e.label_group)+'</a>\n<ul class="items-list roster-group-contacts ',e.toggle_state===e._converse.CLOSED&&(t+=" collapsed "),t+='"></ul>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/pending_contact.html --\x3e\n",e.allow_chat_pending_contacts&&(t+='\n<a class="list-item-link open-chat w-100" href="#">\n'),t+='\n<span class="pending-contact-name" title="JID: '+n(e.jid)+'">'+n(e.display_name)+"</span> \n",e.allow_chat_pending_contacts&&(t+="</a>"),t+='\n<a class="list-item-action remove-xmpp-contact far fa-trash-alt" title="'+n(e.desc_remove)+'" href="#"></a>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+="\x3c!-- src/templates/requesting_contact.html --\x3e\n",e.allow_chat_pending_contacts&&(t+='\n<a class="open-chat w-100"href="#">\n'),t+='\n<span class="req-contact-name w-100" title="JID: '+n(e.jid)+'">'+n(e.display_name)+"</span>\n",e.allow_chat_pending_contacts&&(t+="\n</a>\n"),t+='\n<a class="accept-xmpp-request list-item-action list-item-action--visible fa fa-check"\n aria-label="'+n(e.desc_accept)+'" title="'+n(e.desc_accept)+'" href="#"></a>\n<a class="decline-xmpp-request list-item-action list-item-action--visible fa fa-times"\n aria-label="'+n(e.desc_decline)+'" title="'+n(e.desc_decline)+'" href="#"></a>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/roster.html --\x3e\n<div class="d-flex controlbox-padded">\n <span class="w-100 controlbox-heading controlbox-heading--contacts">'+n(e.heading_contacts)+'</span>\n <a class="controlbox-heading__btn sync-contacts fa fa-sync" title="'+n(e.title_sync_contacts)+'"></a>\n ',e.allow_contact_requests&&(t+='\n <a class="controlbox-heading__btn add-contact fa fa-user-plus"\n title="'+n(e.title_add_contact)+'"\n data-toggle="modal"\n data-target="#add-contact-modal"></a>\n '),t+='\n</div>\n\n<form class="roster-filter-form"></form>\n\n<div class="list-container roster-contacts"></div>\n'}},function(e,t,n){var r={escape:n(8)};e.exports=function(e){var t="",n=r.escape;Array.prototype.join;return t+='\x3c!-- src/templates/roster_item.html --\x3e\n<a class="list-item-link cbox-list-item open-chat w-100 ',e.num_unread&&(t+=" unread-msgs "),t+='"\n title="'+n(e.desc_chat)+'" href="#">\n\n <canvas class="avatar" height="30" width="30"></canvas>\n <span class="'+n(e.status_icon)+'" title="'+n(e.desc_status)+'"></span>\n ',e.num_unread&&(t+=' <span class="msgs-indicator">'+n(e.num_unread)+"</span> "),t+='\n <span class="contact-name contact-name--'+n(e.show)+" ",e.num_unread&&(t+=" unread-msgs "),t+='">'+n(e.display_name)+"</span>\n</a>\n",e.allow_contact_removal&&(t+='\n<a class="list-item-action remove-xmpp-contact far fa-trash-alt" title="'+n(e.desc_remove)+'" href="#"></a>\n'),t+="\n"}},,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,function(e,t,n){"use strict";n.r(t);const r={},i={plugins:{add(e,t){if(void 0!==r[e])throw new TypeError('Error: plugin with name "'.concat(e,'" has already been ')+"registered!");r[e]=t}},initialize(e={}){i.load(e).initialize(e)},load:(e={})=>(e.assets_path&&(n.p=e.assets_path),n(506),Object.keys(r).forEach(e=>i.plugins.add(e,r[e])),i)};window.converse=i,t.default=i},function(e,t){function n(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}"function"!=typeof window.CustomEvent&&(n.prototype=window.Event.prototype,window.CustomEvent=n),String.prototype.includes||(String.prototype.includes=function(e,t){"use strict";return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){const n=this.toString();(void 0===t||t>n.length)&&(t=n.length),t-=e.length;const r=n.indexOf(e,t);return-1!==r&&r===t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),String.prototype.splitOnce||(String.prototype.splitOnce=function(e){const t=this.split(e);return[t.shift(),t.join(e)]}),String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")})},function(e,t,n){"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},function(e,t){var n=/[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,r=new RegExp("[\\-\\.0-9"+n.source.slice(1,-1)+"\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),i=new RegExp("^"+n.source+r.source+"*(?::"+n.source+r.source+"*)?$");function o(){}function s(e,t){return t.lineNumber=e.lineNumber,t.columnNumber=e.columnNumber,t}function a(e,t,n,r,i,o){for(var s,a=++t,c=0;;){var l=e.charAt(a);switch(l){case"=":if(1===c)s=e.slice(t,a),c=3;else{if(2!==c)throw new Error("attribute equal must after attrName");c=3}break;case"'":case'"':if(3===c||1===c){if(1===c&&(o.warning('attribute value must after "="'),s=e.slice(t,a)),t=a+1,!((a=e.indexOf(l,t))>0))throw new Error("attribute value no end '"+l+"' match");u=e.slice(t,a).replace(/&#?\w+;/g,i),n.add(s,u,t-1),c=5}else{if(4!=c)throw new Error('attribute value must after "="');u=e.slice(t,a).replace(/&#?\w+;/g,i),n.add(s,u,t),o.warning('attribute "'+s+'" missed start quot('+l+")!!"),t=a+1,c=5}break;case"/":switch(c){case 0:n.setTagName(e.slice(t,a));case 5:case 6:case 7:c=7,n.closed=!0;case 4:case 1:case 2:break;default:throw new Error("attribute invalid close char('/')")}break;case"":return o.error("unexpected end of input"),0==c&&n.setTagName(e.slice(t,a)),a;case">":switch(c){case 0:n.setTagName(e.slice(t,a));case 5:case 6:case 7:break;case 4:case 1:"/"===(u=e.slice(t,a)).slice(-1)&&(n.closed=!0,u=u.slice(0,-1));case 2:2===c&&(u=s),4==c?(o.warning('attribute "'+u+'" missed quot(")!!'),n.add(s,u.replace(/&#?\w+;/g,i),t)):("http://www.w3.org/1999/xhtml"===r[""]&&u.match(/^(?:disabled|checked|selected)$/i)||o.warning('attribute "'+u+'" missed value!! "'+u+'" instead!!'),n.add(u,u,t));break;case 3:throw new Error("attribute value missed!!")}return a;case"€":l=" ";default:if(l<=" ")switch(c){case 0:n.setTagName(e.slice(t,a)),c=6;break;case 1:s=e.slice(t,a),c=2;break;case 4:var u=e.slice(t,a).replace(/&#?\w+;/g,i);o.warning('attribute "'+u+'" missed quot(")!!'),n.add(s,u,t);case 5:c=6}else switch(c){case 2:n.tagName;"http://www.w3.org/1999/xhtml"===r[""]&&s.match(/^(?:disabled|checked|selected)$/i)||o.warning('attribute "'+s+'" missed value!! "'+s+'" instead2!!'),n.add(s,s,t),t=a,c=1;break;case 5:o.warning('attribute space is required"'+s+'"!!');case 6:c=1,t=a;break;case 3:c=4,t=a;break;case 7:throw new Error("elements closed character '/' and '>' must be connected to")}}a++}}function c(e,t,n){for(var r=e.tagName,i=null,o=e.length;o--;){var s=e[o],a=s.qName,c=s.value;if((f=a.indexOf(":"))>0)var l=s.prefix=a.slice(0,f),u=a.slice(f+1),h="xmlns"===l&&u;else u=a,l=null,h="xmlns"===a&&"";s.localName=u,!1!==h&&(null==i&&(i={},d(n,n={})),n[h]=i[h]=c,s.uri="http://www.w3.org/2000/xmlns/",t.startPrefixMapping(h,c))}for(o=e.length;o--;){(l=(s=e[o]).prefix)&&("xml"===l&&(s.uri="http://www.w3.org/XML/1998/namespace"),"xmlns"!==l&&(s.uri=n[l||""]))}var f;(f=r.indexOf(":"))>0?(l=e.prefix=r.slice(0,f),u=e.localName=r.slice(f+1)):(l=null,u=e.localName=r);var p=e.uri=n[l||""];if(t.startElement(p,u,r,e),!e.closed)return e.currentNSMap=n,e.localNSMap=i,!0;if(t.endElement(p,u,r),i)for(l in i)t.endPrefixMapping(l)}function l(e,t,n,r,i){if(/^(?:script|textarea)$/i.test(n)){var o=e.indexOf("</"+n+">",t),s=e.substring(t+1,o);if(/[&<]/.test(s))return/^script$/i.test(n)?(i.characters(s,0,s.length),o):(s=s.replace(/&#?\w+;/g,r),i.characters(s,0,s.length),o)}return t+1}function u(e,t,n,r){var i=r[n];return null==i&&((i=e.lastIndexOf("</"+n+">"))<t&&(i=e.lastIndexOf("</"+n)),r[n]=i),i<t}function d(e,t){for(var n in e)t[n]=e[n]}function h(e,t,n,r){switch(e.charAt(t+2)){case"-":return"-"===e.charAt(t+3)?(i=e.indexOf("--\x3e",t+4))>t?(n.comment(e,t+4,i-t-4),i+3):(r.error("Unclosed comment"),-1):-1;default:if("CDATA["==e.substr(t+3,6)){var i=e.indexOf("]]>",t+9);return n.startCDATA(),n.characters(e,t+9,i-t-9),n.endCDATA(),i+3}var o=function(e,t){var n,r=[],i=/'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;i.lastIndex=t,i.exec(e);for(;n=i.exec(e);)if(r.push(n),n[1])return r}(e,t),s=o.length;if(s>1&&/!doctype/i.test(o[0][0])){var a=o[1][0],c=s>3&&/^public$/i.test(o[2][0])&&o[3][0],l=s>4&&o[4][0],u=o[s-1];return n.startDTD(a,c&&c.replace(/^(['"])(.*?)\1$/,"$2"),l&&l.replace(/^(['"])(.*?)\1$/,"$2")),n.endDTD(),u.index+u[0].length}}return-1}function f(e,t,n){var r=e.indexOf("?>",t);if(r){var i=e.substring(t,r).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);if(i){i[0].length;return n.processingInstruction(i[1],i[2]),r+2}return-1}return-1}function p(e){}function g(e,t){return e.__proto__=t,e}o.prototype={parse:function(e,t,n){var r=this.domBuilder;r.startDocument(),d(t,t={}),function(e,t,n,r,i){function o(e){var t=e.slice(1,-1);return t in n?n[t]:"#"===t.charAt(0)?function(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}(parseInt(t.substr(1).replace("x","0x"))):(i.error("entity not found:"+e),e)}function d(t){if(t>S){var n=e.substring(S,t).replace(/&#?\w+;/g,o);b&&g(S),r.characters(n,0,t-S),S=t}}function g(t,n){for(;t>=v&&(n=_.exec(e));)m=n.index,v=m+n[0].length,b.lineNumber++;b.columnNumber=t-m+1}var m=0,v=0,_=/.*(?:\r\n?|\n)|.*$/g,b=r.locator,y=[{currentNSMap:t}],w={},S=0;for(;;){try{var x=e.indexOf("<",S);if(x<0){if(!e.substr(S).match(/^\s*$/)){var E=r.doc,A=E.createTextNode(e.substr(S));E.appendChild(A),r.currentElement=A}return}switch(x>S&&d(x),e.charAt(x+1)){case"/":var C=e.indexOf(">",x+3),j=e.substring(x+2,C),T=y.pop();C<0?(j=e.substring(x+2).replace(/[\s<].*/,""),i.error("end tag name: "+j+" is not complete:"+T.tagName),C=x+1+j.length):j.match(/\s</)&&(j=j.replace(/[\s<].*/,""),i.error("end tag name: "+j+" maybe not complete"),C=x+1+j.length);var O=T.localNSMap,k=T.tagName==j;if(k||T.tagName&&T.tagName.toLowerCase()==j.toLowerCase()){if(r.endElement(T.uri,T.localName,j),O)for(var N in O)r.endPrefixMapping(N);k||i.fatalError("end tag name: "+j+" is not match the current start tagName:"+T.tagName)}else y.push(T);C++;break;case"?":b&&g(x),C=f(e,x,r);break;case"!":b&&g(x),C=h(e,x,r,i);break;default:b&&g(x);var I=new p,M=y[y.length-1].currentNSMap,R=(C=a(e,x,I,M,o,i),I.length);if(!I.closed&&u(e,C,I.tagName,w)&&(I.closed=!0,n.nbsp||i.warning("unclosed xml attribute")),b&&R){for(var D=s(b,{}),P=0;P<R;P++){var L=I[P];g(L.offset),L.locator=s(b,{})}r.locator=D,c(I,r,M)&&y.push(I),r.locator=b}else c(I,r,M)&&y.push(I);"http://www.w3.org/1999/xhtml"!==I.uri||I.closed?C++:C=l(e,C,I.tagName,o,r)}}catch(e){i.error("element parse error: "+e),C=-1}C>S?S=C:d(Math.max(x,S)+1)}}(e,t,n,r,this.errorHandler),r.endDocument()}},p.prototype={setTagName:function(e){if(!i.test(e))throw new Error("invalid tagName:"+e);this.tagName=e},add:function(e,t,n){if(!i.test(e))throw new Error("invalid attribute:"+e);this[this.length++]={qName:e,value:t,offset:n}},length:0,getLocalName:function(e){return this[e].localName},getLocator:function(e){return this[e].locator},getQName:function(e){return this[e].qName},getURI:function(e){return this[e].uri},getValue:function(e){return this[e].value}},g({},g.prototype)instanceof g||(g=function(e,t){function n(){}for(t in n.prototype=t,n=new n,e)n[t]=e[t];return n}),t.XMLReader=o},function(e,t,n){"use strict";function r(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e);return t<0?void 0:t}e.exports=function(e){if((e=(e=""+e).replace(/[ \t\n\f\r]/g,"")).length%4==0&&(e=e.replace(/==?$/,"")),e.length%4==1||/[^+/0-9A-Za-z]/.test(e))return null;let t="",n=0,i=0;for(let o=0;o<e.length;o++)n<<=6,n|=r(e[o]),i+=6,24===i&&(t+=String.fromCharCode((16711680&n)>>16),t+=String.fromCharCode((65280&n)>>8),t+=String.fromCharCode(255&n),n=i=0);return 12===i?(n>>=4,t+=String.fromCharCode(n)):18===i&&(n>>=2,t+=String.fromCharCode((65280&n)>>8),t+=String.fromCharCode(255&n)),t}},function(e,t,n){"use strict";function r(e){if(e>=0&&e<64)return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[e]}e.exports=function(e){let t;for(e=""+e,t=0;t<e.length;t++)if(e.charCodeAt(t)>255)return null;let n="";for(t=0;t<e.length;t+=3){const i=[void 0,void 0,void 0,void 0];i[0]=e.charCodeAt(t)>>2,i[1]=(3&e.charCodeAt(t))<<4,e.length>t+1&&(i[1]|=e.charCodeAt(t+1)>>4,i[2]=(15&e.charCodeAt(t+1))<<2),e.length>t+2&&(i[2]|=e.charCodeAt(t+2)>>6,i[3]=63&e.charCodeAt(t+2));for(let e=0;e<i.length;e++)void 0===i[e]?n+="=":n+=r(i[e])}return n}},function(e,t){e.exports=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r<i;)o[r]=e[r+t];return o}},function(e,t,n){var r=n(334);e.exports=function(e){return e?(e=r(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},function(e,t,n){var r=n(20),i=n(48),o=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,c=/^0o[0-7]+$/i,l=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(i(e))return NaN;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=a.test(e);return n||c.test(e)?l(e.slice(2),n?2:8):s.test(e)?NaN:+e}},function(e,t,n){var r=n(49),i=Object.prototype,o=i.hasOwnProperty,s=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=o.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var i=s.call(e);return r&&(t?e[a]=n:delete e[a]),i}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t,n){var r=n(97),i=n(338),o=n(350),s=n(16);e.exports=function(e,t){return(s(e)?r:i)(e,o(t))}},function(e,t,n){var r=n(339),i=n(349)(r);e.exports=i},function(e,t,n){var r=n(340),i=n(33);e.exports=function(e,t){return e&&r(e,t,i)}},function(e,t,n){var r=n(341)();e.exports=r},function(e,t){e.exports=function(e){return function(t,n,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var c=s[e?a:++i];if(!1===n(o[c],c,o))break}return t}}},function(e,t){e.exports=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}},function(e,t,n){var r=n(25),i=n(23);e.exports=function(e){return i(e)&&"[object Arguments]"==r(e)}},function(e,t){e.exports=function(){return!1}},function(e,t,n){var r=n(25),i=n(71),o=n(23),s={};s["[object Float32Array]"]=s["[object Float64Array]"]=s["[object Int8Array]"]=s["[object Int16Array]"]=s["[object Int32Array]"]=s["[object Uint8Array]"]=s["[object Uint8ClampedArray]"]=s["[object Uint16Array]"]=s["[object Uint32Array]"]=!0,s["[object Arguments]"]=s["[object Array]"]=s["[object ArrayBuffer]"]=s["[object Boolean]"]=s["[object DataView]"]=s["[object Date]"]=s["[object Error]"]=s["[object Function]"]=s["[object Map]"]=s["[object Number]"]=s["[object Object]"]=s["[object RegExp]"]=s["[object Set]"]=s["[object String]"]=s["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&i(e.length)&&!!s[r(e)]}},function(e,t){e.exports=function(e){return function(t){return e(t)}}},function(e,t,n){(function(e){var r=n(96),i=t&&!t.nodeType&&t,o=i&&"object"==typeof e&&e&&!e.nodeType&&e,s=o&&o.exports===i&&r.process,a=function(){try{var e=o&&o.require&&o.require("util").types;return e||s&&s.binding&&s.binding("util")}catch(e){}}();e.exports=a}).call(this,n(46)(e))},function(e,t,n){var r=n(104)(Object.keys,Object);e.exports=r},function(e,t,n){var r=n(29);e.exports=function(e,t){return function(n,i){if(null==n)return n;if(!r(n))return e(n,i);for(var o=n.length,s=t?o:-1,a=Object(n);(t?s--:++s<o)&&!1!==i(a[s],s,a););return n}}},function(e,t,n){var r=n(38);e.exports=function(e){return"function"==typeof e?e:r}},function(e,t,n){var r=n(352),i=n(357),o=n(112),s=i((function(e,t){r(t,o(t),e)}));e.exports=s},function(e,t,n){var r=n(105),i=n(106);e.exports=function(e,t,n,o){var s=!n;n||(n={});for(var a=-1,c=t.length;++a<c;){var l=t[a],u=o?o(n[l],e[l],l,n,e):void 0;void 0===u&&(u=e[l]),s?i(n,l,u):r(n,l,u)}return n}},function(e,t,n){var r=n(62),i=n(354),o=n(20),s=n(108),a=/^\[object .+?Constructor\]$/,c=Function.prototype,l=Object.prototype,u=c.toString,d=l.hasOwnProperty,h=RegExp("^"+u.call(d).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||i(e))&&(r(e)?h:a).test(s(e))}},function(e,t,n){var r,i=n(355),o=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!o&&o in e}},function(e,t,n){var r=n(11)["__core-js_shared__"];e.exports=r},function(e,t){e.exports=function(e,t){return null==e?void 0:e[t]}},function(e,t,n){var r=n(109),i=n(361);e.exports=function(e){return r((function(t,n){var r=-1,o=n.length,s=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(o--,s):void 0,a&&i(n[0],n[1],a)&&(s=o<3?void 0:s,o=1),t=Object(t);++r<o;){var c=n[r];c&&e(t,c,r,s)}return t}))}},function(e,t,n){var r=n(72),i=Math.max;e.exports=function(e,t,n){return t=i(void 0===t?e.length-1:t,0),function(){for(var o=arguments,s=-1,a=i(o.length-t,0),c=Array(a);++s<a;)c[s]=o[t+s];s=-1;for(var l=Array(t+1);++s<t;)l[s]=o[s];return l[t]=n(c),r(e,this,l)}}},function(e,t,n){var r=n(360),i=n(107),o=n(38),s=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:o;e.exports=s},function(e,t){e.exports=function(e){return function(){return e}}},function(e,t,n){var r=n(50),i=n(29),o=n(37),s=n(20);e.exports=function(e,t,n){if(!s(n))return!1;var a=typeof t;return!!("number"==a?i(n)&&o(t,n.length):"string"==a&&t in n)&&r(n[t],e)}},function(e,t,n){var r=n(20),i=n(103),o=n(363),s=Object.prototype.hasOwnProperty;e.exports=function(e){if(!r(e))return o(e);var t=i(e),n=[];for(var a in e)("constructor"!=a||!t&&s.call(e,a))&&n.push(a);return n}},function(e,t){e.exports=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}},function(e,t){e.exports=function(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1}},function(e,t){e.exports=function(e){return e!=e}},function(e,t){e.exports=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}},function(e,t,n){var r=n(73);e.exports=function(e,t){return r(t,(function(t){return e[t]}))}},function(e,t,n){var r=n(115),i=n(369),o=n(370),s=n(118),a=n(383),c=n(122),l=n(384),u=n(125),d=n(126),h=n(70),f=Math.max;e.exports=function(e,t,n,p,g,m,v,_){var b=2&t;if(!b&&"function"!=typeof e)throw new TypeError("Expected a function");var y=p?p.length:0;if(y||(t&=-97,p=g=void 0),v=void 0===v?v:f(h(v),0),_=void 0===_?_:h(_),y-=g?g.length:0,64&t){var w=p,S=g;p=g=void 0}var x=b?void 0:c(e),E=[e,t,n,p,g,w,S,m,v,_];if(x&&l(E,x),e=E[0],t=E[1],n=E[2],p=E[3],g=E[4],!(_=E[9]=void 0===E[9]?b?0:e.length:f(E[9]-y,0))&&24&t&&(t&=-25),t&&1!=t)A=8==t||16==t?o(e,t,_):32!=t&&33!=t||g.length?s.apply(void 0,E):a(e,t,n,p);else var A=i(e,t,n);return d((x?r:u)(A,E),e,t)}},function(e,t,n){var r=n(51),i=n(11);e.exports=function(e,t,n){var o=1&t,s=r(e);return function t(){var r=this&&this!==i&&this instanceof t?s:e;return r.apply(o?n:this,arguments)}}},function(e,t,n){var r=n(72),i=n(51),o=n(118),s=n(121),a=n(77),c=n(52),l=n(11);e.exports=function(e,t,n){var u=i(e);return function i(){for(var d=arguments.length,h=Array(d),f=d,p=a(i);f--;)h[f]=arguments[f];var g=d<3&&h[0]!==p&&h[d-1]!==p?[]:c(h,p);if((d-=g.length)<n)return s(e,t,o,i.placeholder,void 0,h,g,void 0,void 0,n-d);var m=this&&this!==l&&this instanceof i?u:e;return r(m,this,h)}}},function(e,t){e.exports=function(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}},function(e,t,n){var r=n(75),i=n(122),o=n(374),s=n(376);e.exports=function(e){var t=o(e),n=s[t];if("function"!=typeof n||!(t in r.prototype))return!1;if(e===n)return!0;var a=i(n);return!!a&&e===a[0]}},function(e,t){e.exports=function(){}},function(e,t,n){var r=n(375),i=Object.prototype.hasOwnProperty;e.exports=function(e){for(var t=e.name+"",n=r[t],o=i.call(r,t)?n.length:0;o--;){var s=n[o],a=s.func;if(null==a||a==e)return s.name}return t}},function(e,t){e.exports={}},function(e,t,n){var r=n(75),i=n(123),o=n(76),s=n(16),a=n(23),c=n(377),l=Object.prototype.hasOwnProperty;function u(e){if(a(e)&&!s(e)&&!(e instanceof r)){if(e instanceof i)return e;if(l.call(e,"__wrapped__"))return c(e)}return new i(e)}u.prototype=o.prototype,u.prototype.constructor=u,e.exports=u},function(e,t,n){var r=n(75),i=n(123),o=n(124);e.exports=function(e){if(e instanceof r)return e.clone();var t=new i(e.__wrapped__,e.__chain__);return t.__actions__=o(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}},function(e,t){var n=/\{\n\/\* \[wrapped with (.+)\] \*/,r=/,? & /;e.exports=function(e){var t=e.match(n);return t?t[1].split(r):[]}},function(e,t){var n=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;e.exports=function(e,t){var r=t.length;if(!r)return e;var i=r-1;return t[i]=(r>1?"& ":"")+t[i],t=t.join(r>2?", ":" "),e.replace(n,"{\n/* [wrapped with "+t+"] */\n")}},function(e,t,n){var r=n(97),i=n(381),o=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];e.exports=function(e,t){return r(o,(function(n){var r="_."+n[0];t&n[1]&&!i(e,r)&&e.push(r)})),e.sort()}},function(e,t,n){var r=n(113);e.exports=function(e,t){return!!(null==e?0:e.length)&&r(e,t,0)>-1}},function(e,t,n){var r=n(124),i=n(37),o=Math.min;e.exports=function(e,t){for(var n=e.length,s=o(t.length,n),a=r(e);s--;){var c=t[s];e[s]=i(c,n)?a[c]:void 0}return e}},function(e,t,n){var r=n(72),i=n(51),o=n(11);e.exports=function(e,t,n,s){var a=1&t,c=i(e);return function t(){for(var i=-1,l=arguments.length,u=-1,d=s.length,h=Array(d+l),f=this&&this!==o&&this instanceof t?c:e;++u<d;)h[u]=s[u];for(;l--;)h[u++]=arguments[++i];return r(f,a?n:this,h)}}},function(e,t,n){var r=n(119),i=n(120),o=n(52),s=Math.min;e.exports=function(e,t){var n=e[1],a=t[1],c=n|a,l=c<131,u=128==a&&8==n||128==a&&256==n&&e[7].length<=t[8]||384==a&&t[7].length<=t[8]&&8==n;if(!l&&!u)return e;1&a&&(e[2]=t[2],c|=1&n?0:4);var d=t[3];if(d){var h=e[3];e[3]=h?r(h,d,t[4]):d,e[4]=h?o(e[3],"__lodash_placeholder__"):t[4]}return(d=t[5])&&(h=e[5],e[5]=h?i(h,d,t[6]):d,e[6]=h?o(e[5],"__lodash_placeholder__"):t[6]),(d=t[7])&&(e[7]=d),128&a&&(e[8]=null==e[8]?t[8]:s(e[8],t[8])),null==e[9]&&(e[9]=t[9]),e[0]=t[0],e[1]=c,e}},function(e,t,n){var r=n(386),i=n(427),o=n(38),s=n(16),a=n(436);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?s(e)?i(e[0],e[1]):r(e):a(e)}},function(e,t,n){var r=n(387),i=n(426),o=n(136);e.exports=function(e){var t=i(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(n){return n===e||r(n,e,t)}}},function(e,t,n){var r=n(127),i=n(128);e.exports=function(e,t,n,o){var s=n.length,a=s,c=!o;if(null==e)return!a;for(e=Object(e);s--;){var l=n[s];if(c&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++s<a;){var u=(l=n[s])[0],d=e[u],h=l[1];if(c&&l[2]){if(void 0===d&&!(u in e))return!1}else{var f=new r;if(o)var p=o(d,h,u,e,t,f);if(!(void 0===p?i(h,d,3,o,f):p))return!1}}return!0}},function(e,t){e.exports=function(){this.__data__=[],this.size=0}},function(e,t,n){var r=n(54),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},function(e,t,n){var r=n(54);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},function(e,t,n){var r=n(54);e.exports=function(e){return r(this.__data__,e)>-1}},function(e,t,n){var r=n(54);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},function(e,t,n){var r=n(53);e.exports=function(){this.__data__=new r,this.size=0}},function(e,t){e.exports=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}},function(e,t){e.exports=function(e){return this.__data__.get(e)}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t,n){var r=n(53),i=n(78),o=n(79);e.exports=function(e,t){var n=this.__data__;if(n instanceof r){var s=n.__data__;if(!i||s.length<199)return s.push([e,t]),this.size=++n.size,this;n=this.__data__=new o(s)}return n.set(e,t),this.size=n.size,this}},function(e,t,n){var r=n(399),i=n(53),o=n(78);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(o||i),string:new r}}},function(e,t,n){var r=n(400),i=n(401),o=n(402),s=n(403),a=n(404);function c(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}c.prototype.clear=r,c.prototype.delete=i,c.prototype.get=o,c.prototype.has=s,c.prototype.set=a,e.exports=c},function(e,t,n){var r=n(55);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},function(e,t){e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},function(e,t,n){var r=n(55),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},function(e,t,n){var r=n(55),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},function(e,t,n){var r=n(55);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},function(e,t,n){var r=n(56);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},function(e,t){e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},function(e,t,n){var r=n(56);e.exports=function(e){return r(this,e).get(e)}},function(e,t,n){var r=n(56);e.exports=function(e){return r(this,e).has(e)}},function(e,t,n){var r=n(56);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},function(e,t,n){var r=n(127),i=n(129),o=n(416),s=n(420),a=n(134),c=n(16),l=n(100),u=n(101),d="[object Object]",h=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,f,p,g){var m=c(e),v=c(t),_=m?"[object Array]":a(e),b=v?"[object Array]":a(t),y=(_="[object Arguments]"==_?d:_)==d,w=(b="[object Arguments]"==b?d:b)==d,S=_==b;if(S&&l(e)){if(!l(t))return!1;m=!0,y=!1}if(S&&!y)return g||(g=new r),m||u(e)?i(e,t,n,f,p,g):o(e,t,_,n,f,p,g);if(!(1&n)){var x=y&&h.call(e,"__wrapped__"),E=w&&h.call(t,"__wrapped__");if(x||E){var A=x?e.value():e,C=E?t.value():t;return g||(g=new r),p(A,C,n,f,g)}}return!!S&&(g||(g=new r),s(e,t,n,f,p,g))}},function(e,t,n){var r=n(79),i=n(412),o=n(413);function s(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new r;++t<n;)this.add(e[t])}s.prototype.add=s.prototype.push=i,s.prototype.has=o,e.exports=s},function(e,t){e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},function(e,t){e.exports=function(e){return this.__data__.has(e)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}},function(e,t){e.exports=function(e,t){return e.has(t)}},function(e,t,n){var r=n(49),i=n(417),o=n(50),s=n(129),a=n(418),c=n(419),l=r?r.prototype:void 0,u=l?l.valueOf:void 0;e.exports=function(e,t,n,r,l,d,h){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!d(new i(e),new i(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var f=a;case"[object Set]":var p=1&r;if(f||(f=c),e.size!=t.size&&!p)return!1;var g=h.get(e);if(g)return g==t;r|=2,h.set(e,t);var m=s(f(e),f(t),r,l,d,h);return h.delete(e),m;case"[object Symbol]":if(u)return u.call(e)==u.call(t)}return!1}},function(e,t,n){var r=n(11).Uint8Array;e.exports=r},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}},function(e,t){e.exports=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}},function(e,t,n){var r=n(421),i=Object.prototype.hasOwnProperty;e.exports=function(e,t,n,o,s,a){var c=1&n,l=r(e),u=l.length;if(u!=r(t).length&&!c)return!1;for(var d=u;d--;){var h=l[d];if(!(c?h in t:i.call(t,h)))return!1}var f=a.get(e),p=a.get(t);if(f&&p)return f==t&&p==e;var g=!0;a.set(e,t),a.set(t,e);for(var m=c;++d<u;){var v=e[h=l[d]],_=t[h];if(o)var b=c?o(_,v,h,t,e,a):o(v,_,h,e,t,a);if(!(void 0===b?v===_||s(v,_,n,o,a):b)){g=!1;break}m||(m="constructor"==h)}if(g&&!m){var y=e.constructor,w=t.constructor;y==w||!("constructor"in e)||!("constructor"in t)||"function"==typeof y&&y instanceof y&&"function"==typeof w&&w instanceof w||(g=!1)}return a.delete(e),a.delete(t),g}},function(e,t,n){var r=n(130),i=n(132),o=n(33);e.exports=function(e){return r(e,o,i)}},function(e,t){e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var s=e[n];t(s,n,e)&&(o[i++]=s)}return o}},function(e,t,n){var r=n(26)(n(11),"DataView");e.exports=r},function(e,t,n){var r=n(26)(n(11),"Promise");e.exports=r},function(e,t,n){var r=n(26)(n(11),"Set");e.exports=r},function(e,t,n){var r=n(135),i=n(33);e.exports=function(e){for(var t=i(e),n=t.length;n--;){var o=t[n],s=e[o];t[n]=[o,s,r(s)]}return t}},function(e,t,n){var r=n(128),i=n(428),o=n(433),s=n(81),a=n(135),c=n(136),l=n(39);e.exports=function(e,t){return s(e)&&a(t)?c(l(e),t):function(n){var s=i(n,e);return void 0===s&&s===t?o(n,e):r(t,s,3)}}},function(e,t,n){var r=n(80);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},function(e,t,n){var r=n(430),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,s=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,r,i){t.push(r?i.replace(o,"$1"):n||e)})),t}));e.exports=s},function(e,t,n){var r=n(431);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},function(e,t,n){var r=n(79);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=e.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},function(e,t,n){var r=n(49),i=n(73),o=n(16),s=n(48),a=r?r.prototype:void 0,c=a?a.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return i(t,e)+"";if(s(t))return c?c.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}},function(e,t,n){var r=n(434),i=n(435);e.exports=function(e,t){return null!=e&&i(e,t,r)}},function(e,t){e.exports=function(e,t){return null!=e&&t in Object(e)}},function(e,t,n){var r=n(57),i=n(99),o=n(16),s=n(37),a=n(71),c=n(39);e.exports=function(e,t,n){for(var l=-1,u=(t=r(t,e)).length,d=!1;++l<u;){var h=c(t[l]);if(!(d=null!=e&&n(e,h)))break;e=e[h]}return d||++l!=u?d:!!(u=null==e?0:e.length)&&a(u)&&s(h,u)&&(o(e)||i(e))}},function(e,t,n){var r=n(138),i=n(437),o=n(81),s=n(39);e.exports=function(e){return o(e)?r(s(e)):i(e)}},function(e,t,n){var r=n(80);e.exports=function(e){return function(t){return r(t,e)}}},function(e,t,n){var r=n(80),i=n(439),o=n(57);e.exports=function(e,t,n){for(var s=-1,a=t.length,c={};++s<a;){var l=t[s],u=r(e,l);n(u,l)&&i(c,o(l,e),u)}return c}},function(e,t,n){var r=n(105),i=n(57),o=n(37),s=n(20),a=n(39);e.exports=function(e,t,n,c){if(!s(e))return e;for(var l=-1,u=(t=i(t,e)).length,d=u-1,h=e;null!=h&&++l<u;){var f=a(t[l]),p=n;if("__proto__"===f||"constructor"===f||"prototype"===f)return e;if(l!=d){var g=h[f];void 0===(p=c?c(g,f,h):void 0)&&(p=s(g)?g:o(t[l+1])?[]:{})}r(h,f,p),h=h[f]}return e}},function(e,t,n){var r=n(130),i=n(441),o=n(112);e.exports=function(e){return r(e,o,i)}},function(e,t,n){var r=n(131),i=n(442),o=n(132),s=n(133),a=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)r(t,o(e)),e=i(e);return t}:s;e.exports=a},function(e,t,n){var r=n(104)(Object.getPrototypeOf,Object);e.exports=r},function(e,t,n){var r=n(444),i=n(445),o=n(446);e.exports=function(e){return i(e)?o(e):r(e)}},function(e,t,n){var r=n(138)("length");e.exports=r},function(e,t){var n=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return n.test(e)}},function(e,t){var n="[\\ud800-\\udfff]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",i="\\ud83c[\\udffb-\\udfff]",o="[^\\ud800-\\udfff]",s="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",c="(?:"+r+"|"+i+")"+"?",l="[\\ufe0e\\ufe0f]?"+c+("(?:\\u200d(?:"+[o,s,a].join("|")+")[\\ufe0e\\ufe0f]?"+c+")*"),u="(?:"+[o+r+"?",r,s,a,n].join("|")+")",d=RegExp(i+"(?="+i+")|"+u+l,"g");e.exports=function(e){for(var t=d.lastIndex=0;d.test(e);)++t;return t}},function(e,t,n){"use strict";t.__esModule=!0;var r,i=n(448),o=(r=i)&&r.__esModule?r:{default:r};t.default=function(e,t,n){return t in e?(0,o.default)(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){e.exports={default:n(449),__esModule:!0}},function(e,t,n){n(450);var r=n(19).Object;e.exports=function(e,t,n){return r.defineProperty(e,t,n)}},function(e,t,n){var r=n(30);r(r.S+r.F*!n(32),"Object",{defineProperty:n(40).f})},function(e,t,n){e.exports=!n(32)&&!n(82)((function(){return 7!=Object.defineProperty(n(83)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(41);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){e.exports={default:n(454),__esModule:!0}},function(e,t,n){n(455),e.exports=n(19).Object.keys},function(e,t,n){var r=n(141),i=n(142);n(460)("keys",(function(){return function(e){return i(r(e))}}))},function(e,t,n){var r=n(60),i=n(85),o=n(458)(!1),s=n(87)("IE_PROTO");e.exports=function(e,t){var n,a=i(e),c=0,l=[];for(n in a)n!=s&&r(a,n)&&l.push(n);for(;t.length>c;)r(a,n=t[c++])&&(~o(l,n)||l.push(n));return l}},function(e,t,n){var r=n(61);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(85),i=n(143),o=n(459);e.exports=function(e){return function(t,n,s){var a,c=r(t),l=i(c.length),u=o(s,l);if(e&&n!=n){for(;l>u;)if((a=c[u++])!=a)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(86),i=Math.max,o=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(30),i=n(19),o=n(82);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),r(r.S+r.F*o((function(){n(1)})),"Object",s)}},function(e,t,n){e.exports=n(462)},function(e,t,n){var r=function(){return this}()||Function("return this")(),i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,o=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,e.exports=n(463),i)r.regeneratorRuntime=o;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";var n=Object.prototype,r=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",a=i.toStringTag||"@@toStringTag",c="object"==typeof e,l=t.regeneratorRuntime;if(l)c&&(e.exports=l);else{(l=t.regeneratorRuntime=c?e.exports:{}).wrap=g;var u={},d={};d[o]=function(){return this};var h=Object.getPrototypeOf,f=h&&h(h(C([])));f&&f!==n&&r.call(f,o)&&(d=f);var p=b.prototype=v.prototype=Object.create(d);_.prototype=p.constructor=b,b.constructor=_,b[a]=_.displayName="GeneratorFunction",l.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},l.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,a in e||(e[a]="GeneratorFunction")),e.prototype=Object.create(p),e},l.awrap=function(e){return{__await:e}},y(w.prototype),w.prototype[s]=function(){return this},l.AsyncIterator=w,l.async=function(e,t,n,r){var i=new w(g(e,t,n,r));return l.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},y(p),p[a]="Generator",p[o]=function(){return this},p.toString=function(){return"[object Generator]"},l.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},l.values=C,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,r){return s.type="throw",s.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var a=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var s=o?o.completion:{};return s.type=e,s.arg=t,o?(this.method="next",this.next=o.finallyLoc,u):this.complete(s)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;E(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:C(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}}}function g(e,t,n,r){var i=t&&t.prototype instanceof v?t:v,o=Object.create(i.prototype),s=new A(r||[]);return o._invoke=function(e,t,n){var r="suspendedStart";return function(i,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===i)throw o;return j()}for(n.method=i,n.arg=o;;){var s=n.delegate;if(s){var a=S(s,n);if(a){if(a===u)continue;return a}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=m(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===u)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(e,n,s),o}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function v(){}function _(){}function b(){}function y(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function w(e){var t;this._invoke=function(n,i){function o(){return new Promise((function(t,o){!function t(n,i,o,s){var a=m(e[n],e,i);if("throw"!==a.type){var c=a.arg,l=c.value;return l&&"object"==typeof l&&r.call(l,"__await")?Promise.resolve(l.__await).then((function(e){t("next",e,o,s)}),(function(e){t("throw",e,o,s)})):Promise.resolve(l).then((function(e){c.value=e,o(c)}),s)}s(a.arg)}(n,i,t,o)}))}return t=t?t.then(o,o):o()}}function S(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,S(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var r=m(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,u;var i=r.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function C(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:j}}function j(){return{value:void 0,done:!0}}}(function(){return this}()||Function("return this")())},function(e,t,n){"use strict";t.__esModule=!0;var r,i=n(89),o=(r=i)&&r.__esModule?r:{default:r};t.default=function(e){return function(){var t=e.apply(this,arguments);return new o.default((function(e,n){return function r(i,s){try{var a=t[i](s),c=a.value}catch(e){return void n(e)}if(!a.done)return o.default.resolve(c).then((function(e){r("next",e)}),(function(e){r("throw",e)}));e(c)}("next")}))}}},function(e,t,n){n(466),n(467),n(474),n(478),n(490),n(491),e.exports=n(19).Promise},function(e,t){},function(e,t,n){"use strict";var r=n(468)(!0);n(147)(String,"String",(function(e){this._t=String(e),this._i=0}),(function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})}))},function(e,t,n){var r=n(86),i=n(84);e.exports=function(e){return function(t,n){var o,s,a=String(i(t)),c=r(n),l=a.length;return c<0||c>=l?e?"":void 0:(o=a.charCodeAt(c))<55296||o>56319||c+1===l||(s=a.charCodeAt(c+1))<56320||s>57343?e?a.charAt(c):o:e?a.slice(c,c+2):s-56320+(o-55296<<10)+65536}}},function(e,t,n){e.exports=n(31)},function(e,t,n){"use strict";var r=n(471),i=n(140),o=n(90),s={};n(31)(s,n(17)("iterator"),(function(){return this})),e.exports=function(e,t,n){e.prototype=r(s,{next:i(1,n)}),o(e,t+" Iterator")}},function(e,t,n){var r=n(27),i=n(472),o=n(146),s=n(87)("IE_PROTO"),a=function(){},c=function(){var e,t=n(83)("iframe"),r=o.length;for(t.style.display="none",n(148).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("<script>document.F=Object<\/script>"),e.close(),c=e.F;r--;)delete c.prototype[o[r]];return c()};e.exports=Object.create||function(e,t){var n;return null!==e?(a.prototype=r(e),n=new a,a.prototype=null,n[s]=e):n=c(),void 0===t?n:i(n,t)}},function(e,t,n){var r=n(40),i=n(27),o=n(142);e.exports=n(32)?Object.defineProperties:function(e,t){i(e);for(var n,s=o(t),a=s.length,c=0;a>c;)r.f(e,n=s[c++],t[n]);return e}},function(e,t,n){var r=n(60),i=n(141),o=n(87)("IE_PROTO"),s=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},function(e,t,n){n(475);for(var r=n(13),i=n(31),o=n(42),s=n(17)("toStringTag"),a="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),c=0;c<a.length;c++){var l=a[c],u=r[l],d=u&&u.prototype;d&&!d[s]&&i(d,s,l),o[l]=o.Array}},function(e,t,n){"use strict";var r=n(476),i=n(477),o=n(42),s=n(85);e.exports=n(147)(Array,"Array",(function(e,t){this._t=s(e),this._i=0,this._k=t}),(function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):i(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])}),"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){"use strict";var r,i,o,s,a=n(88),c=n(13),l=n(58),u=n(149),d=n(30),h=n(41),f=n(59),p=n(479),g=n(480),m=n(150),v=n(151).set,_=n(485)(),b=n(91),y=n(152),w=n(486),S=n(153),x=c.TypeError,E=c.process,A=E&&E.versions,C=A&&A.v8||"",j=c.Promise,T="process"==u(E),O=function(){},k=i=b.f,N=!!function(){try{var e=j.resolve(1),t=(e.constructor={})[n(17)("species")]=function(e){e(O,O)};return(T||"function"==typeof PromiseRejectionEvent)&&e.then(O)instanceof t&&0!==C.indexOf("6.6")&&-1===w.indexOf("Chrome/66")}catch(e){}}(),I=function(e){var t;return!(!h(e)||"function"!=typeof(t=e.then))&&t},M=function(e,t){if(!e._n){e._n=!0;var n=e._c;_((function(){for(var r=e._v,i=1==e._s,o=0,s=function(t){var n,o,s,a=i?t.ok:t.fail,c=t.resolve,l=t.reject,u=t.domain;try{a?(i||(2==e._h&&P(e),e._h=1),!0===a?n=r:(u&&u.enter(),n=a(r),u&&(u.exit(),s=!0)),n===t.promise?l(x("Promise-chain cycle")):(o=I(n))?o.call(n,c,l):c(n)):l(r)}catch(e){u&&!s&&u.exit(),l(e)}};n.length>o;)s(n[o++]);e._c=[],e._n=!1,t&&!e._h&&R(e)}))}},R=function(e){v.call(c,(function(){var t,n,r,i=e._v,o=D(e);if(o&&(t=y((function(){T?E.emit("unhandledRejection",i,e):(n=c.onunhandledrejection)?n({promise:e,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)})),e._h=T||D(e)?2:1),e._a=void 0,o&&t.e)throw t.v}))},D=function(e){return 1!==e._h&&0===(e._a||e._c).length},P=function(e){v.call(c,(function(){var t;T?E.emit("rejectionHandled",e):(t=c.onrejectionhandled)&&t({promise:e,reason:e._v})}))},L=function(e){var t=this;t._d||(t._d=!0,(t=t._w||t)._v=e,t._s=2,t._a||(t._a=t._c.slice()),M(t,!0))},z=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw x("Promise can't be resolved itself");(t=I(e))?_((function(){var r={_w:n,_d:!1};try{t.call(e,l(z,r,1),l(L,r,1))}catch(e){L.call(r,e)}})):(n._v=e,n._s=1,M(n,!1))}catch(e){L.call({_w:n,_d:!1},e)}}};N||(j=function(e){p(this,j,"Promise","_h"),f(e),r.call(this);try{e(l(z,this,1),l(L,this,1))}catch(e){L.call(this,e)}},(r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=n(487)(j.prototype,{then:function(e,t){var n=k(m(this,j));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=T?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&M(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new r;this.promise=e,this.resolve=l(z,e,1),this.reject=l(L,e,1)},b.f=k=function(e){return e===j||e===s?new o(e):i(e)}),d(d.G+d.W+d.F*!N,{Promise:j}),n(90)(j,"Promise"),n(488)("Promise"),s=n(19).Promise,d(d.S+d.F*!N,"Promise",{reject:function(e){var t=k(this);return(0,t.reject)(e),t.promise}}),d(d.S+d.F*(a||!N),"Promise",{resolve:function(e){return S(a&&this===s?j:this,e)}}),d(d.S+d.F*!(N&&n(489)((function(e){j.all(e).catch(O)}))),"Promise",{all:function(e){var t=this,n=k(t),r=n.resolve,i=n.reject,o=y((function(){var n=[],o=0,s=1;g(e,!1,(function(e){var a=o++,c=!1;n.push(void 0),s++,t.resolve(e).then((function(e){c||(c=!0,n[a]=e,--s||r(n))}),i)})),--s||r(n)}));return o.e&&i(o.v),n.promise},race:function(e){var t=this,n=k(t),r=n.reject,i=y((function(){g(e,!1,(function(e){t.resolve(e).then(n.resolve,r)}))}));return i.e&&r(i.v),n.promise}})},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(58),i=n(481),o=n(482),s=n(27),a=n(143),c=n(483),l={},u={};(t=e.exports=function(e,t,n,d,h){var f,p,g,m,v=h?function(){return e}:c(e),_=r(n,d,t?2:1),b=0;if("function"!=typeof v)throw TypeError(e+" is not iterable!");if(o(v)){for(f=a(e.length);f>b;b++)if((m=t?_(s(p=e[b])[0],p[1]):_(e[b]))===l||m===u)return m}else for(g=v.call(e);!(p=g.next()).done;)if((m=i(g,_,p.value,t))===l||m===u)return m}).BREAK=l,t.RETURN=u},function(e,t,n){var r=n(27);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var o=e.return;throw void 0!==o&&r(o.call(e)),t}}},function(e,t,n){var r=n(42),i=n(17)("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||o[i]===e)}},function(e,t,n){var r=n(149),i=n(17)("iterator"),o=n(42);e.exports=n(19).getIteratorMethod=function(e){if(null!=e)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t){e.exports=function(e,t,n){var r=void 0===n;switch(t.length){case 0:return r?e():e.call(n);case 1:return r?e(t[0]):e.call(n,t[0]);case 2:return r?e(t[0],t[1]):e.call(n,t[0],t[1]);case 3:return r?e(t[0],t[1],t[2]):e.call(n,t[0],t[1],t[2]);case 4:return r?e(t[0],t[1],t[2],t[3]):e.call(n,t[0],t[1],t[2],t[3])}return e.apply(n,t)}},function(e,t,n){var r=n(13),i=n(151).set,o=r.MutationObserver||r.WebKitMutationObserver,s=r.process,a=r.Promise,c="process"==n(61)(s);e.exports=function(){var e,t,n,l=function(){var r,i;for(c&&(r=s.domain)&&r.exit();e;){i=e.fn,e=e.next;try{i()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(c)n=function(){s.nextTick(l)};else if(!o||r.navigator&&r.navigator.standalone)if(a&&a.resolve){var u=a.resolve(void 0);n=function(){u.then(l)}}else n=function(){i.call(r,l)};else{var d=!0,h=document.createTextNode("");new o(l).observe(h,{characterData:!0}),n=function(){h.data=d=!d}}return function(r){var i={fn:r,next:void 0};t&&(t.next=i),e||(e=i,n()),t=i}}},function(e,t,n){var r=n(13).navigator;e.exports=r&&r.userAgent||""},function(e,t,n){var r=n(31);e.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:r(e,i,t[i]);return e}},function(e,t,n){"use strict";var r=n(13),i=n(19),o=n(40),s=n(32),a=n(17)("species");e.exports=function(e){var t="function"==typeof i[e]?i[e]:r[e];s&&t&&!t[a]&&o.f(t,a,{configurable:!0,get:function(){return this}})}},function(e,t,n){var r=n(17)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,(function(){throw 2}))}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o=[7],s=o[r]();s.next=function(){return{done:n=!0}},o[r]=function(){return s},e(o)}catch(e){}return n}},function(e,t,n){"use strict";var r=n(30),i=n(19),o=n(13),s=n(150),a=n(153);r(r.P+r.R,"Promise",{finally:function(e){var t=s(this,i.Promise||o.Promise),n="function"==typeof e;return this.then(n?function(n){return a(t,e()).then((function(){return n}))}:e,n?function(n){return a(t,e()).then((function(){throw n}))}:e)}})},function(e,t,n){"use strict";var r=n(30),i=n(91),o=n(152);r(r.S,"Promise",{try:function(e){var t=i.f(this),n=o(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,i=n(89),o=(r=i)&&r.__esModule?r:{default:r};function s(){return window.browser&&browser.storage||window.chrome&&chrome.storage}t.getStorage=s,t.usePromise=function(e,t){if(function(){var e=s();try{return e&&e.local.get&&e.local.get()&&"function"==typeof e.local.get().then}catch(e){return!1}}())return e(t);return new o.default((function(n){e(t,(function(){n.apply(void 0,arguments)}))}))}},function(e,t,n){"use strict";n(68);var r=n(0);const i={};i.debug=r.e.LogLevel.DEBUG,i.info=r.e.LogLevel.INFO,i.warn=r.e.LogLevel.WARN,i.error=r.e.LogLevel.ERROR,i.fatal=r.e.LogLevel.FATAL,r.e.WorkerWebsocket=class extends r.e.Websocket{constructor(e){super(e),this._conn=e,this.worker=new SharedWorker(this._conn.options.worker,"Strophe XMPP Connection"),this.worker.onerror=e=>{var t;null===(t=console)||void 0===t||t.error(e),r.e.log(r.e.LogLevel.ERROR,"Shared Worker Error: ".concat(e))}}get socket(){return{send:e=>this.worker.port.postMessage(["send",e])}}_connect(){this._messageHandler=e=>this._onInitialMessage(e),this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_connect",this._conn.service,this._conn.jid])}_attach(e){this._messageHandler=e=>this._onMessage(e),this._conn.connect_callback=e,this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_attach",this._conn.service])}_attachCallback(e,t){e===r.e.Status.ATTACHED?(this._conn.jid=t,this._conn.authenticated=!0,this._conn.connected=!0,this._conn.restored=!0,this._conn._changeConnectStatus(r.e.Status.ATTACHED)):e===r.e.Status.ATTACHFAIL&&(this._conn.authenticated=!1,this._conn.connected=!1,this._conn.restored=!1,this._conn._changeConnectStatus(r.e.Status.ATTACHFAIL))}_disconnect(e,t){t&&this._conn.send(t);const n=Object(r.a)("close",{xmlns:r.e.NS.FRAMING});this._conn.xmlOutput(n.tree());const i=r.e.serialize(n);this._conn.rawOutput(i),this.worker.port.postMessage(["send",i]),this._conn._doDisconnect()}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(r.e.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected?(r.e.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(r.e.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):r.e.debug("Websocket closed")}_closeSocket(){this.worker.port.postMessage(["_closeSocket"])}_replaceMessageHandler(){this._messageHandler=e=>this._onMessage(e)}_onWorkerMessage(e){const{data:t}=e,n=t[0];if("_onMessage"===n)this._messageHandler(t[1]);else if(n in this)try{this[n].apply(this,e.data.slice(1))}catch(e){r.e.log(r.e.LogLevel.ERROR,e)}else if("log"===n){const e=t[1],n=t[2];r.e.log(i[e],n)}else r.e.log(r.e.LogLevel.ERROR,"Found unhandled service worker message: ".concat(t))}}},function(e,t,n){var r={"./af/LC_MESSAGES/converse.po":[507,139],"./ar/LC_MESSAGES/converse.po":[508,140],"./bg/LC_MESSAGES/converse.po":[509,141],"./ca/LC_MESSAGES/converse.po":[510,142],"./cs/LC_MESSAGES/converse.po":[511,143],"./da/LC_MESSAGES/converse.po":[512,144],"./de/LC_MESSAGES/converse.po":[513,147],"./eo/LC_MESSAGES/converse.po":[514,148],"./es/LC_MESSAGES/converse.po":[515,149],"./eu/LC_MESSAGES/converse.po":[516,150],"./fi/LC_MESSAGES/converse.po":[517,151],"./fr/LC_MESSAGES/converse.po":[518,152],"./gl/LC_MESSAGES/converse.po":[519,153],"./he/LC_MESSAGES/converse.po":[520,154],"./hi/LC_MESSAGES/converse.po":[521,155],"./hu/LC_MESSAGES/converse.po":[522,156],"./id/LC_MESSAGES/converse.po":[523,157],"./it/LC_MESSAGES/converse.po":[524,158],"./ja/LC_MESSAGES/converse.po":[525,159],"./lt/LC_MESSAGES/converse.po":[526,160],"./mr/LC_MESSAGES/converse.po":[527,161],"./nb/LC_MESSAGES/converse.po":[528,162],"./nl/LC_MESSAGES/converse.po":[529,163],"./nl_BE/LC_MESSAGES/converse.po":[530,164],"./oc/LC_MESSAGES/converse.po":[531,165],"./pl/LC_MESSAGES/converse.po":[532,166],"./pt/LC_MESSAGES/converse.po":[533,167],"./pt_BR/LC_MESSAGES/converse.po":[534,168],"./ro/LC_MESSAGES/converse.po":[535,169],"./ru/LC_MESSAGES/converse.po":[536,170],"./sv/LC_MESSAGES/converse.po":[537,171],"./th/LC_MESSAGES/converse.po":[538,172],"./tr/LC_MESSAGES/converse.po":[539,173],"./uk/LC_MESSAGES/converse.po":[540,174],"./vi/LC_MESSAGES/converse.po":[541,175],"./zh_CN/LC_MESSAGES/converse.po":[542,176],"./zh_TW/LC_MESSAGES/converse.po":[543,177]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n.t(i,3)}))}i.keys=function(){return Object.keys(r)},i.id=494,e.exports=i},function(e,t,n){var r={"./af":[189,0],"./af.js":[189,0],"./ar":[196,1],"./ar-dz":[190,2],"./ar-dz.js":[190,2],"./ar-kw":[191,3],"./ar-kw.js":[191,3],"./ar-ly":[192,4],"./ar-ly.js":[192,4],"./ar-ma":[193,5],"./ar-ma.js":[193,5],"./ar-sa":[194,6],"./ar-sa.js":[194,6],"./ar-tn":[195,7],"./ar-tn.js":[195,7],"./ar.js":[196,1],"./az":[197,8],"./az.js":[197,8],"./be":[198,9],"./be.js":[198,9],"./bg":[199,10],"./bg.js":[199,10],"./bi":[200,11],"./bi.js":[200,11],"./bm":[201,12],"./bm.js":[201,12],"./bn":[202,13],"./bn.js":[202,13],"./bo":[203,14],"./bo.js":[203,14],"./br":[204,15],"./br.js":[204,15],"./bs":[205,16],"./bs.js":[205,16],"./ca":[206,17],"./ca.js":[206,17],"./cs":[207,18],"./cs.js":[207,18],"./cv":[208,19],"./cv.js":[208,19],"./cy":[209,20],"./cy.js":[209,20],"./da":[210,21],"./da.js":[210,21],"./de":[213,22],"./de-at":[211,23],"./de-at.js":[211,23],"./de-ch":[212,24],"./de-ch.js":[212,24],"./de.js":[213,22],"./dv":[214,25],"./dv.js":[214,25],"./el":[215,26],"./el.js":[215,26],"./en":[225,27],"./en-SG":[216,28],"./en-SG.js":[216,28],"./en-au":[217,29],"./en-au.js":[217,29],"./en-ca":[218,30],"./en-ca.js":[218,30],"./en-gb":[219,31],"./en-gb.js":[219,31],"./en-ie":[220,32],"./en-ie.js":[220,32],"./en-il":[221,33],"./en-il.js":[221,33],"./en-in":[222,34],"./en-in.js":[222,34],"./en-nz":[223,35],"./en-nz.js":[223,35],"./en-tt":[224,36],"./en-tt.js":[224,36],"./en.js":[225,27],"./eo":[226,37],"./eo.js":[226,37],"./es":[230,38],"./es-do":[227,39],"./es-do.js":[227,39],"./es-pr":[228,40],"./es-pr.js":[228,40],"./es-us":[229,41],"./es-us.js":[229,41],"./es.js":[230,38],"./et":[231,42],"./et.js":[231,42],"./eu":[232,43],"./eu.js":[232,43],"./fa":[233,44],"./fa.js":[233,44],"./fi":[234,45],"./fi.js":[234,45],"./fo":[235,46],"./fo.js":[235,46],"./fr":[238,47],"./fr-ca":[236,48],"./fr-ca.js":[236,48],"./fr-ch":[237,49],"./fr-ch.js":[237,49],"./fr.js":[238,47],"./fy":[239,50],"./fy.js":[239,50],"./ga":[240,51],"./ga.js":[240,51],"./gd":[241,52],"./gd.js":[241,52],"./gl":[242,53],"./gl.js":[242,53],"./gom-latn":[243,54],"./gom-latn.js":[243,54],"./gu":[244,55],"./gu.js":[244,55],"./he":[245,56],"./he.js":[245,56],"./hi":[246,57],"./hi.js":[246,57],"./hr":[247,58],"./hr.js":[247,58],"./ht":[248,59],"./ht.js":[248,59],"./hu":[249,60],"./hu.js":[249,60],"./hy-am":[250,61],"./hy-am.js":[250,61],"./id":[251,62],"./id.js":[251,62],"./index.d.ts":[544,145],"./is":[252,63],"./is.js":[252,63],"./it":[254,64],"./it-ch":[253,65],"./it-ch.js":[253,65],"./it.js":[254,64],"./ja":[255,66],"./ja.js":[255,66],"./jv":[256,67],"./jv.js":[256,67],"./ka":[257,68],"./ka.js":[257,68],"./kk":[258,69],"./kk.js":[258,69],"./km":[259,70],"./km.js":[259,70],"./kn":[260,71],"./kn.js":[260,71],"./ko":[261,72],"./ko.js":[261,72],"./ku":[262,73],"./ku.js":[262,73],"./ky":[263,74],"./ky.js":[263,74],"./lb":[264,75],"./lb.js":[264,75],"./lo":[265,76],"./lo.js":[265,76],"./lt":[266,77],"./lt.js":[266,77],"./lv":[267,78],"./lv.js":[267,78],"./me":[268,79],"./me.js":[268,79],"./mi":[269,80],"./mi.js":[269,80],"./mk":[270,81],"./mk.js":[270,81],"./ml":[271,82],"./ml.js":[271,82],"./mn":[272,83],"./mn.js":[272,83],"./mr":[273,84],"./mr.js":[273,84],"./ms":[275,85],"./ms-my":[274,86],"./ms-my.js":[274,86],"./ms.js":[275,85],"./mt":[276,87],"./mt.js":[276,87],"./my":[277,88],"./my.js":[277,88],"./nb":[278,89],"./nb.js":[278,89],"./ne":[279,90],"./ne.js":[279,90],"./nl":[281,91],"./nl-be":[280,92],"./nl-be.js":[280,92],"./nl.js":[281,91],"./nn":[282,93],"./nn.js":[282,93],"./oc-lnc":[283,94],"./oc-lnc.js":[283,94],"./pa-in":[284,95],"./pa-in.js":[284,95],"./pl":[285,96],"./pl.js":[285,96],"./pt":[287,97],"./pt-br":[286,98],"./pt-br.js":[286,98],"./pt.js":[287,97],"./ro":[288,99],"./ro.js":[288,99],"./ru":[289,100],"./ru.js":[289,100],"./rw":[290,101],"./rw.js":[290,101],"./sd":[291,102],"./sd.js":[291,102],"./se":[292,103],"./se.js":[292,103],"./si":[293,104],"./si.js":[293,104],"./sk":[294,105],"./sk.js":[294,105],"./sl":[295,106],"./sl.js":[295,106],"./sq":[296,107],"./sq.js":[296,107],"./sr":[298,108],"./sr-cyrl":[297,109],"./sr-cyrl.js":[297,109],"./sr.js":[298,108],"./ss":[299,110],"./ss.js":[299,110],"./sv":[300,111],"./sv.js":[300,111],"./sw":[301,112],"./sw.js":[301,112],"./ta":[302,113],"./ta.js":[302,113],"./te":[303,114],"./te.js":[303,114],"./tet":[304,115],"./tet.js":[304,115],"./tg":[305,116],"./tg.js":[305,116],"./th":[306,117],"./th.js":[306,117],"./tk":[307,118],"./tk.js":[307,118],"./tl-ph":[308,119],"./tl-ph.js":[308,119],"./tlh":[309,120],"./tlh.js":[309,120],"./tr":[310,121],"./tr.js":[310,121],"./types.d.ts":[545,146],"./tzl":[311,122],"./tzl.js":[311,122],"./tzm":[313,123],"./tzm-latn":[312,124],"./tzm-latn.js":[312,124],"./tzm.js":[313,123],"./ug-cn":[314,125],"./ug-cn.js":[314,125],"./uk":[315,126],"./uk.js":[315,126],"./ur":[316,127],"./ur.js":[316,127],"./uz":[318,128],"./uz-latn":[317,129],"./uz-latn.js":[317,129],"./uz.js":[318,128],"./vi":[319,130],"./vi.js":[319,130],"./x-pseudo":[320,131],"./x-pseudo.js":[320,131],"./yo":[321,132],"./yo.js":[321,132],"./zh":[325,133],"./zh-cn":[322,134],"./zh-cn.js":[322,134],"./zh-hk":[323,135],"./zh-hk.js":[323,135],"./zh-tw":[324,136],"./zh-tw.js":[324,136],"./zh.js":[325,133]};function i(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return n.e(t[1]).then((function(){return n.t(i,7)}))}i.keys=function(){return Object.keys(r)},i.id=495,e.exports=i},function(e,t,n){var r=n(497)({"&":"&","<":"<",">":">",'"':""","'":"'"});e.exports=r},function(e,t){e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},function(e,t,n){"use strict";var r=n(9),i=n(2);i.d.Request=class{constructor(e,t,n,r){this.id=++i.d._requestId,this.xmlData=e,this.data=i.d.serialize(e),this.origFunc=t,this.func=t,this.rid=n,this.date=NaN,this.sends=r||0,this.abort=!1,this.dead=null,this.age=function(){if(!this.date)return 0;return(new Date-this.date)/1e3},this.timeDead=function(){if(!this.dead)return 0;return(new Date-this.dead)/1e3},this.xhr=this._newXHR()}getResponse(){let e=null;if(this.xhr.responseXML&&this.xhr.responseXML.documentElement){if(e=this.xhr.responseXML.documentElement,"parsererror"===e.tagName)throw i.d.error("invalid response received"),i.d.error("responseText: "+this.xhr.responseText),i.d.error("responseXML: "+i.d.serialize(this.xhr.responseXML)),new Error("parsererror")}else if(this.xhr.responseText){if(i.d.debug("Got responseText but no responseXML; attempting to parse it with DOMParser..."),e=(new r.a).parseFromString(this.xhr.responseText,"application/xml").documentElement,!e)throw new Error("Parsing produced null node");if(e.querySelector("parsererror")){i.d.error("invalid response received: "+e.querySelector("parsererror").textContent),i.d.error("responseText: "+this.xhr.responseText);const t=new Error;throw t.name=i.d.ErrorCondition.BAD_FORMAT,t}}return e}_newXHR(){let e=null;return window.XMLHttpRequest?(e=new XMLHttpRequest,e.overrideMimeType&&e.overrideMimeType("text/xml; charset=utf-8")):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLHTTP")),e.onreadystatechange=this.func.bind(null,this),e}},i.d.Bosh=class e{constructor(e){this._conn=e,this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.hold=1,this.wait=60,this.window=5,this.errors=0,this.inactivity=null,this.lastResponseHeaders=null,this._requests=[]}_buildBody(){const e=Object(i.a)("body",{rid:this.rid++,xmlns:i.d.NS.HTTPBIND});return null!==this.sid&&e.attrs({sid:this.sid}),this._conn.options.keepalive&&this._conn._sessionCachingSupported()&&this._cacheSession(),e}_reset(){this.rid=Math.floor(4294967295*Math.random()),this.sid=null,this.errors=0,this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_connect(e,t,n){this.wait=e||this.wait,this.hold=t||this.hold,this.errors=0;const r=this._buildBody().attrs({to:this._conn.domain,"xml:lang":"en",wait:this.wait,hold:this.hold,content:"text/xml; charset=utf-8",ver:"1.6","xmpp:version":"1.0","xmlns:xmpp":i.d.NS.BOSH});n&&r.attrs({route:n});const o=this._conn._connect_cb;this._requests.push(new i.d.Request(r.tree(),this._onRequestStateChange.bind(this,o.bind(this._conn)),r.tree().getAttribute("rid"))),this._throttledRequestHandler()}_attach(e,t,n,r,o,s,a){this._conn.jid=e,this.sid=t,this.rid=n,this._conn.connect_callback=r,this._conn.domain=i.d.getDomainFromJid(this._conn.jid),this._conn.authenticated=!0,this._conn.connected=!0,this.wait=o||this.wait,this.hold=s||this.hold,this.window=a||this.window,this._conn._changeConnectStatus(i.d.Status.ATTACHED,null)}_restore(e,t,n,r,o){const s=JSON.parse(window.sessionStorage.getItem("strophe-bosh-session"));if(!(null!=s&&s.rid&&s.sid&&s.jid&&(null==e||i.d.getBareJidFromJid(s.jid)===i.d.getBareJidFromJid(e)||null===i.d.getNodeFromJid(e)&&i.d.getDomainFromJid(s.jid)===e))){const e=new Error("_restore: no restoreable session.");throw e.name="StropheSessionError",e}this._conn.restored=!0,this._attach(s.jid,s.sid,s.rid,t,n,r,o)}_cacheSession(){this._conn.authenticated?this._conn.jid&&this.rid&&this.sid&&window.sessionStorage.setItem("strophe-bosh-session",JSON.stringify({jid:this._conn.jid,rid:this.rid,sid:this.sid})):window.sessionStorage.removeItem("strophe-bosh-session")}_connect_cb(e){const t=e.getAttribute("type");if(null!==t&&"terminate"===t){let t=e.getAttribute("condition");i.d.error("BOSH-Connection failed: "+t);const n=e.getElementsByTagName("conflict");return null!==t?("remote-stream-error"===t&&n.length>0&&(t="conflict"),this._conn._changeConnectStatus(i.d.Status.CONNFAIL,t)):this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"unknown"),this._conn._doDisconnect(t),i.d.Status.CONNFAIL}this.sid||(this.sid=e.getAttribute("sid"));const n=e.getAttribute("requests");n&&(this.window=parseInt(n,10));const r=e.getAttribute("hold");r&&(this.hold=parseInt(r,10));const o=e.getAttribute("wait");o&&(this.wait=parseInt(o,10));const s=e.getAttribute("inactivity");s&&(this.inactivity=parseInt(s,10))}_disconnect(e){this._sendTerminate(e)}_doDisconnect(){this.sid=null,this.rid=Math.floor(4294967295*Math.random()),this._conn._sessionCachingSupported()&&window.sessionStorage.removeItem("strophe-bosh-session"),this._conn.nextValidRid(this.rid)}_emptyQueue(){return 0===this._requests.length}_callProtocolErrorHandlers(t){const n=e._getRequestStatus(t),r=this._conn.protocolErrorHandlers.HTTP[n];r&&r.call(this,n)}_hitError(e){this.errors++,i.d.warn("request errored, status: "+e+", number of errors: "+this.errors),this.errors>4&&this._conn._onDisconnectTimeout()}_no_auth_received(e){i.d.warn("Server did not yet offer a supported authentication mechanism. Sending a blank poll request."),e=e?e.bind(this._conn):this._conn._connect_cb.bind(this._conn);const t=this._buildBody();this._requests.push(new i.d.Request(t.tree(),this._onRequestStateChange.bind(this,e),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}_onDisconnectTimeout(){this._abortAllRequests()}_abortAllRequests(){for(;this._requests.length>0;){const e=this._requests.pop();e.abort=!0,e.xhr.abort(),e.xhr.onreadystatechange=function(){}}}_onIdle(){const e=this._conn._data;if(this._conn.authenticated&&0===this._requests.length&&0===e.length&&!this._conn.disconnecting&&(i.d.debug("no requests during idle cycle, sending blank request"),e.push(null)),!this._conn.paused){if(this._requests.length<2&&e.length>0){const t=this._buildBody();for(let n=0;n<e.length;n++)null!==e[n]&&("restart"===e[n]?t.attrs({to:this._conn.domain,"xml:lang":"en","xmpp:restart":"true","xmlns:xmpp":i.d.NS.BOSH}):t.cnode(e[n]).up());delete this._conn._data,this._conn._data=[],this._requests.push(new i.d.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"))),this._throttledRequestHandler()}if(this._requests.length>0){const e=this._requests[0].age();null!==this._requests[0].dead&&this._requests[0].timeDead()>Math.floor(i.d.SECONDARY_TIMEOUT*this.wait)&&this._throttledRequestHandler(),e>Math.floor(i.d.TIMEOUT*this.wait)&&(i.d.warn("Request "+this._requests[0].id+" timed out, over "+Math.floor(i.d.TIMEOUT*this.wait)+" seconds since last activity"),this._throttledRequestHandler())}}}static _getRequestStatus(e,t){let n;if(4===e.xhr.readyState)try{n=e.xhr.status}catch(e){i.d.error("Caught an error while retrieving a request's status, reqStatus: "+n)}return void 0===n&&(n="number"==typeof t?t:0),n}_onRequestStateChange(t,n){if(i.d.debug("request id "+n.id+"."+n.sends+" state changed to "+n.xhr.readyState),n.abort)return void(n.abort=!1);if(4!==n.xhr.readyState)return;const r=e._getRequestStatus(n);if(this.lastResponseHeaders=n.xhr.getAllResponseHeaders(),this._conn.disconnecting&&r>=400)return this._hitError(r),void this._callProtocolErrorHandlers(n);const o=r>0&&r<500,s=n.sends>this._conn.maxRetries;if((o||s)&&(this._removeRequest(n),i.d.debug("request id "+n.id+" should now be removed")),200===r){const e=this._requests[0]===n;(this._requests[1]===n||e&&this._requests.length>0&&this._requests[0].age()>Math.floor(i.d.SECONDARY_TIMEOUT*this.wait))&&this._restartRequest(0),this._conn.nextValidRid(Number(n.rid)+1),i.d.debug("request id "+n.id+"."+n.sends+" got 200"),t(n),this.errors=0}else 0===r||r>=400&&r<600||r>=12e3?(i.d.error("request id "+n.id+"."+n.sends+" error "+r+" happened"),this._hitError(r),this._callProtocolErrorHandlers(n),r>=400&&r<500&&(this._conn._changeConnectStatus(i.d.Status.DISCONNECTING,null),this._conn._doDisconnect())):i.d.error("request id "+n.id+"."+n.sends+" error "+r+" happened");o||s?s&&!this._conn.connected&&this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"giving-up"):this._throttledRequestHandler()}_processRequest(t){let n=this._requests[t];const r=e._getRequestStatus(n,-1);if(n.sends>this._conn.maxRetries)return void this._conn._onDisconnectTimeout();const o=n.age(),s=!isNaN(o)&&o>Math.floor(i.d.TIMEOUT*this.wait),a=null!==n.dead&&n.timeDead()>Math.floor(i.d.SECONDARY_TIMEOUT*this.wait),c=4===n.xhr.readyState&&(r<1||r>=500);if((s||a||c)&&(a&&i.d.error("Request ".concat(this._requests[t].id," timed out (secondary), restarting")),n.abort=!0,n.xhr.abort(),n.xhr.onreadystatechange=function(){},this._requests[t]=new i.d.Request(n.xmlData,n.origFunc,n.rid,n.sends),n=this._requests[t]),0===n.xhr.readyState){i.d.debug("request id "+n.id+"."+n.sends+" posting");try{const e=this._conn.options.contentType||"text/xml; charset=utf-8";n.xhr.open("POST",this._conn.service,!this._conn.options.sync),void 0!==n.xhr.setRequestHeader&&n.xhr.setRequestHeader("Content-Type",e),this._conn.options.withCredentials&&(n.xhr.withCredentials=!0)}catch(e){return i.d.error("XHR open failed: "+e.toString()),this._conn.connected||this._conn._changeConnectStatus(i.d.Status.CONNFAIL,"bad-service"),void this._conn.disconnect()}const e=()=>{if(n.date=new Date,this._conn.options.customHeaders){const e=this._conn.options.customHeaders;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.xhr.setRequestHeader(t,e[t])}n.xhr.send(n.data)};if(n.sends>1){const t=1e3*Math.min(Math.floor(i.d.TIMEOUT*this.wait),Math.pow(n.sends,3));setTimeout((function(){e()}),t)}else e();n.sends++,this._conn.xmlOutput!==i.d.Connection.prototype.xmlOutput&&(n.xmlData.nodeName===this.strip&&n.xmlData.childNodes.length?this._conn.xmlOutput(n.xmlData.childNodes[0]):this._conn.xmlOutput(n.xmlData)),this._conn.rawOutput!==i.d.Connection.prototype.rawOutput&&this._conn.rawOutput(n.data)}else i.d.debug("_processRequest: "+(0===t?"first":"second")+" request has readyState of "+n.xhr.readyState)}_removeRequest(e){i.d.debug("removing request");for(let t=this._requests.length-1;t>=0;t--)e===this._requests[t]&&this._requests.splice(t,1);e.xhr.onreadystatechange=function(){},this._throttledRequestHandler()}_restartRequest(e){const t=this._requests[e];null===t.dead&&(t.dead=new Date),this._processRequest(e)}_reqToData(e){try{return e.getResponse()}catch(e){if("parsererror"!==e.message)throw e;this._conn.disconnect("strophe-parsererror")}}_sendTerminate(e){i.d.debug("_sendTerminate was called");const t=this._buildBody().attrs({type:"terminate"});e&&t.cnode(e.tree());const n=new i.d.Request(t.tree(),this._onRequestStateChange.bind(this,this._conn._dataRecv.bind(this._conn)),t.tree().getAttribute("rid"));this._requests.push(n),this._throttledRequestHandler()}_send(){clearTimeout(this._conn._idleTimeout),this._throttledRequestHandler(),this._conn._idleTimeout=setTimeout(()=>this._conn._onIdle(),100)}_sendRestart(){this._throttledRequestHandler(),clearTimeout(this._conn._idleTimeout)}_throttledRequestHandler(){this._requests?i.d.debug("_throttledRequestHandler called with "+this._requests.length+" requests"):i.d.debug("_throttledRequestHandler called with undefined requests"),this._requests&&0!==this._requests.length&&(this._requests.length>0&&this._processRequest(0),this._requests.length>1&&Math.abs(this._requests[0].rid-this._requests[1].rid)<this.window&&this._processRequest(1))}},i.d.Bosh.prototype.strip=null},function(e,t,n){"use strict";e.exports=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")}},function(e,t,n){"use strict";n(158);var r=n(2);const i={};i.debug=r.d.LogLevel.DEBUG,i.info=r.d.LogLevel.INFO,i.warn=r.d.LogLevel.WARN,i.error=r.d.LogLevel.ERROR,i.fatal=r.d.LogLevel.FATAL,r.d.WorkerWebsocket=class extends r.d.Websocket{constructor(e){super(e),this._conn=e,this.worker=new SharedWorker(this._conn.options.worker,"Strophe XMPP Connection"),this.worker.onerror=e=>{var t;null===(t=console)||void 0===t||t.error(e),r.d.log(r.d.LogLevel.ERROR,"Shared Worker Error: ".concat(e))}}get socket(){return{send:e=>this.worker.port.postMessage(["send",e])}}_connect(){this._messageHandler=e=>this._onInitialMessage(e),this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_connect",this._conn.service,this._conn.jid])}_attach(e){this._messageHandler=e=>this._onMessage(e),this._conn.connect_callback=e,this.worker.port.start(),this.worker.port.onmessage=e=>this._onWorkerMessage(e),this.worker.port.postMessage(["_attach",this._conn.service])}_attachCallback(e,t){e===r.d.Status.ATTACHED?(this._conn.jid=t,this._conn.authenticated=!0,this._conn.connected=!0,this._conn.restored=!0,this._conn._changeConnectStatus(r.d.Status.ATTACHED)):e===r.d.Status.ATTACHFAIL&&(this._conn.authenticated=!1,this._conn.connected=!1,this._conn.restored=!1,this._conn._changeConnectStatus(r.d.Status.ATTACHFAIL))}_disconnect(e,t){t&&this._conn.send(t);const n=Object(r.a)("close",{xmlns:r.d.NS.FRAMING});this._conn.xmlOutput(n.tree());const i=r.d.serialize(n);this._conn.rawOutput(i),this.worker.port.postMessage(["send",i]),this._conn._doDisconnect()}_onClose(e){this._conn.connected&&!this._conn.disconnecting?(r.d.error("Websocket closed unexpectedly"),this._conn._doDisconnect()):e&&1006===e.code&&!this._conn.connected?(r.d.error("Websocket closed unexcectedly"),this._conn._changeConnectStatus(r.d.Status.CONNFAIL,"The WebSocket connection could not be established or was disconnected."),this._conn._doDisconnect()):r.d.debug("Websocket closed")}_closeSocket(){this.worker.port.postMessage(["_closeSocket"])}_replaceMessageHandler(){this._messageHandler=e=>this._onMessage(e)}_onWorkerMessage(e){const{data:t}=e,n=t[0];if("_onMessage"===n)this._messageHandler(t[1]);else if(n in this)try{this[n].apply(this,e.data.slice(1))}catch(e){r.d.log(r.d.LogLevel.ERROR,e)}else if("log"===n){const e=t[1],n=t[2];r.d.log(i[e],n)}else r.d.log(r.d.LogLevel.ERROR,"Found unhandled service worker message: ".concat(t))}}},function(e,t,n){var r=n(502);"string"==typeof r&&(r=[[e.i,r,""]]);var i={hmr:!0,transform:void 0,insertInto:void 0};n(504)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){(t=n(503)(!0)).push([e.i,"","",{version:3,sources:[],names:[],mappings:"",file:"converse.scss"}]),e.exports=t},function(e,t,n){"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var i=(s=r,a=btoa(unescape(encodeURIComponent(JSON.stringify(s)))),c="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(c," */")),o=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(o).concat([i]).join("\n")}var s,a,c;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(r)for(var o=0;o<this.length;o++){var s=this[o][0];null!=s&&(i[s]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);r&&i[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),t.push(c))}},t}},function(e,t,n){var r,i,o={},s=(r=function(){return window&&document&&document.all&&!window.atob},function(){return void 0===i&&(i=r.apply(this,arguments)),i}),a=function(e,t){return t?t.querySelector(e):document.querySelector(e)},c=function(e){var t={};return function(e,n){if("function"==typeof e)return e();if(void 0===t[e]){var r=a.call(this,e,n);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}t[e]=r}return t[e]}}(),l=null,u=0,d=[],h=n(505);function f(e,t){for(var n=0;n<e.length;n++){var r=e[n],i=o[r.id];if(i){i.refs++;for(var s=0;s<i.parts.length;s++)i.parts[s](r.parts[s]);for(;s<r.parts.length;s++)i.parts.push(b(r.parts[s],t))}else{var a=[];for(s=0;s<r.parts.length;s++)a.push(b(r.parts[s],t));o[r.id]={id:r.id,refs:1,parts:a}}}}function p(e,t){for(var n=[],r={},i=0;i<e.length;i++){var o=e[i],s=t.base?o[0]+t.base:o[0],a={css:o[1],media:o[2],sourceMap:o[3]};r[s]?r[s].parts.push(a):n.push(r[s]={id:s,parts:[a]})}return n}function g(e,t){var n=c(e.insertInto);if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.");var r=d[d.length-1];if("top"===e.insertAt)r?r.nextSibling?n.insertBefore(t,r.nextSibling):n.appendChild(t):n.insertBefore(t,n.firstChild),d.push(t);else if("bottom"===e.insertAt)n.appendChild(t);else{if("object"!=typeof e.insertAt||!e.insertAt.before)throw new Error("[Style Loader]\n\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\n Must be 'top', 'bottom', or Object.\n (https://github.com/webpack-contrib/style-loader#insertat)\n");var i=c(e.insertAt.before,n);n.insertBefore(t,i)}}function m(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e);var t=d.indexOf(e);t>=0&&d.splice(t,1)}function v(e){var t=document.createElement("style");if(void 0===e.attrs.type&&(e.attrs.type="text/css"),void 0===e.attrs.nonce){var r=function(){0;return n.nc}();r&&(e.attrs.nonce=r)}return _(t,e.attrs),g(e,t),t}function _(e,t){Object.keys(t).forEach((function(n){e.setAttribute(n,t[n])}))}function b(e,t){var n,r,i,o;if(t.transform&&e.css){if(!(o="function"==typeof t.transform?t.transform(e.css):t.transform.default(e.css)))return function(){};e.css=o}if(t.singleton){var s=u++;n=l||(l=v(t)),r=S.bind(null,n,s,!1),i=S.bind(null,n,s,!0)}else e.sourceMap&&"function"==typeof URL&&"function"==typeof URL.createObjectURL&&"function"==typeof URL.revokeObjectURL&&"function"==typeof Blob&&"function"==typeof btoa?(n=function(e){var t=document.createElement("link");return void 0===e.attrs.type&&(e.attrs.type="text/css"),e.attrs.rel="stylesheet",_(t,e.attrs),g(e,t),t}(t),r=E.bind(null,n,t),i=function(){m(n),n.href&&URL.revokeObjectURL(n.href)}):(n=v(t),r=x.bind(null,n),i=function(){m(n)});return r(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;r(e=t)}else i()}}e.exports=function(e,t){if("undefined"!=typeof DEBUG&&DEBUG&&"object"!=typeof document)throw new Error("The style-loader cannot be used in a non-browser environment");(t=t||{}).attrs="object"==typeof t.attrs?t.attrs:{},t.singleton||"boolean"==typeof t.singleton||(t.singleton=s()),t.insertInto||(t.insertInto="head"),t.insertAt||(t.insertAt="bottom");var n=p(e,t);return f(n,t),function(e){for(var r=[],i=0;i<n.length;i++){var s=n[i];(a=o[s.id]).refs--,r.push(a)}e&&f(p(e,t),t);for(i=0;i<r.length;i++){var a;if(0===(a=r[i]).refs){for(var c=0;c<a.parts.length;c++)a.parts[c]();delete o[a.id]}}}};var y,w=(y=[],function(e,t){return y[e]=t,y.filter(Boolean).join("\n")});function S(e,t,n,r){var i=n?"":r.css;if(e.styleSheet)e.styleSheet.cssText=w(t,i);else{var o=document.createTextNode(i),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(o,s[t]):e.appendChild(o)}}function x(e,t){var n=t.css,r=t.media;if(r&&e.setAttribute("media",r),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}function E(e,t,n){var r=n.css,i=n.sourceMap,o=void 0===t.convertToAbsoluteUrls&&i;(t.convertToAbsoluteUrls||o)&&(r=h(r)),i&&(r+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(i))))+" */");var s=new Blob([r],{type:"text/css"}),a=e.href;e.href=URL.createObjectURL(s),a&&URL.revokeObjectURL(a)}},function(e,t){e.exports=function(e){var t="undefined"!=typeof window&&window.location;if(!t)throw new Error("fixUrls requires window.location");if(!e||"string"!=typeof e)return e;var n=t.protocol+"//"+t.host,r=n+t.pathname.replace(/\/[^\/]*$/,"/");return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi,(function(e,t){var i,o=t.trim().replace(/^"(.*)"$/,(function(e,t){return t})).replace(/^'(.*)'$/,(function(e,t){return t}));return/^(#|data:|http:\/\/|https:\/\/|file:\/\/\/|\s*$)/i.test(o)?e:(i=0===o.indexOf("//")?o:0===o.indexOf("/")?n+o:r+o.replace(/^\.\//,""),"url("+JSON.stringify(i)+")")}))}},function(e,t,n){"use strict";n.r(t);var r=n(66),i=n.n(r),o=(n(327),n(68),n(22));var s=function(){this.__data__=[],this.size=0};var a=function(e,t){return e===t||e!=e&&t!=t};var c=function(e,t){for(var n=e.length;n--;)if(a(e[n][0],t))return n;return-1},l=Array.prototype.splice;var u=function(e){var t=this.__data__,n=c(t,e);return!(n<0)&&(n==t.length-1?t.pop():l.call(t,n,1),--this.size,!0)};var d=function(e){var t=this.__data__,n=c(t,e);return n<0?void 0:t[n][1]};var h=function(e){return c(this.__data__,e)>-1};var f=function(e,t){var n=this.__data__,r=c(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this};function p(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}p.prototype.clear=s,p.prototype.delete=u,p.prototype.get=d,p.prototype.has=h,p.prototype.set=f;var g=p;var m=function(){this.__data__=new g,this.size=0};var v=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n};var _=function(e){return this.__data__.get(e)};var b=function(e){return this.__data__.has(e)},y=n(6),w=y.a.Symbol,S=Object.prototype,x=S.hasOwnProperty,E=S.toString,A=w?w.toStringTag:void 0;var C=function(e){var t=x.call(e,A),n=e[A];try{e[A]=void 0;var r=!0}catch(e){}var i=E.call(e);return r&&(t?e[A]=n:delete e[A]),i},j=Object.prototype.toString;var T=function(e){return j.call(e)},O=w?w.toStringTag:void 0;var k=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?C(e):T(e)};var N=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};var I,M=function(e){if(!N(e))return!1;var t=k(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t},R=y.a["__core-js_shared__"],D=(I=/[^.]+$/.exec(R&&R.keys&&R.keys.IE_PROTO||""))?"Symbol(src)_1."+I:"";var P=function(e){return!!D&&D in e},L=Function.prototype.toString;var z=function(e){if(null!=e){try{return L.call(e)}catch(e){}try{return e+""}catch(e){}}return""},F=/^\[object .+?Constructor\]$/,B=Function.prototype,q=Object.prototype,H=B.toString,U=q.hasOwnProperty,$=RegExp("^"+H.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");var W=function(e){return!(!N(e)||P(e))&&(M(e)?$:F).test(z(e))};var G=function(e,t){return null==e?void 0:e[t]};var V=function(e,t){var n=G(e,t);return W(n)?n:void 0},J=V(y.a,"Map"),X=V(Object,"create");var Q=function(){this.__data__=X?X(null):{},this.size=0};var Y=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},K=Object.prototype.hasOwnProperty;var Z=function(e){var t=this.__data__;if(X){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return K.call(t,e)?t[e]:void 0},ee=Object.prototype.hasOwnProperty;var te=function(e){var t=this.__data__;return X?void 0!==t[e]:ee.call(t,e)};var ne=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=X&&void 0===t?"__lodash_hash_undefined__":t,this};function re(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}re.prototype.clear=Q,re.prototype.delete=Y,re.prototype.get=Z,re.prototype.has=te,re.prototype.set=ne;var ie=re;var oe=function(){this.size=0,this.__data__={hash:new ie,map:new(J||g),string:new ie}};var se=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};var ae=function(e,t){var n=e.__data__;return se(t)?n["string"==typeof t?"string":"hash"]:n.map};var ce=function(e){var t=ae(this,e).delete(e);return this.size-=t?1:0,t};var le=function(e){return ae(this,e).get(e)};var ue=function(e){return ae(this,e).has(e)};var de=function(e,t){var n=ae(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this};function he(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}he.prototype.clear=oe,he.prototype.delete=ce,he.prototype.get=le,he.prototype.has=ue,he.prototype.set=de;var fe=he;var pe=function(e,t){var n=this.__data__;if(n instanceof g){var r=n.__data__;if(!J||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new fe(r)}return n.set(e,t),this.size=n.size,this};function ge(e){var t=this.__data__=new g(e);this.size=t.size}ge.prototype.clear=m,ge.prototype.delete=v,ge.prototype.get=_,ge.prototype.has=b,ge.prototype.set=pe;var me=ge;var ve=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,e););return e},_e=function(){try{var e=V(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();var be=function(e,t,n){"__proto__"==t&&_e?_e(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n},ye=Object.prototype.hasOwnProperty;var we=function(e,t,n){var r=e[t];ye.call(e,t)&&a(r,n)&&(void 0!==n||t in e)||be(e,t,n)};var Se=function(e,t,n,r){var i=!n;n||(n={});for(var o=-1,s=t.length;++o<s;){var a=t[o],c=r?r(n[a],e[a],a,n,e):void 0;void 0===c&&(c=e[a]),i?be(n,a,c):we(n,a,c)}return n};var xe=function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r};var Ee=function(e){return null!=e&&"object"==typeof e};var Ae=function(e){return Ee(e)&&"[object Arguments]"==k(e)},Ce=Object.prototype,je=Ce.hasOwnProperty,Te=Ce.propertyIsEnumerable,Oe=Ae(function(){return arguments}())?Ae:function(e){return Ee(e)&&je.call(e,"callee")&&!Te.call(e,"callee")},ke=Array.isArray,Ne=n(21),Ie=/^(?:0|[1-9]\d*)$/;var Me=function(e,t){var n=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==n||"symbol"!=n&&Ie.test(e))&&e>-1&&e%1==0&&e<t};var Re=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991},De={};De["[object Float32Array]"]=De["[object Float64Array]"]=De["[object Int8Array]"]=De["[object Int16Array]"]=De["[object Int32Array]"]=De["[object Uint8Array]"]=De["[object Uint8ClampedArray]"]=De["[object Uint16Array]"]=De["[object Uint32Array]"]=!0,De["[object Arguments]"]=De["[object Array]"]=De["[object ArrayBuffer]"]=De["[object Boolean]"]=De["[object DataView]"]=De["[object Date]"]=De["[object Error]"]=De["[object Function]"]=De["[object Map]"]=De["[object Number]"]=De["[object Object]"]=De["[object RegExp]"]=De["[object Set]"]=De["[object String]"]=De["[object WeakMap]"]=!1;var Pe=function(e){return Ee(e)&&Re(e.length)&&!!De[k(e)]};var Le=function(e){return function(t){return e(t)}},ze=n(14),Fe=ze.a&&ze.a.isTypedArray,Be=Fe?Le(Fe):Pe,qe=Object.prototype.hasOwnProperty;var He=function(e,t){var n=ke(e),r=!n&&Oe(e),i=!n&&!r&&Object(Ne.a)(e),o=!n&&!r&&!i&&Be(e),s=n||r||i||o,a=s?xe(e.length,String):[],c=a.length;for(var l in e)!t&&!qe.call(e,l)||s&&("length"==l||i&&("offset"==l||"parent"==l)||o&&("buffer"==l||"byteLength"==l||"byteOffset"==l)||Me(l,c))||a.push(l);return a},Ue=Object.prototype;var $e=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Ue)};var We=function(e,t){return function(n){return e(t(n))}},Ge=We(Object.keys,Object),Ve=Object.prototype.hasOwnProperty;var Je=function(e){if(!$e(e))return Ge(e);var t=[];for(var n in Object(e))Ve.call(e,n)&&"constructor"!=n&&t.push(n);return t};var Xe=function(e){return null!=e&&Re(e.length)&&!M(e)};var Qe=function(e){return Xe(e)?He(e):Je(e)};var Ye=function(e,t){return e&&Se(t,Qe(t),e)};var Ke=function(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t},Ze=Object.prototype.hasOwnProperty;var et=function(e){if(!N(e))return Ke(e);var t=$e(e),n=[];for(var r in e)("constructor"!=r||!t&&Ze.call(e,r))&&n.push(r);return n};var tt=function(e){return Xe(e)?He(e,!0):et(e)};var nt=function(e,t){return e&&Se(t,tt(t),e)},rt=n(160);var it=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t};var ot=function(e,t){for(var n=-1,r=null==e?0:e.length,i=0,o=[];++n<r;){var s=e[n];t(s,n,e)&&(o[i++]=s)}return o};var st=function(){return[]},at=Object.prototype.propertyIsEnumerable,ct=Object.getOwnPropertySymbols,lt=ct?function(e){return null==e?[]:(e=Object(e),ot(ct(e),(function(t){return at.call(e,t)})))}:st;var ut=function(e,t){return Se(e,lt(e),t)};var dt=function(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e},ht=We(Object.getPrototypeOf,Object),ft=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)dt(t,lt(e)),e=ht(e);return t}:st;var pt=function(e,t){return Se(e,ft(e),t)};var gt=function(e,t,n){var r=t(e);return ke(e)?r:dt(r,n(e))};var mt=function(e){return gt(e,Qe,lt)};var vt=function(e){return gt(e,tt,ft)},_t=V(y.a,"DataView"),bt=V(y.a,"Promise"),yt=V(y.a,"Set"),wt=V(y.a,"WeakMap"),St=z(_t),xt=z(J),Et=z(bt),At=z(yt),Ct=z(wt),jt=k;(_t&&"[object DataView]"!=jt(new _t(new ArrayBuffer(1)))||J&&"[object Map]"!=jt(new J)||bt&&"[object Promise]"!=jt(bt.resolve())||yt&&"[object Set]"!=jt(new yt)||wt&&"[object WeakMap]"!=jt(new wt))&&(jt=function(e){var t=k(e),n="[object Object]"==t?e.constructor:void 0,r=n?z(n):"";if(r)switch(r){case St:return"[object DataView]";case xt:return"[object Map]";case Et:return"[object Promise]";case At:return"[object Set]";case Ct:return"[object WeakMap]"}return t});var Tt=jt,Ot=Object.prototype.hasOwnProperty;var kt=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Ot.call(e,"index")&&(n.index=e.index,n.input=e.input),n},Nt=y.a.Uint8Array;var It=function(e){var t=new e.constructor(e.byteLength);return new Nt(t).set(new Nt(e)),t};var Mt=function(e,t){var n=t?It(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)},Rt=/\w*$/;var Dt=function(e){var t=new e.constructor(e.source,Rt.exec(e));return t.lastIndex=e.lastIndex,t},Pt=w?w.prototype:void 0,Lt=Pt?Pt.valueOf:void 0;var zt=function(e){return Lt?Object(Lt.call(e)):{}};var Ft=function(e,t){var n=t?It(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)};var Bt=function(e,t,n){var r=e.constructor;switch(t){case"[object ArrayBuffer]":return It(e);case"[object Boolean]":case"[object Date]":return new r(+e);case"[object DataView]":return Mt(e,n);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return Ft(e,n);case"[object Map]":return new r;case"[object Number]":case"[object String]":return new r(e);case"[object RegExp]":return Dt(e);case"[object Set]":return new r;case"[object Symbol]":return zt(e)}},qt=Object.create,Ht=function(){function e(){}return function(t){if(!N(t))return{};if(qt)return qt(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();var Ut=function(e){return"function"!=typeof e.constructor||$e(e)?{}:Ht(ht(e))};var $t=function(e){return Ee(e)&&"[object Map]"==Tt(e)},Wt=ze.a&&ze.a.isMap,Gt=Wt?Le(Wt):$t;var Vt=function(e){return Ee(e)&&"[object Set]"==Tt(e)},Jt=ze.a&&ze.a.isSet,Xt=Jt?Le(Jt):Vt,Qt={};Qt["[object Arguments]"]=Qt["[object Array]"]=Qt["[object ArrayBuffer]"]=Qt["[object DataView]"]=Qt["[object Boolean]"]=Qt["[object Date]"]=Qt["[object Float32Array]"]=Qt["[object Float64Array]"]=Qt["[object Int8Array]"]=Qt["[object Int16Array]"]=Qt["[object Int32Array]"]=Qt["[object Map]"]=Qt["[object Number]"]=Qt["[object Object]"]=Qt["[object RegExp]"]=Qt["[object Set]"]=Qt["[object String]"]=Qt["[object Symbol]"]=Qt["[object Uint8Array]"]=Qt["[object Uint8ClampedArray]"]=Qt["[object Uint16Array]"]=Qt["[object Uint32Array]"]=!0,Qt["[object Error]"]=Qt["[object Function]"]=Qt["[object WeakMap]"]=!1;var Yt=function e(t,n,r,i,o,s){var a,c=1&n,l=2&n,u=4&n;if(r&&(a=o?r(t,i,o,s):r(t)),void 0!==a)return a;if(!N(t))return t;var d=ke(t);if(d){if(a=kt(t),!c)return it(t,a)}else{var h=Tt(t),f="[object Function]"==h||"[object GeneratorFunction]"==h;if(Object(Ne.a)(t))return Object(rt.a)(t,c);if("[object Object]"==h||"[object Arguments]"==h||f&&!o){if(a=l||f?{}:Ut(t),!c)return l?pt(t,nt(a,t)):ut(t,Ye(a,t))}else{if(!Qt[h])return o?t:{};a=Bt(t,h,c)}}s||(s=new me);var p=s.get(t);if(p)return p;s.set(t,a),Xt(t)?t.forEach((function(i){a.add(e(i,n,r,i,t,s))})):Gt(t)&&t.forEach((function(i,o){a.set(o,e(i,n,r,o,t,s))}));var g=u?l?vt:mt:l?keysIn:Qe,m=d?void 0:g(t);return ve(m||t,(function(i,o){m&&(i=t[o=i]),we(a,o,e(i,n,r,o,t,s))})),a};var Kt=function(e){return Yt(e,5)};var Zt=function(e){return"string"==typeof e||!ke(e)&&Ee(e)&&"[object String]"==k(e)};var en=function(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))};function tn(){if(arguments.length&&"function"==typeof arguments[arguments.length-1])return arguments[arguments.length-1]}function nn(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var rn=function(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(i){if("TypeError"!==i.name)throw i;for(var n=new("undefined"!=typeof BlobBuilder?BlobBuilder:"undefined"!=typeof MSBlobBuilder?MSBlobBuilder:"undefined"!=typeof MozBlobBuilder?MozBlobBuilder:WebKitBlobBuilder),r=0;r<e.length;r+=1)n.append(e[r]);return n.getBlob(t.type)}},on="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",sn=/^~~local_forage_type~([^~]+)~/,an="__lfsc__:".length,cn=an+"arbf".length,ln=Object.prototype.toString;function un(e){var t,n,r,i,o,s=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(s--,"="===e[e.length-2]&&s--);var l=new ArrayBuffer(s),u=new Uint8Array(l);for(t=0;t<a;t+=4)n=on.indexOf(e[t]),r=on.indexOf(e[t+1]),i=on.indexOf(e[t+2]),o=on.indexOf(e[t+3]),u[c++]=n<<2|r>>4,u[c++]=(15&r)<<4|i>>2,u[c++]=(3&i)<<6|63&o;return l}function dn(e){var t,n=new Uint8Array(e),r="";for(t=0;t<n.length;t+=3)r+=on[n[t]>>2],r+=on[(3&n[t])<<4|n[t+1]>>4],r+=on[(15&n[t+1])<<2|n[t+2]>>6],r+=on[63&n[t+2]];return n.length%3==2?r=r.substring(0,r.length-1)+"=":n.length%3==1&&(r=r.substring(0,r.length-2)+"=="),r}var hn={serialize:function(e,t){var n="";if(e&&(n=ln.call(e)),e&&("[object ArrayBuffer]"===n||e.buffer&&"[object ArrayBuffer]"===ln.call(e.buffer))){var r,i="__lfsc__:";e instanceof ArrayBuffer?(r=e,i+="arbf"):(r=e.buffer,"[object Int8Array]"===n?i+="si08":"[object Uint8Array]"===n?i+="ui08":"[object Uint8ClampedArray]"===n?i+="uic8":"[object Int16Array]"===n?i+="si16":"[object Uint16Array]"===n?i+="ur16":"[object Int32Array]"===n?i+="si32":"[object Uint32Array]"===n?i+="ui32":"[object Float32Array]"===n?i+="fl32":"[object Float64Array]"===n?i+="fl64":t(new Error("Failed to get type for BinaryArray"))),t(i+dn(r))}else if("[object Blob]"===n){var o=new FileReader;o.onload=function(){var n="~~local_forage_type~"+e.type+"~"+dn(this.result);t("__lfsc__:blob"+n)},o.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(n){console.error("Couldn't convert value into a JSON string: ",e),t(null,n)}},deserialize:function(e){if("__lfsc__:"!==e.substring(0,an))return JSON.parse(e);var t,n=e.substring(cn),r=e.substring(an,cn);if("blob"===r&&sn.test(n)){var i=n.match(sn);t=i[1],n=n.substring(i[0].length)}var o=un(n);switch(r){case"arbf":return o;case"blob":return rn([o],{type:t});case"si08":return new Int8Array(o);case"ui08":return new Uint8Array(o);case"uic8":return new Uint8ClampedArray(o);case"si16":return new Int16Array(o);case"ur16":return new Uint16Array(o);case"si32":return new Int32Array(o);case"ui32":return new Uint32Array(o);case"fl32":return new Float32Array(o);case"fl64":return new Float64Array(o);default:throw new Error("Unkown type: "+r)}},stringToBuffer:un,bufferToString:dn};function fn(e,t){let n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}const pn={serializer:{serialize:hn.serialize,deserialize:hn.deserialize}};var gn={_driver:"sessionStorageWrapper",_initStorage:function(e){if(pn.keyPrefix=fn(e,this._defaultConfig),e)for(const t in e)pn[t]=e[t]},_support:function(){try{if(sessionStorage&&"setItem"in sessionStorage)return!0}catch(e){console.log(e)}return!1}(),iterate:function(e,t){const n=this.ready().then((function(){const t=pn.keyPrefix,n=t.length,r=sessionStorage.length;let i=1;for(let o=0;o<r;o++){const r=sessionStorage.key(o);if(0!==r.indexOf(t))continue;let s=sessionStorage.getItem(r);if(s&&(s=pn.serializer.deserialize(s)),s=e(s,r.substring(n),i++),void 0!==s)return s}}));return en(n,t),n},getItem:function(e,t){e=nn(e);const n=this.ready().then((function(){let t=sessionStorage.getItem(pn.keyPrefix+e);return t&&(t=pn.serializer.deserialize(t)),t}));return en(n,t),n},setItem:function(e,t,n){e=nn(e);const r=this.ready().then((function(){void 0===t&&(t=null);const n=t;return new Promise((function(r,i){pn.serializer.serialize(t,(function(t,o){if(o)i(o);else try{sessionStorage.setItem(pn.keyPrefix+e,t),r(n)}catch(e){"QuotaExceededError"!==e.name&&"NS_ERROR_DOM_QUOTA_REACHED"!==e.name||i(e),i(e)}}))}))}));return en(r,n),r},removeItem:function(e,t){e=nn(e);const n=this.ready().then((function(){sessionStorage.removeItem(pn.keyPrefix+e)}));return en(n,t),n},clear:function(e){const t=this.ready().then((function(){const e=pn.keyPrefix;for(let t=sessionStorage.length-1;t>=0;t--){const n=sessionStorage.key(t);0===n.indexOf(e)&&sessionStorage.removeItem(n)}}));return en(t,e),t},length:function(e){const t=this.keys().then((function(e){return e.length}));return en(t,e),t},key:function(e,t){const n=this.ready().then((function(){let t;try{t=sessionStorage.key(e)}catch(e){t=null}return t&&(t=t.substring(pn.keyPrefix.length)),t}));return en(n,t),n},keys:function(e){const t=this.ready().then((function(){const e=sessionStorage.length,t=[];for(let n=0;n<e;n++){const e=sessionStorage.key(n);0===e.indexOf(pn.keyPrefix)&&t.push(e.substring(pn.keyPrefix.length))}return t}));return en(t,e),t},dropInstance:function(e,t){if(t=tn.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){const t=this.config();e.name=e.name||t.name,e.storeName=e.storeName||t.storeName}const n=this;let r;return r=e.name?new Promise((function(t){e.storeName?t(fn(e,n._defaultConfig)):t("".concat(e.name,"/"))})).then((function(e){for(let t=sessionStorage.length-1;t>=0;t--){const n=sessionStorage.key(t);0===n.indexOf(e)&&sessionStorage.removeItem(n)}})):Promise.reject(new Error("Invalid arguments")),en(r,t),r}};const mn={};var vn={_driver:"noStorageWrapper",_initStorage:function(e){if(mn.keyPrefix=function(e,t){let n=e.name+"/";return e.storeName!==t.storeName&&(n+=e.storeName+"/"),n}(e,this._defaultConfig),e)for(const t in e)mn[t]=e[t]},_support:!0,iterate:function(e,t){const n=Promise.resolve();return en(n,t),n},getItem:function(e,t){const n=this.ready().then((function(){}));return en(n,t),n},setItem:function(e,t,n){const r=Promise.resolve(t);return en(r,n),r},removeItem:function(e,t){const n=Promise.resolve();return en(n,t),n},clear:function(e){const t=Promise.resolve();return en(t,e),t},length:function(e){const t=this.keys().then((function(e){return e.length}));return en(t,e),t},key:function(e,t){const n=this.ready().then((function(){return null}));return en(n,t),n},keys:function(e){const t=this.ready().then((function(){return[]}));return en(t,e),t},dropInstance:function(e,t){if(t=tn.apply(this,arguments),!(e="function"!=typeof e&&e||{}).name){const t=this.config();e.name=e.name||t.name,e.storeName=e.storeName||t.storeName}let n;return n=e.name?Promise.resolve():Promise.reject(new Error("Invalid arguments")),en(n,t),n}};function _n(){return(65536*(1+Math.random())|0).toString(16).substring(1)}class bn{constructor(e,t){if("local"===t&&!window.localStorage)throw new Error("Skeletor.storage: Environment does not support localStorage.");if("session"===t&&!window.sessionStorage)throw new Error("Skeletor.storage: Environment does not support sessionStorage.");Zt(t)?this.storeInitialized=this.initStore(t):(this.store=t,this.storeInitialized=Promise.resolve()),this.name=e}async initStore(e){if("session"===e)o.setDriver(gn._driver);else if("local"===e)await o.config({driver:o.LOCALSTORAGE});else if("in_memory"===e)o.setDriver(vn._driver);else if("indexed"!==e)throw new Error("Skeletor.storage: No storage type was specified");this.store=o}async clear(){await this.store.removeItem(this.name).catch(e=>console.error(e));const e=new RegExp("^".concat(this.name,"-")),t=(await this.store.keys()).filter(t=>e.test(t));await Promise.all(t.map(e=>this.store.removeItem(e).catch(e=>console.error(e))))}sync(e){const t=this;async function n(e,n,r){let i,o,s,a;const c=n.collection;["patch","update"].includes(e)&&(a=Kt(n.attributes)),await t.storeInitialized;try{const o=n.attributes;switch(e){case"read":i=void 0!==n.id?await t.find(n):await t.findAll();break;case"create":i=await t.create(n,r);break;case"patch":case"update":r.wait&&(n.attributes=a),s=t.update(n,r),r.wait&&(n.attributes=o),i=await s;break;case"delete":i=await t.destroy(n,c)}}catch(e){o=22===e.code&&0===t.getStorageSize()?"Private browsing is unsupported":e.message}if(i){if(r&&r.success){const t="read"===e?i:null;r.success(t,r)}}else o=o||"Record Not Found",r&&r.error&&r.error(o)}return n.__name__="localSync",n}removeCollectionReference(e,t){if(!t)return;const n=t.filter(t=>t.id!==e.id).map(e=>this.getItemName(e.id));return this.store.setItem(this.name,n)}addCollectionReference(e,t){if(!t)return;const n=t.map(e=>this.getItemName(e.id)),r=this.getItemName(e.id);return n.includes(r)||n.push(r),this.store.setItem(this.name,n)}async save(e,t={}){const n=this.getItemName(e.id),r=await this.store.setItem(n,e.toJSON());return await this.addCollectionReference(e,e.collection),r}create(e,t){return e.id||(e.id=_n()+_n()+"-"+_n()+"-"+_n()+"-"+_n()+"-"+_n()+_n()+_n(),e.set(e.idAttribute,e.id,t)),this.save(e)}update(e,t){return this.save(e,t)}find(e){return this.store.getItem(this.getItemName(e.id))}async findAll(){const e=await this.store.getItem(this.name);return e&&e.length?Promise.all(e.map(e=>this.store.getItem(e))):[]}async destroy(e,t){return await this.store.removeItem(this.getItemName(e.id)),await this.removeCollectionReference(e,t),e}getStorageSize(){return this.store.length}getItemName(e){return this.name+"-"+e}}bn.IN_MEMORY=vn._driver,bn.memoryStorageInitialized=o.defineDriver(vn),bn.sessionStorageInitialized=o.defineDriver(gn),bn.localForage=o;var yn=bn,wn=n(161),Sn=n.n(wn),xn=n(5),En=n.n(xn),An=Function.prototype,Cn=Object.prototype,jn=An.toString,Tn=Cn.hasOwnProperty,On=jn.call(Object);var kn=function(e){if(!Ee(e)||"[object Object]"!=k(e))return!1;var t=ht(e);if(null===t)return!0;var n=Tn.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&jn.call(n)==On};var Nn,In,Mn,Rn,Dn=function(e){return Ee(e)&&1===e.nodeType&&!kn(e)};const Pn={debug:0,info:1,warn:2,error:3,fatal:4},Ln=Object.assign({debug:(null===(Nn=console)||void 0===Nn?void 0:Nn.log)?console.log.bind(console):function(){},error:(null===(In=console)||void 0===In?void 0:In.log)?console.log.bind(console):function(){},info:(null===(Mn=console)||void 0===Mn?void 0:Mn.log)?console.log.bind(console):function(){},warn:(null===(Rn=console)||void 0===Rn?void 0:Rn.log)?console.log.bind(console):function(){}},console);var zn={setLogLevel(e){if(!["debug","info","warn","error","fatal"].includes(e))throw new Error("Invalid loglevel: ".concat(e));this.loglevel=e},log(e,t,n=""){if(Pn[t]<Pn[this.loglevel])return;"error"===t||"fatal"===t?n=n||"color: maroon":"debug"===t&&(n=n||"color: green"),e instanceof Error?e=e.stack:Dn(e)&&(e=e.outerHTML);const r=n?"%c":"";"error"===t?Ln.error("".concat(r," ERROR: ").concat(e),n):"warn"===t?Ln.warn("".concat(r," ").concat((new Date).toISOString()," WARNING: ").concat(e),n):"fatal"===t?Ln.error("".concat(r," FATAL: ").concat(e),n):"debug"===t?Ln.debug("".concat(r," ").concat((new Date).toISOString()," DEBUG: ").concat(e),n):Ln.info("".concat(r," ").concat((new Date).toISOString()," INFO: ").concat(e),n)},debug(e,t){this.log(e,"debug",t)},error(e,t){this.log(e,"error",t)},info(e,t){this.log(e,"info",t)},warn(e,t){this.log(e,"warn",t)},fatal(e,t){this.log(e,"fatal",t)}},Fn=n(162),Bn=n.n(Fn),qn=n(44),Hn=n.n(qn),Un=n(45),$n=n.n(Un),Wn=n(36),Gn=n.n(Wn),Vn=n(163),Jn=n.n(Vn),Xn=n(62),Qn=n.n(Xn),Yn=n(164),Kn=n.n(Yn),Zn=n(33),er=n.n(Zn),tr=n(93),nr=n.n(tr),rr=n(165),ir=n.n(rr),or=n(166),sr=n.n(or),ar=n(92),cr=n.n(ar);function lr(e,t){this.name=t,this.plugged=e,void 0===this.plugged.__super__?this.plugged.__super__={}:"string"==typeof this.plugged.__super__&&(this.plugged.__super__={__string__:this.plugged.__super__}),this.plugged.__super__[t]=this.plugged,this.plugins={},this.initialized_plugins=[]}$n()(lr.prototype,{wrappedOverride:function(e,t,n,r){return"function"==typeof n&&(void 0===this.__super__&&(this.__super__=r),this.__super__[e]=n.bind(this)),t.apply(this,Bn()(arguments,4))},_overrideAttribute:function(e,t){let n=t.overrides[e];if("function"==typeof n){let t={};t[this.name]=this.plugged;let r=nr()(this.wrappedOverride,e,n,this.plugged[e],t);this.plugged[e]=r}else this.plugged[e]=n},_extendObject:function(e,t){e.prototype.__super__||(e.prototype.__super__={},e.prototype.__super__[this.name]=this.plugged);let n=this;Hn()(t,(function(t,r){if("events"===r)e.prototype[r]=$n()(t,e.prototype[r]);else if("function"==typeof t){let i={};i[n.name]=n.plugged;let o=nr()(n.wrappedOverride,r,t,e.prototype[r],i);e.prototype[r]=o}else e.prototype[r]=t}))},loadPluginDependencies:function(e){Hn()(e.dependencies,t=>{let n=this.plugins[t];if(n){if(Gn()(n.dependencies,e.__name__))throw'Found a circular dependency between the plugins "'+e.__name__+'" and "'+t+'"';this.initializePlugin(n)}else this.throwUndefinedDependencyError('Could not find dependency "'+t+'" for the plugin "'+e.__name__+"\". If it's needed, make sure it's loaded by require.js")})},throwUndefinedDependencyError:function(e){if(this.plugged.strict_plugin_dependencies)throw e;console.warn?console.warn(e):console.log(e)},applyOverrides:function(e){Hn()(Object.keys(e.overrides||{}),t=>{let n=e.overrides[t];"object"==typeof n?void 0===this.plugged[t]?this.throwUndefinedDependencyError('Plugin "'.concat(e.__name__,'" tried to override "').concat(t,"\" but it's not found.")):this._extendObject(this.plugged[t],n):this._overrideAttribute(t,e)})},initializePlugin:function(e){Gn()(er()(this.allowed_plugins),e.__name__)&&(Gn()(this.initialized_plugins,e.__name__)||(Jn()(e.enabled)&&e.enabled||Qn()(e.enabled)&&e.enabled(this.plugged)||Kn()(e.enabled))&&($n()(e,this.properties),e.dependencies&&this.loadPluginDependencies(e),this.applyOverrides(e),"function"==typeof e.initialize&&e.initialize.bind(e)(this),this.initialized_plugins.push(e.__name__)))},registerPlugin:function(e,t){if(e in this.plugins)throw new Error("Error: Plugin name "+e+" is already taken");t.__name__=e,this.plugins[e]=t},initializePlugins:function(e={},t=[],n=[]){sr()(this.plugins)&&(this.properties=e,this.allowed_plugins=ir()(this.plugins,(function(e,r){return(!t.length||t.length&&Gn()(t,r))&&!Gn()(n,r)})),Hn()(cr()(this.allowed_plugins),this.initializePlugin.bind(this)))}});var ur={enable:function(e,t,n){void 0===n&&(n="pluginSocket"),void 0===t&&(t="plugged");let r={};return r[n]=new lr(e,t),$n()(e,r)}},dr=n(167),hr=n.n(dr),fr=n(168),pr=n.n(fr),gr=n(3),mr=n.n(gr),vr=n(0);var _r=function(e,t){var n=Ht(e);return null==t?n:Ye(n,t)};var br=function(e){return e};var yr=function(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)},wr=Math.max;var Sr=function(e,t,n){return t=wr(void 0===t?e.length-1:t,0),function(){for(var r=arguments,i=-1,o=wr(r.length-t,0),s=Array(o);++i<o;)s[i]=r[t+i];i=-1;for(var a=Array(t+1);++i<t;)a[i]=r[i];return a[t]=n(s),yr(e,this,a)}};var xr=function(e){return function(){return e}},Er=_e?function(e,t){return _e(e,"toString",{configurable:!0,enumerable:!1,value:xr(t),writable:!0})}:br,Ar=Date.now;var Cr=function(e){var t=0,n=0;return function(){var r=Ar(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(Er);var jr=function(e,t){return Cr(Sr(e,t,br),e+"")};var Tr=function(e,t,n){if(!N(n))return!1;var r=typeof t;return!!("number"==r?Xe(n)&&Me(t,n.length):"string"==r&&t in n)&&a(n[t],e)};var Or=function(e){return jr((function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]:void 0,s=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,s&&Tr(n[0],n[1],s)&&(o=i<3?void 0:o,i=1),t=Object(t);++r<i;){var a=n[r];a&&e(t,a,r,o)}return t}))}((function(e,t){Se(t,tt(t),e)})),kr=Object.prototype.hasOwnProperty;var Nr=function(e,t){return null!=e&&kr.call(e,t)};var Ir=function(e){return"symbol"==typeof e||Ee(e)&&"[object Symbol]"==k(e)},Mr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Rr=/^\w*$/;var Dr=function(e,t){if(ke(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!Ir(e))||(Rr.test(e)||!Mr.test(e)||null!=t&&e in Object(t))};function Pr(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=e.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Pr.Cache||fe),n}Pr.Cache=fe;var Lr=Pr;var zr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Fr=/\\(\\)?/g,Br=function(e){var t=Lr(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(zr,(function(e,n,r,i){t.push(r?i.replace(Fr,"$1"):n||e)})),t}));var qr=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i},Hr=w?w.prototype:void 0,Ur=Hr?Hr.toString:void 0;var $r=function e(t){if("string"==typeof t)return t;if(ke(t))return qr(t,e)+"";if(Ir(t))return Ur?Ur.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n};var Wr=function(e){return null==e?"":$r(e)};var Gr=function(e,t){return ke(e)?e:Dr(e,t)?[e]:Br(Wr(e))};var Vr=function(e){if("string"==typeof e||Ir(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t};var Jr=function(e,t,n){for(var r=-1,i=(t=Gr(t,e)).length,o=!1;++r<i;){var s=Vr(t[r]);if(!(o=null!=e&&n(e,s)))break;e=e[s]}return o||++r!=i?o:!!(i=null==e?0:e.length)&&Re(i)&&Me(s,i)&&(ke(e)||Oe(e))};var Xr=function(e,t){return null!=e&&Jr(e,t,Nr)};var Qr=function(e,t,n){var r=-1,i=(t=Gr(t,e)).length;for(i||(i=1,e=void 0);++r<i;){var o=null==e?void 0:e[Vr(t[r])];void 0===o&&(r=i,o=n),e=M(o)?o.call(e):o}return e};Error;function Yr(e,t){const n=this;let r;return r=e&&Xr(e,"constructor")?e.constructor:function(){return n.apply(this,arguments)},Or(r,n,t),r.prototype=_r(n.prototype,e),r.prototype.constructor=r,r.__super__=n.prototype,r}function Kr(){const e={isResolved:!1,isPending:!0,isRejected:!1},t=new Promise((t,n)=>{e.resolve=t,e.reject=n});return Object.assign(t,e),t.then((function(e){return t.isResolved=!0,t.isPending=!1,t.isRejected=!1,e}),(function(e){throw t.isResolved=!1,t.isPending=!1,t.isRejected=!0,e})),t}function Zr(){throw new Error('A "url" property or function must be specified')}function ei(e,t){const n=t.error;t.error=function(r){n&&n.call(t.context,e,r,t),e.trigger("error",e,r,t)}}const ti={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"};function ni(e){const t=Qr(e,"browserStorage")||Qr(e.collection,"browserStorage");return t?t.sync():ri}function ri(e,t,n={}){const r={type:ti[e],dataType:"json"};n.url||(r.url=Qr(t,"url")||Zr()),null!=n.data||!t||"create"!==e&&"update"!==e&&"patch"!==e||(r.contentType="application/json",r.data=JSON.stringify(n.attrs||t.toJSON(n))),"GET"!==r.type&&(r.processData=!1);const i=n.error;n.error=function(e,t,r){n.textStatus=t,n.errorThrown=r,i&&i.call(n.context,e,t,r)};const o=n.xhr=function(){return fetch.apply(this,arguments)}(Or(r,n));return t.trigger("request",t,o,n),o}var ii=Object.prototype.hasOwnProperty;var oi=function(e){if(null==e)return!0;if(Xe(e)&&(ke(e)||"string"==typeof e||"function"==typeof e.splice||Object(Ne.a)(e)||Be(e)||Oe(e)))return!e.length;var t=Tt(e);if("[object Map]"==t||"[object Set]"==t)return!e.size;if($e(e))return!Je(e).length;for(var n in e)if(ii.call(e,n))return!1;return!0},si=/^\s+|\s+$/g,ai=/^[-+]0x[0-9a-f]+$/i,ci=/^0b[01]+$/i,li=/^0o[0-7]+$/i,ui=parseInt;var di=function(e){if("number"==typeof e)return e;if(Ir(e))return NaN;if(N(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=N(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(si,"");var n=ci.test(e);return n||li.test(e)?ui(e.slice(2),n?2:8):ai.test(e)?NaN:+e};var hi=function(e){return e?(e=di(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};var fi=function(e){var t=hi(e),n=t%1;return t==t?n?t-n:t:0};var pi=function(e,t){var n;if("function"!=typeof t)throw new TypeError("Expected a function");return e=fi(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}};var gi=function(e){return pi(2,e)},mi=0;var vi=function(e){var t=++mi;return Wr(e)+t};const _i={},bi=/\s+/;let yi;const wi=function(e,t,n,r,i){let o,s=0;if(n&&"object"==typeof n){void 0!==r&&"context"in i&&void 0===i.context&&(i.context=r);for(o=Qe(n);s<o.length;s++)t=wi(e,t,o[s],n[o[s]],i)}else if(n&&bi.test(n))for(o=n.split(bi);s<o.length;s++)t=e(t,o[s],r,i);else t=e(t,n,r,i);return t};_i.on=function(e,t,n){if(this._events=wi(Si,this._events||{},e,t,{context:n,ctx:this,listening:yi}),yi){(this._listeners||(this._listeners={}))[yi.id]=yi,yi.interop=!1}return this},_i.listenTo=function(e,t,n){if(!e)return this;const r=e._listenId||(e._listenId=vi("l")),i=this._listeningTo||(this._listeningTo={});let o=yi=i[r];o||(this._listenId||(this._listenId=vi("l")),o=yi=i[r]=new Ti(this,e));const s=xi(e,t,n,this);if(yi=void 0,s)throw s;return o.interop&&o.on(t,n),this};const Si=function(e,t,n,r){if(n){const i=e[t]||(e[t]=[]),o=r.context,s=r.ctx,a=r.listening;a&&a.count++,i.push({callback:n,context:o,ctx:o||s,listening:a})}return e},xi=function(e,t,n,r){try{e.on(t,n,r)}catch(e){return e}};_i.off=function(e,t,n){return this._events?(this._events=wi(Ei,this._events,e,t,{context:n,listeners:this._listeners}),this):this},_i.stopListening=function(e,t,n){const r=this._listeningTo;if(!r)return this;const i=e?[e._listenId]:Qe(r);for(let e=0;e<i.length;e++){const o=r[i[e]];if(!o)break;o.obj.off(t,n,this),o.interop&&o.off(t,n)}return oi(r)&&(this._listeningTo=void 0),this};const Ei=function(e,t,n,r){if(!e)return;const i=r.context,o=r.listeners;let s,a=0;if(t||i||n){for(s=t?[t]:Qe(e);a<s.length;a++){const r=e[t=s[a]];if(!r)break;const o=[];for(let e=0;e<r.length;e++){const s=r[e];if(n&&n!==s.callback&&n!==s.callback._callback||i&&i!==s.context)o.push(s);else{const e=s.listening;e&&e.off(t,n)}}o.length?e[t]=o:delete e[t]}return e}for(s=Qe(o);a<s.length;a++)o[s[a]].cleanup()};_i.once=function(e,t,n){const r=wi(Ai,{},e,t,this.off.bind(this));return"string"==typeof e&&null==n&&(t=void 0),this.on(r,t,n)},_i.listenToOnce=function(e,t,n){const r=wi(Ai,{},t,n,this.stopListening.bind(this,e));return this.listenTo(e,r)};const Ai=function(e,t,n,r){if(n){const i=e[t]=gi((function(){r(t,i),n.apply(this,arguments)}));i._callback=n}return e};_i.trigger=function(e){if(!this._events)return this;const t=Math.max(0,arguments.length-1),n=Array(t);for(let e=0;e<t;e++)n[e]=arguments[e+1];return wi(Ci,this._events,e,void 0,n),this};const Ci=function(e,t,n,r){if(e){const n=e[t];let i=e.all;n&&i&&(i=i.slice()),n&&ji(n,r),i&&ji(i,[t].concat(r))}return e},ji=function(e,t){let n,r=-1;const i=e.length,o=t[0],s=t[1],a=t[2];switch(t.length){case 0:for(;++r<i;)(n=e[r]).callback.call(n.ctx);return;case 1:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o);return;case 2:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o,s);return;case 3:for(;++r<i;)(n=e[r]).callback.call(n.ctx,o,s,a);return;default:for(;++r<i;)(n=e[r]).callback.apply(n.ctx,t);return}},Ti=function(e,t){this.id=e._listenId,this.listener=e,this.obj=t,this.interop=!0,this.count=0,this._events=void 0};Ti.prototype.on=_i.on,Ti.prototype.off=function(e,t){let n;this.interop?(this._events=wi(Ei,this._events,e,t,{context:void 0,listeners:void 0}),n=!this._events):(this.count--,n=0===this.count),n&&this.cleanup()},Ti.prototype.cleanup=function(){delete this.listener._listeningTo[this.obj._listenId],this.interop||delete this.obj._listeners[this.id]},_i.bind=_i.on,_i.unbind=_i.off;var Oi=function(e){return Yt(e,4)},ki=Object.prototype,Ni=ki.hasOwnProperty,Ii=jr((function(e,t){e=Object(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&Tr(t[0],t[1],i)&&(r=1);++n<r;)for(var o=t[n],s=tt(o),c=-1,l=s.length;++c<l;){var u=s[c],d=e[u];(void 0===d||a(d,ki[u])&&!Ni.call(e,u))&&(e[u]=o[u])}return e}));var Mi=function(e,t,n){if("function"!=typeof e)throw new TypeError("Expected a function");return setTimeout((function(){e.apply(void 0,n)}),t)},Ri=jr((function(e,t){return Mi(e,1,t)}));var Di=function(e){return function(t){return null==e?void 0:e[t]}}({"&":"&","<":"<",">":">",'"':""","'":"'"}),Pi=/[&<>"']/g,Li=RegExp(Pi.source);var zi=function(e){return(e=Wr(e))&&Li.test(e)?e.replace(Pi,Di):e};var Fi=function(e){return function(t,n,r){for(var i=-1,o=Object(t),s=r(t),a=s.length;a--;){var c=s[e?a:++i];if(!1===n(o[c],c,o))break}return t}},Bi=Fi();var qi=function(e,t){return e&&Bi(e,t,Qe)};var Hi=function(e,t,n,r){return qi(e,(function(e,i,o){t(r,n(e),i,o)})),r};var Ui=function(e,t){return function(n,r){return Hi(n,e,t(r),{})}},$i=Object.prototype.toString,Wi=Ui((function(e,t,n){null!=t&&"function"!=typeof t.toString&&(t=$i.call(t)),e[t]=n}),xr(br));var Gi=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};var Vi=function(e){return this.__data__.has(e)};function Ji(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new fe;++t<n;)this.add(e[t])}Ji.prototype.add=Ji.prototype.push=Gi,Ji.prototype.has=Vi;var Xi=Ji;var Qi=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1};var Yi=function(e,t){return e.has(t)};var Ki=function(e,t,n,r,i,o){var s=1&n,a=e.length,c=t.length;if(a!=c&&!(s&&c>a))return!1;var l=o.get(e);if(l&&o.get(t))return l==t;var u=-1,d=!0,h=2&n?new Xi:void 0;for(o.set(e,t),o.set(t,e);++u<a;){var f=e[u],p=t[u];if(r)var g=s?r(p,f,u,t,e,o):r(f,p,u,e,t,o);if(void 0!==g){if(g)continue;d=!1;break}if(h){if(!Qi(t,(function(e,t){if(!Yi(h,t)&&(f===e||i(f,e,n,r,o)))return h.push(t)}))){d=!1;break}}else if(f!==p&&!i(f,p,n,r,o)){d=!1;break}}return o.delete(e),o.delete(t),d};var Zi=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n};var eo=function(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n},to=w?w.prototype:void 0,no=to?to.valueOf:void 0;var ro=function(e,t,n,r,i,o,s){switch(n){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!o(new Nt(e),new Nt(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return a(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var c=Zi;case"[object Set]":var l=1&r;if(c||(c=eo),e.size!=t.size&&!l)return!1;var u=s.get(e);if(u)return u==t;r|=2,s.set(e,t);var d=Ki(c(e),c(t),r,i,o,s);return s.delete(e),d;case"[object Symbol]":if(no)return no.call(e)==no.call(t)}return!1},io=Object.prototype.hasOwnProperty;var oo=function(e,t,n,r,i,o){var s=1&n,a=mt(e),c=a.length;if(c!=mt(t).length&&!s)return!1;for(var l=c;l--;){var u=a[l];if(!(s?u in t:io.call(t,u)))return!1}var d=o.get(e);if(d&&o.get(t))return d==t;var h=!0;o.set(e,t),o.set(t,e);for(var f=s;++l<c;){var p=e[u=a[l]],g=t[u];if(r)var m=s?r(g,p,u,t,e,o):r(p,g,u,e,t,o);if(!(void 0===m?p===g||i(p,g,n,r,o):m)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=e.constructor,_=t.constructor;v==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof _&&_ instanceof _||(h=!1)}return o.delete(e),o.delete(t),h},so=Object.prototype.hasOwnProperty;var ao=function(e,t,n,r,i,o){var s=ke(e),a=ke(t),c=s?"[object Array]":Tt(e),l=a?"[object Array]":Tt(t),u="[object Object]"==(c="[object Arguments]"==c?"[object Object]":c),d="[object Object]"==(l="[object Arguments]"==l?"[object Object]":l),h=c==l;if(h&&Object(Ne.a)(e)){if(!Object(Ne.a)(t))return!1;s=!0,u=!1}if(h&&!u)return o||(o=new me),s||Be(e)?Ki(e,t,n,r,i,o):ro(e,t,c,n,r,i,o);if(!(1&n)){var f=u&&so.call(e,"__wrapped__"),p=d&&so.call(t,"__wrapped__");if(f||p){var g=f?e.value():e,m=p?t.value():t;return o||(o=new me),i(g,m,n,r,o)}}return!!h&&(o||(o=new me),oo(e,t,n,r,i,o))};var co=function e(t,n,r,i,o){return t===n||(null==t||null==n||!Ee(t)&&!Ee(n)?t!=t&&n!=n:ao(t,n,r,i,e,o))};var lo=function(e,t){return co(e,t)};var uo=function(e,t,n,r){var i=n.length,o=i,s=!r;if(null==e)return!o;for(e=Object(e);i--;){var a=n[i];if(s&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++i<o;){var c=(a=n[i])[0],l=e[c],u=a[1];if(s&&a[2]){if(void 0===l&&!(c in e))return!1}else{var d=new me;if(r)var h=r(l,u,c,e,t,d);if(!(void 0===h?co(u,l,3,r,d):h))return!1}}return!0};var ho=function(e){return e==e&&!N(e)};var fo=function(e){for(var t=Qe(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,ho(i)]}return t};var po=function(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}};var go=function(e){var t=fo(e);return 1==t.length&&t[0][2]?po(t[0][0],t[0][1]):function(n){return n===e||uo(n,e,t)}};var mo=function(e,t){for(var n=0,r=(t=Gr(t,e)).length;null!=e&&n<r;)e=e[Vr(t[n++])];return n&&n==r?e:void 0};var vo=function(e,t,n){var r=null==e?void 0:mo(e,t);return void 0===r?n:r};var _o=function(e,t){return null!=e&&t in Object(e)};var bo=function(e,t){return null!=e&&Jr(e,t,_o)};var yo=function(e,t){return Dr(e)&&ho(t)?po(Vr(e),t):function(n){var r=vo(n,e);return void 0===r&&r===t?bo(n,e):co(t,r,3)}};var wo=function(e){return function(t){return null==t?void 0:t[e]}};var So=function(e){return function(t){return mo(t,e)}};var xo=function(e){return Dr(e)?wo(Vr(e)):So(e)};var Eo=function(e){return"function"==typeof e?e:null==e?br:"object"==typeof e?ke(e)?yo(e[0],e[1]):go(e):xo(e)};var Ao=function(e){return Eo("function"==typeof e?e:Yt(e,1))};var Co=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};var jo=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(i);++r<i;)o[r]=e[r+t];return o};var To=function(e,t){return t.length<2?e:mo(e,jo(t,0,-1))};var Oo=function(e,t){return t=Gr(t,e),null==(e=To(e,t))||delete e[Vr(Co(t))]};var ko=function(e){return kn(e)?void 0:e},No=w?w.isConcatSpreadable:void 0;var Io=function(e){return ke(e)||Oe(e)||!!(No&&e&&e[No])};var Mo=function e(t,n,r,i,o){var s=-1,a=t.length;for(r||(r=Io),o||(o=[]);++s<a;){var c=t[s];n>0&&r(c)?n>1?e(c,n-1,r,i,o):dt(o,c):i||(o[o.length]=c)}return o};var Ro=function(e){return(null==e?0:e.length)?Mo(e,1):[]};var Do=function(e){return Cr(Sr(e,void 0,Ro),e+"")},Po=Do((function(e,t){var n={};if(null==e)return n;var r=!1;t=qr(t,(function(t){return t=Gr(t,e),r||(r=t.length>1),t})),Se(e,vt(e),n),r&&(n=Yt(n,7,ko));for(var i=t.length;i--;)Oo(n,t[i]);return n}));var Lo=function(e,t,n,r){if(!N(e))return e;for(var i=-1,o=(t=Gr(t,e)).length,s=o-1,a=e;null!=a&&++i<o;){var c=Vr(t[i]),l=n;if(i!=s){var u=a[c];void 0===(l=r?r(u,c,a):void 0)&&(l=N(u)?u:Me(t[i+1])?[]:{})}we(a,c,l),a=a[c]}return e};var zo=function(e,t,n){for(var r=-1,i=t.length,o={};++r<i;){var s=t[r],a=mo(e,s);n(a,s)&&Lo(o,Gr(s,e),a)}return o};var Fo=function(e,t){return zo(e,t,(function(t,n){return bo(e,n)}))},Bo=Do((function(e,t){return null==e?{}:Fo(e,t)}));const qo=function(e,t){let n=e||{};t||(t={}),this.preinitialize.apply(this,arguments),this.cid=vi(this.cidPrefix),this.attributes={},t.collection&&(this.collection=t.collection),t.parse&&(n=this.parse(n,t)||{});const r=Qr(this,"defaults");n=Ii(Or({},r,n),r),this.set(n,t),this.changed={},this.initialize.apply(this,arguments)};qo.extend=Yr,Object.assign(qo.prototype,_i,{changed:null,validationError:null,idAttribute:"id",cidPrefix:"c",preinitialize:function(){},initialize:function(){},toJSON:function(e){return Oi(this.attributes)},sync:function(e,t,n){return ni(this)(e,t,n)},get:function(e){return this.attributes[e]},keys:function(){return Object.keys(this.attributes)},values:function(){return Object.values(this.attributes)},pairs:function(){return this.entries()},entries:function(){return Object.entries(this.attributes)},invert:function(){return Wi(this.attributes)},pick:function(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),Bo(this.attributes,e)},omit:function(...e){return 1===e.length&&Array.isArray(e[0])&&(e=e[0]),Po(this.attributes,e)},isEmpty:function(){return oi(this.attributes)},escape:function(e){return zi(this.get(e))},has:function(e){return null!=this.get(e)},matches:function(e){return!!Ao(e,this)(this.attributes)},set:function(e,t,n){if(null==e)return this;let r;if("object"==typeof e?(r=e,n=t):(r={})[e]=t,n||(n={}),!this._validate(r,n))return!1;const i=n.unset,o=n.silent,s=[],a=this._changing;this._changing=!0,a||(this._previousAttributes=Oi(this.attributes),this.changed={});const c=this.attributes,l=this.changed,u=this._previousAttributes;for(const e in r)t=r[e],lo(c[e],t)||s.push(e),lo(u[e],t)?delete l[e]:l[e]=t,i?delete c[e]:c[e]=t;if(this.idAttribute in r&&(this.id=this.get(this.idAttribute)),!o){s.length&&(this._pending=n);for(let e=0;e<s.length;e++)this.trigger("change:"+s[e],this,c[s[e]],n)}if(a)return this;if(!o)for(;this._pending;)n=this._pending,this._pending=!1,this.trigger("change",this,n);return this._pending=!1,this._changing=!1,this},unset:function(e,t){return this.set(e,void 0,Or({},t,{unset:!0}))},clear:function(e){const t={};for(const e in this.attributes)t[e]=void 0;return this.set(t,Or({},e,{unset:!0}))},hasChanged:function(e){return null==e?!oi(this.changed):Xr(this.changed,e)},changedAttributes:function(e){if(!e)return!!this.hasChanged()&&Oi(this.changed);const t=this._changing?this._previousAttributes:this.attributes,n={};let r;for(const i in e){const o=e[i];lo(t[i],o)||(n[i]=o,r=!0)}return!!r&&n},previous:function(e){return null!=e&&this._previousAttributes?this._previousAttributes[e]:null},previousAttributes:function(){return Oi(this._previousAttributes)},fetch:function(e){e=Or({parse:!0},e);const t=this,n=e.success;return e.success=function(r){const i=e.parse?t.parse(r,e):r;if(!t.set(i,e))return!1;n&&n.call(e.context,t,r,e),t.trigger("sync",t,r,e)},ei(this,e),this.sync("read",this,e)},save:function(e,t,n){let r;null==e||"object"==typeof e?(r=e,n=t):(r={})[e]=t;const i=(n=Or({validate:!0,parse:!0},n)).wait,o=n.promise,s=o&&Kr();if(r&&!i){if(!this.set(r,n))return!1}else if(!this._validate(r,n))return!1;const a=this,c=n.success,l=n.error,u=this.attributes;n.success=function(e){a.attributes=u;let t=n.parse?a.parse(e,n):e;if(i&&(t=Or({},r,t)),t&&!a.set(t,n))return!1;c&&c.call(n.context,a,e,n),a.trigger("sync",a,e,n),o&&s.resolve()},n.error=function(e,t,n){l&&l.call(n.context,e,t,n),o&&s.reject(t)},ei(this,n),r&&i&&(this.attributes=Or({},u,r));const d=this.isNew()?"create":n.patch?"patch":"update";"patch"!==d||n.attrs||(n.attrs=r);const h=this.sync(d,this,n);return this.attributes=u,o?s:h},destroy:function(e){e=e?Oi(e):{};const t=this,n=e.success,r=e.wait,i=function(){t.stopListening(),t.trigger("destroy",t,t.collection,e)};e.success=function(o){r&&i(),n&&n.call(e.context,t,o,e),t.isNew()||t.trigger("sync",t,o,e)};let o=!1;return this.isNew()?Ri(e.success):(ei(this,e),o=this.sync("delete",this,e)),r||i(),o},url:function(){const e=Qr(this,"urlRoot")||Qr(this.collection,"url")||Zr();if(this.isNew())return e;const t=this.get(this.idAttribute);return e.replace(/[^\/]$/,"$&/")+encodeURIComponent(t)},parse:function(e,t){return e},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return!this.has(this.idAttribute)},isValid:function(e){return this._validate({},Or({},e,{validate:!0}))},_validate:function(e,t){if(!t.validate||!this.validate)return!0;e=Or({},this.attributes,e);const n=this.validationError=this.validate(e,t)||null;return!n||(this.trigger("invalid",this,n,Or(t,{validationError:n})),!1)}});var Ho=function(e){for(var t=-1,n=null==e?0:e.length,r=0,i=[];++t<n;){var o=e[t];o&&(i[r++]=o)}return i}; /** * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) * @description This is the core utilities module. - */const Ps=dr.f.Strophe,Ls={isTagEqual:function(e,t){if(e.nodeTree)return Ls.isTagEqual(e.nodeTree,t);if(e instanceof Element)return Ps.isTagEqual(e,t);throw Error("isTagEqual called with value which isn't an element or Strophe.Builder instance")}},zs=new DOMParser,Fs=zs.parseFromString("invalid","text/xml").getElementsByTagName("parsererror")[0].namespaceURI; + */const Uo=vr.f.Strophe,$o={isTagEqual:function(e,t){if(e.nodeTree)return $o.isTagEqual(e.nodeTree,t);if(e instanceof Element)return Uo.isTagEqual(e,t);throw Error("isTagEqual called with value which isn't an element or Strophe.Builder instance")}},Wo=new DOMParser,Go=Wo.parseFromString("invalid","text/xml").getElementsByTagName("parsererror")[0].namespaceURI; /** * Clears the specified timeout and interval. * @method u#clearTimers @@ -73,7 +80,7 @@ * @copyright Simen Bekkhus 2016 * @license MIT */ -function Bs(e,t){clearTimeout(e),clearInterval(t)} +function Vo(e,t){clearTimeout(e),clearInterval(t)} /** * Creates a {@link Promise} that resolves if the passed in function returns a truthy value. * Rejects if it throws or does not return truthy within the given max_wait. @@ -86,7 +93,7 @@ function Bs(e,t){clearTimeout(e),clearInterval(t)} * or rejected with the exception thrown by it or it times out. * @copyright Simen Bekkhus 2016 * @license MIT - */Ls.getJIDFromURI=function(e){return e.startsWith("xmpp:")&&e.endsWith("?join")?e.replace(/^xmpp:/,"").replace(/\?join$/,""):e},Ls.toStanza=function(e){const t=zs.parseFromString(e,"text/xml");if(t.getElementsByTagNameNS(Fs,"parsererror").length)throw new Error("Parser Error: ".concat(e));return t.firstElementChild},Ls.getLongestSubstring=function(e,t){return t.reduce((function(t,n){return e.startsWith(n)&&n.length>t.length?n:t}),"")},Ls.prefixMentions=function(e){let t=e.get("message");return(e.get("references")||[]).sort((e,t)=>t.begin-e.begin).forEach(e=>{t="".concat(t.slice(0,e.begin),"@").concat(t.slice(e.begin))}),t},Ls.isValidJID=function(e){return"string"==typeof e&&(2===Ds(e.split("@")).length&&!e.startsWith("@")&&!e.endsWith("@"))},Ls.isValidMUCJID=function(e){return!e.startsWith("@")&&!e.endsWith("@")},Ls.isSameBareJID=function(e,t){return"string"==typeof e&&"string"==typeof t&&Ps.getBareJidFromJid(e).toLowerCase()===Ps.getBareJidFromJid(t).toLowerCase()},Ls.isSameDomain=function(e,t){return"string"==typeof e&&"string"==typeof t&&Ps.getDomainFromJid(e).toLowerCase()===Ps.getDomainFromJid(t).toLowerCase()},Ls.isNewMessage=function(e){return e instanceof Element?!(ur()('result[xmlns="'.concat(Ps.NS.MAM,'"]'),e).length&&ur()('delay[xmlns="'.concat(Ps.NS.DELAY,'"]'),e).length):(e instanceof Rs&&(e=e.attributes),!(e.is_delayed&&e.is_archived))},Ls.shouldCreateMessage=function(e){return e.retracted||!Ls.isEmptyMessage(e)},Ls.shouldCreateGroupchatMessage=function(e){return e.nick&&(Ls.shouldCreateMessage(e)||e.is_tombstone)},Ls.isEmptyMessage=function(e){return e instanceof Rs&&(e=e.attributes),!(e.oob_url||e.file||e.is_encrypted&&e.plaintext||e.message)},Ls.isOnlyChatStateNotification=function(e){return e instanceof Element?null===e.querySelector("body")&&(null!==e.querySelector("active")||null!==e.querySelector("composing")||null!==e.querySelector("inactive")||null!==e.querySelector("paused")||null!==e.querySelector("gone")):(e instanceof Rs&&(e=e.attributes),e.chat_state&&Ls.isEmptyMessage(e))},Ls.isOnlyMessageDeliveryReceipt=function(e){return e instanceof Element?null===e.querySelector("body")&&null!==e.querySelector("received"):(e instanceof Rs&&(e=e.attributes),e.received&&Ls.isEmptyMessage(e))},Ls.isChatRoom=function(e){return e&&"chatroom"===e.get("type")},Ls.isErrorObject=function(e){return e instanceof Error},Ls.isErrorStanza=function(e){return!!Mn(e)&&"error"===e.getAttribute("type")},Ls.isForbiddenError=function(e){return!!Mn(e)&&ur()('error[type="auth"] forbidden[xmlns="'.concat(Ps.NS.STANZAS,'"]'),e).length>0},Ls.isServiceUnavailableError=function(e){return!!Mn(e)&&ur()('error[type="cancel"] service-unavailable[xmlns="'.concat(Ps.NS.STANZAS,'"]'),e).length>0},Ls.merge=function e(t,n){for(const r in n)N(t[r])?e(t[r],n[r]):t[r]=n[r]},Ls.getOuterWidth=function(e,t=!1){let n=e.offsetWidth;if(!t)return n;const r=window.getComputedStyle(e);return n+=parseInt(r.marginLeft?r.marginLeft:0,10)+parseInt(r.marginRight?r.marginRight:0,10),n},Ls.stringToElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.firstElementChild},Ls.matchesSelector=function(e,t){const n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return!!n&&n.call(e,t)},Ls.queryChildren=function(e,t){return Array.from(e.childNodes).filter(e=>Ls.matchesSelector(e,t))},Ls.contains=function(e,t){const n=(e,n)=>e.get(n).toLowerCase().includes(t.toLowerCase());return function(t){if("object"==typeof e)return Object.keys(e).reduce((e,r)=>e||n(t,r),!1);if("string"==typeof e)return n(t,e);throw new TypeError("contains: wrong attribute type. Must be string or array.")}},Ls.isOfType=function(e,t){return t.get("type")==e},Ls.isInstance=function(e,t){return t instanceof e},Ls.getAttribute=function(e,t){return t.get(e)},Ls.contains.not=function(e,t){return function(n){return!Ls.contains(e,t)(n)}},Ls.rootContains=function(e,t){return e!==document||e.contains?e.contains?e.contains(t):window.HTMLElement.prototype.contains.call(e,t):document.head.contains(t)||document.body.contains(t)},Ls.createFragmentFromText=function(e){var t,n=document.createDocumentFragment(),r=document.createElement("body");for(r.innerHTML=e;t=r.firstChild;)n.appendChild(t);return n},Ls.isPersistableModel=function(e){return e.collection&&e.collection.browserStorage},Ls.getResolveablePromise=function(){const e={isResolved:!1,isPending:!0,isRejected:!1},t=new Promise((t,n)=>{e.resolve=t,e.reject=n});return Object.assign(t,e),t.then((function(e){return t.isResolved=!0,t.isPending=!1,t.isRejected=!1,e}),(function(e){throw t.isResolved=!1,t.isPending=!1,t.isRejected=!0,e})),t},Ls.interpolate=function(e,t){return e.replace(/{{{([^{}]*)}}}/g,(e,n)=>{var r=t[n];return"string"==typeof r||"number"==typeof r?r:e})},Ls.onMultipleEvents=function(e=[],t){let n=[];function r(r){n.push(r),e.length===n.length&&(t(n),n=[])}e.forEach(e=>e.object.on(e.event,r))},Ls.safeSave=function(e,t,n){Ls.isPersistableModel(e)?e.save(t,n):e.set(t,n)},Ls.siblingIndex=function(e){for(var t=0;e=e.previousElementSibling;t++);return t},Ls.getCurrentWord=function(e,t,n){t||(t=e.selectionEnd||void 0);let[r]=e.value.slice(0,t).split(/\s/).slice(-1);return n&&([r]=r.split(n).slice(-1)),r},Ls.replaceCurrentWord=function(e,t,n=[]){const r=e.selectionEnd||void 0,i=bs(e.value.slice(0,r).split(/\s/)),s=e.value,o=n.includes(i[0])?i[0]:"";e.value=s.slice(0,r-i.length)+o+"".concat(t," ")+s.slice(r);const a=r-i.length+t.length+1;e.selectionEnd=o?a+1:a},Ls.triggerEvent=function(e,t,n="Event",r=!0,i=!0){const s=document.createEvent(n);s.initEvent(t,r,i),e.dispatchEvent(s)},Ls.getSelectValues=function(e){const t=[],n=e&&e.options;for(var r=0,i=n.length;r<i;r++){const e=n[r];e.selected&&t.push(e.value||e.text)}return t},Ls.formatFingerprint=function(e){e=e.replace(/^05/,"");for(let t=1;t<8;t++){const n=8*t+t-1;e=e.slice(0,n)+" "+e.slice(n)}return e},Ls.appendArrayBuffer=function(e,t){const n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer},Ls.arrayBufferToHex=function(e){return Array.prototype.map.call(new Uint8Array(e),e=>("00"+e.toString(16)).slice(-2)).join("")},Ls.arrayBufferToString=function(e){return new TextDecoder("utf-8").decode(e)},Ls.stringToArrayBuffer=function(e){return new TextEncoder("utf-8").encode(e).buffer},Ls.arrayBufferToBase64=function(e){return btoa(new Uint8Array(e).reduce((e,t)=>e+String.fromCharCode(t),""))},Ls.base64ToArrayBuffer=function(e){const t=window.atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer},Ls.getRandomInt=function(e){return Math.floor(Math.random()*Math.floor(e))},Ls.placeCaretAtEnd=function(e){e!==document.activeElement&&e.focus();const t=2*e.value.length;setTimeout(()=>e.setSelectionRange(t,t),1),this.scrollTop=999999},Ls.getUniqueId=function(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t},Ls.waitUntil=function(e,t=300,n=3){try{const t=e();if(t)return Promise.resolve(t)}catch(e){return Promise.reject(e)}const r=Ls.getResolveablePromise(),i=new Error;const s=setInterval((function(){try{const t=e();t&&(Bs(o,s),r.resolve(t))}catch(e){Bs(o,s),r.reject(e)}}),n);const o=setTimeout((function(){Bs(o,s);const e="Wait until promise timed out: \n\n".concat(i.stack);console.trace(),Pn.error(e),r.reject(new Error(e))}),t);return r};var qs=Ls;const Hs=dr.f.Strophe,Us=dr.f.$msg,{NS:$s}=Hs;function Ws(e){const t=ur()('spoiler[xmlns="'.concat(Hs.NS.SPOILER,'"]'),e).pop();return{is_spoiler:!!t,spoiler_hint:null==t?void 0:t.textContent}}function Vs(e){const t=ur()('x[xmlns="'.concat(Hs.NS.OUTOFBAND,'"]'),e).pop();var n,r;return t?{oob_url:null===(n=t.querySelector("url"))||void 0===n?void 0:n.textContent,oob_desc:null===(r=t.querySelector("desc"))||void 0===r?void 0:r.textContent}:{}}function Gs(e,t){const n=ur()('replace[xmlns="'.concat(Hs.NS.MESSAGE_CORRECT,'"]'),e).pop();if(n){const e=n.getAttribute("id"),r=e;if(e){const n=ur()('delay[xmlns="'.concat(Hs.NS.DELAY,'"]'),t).pop();return{msgid:r,replace_id:e,edited:n?Sn()(n.getAttribute("stamp")).toISOString():(new Date).toISOString()}}}return{}}function Js(e,t){var n;const r=ur()('encrypted[xmlns="'.concat(Hs.NS.OMEMO,'"]'),e).pop(),i={is_encrypted:!!r};if(!r||!t.config.get("trusted"))return i;const s=r.querySelector("header");i.encrypted={device_id:s.getAttribute("sid")};const o=null===(n=t.omemo_store)||void 0===n?void 0:n.get("device_id"),a=o&&ur()('key[rid="'.concat(o,'"]'),r).pop();var c;a&&Object.assign(i.encrypted,{iv:s.querySelector("iv").textContent,key:a.textContent,payload:(null===(c=r.querySelector("payload"))||void 0===c?void 0:c.textContent)||null,prekey:["true","1"].includes(a.getAttribute("prekey"))});return i}function Xs(e,t){return"me"!==t.sender&&!t.is_carbon&&!t.is_archived&&ur()('request[xmlns="'.concat(Hs.NS.RECEIPTS,'"]'),e).length}function Qs(e){const t=ur()('received[xmlns="'.concat(Hs.NS.RECEIPTS,'"]'),e).pop();return null==t?void 0:t.getAttribute("id")}function Ys(e){var t;return null===(t=ur()('\n composing[xmlns="'.concat($s.CHATSTATES,'"],\n paused[xmlns="').concat($s.CHATSTATES,'"],\n inactive[xmlns="').concat($s.CHATSTATES,'"],\n active[xmlns="').concat($s.CHATSTATES,'"],\n gone[xmlns="').concat($s.CHATSTATES,'"]'),e).pop())||void 0===t?void 0:t.nodeName}function Ks(e){const t=Hs.NS.CARBONS;return ur()('message > received[xmlns="'.concat(t,'"]'),e).length>0||ur()('message > sent[xmlns="'.concat(t,'"]'),e).length>0}function Zs(e,t){const n={},r=ur()('stanza-id[xmlns="'.concat(Hs.NS.SID,'"]'),e).reduce((e,t)=>(e["stanza_id ".concat(t.getAttribute("by"))]=t.getAttribute("id"),e),{});Object.assign(n,r);const i=ur()('message > result[xmlns="'.concat(Hs.NS.MAM,'"]'),t).pop();if(i){const e=t.getAttribute("from");e?n["stanza_id ".concat(e)]=i.getAttribute("id"):n.stanza_id=i.getAttribute("id")}const s=ur()('origin-id[xmlns="'.concat(Hs.NS.SID,'"]'),e).pop();return s&&(n.origin_id=s.getAttribute("id")),n}function eo(e,t){const n=ur()('> apply-to[xmlns="'.concat(Hs.NS.FASTEN,'"]'),e).pop();if(n){const e=n.getAttribute("id");if(ur()('> retract[xmlns="'.concat(Hs.NS.RETRACT,'"]'),n).pop()){const n=ur()('delay[xmlns="'.concat(Hs.NS.DELAY,'"]'),t).pop();return{editable:!1,retracted:n?Sn()(n.getAttribute("stamp")).toISOString():(new Date).toISOString(),retracted_id:e}}}else{const t=ur()('> retracted[xmlns="'.concat(Hs.NS.RETRACT,'"]'),e).pop();if(t)return{editable:!1,is_tombstone:!0,retracted:t.getAttribute("stamp")}}return{}}function to(e){var t;const n=null===(t=e.querySelector("body"))||void 0===t?void 0:t.textContent;return ur()('reference[xmlns="'.concat(Hs.NS.REFERENCE,'"]'),e).map(e=>{const t=e.getAttribute("begin"),r=e.getAttribute("end");return{begin:t,end:r,type:e.getAttribute("type"),value:n.slice(t,r),uri:e.getAttribute("uri")}})}function no(e,t){qc.send(Us({to:e.getAttribute("from"),type:"error",id:e.getAttribute("id")}).c("error",{type:"cancel"}).c("not-allowed",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up().c("text",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).t(t)),Pn.warn("Rejecting message stanza with the following reason: ".concat(t)),Pn.warn(e)}function ro(e){if("error"===e.getAttribute("type")){const t=e.querySelector("error"),n=ur()('text[xmlns="'.concat(Hs.NS.STANZAS,'"]'),t).pop();return{is_error:!0,error_text:null==n?void 0:n.textContent,error_type:t.getAttribute("type"),error_condition:t.firstElementChild.nodeName}}return{}}class io extends Error{constructor(e,t){super(e,t),this.name="StanzaParseError",this.stanza=t}}function so(e){if(ur()('message > forwarded[xmlns="'.concat(Hs.NS.FORWARD,'"]'),e).length){no(e,"Forwarded messages not part of an encapsulating protocol are not supported");const t=e.getAttribute("from");return new io("Ignoring unencapsulated forwarded message from ".concat(t),e)}}const oo={isHeadline:e=>"headline"===e.getAttribute("type"),isServerMessage(e){const t=e.getAttribute("from");return!("error"===e.getAttribute("type")||!t||t.includes("@"))},getChatMarker:e=>ur()('\n acknowledged[xmlns="'.concat(Hs.NS.MARKERS,'"],\n displayed[xmlns="').concat(Hs.NS.MARKERS,'"],\n received[xmlns="').concat(Hs.NS.MARKERS,'"]'),e).pop(),isArchived:e=>!!ur()('message > result[xmlns="'.concat(Hs.NS.MAM,'"]'),e).pop(),getAttributes:e=>e.getAttributeNames().reduce((t,n)=>(t[n]=Hs.xmlunescape(e.getAttribute(n)),t),{}),async parseMessage(e,t){var n,r,i,s,o,a;const c=so(e);if(c)return c;let l=e.getAttribute("to");const u=Hs.getResourceFromJid(l);if(qc.settings.get("filter_by_resource")&&u&&u!==t.resource)return new io("Ignoring incoming message intended for a different resource: ".concat(l),e);const d=e;let h=e.getAttribute("from")||t.bare_jid;if(Ks(e)){if(h!==t.bare_jid)return no(e,"Rejecting carbon from invalid JID"),new io("Rejecting carbon from invalid JID ".concat(l),e);{const t='[xmlns="'.concat(Hs.NS.CARBONS,'"] > forwarded[xmlns="').concat(Hs.NS.FORWARD,'"] > message');l=(e=ur()(t,e).pop()).getAttribute("to"),h=e.getAttribute("from")}}const f=oo.isArchived(e);if(f){if(h!==t.bare_jid)return new io("Invalid Stanza: alleged MAM message from ".concat(e.getAttribute("from")),e);{const t='[xmlns="'.concat(Hs.NS.MAM,'"] > forwarded[xmlns="').concat(Hs.NS.FORWARD,'"] > message');l=(e=ur()(t,e).pop()).getAttribute("to"),h=e.getAttribute("from")}}const p=Hs.getBareJidFromJid(h),g=p===t.bare_jid;if(g&&null===l)return new io("Don't know how to handle message stanza without 'to' attribute. ".concat(e.outerHTML),e);const m=oo.isHeadline(e),v=oo.isServerMessage(e);let _,b;if(!m&&!v&&(b=g?Hs.getBareJidFromJid(l):p,_=await qc.contacts.get(b),void 0===_&&!qc.settings.get("allow_non_roster_messaging")))return Pn.error(e),new io("Blocking messaging with a JID not in our roster because allow_non_roster_messaging is false.",e);const y=ur()('delay[xmlns="'.concat(Hs.NS.DELAY,'"]'),d).pop(),w=oo.getChatMarker(e),S=(new Date).toISOString();let x=Object.assign({contact_jid:b,is_archived:f,is_headline:m,is_server_message:v,body:null===(n=e.querySelector("body"))||void 0===n||null===(r=n.textContent)||void 0===r?void 0:r.trim(),chat_state:Ys(e),from:Hs.getBareJidFromJid(e.getAttribute("from")),is_carbon:Ks(d),is_delayed:!!y,is_markable:!!ur()('markable[xmlns="'.concat(Hs.NS.MARKERS,'"]'),e).length,is_marker:!!w,marker_id:w&&w.getAttribute("id"),msgid:e.getAttribute("id")||d.getAttribute("id"),nick:null===(i=_)||void 0===i||null===(s=i.attributes)||void 0===s?void 0:s.nickname,receipt_id:Qs(e),received:(new Date).toISOString(),references:to(e),sender:g?"me":"them",subject:null===(o=e.querySelector("subject"))||void 0===o?void 0:o.textContent,thread:null===(a=e.querySelector("thread"))||void 0===a?void 0:a.textContent,time:y?Sn()(y.getAttribute("stamp")).toISOString():S,to:e.getAttribute("to"),type:e.getAttribute("type")},ro(e),Vs(e),Ws(e),Gs(e,d),Zs(e,d),eo(e,d),Js(e,t));if(x.is_archived){const n=d.getAttribute("from");if(n&&n!==t.bare_jid)return new io("Invalid Stanza: Forged MAM message from ".concat(n),e)}return await qc.emojis.initialize(),x=Object.assign({message:x.body||x.error,is_only_emojis:!!x.body&&qs.isOnlyEmojis(x.body),is_valid_receipt_request:Xs(e,x)},x),x.id=x.origin_id||x["stanza_id ".concat(x.from)]||qs.getUniqueId(),qc.hook("parseMessage",e,x)},async parseMUCMessage(e,t,n){var r,i,s,o,a;const c=so(e);if(c)return c;const l='[xmlns="'.concat($s.MAM,'"] > forwarded[xmlns="').concat($s.FORWARD,'"] > message'),u=e;if(e=ur()(l,e).pop()||e,ur()('message > forwarded[xmlns="'.concat(Hs.NS.FORWARD,'"]'),e).length)return new io("Invalid Stanza: Forged MAM groupchat message from ".concat(e.getAttribute("from")),e);const d=ur()('delay[xmlns="'.concat(Hs.NS.DELAY,'"]'),u).pop(),h=e.getAttribute("from"),f=Hs.unescapeNode(Hs.getResourceFromJid(h)),p=oo.getChatMarker(e),g=(new Date).toISOString();let m=Object.assign({from:h,nick:f,body:null===(r=e.querySelector("body"))||void 0===r||null===(i=r.textContent)||void 0===i?void 0:i.trim(),chat_state:Ys(e),from_muc:Hs.getBareJidFromJid(h),from_real_jid:null===(s=t.occupants.findOccupant({nick:f}))||void 0===s?void 0:s.get("jid"),is_archived:oo.isArchived(u),is_carbon:Ks(u),is_delayed:!!d,is_headline:oo.isHeadline(e),is_markable:!!ur()('markable[xmlns="'.concat(Hs.NS.MARKERS,'"]'),e).length,is_marker:!!p,marker_id:p&&p.getAttribute("id"),msgid:e.getAttribute("id")||u.getAttribute("id"),receipt_id:Qs(e),received:(new Date).toISOString(),references:to(e),subject:null===(o=e.querySelector("subject"))||void 0===o?void 0:o.textContent,thread:null===(a=e.querySelector("thread"))||void 0===a?void 0:a.textContent,time:d?Sn()(d.getAttribute("stamp")).toISOString():g,to:e.getAttribute("to"),type:e.getAttribute("type")},ro(e),Vs(e),Ws(e),Gs(e,u),Zs(e,u),eo(e,u),function(e){const t=ur()('apply-to[xmlns="'.concat(Hs.NS.FASTEN,'"]'),e).pop();if(t){const e=t.getAttribute("id"),r=ur()('moderated[xmlns="'.concat(Hs.NS.MODERATE,'"]'),t).pop();if(r){var n;if(ur()('retract[xmlns="'.concat(Hs.NS.RETRACT,'"]'),r).pop())return{editable:!1,moderated:"retracted",moderated_by:r.getAttribute("by"),moderated_id:e,moderation_reason:null===(n=r.querySelector("reason"))||void 0===n?void 0:n.textContent}}}else{const t=ur()('> moderated[xmlns="'.concat(Hs.NS.MODERATE,'"]'),e).pop();if(t){var r;if(ur()('retracted[xmlns="'.concat(Hs.NS.RETRACT,'"]'),t).pop())return{editable:!1,is_tombstone:!0,moderated_by:t.getAttribute("by"),retracted:t.getAttribute("stamp"),moderation_reason:null===(r=t.querySelector("reason"))||void 0===r?void 0:r.textContent}}}return{}}(e),Js(e,n));return await qc.emojis.initialize(),m=Object.assign({is_only_emojis:!!m.body&&qs.isOnlyEmojis(m.body),is_valid_receipt_request:Xs(e,m),message:m.body||m.error,sender:m.nick===t.get("nick")?"me":"them"},m),m.is_archived&&u.getAttribute("from")!==m.from_muc?new io("Invalid Stanza: Forged MAM message from ".concat(u.getAttribute("from")),e):m.is_archived&&u.getAttribute("from")!==t.get("jid")?new io("Invalid Stanza: Forged MAM groupchat message from ".concat(e.getAttribute("from")),e):m.is_carbon?new io("Invalid Stanza: MUC messages SHOULD NOT be XEP-0280 carbon copied",e):(m.id=m.origin_id||m["stanza_id ".concat(m.from_muc||m.from)]||qs.getUniqueId(),qc.hook("parseMUCMessage",e,m))},parseMUCPresence(e){const t=e.getAttribute("from"),n=e.getAttribute("type"),r={from:t,nick:Hs.getResourceFromJid(t),type:n,states:[],hats:[],show:"unavailable"!==n?"online":"offline"};return Array.from(e.children).forEach(e=>{if(e.matches("status"))r.status=e.textContent||null;else if(e.matches("show"))r.show=e.textContent||"online";else if(e.matches("x")&&e.getAttribute("xmlns")===Hs.NS.MUC_USER)Array.from(e.children).forEach(e=>{"item"===e.nodeName?(r.affiliation=e.getAttribute("affiliation"),r.role=e.getAttribute("role"),r.jid=e.getAttribute("jid"),r.nick=e.getAttribute("nick")||r.nick):"status"==e.nodeName&&e.getAttribute("code")&&r.states.push(e.getAttribute("code"))});else if(e.matches("x")&&e.getAttribute("xmlns")===Hs.NS.VCARDUPDATE){var t;r.image_hash=null===(t=e.querySelector("photo"))||void 0===t?void 0:t.textContent}else e.matches("hats")&&e.getAttribute("xmlns")===Hs.NS.MUC_HATS&&(r.hats=Array.from(e.children).map(e=>e.matches("hat")&&{title:e.getAttribute("title"),uri:e.getAttribute("uri")}))}),r}};var ao=oo;var co=function(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i<s;){var o=e[i];t(r,o,n(o),e)}return r};var lo=function(e,t){return function(n,r){if(null==n)return n;if(!Xe(n))return e(n,r);for(var i=n.length,s=t?i:-1,o=Object(n);(t?s--:++s<i)&&!1!==r(o[s],s,o););return n}},uo=lo(Di);var ho=function(e,t,n,r){return uo(e,(function(e,i,s){t(r,e,n(e),s)})),r};var fo=function(e,t){return function(n,r){var i=ke(n)?co:ho,s=t?t():{};return i(n,e,vs(r,2),s)}},po=Object.prototype.hasOwnProperty,go=fo((function(e,t,n){po.call(e,n)?++e[n]:be(e,n,1)}));var mo=function(e,t,n,r){for(var i=e.length,s=n+(r?1:-1);r?s--:++s<i;)if(t(e[s],s,e))return s;return-1};var vo=function(e){return e!=e};var _o=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1};var bo=function(e,t,n){return t==t?_o(e,t,n):mo(e,vo,n)};var yo=function(e,t){return!!(null==e?0:e.length)&&bo(e,t,0)>-1};var wo=function(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1};var So=function(e,t,n,r){var i=-1,s=yo,o=!0,a=e.length,c=[],l=t.length;if(!a)return c;n&&(t=Dr(t,Le(n))),r?(s=wo,o=!1):t.length>=200&&(s=Wi,o=!1,t=new Ui(t));e:for(;++i<a;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,o&&d==d){for(var h=l;h--;)if(t[h]===d)continue e;c.push(u)}else s(t,d,r)||c.push(u)}return c};var xo=function(e){return Ee(e)&&Xe(e)},Eo=wr((function(e,t){return xo(e)?So(e,Cs(t,1,xo,!0)):[]}));var Ao=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0};var Co=function(e,t){var n=!0;return uo(e,(function(e,r,i){return n=!!t(e,r,i)})),n};var jo=function(e,t,n){var r=ke(e)?Ao:Co;return n&&Sr(e,t,n)&&(t=void 0),r(e,vs(t,3))},To=Math.max;var Oo=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ai(n);return i<0&&(i=To(r+i,0)),mo(e,vs(t,3),i)},ko=Math.max,No=Math.min;var Io=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return void 0!==n&&(i=ai(n),i=n<0?ko(r+i,0):No(i,r-1)),mo(e,vs(t,3),i,!0)},Mo=Object.prototype.hasOwnProperty,Ro=fo((function(e,t,n){Mo.call(e,n)?e[n].push(t):be(e,n,[t])})),Do=Math.max;var Po=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ai(n);return i<0&&(i=Do(r+i,0)),bo(e,t,i)},Lo=fo((function(e,t,n){be(e,n,t)}));var zo=function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r},Fo=Math.max,Bo=Math.min;var qo=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ai(n))<0?Fo(r+i,0):Bo(i,r-1)),t==t?zo(e,t,i):mo(e,vo,i,!0)};var Ho=function(e,t){var n;return uo(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n};var Uo=function(e,t,n){var r=ke(e)?$i:Ho;return n&&Sr(e,t,n)&&(t=void 0),r(e,vs(t,3))};var $o=function(e,t){var n=-1,r=Xe(e)?Array(e.length):[];return uo(e,(function(e,i,s){r[++n]=t(e,i,s)})),r};var Wo=function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e};var Vo=function(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,s=Cr(e),o=void 0!==t,a=null===t,c=t==t,l=Cr(t);if(!a&&!l&&!s&&e>t||s&&o&&c&&!a&&!l||r&&o&&c||!n&&c||!i)return 1;if(!r&&!s&&!l&&e<t||l&&n&&i&&!r&&!s||a&&n&&i||!o&&i||!c)return-1}return 0};var Go=function(e,t,n){for(var r=-1,i=e.criteria,s=t.criteria,o=i.length,a=n.length;++r<o;){var c=Vo(i[r],s[r]);if(c)return r>=a?c:c*("desc"==n[r]?-1:1)}return e.index-t.index};var Jo=function(e,t,n){var r=-1;t=Dr(t.length?t:[fr],Le(vs));var i=$o(e,(function(e,n,i){return{criteria:Dr(t,(function(t){return t(e)})),index:++r,value:e}}));return Wo(i,(function(e,t){return Go(e,t,n)}))},Xo=wr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Sr(e,t[0],t[1])?t=[]:n>2&&Sr(t[0],t[1],t[2])&&(t=[t[0]]),Jo(e,Cs(t,1),[])}));const Qo=Array.prototype.slice,Yo=function(e,t){t||(t={}),this.preinitialize.apply(this,arguments),t.model&&(this.model=t.model),void 0!==t.comparator&&(this.comparator=t.comparator),this._reset(),this.initialize.apply(this,arguments),e&&this.reset(e,xr({silent:!0},t))};Yo.extend=Wr;const Ko={add:!0,remove:!0,merge:!0},Zo={add:!0,remove:!1},ea=function(e,t,n){n=Math.min(Math.max(n,0),e.length);const r=Array(e.length-n),i=t.length;let s;for(s=0;s<r.length;s++)r[s]=e[s+n];for(s=0;s<i;s++)e[s+n]=t[s];for(s=0;s<r.length;s++)e[s+i+n]=r[s]};Object.assign(Yo.prototype,hi,{model:Rs,preinitialize:function(){},initialize:function(){},toJSON:function(e){return this.map((function(t){return t.toJSON(e)}))},sync:function(e,t,n){return Qr(this)(e,t,n)},add:function(e,t){return this.set(e,xr({merge:!1},t,Zo))},remove:function(e,t){t=xr({},t);const n=!Array.isArray(e);e=n?[e]:e.slice();const r=this._removeModels(e,t);return!t.silent&&r.length&&(t.changes={added:[],merged:[],removed:r},this.trigger("update",this,t)),n?r[0]:r},set:function(e,t){if(null==e)return;(t=xr({},Ko,t)).parse&&!this._isModel(e)&&(e=this.parse(e,t)||[]);const n=!Array.isArray(e);e=n?[e]:e.slice();let r=t.at;null!=r&&(r=+r),r>this.length&&(r=this.length),r<0&&(r+=this.length+1);const i=[],s=[],o=[],a=[],c={},l=t.add,u=t.merge,d=t.remove;let h=!1;const f=this.comparator&&null==r&&!1!==t.sort,p=Zt(this.comparator)?this.comparator:null;let g,m;for(m=0;m<e.length;m++){g=e[m];const n=this.get(g);if(n){if(u&&g!==n){let e=this._isModel(g)?g.attributes:g;t.parse&&(e=n.parse(e,t)),n.set(e,t),o.push(n),f&&!h&&(h=n.hasChanged(p))}c[n.cid]||(c[n.cid]=!0,i.push(n)),e[m]=n}else l&&(g=e[m]=this._prepareModel(g,t),g&&(s.push(g),this._addReference(g,t),c[g.cid]=!0,i.push(g)))}if(d){for(m=0;m<this.length;m++)g=this.models[m],c[g.cid]||a.push(g);a.length&&this._removeModels(a,t)}let v=!1;const _=!f&&l&&d;if(i.length&&_?(v=this.length!==i.length||Uo(this.models,(e,t)=>e!==i[t]),this.models.length=0,ea(this.models,i,0),this.length=this.models.length):s.length&&(f&&(h=!0),ea(this.models,s,null==r?this.length:r),this.length=this.models.length),h&&this.sort({silent:!0}),!t.silent){for(m=0;m<s.length;m++)null!=r&&(t.index=r+m),g=s[m],g.trigger("add",g,this,t);(h||v)&&this.trigger("sort",this,t),(s.length||a.length||o.length)&&(t.changes={added:s,removed:a,merged:o},this.trigger("update",this,t))}return n?e[0]:e},clearStore:async function(e={}){await Promise.all(Array.from(this.models).map(t=>new Promise(n=>{t.destroy(Object.assign(e,{success:n,error:(e,t)=>{console.error(t),n()}}))}))),await this.browserStorage.clear(),this.reset()},reset:function(e,t){t=t?xi(t):{};for(let e=0;e<this.models.length;e++)this._removeReference(this.models[e],t);return t.previousModels=this.models,this._reset(),e=this.add(e,xr({silent:!0},t)),t.silent||this.trigger("reset",this,t),e},push:function(e,t){return this.add(e,xr({at:this.length},t))},pop:function(e){const t=this.at(this.length-1);return this.remove(t,e)},unshift:function(e,t){return this.add(e,xr({at:0},t))},shift:function(e){const t=this.at(0);return this.remove(t,e)},slice:function(){return Qo.apply(this.models,arguments)},filter:function(e,t){return this.models.filter(M(e)?e:t=>t.matches(e),t)},every:function(e){return jo(this.models.map(e=>e.attributes),e)},difference:function(e){return Eo(this.models,e)},max:function(){return Math.max.apply(Math,this.models)},min:function(){return Math.min.apply(Math,this.models)},drop:function(e=1){return this.models.slice(e)},some:function(e){return Uo(this.models.map(e=>e.attributes),e)},sortBy:function(e){return Xo(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},isEmpty:function(){return Zr(this.models)},keyBy:function(e){return Lo(this.models,e)},each:function(e,t){return this.forEach(e,t)},forEach:function(e,t){return this.models.forEach(e,t)},includes:function(e){return this.models.includes(e)},size:function(){return this.models.length},countBy:function(e){return go(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},groupBy:function(e){return Ro(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},indexOf:function(e){return Po(this.models,e)},findLastIndex:function(e,t){return Io(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e),t)},lastIndexOf:function(e){return qo(this.models,e)},findIndex:function(e){return Oo(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},last:function(){const e=null==this.models?0:this.models.length;return e?this.models[e-1]:void 0},head:function(){return this.models[0]},first:function(){return this.head()},map:function(e,t){return this.models.map(M(e)?e:t=>Zt(e)?t.get(e):t.matches(e),t)},reduce:function(e,t){return this.models.reduce(e,t||this.models[0])},reduceRight:function(e,t){return this.models.reduceRight(e,t||this.models[0])},toArray:function(){return Array.from(this.models)},get:function(e){if(null!=e)return this._byId[e]||this._byId[this.modelId(this._isModel(e)?e.attributes:e)]||e.cid&&this._byId[e.cid]},has:function(e){return null!=this.get(e)},at:function(e){return e<0&&(e+=this.length),this.models[e]},where:function(e,t){return this[t?"find":"filter"](e)},findWhere:function(e){return this.where(e,!0)},find:function(e,t){const n=M(e)?e:t=>t.matches(e);return this.models.find(n,t)},sort:function(e){let t=this.comparator;if(!t)throw new Error("Cannot sort a set without a comparator");e||(e={});const n=t.length;return M(t)&&(t=t.bind(this)),1===n||Zt(t)?this.models=this.sortBy(t):this.models.sort(t),e.silent||this.trigger("sort",this,e),this},pluck:function(e){return this.map(e+"")},fetch:function(e){const t=(e=xr({parse:!0},e)).success,n=this,r=e.promise&&Vr();return e.success=function(i){const s=e.reset?"reset":"set";n[s](i,e),t&&t.call(e.context,n,i,e),r&&r.resolve(),n.trigger("sync",n,i,e)},Jr(this,e),r||this.sync("read",this,e)},create:function(e,t){const n=(t=t?xi(t):{}).wait,r=t.promise,i=r&&Vr();if(!(e=this._prepareModel(e,t)))return!1;n||this.add(e,t);const s=this,o=t.success,a=t.error;return t.success=function(e,t,a){n&&s.add(e,a),o&&o.call(a.context,e,t,a),r&&i.resolve(e)},t.error=function(e,t,n){a&&a.call(n.context,e,t,n),r&&i.reject(t)},e.save(null,Object.assign(t,{promise:!1})),r?i:e},parse:function(e,t){return e},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(e){return e[this.model.prototype.idAttribute||"id"]},values:function(){return new na(this,ra)},keys:function(){return new na(this,ia)},entries:function(){return new na(this,sa)},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(e,t){if(this._isModel(e))return e.collection||(e.collection=this),e;(t=t?xi(t):{}).collection=this;const n=new this.model(e,t);return n.validationError?(this.trigger("invalid",this,n.validationError,t),!1):n},_removeModels:function(e,t){const n=[];for(let r=0;r<e.length;r++){const i=this.get(e[r]);if(!i)continue;const s=this.indexOf(i);this.models.splice(s,1),this.length--,delete this._byId[i.cid];const o=this.modelId(i.attributes);null!=o&&delete this._byId[o],t.silent||(t.index=s,i.trigger("remove",i,this,t)),n.push(i),this._removeReference(i,t)}return n},_isModel:function(e){return e instanceof Rs},_addReference:function(e,t){this._byId[e.cid]=e;const n=this.modelId(e.attributes);null!=n&&(this._byId[n]=e),e.on("all",this._onModelEvent,this)},_removeReference:function(e,t){delete this._byId[e.cid];const n=this.modelId(e.attributes);null!=n&&delete this._byId[n],this===e.collection&&delete e.collection,e.off("all",this._onModelEvent,this)},_onModelEvent:function(e,t,n,r){if(t){if(("add"===e||"remove"===e)&&n!==this)return;if("destroy"===e&&this.remove(t,r),"change"===e){const e=this.modelId(t.previousAttributes()),n=this.modelId(t.attributes);e!==n&&(null!=e&&delete this._byId[e],null!=n&&(this._byId[n]=t))}}this.trigger.apply(this,arguments)}});const ta="function"==typeof Symbol&&Symbol.iterator;ta&&(Yo.prototype[ta]=Yo.prototype.values);const na=function(e,t){this._collection=e,this._kind=t,this._index=0},ra=1,ia=2,sa=3;ta&&(na.prototype[ta]=function(){return this}),na.prototype.next=function(){if(this._collection){if(this._index<this._collection.length){const e=this._collection.at(this._index);let t;if(this._index++,this._kind===ra)t=e;else{const n=this._collection.modelId(e.attributes);t=this._kind===ia?n:[n,e]}return{value:t,done:!1}}this._collection=void 0}return{value:void 0,done:!0}};var oa=n(33);class aa extends dr.e.Connection{constructor(e,t){super(e,t),this.debouncedReconnect=Object(oa.debounce)(this.reconnect,2e3)}static generateResource(){return"/converse.js-".concat(Math.floor(139749528*Math.random()).toString())}async bind(){await qc.trigger("beforeResourceBinding",{synchronous:!0}),super.bind()}async onDomainDiscovered(e){const t=await e.text(),n=(new window.DOMParser).parseFromString(t,"text/xml").firstElementChild;if("XRD"!=n.nodeName||"http://docs.oasis-open.org/ns/xri/xrd-1.0"!=n.namespaceURI)return Pn.warn("Could not discover XEP-0156 connection methods");const r=ur()('Link[rel="urn:xmpp:alt-connections:xbosh"]',n),i=ur()('Link[rel="urn:xmpp:alt-connections:websocket"]',n),s=r.map(e=>e.getAttribute("href")),o=i.map(e=>e.getAttribute("href"));0===s.length&&0===o.length?Pn.warn("Neither BOSH nor WebSocket connection methods have been specified with XEP-0156."):(qc.settings.set("websocket_url",o.pop()),qc.settings.set("bosh_service_url",s.pop()),this.service=qc.settings.get("websocket_url")||qc.settings.get("bosh_service_url"))}async discoverConnectionMethods(e){const t={mode:"cors",headers:{Accept:"application/xrd+xml, text/xml"}},n="https://".concat(e,"/.well-known/host-meta");let r;try{r=await fetch(n,t)}catch(e){return Pn.error("Failed to discover alternative connection methods at ".concat(n)),void Pn.error(e)}r.status>=200&&r.status<400?await this.onDomainDiscovered(r):Pn.warn("Could not discover XEP-0156 connection methods")}async connect(e,t,n){if(qc.settings.get("discover_connection_methods")){const t=dr.e.getDomainFromJid(e);await this.discoverConnectionMethods(t)}super.connect(e,t,n||this.onConnectStatusChanged,59)}async reconnect(){const{__:e}=Lc;return Pn.debug("RECONNECTING: the connection has dropped, attempting to reconnect."),this.setConnectionStatus(dr.e.Status.RECONNECTING,e("The connection has dropped, attempting to reconnect.")),qc.trigger("will-reconnect"),this.reconnecting=!0,await $c(),qc.user.login()}async onConnected(e){delete this.reconnecting,this.flush(),await Lc.setUserJID(this.jid),await qc.trigger("afterResourceBinding",e,{synchronous:!0}),e?qc.trigger("reconnected"):qc.trigger("connected")}setDisconnectionCause(e,t,n){void 0===e?(delete this.disconnection_cause,delete this.disconnection_reason):(void 0===this.disconnection_cause||n)&&(this.disconnection_cause=e,this.disconnection_reason=t)}setConnectionStatus(e,t){this.status=e,Lc.connfeedback.set({connection_status:e,message:t})}async finishDisconnection(){Pn.debug("DISCONNECTED"),delete this.reconnecting,this.reset(),$c(),await Vc(),delete Lc.connection,qc.trigger("disconnected")}onDisconnected(){if(!qc.settings.get("auto_reconnect"))return this.finishDisconnection();{const e=this.disconnection_reason;if(this.disconnection_cause===dr.e.Status.AUTHFAIL)return qc.settings.get("credentials_url")||qc.settings.get("authentication")===Lc.ANONYMOUS?qc.connection.reconnect():this.finishDisconnection();if(this.disconnection_cause===Lc.LOGOUT||e===dr.e.ErrorCondition.NO_AUTH_MECH||"host-unknown"===e||"remote-connection-failed"===e)return this.finishDisconnection();qc.connection.reconnect()}}onConnectStatusChanged(e,t){const{__:n}=Lc;var r;if(Pn.debug("Status changed to: ".concat(Lc.CONNECTION_STATUS[e])),e===dr.e.Status.ATTACHFAIL)this.setConnectionStatus(e),null===(r=this.worker_attach_promise)||void 0===r||r.resolve(!1);else if(e===dr.e.Status.CONNECTED||e===dr.e.Status.ATTACHED){var i,s;if((null===(i=this.worker_attach_promise)||void 0===i?void 0:i.isResolved)&&this.status===dr.e.Status.ATTACHED)return;this.setConnectionStatus(e),null===(s=this.worker_attach_promise)||void 0===s||s.resolve(!0),Lc.send_initial_presence=!0,this.setDisconnectionCause(),this.reconnecting?(Pn.debug(e===dr.e.Status.CONNECTED?"Reconnected":"Reattached"),this.onConnected(!0)):(Pn.debug(e===dr.e.Status.CONNECTED?"Connected":"Attached"),this.restored&&(Lc.send_initial_presence=!1),this.onConnected())}else if(e===dr.e.Status.DISCONNECTED)this.setDisconnectionCause(e,t),this.onDisconnected();else if(e===dr.e.Status.BINDREQUIRED)this.bind();else if(e===dr.e.Status.ERROR)this.setConnectionStatus(e,n("An error occurred while connecting to the chat server."));else if(e===dr.e.Status.CONNECTING)this.setConnectionStatus(e);else if(e===dr.e.Status.AUTHENTICATING)this.setConnectionStatus(e);else if(e===dr.e.Status.AUTHFAIL)t||(t=n("Your XMPP address and/or password is incorrect. Please try again.")),this.setConnectionStatus(e,t),this.setDisconnectionCause(e,t,!0),this.onDisconnected();else if(e===dr.e.Status.CONNFAIL){var o;let r=t;"host-unknown"===t||"remote-connection-failed"==t?r=n("Sorry, we could not connect to the XMPP host with domain: %1$s",'"'.concat(dr.e.getDomainFromJid(this.jid),'"')):void 0!==t&&t===(null===dr.e||void 0===dr.e||null===(o=dr.e.ErrorCondition)||void 0===o?void 0:o.NO_AUTH_MECH)&&(r=n("The XMPP server did not offer a supported authentication mechanism")),this.setConnectionStatus(e,r),this.setDisconnectionCause(e,t)}else e===dr.e.Status.DISCONNECTING&&this.setDisconnectionCause(e,t)}isType(e){return"websocket"===e.toLowerCase()?this._proto instanceof dr.e.Websocket:"bosh"===e.toLowerCase()?dr.e.Bosh&&this._proto instanceof dr.e.Bosh:void 0}hasResumed(){var e;return(null===(e=qc.settings.get("connection_options"))||void 0===e?void 0:e.worker)||this.isType("bosh")?Lc.connfeedback.get("connection_status")===dr.e.Status.ATTACHED:!this.do_bind}restoreWorkerSession(){return this.attach(this.onConnectStatusChanged),this.worker_attach_promise=qs.getResolveablePromise(),this.worker_attach_promise}}class ca extends aa{constructor(e,t){super(e,t),this.sent_stanzas=[],this.IQ_stanzas=[],this.IQ_ids=[],this.features=dr.e.xmlHtmlNode('<stream:features xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"><ver xmlns="urn:xmpp:features:rosterver"/><csi xmlns="urn:xmpp:csi:0"/><this xmlns="http://jabber.org/protocol/caps" ver="UwBpfJpEt3IoLYfWma/o/p3FFRo=" hash="sha-1" node="http://prosody.im"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><required/></bind><sm xmlns=\'urn:xmpp:sm:3\'/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"><optional/></session></stream:features>').firstChild,this._proto._processRequest=()=>{},this._proto._disconnect=()=>this._onDisconnectTimeout(),this._proto._onDisconnectTimeout=()=>{},this._proto._connect=()=>{this.connected=!0,this.mock=!0,this.jid="romeo@montague.lit/orchard",this._changeConnectStatus(dr.e.Status.BINDREQUIRED)}}_processRequest(){}sendIQ(e,t,n){Object(oa.isElement)(e)||(e=e.nodeTree),this.IQ_stanzas.push(e);const r=super.sendIQ(e,t,n);return this.IQ_ids.push(r),r}send(e){return Object(oa.isElement)(e)?this.sent_stanzas.push(e):this.sent_stanzas.push(e.nodeTree),super.send(e)}async bind(){await qc.trigger("beforeResourceBinding",{synchronous:!0}),this.authenticated=!0,Lc.no_connection_on_bind||this._changeConnectStatus(dr.e.Status.CONNECTED)}} + */$o.getJIDFromURI=function(e){return e.startsWith("xmpp:")&&e.endsWith("?join")?e.replace(/^xmpp:/,"").replace(/\?join$/,""):e},$o.toStanza=function(e){const t=Wo.parseFromString(e,"text/xml");if(t.getElementsByTagNameNS(Go,"parsererror").length)throw new Error("Parser Error: ".concat(e));return t.firstElementChild},$o.getLongestSubstring=function(e,t){return t.reduce((function(t,n){return e.startsWith(n)&&n.length>t.length?n:t}),"")},$o.prefixMentions=function(e){let t=e.get("message");return(e.get("references")||[]).sort((e,t)=>t.begin-e.begin).forEach(e=>{t="".concat(t.slice(0,e.begin),"@").concat(t.slice(e.begin))}),t},$o.isValidJID=function(e){return"string"==typeof e&&(2===Ho(e.split("@")).length&&!e.startsWith("@")&&!e.endsWith("@"))},$o.isValidMUCJID=function(e){return!e.startsWith("@")&&!e.endsWith("@")},$o.isSameBareJID=function(e,t){return"string"==typeof e&&"string"==typeof t&&Uo.getBareJidFromJid(e).toLowerCase()===Uo.getBareJidFromJid(t).toLowerCase()},$o.isSameDomain=function(e,t){return"string"==typeof e&&"string"==typeof t&&Uo.getDomainFromJid(e).toLowerCase()===Uo.getDomainFromJid(t).toLowerCase()},$o.isNewMessage=function(e){return e instanceof Element?!(mr()('result[xmlns="'.concat(Uo.NS.MAM,'"]'),e).length&&mr()('delay[xmlns="'.concat(Uo.NS.DELAY,'"]'),e).length):(e instanceof qo&&(e=e.attributes),!(e.is_delayed&&e.is_archived))},$o.shouldCreateMessage=function(e){return e.retracted||!$o.isEmptyMessage(e)},$o.shouldCreateGroupchatMessage=function(e){return e.nick&&($o.shouldCreateMessage(e)||e.is_tombstone)},$o.isEmptyMessage=function(e){return e instanceof qo&&(e=e.attributes),!(e.oob_url||e.file||e.is_encrypted&&e.plaintext||e.message)},$o.isOnlyChatStateNotification=function(e){return e instanceof Element?null===e.querySelector("body")&&(null!==e.querySelector("active")||null!==e.querySelector("composing")||null!==e.querySelector("inactive")||null!==e.querySelector("paused")||null!==e.querySelector("gone")):(e instanceof qo&&(e=e.attributes),e.chat_state&&$o.isEmptyMessage(e))},$o.isOnlyMessageDeliveryReceipt=function(e){return e instanceof Element?null===e.querySelector("body")&&null!==e.querySelector("received"):(e instanceof qo&&(e=e.attributes),e.received&&$o.isEmptyMessage(e))},$o.isChatRoom=function(e){return e&&"chatroom"===e.get("type")},$o.isErrorObject=function(e){return e instanceof Error},$o.isErrorStanza=function(e){return!!Dn(e)&&"error"===e.getAttribute("type")},$o.isForbiddenError=function(e){return!!Dn(e)&&mr()('error[type="auth"] forbidden[xmlns="'.concat(Uo.NS.STANZAS,'"]'),e).length>0},$o.isServiceUnavailableError=function(e){return!!Dn(e)&&mr()('error[type="cancel"] service-unavailable[xmlns="'.concat(Uo.NS.STANZAS,'"]'),e).length>0},$o.merge=function e(t,n){for(const r in n)N(t[r])?e(t[r],n[r]):t[r]=n[r]},$o.getOuterWidth=function(e,t=!1){let n=e.offsetWidth;if(!t)return n;const r=window.getComputedStyle(e);return n+=parseInt(r.marginLeft?r.marginLeft:0,10)+parseInt(r.marginRight?r.marginRight:0,10),n},$o.stringToElement=function(e){var t=document.createElement("div");return t.innerHTML=e,t.firstElementChild},$o.matchesSelector=function(e,t){const n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return!!n&&n.call(e,t)},$o.queryChildren=function(e,t){return Array.from(e.childNodes).filter(e=>$o.matchesSelector(e,t))},$o.contains=function(e,t){const n=(e,n)=>e.get(n).toLowerCase().includes(t.toLowerCase());return function(t){if("object"==typeof e)return Object.keys(e).reduce((e,r)=>e||n(t,r),!1);if("string"==typeof e)return n(t,e);throw new TypeError("contains: wrong attribute type. Must be string or array.")}},$o.isOfType=function(e,t){return t.get("type")==e},$o.isInstance=function(e,t){return t instanceof e},$o.getAttribute=function(e,t){return t.get(e)},$o.contains.not=function(e,t){return function(n){return!$o.contains(e,t)(n)}},$o.rootContains=function(e,t){return e!==document||e.contains?e.contains?e.contains(t):window.HTMLElement.prototype.contains.call(e,t):document.head.contains(t)||document.body.contains(t)},$o.createFragmentFromText=function(e){var t,n=document.createDocumentFragment(),r=document.createElement("body");for(r.innerHTML=e;t=r.firstChild;)n.appendChild(t);return n},$o.isPersistableModel=function(e){return e.collection&&e.collection.browserStorage},$o.getResolveablePromise=function(){const e={isResolved:!1,isPending:!0,isRejected:!1},t=new Promise((t,n)=>{e.resolve=t,e.reject=n});return Object.assign(t,e),t.then((function(e){return t.isResolved=!0,t.isPending=!1,t.isRejected=!1,e}),(function(e){throw t.isResolved=!1,t.isPending=!1,t.isRejected=!0,e})),t},$o.interpolate=function(e,t){return e.replace(/{{{([^{}]*)}}}/g,(e,n)=>{var r=t[n];return"string"==typeof r||"number"==typeof r?r:e})},$o.onMultipleEvents=function(e=[],t){let n=[];function r(r){n.push(r),e.length===n.length&&(t(n),n=[])}e.forEach(e=>e.object.on(e.event,r))},$o.safeSave=function(e,t,n){$o.isPersistableModel(e)?e.save(t,n):e.set(t,n)},$o.siblingIndex=function(e){for(var t=0;e=e.previousElementSibling;t++);return t},$o.getCurrentWord=function(e,t,n){t||(t=e.selectionEnd||void 0);let[r]=e.value.slice(0,t).split(/\s/).slice(-1);return n&&([r]=r.split(n).slice(-1)),r},$o.isMentionBoundary=e=>"@"!==e&&RegExp("(\\p{Z}|\\p{P})","u").test(e),$o.replaceCurrentWord=function(e,t){const n=e.selectionEnd||void 0,r=Co(e.value.slice(0,n).split(/\s/)),i=e.value,o=$o.isMentionBoundary(r[0])?r[0]:"";e.value=i.slice(0,n-r.length)+o+"".concat(t," ")+i.slice(n);const s=n-r.length+t.length+1;e.selectionEnd=o?s+1:s},$o.triggerEvent=function(e,t,n="Event",r=!0,i=!0){const o=document.createEvent(n);o.initEvent(t,r,i),e.dispatchEvent(o)},$o.getSelectValues=function(e){const t=[],n=e&&e.options;for(var r=0,i=n.length;r<i;r++){const e=n[r];e.selected&&t.push(e.value||e.text)}return t},$o.formatFingerprint=function(e){e=e.replace(/^05/,"");for(let t=1;t<8;t++){const n=8*t+t-1;e=e.slice(0,n)+" "+e.slice(n)}return e},$o.appendArrayBuffer=function(e,t){const n=new Uint8Array(e.byteLength+t.byteLength);return n.set(new Uint8Array(e),0),n.set(new Uint8Array(t),e.byteLength),n.buffer},$o.arrayBufferToHex=function(e){return Array.prototype.map.call(new Uint8Array(e),e=>("00"+e.toString(16)).slice(-2)).join("")},$o.arrayBufferToString=function(e){return new TextDecoder("utf-8").decode(e)},$o.stringToArrayBuffer=function(e){return new TextEncoder("utf-8").encode(e).buffer},$o.arrayBufferToBase64=function(e){return btoa(new Uint8Array(e).reduce((e,t)=>e+String.fromCharCode(t),""))},$o.base64ToArrayBuffer=function(e){const t=window.atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r.buffer},$o.getRandomInt=function(e){return Math.floor(Math.random()*Math.floor(e))},$o.placeCaretAtEnd=function(e){e!==document.activeElement&&e.focus();const t=2*e.value.length;setTimeout(()=>e.setSelectionRange(t,t),1),this.scrollTop=999999},$o.getUniqueId=function(e){const t="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return"string"==typeof e||"number"==typeof e?t+":"+e:t},$o.waitUntil=function(e,t=300,n=3){try{const t=e();if(t)return Promise.resolve(t)}catch(e){return Promise.reject(e)}const r=$o.getResolveablePromise(),i=new Error;const o=setInterval((function(){try{const t=e();t&&(Vo(s,o),r.resolve(t))}catch(e){Vo(s,o),r.reject(e)}}),n);const s=setTimeout((function(){Vo(s,o);const e="Wait until promise timed out: \n\n".concat(i.stack);console.trace(),zn.error(e),r.reject(new Error(e))}),t);return r};var Jo=$o;const Xo=vr.f.Strophe,Qo=vr.f.$msg,{NS:Yo}=Xo;function Ko(e){const t=mr()('spoiler[xmlns="'.concat(Xo.NS.SPOILER,'"]'),e).pop();return{is_spoiler:!!t,spoiler_hint:null==t?void 0:t.textContent}}function Zo(e){const t=mr()('x[xmlns="'.concat(Xo.NS.OUTOFBAND,'"]'),e).pop();var n,r;return t?{oob_url:null===(n=t.querySelector("url"))||void 0===n?void 0:n.textContent,oob_desc:null===(r=t.querySelector("desc"))||void 0===r?void 0:r.textContent}:{}}function es(e,t){const n=mr()('replace[xmlns="'.concat(Xo.NS.MESSAGE_CORRECT,'"]'),e).pop();if(n){const e=n.getAttribute("id"),r=e;if(e){const n=mr()('delay[xmlns="'.concat(Xo.NS.DELAY,'"]'),t).pop();return{msgid:r,replace_id:e,edited:n?En()(n.getAttribute("stamp")).toISOString():(new Date).toISOString()}}}return{}}function ts(e,t){var n;const r=mr()('encrypted[xmlns="'.concat(Xo.NS.OMEMO,'"]'),e).pop(),i={is_encrypted:!!r};if(!r||Vc.settings.get("clear_cache_on_logout"))return i;const o=r.querySelector("header");i.encrypted={device_id:o.getAttribute("sid")};const s=null===(n=t.omemo_store)||void 0===n?void 0:n.get("device_id"),a=s&&mr()('key[rid="'.concat(s,'"]'),r).pop();var c;a&&Object.assign(i.encrypted,{iv:o.querySelector("iv").textContent,key:a.textContent,payload:(null===(c=r.querySelector("payload"))||void 0===c?void 0:c.textContent)||null,prekey:["true","1"].includes(a.getAttribute("prekey"))});return i}function ns(e,t){return"me"!==t.sender&&!t.is_carbon&&!t.is_archived&&mr()('request[xmlns="'.concat(Xo.NS.RECEIPTS,'"]'),e).length}function rs(e){const t=mr()('received[xmlns="'.concat(Xo.NS.RECEIPTS,'"]'),e).pop();return null==t?void 0:t.getAttribute("id")}function is(e){var t;return null===(t=mr()('\n composing[xmlns="'.concat(Yo.CHATSTATES,'"],\n paused[xmlns="').concat(Yo.CHATSTATES,'"],\n inactive[xmlns="').concat(Yo.CHATSTATES,'"],\n active[xmlns="').concat(Yo.CHATSTATES,'"],\n gone[xmlns="').concat(Yo.CHATSTATES,'"]'),e).pop())||void 0===t?void 0:t.nodeName}function os(e){const t=Xo.NS.CARBONS;return mr()('message > received[xmlns="'.concat(t,'"]'),e).length>0||mr()('message > sent[xmlns="'.concat(t,'"]'),e).length>0}function ss(e,t){const n={},r=mr()('stanza-id[xmlns="'.concat(Xo.NS.SID,'"]'),e).reduce((e,t)=>(e["stanza_id ".concat(t.getAttribute("by"))]=t.getAttribute("id"),e),{});Object.assign(n,r);const i=mr()('message > result[xmlns="'.concat(Xo.NS.MAM,'"]'),t).pop();if(i){const e=t.getAttribute("from")||Uc.bare_jid;n["stanza_id ".concat(e)]=i.getAttribute("id")}const o=mr()('origin-id[xmlns="'.concat(Xo.NS.SID,'"]'),e).pop();return o&&(n.origin_id=o.getAttribute("id")),n}function as(e,t){const n=mr()('> apply-to[xmlns="'.concat(Xo.NS.FASTEN,'"]'),e).pop();if(n){const e=n.getAttribute("id");if(mr()('> retract[xmlns="'.concat(Xo.NS.RETRACT,'"]'),n).pop()){const n=mr()('delay[xmlns="'.concat(Xo.NS.DELAY,'"]'),t).pop();return{editable:!1,retracted:n?En()(n.getAttribute("stamp")).toISOString():(new Date).toISOString(),retracted_id:e}}}else{const t=mr()('> retracted[xmlns="'.concat(Xo.NS.RETRACT,'"]'),e).pop();if(t)return{editable:!1,is_tombstone:!0,retracted:t.getAttribute("stamp")}}return{}}function cs(e){var t;const n=null===(t=e.querySelector("body"))||void 0===t?void 0:t.textContent;return mr()('reference[xmlns="'.concat(Xo.NS.REFERENCE,'"]'),e).map(e=>{const t=e.getAttribute("begin"),r=e.getAttribute("end");return{begin:t,end:r,type:e.getAttribute("type"),value:n.slice(t,r),uri:e.getAttribute("uri")}})}function ls(e,t){Vc.send(Qo({to:e.getAttribute("from"),type:"error",id:e.getAttribute("id")}).c("error",{type:"cancel"}).c("not-allowed",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).up().c("text",{xmlns:"urn:ietf:params:xml:ns:xmpp-stanzas"}).t(t)),zn.warn("Rejecting message stanza with the following reason: ".concat(t)),zn.warn(e)}function us(e){if("error"===e.getAttribute("type")){const t=e.querySelector("error"),n=mr()('text[xmlns="'.concat(Xo.NS.STANZAS,'"]'),t).pop();return{is_error:!0,error_text:null==n?void 0:n.textContent,error_type:t.getAttribute("type"),error_condition:t.firstElementChild.nodeName}}return{}}class ds extends Error{constructor(e,t){super(e,t),this.name="StanzaParseError",this.stanza=t}}function hs(e){if(mr()('message > forwarded[xmlns="'.concat(Xo.NS.FORWARD,'"]'),e).length){ls(e,"Forwarded messages not part of an encapsulating protocol are not supported");const t=e.getAttribute("from");return new ds("Ignoring unencapsulated forwarded message from ".concat(t),e)}}const fs={isHeadline:e=>"headline"===e.getAttribute("type"),isServerMessage(e){const t=e.getAttribute("from");return!("error"===e.getAttribute("type")||!t||t.includes("@"))},getChatMarker:e=>mr()('\n acknowledged[xmlns="'.concat(Xo.NS.MARKERS,'"],\n displayed[xmlns="').concat(Xo.NS.MARKERS,'"],\n received[xmlns="').concat(Xo.NS.MARKERS,'"]'),e).pop(),isArchived:e=>!!mr()('message > result[xmlns="'.concat(Xo.NS.MAM,'"]'),e).pop(),getAttributes:e=>e.getAttributeNames().reduce((t,n)=>(t[n]=Xo.xmlunescape(e.getAttribute(n)),t),{}),async parseMessage(e,t){var n,r,i,o,s,a;const c=hs(e);if(c)return c;let l=e.getAttribute("to");const u=Xo.getResourceFromJid(l);if(Vc.settings.get("filter_by_resource")&&u&&u!==t.resource)return new ds("Ignoring incoming message intended for a different resource: ".concat(l),e);const d=e;let h=e.getAttribute("from")||t.bare_jid;if(os(e)){if(h!==t.bare_jid)return ls(e,"Rejecting carbon from invalid JID"),new ds("Rejecting carbon from invalid JID ".concat(l),e);{const t='[xmlns="'.concat(Xo.NS.CARBONS,'"] > forwarded[xmlns="').concat(Xo.NS.FORWARD,'"] > message');l=(e=mr()(t,e).pop()).getAttribute("to"),h=e.getAttribute("from")}}const f=fs.isArchived(e);if(f){if(h!==t.bare_jid)return new ds("Invalid Stanza: alleged MAM message from ".concat(e.getAttribute("from")),e);{const t='[xmlns="'.concat(Xo.NS.MAM,'"] > forwarded[xmlns="').concat(Xo.NS.FORWARD,'"] > message');l=(e=mr()(t,e).pop()).getAttribute("to"),h=e.getAttribute("from")}}const p=Xo.getBareJidFromJid(h),g=p===t.bare_jid;if(g&&null===l)return new ds("Don't know how to handle message stanza without 'to' attribute. ".concat(e.outerHTML),e);const m=fs.isHeadline(e),v=fs.isServerMessage(e);let _,b;if(!m&&!v&&(b=g?Xo.getBareJidFromJid(l):p,_=await Vc.contacts.get(b),void 0===_&&!Vc.settings.get("allow_non_roster_messaging")))return zn.error(e),new ds("Blocking messaging with a JID not in our roster because allow_non_roster_messaging is false.",e);const y=mr()('delay[xmlns="'.concat(Xo.NS.DELAY,'"]'),d).pop(),w=fs.getChatMarker(e),S=(new Date).toISOString();let x=Object.assign({contact_jid:b,is_archived:f,is_headline:m,is_server_message:v,body:null===(n=e.querySelector("body"))||void 0===n||null===(r=n.textContent)||void 0===r?void 0:r.trim(),chat_state:is(e),from:Xo.getBareJidFromJid(e.getAttribute("from")),is_carbon:os(d),is_delayed:!!y,is_markable:!!mr()('markable[xmlns="'.concat(Xo.NS.MARKERS,'"]'),e).length,is_marker:!!w,is_unstyled:!!mr()('unstyled[xmlns="'.concat(Xo.NS.STYLING,'"]'),e).length,marker_id:w&&w.getAttribute("id"),msgid:e.getAttribute("id")||d.getAttribute("id"),nick:null===(i=_)||void 0===i||null===(o=i.attributes)||void 0===o?void 0:o.nickname,receipt_id:rs(e),received:(new Date).toISOString(),references:cs(e),sender:g?"me":"them",subject:null===(s=e.querySelector("subject"))||void 0===s?void 0:s.textContent,thread:null===(a=e.querySelector("thread"))||void 0===a?void 0:a.textContent,time:y?En()(y.getAttribute("stamp")).toISOString():S,to:e.getAttribute("to"),type:e.getAttribute("type")},us(e),Zo(e),Ko(e),es(e,d),ss(e,d),as(e,d),ts(e,t));if(x.is_archived){const n=d.getAttribute("from");if(n&&n!==t.bare_jid)return new ds("Invalid Stanza: Forged MAM message from ".concat(n),e)}return await Vc.emojis.initialize(),x=Object.assign({message:x.body||x.error,is_only_emojis:!!x.body&&Jo.isOnlyEmojis(x.body),is_valid_receipt_request:ns(e,x)},x),x.id=x.origin_id||x["stanza_id ".concat(x.from)]||Jo.getUniqueId(),Vc.hook("parseMessage",e,x)},async parseMUCMessage(e,t,n){var r,i,o,s,a;const c=hs(e);if(c)return c;const l='[xmlns="'.concat(Yo.MAM,'"] > forwarded[xmlns="').concat(Yo.FORWARD,'"] > message'),u=e;if(e=mr()(l,e).pop()||e,mr()('message > forwarded[xmlns="'.concat(Xo.NS.FORWARD,'"]'),e).length)return new ds("Invalid Stanza: Forged MAM groupchat message from ".concat(e.getAttribute("from")),e);const d=mr()('delay[xmlns="'.concat(Xo.NS.DELAY,'"]'),u).pop(),h=e.getAttribute("from"),f=Xo.unescapeNode(Xo.getResourceFromJid(h)),p=fs.getChatMarker(e),g=(new Date).toISOString();let m=Object.assign({from:h,nick:f,body:null===(r=e.querySelector("body"))||void 0===r||null===(i=r.textContent)||void 0===i?void 0:i.trim(),chat_state:is(e),from_muc:Xo.getBareJidFromJid(h),from_real_jid:null===(o=t.occupants.findOccupant({nick:f}))||void 0===o?void 0:o.get("jid"),is_archived:fs.isArchived(u),is_carbon:os(u),is_delayed:!!d,is_headline:fs.isHeadline(e),is_markable:!!mr()('markable[xmlns="'.concat(Xo.NS.MARKERS,'"]'),e).length,is_marker:!!p,is_unstyled:!!mr()('unstyled[xmlns="'.concat(Xo.NS.STYLING,'"]'),e).length,marker_id:p&&p.getAttribute("id"),msgid:e.getAttribute("id")||u.getAttribute("id"),receipt_id:rs(e),received:(new Date).toISOString(),references:cs(e),subject:null===(s=e.querySelector("subject"))||void 0===s?void 0:s.textContent,thread:null===(a=e.querySelector("thread"))||void 0===a?void 0:a.textContent,time:d?En()(d.getAttribute("stamp")).toISOString():g,to:e.getAttribute("to"),type:e.getAttribute("type")},us(e),Zo(e),Ko(e),es(e,u),ss(e,u),as(e,u),function(e){const t=mr()('apply-to[xmlns="'.concat(Xo.NS.FASTEN,'"]'),e).pop();if(t){const e=t.getAttribute("id"),r=mr()('moderated[xmlns="'.concat(Xo.NS.MODERATE,'"]'),t).pop();if(r){var n;if(mr()('retract[xmlns="'.concat(Xo.NS.RETRACT,'"]'),r).pop())return{editable:!1,moderated:"retracted",moderated_by:r.getAttribute("by"),moderated_id:e,moderation_reason:null===(n=r.querySelector("reason"))||void 0===n?void 0:n.textContent}}}else{const t=mr()('> moderated[xmlns="'.concat(Xo.NS.MODERATE,'"]'),e).pop();if(t){var r;if(mr()('retracted[xmlns="'.concat(Xo.NS.RETRACT,'"]'),t).pop())return{editable:!1,is_tombstone:!0,moderated_by:t.getAttribute("by"),retracted:t.getAttribute("stamp"),moderation_reason:null===(r=t.querySelector("reason"))||void 0===r?void 0:r.textContent}}}return{}}(e),ts(e,n));return await Vc.emojis.initialize(),m=Object.assign({is_only_emojis:!!m.body&&Jo.isOnlyEmojis(m.body),is_valid_receipt_request:ns(e,m),message:m.body||m.error,sender:m.nick===t.get("nick")?"me":"them"},m),m.is_archived&&u.getAttribute("from")!==m.from_muc?new ds("Invalid Stanza: Forged MAM message from ".concat(u.getAttribute("from")),e):m.is_archived&&u.getAttribute("from")!==t.get("jid")?new ds("Invalid Stanza: Forged MAM groupchat message from ".concat(e.getAttribute("from")),e):m.is_carbon?new ds("Invalid Stanza: MUC messages SHOULD NOT be XEP-0280 carbon copied",e):(m.id=m.origin_id||m["stanza_id ".concat(m.from_muc||m.from)]||Jo.getUniqueId(),Vc.hook("parseMUCMessage",e,m))},parseMUCPresence(e){const t=e.getAttribute("from"),n=e.getAttribute("type"),r={from:t,nick:Xo.getResourceFromJid(t),type:n,states:[],hats:[],show:"unavailable"!==n?"online":"offline"};return Array.from(e.children).forEach(e=>{if(e.matches("status"))r.status=e.textContent||null;else if(e.matches("show"))r.show=e.textContent||"online";else if(e.matches("x")&&e.getAttribute("xmlns")===Xo.NS.MUC_USER)Array.from(e.children).forEach(e=>{"item"===e.nodeName?(r.affiliation=e.getAttribute("affiliation"),r.role=e.getAttribute("role"),r.jid=e.getAttribute("jid"),r.nick=e.getAttribute("nick")||r.nick):"status"==e.nodeName&&e.getAttribute("code")&&r.states.push(e.getAttribute("code"))});else if(e.matches("x")&&e.getAttribute("xmlns")===Xo.NS.VCARDUPDATE){var t;r.image_hash=null===(t=e.querySelector("photo"))||void 0===t?void 0:t.textContent}else e.matches("hats")&&e.getAttribute("xmlns")===Xo.NS.MUC_HATS&&(r.hats=Array.from(e.children).map(e=>e.matches("hat")&&{title:e.getAttribute("title"),uri:e.getAttribute("uri")}))}),r}};var ps=fs;var gs=function(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i<o;){var s=e[i];t(r,s,n(s),e)}return r};var ms=function(e,t){return function(n,r){if(null==n)return n;if(!Xe(n))return e(n,r);for(var i=n.length,o=t?i:-1,s=Object(n);(t?o--:++o<i)&&!1!==r(s[o],o,s););return n}},vs=ms(qi);var _s=function(e,t,n,r){return vs(e,(function(e,i,o){t(r,e,n(e),o)})),r};var bs=function(e,t){return function(n,r){var i=ke(n)?gs:_s,o=t?t():{};return i(n,e,Eo(r,2),o)}},ys=Object.prototype.hasOwnProperty,ws=bs((function(e,t,n){ys.call(e,n)?++e[n]:be(e,n,1)}));var Ss=function(e,t,n,r){for(var i=e.length,o=n+(r?1:-1);r?o--:++o<i;)if(t(e[o],o,e))return o;return-1};var xs=function(e){return e!=e};var Es=function(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1};var As=function(e,t,n){return t==t?Es(e,t,n):Ss(e,xs,n)};var Cs=function(e,t){return!!(null==e?0:e.length)&&As(e,t,0)>-1};var js=function(e,t,n){for(var r=-1,i=null==e?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1};var Ts=function(e,t,n,r){var i=-1,o=Cs,s=!0,a=e.length,c=[],l=t.length;if(!a)return c;n&&(t=qr(t,Le(n))),r?(o=js,s=!1):t.length>=200&&(o=Yi,s=!1,t=new Xi(t));e:for(;++i<a;){var u=e[i],d=null==n?u:n(u);if(u=r||0!==u?u:0,s&&d==d){for(var h=l;h--;)if(t[h]===d)continue e;c.push(u)}else o(t,d,r)||c.push(u)}return c};var Os=function(e){return Ee(e)&&Xe(e)},ks=jr((function(e,t){return Os(e)?Ts(e,Mo(t,1,Os,!0)):[]}));var Ns=function(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e))return!1;return!0};var Is=function(e,t){var n=!0;return vs(e,(function(e,r,i){return n=!!t(e,r,i)})),n};var Ms=function(e,t,n){var r=ke(e)?Ns:Is;return n&&Tr(e,t,n)&&(t=void 0),r(e,Eo(t,3))},Rs=Math.max;var Ds=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:fi(n);return i<0&&(i=Rs(r+i,0)),Ss(e,Eo(t,3),i)},Ps=Math.max,Ls=Math.min;var zs=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;return void 0!==n&&(i=fi(n),i=n<0?Ps(r+i,0):Ls(i,r-1)),Ss(e,Eo(t,3),i,!0)},Fs=Object.prototype.hasOwnProperty,Bs=bs((function(e,t,n){Fs.call(e,n)?e[n].push(t):be(e,n,[t])})),qs=Math.max;var Hs=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:fi(n);return i<0&&(i=qs(r+i,0)),As(e,t,i)},Us=bs((function(e,t,n){be(e,n,t)}));var $s=function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r},Ws=Math.max,Gs=Math.min;var Vs=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=fi(n))<0?Ws(r+i,0):Gs(i,r-1)),t==t?$s(e,t,i):Ss(e,xs,i,!0)};var Js=function(e,t){var n;return vs(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n};var Xs=function(e,t,n){var r=ke(e)?Qi:Js;return n&&Tr(e,t,n)&&(t=void 0),r(e,Eo(t,3))};var Qs=function(e,t){var n=-1,r=Xe(e)?Array(e.length):[];return vs(e,(function(e,i,o){r[++n]=t(e,i,o)})),r};var Ys=function(e,t){var n=e.length;for(e.sort(t);n--;)e[n]=e[n].value;return e};var Ks=function(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Ir(e),s=void 0!==t,a=null===t,c=t==t,l=Ir(t);if(!a&&!l&&!o&&e>t||o&&s&&c&&!a&&!l||r&&s&&c||!n&&c||!i)return 1;if(!r&&!o&&!l&&e<t||l&&n&&i&&!r&&!o||a&&n&&i||!s&&i||!c)return-1}return 0};var Zs=function(e,t,n){for(var r=-1,i=e.criteria,o=t.criteria,s=i.length,a=n.length;++r<s;){var c=Ks(i[r],o[r]);if(c)return r>=a?c:c*("desc"==n[r]?-1:1)}return e.index-t.index};var ea=function(e,t,n){var r=-1;t=qr(t.length?t:[br],Le(Eo));var i=Qs(e,(function(e,n,i){return{criteria:qr(t,(function(t){return t(e)})),index:++r,value:e}}));return Ys(i,(function(e,t){return Zs(e,t,n)}))},ta=jr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Tr(e,t[0],t[1])?t=[]:n>2&&Tr(t[0],t[1],t[2])&&(t=[t[0]]),ea(e,Mo(t,1),[])}));const na=Array.prototype.slice,ra=function(e,t){t||(t={}),this.preinitialize.apply(this,arguments),t.model&&(this.model=t.model),void 0!==t.comparator&&(this.comparator=t.comparator),this._reset(),this.initialize.apply(this,arguments),e&&this.reset(e,Or({silent:!0},t))};ra.extend=Yr;const ia={add:!0,remove:!0,merge:!0},oa={add:!0,remove:!1},sa=function(e,t,n){n=Math.min(Math.max(n,0),e.length);const r=Array(e.length-n),i=t.length;let o;for(o=0;o<r.length;o++)r[o]=e[o+n];for(o=0;o<i;o++)e[o+n]=t[o];for(o=0;o<r.length;o++)e[o+i+n]=r[o]};Object.assign(ra.prototype,_i,{model:qo,preinitialize:function(){},initialize:function(){},toJSON:function(e){return this.map((function(t){return t.toJSON(e)}))},sync:function(e,t,n){return ni(this)(e,t,n)},add:function(e,t){return this.set(e,Or({merge:!1},t,oa))},remove:function(e,t){t=Or({},t);const n=!Array.isArray(e);e=n?[e]:e.slice();const r=this._removeModels(e,t);return!t.silent&&r.length&&(t.changes={added:[],merged:[],removed:r},this.trigger("update",this,t)),n?r[0]:r},set:function(e,t){if(null==e)return;(t=Or({},ia,t)).parse&&!this._isModel(e)&&(e=this.parse(e,t)||[]);const n=!Array.isArray(e);e=n?[e]:e.slice();let r=t.at;null!=r&&(r=+r),r>this.length&&(r=this.length),r<0&&(r+=this.length+1);const i=[],o=[],s=[],a=[],c={},l=t.add,u=t.merge,d=t.remove;let h=!1;const f=this.comparator&&null==r&&!1!==t.sort,p=Zt(this.comparator)?this.comparator:null;let g,m;for(m=0;m<e.length;m++){g=e[m];const n=this.get(g);if(n){if(u&&g!==n){let e=this._isModel(g)?g.attributes:g;t.parse&&(e=n.parse(e,t)),n.set(e,t),s.push(n),f&&!h&&(h=n.hasChanged(p))}c[n.cid]||(c[n.cid]=!0,i.push(n)),e[m]=n}else l&&(g=e[m]=this._prepareModel(g,t),g&&(o.push(g),this._addReference(g,t),c[g.cid]=!0,i.push(g)))}if(d){for(m=0;m<this.length;m++)g=this.models[m],c[g.cid]||a.push(g);a.length&&this._removeModels(a,t)}let v=!1;const _=!f&&l&&d;if(i.length&&_?(v=this.length!==i.length||Xs(this.models,(e,t)=>e!==i[t]),this.models.length=0,sa(this.models,i,0),this.length=this.models.length):o.length&&(f&&(h=!0),sa(this.models,o,null==r?this.length:r),this.length=this.models.length),h&&this.sort({silent:!0}),!t.silent){for(m=0;m<o.length;m++)null!=r&&(t.index=r+m),g=o[m],g.trigger("add",g,this,t);(h||v)&&this.trigger("sort",this,t),(o.length||a.length||s.length)&&(t.changes={added:o,removed:a,merged:s},this.trigger("update",this,t))}return n?e[0]:e},clearStore:async function(e={},t=(e=>e)){await Promise.all(this.models.filter(t).map(t=>new Promise(n=>{t.destroy(Object.assign(e,{success:n,error:(e,t)=>{console.error(t),n()}}))}))),await this.browserStorage.clear(),this.reset()},reset:function(e,t){t=t?Oi(t):{};for(let e=0;e<this.models.length;e++)this._removeReference(this.models[e],t);return t.previousModels=this.models,this._reset(),e=this.add(e,Or({silent:!0},t)),t.silent||this.trigger("reset",this,t),e},push:function(e,t){return this.add(e,Or({at:this.length},t))},pop:function(e){const t=this.at(this.length-1);return this.remove(t,e)},unshift:function(e,t){return this.add(e,Or({at:0},t))},shift:function(e){const t=this.at(0);return this.remove(t,e)},slice:function(){return na.apply(this.models,arguments)},filter:function(e,t){return this.models.filter(M(e)?e:t=>t.matches(e),t)},every:function(e){return Ms(this.models.map(e=>e.attributes),e)},difference:function(e){return ks(this.models,e)},max:function(){return Math.max.apply(Math,this.models)},min:function(){return Math.min.apply(Math,this.models)},drop:function(e=1){return this.models.slice(e)},some:function(e){return Xs(this.models.map(e=>e.attributes),e)},sortBy:function(e){return ta(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},isEmpty:function(){return oi(this.models)},keyBy:function(e){return Us(this.models,e)},each:function(e,t){return this.forEach(e,t)},forEach:function(e,t){return this.models.forEach(e,t)},includes:function(e){return this.models.includes(e)},size:function(){return this.models.length},countBy:function(e){return ws(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},groupBy:function(e){return Bs(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},indexOf:function(e){return Hs(this.models,e)},findLastIndex:function(e,t){return zs(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e),t)},lastIndexOf:function(e){return Vs(this.models,e)},findIndex:function(e){return Ds(this.models,M(e)?e:t=>Zt(e)?t.get(e):t.matches(e))},last:function(){const e=null==this.models?0:this.models.length;return e?this.models[e-1]:void 0},head:function(){return this.models[0]},first:function(){return this.head()},map:function(e,t){return this.models.map(M(e)?e:t=>Zt(e)?t.get(e):t.matches(e),t)},reduce:function(e,t){return this.models.reduce(e,t||this.models[0])},reduceRight:function(e,t){return this.models.reduceRight(e,t||this.models[0])},toArray:function(){return Array.from(this.models)},get:function(e){if(null!=e)return this._byId[e]||this._byId[this.modelId(this._isModel(e)?e.attributes:e)]||e.cid&&this._byId[e.cid]},has:function(e){return null!=this.get(e)},at:function(e){return e<0&&(e+=this.length),this.models[e]},where:function(e,t){return this[t?"find":"filter"](e)},findWhere:function(e){return this.where(e,!0)},find:function(e,t){const n=M(e)?e:t=>t.matches(e);return this.models.find(n,t)},sort:function(e){let t=this.comparator;if(!t)throw new Error("Cannot sort a set without a comparator");e||(e={});const n=t.length;return M(t)&&(t=t.bind(this)),1===n||Zt(t)?this.models=this.sortBy(t):this.models.sort(t),e.silent||this.trigger("sort",this,e),this},pluck:function(e){return this.map(e+"")},fetch:function(e){const t=(e=Or({parse:!0},e)).success,n=this,r=e.promise&&Kr();return e.success=function(i){const o=e.reset?"reset":"set";n[o](i,e),t&&t.call(e.context,n,i,e),r&&r.resolve(),n.trigger("sync",n,i,e)},ei(this,e),r||this.sync("read",this,e)},create:function(e,t){const n=(t=t?Oi(t):{}).wait,r=t.promise,i=r&&Kr();if(!(e=this._prepareModel(e,t)))return!1;n||this.add(e,t);const o=this,s=t.success,a=t.error;return t.success=function(e,t,a){n&&o.add(e,a),s&&s.call(a.context,e,t,a),r&&i.resolve(e)},t.error=function(e,t,n){a&&a.call(n.context,e,t,n),r&&i.reject(t)},e.save(null,Object.assign(t,{promise:!1})),r?i:e},parse:function(e,t){return e},clone:function(){return new this.constructor(this.models,{model:this.model,comparator:this.comparator})},modelId:function(e){return e[this.model.prototype.idAttribute||"id"]},values:function(){return new ca(this,la)},keys:function(){return new ca(this,ua)},entries:function(){return new ca(this,da)},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(e,t){if(this._isModel(e))return e.collection||(e.collection=this),e;(t=t?Oi(t):{}).collection=this;const n=new this.model(e,t);return n.validationError?(this.trigger("invalid",this,n.validationError,t),!1):n},_removeModels:function(e,t){const n=[];for(let r=0;r<e.length;r++){const i=this.get(e[r]);if(!i)continue;const o=this.indexOf(i);this.models.splice(o,1),this.length--,delete this._byId[i.cid];const s=this.modelId(i.attributes);null!=s&&delete this._byId[s],t.silent||(t.index=o,i.trigger("remove",i,this,t)),n.push(i),this._removeReference(i,t)}return n},_isModel:function(e){return e instanceof qo},_addReference:function(e,t){this._byId[e.cid]=e;const n=this.modelId(e.attributes);null!=n&&(this._byId[n]=e),e.on("all",this._onModelEvent,this)},_removeReference:function(e,t){delete this._byId[e.cid];const n=this.modelId(e.attributes);null!=n&&delete this._byId[n],this===e.collection&&delete e.collection,e.off("all",this._onModelEvent,this)},_onModelEvent:function(e,t,n,r){if(t){if(("add"===e||"remove"===e)&&n!==this)return;if("destroy"===e&&this.remove(t,r),"change"===e){const e=this.modelId(t.previousAttributes()),n=this.modelId(t.attributes);e!==n&&(null!=e&&delete this._byId[e],null!=n&&(this._byId[n]=t))}}this.trigger.apply(this,arguments)}});const aa="function"==typeof Symbol&&Symbol.iterator;aa&&(ra.prototype[aa]=ra.prototype.values);const ca=function(e,t){this._collection=e,this._kind=t,this._index=0},la=1,ua=2,da=3;aa&&(ca.prototype[aa]=function(){return this}),ca.prototype.next=function(){if(this._collection){if(this._index<this._collection.length){const e=this._collection.at(this._index);let t;if(this._index++,this._kind===la)t=e;else{const n=this._collection.modelId(e.attributes);t=this._kind===ua?n:[n,e]}return{value:t,done:!1}}this._collection=void 0}return{value:void 0,done:!0}};var ha=n(43);class fa extends vr.e.Connection{constructor(e,t){super(e,t),this.debouncedReconnect=Object(ha.debounce)(this.reconnect,2e3)}static generateResource(){return"/converse.js-".concat(Math.floor(139749528*Math.random()).toString())}async bind(){await Vc.trigger("beforeResourceBinding",{synchronous:!0}),super.bind()}async onDomainDiscovered(e){const t=await e.text(),n=(new window.DOMParser).parseFromString(t,"text/xml").firstElementChild;if("XRD"!=n.nodeName||"http://docs.oasis-open.org/ns/xri/xrd-1.0"!=n.namespaceURI)return zn.warn("Could not discover XEP-0156 connection methods");const r=mr()('Link[rel="urn:xmpp:alt-connections:xbosh"]',n),i=mr()('Link[rel="urn:xmpp:alt-connections:websocket"]',n),o=r.map(e=>e.getAttribute("href")),s=i.map(e=>e.getAttribute("href"));0===o.length&&0===s.length?zn.warn("Neither BOSH nor WebSocket connection methods have been specified with XEP-0156."):(Vc.settings.set("websocket_url",s.pop()),Vc.settings.set("bosh_service_url",o.pop()),this.service=Vc.settings.get("websocket_url")||Vc.settings.get("bosh_service_url"),this.setProtocol())}async discoverConnectionMethods(e){const t={mode:"cors",headers:{Accept:"application/xrd+xml, text/xml"}},n="https://".concat(e,"/.well-known/host-meta");let r;try{r=await fetch(n,t)}catch(e){return zn.error("Failed to discover alternative connection methods at ".concat(n)),void zn.error(e)}r.status>=200&&r.status<400?await this.onDomainDiscovered(r):zn.warn("Could not discover XEP-0156 connection methods")}async connect(e,t,n){if(Vc.settings.get("discover_connection_methods")){const t=vr.e.getDomainFromJid(e);await this.discoverConnectionMethods(t)}super.connect(e,t,n||this.onConnectStatusChanged,59)}async reconnect(){const{__:e}=Uc;return zn.debug("RECONNECTING: the connection has dropped, attempting to reconnect."),this.setConnectionStatus(vr.e.Status.RECONNECTING,e("The connection has dropped, attempting to reconnect.")),Vc.trigger("will-reconnect"),this.reconnecting=!0,await Qc(),Vc.user.login()}async onConnected(e){delete this.reconnecting,this.flush(),await Uc.setUserJID(this.jid),await Vc.trigger("afterResourceBinding",e,{synchronous:!0}),e?Vc.trigger("reconnected"):Vc.trigger("connected")}setDisconnectionCause(e,t,n){void 0===e?(delete this.disconnection_cause,delete this.disconnection_reason):(void 0===this.disconnection_cause||n)&&(this.disconnection_cause=e,this.disconnection_reason=t)}setConnectionStatus(e,t){this.status=e,Uc.connfeedback.set({connection_status:e,message:t})}async finishDisconnection(){zn.debug("DISCONNECTED"),delete this.reconnecting,this.reset(),Qc(),await Kc(),delete Uc.connection,Vc.trigger("disconnected")}onDisconnected(){if(!Vc.settings.get("auto_reconnect"))return this.finishDisconnection();{const e=this.disconnection_reason;if(this.disconnection_cause===vr.e.Status.AUTHFAIL)return Vc.settings.get("credentials_url")||Vc.settings.get("authentication")===Uc.ANONYMOUS?Vc.connection.reconnect():this.finishDisconnection();if(this.disconnection_cause===Uc.LOGOUT||e===vr.e.ErrorCondition.NO_AUTH_MECH||"host-unknown"===e||"remote-connection-failed"===e)return this.finishDisconnection();Vc.connection.reconnect()}}onConnectStatusChanged(e,t){const{__:n}=Uc;var r;if(zn.debug("Status changed to: ".concat(Uc.CONNECTION_STATUS[e])),e===vr.e.Status.ATTACHFAIL)this.setConnectionStatus(e),null===(r=this.worker_attach_promise)||void 0===r||r.resolve(!1);else if(e===vr.e.Status.CONNECTED||e===vr.e.Status.ATTACHED){var i,o;if((null===(i=this.worker_attach_promise)||void 0===i?void 0:i.isResolved)&&this.status===vr.e.Status.ATTACHED)return;this.setConnectionStatus(e),null===(o=this.worker_attach_promise)||void 0===o||o.resolve(!0),Uc.send_initial_presence=!0,this.setDisconnectionCause(),this.reconnecting?(zn.debug(e===vr.e.Status.CONNECTED?"Reconnected":"Reattached"),this.onConnected(!0)):(zn.debug(e===vr.e.Status.CONNECTED?"Connected":"Attached"),this.restored&&(Uc.send_initial_presence=!1),this.onConnected())}else if(e===vr.e.Status.DISCONNECTED)this.setDisconnectionCause(e,t),this.onDisconnected();else if(e===vr.e.Status.BINDREQUIRED)this.bind();else if(e===vr.e.Status.ERROR)this.setConnectionStatus(e,n("An error occurred while connecting to the chat server."));else if(e===vr.e.Status.CONNECTING)this.setConnectionStatus(e);else if(e===vr.e.Status.AUTHENTICATING)this.setConnectionStatus(e);else if(e===vr.e.Status.AUTHFAIL)t||(t=n("Your XMPP address and/or password is incorrect. Please try again.")),this.setConnectionStatus(e,t),this.setDisconnectionCause(e,t,!0),this.onDisconnected();else if(e===vr.e.Status.CONNFAIL){var s;let r=t;"host-unknown"===t||"remote-connection-failed"==t?r=n("Sorry, we could not connect to the XMPP host with domain: %1$s",'"'.concat(vr.e.getDomainFromJid(this.jid),'"')):void 0!==t&&t===(null===vr.e||void 0===vr.e||null===(s=vr.e.ErrorCondition)||void 0===s?void 0:s.NO_AUTH_MECH)&&(r=n("The XMPP server did not offer a supported authentication mechanism")),this.setConnectionStatus(e,r),this.setDisconnectionCause(e,t)}else e===vr.e.Status.DISCONNECTING&&this.setDisconnectionCause(e,t)}isType(e){return"websocket"===e.toLowerCase()?this._proto instanceof vr.e.Websocket:"bosh"===e.toLowerCase()?vr.e.Bosh&&this._proto instanceof vr.e.Bosh:void 0}hasResumed(){var e;return(null===(e=Vc.settings.get("connection_options"))||void 0===e?void 0:e.worker)||this.isType("bosh")?Uc.connfeedback.get("connection_status")===vr.e.Status.ATTACHED:!this.do_bind}restoreWorkerSession(){return this.attach(this.onConnectStatusChanged),this.worker_attach_promise=Jo.getResolveablePromise(),this.worker_attach_promise}}class pa extends fa{constructor(e,t){super(e,t),this.sent_stanzas=[],this.IQ_stanzas=[],this.IQ_ids=[],this.features=vr.e.xmlHtmlNode('<stream:features xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client"><ver xmlns="urn:xmpp:features:rosterver"/><csi xmlns="urn:xmpp:csi:0"/><this xmlns="http://jabber.org/protocol/caps" ver="UwBpfJpEt3IoLYfWma/o/p3FFRo=" hash="sha-1" node="http://prosody.im"/><bind xmlns="urn:ietf:params:xml:ns:xmpp-bind"><required/></bind><sm xmlns=\'urn:xmpp:sm:3\'/><session xmlns="urn:ietf:params:xml:ns:xmpp-session"><optional/></session></stream:features>').firstChild,this._proto._processRequest=()=>{},this._proto._disconnect=()=>this._onDisconnectTimeout(),this._proto._onDisconnectTimeout=()=>{},this._proto._connect=()=>{this.connected=!0,this.mock=!0,this.jid="romeo@montague.lit/orchard",this._changeConnectStatus(vr.e.Status.BINDREQUIRED)}}_processRequest(){}sendIQ(e,t,n){Object(ha.isElement)(e)||(e=e.nodeTree),this.IQ_stanzas.push(e);const r=super.sendIQ(e,t,n);return this.IQ_ids.push(r),r}send(e){return Object(ha.isElement)(e)?this.sent_stanzas.push(e):this.sent_stanzas.push(e.nodeTree),super.send(e)}async bind(){await Vc.trigger("beforeResourceBinding",{synchronous:!0}),this.authenticated=!0,Uc.no_connection_on_bind||this._changeConnectStatus(vr.e.Status.CONNECTED)}} /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -99,7 +106,7 @@ function Bs(e,t){clearTimeout(e),clearInterval(t)} * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */const la="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,ua=(e,t,n=null,r=null)=>{for(;t!==n;){const n=t.nextSibling;e.insertBefore(t,r),t=n}},da=(e,t,n=null)=>{for(;t!==n;){const n=t.nextSibling;e.removeChild(t),t=n}},ha=`{{lit-${String(Math.random()).slice(2)}}}`,fa=`\x3c!--${ha}--\x3e`,pa=new RegExp(`${ha}|${fa}`);class ga{constructor(e,t){this.parts=[],this.element=t;const n=[],r=[],i=document.createTreeWalker(t.content,133,null,!1);let s=0,o=-1,a=0;const{strings:c,values:{length:l}}=e;for(;a<l;){const e=i.nextNode();if(null!==e){if(o++,1===e.nodeType){if(e.hasAttributes()){const t=e.attributes,{length:n}=t;let r=0;for(let e=0;e<n;e++)ma(t[e].name,"$lit$")&&r++;for(;r-- >0;){const t=c[a],n=ba.exec(t)[2],r=n.toLowerCase()+"$lit$",i=e.getAttribute(r);e.removeAttribute(r);const s=i.split(pa);this.parts.push({type:"attribute",index:o,name:n,strings:s}),a+=s.length-1}}"TEMPLATE"===e.tagName&&(r.push(e),i.currentNode=e.content)}else if(3===e.nodeType){const t=e.data;if(t.indexOf(ha)>=0){const r=e.parentNode,i=t.split(pa),s=i.length-1;for(let t=0;t<s;t++){let n,s=i[t];if(""===s)n=_a();else{const e=ba.exec(s);null!==e&&ma(e[2],"$lit$")&&(s=s.slice(0,e.index)+e[1]+e[2].slice(0,-"$lit$".length)+e[3]),n=document.createTextNode(s)}r.insertBefore(n,e),this.parts.push({type:"node",index:++o})}""===i[s]?(r.insertBefore(_a(),e),n.push(e)):e.data=i[s],a+=s}}else if(8===e.nodeType)if(e.data===ha){const t=e.parentNode;null!==e.previousSibling&&o!==s||(o++,t.insertBefore(_a(),e)),s=o,this.parts.push({type:"node",index:o}),null===e.nextSibling?e.data="":(n.push(e),o--),a++}else{let t=-1;for(;-1!==(t=e.data.indexOf(ha,t+1));)this.parts.push({type:"node",index:-1}),a++}}else i.currentNode=r.pop()}for(const e of n)e.parentNode.removeChild(e)}}const ma=(e,t)=>{const n=e.length-t.length;return n>=0&&e.slice(n)===t},va=e=>-1!==e.index,_a=()=>document.createComment(""),ba=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function ya(e,t){const{element:{content:n},parts:r}=e,i=document.createTreeWalker(n,133,null,!1);let s=Sa(r),o=r[s],a=-1,c=0;const l=[];let u=null;for(;i.nextNode();){a++;const e=i.currentNode;for(e.previousSibling===u&&(u=null),t.has(e)&&(l.push(e),null===u&&(u=e)),null!==u&&c++;void 0!==o&&o.index===a;)o.index=null!==u?-1:o.index-c,s=Sa(r,s),o=r[s]}l.forEach(e=>e.parentNode.removeChild(e))}const wa=e=>{let t=11===e.nodeType?0:1;const n=document.createTreeWalker(e,133,null,!1);for(;n.nextNode();)t++;return t},Sa=(e,t=-1)=>{for(let n=t+1;n<e.length;n++){const t=e[n];if(va(t))return n}return-1}; + */const ga="undefined"!=typeof window&&null!=window.customElements&&void 0!==window.customElements.polyfillWrapFlushCallback,ma=(e,t,n=null,r=null)=>{for(;t!==n;){const n=t.nextSibling;e.insertBefore(t,r),t=n}},va=(e,t,n=null)=>{for(;t!==n;){const n=t.nextSibling;e.removeChild(t),t=n}},_a=`{{lit-${String(Math.random()).slice(2)}}}`,ba=`\x3c!--${_a}--\x3e`,ya=new RegExp(`${_a}|${ba}`);class wa{constructor(e,t){this.parts=[],this.element=t;const n=[],r=[],i=document.createTreeWalker(t.content,133,null,!1);let o=0,s=-1,a=0;const{strings:c,values:{length:l}}=e;for(;a<l;){const e=i.nextNode();if(null!==e){if(s++,1===e.nodeType){if(e.hasAttributes()){const t=e.attributes,{length:n}=t;let r=0;for(let e=0;e<n;e++)Sa(t[e].name,"$lit$")&&r++;for(;r-- >0;){const t=c[a],n=Aa.exec(t)[2],r=n.toLowerCase()+"$lit$",i=e.getAttribute(r);e.removeAttribute(r);const o=i.split(ya);this.parts.push({type:"attribute",index:s,name:n,strings:o}),a+=o.length-1}}"TEMPLATE"===e.tagName&&(r.push(e),i.currentNode=e.content)}else if(3===e.nodeType){const t=e.data;if(t.indexOf(_a)>=0){const r=e.parentNode,i=t.split(ya),o=i.length-1;for(let t=0;t<o;t++){let n,o=i[t];if(""===o)n=Ea();else{const e=Aa.exec(o);null!==e&&Sa(e[2],"$lit$")&&(o=o.slice(0,e.index)+e[1]+e[2].slice(0,-"$lit$".length)+e[3]),n=document.createTextNode(o)}r.insertBefore(n,e),this.parts.push({type:"node",index:++s})}""===i[o]?(r.insertBefore(Ea(),e),n.push(e)):e.data=i[o],a+=o}}else if(8===e.nodeType)if(e.data===_a){const t=e.parentNode;null!==e.previousSibling&&s!==o||(s++,t.insertBefore(Ea(),e)),o=s,this.parts.push({type:"node",index:s}),null===e.nextSibling?e.data="":(n.push(e),s--),a++}else{let t=-1;for(;-1!==(t=e.data.indexOf(_a,t+1));)this.parts.push({type:"node",index:-1}),a++}}else i.currentNode=r.pop()}for(const e of n)e.parentNode.removeChild(e)}}const Sa=(e,t)=>{const n=e.length-t.length;return n>=0&&e.slice(n)===t},xa=e=>-1!==e.index,Ea=()=>document.createComment(""),Aa=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/;function Ca(e,t){const{element:{content:n},parts:r}=e,i=document.createTreeWalker(n,133,null,!1);let o=Ta(r),s=r[o],a=-1,c=0;const l=[];let u=null;for(;i.nextNode();){a++;const e=i.currentNode;for(e.previousSibling===u&&(u=null),t.has(e)&&(l.push(e),null===u&&(u=e)),null!==u&&c++;void 0!==s&&s.index===a;)s.index=null!==u?-1:s.index-c,o=Ta(r,o),s=r[o]}l.forEach(e=>e.parentNode.removeChild(e))}const ja=e=>{let t=11===e.nodeType?0:1;const n=document.createTreeWalker(e,133,null,!1);for(;n.nextNode();)t++;return t},Ta=(e,t=-1)=>{for(let n=t+1;n<e.length;n++){const t=e[n];if(xa(t))return n}return-1}; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -113,7 +120,7 @@ function Bs(e,t){clearTimeout(e),clearInterval(t)} * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -const xa=new WeakMap,Ea=e=>(...t)=>{const n=e(...t);return xa.set(n,!0),n},Aa=e=>"function"==typeof e&&xa.has(e),Ca={},ja={}; +const Oa=new WeakMap,ka=e=>(...t)=>{const n=e(...t);return Oa.set(n,!0),n},Na=e=>"function"==typeof e&&Oa.has(e),Ia={},Ma={}; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -127,7 +134,7 @@ const xa=new WeakMap,Ea=e=>(...t)=>{const n=e(...t);return xa.set(n,!0),n},Aa=e= * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -class Ta{constructor(e,t,n){this.__parts=[],this.template=e,this.processor=t,this.options=n}update(e){let t=0;for(const n of this.__parts)void 0!==n&&n.setValue(e[t]),t++;for(const e of this.__parts)void 0!==e&&e.commit()}_clone(){const e=la?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),t=[],n=this.template.parts,r=document.createTreeWalker(e,133,null,!1);let i,s=0,o=0,a=r.nextNode();for(;s<n.length;)if(i=n[s],va(i)){for(;o<i.index;)o++,"TEMPLATE"===a.nodeName&&(t.push(a),r.currentNode=a.content),null===(a=r.nextNode())&&(r.currentNode=t.pop(),a=r.nextNode());if("node"===i.type){const e=this.processor.handleTextExpression(this.options);e.insertAfterNode(a.previousSibling),this.__parts.push(e)}else this.__parts.push(...this.processor.handleAttributeExpressions(a,i.name,i.strings,this.options));s++}else this.__parts.push(void 0),s++;return la&&(document.adoptNode(e),customElements.upgrade(e)),e}} +class Ra{constructor(e,t,n){this.__parts=[],this.template=e,this.processor=t,this.options=n}update(e){let t=0;for(const n of this.__parts)void 0!==n&&n.setValue(e[t]),t++;for(const e of this.__parts)void 0!==e&&e.commit()}_clone(){const e=ga?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),t=[],n=this.template.parts,r=document.createTreeWalker(e,133,null,!1);let i,o=0,s=0,a=r.nextNode();for(;o<n.length;)if(i=n[o],xa(i)){for(;s<i.index;)s++,"TEMPLATE"===a.nodeName&&(t.push(a),r.currentNode=a.content),null===(a=r.nextNode())&&(r.currentNode=t.pop(),a=r.nextNode());if("node"===i.type){const e=this.processor.handleTextExpression(this.options);e.insertAfterNode(a.previousSibling),this.__parts.push(e)}else this.__parts.push(...this.processor.handleAttributeExpressions(a,i.name,i.strings,this.options));o++}else this.__parts.push(void 0),o++;return ga&&(document.adoptNode(e),customElements.upgrade(e)),e}} /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -140,7 +147,7 @@ class Ta{constructor(e,t,n){this.__parts=[],this.template=e,this.processor=t,thi * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */const Oa=` ${ha} `;class ka{constructor(e,t,n,r){this.strings=e,this.values=t,this.type=n,this.processor=r}getHTML(){const e=this.strings.length-1;let t="",n=!1;for(let r=0;r<e;r++){const e=this.strings[r],i=e.lastIndexOf("\x3c!--");n=(i>-1||n)&&-1===e.indexOf("--\x3e",i+1);const s=ba.exec(e);t+=null===s?e+(n?Oa:fa):e.substr(0,s.index)+s[1]+s[2]+"$lit$"+s[3]+ha}return t+=this.strings[e],t}getTemplateElement(){const e=document.createElement("template");return e.innerHTML=this.getHTML(),e}} + */const Da=` ${_a} `;class Pa{constructor(e,t,n,r){this.strings=e,this.values=t,this.type=n,this.processor=r}getHTML(){const e=this.strings.length-1;let t="",n=!1;for(let r=0;r<e;r++){const e=this.strings[r],i=e.lastIndexOf("\x3c!--");n=(i>-1||n)&&-1===e.indexOf("--\x3e",i+1);const o=Aa.exec(e);t+=null===o?e+(n?Da:ba):e.substr(0,o.index)+o[1]+o[2]+"$lit$"+o[3]+_a}return t+=this.strings[e],t}getTemplateElement(){const e=document.createElement("template");return e.innerHTML=this.getHTML(),e}} /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -154,7 +161,7 @@ class Ta{constructor(e,t,n){this.__parts=[],this.template=e,this.processor=t,thi * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -const Na=e=>null===e||!("object"==typeof e||"function"==typeof e),Ia=e=>Array.isArray(e)||!(!e||!e[Symbol.iterator]);class Ma{constructor(e,t,n){this.dirty=!0,this.element=e,this.name=t,this.strings=n,this.parts=[];for(let e=0;e<n.length-1;e++)this.parts[e]=this._createPart()}_createPart(){return new Ra(this)}_getValue(){const e=this.strings,t=e.length-1;let n="";for(let r=0;r<t;r++){n+=e[r];const t=this.parts[r];if(void 0!==t){const e=t.value;if(Na(e)||!Ia(e))n+="string"==typeof e?e:String(e);else for(const t of e)n+="string"==typeof t?t:String(t)}}return n+=e[t],n}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class Ra{constructor(e){this.value=void 0,this.committer=e}setValue(e){e===Ca||Na(e)&&e===this.value||(this.value=e,Aa(e)||(this.committer.dirty=!0))}commit(){for(;Aa(this.value);){const e=this.value;this.value=Ca,e(this)}this.value!==Ca&&this.committer.commit()}}class Da{constructor(e){this.value=void 0,this.__pendingValue=void 0,this.options=e}appendInto(e){this.startNode=e.appendChild(_a()),this.endNode=e.appendChild(_a())}insertAfterNode(e){this.startNode=e,this.endNode=e.nextSibling}appendIntoPart(e){e.__insert(this.startNode=_a()),e.__insert(this.endNode=_a())}insertAfterPart(e){e.__insert(this.startNode=_a()),this.endNode=e.endNode,e.endNode=this.startNode}setValue(e){this.__pendingValue=e}commit(){if(null===this.startNode.parentNode)return;for(;Aa(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ca,e(this)}const e=this.__pendingValue;e!==Ca&&(Na(e)?e!==this.value&&this.__commitText(e):e instanceof ka?this.__commitTemplateResult(e):e instanceof Node?this.__commitNode(e):Ia(e)?this.__commitIterable(e):e===ja?(this.value=ja,this.clear()):this.__commitText(e))}__insert(e){this.endNode.parentNode.insertBefore(e,this.endNode)}__commitNode(e){this.value!==e&&(this.clear(),this.__insert(e),this.value=e)}__commitText(e){const t=this.startNode.nextSibling,n="string"==typeof(e=null==e?"":e)?e:String(e);t===this.endNode.previousSibling&&3===t.nodeType?t.data=n:this.__commitNode(document.createTextNode(n)),this.value=e}__commitTemplateResult(e){const t=this.options.templateFactory(e);if(this.value instanceof Ta&&this.value.template===t)this.value.update(e.values);else{const n=new Ta(t,e.processor,this.options),r=n._clone();n.update(e.values),this.__commitNode(r),this.value=n}}__commitIterable(e){Array.isArray(this.value)||(this.value=[],this.clear());const t=this.value;let n,r=0;for(const i of e)n=t[r],void 0===n&&(n=new Da(this.options),t.push(n),0===r?n.appendIntoPart(this):n.insertAfterPart(t[r-1])),n.setValue(i),n.commit(),r++;r<t.length&&(t.length=r,this.clear(n&&n.endNode))}clear(e=this.startNode){da(this.startNode.parentNode,e.nextSibling,this.endNode)}}class Pa{constructor(e,t,n){if(this.value=void 0,this.__pendingValue=void 0,2!==n.length||""!==n[0]||""!==n[1])throw new Error("Boolean attributes can only contain a single expression");this.element=e,this.name=t,this.strings=n}setValue(e){this.__pendingValue=e}commit(){for(;Aa(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ca,e(this)}if(this.__pendingValue===Ca)return;const e=!!this.__pendingValue;this.value!==e&&(e?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=e),this.__pendingValue=Ca}}class La extends Ma{constructor(e,t,n){super(e,t,n),this.single=2===n.length&&""===n[0]&&""===n[1]}_createPart(){return new za(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class za extends Ra{}let Fa=!1;(()=>{try{const e={get capture(){return Fa=!0,!1}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){}})();class Ba{constructor(e,t,n){this.value=void 0,this.__pendingValue=void 0,this.element=e,this.eventName=t,this.eventContext=n,this.__boundHandleEvent=e=>this.handleEvent(e)}setValue(e){this.__pendingValue=e}commit(){for(;Aa(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ca,e(this)}if(this.__pendingValue===Ca)return;const e=this.__pendingValue,t=this.value,n=null==e||null!=t&&(e.capture!==t.capture||e.once!==t.once||e.passive!==t.passive),r=null!=e&&(null==t||n);n&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),r&&(this.__options=qa(e),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=e,this.__pendingValue=Ca}handleEvent(e){"function"==typeof this.value?this.value.call(this.eventContext||this.element,e):this.value.handleEvent(e)}}const qa=e=>e&&(Fa?{capture:e.capture,passive:e.passive,once:e.once}:e.capture) +const La=e=>null===e||!("object"==typeof e||"function"==typeof e),za=e=>Array.isArray(e)||!(!e||!e[Symbol.iterator]);class Fa{constructor(e,t,n){this.dirty=!0,this.element=e,this.name=t,this.strings=n,this.parts=[];for(let e=0;e<n.length-1;e++)this.parts[e]=this._createPart()}_createPart(){return new Ba(this)}_getValue(){const e=this.strings,t=e.length-1;let n="";for(let r=0;r<t;r++){n+=e[r];const t=this.parts[r];if(void 0!==t){const e=t.value;if(La(e)||!za(e))n+="string"==typeof e?e:String(e);else for(const t of e)n+="string"==typeof t?t:String(t)}}return n+=e[t],n}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}class Ba{constructor(e){this.value=void 0,this.committer=e}setValue(e){e===Ia||La(e)&&e===this.value||(this.value=e,Na(e)||(this.committer.dirty=!0))}commit(){for(;Na(this.value);){const e=this.value;this.value=Ia,e(this)}this.value!==Ia&&this.committer.commit()}}class qa{constructor(e){this.value=void 0,this.__pendingValue=void 0,this.options=e}appendInto(e){this.startNode=e.appendChild(Ea()),this.endNode=e.appendChild(Ea())}insertAfterNode(e){this.startNode=e,this.endNode=e.nextSibling}appendIntoPart(e){e.__insert(this.startNode=Ea()),e.__insert(this.endNode=Ea())}insertAfterPart(e){e.__insert(this.startNode=Ea()),this.endNode=e.endNode,e.endNode=this.startNode}setValue(e){this.__pendingValue=e}commit(){if(null===this.startNode.parentNode)return;for(;Na(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ia,e(this)}const e=this.__pendingValue;e!==Ia&&(La(e)?e!==this.value&&this.__commitText(e):e instanceof Pa?this.__commitTemplateResult(e):e instanceof Node?this.__commitNode(e):za(e)?this.__commitIterable(e):e===Ma?(this.value=Ma,this.clear()):this.__commitText(e))}__insert(e){this.endNode.parentNode.insertBefore(e,this.endNode)}__commitNode(e){this.value!==e&&(this.clear(),this.__insert(e),this.value=e)}__commitText(e){const t=this.startNode.nextSibling,n="string"==typeof(e=null==e?"":e)?e:String(e);t===this.endNode.previousSibling&&3===t.nodeType?t.data=n:this.__commitNode(document.createTextNode(n)),this.value=e}__commitTemplateResult(e){const t=this.options.templateFactory(e);if(this.value instanceof Ra&&this.value.template===t)this.value.update(e.values);else{const n=new Ra(t,e.processor,this.options),r=n._clone();n.update(e.values),this.__commitNode(r),this.value=n}}__commitIterable(e){Array.isArray(this.value)||(this.value=[],this.clear());const t=this.value;let n,r=0;for(const i of e)n=t[r],void 0===n&&(n=new qa(this.options),t.push(n),0===r?n.appendIntoPart(this):n.insertAfterPart(t[r-1])),n.setValue(i),n.commit(),r++;r<t.length&&(t.length=r,this.clear(n&&n.endNode))}clear(e=this.startNode){va(this.startNode.parentNode,e.nextSibling,this.endNode)}}class Ha{constructor(e,t,n){if(this.value=void 0,this.__pendingValue=void 0,2!==n.length||""!==n[0]||""!==n[1])throw new Error("Boolean attributes can only contain a single expression");this.element=e,this.name=t,this.strings=n}setValue(e){this.__pendingValue=e}commit(){for(;Na(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ia,e(this)}if(this.__pendingValue===Ia)return;const e=!!this.__pendingValue;this.value!==e&&(e?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=e),this.__pendingValue=Ia}}class Ua extends Fa{constructor(e,t,n){super(e,t,n),this.single=2===n.length&&""===n[0]&&""===n[1]}_createPart(){return new $a(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}class $a extends Ba{}let Wa=!1;(()=>{try{const e={get capture(){return Wa=!0,!1}};window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch(e){}})();class Ga{constructor(e,t,n){this.value=void 0,this.__pendingValue=void 0,this.element=e,this.eventName=t,this.eventContext=n,this.__boundHandleEvent=e=>this.handleEvent(e)}setValue(e){this.__pendingValue=e}commit(){for(;Na(this.__pendingValue);){const e=this.__pendingValue;this.__pendingValue=Ia,e(this)}if(this.__pendingValue===Ia)return;const e=this.__pendingValue,t=this.value,n=null==e||null!=t&&(e.capture!==t.capture||e.once!==t.once||e.passive!==t.passive),r=null!=e&&(null==t||n);n&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),r&&(this.__options=Va(e),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=e,this.__pendingValue=Ia}handleEvent(e){"function"==typeof this.value?this.value.call(this.eventContext||this.element,e):this.value.handleEvent(e)}}const Va=e=>e&&(Wa?{capture:e.capture,passive:e.passive,once:e.once}:e.capture) /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -167,7 +174,7 @@ const Na=e=>null===e||!("object"==typeof e||"function"==typeof e),Ia=e=>Array.is * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */;function Ha(e){let t=Ua.get(e.type);void 0===t&&(t={stringsArray:new WeakMap,keyString:new Map},Ua.set(e.type,t));let n=t.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(ha);return n=t.keyString.get(r),void 0===n&&(n=new ga(e,e.getTemplateElement()),t.keyString.set(r,n)),t.stringsArray.set(e.strings,n),n}const Ua=new Map,$a=new WeakMap,Wa=(e,t,n)=>{let r=$a.get(t);void 0===r&&(da(t,t.firstChild),$a.set(t,r=new Da(Object.assign({templateFactory:Ha},n))),r.appendInto(t)),r.setValue(e),r.commit()}; + */;function Ja(e){let t=Xa.get(e.type);void 0===t&&(t={stringsArray:new WeakMap,keyString:new Map},Xa.set(e.type,t));let n=t.stringsArray.get(e.strings);if(void 0!==n)return n;const r=e.strings.join(_a);return n=t.keyString.get(r),void 0===n&&(n=new wa(e,e.getTemplateElement()),t.keyString.set(r,n)),t.stringsArray.set(e.strings,n),n}const Xa=new Map,Qa=new WeakMap,Ya=(e,t,n)=>{let r=Qa.get(t);void 0===r&&(va(t,t.firstChild),Qa.set(t,r=new qa(Object.assign({templateFactory:Ja},n))),r.appendInto(t)),r.setValue(e),r.commit()}; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -180,7 +187,7 @@ const Na=e=>null===e||!("object"==typeof e||"function"==typeof e),Ia=e=>Array.is * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */const Va=new + */const Ka=new /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -194,7 +201,7 @@ const Na=e=>null===e||!("object"==typeof e||"function"==typeof e),Ia=e=>Array.is * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -class{handleAttributeExpressions(e,t,n,r){const i=t[0];if("."===i){return new La(e,t.slice(1),n).parts}return"@"===i?[new Ba(e,t.slice(1),r.eventContext)]:"?"===i?[new Pa(e,t.slice(1),n)]:new Ma(e,t,n).parts}handleTextExpression(e){return new Da(e)}}; +class{handleAttributeExpressions(e,t,n,r){const i=t[0];if("."===i){return new Ua(e,t.slice(1),n).parts}return"@"===i?[new Ga(e,t.slice(1),r.eventContext)]:"?"===i?[new Ha(e,t.slice(1),n)]:new Fa(e,t,n).parts}handleTextExpression(e){return new qa(e)}}; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -207,7 +214,7 @@ class{handleAttributeExpressions(e,t,n,r){const i=t[0];if("."===i){return new La * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.2.1");const Ga=(e,...t)=>new ka(e,t,"html",Va),Ja=(e,t)=>`${e}--${t}`;let Xa=!0;void 0===window.ShadyCSS?Xa=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),Xa=!1);const Qa=e=>t=>{const n=Ja(t.type,e);let r=Ua.get(n);void 0===r&&(r={stringsArray:new WeakMap,keyString:new Map},Ua.set(n,r));let i=r.stringsArray.get(t.strings);if(void 0!==i)return i;const s=t.strings.join(ha);if(i=r.keyString.get(s),void 0===i){const n=t.getTemplateElement();Xa&&window.ShadyCSS.prepareTemplateDom(n,e),i=new ga(t,n),r.keyString.set(s,i)}return r.stringsArray.set(t.strings,i),i},Ya=["html","svg"],Ka=new Set,Za=(e,t,n)=>{Ka.add(e);const r=n?n.element:document.createElement("template"),i=t.querySelectorAll("style"),{length:s}=i;if(0===s)return void window.ShadyCSS.prepareTemplateStyles(r,e);const o=document.createElement("style");for(let e=0;e<s;e++){const t=i[e];t.parentNode.removeChild(t),o.textContent+=t.textContent}(e=>{Ya.forEach(t=>{const n=Ua.get(Ja(t,e));void 0!==n&&n.keyString.forEach(e=>{const{element:{content:t}}=e,n=new Set;Array.from(t.querySelectorAll("style")).forEach(e=>{n.add(e)}),ya(e,n)})})})(e);const a=r.content;n?function(e,t,n=null){const{element:{content:r},parts:i}=e;if(null==n)return void r.appendChild(t);const s=document.createTreeWalker(r,133,null,!1);let o=Sa(i),a=0,c=-1;for(;s.nextNode();){for(c++,s.currentNode===n&&(a=wa(t),n.parentNode.insertBefore(t,n));-1!==o&&i[o].index===c;){if(a>0){for(;-1!==o;)i[o].index+=a,o=Sa(i,o);return}o=Sa(i,o)}}}(n,o,a.firstChild):a.insertBefore(o,a.firstChild),window.ShadyCSS.prepareTemplateStyles(r,e);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)t.insertBefore(c.cloneNode(!0),t.firstChild);else if(n){a.insertBefore(o,a.firstChild);const e=new Set;e.add(o),ya(n,e)}};window.JSCompiler_renameProperty=(e,t)=>e;const ec={toAttribute(e,t){switch(t){case Boolean:return e?"":null;case Object:case Array:return null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){switch(t){case Boolean:return null!==e;case Number:return null===e?null:Number(e);case Object:case Array:return JSON.parse(e)}return e}},tc=(e,t)=>t!==e&&(t==t||e==e),nc={attribute:!0,type:String,converter:ec,reflect:!1,hasChanged:tc};class rc extends HTMLElement{constructor(){super(),this._updateState=0,this._instanceProperties=void 0,this._updatePromise=new Promise(e=>this._enableUpdatingResolver=e),this._changedProperties=new Map,this._reflectingProperties=void 0,this.initialize()}static get observedAttributes(){this.finalize();const e=[];return this._classProperties.forEach((t,n)=>{const r=this._attributeNameForProperty(n,t);void 0!==r&&(this._attributeToPropertyMap.set(r,n),e.push(r))}),e}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const e=Object.getPrototypeOf(this)._classProperties;void 0!==e&&e.forEach((e,t)=>this._classProperties.set(t,e))}}static createProperty(e,t=nc){if(this._ensureClassProperties(),this._classProperties.set(e,t),t.noAccessor||this.prototype.hasOwnProperty(e))return;const n="symbol"==typeof e?Symbol():"__"+e,r=this.getPropertyDescriptor(e,n,t);void 0!==r&&Object.defineProperty(this.prototype,e,r)}static getPropertyDescriptor(e,t,n){return{get(){return this[t]},set(n){const r=this[e];this[t]=n,this._requestUpdate(e,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this._classProperties&&this._classProperties.get(e)||nc}static finalize(){const e=Object.getPrototypeOf(this);if(e.hasOwnProperty("finalized")||e.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const e=this.properties,t=[...Object.getOwnPropertyNames(e),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e):[]];for(const n of t)this.createProperty(n,e[n])}}static _attributeNameForProperty(e,t){const n=t.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof e?e.toLowerCase():void 0}static _valueHasChanged(e,t,n=tc){return n(e,t)}static _propertyValueFromAttribute(e,t){const n=t.type,r=t.converter||ec,i="function"==typeof r?r:r.fromAttribute;return i?i(e,n):e}static _propertyValueToAttribute(e,t){if(void 0===t.reflect)return;const n=t.type,r=t.converter;return(r&&r.toAttribute||ec.toAttribute)(e,n)}initialize(){this._saveInstanceProperties(),this._requestUpdate()}_saveInstanceProperties(){this.constructor._classProperties.forEach((e,t)=>{if(this.hasOwnProperty(t)){const e=this[t];delete this[t],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(t,e)}})}_applyInstanceProperties(){this._instanceProperties.forEach((e,t)=>this[t]=e),this._instanceProperties=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this._enableUpdatingResolver&&(this._enableUpdatingResolver(),this._enableUpdatingResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(e,t,n){t!==n&&this._attributeToProperty(e,n)}_propertyToAttribute(e,t,n=nc){const r=this.constructor,i=r._attributeNameForProperty(e,n);if(void 0!==i){const e=r._propertyValueToAttribute(t,n);if(void 0===e)return;this._updateState=8|this._updateState,null==e?this.removeAttribute(i):this.setAttribute(i,e),this._updateState=-9&this._updateState}}_attributeToProperty(e,t){if(8&this._updateState)return;const n=this.constructor,r=n._attributeToPropertyMap.get(e);if(void 0!==r){const e=n.getPropertyOptions(r);this._updateState=16|this._updateState,this[r]=n._propertyValueFromAttribute(t,e),this._updateState=-17&this._updateState}}_requestUpdate(e,t){let n=!0;if(void 0!==e){const r=this.constructor,i=r.getPropertyOptions(e);r._valueHasChanged(this[e],t,i.hasChanged)?(this._changedProperties.has(e)||this._changedProperties.set(e,t),!0!==i.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(e,i))):n=!1}!this._hasRequestedUpdate&&n&&(this._updatePromise=this._enqueueUpdate())}requestUpdate(e,t){return this._requestUpdate(e,t),this.updateComplete}async _enqueueUpdate(){this._updateState=4|this._updateState;try{await this._updatePromise}catch(e){}const e=this.performUpdate();return null!=e&&await e,!this._hasRequestedUpdate}get _hasRequestedUpdate(){return 4&this._updateState}get hasUpdated(){return 1&this._updateState}performUpdate(){this._instanceProperties&&this._applyInstanceProperties();let e=!1;const t=this._changedProperties;try{e=this.shouldUpdate(t),e?this.update(t):this._markUpdated()}catch(t){throw e=!1,this._markUpdated(),t}e&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(t)),this.updated(t))}_markUpdated(){this._changedProperties=new Map,this._updateState=-5&this._updateState}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this._updatePromise}shouldUpdate(e){return!0}update(e){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach((e,t)=>this._propertyToAttribute(t,this[t],e)),this._reflectingProperties=void 0),this._markUpdated()}updated(e){}firstUpdated(e){}}rc.finalized=!0; + */"undefined"!=typeof window&&(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.2.1");const Za=(e,...t)=>new Pa(e,t,"html",Ka),ec=(e,t)=>`${e}--${t}`;let tc=!0;void 0===window.ShadyCSS?tc=!1:void 0===window.ShadyCSS.prepareTemplateDom&&(console.warn("Incompatible ShadyCSS version detected. Please update to at least @webcomponents/webcomponentsjs@2.0.2 and @webcomponents/shadycss@1.3.1."),tc=!1);const nc=e=>t=>{const n=ec(t.type,e);let r=Xa.get(n);void 0===r&&(r={stringsArray:new WeakMap,keyString:new Map},Xa.set(n,r));let i=r.stringsArray.get(t.strings);if(void 0!==i)return i;const o=t.strings.join(_a);if(i=r.keyString.get(o),void 0===i){const n=t.getTemplateElement();tc&&window.ShadyCSS.prepareTemplateDom(n,e),i=new wa(t,n),r.keyString.set(o,i)}return r.stringsArray.set(t.strings,i),i},rc=["html","svg"],ic=new Set,oc=(e,t,n)=>{ic.add(e);const r=n?n.element:document.createElement("template"),i=t.querySelectorAll("style"),{length:o}=i;if(0===o)return void window.ShadyCSS.prepareTemplateStyles(r,e);const s=document.createElement("style");for(let e=0;e<o;e++){const t=i[e];t.parentNode.removeChild(t),s.textContent+=t.textContent}(e=>{rc.forEach(t=>{const n=Xa.get(ec(t,e));void 0!==n&&n.keyString.forEach(e=>{const{element:{content:t}}=e,n=new Set;Array.from(t.querySelectorAll("style")).forEach(e=>{n.add(e)}),Ca(e,n)})})})(e);const a=r.content;n?function(e,t,n=null){const{element:{content:r},parts:i}=e;if(null==n)return void r.appendChild(t);const o=document.createTreeWalker(r,133,null,!1);let s=Ta(i),a=0,c=-1;for(;o.nextNode();){for(c++,o.currentNode===n&&(a=ja(t),n.parentNode.insertBefore(t,n));-1!==s&&i[s].index===c;){if(a>0){for(;-1!==s;)i[s].index+=a,s=Ta(i,s);return}s=Ta(i,s)}}}(n,s,a.firstChild):a.insertBefore(s,a.firstChild),window.ShadyCSS.prepareTemplateStyles(r,e);const c=a.querySelector("style");if(window.ShadyCSS.nativeShadow&&null!==c)t.insertBefore(c.cloneNode(!0),t.firstChild);else if(n){a.insertBefore(s,a.firstChild);const e=new Set;e.add(s),Ca(n,e)}};window.JSCompiler_renameProperty=(e,t)=>e;const sc={toAttribute(e,t){switch(t){case Boolean:return e?"":null;case Object:case Array:return null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){switch(t){case Boolean:return null!==e;case Number:return null===e?null:Number(e);case Object:case Array:return JSON.parse(e)}return e}},ac=(e,t)=>t!==e&&(t==t||e==e),cc={attribute:!0,type:String,converter:sc,reflect:!1,hasChanged:ac};class lc extends HTMLElement{constructor(){super(),this._updateState=0,this._instanceProperties=void 0,this._updatePromise=new Promise(e=>this._enableUpdatingResolver=e),this._changedProperties=new Map,this._reflectingProperties=void 0,this.initialize()}static get observedAttributes(){this.finalize();const e=[];return this._classProperties.forEach((t,n)=>{const r=this._attributeNameForProperty(n,t);void 0!==r&&(this._attributeToPropertyMap.set(r,n),e.push(r))}),e}static _ensureClassProperties(){if(!this.hasOwnProperty(JSCompiler_renameProperty("_classProperties",this))){this._classProperties=new Map;const e=Object.getPrototypeOf(this)._classProperties;void 0!==e&&e.forEach((e,t)=>this._classProperties.set(t,e))}}static createProperty(e,t=cc){if(this._ensureClassProperties(),this._classProperties.set(e,t),t.noAccessor||this.prototype.hasOwnProperty(e))return;const n="symbol"==typeof e?Symbol():"__"+e,r=this.getPropertyDescriptor(e,n,t);void 0!==r&&Object.defineProperty(this.prototype,e,r)}static getPropertyDescriptor(e,t,n){return{get(){return this[t]},set(n){const r=this[e];this[t]=n,this._requestUpdate(e,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this._classProperties&&this._classProperties.get(e)||cc}static finalize(){const e=Object.getPrototypeOf(this);if(e.hasOwnProperty("finalized")||e.finalize(),this.finalized=!0,this._ensureClassProperties(),this._attributeToPropertyMap=new Map,this.hasOwnProperty(JSCompiler_renameProperty("properties",this))){const e=this.properties,t=[...Object.getOwnPropertyNames(e),..."function"==typeof Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e):[]];for(const n of t)this.createProperty(n,e[n])}}static _attributeNameForProperty(e,t){const n=t.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof e?e.toLowerCase():void 0}static _valueHasChanged(e,t,n=ac){return n(e,t)}static _propertyValueFromAttribute(e,t){const n=t.type,r=t.converter||sc,i="function"==typeof r?r:r.fromAttribute;return i?i(e,n):e}static _propertyValueToAttribute(e,t){if(void 0===t.reflect)return;const n=t.type,r=t.converter;return(r&&r.toAttribute||sc.toAttribute)(e,n)}initialize(){this._saveInstanceProperties(),this._requestUpdate()}_saveInstanceProperties(){this.constructor._classProperties.forEach((e,t)=>{if(this.hasOwnProperty(t)){const e=this[t];delete this[t],this._instanceProperties||(this._instanceProperties=new Map),this._instanceProperties.set(t,e)}})}_applyInstanceProperties(){this._instanceProperties.forEach((e,t)=>this[t]=e),this._instanceProperties=void 0}connectedCallback(){this.enableUpdating()}enableUpdating(){void 0!==this._enableUpdatingResolver&&(this._enableUpdatingResolver(),this._enableUpdatingResolver=void 0)}disconnectedCallback(){}attributeChangedCallback(e,t,n){t!==n&&this._attributeToProperty(e,n)}_propertyToAttribute(e,t,n=cc){const r=this.constructor,i=r._attributeNameForProperty(e,n);if(void 0!==i){const e=r._propertyValueToAttribute(t,n);if(void 0===e)return;this._updateState=8|this._updateState,null==e?this.removeAttribute(i):this.setAttribute(i,e),this._updateState=-9&this._updateState}}_attributeToProperty(e,t){if(8&this._updateState)return;const n=this.constructor,r=n._attributeToPropertyMap.get(e);if(void 0!==r){const e=n.getPropertyOptions(r);this._updateState=16|this._updateState,this[r]=n._propertyValueFromAttribute(t,e),this._updateState=-17&this._updateState}}_requestUpdate(e,t){let n=!0;if(void 0!==e){const r=this.constructor,i=r.getPropertyOptions(e);r._valueHasChanged(this[e],t,i.hasChanged)?(this._changedProperties.has(e)||this._changedProperties.set(e,t),!0!==i.reflect||16&this._updateState||(void 0===this._reflectingProperties&&(this._reflectingProperties=new Map),this._reflectingProperties.set(e,i))):n=!1}!this._hasRequestedUpdate&&n&&(this._updatePromise=this._enqueueUpdate())}requestUpdate(e,t){return this._requestUpdate(e,t),this.updateComplete}async _enqueueUpdate(){this._updateState=4|this._updateState;try{await this._updatePromise}catch(e){}const e=this.performUpdate();return null!=e&&await e,!this._hasRequestedUpdate}get _hasRequestedUpdate(){return 4&this._updateState}get hasUpdated(){return 1&this._updateState}performUpdate(){this._instanceProperties&&this._applyInstanceProperties();let e=!1;const t=this._changedProperties;try{e=this.shouldUpdate(t),e?this.update(t):this._markUpdated()}catch(t){throw e=!1,this._markUpdated(),t}e&&(1&this._updateState||(this._updateState=1|this._updateState,this.firstUpdated(t)),this.updated(t))}_markUpdated(){this._changedProperties=new Map,this._updateState=-5&this._updateState}get updateComplete(){return this._getUpdateComplete()}_getUpdateComplete(){return this._updatePromise}shouldUpdate(e){return!0}update(e){void 0!==this._reflectingProperties&&this._reflectingProperties.size>0&&(this._reflectingProperties.forEach((e,t)=>this._propertyToAttribute(t,this[t],e)),this._reflectingProperties=void 0),this._markUpdated()}updated(e){}firstUpdated(e){}}lc.finalized=!0; /** @license Copyright (c) 2019 The Polymer Project Authors. All rights reserved. @@ -218,7 +225,7 @@ found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as part of the polymer project is also subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt */ -const ic="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,sc=Symbol();class oc{constructor(e,t){if(t!==sc)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){return void 0===this._styleSheet&&(ic?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}const ac=(e,...t)=>{const n=t.reduce((t,n,r)=>t+(e=>{if(e instanceof oc)return e.cssText;if("number"==typeof e)return e;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${e}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+e[r+1],e[0]);return new oc(n,sc)}; +const uc="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,dc=Symbol();class hc{constructor(e,t){if(t!==dc)throw new Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e}get styleSheet(){return void 0===this._styleSheet&&(uc?(this._styleSheet=new CSSStyleSheet,this._styleSheet.replaceSync(this.cssText)):this._styleSheet=null),this._styleSheet}toString(){return this.cssText}}const fc=(e,...t)=>{const n=t.reduce((t,n,r)=>t+(e=>{if(e instanceof hc)return e.cssText;if("number"==typeof e)return e;throw new Error(`Value passed to 'css' function must be a 'css' function result: ${e}. Use 'unsafeCSS' to pass non-literal values, but\n take care to ensure page security.`)})(n)+e[r+1],e[0]);return new hc(n,dc)}; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -232,53 +239,54 @@ const ic="adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.pr * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -(window.litElementVersions||(window.litElementVersions=[])).push("2.3.1");const cc={};class lc extends rc{static getStyles(){return this.styles}static _getUniqueStyles(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const e=this.getStyles();if(void 0===e)this._styles=[];else if(Array.isArray(e)){const t=(e,n)=>e.reduceRight((e,n)=>Array.isArray(n)?t(n,e):(e.add(n),e),n),n=t(e,new Set),r=[];n.forEach(e=>r.unshift(e)),this._styles=r}else this._styles=[e]}initialize(){super.initialize(),this.constructor._getUniqueStyles(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const e=this.constructor._styles;0!==e.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?ic?this.renderRoot.adoptedStyleSheets=e.map(e=>e.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(e.map(e=>e.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(e){const t=this.render();super.update(e),t!==cc&&this.constructor.render(t,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(e=>{const t=document.createElement("style");t.textContent=e.cssText,this.renderRoot.appendChild(t)}))}render(){return cc}}lc.finalized=!0,lc.render=(e,t,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const r=n.scopeName,i=$a.has(t),s=Xa&&11===t.nodeType&&!!t.host,o=s&&!Ka.has(r),a=o?document.createDocumentFragment():t;if(Wa(e,a,Object.assign({templateFactory:Qa(r)},n)),o){const e=$a.get(a);$a.delete(a);const n=e.value instanceof Ta?e.value.template:void 0;Za(r,a,n),da(t,t.firstChild),t.appendChild(a),$a.set(t,e)}!i&&s&&window.ShadyCSS.styleElement(t.host)};class uc extends lc{constructor(){super(),Object.assign(this,hi)}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this.stopListening()}}const dc=function(){this.handlers=[],this.checkUrl=this.checkUrl.bind(this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)};dc.extend=Wr;const hc=/^[#\/]|\s+$/g,fc=/^\/+|\/+$/g,pc=/#.*$/;dc.started=!1,Object.assign(dc.prototype,hi,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(e){return decodeURI(e.replace(/%25/g,"%2525"))},getSearch:function(){const e=this.location.href.replace(/#.*/,"").match(/\?.+/);return e?e[0]:""},getHash:function(e){const t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){const e=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===e.charAt(0)?e.slice(1):e},getFragment:function(e){return null==e&&(e=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),e.replace(hc,"")},start:function(e){if(dc.started)throw new Error("history has already been started");if(dc.started=!0,this.options=xr({root:"/"},this.options,e),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(fc,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){const e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;const e=document.body,t=e.insertBefore(this.iframe,e.firstChild).contentWindow;t.document.open(),t.document.close(),t.location.hash="#"+this.fragment}if(this._usePushState?addEventListener("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?addEventListener("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){this._usePushState?removeEventListener("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&removeEventListener("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),dc.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(e){let t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!1;this.iframe&&this.navigate(t),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),Uo(this.handlers,(function(t){if(t.route.test(e))return t.callback(e),!0})))},navigate:function(e,t){if(!dc.started)return!1;t&&!0!==t||(t={trigger:!!t}),e=this.getFragment(e||"");let n=this.root;""!==e&&"?"!==e.charAt(0)||(n=n.slice(0,-1)||"/");const r=n+e;e=e.replace(pc,"");const i=this.decodeFragment(e);if(this.fragment!==i){if(this.fragment=i,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getHash(this.iframe.contentWindow)){const n=this.iframe.contentWindow;t.replace||(n.document.open(),n.document.close()),this._updateHash(n.location,e,t.replace)}}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,n){if(n){const n=e.href.replace(/(javascript:|#).*$/,"");e.replace(n+"#"+t)}else e.hash="#"+t}});var gc=dc;var mc=function(e){return Ee(e)&&"[object RegExp]"==k(e)},vc=ze.a&&ze.a.isRegExp,_c=vc?Le(vc):mc;const bc=function(e={}){this.history=e.history||new gc,this.preinitialize.apply(this,arguments),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)};bc.extend=Wr;const yc=/\((.*?)\)/g,wc=/(\(\?)?:\w+/g,Sc=/\*\w+/g,xc=/[\-{}\[\]+?.,\\\^$|#\s]/g;Object.assign(bc.prototype,hi,{preinitialize:function(){},initialize:function(){},route:function(e,t,n){return _c(e)||(e=this._routeToRegExp(e)),M(t)&&(n=t,t=""),n||(n=this[t]),this.history.route(e,r=>{const i=this._extractParameters(e,r);!1!==this.execute(n,i,t)&&(this.trigger.apply(this,["route:"+t].concat(i)),this.trigger("route",t,i),this.history.trigger("route",this,t,i))}),this},execute:function(e,t,n){e&&e.apply(this,t)},navigate:function(e,t){return this.history.navigate(e,t),this},_bindRoutes:function(){if(!this.routes)return;let e;this.routes=$r(this,"routes");const t=Qe(this.routes);for(;null!=(e=t.pop());)this.route(e,this.routes[e])},_routeToRegExp:function(e){return e=e.replace(xc,"\\$&").replace(yc,"(?:$1)?").replace(wc,(function(e,t){return t?e:"([^/?]+)"})).replace(Sc,"([^?]*?)"),new RegExp("^"+e+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(e,t){const n=e.exec(t).slice(1);return n.map((function(e,t){return t===n.length-1?e||null:e?decodeURIComponent(e):null}))}});var Ec=n(3),Ac=function(){return y.a.Date.now()},Cc=Math.max,jc=Math.min;var Tc=function(e,t,n){var r,i,s,o,a,c,l=0,u=!1,d=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=r,s=i;return r=i=void 0,l=t,o=e.apply(s,n)}function p(e){return l=e,a=setTimeout(m,t),u?f(e):o}function g(e){var n=e-c;return void 0===c||n>=t||n<0||d&&e-l>=s}function m(){var e=Ac();if(g(e))return v(e);a=setTimeout(m,function(e){var n=t-(e-c);return d?jc(n,s-(e-l)):n}(e))}function v(e){return a=void 0,h&&r?f(e):(r=i=void 0,o)}function _(){var e=Ac(),n=g(e);if(r=arguments,i=this,c=e,n){if(void 0===a)return p(c);if(d)return clearTimeout(a),a=setTimeout(m,t),f(c)}return void 0===a&&(a=setTimeout(m,t)),o}return t=si(t)||0,N(n)&&(u=!!n.leading,s=(d="maxWait"in n)?Cc(si(n.maxWait)||0,t):s,h="trailing"in n?!!n.trailing:h),_.cancel=function(){void 0!==a&&clearTimeout(a),l=0,r=c=i=a=void 0},_.flush=function(){return void 0===a?o:v(Ac())},_};var Oc=function(e,t,n){t=Br(t,e);var r=null==(e=ws(e,t))?e:e[qr(bs(t))];return null==r?void 0:pr(r,e,n)},kc=wr(Oc),Nc=n(70); +(window.litElementVersions||(window.litElementVersions=[])).push("2.3.1");const pc={};class gc extends lc{static getStyles(){return this.styles}static _getUniqueStyles(){if(this.hasOwnProperty(JSCompiler_renameProperty("_styles",this)))return;const e=this.getStyles();if(void 0===e)this._styles=[];else if(Array.isArray(e)){const t=(e,n)=>e.reduceRight((e,n)=>Array.isArray(n)?t(n,e):(e.add(n),e),n),n=t(e,new Set),r=[];n.forEach(e=>r.unshift(e)),this._styles=r}else this._styles=[e]}initialize(){super.initialize(),this.constructor._getUniqueStyles(),this.renderRoot=this.createRenderRoot(),window.ShadowRoot&&this.renderRoot instanceof window.ShadowRoot&&this.adoptStyles()}createRenderRoot(){return this.attachShadow({mode:"open"})}adoptStyles(){const e=this.constructor._styles;0!==e.length&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow?uc?this.renderRoot.adoptedStyleSheets=e.map(e=>e.styleSheet):this._needsShimAdoptedStyleSheets=!0:window.ShadyCSS.ScopingShim.prepareAdoptedCssText(e.map(e=>e.cssText),this.localName))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&void 0!==window.ShadyCSS&&window.ShadyCSS.styleElement(this)}update(e){const t=this.render();super.update(e),t!==pc&&this.constructor.render(t,this.renderRoot,{scopeName:this.localName,eventContext:this}),this._needsShimAdoptedStyleSheets&&(this._needsShimAdoptedStyleSheets=!1,this.constructor._styles.forEach(e=>{const t=document.createElement("style");t.textContent=e.cssText,this.renderRoot.appendChild(t)}))}render(){return pc}}gc.finalized=!0,gc.render=(e,t,n)=>{if(!n||"object"!=typeof n||!n.scopeName)throw new Error("The `scopeName` option is required.");const r=n.scopeName,i=Qa.has(t),o=tc&&11===t.nodeType&&!!t.host,s=o&&!ic.has(r),a=s?document.createDocumentFragment():t;if(Ya(e,a,Object.assign({templateFactory:nc(r)},n)),s){const e=Qa.get(a);Qa.delete(a);const n=e.value instanceof Ra?e.value.template:void 0;oc(r,a,n),va(t,t.firstChild),t.appendChild(a),Qa.set(t,e)}!i&&o&&window.ShadyCSS.styleElement(t.host)};class mc extends gc{constructor(){super(),Object.assign(this,_i)}createRenderRoot(){return this}disconnectedCallback(){super.disconnectedCallback(),this.stopListening()}}const vc=function(){this.handlers=[],this.checkUrl=this.checkUrl.bind(this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)};vc.extend=Yr;const _c=/^[#\/]|\s+$/g,bc=/^\/+|\/+$/g,yc=/#.*$/;vc.started=!1,Object.assign(vc.prototype,_i,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(e){return decodeURI(e.replace(/%25/g,"%2525"))},getSearch:function(){const e=this.location.href.replace(/#.*/,"").match(/\?.+/);return e?e[0]:""},getHash:function(e){const t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getPath:function(){const e=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===e.charAt(0)?e.slice(1):e},getFragment:function(e){return null==e&&(e=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),e.replace(_c,"")},start:function(e){if(vc.started)throw new Error("history has already been started");if(vc.started=!0,this.options=Or({root:"/"},this.options,e),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(bc,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){const e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;const e=document.body,t=e.insertBefore(this.iframe,e.firstChild).contentWindow;t.document.open(),t.document.close(),t.location.hash="#"+this.fragment}if(this._usePushState?addEventListener("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?addEventListener("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){this._usePushState?removeEventListener("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&removeEventListener("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),vc.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(e){let t=this.getFragment();if(t===this.fragment&&this.iframe&&(t=this.getHash(this.iframe.contentWindow)),t===this.fragment)return!1;this.iframe&&this.navigate(t),this.loadUrl()},loadUrl:function(e){return!!this.matchRoot()&&(e=this.fragment=this.getFragment(e),Xs(this.handlers,(function(t){if(t.route.test(e))return t.callback(e),!0})))},navigate:function(e,t){if(!vc.started)return!1;t&&!0!==t||(t={trigger:!!t}),e=this.getFragment(e||"");let n=this.root;""!==e&&"?"!==e.charAt(0)||(n=n.slice(0,-1)||"/");const r=n+e;e=e.replace(yc,"");const i=this.decodeFragment(e);if(this.fragment!==i){if(this.fragment=i,this._usePushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getHash(this.iframe.contentWindow)){const n=this.iframe.contentWindow;t.replace||(n.document.open(),n.document.close()),this._updateHash(n.location,e,t.replace)}}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,n){if(n){const n=e.href.replace(/(javascript:|#).*$/,"");e.replace(n+"#"+t)}else e.hash="#"+t}});var wc=vc;var Sc=function(e){return Ee(e)&&"[object RegExp]"==k(e)},xc=ze.a&&ze.a.isRegExp,Ec=xc?Le(xc):Sc;const Ac=function(e={}){this.history=e.history||new wc,this.preinitialize.apply(this,arguments),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)};Ac.extend=Yr;const Cc=/\((.*?)\)/g,jc=/(\(\?)?:\w+/g,Tc=/\*\w+/g,Oc=/[\-{}\[\]+?.,\\\^$|#\s]/g;Object.assign(Ac.prototype,_i,{preinitialize:function(){},initialize:function(){},route:function(e,t,n){return Ec(e)||(e=this._routeToRegExp(e)),M(t)&&(n=t,t=""),n||(n=this[t]),this.history.route(e,r=>{const i=this._extractParameters(e,r);!1!==this.execute(n,i,t)&&(this.trigger.apply(this,["route:"+t].concat(i)),this.trigger("route",t,i),this.history.trigger("route",this,t,i))}),this},execute:function(e,t,n){e&&e.apply(this,t)},navigate:function(e,t){return this.history.navigate(e,t),this},_bindRoutes:function(){if(!this.routes)return;let e;this.routes=Qr(this,"routes");const t=Qe(this.routes);for(;null!=(e=t.pop());)this.route(e,this.routes[e])},_routeToRegExp:function(e){return e=e.replace(Oc,"\\$&").replace(Cc,"(?:$1)?").replace(jc,(function(e,t){return t?e:"([^/?]+)"})).replace(Tc,"([^?]*?)"),new RegExp("^"+e+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(e,t){const n=e.exec(t).slice(1);return n.map((function(e,t){return t===n.length-1?e||null:e?decodeURIComponent(e):null}))}});var kc=n(1),Nc=function(){return y.a.Date.now()},Ic=Math.max,Mc=Math.min;var Rc=function(e,t,n){var r,i,o,s,a,c,l=0,u=!1,d=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function f(t){var n=r,o=i;return r=i=void 0,l=t,s=e.apply(o,n)}function p(e){return l=e,a=setTimeout(m,t),u?f(e):s}function g(e){var n=e-c;return void 0===c||n>=t||n<0||d&&e-l>=o}function m(){var e=Nc();if(g(e))return v(e);a=setTimeout(m,function(e){var n=t-(e-c);return d?Mc(n,o-(e-l)):n}(e))}function v(e){return a=void 0,h&&r?f(e):(r=i=void 0,s)}function _(){var e=Nc(),n=g(e);if(r=arguments,i=this,c=e,n){if(void 0===a)return p(c);if(d)return clearTimeout(a),a=setTimeout(m,t),f(c)}return void 0===a&&(a=setTimeout(m,t)),s}return t=di(t)||0,N(n)&&(u=!!n.leading,o=(d="maxWait"in n)?Ic(di(n.maxWait)||0,t):o,h="trailing"in n?!!n.trailing:h),_.cancel=function(){void 0!==a&&clearTimeout(a),l=0,r=c=i=a=void 0},_.flush=function(){return void 0===a?s:v(Nc())},_};var Dc=function(e,t,n){t=Gr(t,e);var r=null==(e=To(e,t))?e:e[Vr(Co(t))];return null==r?void 0:yr(r,e,n)},Pc=jr(Dc),Lc=n(94); /** * @module converse-core * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) */ -Sn.a.extend(yn.a),Ec.e.addNamespace("CARBONS","urn:xmpp:carbons:2"),Ec.e.addNamespace("CHATSTATES","http://jabber.org/protocol/chatstates"),Ec.e.addNamespace("CSI","urn:xmpp:csi:0"),Ec.e.addNamespace("DELAY","urn:xmpp:delay"),Ec.e.addNamespace("FASTEN","urn:xmpp:fasten:0"),Ec.e.addNamespace("FORWARD","urn:xmpp:forward:0"),Ec.e.addNamespace("HINTS","urn:xmpp:hints"),Ec.e.addNamespace("HTTPUPLOAD","urn:xmpp:http:upload:0"),Ec.e.addNamespace("IDLE","urn:xmpp:idle:1"),Ec.e.addNamespace("MAM","urn:xmpp:mam:2"),Ec.e.addNamespace("MODERATE","urn:xmpp:message-moderate:0"),Ec.e.addNamespace("NICK","http://jabber.org/protocol/nick"),Ec.e.addNamespace("OMEMO","eu.siacs.conversations.axolotl"),Ec.e.addNamespace("OUTOFBAND","jabber:x:oob"),Ec.e.addNamespace("PUBSUB","http://jabber.org/protocol/pubsub"),Ec.e.addNamespace("REGISTER","jabber:iq:register"),Ec.e.addNamespace("RETRACT","urn:xmpp:message-retract:0"),Ec.e.addNamespace("ROSTERX","http://jabber.org/protocol/rosterx"),Ec.e.addNamespace("RSM","http://jabber.org/protocol/rsm"),Ec.e.addNamespace("SID","urn:xmpp:sid:0"),Ec.e.addNamespace("SPOILER","urn:xmpp:spoiler:0"),Ec.e.addNamespace("STANZAS","urn:ietf:params:xml:ns:xmpp-stanzas"),Ec.e.addNamespace("VCARD","vcard-temp"),Ec.e.addNamespace("VCARDUPDATE","vcard-temp:x:update"),Ec.e.addNamespace("XFORM","jabber:x:data");class Ic extends Error{}const Mc=["converse-adhoc","converse-bookmarks","converse-bosh","converse-caps","converse-carbons","converse-chat","converse-chatboxes","converse-disco","converse-emoji","converse-headlines","converse-mam","converse-muc","converse-ping","converse-pubsub","converse-roster","converse-smacks","converse-status","converse-vcard"],Rc={allow_non_roster_messaging:!1,assets_path:"/dist",authentication:"login",auto_login:!1,auto_reconnect:!0,blacklisted_plugins:[],connection_options:{},credentials_url:null,discover_connection_methods:!0,geouri_regex:/https\:\/\/www.openstreetmap.org\/.*#map=[0-9]+\/([\-0-9.]+)\/([\-0-9.]+)\S*/g,geouri_replacement:"https://www.openstreetmap.org/?mlat=$1&mlon=$2#map=18/$1/$2",idle_presence_timeout:300,i18n:"en",jid:void 0,keepalive:!0,loglevel:"info",locales:["af","ar","bg","ca","cs","de","eo","es","eu","en","fi","fr","gl","he","hi","hu","id","it","ja","nb","nl","mr","oc","pl","pt","pt_BR","ro","ru","tr","uk","vi","zh_CN","zh_TW"],nickname:void 0,password:void 0,persistent_store:"localStorage",rid:void 0,root:window.document,sid:void 0,singleton:!1,strict_plugin_dependencies:!1,trusted:!0,view_mode:"overlayed",websocket_url:void 0,whitelisted_plugins:[]},Dc={};Dc[Ec.e.Status.ATTACHED]="ATTACHED",Dc[Ec.e.Status.AUTHENTICATING]="AUTHENTICATING",Dc[Ec.e.Status.AUTHFAIL]="AUTHFAIL",Dc[Ec.e.Status.CONNECTED]="CONNECTED",Dc[Ec.e.Status.CONNECTING]="CONNECTING",Dc[Ec.e.Status.CONNFAIL]="CONNFAIL",Dc[Ec.e.Status.DISCONNECTED]="DISCONNECTED",Dc[Ec.e.Status.DISCONNECTING]="DISCONNECTING",Dc[Ec.e.Status.ERROR]="ERROR",Dc[Ec.e.Status.RECONNECTING]="RECONNECTING",Dc[Ec.e.Status.REDIRECT]="REDIRECT";const Pc={initialize(){},__:(...e)=>Object(Nc.sprintf)(...e)},Lc={log:Pn,CONNECTION_STATUS:Dc,templates:{},promises:{initialized:qs.getResolveablePromise()},STATUS_WEIGHTS:{offline:6,unavailable:5,xa:4,away:3,dnd:2,chat:1,online:1},ANONYMOUS:"anonymous",CLOSED:"closed",EXTERNAL:"external",LOGIN:"login",LOGOUT:"logout",OPENED:"opened",PREBIND:"prebind",STANZA_TIMEOUT:1e4,SUCCESS:"success",FAILURE:"failure",DEFAULT_IMAGE_TYPE:"image/svg+xml",DEFAULT_IMAGE:"PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+CiA8cmVjdCB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgZmlsbD0iIzU1NSIvPgogPGNpcmNsZSBjeD0iNjQiIGN5PSI0MSIgcj0iMjQiIGZpbGw9IiNmZmYiLz4KIDxwYXRoIGQ9Im0yOC41IDExMiB2LTEyIGMwLTEyIDEwLTI0IDI0LTI0IGgyMyBjMTQgMCAyNCAxMiAyNCAyNCB2MTIiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==",TIMEOUTS:{PAUSED:1e4,INACTIVE:9e4},INACTIVE:"inactive",ACTIVE:"active",COMPOSING:"composing",PAUSED:"paused",GONE:"gone",PRIVATE_CHAT_TYPE:"chatbox",CHATROOMS_TYPE:"chatroom",HEADLINES_TYPE:"headline",CONTROLBOX_TYPE:"controlbox",default_connection_options:{explicitResourceBinding:!0},router:new bc,TimeoutError:Ic,isTestEnv:()=>"montague.lit/http-bind"===Fc.bosh_service_url,__:(...e)=>Pc.__(...e),___:e=>e};let zc;Lc.VERSION_NAME="v6.0.1dev",Object.assign(Lc,hi),cr.enable(Lc,"_converse","pluggable");let Fc={};function Bc(){var e;if(!Lc.bare_jid){const e="No JID to fetch user settings for";throw Pn.error(e),Error(e)}if(!(null===(e=zc)||void 0===e?void 0:e.fetched)){const e="converse.user-settings.".concat(Lc.bare_jid);zc=new Rs({id:e}),zc.browserStorage=Uc(e),zc.fetched=zc.fetch({promise:!0})}return zc.fetched}const qc=Lc.api={connection:{connected(){var e;return(null==Lc||null===(e=Lc.connection)||void 0===e?void 0:e.connected)&&!0},disconnect(){Lc.connection&&Lc.connection.disconnect()},async reconnect(){const e=Lc.connfeedback.get("connection_status");if(qc.settings.get("authentication")===Lc.ANONYMOUS&&(await $c(),await Vc()),e===Ec.e.Status.CONNFAIL?qc.connection.isType("websocket")&&qc.settings.get("bosh_service_url")?(await Lc.setUserJID(Lc.bare_jid),Lc.connection._proto._doDisconnect(),Lc.connection._proto=new Ec.e.Bosh(Lc.connection),Lc.connection.service=qc.settings.get("bosh_service_url")):qc.connection.isType("bosh")&&qc.settings.get("websocket_url")&&(qc.settings.get("authentication")===Lc.ANONYMOUS?await Lc.setUserJID(qc.settings.get("jid")):await Lc.setUserJID(Lc.bare_jid),Lc.connection._proto._doDisconnect(),Lc.connection._proto=new Ec.e.Websocket(Lc.connection),Lc.connection.service=qc.settings.get("websocket_url")):e===Ec.e.Status.AUTHFAIL&&qc.settings.get("authentication")===Lc.ANONYMOUS&&await Lc.setUserJID(qc.settings.get("jid")),!Lc.connection.reconnecting)return Lc.connection.reconnect();Lc.connection.debouncedReconnect()},isType:e=>Lc.connection.isType(e)},async trigger(e){if(!Lc._events)return;const t=Array.from(arguments),n=t.pop();if(n&&n.synchronous){const n=Lc._events[e]||[];await Promise.all(n.map(e=>e.callback.apply(e.ctx,t.splice(1))))}else Lc.trigger.apply(Lc,arguments);const r=Lc.promises[e];void 0!==r&&r.resolve()},hook(e,t,n){const r=Lc._events[e]||[];if(r.length){const e=r.reduce((e,n)=>e.then(e=>n.callback(t,e)),Promise.resolve(n));return e.catch(e=>{throw Pn.error(e),e}),e}return n},user:{jid:()=>Lc.connection.jid,async login(e,t,n=!1){var r,i;if(e=e||Lc.jid,(!(null===(r=Lc.connection)||void 0===r?void 0:r.jid)||e&&!qs.isSameDomain(Lc.connection.jid,e))&&await Lc.initConnection(),(null===(i=qc.settings.get("connection_options"))||void 0===i?void 0:i.worker)&&await Lc.connection.restoreWorkerSession())return;e&&(e=await Lc.setUserJID(e));const s=Lc.pluggable.plugins["converse-bosh"];if(s&&s.enabled()){if(await Lc.restoreBOSHSession())return;if(qc.settings.get("authentication")===Lc.PREBIND&&(!n||qc.settings.get("auto_login")))return Lc.startNewPreboundBOSHSession()}t=t||qc.settings.get("password"),async function(e,t){const{api:n}=Lc;n.settings.get("authentication")===Lc.LOGIN?e?Wc(e):Lc.api.settings.get("credentials_url")?Wc(await async function(){let e,t=0;for(;!e;){try{e=await Qc(t)}catch(e){Pn.error("Could not fetch login credentials"),Pn.error(e)}t=2e3}return e}()):Lc.jid&&(Lc.api.settings.get("password")||Lc.connection.pass)?Wc():!Lc.isTestEnv()&&"credentials"in navigator?Wc(await async function(){try{const e=await navigator.credentials.get({password:!0});if(e&&"password"==e.type&&qs.isValidJID(e.id))return await Lc.setUserJID(e.id),{jid:e.id,password:e.password}}catch(e){Pn.error(e)}}()):!Lc.isTestEnv()&&Pn.warn("attemptNonPreboundSession: Couldn't find credentials to log in with"):![Lc.ANONYMOUS,Lc.EXTERNAL].includes(Lc.api.settings.get("authentication"))||t&&!Lc.api.settings.get("auto_login")||Wc()}(e&&t?{jid:e,password:t}:null,n)},logout(){const e=qs.getResolveablePromise(),t=()=>{Object.keys(Lc.promises).forEach(Hc),delete Lc.jid,qc.trigger("logout"),e.resolve()};return Lc.connection.setDisconnectionCause(Lc.LOGOUT,void 0,!0),void 0!==Lc.connection?(qc.listen.once("disconnected",()=>t()),Lc.connection.disconnect()):t(),e},settings:{getModel:async()=>(await Bc(),zc),get:async(e,t)=>(await Bc(),void 0===zc.get(e)?t:zc.get(e)),async set(e,t){if(await Bc(),N(e))return zc.save(e,{promise:!0});{const n={};return n[e]=t,zc.save(n,{promise:!0})}},async clear(){await Bc(),zc.clear()}}},settings:{extend(e){qs.merge(Rc,e);const t=Object.keys(Ms(e,Object.keys(Rc))),n=Ms(Fc,t),r=xr(Ms(e,t),n);qs.merge(Lc.settings,r),qs.merge(Lc,r)},update(e){return Pn.warn("The api.settings.update method has been deprecated and will be removed. Please use api.settings.extend instead."),this.extend(e)},get(e){if(Object.keys(Rc).includes(e))return Lc[e]},set(e,t){const n={};N(e)?(xr(Lc,Ms(e,Object.keys(Rc))),xr(Lc.settings,Ms(e,Object.keys(Rc)))):"string"==typeof e&&(n[e]=t,xr(Lc,Ms(n,Object.keys(Rc))),xr(Lc.settings,Ms(n,Object.keys(Rc))))}},promises:{add(e,t=!0){(e=Array.isArray(e)?e:[e]).forEach(e=>{const n=qs.getResolveablePromise();n.replace=t,Lc.promises[e]=n})}},listen:{once:Lc.once.bind(Lc),on:Lc.on.bind(Lc),not:Lc.off.bind(Lc),stanza(e,t,n){M(t)?(n=t,t={}):t=t||{},Lc.connection.addHandler(n,t.ns,e,t.type,t.id,t.from,t)}},waitUntil(e){if(M(e))return qs.waitUntil(e);{const t=Lc.promises[e];return void 0===t?null:t}},send:e=>qc.connection.connected()?("string"==typeof e&&(e=qs.toStanza(e)),"iq"===e.tagName?qc.sendIQ(e):(Lc.connection.send(e),void qc.trigger("send",e))):(Pn.warn("Not sending stanza because we're not connected!"),void Pn.warn(Ec.e.serialize(e))),sendIQ(e,t=Lc.STANZA_TIMEOUT,n=!0){var r,i;let s;return e=null!==(r=null===(i=e)||void 0===i?void 0:i.nodeTree)&&void 0!==r?r:e,["get","set"].includes(e.getAttribute("type"))?(t=t||Lc.STANZA_TIMEOUT,n?(s=new Promise((n,r)=>Lc.connection.sendIQ(e,n,r,t)),s.catch(n=>{if(null===n)throw new Ic("Timeout error after ".concat(t,"ms for the following IQ stanza: ").concat(Ec.e.serialize(e)))})):s=new Promise(n=>Lc.connection.sendIQ(e,n,n,t))):(Lc.connection.sendIQ(e),s=Promise.resolve()),qc.trigger("send",e),s}};function Hc(e){const t=Lc.promises[e];if(!t)throw new Error("Tried to replace non-existing promise: ".concat(e));if(t.replace){const n=qs.getResolveablePromise();n.replace=t.replace,Lc.promises[e]=n}else Pn.debug('Not replacing promise "'.concat(e,'"'))}function Uc(e,t){const n=Lc.storage[t||Lc.config.get("storage")];return new _n(e,n)}async function $c(){return await Lc.api.trigger("beforeTearDown",{synchronous:!0}),window.removeEventListener("click",Lc.onUserActivity),window.removeEventListener("focus",Lc.onUserActivity),window.removeEventListener("keypress",Lc.onUserActivity),window.removeEventListener("mousemove",Lc.onUserActivity),window.removeEventListener(Lc.unloadevent,Lc.onUserActivity),window.clearInterval(Lc.everySecondTrigger),Lc.api.trigger("afterTearDown"),Lc}function Wc(e){if([Lc.ANONYMOUS,Lc.EXTERNAL].includes(Lc.api.settings.get("authentication"))){if(!Lc.jid)throw new Error("Config Error: when using anonymous login you need to provide the server's domain via the 'jid' option. Either when calling converse.initialize, or when calling _converse.api.user.login.");Lc.connection.reconnecting||Lc.connection.reset(),Lc.connection.connect(Lc.jid.toLowerCase())}else if(Lc.api.settings.get("authentication")===Lc.LOGIN){var t;const n=e?e.password:(null===(t=Lc.connection)||void 0===t?void 0:t.pass)||Lc.api.settings.get("password");if(!n){if(Lc.api.settings.get("auto_login"))throw new Error("autoLogin: If you use auto_login and authentication='login' then you also need to provide a password.");return Lc.connection.setDisconnectionCause(Ec.e.Status.AUTHFAIL,void 0,!0),void Lc.api.connection.disconnect()}Lc.connection.reconnecting||Lc.connection.reset(),Lc.connection.connect(Lc.jid,n)}}function Vc(){var e;return null===(e=Lc.session)||void 0===e||e.destroy(),delete Lc.session,Lc.shouldClearCache()&&Lc.api.user.settings.clear(),Lc.api.trigger("clearSession",{synchronous:!0})}async function Gc(e){var t;const n=qc.settings.get("connection_options").worker,r=Ec.e.getBareJidFromJid(e).toLowerCase(),i="converse.session-".concat(r);(null===(t=Lc.session)||void 0===t?void 0:t.get("id"))!==i?(Lc.session=new Rs({id:i}),Lc.session.browserStorage=Uc(i,n?"persistent":"session"),await new Promise(e=>Lc.session.fetch({success:e,error:e})),!n&&Lc.session.get("active")&&(Lc.session.clear(),Lc.session.save({id:i})),Jc(e),function(){if("persistent"!==Lc.config.get("storage"))return;const e={name:Lc.isTestEnv()?"converse-test-persistent":"converse-persistent",storeName:Lc.bare_jid};"localStorage"===Lc.api.settings.get("persistent_store")?(e.description="localStorage instance",e.driver=[_n.localForage.LOCALSTORAGE]):"IndexedDB"===Lc.api.settings.get("persistent_store")&&(e.description="indexedDB instance",e.driver=[_n.localForage.INDEXEDDB]),Lc.storage.persistent=_n.localForage.createInstance(e)}(),Lc.api.trigger("userSessionInitialized")):Jc(e)}function Jc(e){e=Lc.session.get("jid")||e,Lc.api.settings.get("authentication")===Lc.ANONYMOUS||Ec.e.getResourceFromJid(e)||(e=e.toLowerCase()+aa.generateResource()),Lc.jid=e,Lc.bare_jid=Ec.e.getBareJidFromJid(e),Lc.resource=Ec.e.getResourceFromJid(e),Lc.domain=Ec.e.getDomainFromJid(e),Lc.session.save({jid:e,bare_jid:Lc.bare_jid,resource:Lc.resource,domain:Lc.domain,active:!0}),Lc.connection.jid=e}async function Xc(){var e;await qc.trigger("cleanup",{synchronous:!0}),Lc.router.history.stop(),document.removeEventListener("visibilitychange",Lc.saveWindowState),qc.trigger("unregisteredGlobalEventHandlers"),null===(e=Lc.connection)||void 0===e||e.reset(),Lc.stopListening(),Lc.off(),Lc.promises.initialized.isResolved&&qc.promises.add("initialized")}function Qc(e=0){return new Promise(Tc((e,t)=>{const n=new XMLHttpRequest;n.open("GET",qc.settings.get("credentials_url"),!0),n.setRequestHeader("Accept","application/json, text/javascript"),n.onload=()=>{if(n.status>=200&&n.status<400){const t=JSON.parse(n.responseText);Lc.setUserJID(t.jid).then(()=>{e({jid:t.jid,password:t.password})})}else t(new Error("".concat(n.status,": ").concat(n.responseText)))},n.onerror=t,n.send()},e))}Lc.isUniView=function(){return["mobile","fullscreen","embedded"].includes(qc.settings.get("view_mode"))},Lc.createStore=Uc,Lc.shouldClearCache=()=>!Lc.config.get("trusted")||Lc.isTestEnv(),Lc.initConnection=function(){const e=Lc.api;if(!e.settings.get("bosh_service_url")){if(e.settings.get("authentication")===Lc.PREBIND)throw new Error("authentication is set to 'prebind' but we don't have a BOSH connection");if(!e.settings.get("websocket_url"))throw new Error("initConnection: you must supply a value for either the bosh_service_url or websocket_url or both.")}const t=Lc.isTestEnv()?ca:aa;if(("WebSocket"in window||"MozWebSocket"in window)&&e.settings.get("websocket_url"))Lc.connection=new t(e.settings.get("websocket_url"),Object.assign(Lc.default_connection_options,e.settings.get("connection_options")));else{if(!e.settings.get("bosh_service_url"))throw new Error("initConnection: this browser does not support websockets and bosh_service_url wasn't specified.");Lc.connection=new t(e.settings.get("bosh_service_url"),Object.assign(Lc.default_connection_options,e.settings.get("connection_options"),{keepalive:e.settings.get("keepalive")}))}!function(){const e={};e[Ec.e.LogLevel.DEBUG]="debug",e[Ec.e.LogLevel.INFO]="info",e[Ec.e.LogLevel.WARN]="warn",e[Ec.e.LogLevel.ERROR]="error",e[Ec.e.LogLevel.FATAL]="fatal",Ec.e.log=(t,n)=>Pn.log(n,e[t]),Ec.e.error=e=>Pn.error(e),Lc.connection.xmlInput=e=>Pn.debug(e.outerHTML,"color: darkgoldenrod"),Lc.connection.xmlOutput=e=>Pn.debug(e.outerHTML,"color: darkcyan")}(),e.trigger("connectionInitialized")},Lc.setUserJID=async function(e){return await Gc(e),Lc.api.trigger("setUserJID"),e},Lc.saveWindowState=function(e){let t;const n={focus:"visible",focusin:"visible",pageshow:"visible",blur:"hidden",focusout:"hidden",pagehide:"hidden"};t=(e=e||document.createEvent("Events")).type in n?n[e.type]:document.hidden?"hidden":"visible",Lc.windowState=t,qc.trigger("windowStateChanged",{state:t})},Lc.ConnectionFeedback=Rs.extend({defaults:{connection_status:Ec.e.Status.DISCONNECTED,message:""},initialize(){this.on("change",()=>qc.trigger("connfeedback",Lc.connfeedback))}});const Yc=window.converse||{};Object.assign(Yc,{CHAT_STATES:["active","composing","gone","inactive","paused"],keycodes:{TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESCAPE:27,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,FORWARD_SLASH:47,AT:50,META:91,META_RIGHT:93},async initialize(e){if(await Xc(),"onpagehide"in window?Lc.unloadevent="pagehide":"onbeforeunload"in window?Lc.unloadevent="beforeunload":"onunload"in window&&(Lc.unloadevent="unload"),function(e){Lc.settings={},Fc=e;const t=Ms(e,Object.keys(Rc));xr(Lc.settings,Rc,t),xr(Lc,Rc,t)}(e),Lc.strict_plugin_dependencies=e.strict_plugin_dependencies,Pn.setLogLevel(qc.settings.get("loglevel")),qc.settings.get("authentication")===Lc.ANONYMOUS&&qc.settings.get("auto_login")&&!qc.settings.get("jid"))throw new Error("Config Error: you need to provide the server's domain via the 'jid' option when using anonymous authentication with auto_login.");Lc.router.route(/^converse\?loglevel=(debug|info|warn|error|fatal)$/,"loglevel",e=>Pn.setLogLevel(e)),Lc.connfeedback=new Lc.ConnectionFeedback,Lc.send_initial_presence=!0,await async function(){await _n.sessionStorageInitialized,Lc.storage={session:_n.localForage.createInstance({name:Lc.isTestEnv()?"converse-test-session":"converse-session",description:"sessionStorage instance",driver:["sessionStorageWrapper"]})}}(),function(){const e="converse.client-config";Lc.config=new Rs({id:e,trusted:!!Lc.api.settings.get("trusted"),storage:Lc.api.settings.get("trusted")?"persistent":"session"}),Lc.config.browserStorage=Uc(e,"session"),Lc.config.fetch(),Lc.api.trigger("clientConfigInitialized")}(),await Pc.initialize(),function(){Lc.pluggable.initialized_plugins=[];const e=Mc.concat(Lc.api.settings.get("whitelisted_plugins"));Lc.api.settings.get("singleton")&&["converse-bookmarks","converse-controlbox","converse-headline","converse-register"].forEach(e=>Lc.api.settings.get("blacklisted_plugins").push(e)),Lc.pluggable.initializePlugins({_converse:Lc},e,Lc.api.settings.get("blacklisted_plugins")),Lc.api.trigger("pluginsInitialized")}(),document.addEventListener("visibilitychange",Lc.saveWindowState),Lc.saveWindowState({type:document.hidden?"blur":"focus"}),qc.trigger("registeredGlobalEventHandlers"),!History.started&&Lc.router.history.start(),qc.settings.get("idle_presence_timeout")>0&&qc.listen.on("addClientFeatures",()=>qc.disco.own.features.add(Ec.e.NS.IDLE));const t=Lc.pluggable.plugins;if((qc.settings.get("auto_login")||qc.settings.get("keepalive")&&kc(t["converse-bosh"],"enabled"))&&await qc.user.login(null,null,!0),qc.trigger("initialized"),Lc.isTestEnv())return Lc},plugins:{add(e,t){if(t.__name__=e,void 0!==Lc.pluggable.plugins[e])throw new TypeError('Error: plugin with name "'.concat(e,'" has already been ')+"registered!");Lc.pluggable.plugins[e]=t}},env:{$build:Ec.a,$iq:Ec.b,$msg:Ec.c,$pres:Ec.d,utils:qs,Collection:Yo,CustomElement:uc,Model:Rs,Promise:Promise,Strophe:Ec.e,dayjs:Sn.a,html:Ga,log:Pn,sizzle:ur.a,sprintf:Nc.sprintf,stanza_utils:ao,u:qs}});const Kc=new CustomEvent("converse-loaded");Kc.converse=Yc,window.dispatchEvent(Kc);const{Strophe:Zc}=Yc.env;let el,tl;Zc.addNamespace("ADHOC","http://jabber.org/protocol/commands");const nl={adhoc:{async getCommands(e){let t=[];try{n=await tl.disco.items(e,Zc.NS.ADHOC),t=ur()('query[xmlns="'.concat(Zc.NS.DISCO_ITEMS,'"][node="').concat(Zc.NS.ADHOC,'"] item'),n).map(ao.getAttributes)}catch(t){null===t?Pn.error("Error: timeout while fetching ad-hoc commands for ".concat(e)):(Pn.error("Error while fetching ad-hoc commands for ".concat(e)),Pn.error(t))}var n;return t}}};Yc.plugins.add("converse-adhoc",{dependencies:["converse-disco"],initialize(){el=this._converse,tl=el.api,Object.assign(tl,nl)}});var rl=n(128),il=n.n(rl);var sl=function(e){return function(t,n,r){var i=Object(t);if(!Xe(t)){var s=vs(n,3);t=Qe(t),n=function(e){return s(i[e],e,i)}}var o=e(t,n,r);return o>-1?i[s?t[o]:o]:void 0}}(Oo);var ol=function(e,t){return e===t||is(e,t,os(t))}; +En.a.extend(Sn.a),kc.e.addNamespace("CARBONS","urn:xmpp:carbons:2"),kc.e.addNamespace("CHATSTATES","http://jabber.org/protocol/chatstates"),kc.e.addNamespace("CSI","urn:xmpp:csi:0"),kc.e.addNamespace("DELAY","urn:xmpp:delay"),kc.e.addNamespace("FASTEN","urn:xmpp:fasten:0"),kc.e.addNamespace("FORWARD","urn:xmpp:forward:0"),kc.e.addNamespace("HINTS","urn:xmpp:hints"),kc.e.addNamespace("HTTPUPLOAD","urn:xmpp:http:upload:0"),kc.e.addNamespace("IDLE","urn:xmpp:idle:1"),kc.e.addNamespace("MAM","urn:xmpp:mam:2"),kc.e.addNamespace("MODERATE","urn:xmpp:message-moderate:0"),kc.e.addNamespace("NICK","http://jabber.org/protocol/nick"),kc.e.addNamespace("OMEMO","eu.siacs.conversations.axolotl"),kc.e.addNamespace("OUTOFBAND","jabber:x:oob"),kc.e.addNamespace("PUBSUB","http://jabber.org/protocol/pubsub"),kc.e.addNamespace("REGISTER","jabber:iq:register"),kc.e.addNamespace("RETRACT","urn:xmpp:message-retract:0"),kc.e.addNamespace("ROSTERX","http://jabber.org/protocol/rosterx"),kc.e.addNamespace("RSM","http://jabber.org/protocol/rsm"),kc.e.addNamespace("SID","urn:xmpp:sid:0"),kc.e.addNamespace("SPOILER","urn:xmpp:spoiler:0"),kc.e.addNamespace("STANZAS","urn:ietf:params:xml:ns:xmpp-stanzas"),kc.e.addNamespace("STYLING","urn:xmpp:styling:0"),kc.e.addNamespace("VCARD","vcard-temp"),kc.e.addNamespace("VCARDUPDATE","vcard-temp:x:update"),kc.e.addNamespace("XFORM","jabber:x:data");class zc extends Error{}const Fc=["converse-adhoc","converse-bookmarks","converse-bosh","converse-caps","converse-carbons","converse-chat","converse-chatboxes","converse-disco","converse-emoji","converse-headlines","converse-mam","converse-muc","converse-ping","converse-pubsub","converse-roster","converse-smacks","converse-status","converse-vcard"],Bc={allow_non_roster_messaging:!1,assets_path:"/dist",authentication:"login",auto_login:!1,auto_reconnect:!0,blacklisted_plugins:[],clear_cache_on_logout:!1,connection_options:{},credentials_url:null,discover_connection_methods:!0,geouri_regex:/https\:\/\/www.openstreetmap.org\/.*#map=[0-9]+\/([\-0-9.]+)\/([\-0-9.]+)\S*/g,geouri_replacement:"https://www.openstreetmap.org/?mlat=$1&mlon=$2#map=18/$1/$2",i18n:"en",idle_presence_timeout:300,jid:void 0,keepalive:!0,loglevel:"info",locales:["af","ar","bg","ca","cs","de","eo","es","eu","en","fi","fr","gl","he","hi","hu","id","it","ja","nb","nl","mr","oc","pl","pt","pt_BR","ro","ru","tr","uk","vi","zh_CN","zh_TW"],nickname:void 0,password:void 0,persistent_store:"localStorage",rid:void 0,root:window.document,sid:void 0,singleton:!1,strict_plugin_dependencies:!1,view_mode:"overlayed",websocket_url:void 0,whitelisted_plugins:[]},qc={};qc[kc.e.Status.ATTACHED]="ATTACHED",qc[kc.e.Status.AUTHENTICATING]="AUTHENTICATING",qc[kc.e.Status.AUTHFAIL]="AUTHFAIL",qc[kc.e.Status.CONNECTED]="CONNECTED",qc[kc.e.Status.CONNECTING]="CONNECTING",qc[kc.e.Status.CONNFAIL]="CONNFAIL",qc[kc.e.Status.DISCONNECTED]="DISCONNECTED",qc[kc.e.Status.DISCONNECTING]="DISCONNECTING",qc[kc.e.Status.ERROR]="ERROR",qc[kc.e.Status.RECONNECTING]="RECONNECTING",qc[kc.e.Status.REDIRECT]="REDIRECT";const Hc={initialize(){},__:(...e)=>Object(Lc.sprintf)(...e)},Uc={log:zn,CONNECTION_STATUS:qc,templates:{},promises:{initialized:Jo.getResolveablePromise()},STATUS_WEIGHTS:{offline:6,unavailable:5,xa:4,away:3,dnd:2,chat:1,online:1},ANONYMOUS:"anonymous",CLOSED:"closed",EXTERNAL:"external",LOGIN:"login",LOGOUT:"logout",OPENED:"opened",PREBIND:"prebind",STANZA_TIMEOUT:1e4,SUCCESS:"success",FAILURE:"failure",DEFAULT_IMAGE_TYPE:"image/svg+xml",DEFAULT_IMAGE:"PD94bWwgdmVyc2lvbj0iMS4wIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+CiA8cmVjdCB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgZmlsbD0iIzU1NSIvPgogPGNpcmNsZSBjeD0iNjQiIGN5PSI0MSIgcj0iMjQiIGZpbGw9IiNmZmYiLz4KIDxwYXRoIGQ9Im0yOC41IDExMiB2LTEyIGMwLTEyIDEwLTI0IDI0LTI0IGgyMyBjMTQgMCAyNCAxMiAyNCAyNCB2MTIiIGZpbGw9IiNmZmYiLz4KPC9zdmc+Cg==",TIMEOUTS:{PAUSED:1e4,INACTIVE:9e4},INACTIVE:"inactive",ACTIVE:"active",COMPOSING:"composing",PAUSED:"paused",GONE:"gone",PRIVATE_CHAT_TYPE:"chatbox",CHATROOMS_TYPE:"chatroom",HEADLINES_TYPE:"headline",CONTROLBOX_TYPE:"controlbox",default_connection_options:{explicitResourceBinding:!0},router:new Ac,TimeoutError:zc,isTestEnv:()=>"montague.lit/http-bind"===Wc.bosh_service_url,__:(...e)=>Hc.__(...e),___:e=>e};let $c;Uc.VERSION_NAME="v7.0.3dev",Object.assign(Uc,_i),ur.enable(Uc,"_converse","pluggable");let Wc={};function Gc(){var e;if(!Uc.bare_jid){const e="No JID to fetch user settings for";throw zn.error(e),Error(e)}if(!(null===(e=$c)||void 0===e?void 0:e.fetched)){const e="converse.user-settings.".concat(Uc.bare_jid);$c=new qo({id:e}),$c.browserStorage=Xc(e),$c.fetched=$c.fetch({promise:!0})}return $c.fetched}const Vc=Uc.api={connection:{connected(){var e;return(null==Uc||null===(e=Uc.connection)||void 0===e?void 0:e.connected)&&!0},disconnect(){Uc.connection&&Uc.connection.disconnect()},async reconnect(){const e=Uc.connfeedback.get("connection_status");if(Vc.settings.get("authentication")===Uc.ANONYMOUS&&(await Qc(),await Kc()),e===kc.e.Status.CONNFAIL?Vc.connection.isType("websocket")&&Vc.settings.get("bosh_service_url")?(await Uc.setUserJID(Uc.bare_jid),Uc.connection._proto._doDisconnect(),Uc.connection._proto=new kc.e.Bosh(Uc.connection),Uc.connection.service=Vc.settings.get("bosh_service_url")):Vc.connection.isType("bosh")&&Vc.settings.get("websocket_url")&&(Vc.settings.get("authentication")===Uc.ANONYMOUS?await Uc.setUserJID(Vc.settings.get("jid")):await Uc.setUserJID(Uc.bare_jid),Uc.connection._proto._doDisconnect(),Uc.connection._proto=new kc.e.Websocket(Uc.connection),Uc.connection.service=Vc.settings.get("websocket_url")):e===kc.e.Status.AUTHFAIL&&Vc.settings.get("authentication")===Uc.ANONYMOUS&&await Uc.setUserJID(Vc.settings.get("jid")),!Uc.connection.reconnecting)return Uc.connection.reconnect();Uc.connection.debouncedReconnect()},isType:e=>Uc.connection.isType(e)},async trigger(e){if(!Uc._events)return;const t=Array.from(arguments),n=t.pop();if(n&&n.synchronous){const n=Uc._events[e]||[];await Promise.all(n.map(e=>e.callback.apply(e.ctx,t.splice(1))))}else Uc.trigger.apply(Uc,arguments);const r=Uc.promises[e];void 0!==r&&r.resolve()},hook(e,t,n){const r=Uc._events[e]||[];if(r.length){const e=r.reduce((e,n)=>e.then(e=>n.callback(t,e)),Promise.resolve(n));return e.catch(e=>{throw zn.error(e),e}),e}return n},user:{jid:()=>Uc.connection.jid,async login(e,t,n=!1){var r,i;if(e=e||Uc.jid,(!(null===(r=Uc.connection)||void 0===r?void 0:r.jid)||e&&!Jo.isSameDomain(Uc.connection.jid,e))&&await Uc.initConnection(),(null===(i=Vc.settings.get("connection_options"))||void 0===i?void 0:i.worker)&&await Uc.connection.restoreWorkerSession())return;e&&(e=await Uc.setUserJID(e));const o=Uc.pluggable.plugins["converse-bosh"];if(o&&o.enabled()){if(await Uc.restoreBOSHSession())return;if(Vc.settings.get("authentication")===Uc.PREBIND&&(!n||Vc.settings.get("auto_login")))return Uc.startNewPreboundBOSHSession()}t=t||Vc.settings.get("password"),async function(e,t){const{api:n}=Uc;n.settings.get("authentication")===Uc.LOGIN?e?Yc(e):Uc.api.settings.get("credentials_url")?Yc(await async function(){let e,t=0;for(;!e;){try{e=await nl(t)}catch(e){zn.error("Could not fetch login credentials"),zn.error(e)}t=2e3}return e}()):Uc.jid&&(Uc.api.settings.get("password")||Uc.connection.pass)?Yc():!Uc.isTestEnv()&&"credentials"in navigator?Yc(await async function(){try{const e=await navigator.credentials.get({password:!0});if(e&&"password"==e.type&&Jo.isValidJID(e.id))return await Uc.setUserJID(e.id),{jid:e.id,password:e.password}}catch(e){zn.error(e)}}()):!Uc.isTestEnv()&&zn.warn("attemptNonPreboundSession: Couldn't find credentials to log in with"):![Uc.ANONYMOUS,Uc.EXTERNAL].includes(Uc.api.settings.get("authentication"))||t&&!Uc.api.settings.get("auto_login")||Yc()}(e&&t?{jid:e,password:t}:null,n)},logout(){const e=Jo.getResolveablePromise(),t=()=>{Object.keys(Uc.promises).forEach(Jc),delete Uc.jid,Vc.trigger("logout"),e.resolve()};return Uc.connection.setDisconnectionCause(Uc.LOGOUT,void 0,!0),void 0!==Uc.connection?(Vc.listen.once("disconnected",()=>t()),Uc.connection.disconnect()):t(),e},settings:{getModel:async()=>(await Gc(),$c),get:async(e,t)=>(await Gc(),void 0===$c.get(e)?t:$c.get(e)),async set(e,t){if(await Gc(),N(e))return $c.save(e,{promise:!0});{const n={};return n[e]=t,$c.save(n,{promise:!0})}},async clear(){await Gc(),$c.clear()}}},settings:{extend(e){Jo.merge(Bc,e);const t=Object.keys(Bo(e,Object.keys(Bc))),n=Bo(Wc,t),r=Or(Bo(e,t),n);Jo.merge(Uc.settings,r),Jo.merge(Uc,r)},update(e){return zn.warn("The api.settings.update method has been deprecated and will be removed. Please use api.settings.extend instead."),this.extend(e)},get(e){if(Object.keys(Bc).includes(e))return Uc[e]},set(e,t){const n={};N(e)?(Or(Uc,Bo(e,Object.keys(Bc))),Or(Uc.settings,Bo(e,Object.keys(Bc)))):"string"==typeof e&&(n[e]=t,Or(Uc,Bo(n,Object.keys(Bc))),Or(Uc.settings,Bo(n,Object.keys(Bc))))}},promises:{add(e,t=!0){(e=Array.isArray(e)?e:[e]).forEach(e=>{const n=Jo.getResolveablePromise();n.replace=t,Uc.promises[e]=n})}},listen:{once:Uc.once.bind(Uc),on:Uc.on.bind(Uc),not:Uc.off.bind(Uc),stanza(e,t,n){M(t)?(n=t,t={}):t=t||{},Uc.connection.addHandler(n,t.ns,e,t.type,t.id,t.from,t)}},waitUntil(e){if(M(e))return Jo.waitUntil(e);{const t=Uc.promises[e];return void 0===t?null:t}},send:e=>Vc.connection.connected()?("string"==typeof e&&(e=Jo.toStanza(e)),"iq"===e.tagName?Vc.sendIQ(e):(Uc.connection.send(e),void Vc.trigger("send",e))):(zn.warn("Not sending stanza because we're not connected!"),void zn.warn(kc.e.serialize(e))),sendIQ(e,t=Uc.STANZA_TIMEOUT,n=!0){var r,i;let o;return e=null!==(r=null===(i=e)||void 0===i?void 0:i.nodeTree)&&void 0!==r?r:e,["get","set"].includes(e.getAttribute("type"))?(t=t||Uc.STANZA_TIMEOUT,n?(o=new Promise((n,r)=>Uc.connection.sendIQ(e,n,r,t)),o.catch(n=>{if(null===n)throw new zc("Timeout error after ".concat(t,"ms for the following IQ stanza: ").concat(kc.e.serialize(e)))})):o=new Promise(n=>Uc.connection.sendIQ(e,n,n,t))):(Uc.connection.sendIQ(e),o=Promise.resolve()),Vc.trigger("send",e),o}};function Jc(e){const t=Uc.promises[e];if(!t)throw new Error("Tried to replace non-existing promise: ".concat(e));if(t.replace){const n=Jo.getResolveablePromise();n.replace=t.replace,Uc.promises[e]=n}else zn.debug('Not replacing promise "'.concat(e,'"'))}function Xc(e,t){const n=Uc.storage[t||Uc.getDefaultStore()];return new yn(e,n)}async function Qc(){return await Uc.api.trigger("beforeTearDown",{synchronous:!0}),window.removeEventListener("click",Uc.onUserActivity),window.removeEventListener("focus",Uc.onUserActivity),window.removeEventListener("keypress",Uc.onUserActivity),window.removeEventListener("mousemove",Uc.onUserActivity),window.removeEventListener(Uc.unloadevent,Uc.onUserActivity),window.clearInterval(Uc.everySecondTrigger),Uc.api.trigger("afterTearDown"),Uc}function Yc(e){if([Uc.ANONYMOUS,Uc.EXTERNAL].includes(Uc.api.settings.get("authentication"))){if(!Uc.jid)throw new Error("Config Error: when using anonymous login you need to provide the server's domain via the 'jid' option. Either when calling converse.initialize, or when calling _converse.api.user.login.");Uc.connection.reconnecting||Uc.connection.reset(),Uc.connection.connect(Uc.jid.toLowerCase())}else if(Uc.api.settings.get("authentication")===Uc.LOGIN){var t;const n=e?e.password:(null===(t=Uc.connection)||void 0===t?void 0:t.pass)||Uc.api.settings.get("password");if(!n){if(Uc.api.settings.get("auto_login"))throw new Error("autoLogin: If you use auto_login and authentication='login' then you also need to provide a password.");return Uc.connection.setDisconnectionCause(kc.e.Status.AUTHFAIL,void 0,!0),void Uc.api.connection.disconnect()}Uc.connection.reconnecting||Uc.connection.reset(),Uc.connection.connect(Uc.jid,n)}}function Kc(){var e;return null===(e=Uc.session)||void 0===e||e.destroy(),delete Uc.session,Uc.shouldClearCache()&&Uc.api.user.settings.clear(),Uc.api.trigger("clearSession",{synchronous:!0})}async function Zc(e){var t;const n=Vc.settings.get("connection_options").worker,r=kc.e.getBareJidFromJid(e).toLowerCase(),i="converse.session-".concat(r);(null===(t=Uc.session)||void 0===t?void 0:t.get("id"))!==i?(Uc.session=new qo({id:i}),Uc.session.browserStorage=Xc(i,n?"persistent":"session"),await new Promise(e=>Uc.session.fetch({success:e,error:e})),!n&&Uc.session.get("active")&&(Uc.session.clear(),Uc.session.save({id:i})),el(e),function(){if("sessionStorage"===Vc.settings.get("persistent_store"))return;if("BrowserExtLocal"===Uc.api.settings.get("persistent_store"))return yn.localForage.defineDriver(pr.a).then(()=>yn.localForage.setDriver("webExtensionLocalStorage")),void(Uc.storage.persistent=yn.localForage);if("BrowserExtSync"===Uc.api.settings.get("persistent_store"))return yn.localForage.defineDriver(hr.a).then(()=>yn.localForage.setDriver("webExtensionSyncStorage")),void(Uc.storage.persistent=yn.localForage);const e={name:Uc.isTestEnv()?"converse-test-persistent":"converse-persistent",storeName:Uc.bare_jid};"localStorage"===Uc.api.settings.get("persistent_store")?(e.description="localStorage instance",e.driver=[yn.localForage.LOCALSTORAGE]):"IndexedDB"===Uc.api.settings.get("persistent_store")?(e.description="indexedDB instance",e.driver=[yn.localForage.INDEXEDDB]):"none"===Uc.api.settings.get("persistent_store")&&(e.description="in-memory instance",e.driver=[yn.IN_MEMORY]),Uc.storage.persistent=yn.localForage.createInstance(e)}(),Uc.api.trigger("userSessionInitialized")):el(e)}function el(e){e=Uc.session.get("jid")||e,Uc.api.settings.get("authentication")===Uc.ANONYMOUS||kc.e.getResourceFromJid(e)||(e=e.toLowerCase()+fa.generateResource()),Uc.jid=e,Uc.bare_jid=kc.e.getBareJidFromJid(e),Uc.resource=kc.e.getResourceFromJid(e),Uc.domain=kc.e.getDomainFromJid(e),Uc.session.save({jid:e,bare_jid:Uc.bare_jid,resource:Uc.resource,domain:Uc.domain,active:!0}),Uc.connection.jid=e}async function tl(){var e;await Vc.trigger("cleanup",{synchronous:!0}),Uc.router.history.stop(),document.removeEventListener("visibilitychange",Uc.saveWindowState),Vc.trigger("unregisteredGlobalEventHandlers"),null===(e=Uc.connection)||void 0===e||e.reset(),Uc.stopListening(),Uc.off(),Uc.promises.initialized.isResolved&&Vc.promises.add("initialized")}function nl(e=0){return new Promise(Rc((e,t)=>{const n=new XMLHttpRequest;n.open("GET",Vc.settings.get("credentials_url"),!0),n.setRequestHeader("Accept","application/json, text/javascript"),n.onload=()=>{if(n.status>=200&&n.status<400){const t=JSON.parse(n.responseText);Uc.setUserJID(t.jid).then(()=>{e({jid:t.jid,password:t.password})})}else t(new Error("".concat(n.status,": ").concat(n.responseText)))},n.onerror=t,n.send()},e))}Uc.isUniView=function(){return["mobile","fullscreen","embedded"].includes(Vc.settings.get("view_mode"))},Uc.getDefaultStore=function(){if(Uc.config.get("trusted")){return"sessionStorage"===Vc.settings.get("persistent_store")?"session":"persistent"}return"session"},Uc.createStore=Xc,Uc.shouldClearCache=()=>!Uc.config.get("trusted")||Vc.settings.get("clear_cache_on_logout")||Uc.isTestEnv(),Uc.initConnection=function(){const e=Uc.api;if(!e.settings.get("bosh_service_url")){if(e.settings.get("authentication")===Uc.PREBIND)throw new Error("authentication is set to 'prebind' but we don't have a BOSH connection");if(!e.settings.get("websocket_url"))throw new Error("initConnection: you must supply a value for either the bosh_service_url or websocket_url or both.")}const t=Uc.isTestEnv()?pa:fa;if(("WebSocket"in window||"MozWebSocket"in window)&&e.settings.get("websocket_url"))Uc.connection=new t(e.settings.get("websocket_url"),Object.assign(Uc.default_connection_options,e.settings.get("connection_options")));else{if(!e.settings.get("bosh_service_url"))throw new Error("initConnection: this browser does not support websockets and bosh_service_url wasn't specified.");Uc.connection=new t(e.settings.get("bosh_service_url"),Object.assign(Uc.default_connection_options,e.settings.get("connection_options"),{keepalive:e.settings.get("keepalive")}))}!function(){const e={};e[kc.e.LogLevel.DEBUG]="debug",e[kc.e.LogLevel.INFO]="info",e[kc.e.LogLevel.WARN]="warn",e[kc.e.LogLevel.ERROR]="error",e[kc.e.LogLevel.FATAL]="fatal",kc.e.log=(t,n)=>zn.log(n,e[t]),kc.e.error=e=>zn.error(e),Uc.connection.xmlInput=e=>zn.debug(e.outerHTML,"color: darkgoldenrod"),Uc.connection.xmlOutput=e=>zn.debug(e.outerHTML,"color: darkcyan")}(),e.trigger("connectionInitialized")},Uc.setUserJID=async function(e){return await Zc(e),Uc.api.trigger("setUserJID"),e},Uc.saveWindowState=function(e){let t;const n={focus:"visible",focusin:"visible",pageshow:"visible",blur:"hidden",focusout:"hidden",pagehide:"hidden"};t=(e=e||document.createEvent("Events")).type in n?n[e.type]:document.hidden?"hidden":"visible",Uc.windowState=t,Vc.trigger("windowStateChanged",{state:t})},Uc.ConnectionFeedback=qo.extend({defaults:{connection_status:kc.e.Status.DISCONNECTED,message:""},initialize(){this.on("change",()=>Vc.trigger("connfeedback",Uc.connfeedback))}});const rl=window.converse||{};Object.assign(rl,{CHAT_STATES:["active","composing","gone","inactive","paused"],keycodes:{TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESCAPE:27,LEFT_ARROW:37,UP_ARROW:38,RIGHT_ARROW:39,DOWN_ARROW:40,FORWARD_SLASH:47,AT:50,META:91,META_RIGHT:93},async initialize(e){if(await tl(),"onpagehide"in window?Uc.unloadevent="pagehide":"onbeforeunload"in window?Uc.unloadevent="beforeunload":"onunload"in window&&(Uc.unloadevent="unload"),function(e){Uc.settings={},Wc=e;const t=Bo(e,Object.keys(Bc));Or(Uc.settings,Bc,t),Or(Uc,Bc,t)}(e),Uc.strict_plugin_dependencies=e.strict_plugin_dependencies,zn.setLogLevel(Vc.settings.get("loglevel")),Vc.settings.get("authentication")===Uc.ANONYMOUS&&Vc.settings.get("auto_login")&&!Vc.settings.get("jid"))throw new Error("Config Error: you need to provide the server's domain via the 'jid' option when using anonymous authentication with auto_login.");Uc.router.route(/^converse\?loglevel=(debug|info|warn|error|fatal)$/,"loglevel",e=>zn.setLogLevel(e)),Uc.connfeedback=new Uc.ConnectionFeedback,Uc.send_initial_presence=!0,await async function(){await yn.sessionStorageInitialized,Uc.storage={session:yn.localForage.createInstance({name:Uc.isTestEnv()?"converse-test-session":"converse-session",description:"sessionStorage instance",driver:["sessionStorageWrapper"]})}}(),await async function(){const e="converse.client-config";Uc.config=new qo({id:e,trusted:!0}),Uc.config.browserStorage=Xc(e,"session"),await new Promise(e=>Uc.config.fetch({success:e,error:e})),Uc.api.trigger("clientConfigInitialized")}(),await Hc.initialize(),function(){Uc.pluggable.initialized_plugins=[];const e=Fc.concat(Uc.api.settings.get("whitelisted_plugins"));Uc.api.settings.get("singleton")&&["converse-bookmarks","converse-controlbox","converse-headline","converse-register"].forEach(e=>Uc.api.settings.get("blacklisted_plugins").push(e)),Uc.pluggable.initializePlugins({_converse:Uc},e,Uc.api.settings.get("blacklisted_plugins")),Uc.api.trigger("pluginsInitialized")}(),document.addEventListener("visibilitychange",Uc.saveWindowState),Uc.saveWindowState({type:document.hidden?"blur":"focus"}),Vc.trigger("registeredGlobalEventHandlers"),!History.started&&Uc.router.history.start(),Vc.settings.get("idle_presence_timeout")>0&&Vc.listen.on("addClientFeatures",()=>Vc.disco.own.features.add(kc.e.NS.IDLE));const t=Uc.pluggable.plugins;if((Vc.settings.get("auto_login")||Vc.settings.get("keepalive")&&Pc(t["converse-bosh"],"enabled"))&&await Vc.user.login(null,null,!0),Vc.trigger("initialized"),Uc.isTestEnv())return Uc},plugins:{add(e,t){if(t.__name__=e,void 0!==Uc.pluggable.plugins[e])throw new TypeError('Error: plugin with name "'.concat(e,'" has already been ')+"registered!");Uc.pluggable.plugins[e]=t}},env:{$build:kc.a,$iq:kc.b,$msg:kc.c,$pres:kc.d,utils:Jo,Collection:ra,CustomElement:mc,Model:qo,Promise:Promise,Strophe:kc.e,dayjs:En.a,html:Za,log:zn,sizzle:mr.a,sprintf:Lc.sprintf,stanza_utils:ps,u:Jo}});const il=new CustomEvent("converse-loaded",{detail:{converse:rl}});window.dispatchEvent(il);const{Strophe:ol}=rl.env;let sl,al;ol.addNamespace("ADHOC","http://jabber.org/protocol/commands");const cl={adhoc:{async getCommands(e){let t=[];try{n=await al.disco.items(e,ol.NS.ADHOC),t=mr()('query[xmlns="'.concat(ol.NS.DISCO_ITEMS,'"][node="').concat(ol.NS.ADHOC,'"] item'),n).map(ps.getAttributes)}catch(t){null===t?zn.error("Error: timeout while fetching ad-hoc commands for ".concat(e)):(zn.error("Error while fetching ad-hoc commands for ".concat(e)),zn.error(t))}var n;return t}}};rl.plugins.add("converse-adhoc",{dependencies:["converse-disco"],initialize(){sl=this._converse,al=sl.api,Object.assign(al,cl)}});const ll=rl.env.utils;var ul=qo.extend({initialize(){this.rosterContactAdded=ll.getResolveablePromise()},async setRosterContact(e){const t=await Vc.contacts.get(e);t&&(this.contact=t,this.set("nickname",t.get("nickname")),this.rosterContactAdded.resolve())}}),dl=n(169),hl=n.n(dl);var fl=function(e){return function(t,n,r){var i=Object(t);if(!Xe(t)){var o=Eo(n,3);t=Qe(t),n=function(e){return o(i[e],e,i)}}var s=e(t,n,r);return s>-1?i[o?t[s]:s]:void 0}}(Ds);var pl=function(e,t){return e===t||uo(e,t,fo(t))};const{Strophe:gl,$msg:ml}=rl.env,vl=rl.env.utils;var _l=ul.extend({defaults(){return{bookmarked:!1,chat_state:void 0,hidden:Uc.isUniView()&&!Vc.settings.get("singleton"),message_type:"chat",nickname:void 0,num_unread:0,time_sent:new Date(0).toISOString(),time_opened:this.get("time_opened")||(new Date).getTime(),type:Uc.PRIVATE_CHAT_TYPE,url:""}},async initialize(){this.initialized=vl.getResolveablePromise(),ul.prototype.initialize.apply(this,arguments);const e=this.get("jid");e&&(this.set({box_id:"box-".concat(e)}),this.initNotifications(),this.initMessages(),this.get("type")===Uc.PRIVATE_CHAT_TYPE&&(this.presence=Uc.presences.findWhere({jid:e})||Uc.presences.create({jid:e}),await this.setRosterContact(e)),this.on("change:chat_state",this.sendChatState,this),await this.fetchMessages(),await Vc.trigger("chatBoxInitialized",this,{Synchronous:!0}),this.initialized.resolve())},getMessagesCollection:()=>new Uc.Messages,getMessagesCacheKey(){return"converse.messages-".concat(this.get("jid"),"-").concat(Uc.bare_jid)},initMessages(){this.messages=this.getMessagesCollection(),this.messages.fetched=vl.getResolveablePromise(),this.messages.fetched.then(()=>{Vc.trigger("afterMessagesFetched",this)}),this.messages.chatbox=this,this.messages.browserStorage=Uc.createStore(this.getMessagesCacheKey()),this.listenTo(this.messages,"change:upload",e=>{e.get("upload")===Uc.SUCCESS&&Vc.send(this.createMessageStanza(e))})},initNotifications(){this.notifications=new qo},afterMessagesFetched(){Vc.trigger("afterMessagesFetched",this)},fetchMessages(){if(this.messages.fetched_flag)return void zn.info("Not re-fetching messages for ".concat(this.get("jid")));this.messages.fetched_flag=!0;const e=this.messages.fetched.resolve;return this.messages.fetch({add:!0,success:()=>{this.afterMessagesFetched(),e()},error:()=>{this.afterMessagesFetched(),e()}}),this.messages.fetched},async handleErrorMessageStanza(e){const{__:t}=Uc,n=await ps.parseMessage(e,Uc);if(!await this.shouldShowErrorMessage(n))return;const r=this.getMessageReferencedByError(n);if(r){const e={error:n.error,error_condition:n.error_condition,error_text:n.error_text,error_type:n.error_type,editable:!1};n.msgid===r.get("retraction_id")?(e.retraction_id=void 0,n.error||("forbidden"===n.error_condition?e.error=t("You're not allowed to retract your message."):e.error=t("Sorry, an error occurred while trying to retract your message."))):n.error||("forbidden"===n.error_condition?e.error=t("You're not allowed to send a message."):e.error=t("Sorry, an error occurred while trying to send your message.")),r.save(e)}else this.createMessage(n)},queueMessage(e){return this.msg_chain=(this.msg_chain||this.messages.fetched).then(()=>this.onMessage(e)).catch(e=>zn.error(e)),this.msg_chain},async onMessage(e){if(e=await e,vl.isErrorObject(e))return e.stanza&&zn.error(e.stanza),zn.error(e.message);const t=this.getDuplicateMessage(e);if(t)this.updateMessage(t,e);else if(!this.handleReceipt(e)&&!this.handleChatMarker(e)&&!await this.handleRetraction(e)&&(this.setEditable(e,e.time),e.chat_state&&"them"===e.sender&&this.notifications.set("chat_state",e.chat_state),vl.shouldCreateMessage(e))){const t=this.handleCorrection(e)||await this.createMessage(e);this.notifications.set({chat_state:null}),this.handleUnreadMessage(t)}},async clearMessages(){try{await this.messages.clearStore()}catch(e){this.messages.trigger("reset"),zn.error(e)}finally{delete this.msg_chain,delete this.messages.fetched_flag,this.messages.fetched=vl.getResolveablePromise()}},async close(){try{await new Promise((e,t)=>this.destroy({success:e,error:(e,n)=>t(n)}))}catch(e){zn.error(e)}finally{Vc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages()}},announceReconnection(){Vc.trigger("chatReconnected",this)},async onReconnection(){Vc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages(),this.announceReconnection()},validate(e){if(!e.jid)return"Ignored ChatBox without JID";const t=Uc.auto_join_rooms.map(e=>N(e)?e.jid:e),n=Vc.settings.get("auto_join_private_chats").concat(t);if(Vc.settings.get("singleton")&&!n.includes(e.jid)&&!Vc.settings.get("auto_join_on_invite")){const t="".concat(e.jid," is not allowed because singleton is true and it's not being auto_joined");return zn.warn(t),t}},getDisplayName(){return this.contact?this.contact.getDisplayName():this.vcard?this.vcard.getDisplayName():this.get("jid")},async createMessageFromError(e){if(e instanceof Uc.TimeoutError){(await this.createMessage({type:"error",message:e.message,retry_event_id:e.retry_event_id})).error=e}},getOldestMessage(){for(let e=0;e<this.messages.length;e++){const t=this.messages.at(e);if(t.get("type")===this.get("message_type"))return t}},getMostRecentMessage(){for(let e=this.messages.length-1;e>=0;e--){const t=this.messages.at(e);if(t.get("type")===this.get("message_type"))return t}},getUpdatedMessageAttributes:(e,t)=>(({is_archived:e})=>({is_archived:e}))(t),updateMessage(e,t){const n=this.getUpdatedMessageAttributes(e,t);n&&e.save(n)},setChatState(e,t){return void 0!==this.chat_state_timeout&&(window.clearTimeout(this.chat_state_timeout),delete this.chat_state_timeout),e===Uc.COMPOSING?this.chat_state_timeout=window.setTimeout(this.setChatState.bind(this),Uc.TIMEOUTS.PAUSED,Uc.PAUSED):e===Uc.PAUSED&&(this.chat_state_timeout=window.setTimeout(this.setChatState.bind(this),Uc.TIMEOUTS.INACTIVE,Uc.INACTIVE)),this.set("chat_state",e,t),this},getMessageReferencedByError(e){const t=e.msgid;return t&&this.messages.models.find(e=>[e.get("msgid"),e.get("retraction_id")].includes(t))},shouldShowErrorMessage(e){if(this.getMessageReferencedByError(e)||e.body)return!0},isSameUser:(e,t)=>vl.isSameBareJID(e,t),findDanglingRetraction(e){if(!e.origin_id||!this.messages.length)return null;if(this.messages.last().get("time")>e.time){const t=Array.from(this.messages.models);return t.reverse(),t.find(({attributes:t})=>t.retracted_id===e.origin_id&&t.from===e.from&&!t.moderated_by)}},async handleRetraction(e){const t=["retracted","retracted_id","editable"];if(e.retracted){if(e.is_tombstone)return!1;const n=this.messages.findWhere({origin_id:e.retracted_id,from:e.from});return n?(n.save(Bo(e,t)),!0):(e.dangling_retraction=!0,await this.createMessage(e),!0)}{const n=this.findDanglingRetraction(e);if(n){const r=Bo(n.attributes,t),i=Object.assign({dangling_retraction:!1},e,r);return delete i.id,n.save(i),!0}}return!1},handleCorrection(e){if(!e.replace_id||!e.from)return;const t=this.messages.findWhere({msgid:e.replace_id,from:e.from});if(!t)return;const n=t.get("older_versions")||{};return e.time<t.get("time")&&t.get("edited")?(n[e.time]=e.message,t.save({older_versions:n})):(Object.keys(n).length?n[t.get("edited")]=t.get("message"):n[t.get("time")]=t.get("message"),delete(e=Object.assign(e,{older_versions:n})).id,e.time=t.get("time"),t.save(e)),t},getDuplicateMessage(e){const t=[...this.getStanzaIdQueryAttrs(e),this.getOriginIdQueryAttrs(e),this.getMessageBodyQueryAttrs(e)].filter(e=>e),n=this.messages.models;return fl(n,e=>t.reduce((t,n)=>t||pl(e.attributes,n),!1))},getOriginIdQueryAttrs:e=>e.origin_id&&{origin_id:e.origin_id,from:e.from},getStanzaIdQueryAttrs:e=>Object.keys(e).filter(e=>e.startsWith("stanza_id ")).map(t=>{const n=t.replace(/^stanza_id /,""),r={};return r["stanza_id ".concat(n)]=e[t],r}),getMessageBodyQueryAttrs(e){if(e.message&&e.msgid){const t={from:e.from,msgid:e.msgid};return e.is_encrypted||(t.message=e.message),t}},retractOwnMessage(e){this.sendRetractionMessage(e),e.save({retracted:(new Date).toISOString(),retracted_id:e.get("origin_id"),retraction_id:e.get("id"),is_ephemeral:!0,editable:!1})},sendRetractionMessage(e){const t=e.get("origin_id");if(!t)throw new Error("Can't retract message without a XEP-0359 Origin ID");const n=ml({id:vl.getUniqueId(),to:this.get("jid"),type:"chat"}).c("store",{xmlns:gl.NS.HINTS}).up().c("apply-to",{id:t,xmlns:gl.NS.FASTEN}).c("retract",{xmlns:gl.NS.RETRACT});return Uc.connection.send(n)},sendMarkerForMessage(e){if(null==e?void 0:e.get("is_markable")){const t=gl.getBareJidFromJid(e.get("from"));this.sendMarker(t,e.get("msgid"),"displayed",e.get("type"))}},sendMarker(e,t,n,r){const i=ml({from:Uc.connection.jid,id:vl.getUniqueId(),to:e,type:r||"chat"}).c(n,{xmlns:gl.NS.MARKERS,id:t});Vc.send(i)},handleChatMarker(e){if(gl.getBareJidFromJid(e.to)!==Uc.bare_jid)return!1;if(e.is_markable)return!this.contact||e.is_archived||e.is_carbon||this.sendMarker(e.from,e.msgid,"received"),!1;if(e.marker_id){const t=this.messages.findWhere({msgid:e.marker_id}),n="marker_".concat(e.marker);return t&&!t.get(n)&&t.save({field_name:(new Date).toISOString()}),!0}},sendReceiptStanza(e,t){const n=ml({from:Uc.connection.jid,id:vl.getUniqueId(),to:e,type:"chat"}).c("received",{xmlns:gl.NS.RECEIPTS,id:t}).up().c("store",{xmlns:gl.NS.HINTS}).up();Vc.send(n)},handleReceipt(e){if("them"===e.sender)if(e.is_valid_receipt_request)this.sendReceiptStanza(e.from,e.msgid);else if(e.receipt_id){const t=this.messages.findWhere({msgid:e.receipt_id});return t&&!t.get("received")&&t.save({received:(new Date).toISOString()}),!0}return!1},createMessageStanza(e){const t=ml({from:Uc.connection.jid,to:this.get("jid"),type:this.get("message_type"),id:e.get("edited")&&vl.getUniqueId()||e.get("msgid")}).c("body").t(e.get("message")).up().c(Uc.ACTIVE,{xmlns:gl.NS.CHATSTATES}).root();return"chat"===e.get("type")&&t.c("request",{xmlns:gl.NS.RECEIPTS}).root(),e.get("is_spoiler")&&(e.get("spoiler_hint")?t.c("spoiler",{xmlns:gl.NS.SPOILER},e.get("spoiler_hint")).root():t.c("spoiler",{xmlns:gl.NS.SPOILER}).root()),(e.get("references")||[]).forEach(e=>{const n={xmlns:gl.NS.REFERENCE,begin:e.begin,end:e.end,type:e.type};e.uri&&(n.uri=e.uri),t.c("reference",n).root()}),e.get("oob_url")&&t.c("x",{xmlns:gl.NS.OUTOFBAND}).c("url").t(e.get("oob_url")).root(),e.get("edited")&&t.c("replace",{xmlns:gl.NS.MESSAGE_CORRECT,id:e.get("msgid")}).root(),e.get("origin_id")&&t.c("origin-id",{xmlns:gl.NS.SID,id:e.get("origin_id")}).root(),t},getOutgoingMessageAttributes(e,t){const n=this.get("composing_spoiler"),r=vl.getUniqueId(),i=e?vl.httpToGeoUri(vl.shortnamesToUnicode(e),Uc):void 0;return{from:Uc.bare_jid,fullname:Uc.xmppstatus.get("fullname"),id:r,is_only_emojis:!!e&&vl.isOnlyEmojis(e),jid:this.get("jid"),message:i,msgid:r,nickname:this.get("nickname"),sender:"me",spoiler_hint:n?t:void 0,time:(new Date).toISOString(),type:this.get("message_type"),body:i,is_spoiler:n,origin_id:r}},setEditable(e,t){if(!e.is_headline&&!vl.isEmptyMessage(e)&&"me"===e.sender)if("all"===Vc.settings.get("allow_message_corrections"))e.editable=!(e.file||e.retracted||"oob_url"in e);else if("last"===Vc.settings.get("allow_message_corrections")&&t>this.get("time_sent")){this.set({time_sent:t});const n=this.messages.findWhere({editable:!0});n&&n.save({editable:!1}),e.editable=!(e.file||e.retracted||"oob_url"in e)}},async createMessage(e,t){return e.time=e.time||(new Date).toISOString(),await this.messages.fetched,this.messages.create(e,Object.assign({wait:!0,promise:!0},t))},async sendMessage(e,t){const n=this.getOutgoingMessageAttributes(e,t);let r=this.messages.findWhere("correcting");if(r){const e=r.get("older_versions")||{};e[r.get("time")]=r.get("message"),r.save({correcting:!1,edited:(new Date).toISOString(),message:n.message,older_versions:e,references:n.references,is_only_emojis:n.is_only_emojis,origin_id:vl.getUniqueId(),received:void 0})}else this.setEditable(n,(new Date).toISOString()),r=await this.createMessage(n);return Vc.send(this.createMessageStanza(r)),Vc.trigger("sendMessage",{chatbox:this,message:r}),r},sendChatState(){if(Vc.settings.get("send_chat_state_notifications")&&this.get("chat_state")){const e=Vc.settings.get("send_chat_state_notifications");if(Array.isArray(e)&&!e.includes(this.get("chat_state")))return;Vc.send(ml({id:vl.getUniqueId(),to:this.get("jid"),type:"chat"}).c(this.get("chat_state"),{xmlns:gl.NS.CHATSTATES}).up().c("no-store",{xmlns:gl.NS.HINTS}).up().c("no-permanent-store",{xmlns:gl.NS.HINTS}))}},async sendFiles(e){var t;const{__:n}=Uc,r=(await Vc.disco.features.get(gl.NS.HTTPUPLOAD,Uc.domain)).pop();if(!r)return void this.createMessage({message:n("Sorry, looks like file upload is not supported by your server."),type:"error",is_ephemeral:!0});const i=r.dataforms.where({FORM_TYPE:{value:gl.NS.HTTPUPLOAD,type:"hidden"}}).pop(),o=window.parseInt(null===(t=((null==i?void 0:i.attributes)||{})["max-file-size"])||void 0===t?void 0:t.value),s=null==r?void 0:r.id;s?Array.from(e).forEach(async e=>{if(!window.isNaN(o)&&window.parseInt(e.size)>o)return this.createMessage({message:n("The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.",e.name,hl()(o)),type:"error",is_ephemeral:!0});{const t=Object.assign(this.getOutgoingMessageAttributes(),{file:!0,progress:0,slot_request_url:s});this.setEditable(t,(new Date).toISOString());const n=await this.createMessage(t,{silent:!0});n.file=e,this.messages.trigger("add",n),n.getRequestSlotURL()}}):this.createMessage({message:n("Sorry, looks like file upload is not supported by your server."),type:"error",is_ephemeral:!0})},maybeShow(e){if(e){if(Uc.isUniView()){const e=e=>!e.get("hidden")&&e.get("jid")!==this.get("jid")&&"controlbox"!==e.get("id");Uc.chatboxes.filter(e).forEach(e=>vl.safeSave(e,{hidden:!0}))}vl.safeSave(this,{hidden:!1})}return Uc.isUniView()&&this.get("hidden")?void 0:this.trigger("show")},isHidden(){return Uc.isUniView()&&this.get("hidden")||this.isScrolledUp()||"hidden"===Uc.windowState},handleUnreadMessage(e){if((null==e?void 0:e.get("body"))&&vl.isNewMessage(e))if(this.isHidden()){const t={num_unread:this.get("num_unread")+1};0===this.get("num_unread")&&(t.first_unread_id=e.get("id")),this.save(t)}else this.sendMarkerForMessage(e)},clearUnreadMsgCounter(){this.get("num_unread")>0&&this.sendMarkerForMessage(this.messages.last()),vl.safeSave(this,{num_unread:0})},isScrolledUp(){return this.get("scrolled",!0)}});const bl=rl.env.utils,{Strophe:yl}=rl.env;var wl={defaults:()=>({msgid:bl.getUniqueId(),time:(new Date).toISOString(),is_ephemeral:!1}),async initialize(){this.checkValidity()&&(this.initialized=bl.getResolveablePromise(),"chat"===this.get("type")&&(ul.prototype.initialize.apply(this,arguments),this.setRosterContact(yl.getBareJidFromJid(this.get("from")))),this.get("file")&&this.on("change:put",this.uploadFile,this),this.setTimerForEphemeralMessage(),await Vc.trigger("messageInitialized",this,{Synchronous:!0}),this.initialized.resolve())},setTimerForEphemeralMessage(){const e=()=>{this.ephemeral_timer=window.setTimeout(this.safeDestroy.bind(this),1e4)};return this.isEphemeral()?(e(),!0):(this.on("change:is_ephemeral",()=>this.isEphemeral()?e():clearTimeout(this.ephemeral_timer)),!1)},checkValidity(){return 3!==Object.keys(this.attributes).length||(this.validationError="Empty message",this.safeDestroy(),!1)},mayBeRetracted(){return"me"===this.get("sender")&&["all","own"].includes(Vc.settings.get("allow_message_retraction"))},safeDestroy(){try{this.destroy()}catch(e){zn.error(e)}},isEphemeral(){return this.get("is_ephemeral")},getDisplayName(){return"groupchat"===this.get("type")?this.get("nick"):this.contact?this.contact.getDisplayName():this.vcard?this.vcard.getDisplayName():this.get("from")},getMessageText(){const{__:e}=Uc;return this.get("is_encrypted")?this.get("plaintext")||this.get("body")||e("Undecryptable OMEMO message"):this.get("message")},isMeCommand(){const e=this.getMessageText();return!!e&&e.startsWith("/me ")},sendSlotRequestStanza(){if(!this.file)return Promise.reject(new Error("file is undefined"));const e=rl.env.$iq({from:Uc.jid,to:this.get("slot_request_url"),type:"get"}).c("request",{xmlns:yl.NS.HTTPUPLOAD,filename:this.file.name,size:this.file.size,"content-type":this.file.type});return Vc.sendIQ(e)},async getRequestSlotURL(){const{__:e}=Uc;let t;try{t=await this.sendSlotRequestStanza()}catch(t){return zn.error(t),this.save({type:"error",message:e("Sorry, could not determine upload URL."),is_ephemeral:!0})}const n=t.querySelector("slot");if(!n)return this.save({type:"error",message:e("Sorry, could not determine file upload URL."),is_ephemeral:!0});this.save({get:n.querySelector("get").getAttribute("url"),put:n.querySelector("put").getAttribute("url")})},uploadFile(){const e=new XMLHttpRequest;e.onreadystatechange=()=>{e.readyState===XMLHttpRequest.DONE&&(zn.info("Status: "+e.status),200===e.status||201===e.status?this.save({upload:Uc.SUCCESS,oob_url:this.get("get"),message:this.get("get")}):e.onerror())},e.upload.addEventListener("progress",e=>{e.lengthComputable&&this.set("progress",e.loaded/e.total)},!1),e.onerror=()=>{const{__:t}=Uc;let n;n=e.responseText?t('Sorry, could not succesfully upload your file. Your server’s response: "%1$s"',e.responseText):t("Sorry, could not succesfully upload your file."),this.save({type:"error",upload:Uc.FAILURE,message:n,is_ephemeral:!0})},e.open("PUT",this.get("put"),!0),e.setRequestHeader("Content-type",this.file.type),e.send(this.file)}},Sl={chats:{async create(e,t){if("string"==typeof e){if(t&&!(null==t?void 0:t.fullname)){var n;const r=await Vc.contacts.get(e);t.fullname=null==r||null===(n=r.attributes)||void 0===n?void 0:n.fullname}const r=Vc.chats.get(e,t,!0);return r||void zn.error("Could not open chatbox for JID: "+e)}return Array.isArray(e)?Promise.all(e.forEach(async n=>{var r;const i=await Vc.contacts.get(e);return t.fullname=null==i||null===(r=i.attributes)||void 0===r?void 0:r.fullname,Vc.chats.get(n,t,!0).maybeShow()})):(zn.error("chats.create: You need to provide at least one JID"),null)},async open(e,t,n){if("string"==typeof e){const r=await Vc.chats.get(e,t,!0);return r?r.maybeShow(n):r}if(Array.isArray(e))return Promise.all(e.map(e=>Vc.chats.get(e,t,!0).then(e=>e&&e.maybeShow(n))).filter(e=>e));const r="chats.open: You need to provide at least one JID";throw zn.error(r),new Error(r)},async get(e,t={},n=!1){async function r(e){let r=await Vc.chatboxes.get(e);return!r&&n?r=await Vc.chatboxes.create(e,t,Uc.ChatBox):(r=r&&r.get("type")===Uc.PRIVATE_CHAT_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await Vc.chatboxes.get()).filter(e=>e.get("type")===Uc.PRIVATE_CHAT_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}}; /** * @module converse-chat * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{$msg:al,Strophe:cl,sizzle:ll,utils:ul}=Yc.env,dl=Yc.env.utils;Yc.plugins.add("converse-chat",{dependencies:["converse-chatboxes","converse-disco"],initialize(){const{__:e}=Lc;qc.settings.extend({allow_message_corrections:"all",allow_message_retraction:"all",auto_join_private_chats:[],clear_messages_on_reconnection:!1,filter_by_resource:!1,send_chat_state_notifications:!0});const t=Rs.extend({initialize(){this.rosterContactAdded=dl.getResolveablePromise()},async setRosterContact(e){const t=await qc.contacts.get(e);t&&(this.contact=t,this.set("nickname",t.get("nickname")),this.rosterContactAdded.resolve())}});Lc.Message=t.extend({defaults:()=>({msgid:dl.getUniqueId(),time:(new Date).toISOString(),is_ephemeral:!1}),async initialize(){this.checkValidity()&&(this.initialized=dl.getResolveablePromise(),"chat"===this.get("type")&&(t.prototype.initialize.apply(this,arguments),this.setRosterContact(cl.getBareJidFromJid(this.get("from")))),this.get("file")&&this.on("change:put",this.uploadFile,this),this.setTimerForEphemeralMessage(),await qc.trigger("messageInitialized",this,{Synchronous:!0}),this.initialized.resolve())},setTimerForEphemeralMessage(){const e=()=>{this.ephemeral_timer=window.setTimeout(this.safeDestroy.bind(this),1e4)};return this.isEphemeral()?(e(),!0):(this.on("change:is_ephemeral",()=>this.isEphemeral()?e():clearTimeout(this.ephemeral_timer)),!1)},checkValidity(){return 3!==Object.keys(this.attributes).length||(this.validationError="Empty message",this.safeDestroy(),!1)},mayBeRetracted(){return"me"===this.get("sender")&&["all","own"].includes(qc.settings.get("allow_message_retraction"))},safeDestroy(){try{this.destroy()}catch(e){Pn.error(e)}},isEphemeral(){return this.get("is_ephemeral")},getDisplayName(){return"groupchat"===this.get("type")?this.get("nick"):this.contact?this.contact.getDisplayName():this.vcard?this.vcard.getDisplayName():this.get("from")},getMessageText(){return this.get("is_encrypted")?this.get("plaintext")||this.get("body")||e("Undecryptable OMEMO message"):this.get("message")},isMeCommand(){const e=this.getMessageText();return!!e&&e.startsWith("/me ")},sendSlotRequestStanza(){if(!this.file)return Promise.reject(new Error("file is undefined"));const e=Yc.env.$iq({from:Lc.jid,to:this.get("slot_request_url"),type:"get"}).c("request",{xmlns:cl.NS.HTTPUPLOAD,filename:this.file.name,size:this.file.size,"content-type":this.file.type});return qc.sendIQ(e)},async getRequestSlotURL(){let t;try{t=await this.sendSlotRequestStanza()}catch(t){return Pn.error(t),this.save({type:"error",message:e("Sorry, could not determine upload URL."),is_ephemeral:!0})}const n=t.querySelector("slot");if(!n)return this.save({type:"error",message:e("Sorry, could not determine file upload URL."),is_ephemeral:!0});this.save({get:n.querySelector("get").getAttribute("url"),put:n.querySelector("put").getAttribute("url")})},uploadFile(){const t=new XMLHttpRequest;t.onreadystatechange=()=>{t.readyState===XMLHttpRequest.DONE&&(Pn.info("Status: "+t.status),200===t.status||201===t.status?this.save({upload:Lc.SUCCESS,oob_url:this.get("get"),message:this.get("get")}):t.onerror())},t.upload.addEventListener("progress",e=>{e.lengthComputable&&this.set("progress",e.loaded/e.total)},!1),t.onerror=()=>{let n;n=t.responseText?e('Sorry, could not succesfully upload your file. Your server’s response: "%1$s"',t.responseText):e("Sorry, could not succesfully upload your file."),this.save({type:"error",upload:Lc.FAILURE,message:n,is_ephemeral:!0})},t.open("PUT",this.get("put"),!0),t.setRequestHeader("Content-type",this.file.type),t.send(this.file)}}),Lc.Messages=Yo.extend({model:Lc.Message,comparator:"time"}),Lc.ChatBox=t.extend({messagesCollection:Lc.Messages,defaults(){return{bookmarked:!1,chat_state:void 0,hidden:Lc.isUniView()&&!qc.settings.get("singleton"),message_type:"chat",nickname:void 0,num_unread:0,time_sent:new Date(0).toISOString(),time_opened:this.get("time_opened")||(new Date).getTime(),type:Lc.PRIVATE_CHAT_TYPE,url:""}},async initialize(){this.initialized=dl.getResolveablePromise(),t.prototype.initialize.apply(this,arguments);const e=this.get("jid");e&&(this.set({box_id:"box-".concat(e)}),this.initNotifications(),this.initMessages(),this.get("type")===Lc.PRIVATE_CHAT_TYPE&&(this.presence=Lc.presences.findWhere({jid:e})||Lc.presences.create({jid:e}),await this.setRosterContact(e)),this.on("change:chat_state",this.sendChatState,this),await this.fetchMessages(),await qc.trigger("chatBoxInitialized",this,{Synchronous:!0}),this.initialized.resolve())},getMessagesCacheKey(){return"converse.messages-".concat(this.get("jid"),"-").concat(Lc.bare_jid)},initMessages(){this.messages=new this.messagesCollection,this.messages.chatbox=this,this.messages.browserStorage=Lc.createStore(this.getMessagesCacheKey()),this.listenTo(this.messages,"change:upload",e=>{e.get("upload")===Lc.SUCCESS&&qc.send(this.createMessageStanza(e))})},initNotifications(){this.notifications=new Rs},afterMessagesFetched(){qc.trigger("afterMessagesFetched",this)},fetchMessages(){if(this.messages.fetched)return void Pn.info("Not re-fetching messages for ".concat(this.get("jid")));this.messages.fetched=dl.getResolveablePromise();const e=this.messages.fetched.resolve;return this.messages.fetch({add:!0,success:()=>{this.afterMessagesFetched(),e()},error:()=>{this.afterMessagesFetched(),e()}}),this.messages.fetched},async handleErrorMessageStanza(t){const n=await ao.parseMessage(t,Lc);if(!await this.shouldShowErrorMessage(n))return;const r=this.getMessageReferencedByError(n);if(r){const t={error:n.error,error_condition:n.error_condition,error_text:n.error_text,error_type:n.error_type,editable:!1};n.msgid===r.get("retraction_id")?(t.retraction_id=void 0,n.error||("forbidden"===n.error_condition?t.error=e("You're not allowed to retract your message."):t.error=e("Sorry, an error occurred while trying to retract your message."))):n.error||("forbidden"===n.error_condition?t.error=e("You're not allowed to send a message."):t.error=e("Sorry, an error occurred while trying to send your message.")),r.save(t)}else this.createMessage(n)},queueMessage(e){return this.msg_chain=this.msg_chain||this.messages.fetched,this.msg_chain=this.msg_chain.then(()=>this.onMessage(e)),this.msg_chain},async onMessage(e){if(e=await e,dl.isErrorObject(e))return e.stanza&&Pn.error(e.stanza),Pn.error(e.message);const t=this.getDuplicateMessage(e);if(t)this.updateMessage(t,e);else if(!this.handleReceipt(e)&&!this.handleChatMarker(e)&&!await this.handleRetraction(e)&&(this.setEditable(e,e.time),e.chat_state&&"them"===e.sender&&this.notifications.set("chat_state",e.chat_state),dl.shouldCreateMessage(e))){const t=this.handleCorrection(e)||await this.createMessage(e);this.notifications.set({chat_state:null}),this.handleUnreadMessage(t)}},async clearMessages(){try{await this.messages.clearStore()}catch(e){this.messages.trigger("reset"),Pn.error(e)}finally{delete this.msg_chain,delete this.messages.fetched}},async close(){try{await new Promise((e,t)=>this.destroy({success:e,error:(e,n)=>t(n)}))}catch(e){Pn.error(e)}finally{qc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages()}},announceReconnection(){qc.trigger("chatReconnected",this)},async onReconnection(){qc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages(),this.announceReconnection()},validate(e){if(!e.jid)return"Ignored ChatBox without JID";const t=Lc.auto_join_rooms.map(e=>N(e)?e.jid:e),n=qc.settings.get("auto_join_private_chats").concat(t);if(qc.settings.get("singleton")&&!n.includes(e.jid)&&!qc.settings.get("auto_join_on_invite")){const t="".concat(e.jid," is not allowed because singleton is true and it's not being auto_joined");return Pn.warn(t),t}},getDisplayName(){return this.contact?this.contact.getDisplayName():this.vcard?this.vcard.getDisplayName():this.get("jid")},async createMessageFromError(e){if(e instanceof Lc.TimeoutError){(await this.createMessage({type:"error",message:e.message,retry_event_id:e.retry_event_id})).error=e}},getOldestMessage(){for(let e=0;e<this.messages.length;e++){const t=this.messages.at(e);if(t.get("type")===this.get("message_type"))return t}},getMostRecentMessage(){for(let e=this.messages.length-1;e>=0;e--){const t=this.messages.at(e);if(t.get("type")===this.get("message_type"))return t}},getUpdatedMessageAttributes:(e,t)=>(({is_archived:e})=>({is_archived:e}))(t),updateMessage(e,t){const n=this.getUpdatedMessageAttributes(e,t);t&&e.save(n)},setChatState(e,t){return void 0!==this.chat_state_timeout&&(window.clearTimeout(this.chat_state_timeout),delete this.chat_state_timeout),e===Lc.COMPOSING?this.chat_state_timeout=window.setTimeout(this.setChatState.bind(this),Lc.TIMEOUTS.PAUSED,Lc.PAUSED):e===Lc.PAUSED&&(this.chat_state_timeout=window.setTimeout(this.setChatState.bind(this),Lc.TIMEOUTS.INACTIVE,Lc.INACTIVE)),this.set("chat_state",e,t),this},getMessageReferencedByError(e){const t=e.msgid;return t&&this.messages.models.find(e=>[e.get("msgid"),e.get("retraction_id")].includes(t))},shouldShowErrorMessage(e){if(this.getMessageReferencedByError(e)||null!==e.body)return!0},isSameUser:(e,t)=>dl.isSameBareJID(e,t),findDanglingRetraction(e){if(!e.origin_id||!this.messages.length)return null;if(this.messages.last().get("time")>e.time){const t=Array.from(this.messages.models);return t.reverse(),t.find(({attributes:t})=>t.retracted_id===e.origin_id&&t.from===e.from&&!t.moderated_by)}},async handleRetraction(e){const t=["retracted","retracted_id","editable"];if(e.retracted){if(e.is_tombstone)return!1;const n=this.messages.findWhere({origin_id:e.retracted_id,from:e.from});return n?(n.save(Ms(e,t)),!0):(e.dangling_retraction=!0,await this.createMessage(e),!0)}{const n=this.findDanglingRetraction(e);if(n){const r=Ms(n.attributes,t),i=Object.assign({dangling_retraction:!1},e,r);return delete i.id,n.save(i),!0}}return!1},handleCorrection(e){if(!e.replace_id||!e.from)return;const t=this.messages.findWhere({msgid:e.replace_id,from:e.from});if(!t)return;const n=t.get("older_versions")||{};return e.time<t.get("time")&&t.get("edited")?(n[e.time]=e.message,t.save({older_versions:n})):(n[t.get("time")]=t.get("message"),delete(e=Object.assign(e,{older_versions:n})).id,t.save(e)),t},getDuplicateMessage(e){const t=[...this.getStanzaIdQueryAttrs(e),this.getOriginIdQueryAttrs(e),this.getMessageBodyQueryAttrs(e)].filter(e=>e),n=this.messages.models;return sl(n,e=>t.reduce((t,n)=>t||ol(e.attributes,n),!1))},getOriginIdQueryAttrs:e=>e.origin_id&&{origin_id:e.origin_id,from:e.from},getStanzaIdQueryAttrs:e=>Object.keys(e).filter(e=>e.startsWith("stanza_id ")).map(t=>{const n=t.replace(/^stanza_id /,""),r={};return r["stanza_id ".concat(n)]=e[t],r}),getMessageBodyQueryAttrs(e){if(e.message&&e.msgid){const t={from:e.from,msgid:e.msgid};return e.is_encrypted||(t.message=e.message),t}},retractOwnMessage(e){this.sendRetractionMessage(e),e.save({retracted:(new Date).toISOString(),retracted_id:e.get("origin_id"),retraction_id:e.get("id"),is_ephemeral:!0,editable:!1})},sendRetractionMessage(e){const t=e.get("origin_id");if(!t)throw new Error("Can't retract message without a XEP-0359 Origin ID");const n=al({id:dl.getUniqueId(),to:this.get("jid"),type:"chat"}).c("store",{xmlns:cl.NS.HINTS}).up().c("apply-to",{id:t,xmlns:cl.NS.FASTEN}).c("retract",{xmlns:cl.NS.RETRACT});return Lc.connection.send(n)},sendMarkerForMessage(e){if(null==e?void 0:e.get("is_markable")){const t=cl.getBareJidFromJid(e.get("from"));this.sendMarker(t,e.get("msgid"),"displayed",e.get("type"))}},sendMarker(e,t,n,r){const i=al({from:Lc.connection.jid,id:dl.getUniqueId(),to:e,type:r||"chat"}).c(n,{xmlns:cl.NS.MARKERS,id:t});qc.send(i)},handleChatMarker(e){if(cl.getBareJidFromJid(e.to)!==Lc.bare_jid)return!1;if(e.is_markable)return!this.contact||e.is_archived||e.is_carbon||this.sendMarker(e.from,e.msgid,"received"),!1;if(e.marker_id){const t=this.messages.findWhere({msgid:e.marker_id}),n="marker_".concat(e.marker);return t&&!t.get(n)&&t.save({field_name:(new Date).toISOString()}),!0}},sendReceiptStanza(e,t){const n=al({from:Lc.connection.jid,id:dl.getUniqueId(),to:e,type:"chat"}).c("received",{xmlns:cl.NS.RECEIPTS,id:t}).up().c("store",{xmlns:cl.NS.HINTS}).up();qc.send(n)},handleReceipt(e){if("them"===e.sender)if(e.is_valid_receipt_request)this.sendReceiptStanza(e.from,e.msgid);else if(e.receipt_id){const t=this.messages.findWhere({msgid:e.receipt_id});return t&&!t.get("received")&&t.save({received:(new Date).toISOString()}),!0}return!1},createMessageStanza(e){const t=al({from:Lc.connection.jid,to:this.get("jid"),type:this.get("message_type"),id:e.get("edited")&&dl.getUniqueId()||e.get("msgid")}).c("body").t(e.get("message")).up().c(Lc.ACTIVE,{xmlns:cl.NS.CHATSTATES}).root();return"chat"===e.get("type")&&t.c("request",{xmlns:cl.NS.RECEIPTS}).root(),e.get("is_spoiler")&&(e.get("spoiler_hint")?t.c("spoiler",{xmlns:cl.NS.SPOILER},e.get("spoiler_hint")).root():t.c("spoiler",{xmlns:cl.NS.SPOILER}).root()),(e.get("references")||[]).forEach(e=>{const n={xmlns:cl.NS.REFERENCE,begin:e.begin,end:e.end,type:e.type};e.uri&&(n.uri=e.uri),t.c("reference",n).root()}),e.get("oob_url")&&t.c("x",{xmlns:cl.NS.OUTOFBAND}).c("url").t(e.get("oob_url")).root(),e.get("edited")&&t.c("replace",{xmlns:cl.NS.MESSAGE_CORRECT,id:e.get("msgid")}).root(),e.get("origin_id")&&t.c("origin-id",{xmlns:cl.NS.SID,id:e.get("origin_id")}).root(),t},getOutgoingMessageAttributes(e,t){const n=this.get("composing_spoiler"),r=dl.getUniqueId(),i=e?dl.httpToGeoUri(dl.shortnamesToUnicode(e),Lc):void 0;return{from:Lc.bare_jid,fullname:Lc.xmppstatus.get("fullname"),id:r,is_only_emojis:!!e&&dl.isOnlyEmojis(e),jid:this.get("jid"),message:i,msgid:r,nickname:this.get("nickname"),sender:"me",spoiler_hint:n?t:void 0,time:(new Date).toISOString(),type:this.get("message_type"),body:i,is_spoiler:n,origin_id:r}},setEditable(e,t){if(!e.is_headline&&!dl.isEmptyMessage(e)&&"me"===e.sender)if("all"===qc.settings.get("allow_message_corrections"))e.editable=!(e.file||e.retracted||"oob_url"in e);else if("last"===qc.settings.get("allow_message_corrections")&&t>this.get("time_sent")){this.set({time_sent:t});const n=this.messages.findWhere({editable:!0});n&&n.save({editable:!1}),e.editable=!(e.file||e.retracted||"oob_url"in e)}},createMessage(e,t){return this.messages.create(e,Object.assign({wait:!0,promise:!0},t)).catch(e=>Pn.error(e))},async sendMessage(e,t){const n=this.getOutgoingMessageAttributes(e,t);let r=this.messages.findWhere("correcting");if(r){const e=r.get("older_versions")||{};e[r.get("time")]=r.get("message"),r.save({correcting:!1,edited:(new Date).toISOString(),message:n.message,older_versions:e,references:n.references,is_only_emojis:n.is_only_emojis,origin_id:dl.getUniqueId(),received:void 0})}else this.setEditable(n,(new Date).toISOString()),r=await this.createMessage(n);return qc.send(this.createMessageStanza(r)),qc.trigger("sendMessage",{chatbox:this,message:r}),r},sendChatState(){if(qc.settings.get("send_chat_state_notifications")&&this.get("chat_state")){const e=qc.settings.get("send_chat_state_notifications");if(Array.isArray(e)&&!e.includes(this.get("chat_state")))return;qc.send(al({id:dl.getUniqueId(),to:this.get("jid"),type:"chat"}).c(this.get("chat_state"),{xmlns:cl.NS.CHATSTATES}).up().c("no-store",{xmlns:cl.NS.HINTS}).up().c("no-permanent-store",{xmlns:cl.NS.HINTS}))}},async sendFiles(t){var n;const r=(await qc.disco.features.get(cl.NS.HTTPUPLOAD,Lc.domain)).pop();if(!r)return void this.createMessage({message:e("Sorry, looks like file upload is not supported by your server."),type:"error",is_ephemeral:!0});const i=r.dataforms.where({FORM_TYPE:{value:cl.NS.HTTPUPLOAD,type:"hidden"}}).pop(),s=window.parseInt(null===(n=((null==i?void 0:i.attributes)||{})["max-file-size"])||void 0===n?void 0:n.value),o=null==r?void 0:r.id;o?Array.from(t).forEach(async t=>{if(!window.isNaN(s)&&window.parseInt(t.size)>s)return this.createMessage({message:e("The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.",t.name,il()(s)),type:"error",is_ephemeral:!0});{const e=Object.assign(this.getOutgoingMessageAttributes(),{file:!0,progress:0,slot_request_url:o});this.setEditable(e,(new Date).toISOString());const n=await this.createMessage(e,{silent:!0});n.file=t,this.messages.trigger("add",n),n.getRequestSlotURL()}}):this.createMessage({message:e("Sorry, looks like file upload is not supported by your server."),type:"error",is_ephemeral:!0})},maybeShow(e){return e&&dl.safeSave(this,{hidden:!1}),Lc.isUniView()&&this.get("hidden")?void 0:this.trigger("show")},isHidden(){return Lc.isUniView()&&this.get("hidden")||this.isScrolledUp()||"hidden"===Lc.windowState},handleUnreadMessage(e){if((null==e?void 0:e.get("body"))&&ul.isNewMessage(e))if(this.isHidden()){const t={num_unread:this.get("num_unread")+1};0===this.get("num_unread")&&(t.first_unread_id=e.get("id")),this.save(t),Lc.incrementMsgCounter()}else this.sendMarkerForMessage(e)},clearUnreadMsgCounter(){this.get("num_unread")>0&&this.sendMarkerForMessage(this.messages.last()),dl.safeSave(this,{num_unread:0})},isScrolledUp(){return this.get("scrolled",!0)}}),Lc.handleMessageStanza=async function(e){if(ao.isServerMessage(e)){const t=e.getAttribute("from");return Pn.info("handleMessageStanza: Ignoring incoming server message from JID: ".concat(t))}const t=await ao.parseMessage(e,Lc);if(dl.isErrorObject(t))return t.stanza&&Pn.error(t.stanza),Pn.error(t.message);const n=!!ll('body, encrypted[xmlns="'.concat(cl.NS.OMEMO,'"]'),e).length,r=await qc.chats.get(t.contact_jid,{nickname:t.nick},n);await(null==r?void 0:r.queueMessage(t));const i={stanza:e,attrs:t,chatbox:r};qc.trigger("message",i)},Lc.router.route("converse/chat?jid=:jid",(function(e){if(!ul.isValidJID(e))return Pn.warn('Invalid JID "'.concat(e,'" provided in URL fragment'));qc.chats.open(e)})),qc.listen.on("chatBoxesFetched",(function(){qc.settings.get("auto_join_private_chats").forEach(e=>{Lc.chatboxes.where({jid:e}).length||("string"==typeof e?qc.chats.open(e):Pn.error('Invalid jid criteria specified for "auto_join_private_chats"'))}),qc.trigger("privateChatsAutoJoined")})),qc.listen.on("presencesInitialized",(function(){Lc.connection.addHandler(e=>ll('message > result[xmlns="'.concat(cl.NS.MAM,'"]'),e).pop()?(Pn.warn('Received a MAM message with type "chat".'),!0):(Lc.handleMessageStanza(e),!0),null,"message","chat"),Lc.connection.addHandler(e=>(null!==e.getAttribute("type")||Lc.handleMessageStanza(e),!0),cl.NS.RECEIPTS,"message"),Lc.connection.addHandler(e=>(async function(e){const t=cl.getBareJidFromJid(e.getAttribute("from"));if(ul.isSameBareJID(t,Lc.bare_jid))return;const n=await qc.chatboxes.get(t);null==n||n.handleErrorMessageStanza(e)}(e),!0),null,"message","error")})),qc.listen.on("clearSession",()=>{if(Lc.shouldClearCache())return Promise.all(Lc.chatboxes.map(e=>e.messages&&e.messages.clearStore({silent:!0})))}),Object.assign(qc,{chats:{async create(e,t){if("string"==typeof e){if(t&&!(null==t?void 0:t.fullname)){var n;const r=await qc.contacts.get(e);t.fullname=null==r||null===(n=r.attributes)||void 0===n?void 0:n.fullname}const r=qc.chats.get(e,t,!0);return r||void Pn.error("Could not open chatbox for JID: "+e)}return Array.isArray(e)?Promise.all(e.forEach(async n=>{var r;const i=await qc.contacts.get(e);return t.fullname=null==i||null===(r=i.attributes)||void 0===r?void 0:r.fullname,qc.chats.get(n,t,!0).maybeShow()})):(Pn.error("chats.create: You need to provide at least one JID"),null)},async open(e,t,n){if("string"==typeof e){const r=await qc.chats.get(e,t,!0);return r?r.maybeShow(n):r}if(Array.isArray(e))return Promise.all(e.map(e=>qc.chats.get(e,t,!0).then(e=>e&&e.maybeShow(n))).filter(e=>e));const r="chats.open: You need to provide at least one JID";throw Pn.error(r),new Error(r)},async get(e,t={},n=!1){async function r(e){let r=await qc.chatboxes.get(e);return!r&&n?r=await qc.chatboxes.create(e,t,Lc.ChatBox):(r=r&&r.get("type")===Lc.PRIVATE_CHAT_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await qc.chatboxes.get()).filter(e=>e.get("type")===Lc.PRIVATE_CHAT_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}})}}); + */ +const{Strophe:xl,sizzle:El,utils:Al}=rl.env,Cl=rl.env.utils;rl.plugins.add("converse-chat",{dependencies:["converse-chatboxes","converse-disco"],initialize(){Object.assign(Vc,Sl),Vc.settings.extend({allow_message_corrections:"all",allow_message_retraction:"all",allow_message_styling:!0,auto_join_private_chats:[],clear_messages_on_reconnection:!1,filter_by_resource:!1,send_chat_state_notifications:!0}),Uc.Message=ul.extend(wl),Uc.Messages=ra.extend({model:Uc.Message,comparator:"time"}),Uc.ChatBox=_l,Uc.handleMessageStanza=async function(e){if(ps.isServerMessage(e)){const t=e.getAttribute("from");return zn.info("handleMessageStanza: Ignoring incoming server message from JID: ".concat(t))}const t=await ps.parseMessage(e,Uc);if(Cl.isErrorObject(t))return t.stanza&&zn.error(t.stanza),zn.error(t.message);const n=!!El('body, encrypted[xmlns="'.concat(xl.NS.OMEMO,'"]'),e).length,r=await Vc.chats.get(t.contact_jid,{nickname:t.nick},n);await(null==r?void 0:r.queueMessage(t));const i={stanza:e,attrs:t,chatbox:r};Vc.trigger("message",i)},Uc.router.route("converse/chat?jid=:jid",(function(e){if(!Al.isValidJID(e))return zn.warn('Invalid JID "'.concat(e,'" provided in URL fragment'));Vc.chats.open(e)})),Vc.listen.on("chatBoxesFetched",(function(){Vc.settings.get("auto_join_private_chats").forEach(e=>{Uc.chatboxes.where({jid:e}).length||("string"==typeof e?Vc.chats.open(e):zn.error('Invalid jid criteria specified for "auto_join_private_chats"'))}),Vc.trigger("privateChatsAutoJoined")})),Vc.listen.on("presencesInitialized",(function(){Uc.connection.addHandler(e=>El('message > result[xmlns="'.concat(xl.NS.MAM,'"]'),e).pop()?(zn.warn('Received a MAM message with type "chat".'),!0):(Uc.handleMessageStanza(e),!0),null,"message","chat"),Uc.connection.addHandler(e=>(null!==e.getAttribute("type")||Uc.handleMessageStanza(e),!0),xl.NS.RECEIPTS,"message"),Uc.connection.addHandler(e=>(async function(e){const t=xl.getBareJidFromJid(e.getAttribute("from"));if(Al.isSameBareJID(t,Uc.bare_jid))return;const n=await Vc.chatboxes.get(t);null==n||n.handleErrorMessageStanza(e)}(e),!0),null,"message","error")})),Vc.listen.on("clearSession",async()=>{if(Uc.shouldClearCache()){await Promise.all(Uc.chatboxes.map(e=>e.messages&&e.messages.clearStore({silent:!0})));const e=e=>e.get("type")!==Uc.CONTROLBOX_TYPE;Uc.chatboxes.clearStore({silent:!0},e)}})}}); /** * @module converse-disco * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description Converse plugin which add support for XEP-0030: Service Discovery */ -const{Strophe:hl,$iq:fl,utils:pl}=Yc.env;Yc.plugins.add("converse-disco",{initialize(){function e(){if(!Lc.stream_features){const e=hl.getBareJidFromJid(Lc.jid),t="converse.stream-features-".concat(e);qc.promises.add("streamFeaturesAdded"),Lc.stream_features=new Yo,Lc.stream_features.browserStorage=Lc.createStore(t,"session")}}function t(){qc.trigger("streamFeaturesAdded")}qc.promises.add("discoInitialized"),qc.promises.add("streamFeaturesAdded"),Lc.DiscoEntity=Rs.extend({idAttribute:"jid",initialize(e,t){this.waitUntilFeaturesDiscovered=pl.getResolveablePromise(),this.dataforms=new Yo;let n="converse.dataforms-".concat(this.get("jid"));this.dataforms.browserStorage=Lc.createStore(n,"session"),this.features=new Yo,n="converse.features-".concat(this.get("jid")),this.features.browserStorage=Lc.createStore(n,"session"),this.listenTo(this.features,"add",this.onFeatureAdded),this.fields=new Yo,n="converse.fields-".concat(this.get("jid")),this.fields.browserStorage=Lc.createStore(n,"session"),this.listenTo(this.fields,"add",this.onFieldAdded),this.identities=new Yo,n="converse.identities-".concat(this.get("jid")),this.identities.browserStorage=Lc.createStore(n,"session"),this.fetchFeatures(t),this.items=new Lc.DiscoEntities,n="converse.disco-items-".concat(this.get("jid")),this.items.browserStorage=Lc.createStore(n,"session"),this.items.fetch()},async getIdentity(e,t){return await this.waitUntilFeaturesDiscovered,this.identities.findWhere({category:e,type:t})},async hasFeature(e){if(await this.waitUntilFeaturesDiscovered,this.features.findWhere({var:e}))return this},onFeatureAdded(e){e.entity=this,qc.trigger("serviceDiscovered",e)},onFieldAdded(e){e.entity=this,qc.trigger("discoExtensionFieldDiscovered",e)},async fetchFeatures(e){if(e.ignore_cache)this.queryInfo();else{const e=this.features.browserStorage.name,t=await this.features.browserStorage.store.getItem(e);t&&0===t.length||null===t?this.queryInfo():(this.features.fetch({add:!0,success:()=>{this.waitUntilFeaturesDiscovered.resolve(this),this.trigger("featuresDiscovered")}}),this.identities.fetch({add:!0}))}},async queryInfo(){let e;try{e=await qc.disco.info(this.get("jid"),null)}catch(e){return null===e?Pn.error("Timeout for disco#info query for ".concat(this.get("jid"))):Pn.error(e),void this.waitUntilFeaturesDiscovered.resolve(this)}this.onInfo(e)},onDiscoItems(e){ur()('query[xmlns="'.concat(hl.NS.DISCO_ITEMS,'"] item'),e).forEach(e=>{if(e.getAttribute("node"))return;const t=e.getAttribute("jid");if(void 0===this.items.get(t)){const e=Lc.disco_entities.get(t);e?this.items.add(e):this.items.create({jid:t})}})},async queryForItems(){if(0===this.identities.where({category:"server"}).length)return;const e=await qc.disco.items(this.get("jid"));this.onDiscoItems(e)},onInfo(e){Array.from(e.querySelectorAll("identity")).forEach(e=>{this.identities.create({category:e.getAttribute("category"),type:e.getAttribute("type"),name:e.getAttribute("name")})}),ur()('x[type="result"][xmlns="'.concat(hl.NS.XFORM,'"]'),e).forEach(e=>{const t={};ur()("field",e).forEach(e=>{var n;t[e.getAttribute("var")]={value:null===(n=e.querySelector("value"))||void 0===n?void 0:n.textContent,type:e.getAttribute("type")}}),this.dataforms.create(t)}),e.querySelector('feature[var="'.concat(hl.NS.DISCO_ITEMS,'"]'))&&this.queryForItems(),Array.from(e.querySelectorAll("feature")).forEach(t=>{this.features.create({var:t.getAttribute("var"),from:e.getAttribute("from")})}),ur()('x[type="result"][xmlns="jabber:x:data"] field',e).forEach(t=>{var n;this.fields.create({var:t.getAttribute("var"),value:null===(n=t.querySelector("value"))||void 0===n?void 0:n.textContent,from:e.getAttribute("from")})}),this.waitUntilFeaturesDiscovered.resolve(this),this.trigger("featuresDiscovered")}}),Lc.DiscoEntities=Yo.extend({model:Lc.DiscoEntity,fetchEntities(){return new Promise((e,t)=>{this.fetch({add:!0,success:e,error(e,n){Pn.error(n),t(new Error("Could not fetch disco entities"))}})})}});const n=this;function r(e){const t=e.getElementsByTagName("query")[0].getAttribute("node"),r={xmlns:hl.NS.DISCO_INFO};t&&(r.node=t);const i=fl({type:"result",id:e.getAttribute("id")}),s=e.getAttribute("from");return null!==s&&i.attrs({to:s}),i.c("query",r),n._identities.forEach(e=>{const t={category:e.category,type:e.type};e.name&&(t.name=e.name),e.lang&&(t["xml:lang"]=e.lang),i.c("identity",t).up()}),n._features.forEach(e=>i.c("feature",{var:e}).up()),qc.send(i.tree()),!0}async function i(){qc.disco.own.identities.add("client","web","Converse"),qc.disco.own.features.add(hl.NS.CHATSTATES),qc.disco.own.features.add(hl.NS.DISCO_INFO),qc.disco.own.features.add(hl.NS.ROSTERX),qc.settings.get("message_carbons")&&qc.disco.own.features.add(hl.NS.CARBONS),qc.trigger("addClientFeatures"),Lc.connection.addHandler(r,hl.NS.DISCO_INFO,"iq","get",null,null),Lc.disco_entities=new Lc.DiscoEntities;const e="converse.disco-entities-".concat(Lc.bare_jid);Lc.disco_entities.browserStorage=Lc.createStore(e,"session");const t=await Lc.disco_entities.fetchEntities();0!==t.length&&t.get(Lc.domain)||Lc.disco_entities.create({jid:Lc.domain}),qc.trigger("discoInitialized")}n._identities=[],n._features=[],qc.listen.on("userSessionInitialized",async()=>{e(),Lc.connfeedback.get("connection_status")===hl.Status.ATTACHED&&(await new Promise((e,t)=>Lc.stream_features.fetch({success:e,error:t})),t())}),qc.listen.on("beforeResourceBinding",(function(){e(),Array.from(Lc.connection.features.childNodes).forEach(e=>{Lc.stream_features.create({name:e.nodeName,xmlns:e.getAttribute("xmlns")})}),t()})),qc.listen.on("reconnected",i),qc.listen.on("connected",i),qc.listen.on("beforeTearDown",async()=>{qc.promises.add("streamFeaturesAdded"),Lc.stream_features&&(await Lc.stream_features.clearStore(),delete Lc.stream_features)}),qc.listen.on("clearSession",()=>{Lc.shouldClearCache()&&Lc.disco_entities&&(Array.from(Lc.disco_entities.models).forEach(e=>e.features.clearStore()),Array.from(Lc.disco_entities.models).forEach(e=>e.identities.clearStore()),Array.from(Lc.disco_entities.models).forEach(e=>e.dataforms.clearStore()),Array.from(Lc.disco_entities.models).forEach(e=>e.fields.clearStore()),Lc.disco_entities.clearStore(),delete Lc.disco_entities)}),Object.assign(qc,{disco:{stream:{async getFeature(e,t){if(await qc.waitUntil("streamFeaturesAdded"),!e||!t)throw new Error("name and xmlns need to be provided when calling disco.stream.getFeature");if(void 0!==Lc.stream_features||qc.connection.connected())return Lc.stream_features.findWhere({name:e,xmlns:t});{const n="Tried to get feature ".concat(e," ").concat(t," but _converse.stream_features has been torn down");Pn.warn(n)}}},own:{identities:{add(e,t,r,i){for(var s=0;s<n._identities.length;s++)if(n._identities[s].category==e&&n._identities[s].type==t&&n._identities[s].name==r&&n._identities[s].lang==i)return!1;n._identities.push({category:e,type:t,name:r,lang:i})},clear(){n._identities=[]},get:()=>n._identities},features:{add(e){for(var t=0;t<n._features.length;t++)if(n._features[t]==e)return!1;n._features.push(e)},clear(){n._features=[]},get:()=>n._features}},info(e,t){const n={xmlns:hl.NS.DISCO_INFO};t&&(n.node=t);const r=fl({from:Lc.connection.jid,to:e,type:"get"}).c("query",n);return qc.sendIQ(r)},items(e,t){const n={xmlns:hl.NS.DISCO_ITEMS};return t&&(n.node=t),qc.sendIQ(fl({from:Lc.connection.jid,to:e,type:"get"}).c("query",n))},entities:{async get(e,t=!1){if(await qc.waitUntil("discoInitialized"),!e)return Lc.disco_entities;if(void 0===Lc.disco_entities&&!qc.connection.connected()){const t="Tried to look up entity ".concat(e," but _converse.disco_entities has been torn down");return void Pn.warn(t)}const n=Lc.disco_entities.get(e);return n||!t?n:qc.disco.entities.create(e)},create:(e,t)=>Lc.disco_entities.create({jid:e},t)},features:{async get(e,t){if(!t)throw new TypeError("You need to provide an entity JID");await qc.waitUntil("discoInitialized");let n=await qc.disco.entities.get(t,!0);if(void 0===Lc.disco_entities&&!qc.connection.connected()){const n="Tried to get feature ".concat(e," for ").concat(t," but _converse.disco_entities has been torn down");return void Pn.warn(n)}n=await n.waitUntilFeaturesDiscovered;const r=[...n.items.map(t=>t.hasFeature(e)),n.hasFeature(e)];return(await Promise.all(r)).filter(N)}},supports:async(e,t)=>(await qc.disco.features.get(e,t)).length>0,async refresh(e){if(!e)throw new TypeError("api.disco.refresh: You need to provide an entity JID");await qc.waitUntil("discoInitialized");let t=await qc.disco.entities.get(e);return t?(t.features.reset(),t.fields.reset(),t.identities.reset(),t.waitUntilFeaturesDiscovered.isPending||(t.waitUntilFeaturesDiscovered=pl.getResolveablePromise()),t.queryInfo()):t=await qc.disco.entities.create(e,{ignore_cache:!0}),t.waitUntilFeaturesDiscovered},refreshFeatures:e=>qc.refresh(e),async getFeatures(e){if(!e)throw new TypeError("api.disco.getFeatures: You need to provide an entity JID");await qc.waitUntil("discoInitialized");let t=await qc.disco.entities.get(e,!0);return t=await t.waitUntilFeaturesDiscovered,t.features},async getFields(e){if(!e)throw new TypeError("api.disco.getFields: You need to provide an entity JID");await qc.waitUntil("discoInitialized");let t=await qc.disco.entities.get(e,!0);return t=await t.waitUntilFeaturesDiscovered,t.fields},async getIdentity(e,t,n){const r=await qc.disco.entities.get(n,!0);if(void 0!==r||qc.connection.connected())return r.getIdentity(e,t);{const t="Tried to look up category ".concat(e," for ").concat(n," but _converse.disco_entities has been torn down");Pn.warn(t)}}}})}});const gl=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)(\\*\\\\0\\/\\*|\\*\\\\O\\/\\*|\\-___\\-|\\:'\\-\\)|'\\:\\-\\)|'\\:\\-D|\\>\\:\\-\\)|>\\:\\-\\)|'\\:\\-\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:'\\-\\(|O\\:\\-\\)|0\\:\\-3|0\\:\\-\\)|0;\\^\\)|O;\\-\\)|0;\\-\\)|O\\:\\-3|\\-__\\-|\\:\\-Þ|\\:\\-Þ|\\<\\/3|<\\/3|\\:'\\)|\\:\\-D|'\\:\\)|'\\=\\)|'\\:D|'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\=\\)|>\\=\\)|;\\-\\)|\\*\\-\\)|;\\-\\]|;\\^\\)|'\\:\\(|'\\=\\(|\\:\\-\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\-\\[|\\>\\:\\(|>\\:\\(|\\:'\\(|;\\-\\(|\\>\\.\\<|>\\.<|#\\-\\)|%\\-\\)|X\\-\\)|\\\\0\\/|\\\\O\\/|0\\:3|0\\:\\)|O\\:\\)|O\\=\\)|O\\:3|B\\-\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\-P|\\:Þ|\\:Þ|\\:\\-b|\\:\\-O|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:\\-#|\\:\\-\\)|\\(y\\)|\\<3|<3|\\:D|\\=D|;\\)|\\*\\)|;\\]|;D|\\:\\*|\\=\\*|\\:\\(|\\:\\[|\\=\\(|\\:@|;\\(|D\\:|\\:\\$|\\=\\$|#\\)|%\\)|X\\)|B\\)|8\\)|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\=P|\\:b|\\:O|\\:X|\\:#|\\=X|\\=#|\\:\\)|\\=\\]|\\=\\)|\\:\\])(?=\\s|$|[!,.?]))","gi"),ml=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;function vl(){const e=yl(['<img class="emoji"\n draggable="false"\n title="','"\n alt="','"\n src="','">']);return vl=function(){return e},e}function _l(){const e=yl(['<img class="emoji"\n draggable="false"\n alt="','"\n src="',"/72x72/",'.png"/>']);return _l=function(){return e},e}function bl(){const e=yl(['<span title="','">',"</span>"]);return bl=function(){return e},e}function yl(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} +const{Strophe:jl,$iq:Tl,utils:Ol}=rl.env;rl.plugins.add("converse-disco",{initialize(){function e(){if(!Uc.stream_features){const e=jl.getBareJidFromJid(Uc.jid),t="converse.stream-features-".concat(e);Vc.promises.add("streamFeaturesAdded"),Uc.stream_features=new ra,Uc.stream_features.browserStorage=Uc.createStore(t,"session")}}function t(){Vc.trigger("streamFeaturesAdded")}Vc.promises.add("discoInitialized"),Vc.promises.add("streamFeaturesAdded"),Uc.DiscoEntity=qo.extend({idAttribute:"jid",initialize(e,t){this.waitUntilFeaturesDiscovered=Ol.getResolveablePromise(),this.dataforms=new ra;let n="converse.dataforms-".concat(this.get("jid"));this.dataforms.browserStorage=Uc.createStore(n,"session"),this.features=new ra,n="converse.features-".concat(this.get("jid")),this.features.browserStorage=Uc.createStore(n,"session"),this.listenTo(this.features,"add",this.onFeatureAdded),this.fields=new ra,n="converse.fields-".concat(this.get("jid")),this.fields.browserStorage=Uc.createStore(n,"session"),this.listenTo(this.fields,"add",this.onFieldAdded),this.identities=new ra,n="converse.identities-".concat(this.get("jid")),this.identities.browserStorage=Uc.createStore(n,"session"),this.fetchFeatures(t),this.items=new Uc.DiscoEntities,n="converse.disco-items-".concat(this.get("jid")),this.items.browserStorage=Uc.createStore(n,"session"),this.items.fetch()},async getIdentity(e,t){return await this.waitUntilFeaturesDiscovered,this.identities.findWhere({category:e,type:t})},async hasFeature(e){if(await this.waitUntilFeaturesDiscovered,this.features.findWhere({var:e}))return this},onFeatureAdded(e){e.entity=this,Vc.trigger("serviceDiscovered",e)},onFieldAdded(e){e.entity=this,Vc.trigger("discoExtensionFieldDiscovered",e)},async fetchFeatures(e){if(e.ignore_cache)this.queryInfo();else{const e=this.features.browserStorage.name,t=await this.features.browserStorage.store.getItem(e);t&&0===t.length||null===t?this.queryInfo():(this.features.fetch({add:!0,success:()=>{this.waitUntilFeaturesDiscovered.resolve(this),this.trigger("featuresDiscovered")}}),this.identities.fetch({add:!0}))}},async queryInfo(){let e;try{e=await Vc.disco.info(this.get("jid"),null)}catch(e){return null===e?zn.error("Timeout for disco#info query for ".concat(this.get("jid"))):zn.error(e),void this.waitUntilFeaturesDiscovered.resolve(this)}this.onInfo(e)},onDiscoItems(e){mr()('query[xmlns="'.concat(jl.NS.DISCO_ITEMS,'"] item'),e).forEach(e=>{if(e.getAttribute("node"))return;const t=e.getAttribute("jid");if(void 0===this.items.get(t)){const e=Uc.disco_entities.get(t);e?this.items.add(e):this.items.create({jid:t})}})},async queryForItems(){if(0===this.identities.where({category:"server"}).length)return;const e=await Vc.disco.items(this.get("jid"));this.onDiscoItems(e)},onInfo(e){Array.from(e.querySelectorAll("identity")).forEach(e=>{this.identities.create({category:e.getAttribute("category"),type:e.getAttribute("type"),name:e.getAttribute("name")})}),mr()('x[type="result"][xmlns="'.concat(jl.NS.XFORM,'"]'),e).forEach(e=>{const t={};mr()("field",e).forEach(e=>{var n;t[e.getAttribute("var")]={value:null===(n=e.querySelector("value"))||void 0===n?void 0:n.textContent,type:e.getAttribute("type")}}),this.dataforms.create(t)}),e.querySelector('feature[var="'.concat(jl.NS.DISCO_ITEMS,'"]'))&&this.queryForItems(),Array.from(e.querySelectorAll("feature")).forEach(t=>{this.features.create({var:t.getAttribute("var"),from:e.getAttribute("from")})}),mr()('x[type="result"][xmlns="jabber:x:data"] field',e).forEach(t=>{var n;this.fields.create({var:t.getAttribute("var"),value:null===(n=t.querySelector("value"))||void 0===n?void 0:n.textContent,from:e.getAttribute("from")})}),this.waitUntilFeaturesDiscovered.resolve(this),this.trigger("featuresDiscovered")}}),Uc.DiscoEntities=ra.extend({model:Uc.DiscoEntity,fetchEntities(){return new Promise((e,t)=>{this.fetch({add:!0,success:e,error(e,n){zn.error(n),t(new Error("Could not fetch disco entities"))}})})}});const n=this;function r(e){const t=e.getElementsByTagName("query")[0].getAttribute("node"),r={xmlns:jl.NS.DISCO_INFO};t&&(r.node=t);const i=Tl({type:"result",id:e.getAttribute("id")}),o=e.getAttribute("from");return null!==o&&i.attrs({to:o}),i.c("query",r),n._identities.forEach(e=>{const t={category:e.category,type:e.type};e.name&&(t.name=e.name),e.lang&&(t["xml:lang"]=e.lang),i.c("identity",t).up()}),n._features.forEach(e=>i.c("feature",{var:e}).up()),Vc.send(i.tree()),!0}async function i(){Vc.disco.own.identities.add("client","web","Converse"),Vc.disco.own.features.add(jl.NS.CHATSTATES),Vc.disco.own.features.add(jl.NS.DISCO_INFO),Vc.disco.own.features.add(jl.NS.ROSTERX),Vc.settings.get("message_carbons")&&Vc.disco.own.features.add(jl.NS.CARBONS),Vc.trigger("addClientFeatures"),Uc.connection.addHandler(r,jl.NS.DISCO_INFO,"iq","get",null,null),Uc.disco_entities=new Uc.DiscoEntities;const e="converse.disco-entities-".concat(Uc.bare_jid);Uc.disco_entities.browserStorage=Uc.createStore(e,"session");const t=await Uc.disco_entities.fetchEntities();0!==t.length&&t.get(Uc.domain)||Uc.disco_entities.create({jid:Uc.domain}),Vc.trigger("discoInitialized")}n._identities=[],n._features=[],Vc.listen.on("userSessionInitialized",async()=>{e(),Uc.connfeedback.get("connection_status")===jl.Status.ATTACHED&&(await new Promise((e,t)=>Uc.stream_features.fetch({success:e,error:t})),t())}),Vc.listen.on("beforeResourceBinding",(function(){e(),Array.from(Uc.connection.features.childNodes).forEach(e=>{Uc.stream_features.create({name:e.nodeName,xmlns:e.getAttribute("xmlns")})}),t()})),Vc.listen.on("reconnected",i),Vc.listen.on("connected",i),Vc.listen.on("beforeTearDown",async()=>{Vc.promises.add("streamFeaturesAdded"),Uc.stream_features&&(await Uc.stream_features.clearStore(),delete Uc.stream_features)}),Vc.listen.on("clearSession",()=>{Uc.shouldClearCache()&&Uc.disco_entities&&(Array.from(Uc.disco_entities.models).forEach(e=>e.features.clearStore()),Array.from(Uc.disco_entities.models).forEach(e=>e.identities.clearStore()),Array.from(Uc.disco_entities.models).forEach(e=>e.dataforms.clearStore()),Array.from(Uc.disco_entities.models).forEach(e=>e.fields.clearStore()),Uc.disco_entities.clearStore(),delete Uc.disco_entities)}),Object.assign(Vc,{disco:{stream:{async getFeature(e,t){if(await Vc.waitUntil("streamFeaturesAdded"),!e||!t)throw new Error("name and xmlns need to be provided when calling disco.stream.getFeature");if(void 0!==Uc.stream_features||Vc.connection.connected())return Uc.stream_features.findWhere({name:e,xmlns:t});{const n="Tried to get feature ".concat(e," ").concat(t," but _converse.stream_features has been torn down");zn.warn(n)}}},own:{identities:{add(e,t,r,i){for(var o=0;o<n._identities.length;o++)if(n._identities[o].category==e&&n._identities[o].type==t&&n._identities[o].name==r&&n._identities[o].lang==i)return!1;n._identities.push({category:e,type:t,name:r,lang:i})},clear(){n._identities=[]},get:()=>n._identities},features:{add(e){for(var t=0;t<n._features.length;t++)if(n._features[t]==e)return!1;n._features.push(e)},clear(){n._features=[]},get:()=>n._features}},info(e,t){const n={xmlns:jl.NS.DISCO_INFO};t&&(n.node=t);const r=Tl({from:Uc.connection.jid,to:e,type:"get"}).c("query",n);return Vc.sendIQ(r)},items(e,t){const n={xmlns:jl.NS.DISCO_ITEMS};return t&&(n.node=t),Vc.sendIQ(Tl({from:Uc.connection.jid,to:e,type:"get"}).c("query",n))},entities:{async get(e,t=!1){if(await Vc.waitUntil("discoInitialized"),!e)return Uc.disco_entities;if(void 0===Uc.disco_entities&&!Vc.connection.connected()){const t="Tried to look up entity ".concat(e," but _converse.disco_entities has been torn down");return void zn.warn(t)}const n=Uc.disco_entities.get(e);return n||!t?n:Vc.disco.entities.create(e)},create:(e,t)=>Uc.disco_entities.create({jid:e},t)},features:{async get(e,t){if(!t)throw new TypeError("You need to provide an entity JID");await Vc.waitUntil("discoInitialized");let n=await Vc.disco.entities.get(t,!0);if(void 0===Uc.disco_entities&&!Vc.connection.connected()){const n="Tried to get feature ".concat(e," for ").concat(t," but _converse.disco_entities has been torn down");return void zn.warn(n)}n=await n.waitUntilFeaturesDiscovered;const r=[...n.items.map(t=>t.hasFeature(e)),n.hasFeature(e)];return(await Promise.all(r)).filter(N)}},supports:async(e,t)=>(await Vc.disco.features.get(e,t)).length>0,async refresh(e){if(!e)throw new TypeError("api.disco.refresh: You need to provide an entity JID");await Vc.waitUntil("discoInitialized");let t=await Vc.disco.entities.get(e);return t?(t.features.reset(),t.fields.reset(),t.identities.reset(),t.waitUntilFeaturesDiscovered.isPending||(t.waitUntilFeaturesDiscovered=Ol.getResolveablePromise()),t.queryInfo()):t=await Vc.disco.entities.create(e,{ignore_cache:!0}),t.waitUntilFeaturesDiscovered},refreshFeatures:e=>Vc.refresh(e),async getFeatures(e){if(!e)throw new TypeError("api.disco.getFeatures: You need to provide an entity JID");await Vc.waitUntil("discoInitialized");let t=await Vc.disco.entities.get(e,!0);return t=await t.waitUntilFeaturesDiscovered,t.features},async getFields(e){if(!e)throw new TypeError("api.disco.getFields: You need to provide an entity JID");await Vc.waitUntil("discoInitialized");let t=await Vc.disco.entities.get(e,!0);return t=await t.waitUntilFeaturesDiscovered,t.fields},async getIdentity(e,t,n){const r=await Vc.disco.entities.get(n,!0);if(void 0!==r||Vc.connection.connected())return r.getIdentity(e,t);{const t="Tried to look up category ".concat(e," for ").concat(n," but _converse.disco_entities has been torn down");zn.warn(t)}}}})}});const kl=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)(\\*\\\\0\\/\\*|\\*\\\\O\\/\\*|\\-___\\-|\\:'\\-\\)|'\\:\\-\\)|'\\:\\-D|\\>\\:\\-\\)|>\\:\\-\\)|'\\:\\-\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:'\\-\\(|O\\:\\-\\)|0\\:\\-3|0\\:\\-\\)|0;\\^\\)|O;\\-\\)|0;\\-\\)|O\\:\\-3|\\-__\\-|\\:\\-Þ|\\:\\-Þ|\\<\\/3|<\\/3|\\:'\\)|\\:\\-D|'\\:\\)|'\\=\\)|'\\:D|'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\=\\)|>\\=\\)|;\\-\\)|\\*\\-\\)|;\\-\\]|;\\^\\)|'\\:\\(|'\\=\\(|\\:\\-\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\-\\[|\\>\\:\\(|>\\:\\(|\\:'\\(|;\\-\\(|\\>\\.\\<|>\\.<|#\\-\\)|%\\-\\)|X\\-\\)|\\\\0\\/|\\\\O\\/|0\\:3|0\\:\\)|O\\:\\)|O\\=\\)|O\\:3|B\\-\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\-P|\\:Þ|\\:Þ|\\:\\-b|\\:\\-O|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:\\-#|\\:\\-\\)|\\(y\\)|\\<3|<3|\\:D|\\=D|;\\)|\\*\\)|;\\]|;D|\\:\\*|\\=\\*|\\:\\(|\\:\\[|\\=\\(|\\:@|;\\(|D\\:|\\:\\$|\\=\\$|#\\)|%\\)|X\\)|B\\)|8\\)|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\=P|\\:b|\\:O|\\:X|\\:#|\\=X|\\=#|\\:\\)|\\=\\]|\\=\\)|\\:\\])(?=\\s|$|[!,.?]))","gi"),Nl=/(?:\ud83d\udc68\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc68\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc68\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc68\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc68\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffc-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffd-\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb\udffc\udffe\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffd\udfff]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc68\ud83c[\udffb-\udffe]|\ud83d\udc69\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83d\udc69\ud83c[\udffb-\udffe]|\ud83e\uddd1\ud83c\udffb\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffc\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffd\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udffe\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\ud83c\udfff\u200d\ud83e\udd1d\u200d\ud83e\uddd1\ud83c[\udffb-\udfff]|\ud83e\uddd1\u200d\ud83e\udd1d\u200d\ud83e\uddd1|\ud83d\udc6b\ud83c[\udffb-\udfff]|\ud83d\udc6c\ud83c[\udffb-\udfff]|\ud83d\udc6d\ud83c[\udffb-\udfff]|\ud83d[\udc6b-\udc6d])|(?:\ud83d[\udc68\udc69]|\ud83e\uddd1)(?:\ud83c[\udffb-\udfff])?\u200d(?:\u2695\ufe0f|\u2696\ufe0f|\u2708\ufe0f|\ud83c[\udf3e\udf73\udf93\udfa4\udfa8\udfeb\udfed]|\ud83d[\udcbb\udcbc\udd27\udd2c\ude80\ude92]|\ud83e[\uddaf-\uddb3\uddbc\uddbd])|(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75]|\u26f9)((?:\ud83c[\udffb-\udfff]|\ufe0f)\u200d[\u2640\u2642]\ufe0f)|(?:\ud83c[\udfc3\udfc4\udfca]|\ud83d[\udc6e\udc71\udc73\udc77\udc81\udc82\udc86\udc87\ude45-\ude47\ude4b\ude4d\ude4e\udea3\udeb4-\udeb6]|\ud83e[\udd26\udd35\udd37-\udd39\udd3d\udd3e\uddb8\uddb9\uddcd-\uddcf\uddd6-\udddd])(?:\ud83c[\udffb-\udfff])?\u200d[\u2640\u2642]\ufe0f|(?:\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68|\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d[\udc68\udc69]|\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66|\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f|\ud83c\udff3\ufe0f\u200d\ud83c\udf08|\ud83c\udff4\u200d\u2620\ufe0f|\ud83d\udc15\u200d\ud83e\uddba|\ud83d\udc41\u200d\ud83d\udde8|\ud83d\udc68\u200d\ud83d[\udc66\udc67]|\ud83d\udc69\u200d\ud83d[\udc66\udc67]|\ud83d\udc6f\u200d\u2640\ufe0f|\ud83d\udc6f\u200d\u2642\ufe0f|\ud83e\udd3c\u200d\u2640\ufe0f|\ud83e\udd3c\u200d\u2642\ufe0f|\ud83e\uddde\u200d\u2640\ufe0f|\ud83e\uddde\u200d\u2642\ufe0f|\ud83e\udddf\u200d\u2640\ufe0f|\ud83e\udddf\u200d\u2642\ufe0f)|[#*0-9]\ufe0f?\u20e3|(?:[©®\u2122\u265f]\ufe0f)|(?:\ud83c[\udc04\udd70\udd71\udd7e\udd7f\ude02\ude1a\ude2f\ude37\udf21\udf24-\udf2c\udf36\udf7d\udf96\udf97\udf99-\udf9b\udf9e\udf9f\udfcd\udfce\udfd4-\udfdf\udff3\udff5\udff7]|\ud83d[\udc3f\udc41\udcfd\udd49\udd4a\udd6f\udd70\udd73\udd76-\udd79\udd87\udd8a-\udd8d\udda5\udda8\uddb1\uddb2\uddbc\uddc2-\uddc4\uddd1-\uddd3\udddc-\uddde\udde1\udde3\udde8\uddef\uddf3\uddfa\udecb\udecd-\udecf\udee0-\udee5\udee9\udef0\udef3]|[\u203c\u2049\u2139\u2194-\u2199\u21a9\u21aa\u231a\u231b\u2328\u23cf\u23ed-\u23ef\u23f1\u23f2\u23f8-\u23fa\u24c2\u25aa\u25ab\u25b6\u25c0\u25fb-\u25fe\u2600-\u2604\u260e\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262a\u262e\u262f\u2638-\u263a\u2640\u2642\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267b\u267f\u2692-\u2697\u2699\u269b\u269c\u26a0\u26a1\u26a7\u26aa\u26ab\u26b0\u26b1\u26bd\u26be\u26c4\u26c5\u26c8\u26cf\u26d1\u26d3\u26d4\u26e9\u26ea\u26f0-\u26f5\u26f8\u26fa\u26fd\u2702\u2708\u2709\u270f\u2712\u2714\u2716\u271d\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u2764\u27a1\u2934\u2935\u2b05-\u2b07\u2b1b\u2b1c\u2b50\u2b55\u3030\u303d\u3297\u3299])(?:\ufe0f|(?!\ufe0e))|(?:(?:\ud83c[\udfcb\udfcc]|\ud83d[\udd74\udd75\udd90]|[\u261d\u26f7\u26f9\u270c\u270d])(?:\ufe0f|(?!\ufe0e))|(?:\ud83c[\udf85\udfc2-\udfc4\udfc7\udfca]|\ud83d[\udc42\udc43\udc46-\udc50\udc66-\udc69\udc6e\udc70-\udc78\udc7c\udc81-\udc83\udc85-\udc87\udcaa\udd7a\udd95\udd96\ude45-\ude47\ude4b-\ude4f\udea3\udeb4-\udeb6\udec0\udecc]|\ud83e[\udd0f\udd18-\udd1c\udd1e\udd1f\udd26\udd30-\udd39\udd3d\udd3e\uddb5\uddb6\uddb8\uddb9\uddbb\uddcd-\uddcf\uddd1-\udddd]|[\u270a\u270b]))(?:\ud83c[\udffb-\udfff])?|(?:\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f|\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f|\ud83c\udde6\ud83c[\udde8-\uddec\uddee\uddf1\uddf2\uddf4\uddf6-\uddfa\uddfc\uddfd\uddff]|\ud83c\udde7\ud83c[\udde6\udde7\udde9-\uddef\uddf1-\uddf4\uddf6-\uddf9\uddfb\uddfc\uddfe\uddff]|\ud83c\udde8\ud83c[\udde6\udde8\udde9\uddeb-\uddee\uddf0-\uddf5\uddf7\uddfa-\uddff]|\ud83c\udde9\ud83c[\uddea\uddec\uddef\uddf0\uddf2\uddf4\uddff]|\ud83c\uddea\ud83c[\udde6\udde8\uddea\uddec\udded\uddf7-\uddfa]|\ud83c\uddeb\ud83c[\uddee-\uddf0\uddf2\uddf4\uddf7]|\ud83c\uddec\ud83c[\udde6\udde7\udde9-\uddee\uddf1-\uddf3\uddf5-\uddfa\uddfc\uddfe]|\ud83c\udded\ud83c[\uddf0\uddf2\uddf3\uddf7\uddf9\uddfa]|\ud83c\uddee\ud83c[\udde8-\uddea\uddf1-\uddf4\uddf6-\uddf9]|\ud83c\uddef\ud83c[\uddea\uddf2\uddf4\uddf5]|\ud83c\uddf0\ud83c[\uddea\uddec-\uddee\uddf2\uddf3\uddf5\uddf7\uddfc\uddfe\uddff]|\ud83c\uddf1\ud83c[\udde6-\udde8\uddee\uddf0\uddf7-\uddfb\uddfe]|\ud83c\uddf2\ud83c[\udde6\udde8-\udded\uddf0-\uddff]|\ud83c\uddf3\ud83c[\udde6\udde8\uddea-\uddec\uddee\uddf1\uddf4\uddf5\uddf7\uddfa\uddff]|\ud83c\uddf4\ud83c\uddf2|\ud83c\uddf5\ud83c[\udde6\uddea-\udded\uddf0-\uddf3\uddf7-\uddf9\uddfc\uddfe]|\ud83c\uddf6\ud83c\udde6|\ud83c\uddf7\ud83c[\uddea\uddf4\uddf8\uddfa\uddfc]|\ud83c\uddf8\ud83c[\udde6-\uddea\uddec-\uddf4\uddf7-\uddf9\uddfb\uddfd-\uddff]|\ud83c\uddf9\ud83c[\udde6\udde8\udde9\uddeb-\udded\uddef-\uddf4\uddf7\uddf9\uddfb\uddfc\uddff]|\ud83c\uddfa\ud83c[\udde6\uddec\uddf2\uddf3\uddf8\uddfe\uddff]|\ud83c\uddfb\ud83c[\udde6\udde8\uddea\uddec\uddee\uddf3\uddfa]|\ud83c\uddfc\ud83c[\uddeb\uddf8]|\ud83c\uddfd\ud83c\uddf0|\ud83c\uddfe\ud83c[\uddea\uddf9]|\ud83c\uddff\ud83c[\udde6\uddf2\uddfc]|\ud83c[\udccf\udd8e\udd91-\udd9a\udde6-\uddff\ude01\ude32-\ude36\ude38-\ude3a\ude50\ude51\udf00-\udf20\udf2d-\udf35\udf37-\udf7c\udf7e-\udf84\udf86-\udf93\udfa0-\udfc1\udfc5\udfc6\udfc8\udfc9\udfcf-\udfd3\udfe0-\udff0\udff4\udff8-\udfff]|\ud83d[\udc00-\udc3e\udc40\udc44\udc45\udc51-\udc65\udc6a\udc6f\udc79-\udc7b\udc7d-\udc80\udc84\udc88-\udca9\udcab-\udcfc\udcff-\udd3d\udd4b-\udd4e\udd50-\udd67\udda4\uddfb-\ude44\ude48-\ude4a\ude80-\udea2\udea4-\udeb3\udeb7-\udebf\udec1-\udec5\uded0-\uded2\uded5\udeeb\udeec\udef4-\udefa\udfe0-\udfeb]|\ud83e[\udd0d\udd0e\udd10-\udd17\udd1d\udd20-\udd25\udd27-\udd2f\udd3a\udd3c\udd3f-\udd45\udd47-\udd71\udd73-\udd76\udd7a-\udda2\udda5-\uddaa\uddae-\uddb4\uddb7\uddba\uddbc-\uddca\uddd0\uddde-\uddff\ude70-\ude73\ude78-\ude7a\ude80-\ude82\ude90-\ude95]|[\u23e9-\u23ec\u23f0\u23f3\u267e\u26ce\u2705\u2728\u274c\u274e\u2753-\u2755\u2795-\u2797\u27b0\u27bf\ue50a])|\ufe0f/g;function Il(){const e=Dl(['<img class="emoji"\n draggable="false"\n title="','"\n alt="','"\n src="','">']);return Il=function(){return e},e}function Ml(){const e=Dl(['<img class="emoji"\n draggable="false"\n title="','"\n alt="','"\n src="',"/72x72/",'.png"/>']);return Ml=function(){return e},e}function Rl(){const e=Dl(['<span title="','">',"</span>"]);return Rl=function(){return e},e}function Dl(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** * @module converse-emoji * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const wl=Yc.env.utils;Yc.emojis={initialized:!1,initialized_promise:wl.getResolveablePromise()};const Sl={"*\\0/*":"1f646","*\\O/*":"1f646","-___-":"1f611",":'-)":"1f602","':-)":"1f605","':-D":"1f605",">:-)":"1f606","':-(":"1f613",">:-(":"1f620",":'-(":"1f622","O:-)":"1f607","0:-3":"1f607","0:-)":"1f607","0;^)":"1f607","O;-)":"1f607","0;-)":"1f607","O:-3":"1f607","-__-":"1f611",":-Þ":"1f61b","</3":"1f494",":')":"1f602",":-D":"1f603","':)":"1f605","'=)":"1f605","':D":"1f605","'=D":"1f605",">:)":"1f606",">;)":"1f606",">=)":"1f606",";-)":"1f609","*-)":"1f609",";-]":"1f609",";^)":"1f609","':(":"1f613","'=(":"1f613",":-*":"1f618",":^*":"1f618",">:P":"1f61c","X-P":"1f61c",">:[":"1f61e",":-(":"1f61e",":-[":"1f61e",">:(":"1f620",":'(":"1f622",";-(":"1f622",">.<":"1f623","#-)":"1f635","%-)":"1f635","X-)":"1f635","\\0/":"1f646","\\O/":"1f646","0:3":"1f607","0:)":"1f607","O:)":"1f607","O=)":"1f607","O:3":"1f607","B-)":"1f60e","8-)":"1f60e","B-D":"1f60e","8-D":"1f60e","-_-":"1f611",">:\\":"1f615",">:/":"1f615",":-/":"1f615",":-.":"1f615",":-P":"1f61b",":Þ":"1f61b",":-b":"1f61b",":-O":"1f62e",O_O:"1f62e",">:O":"1f62e",":-X":"1f636",":-#":"1f636",":-)":"1f642","(y)":"1f44d","<3":"2764",":D":"1f603","=D":"1f603",";)":"1f609","*)":"1f609",";]":"1f609",";D":"1f609",":*":"1f618","=*":"1f618",":(":"1f61e",":[":"1f61e","=(":"1f61e",":@":"1f620",";(":"1f622","D:":"1f628",":$":"1f633","=$":"1f633","#)":"1f635","%)":"1f635","X)":"1f635","B)":"1f60e","8)":"1f60e",":/":"1f615",":\\":"1f615","=/":"1f615","=\\":"1f615",":L":"1f615","=L":"1f615",":P":"1f61b","=P":"1f61b",":b":"1f61b",":O":"1f62e",":X":"1f636",":#":"1f636","=X":"1f636","=#":"1f636",":)":"1f642","=]":"1f642","=)":"1f642",":]":"1f642"};let xl;function El(e){if(e.indexOf("-")>-1){const t=[],n=e.split("-");for(let e=0;e<n.length;e++){let r=parseInt(n[e],16);if(r>=65536&&r<=1114111){const e=Math.floor((r-65536)/1024)+55296,t=(r-65536)%1024+56320;r=String.fromCharCode(e)+String.fromCharCode(t)}else r=String.fromCharCode(r);t.push(r)}return t.join("")}return function(e){let t="string"==typeof e?parseInt(e,16):e;return t<65536?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}(e)}function Al(){var e;return Yc.emojis.toned||(Yc.emojis.toned=(e=Object.values(Yc.emojis.json.people).filter(e=>e.sn.includes("_tone")).map(e=>e.sn.replace(/_tone[1-5]/,"")),[...new Set(e)])),Yc.emojis.toned}function Cl(e){return e.replace(gl,(e,t,n,r)=>{if(void 0===r||""===r||!(wl.unescapeHTML(r)in Sl))return e;return r=wl.unescapeHTML(r),n+El(Sl[r].toUpperCase())})}function jl(e,t={unicode_only:!1,add_title_wrapper:!1}){const n=e.emoji,r=e.shortname;if(n){if(t.add_title_wrapper){if(qc.settings.get("use_system_emojis"))return r?Ga(bl(),r,n):n;{const t=qc.settings.get("emoji_image_path");return Ga(_l(),n,t,e.cp)}}return n}return t.unicode_only?r:Ga(vl(),r,r,Yc.emojis.by_sn[r].url)}function Tl(e){if(!Yc.emojis.initialized)throw new Error("getShortnameReferences called before emojis are initialized. To avoid this problem, first await the converse.emojis.initilaized_promise.");return[...e.matchAll(xl)].map(e=>{const t=Yc.emojis.by_sn[e[0]].cp;return{cp:t,begin:e.index,end:e.index+e[0].length,shortname:e[0],emoji:t?El(t):null}})}function Ol(e){const t=[];return function(e,t){const n=/\uFE0F/g,r=String.fromCharCode(8205);String(e).replace(ml,(e,i,s)=>{const o=function(e){const t=[];let n=0,r=0;for(;r<e.length;){const i=e.charCodeAt(r++);n?(t.push((65536+(n-55296<<10)+(i-56320)).toString(16)),n=0):55296<=i&&i<=56319?n=i:t.push(i.toString(16))}return t.join("-")}(e.indexOf(r)<0?e.replace(n,""):e);o&&t(o,e,s)})}(e,(e,n,r)=>{var i;t.push({begin:r,cp:e,emoji:n,end:r+n.length,shortname:(null===(i=wl.getEmojisByAtrribute("cp")[e])||void 0===i?void 0:i.sn)||""})}),t}Yc.plugins.add("converse-emoji",{initialize(){const{___:e}=Lc;qc.settings.extend({emoji_image_path:"https://twemoji.maxcdn.com/v/12.1.6/",emoji_categories:{smileys:":grinning:",people:":thumbsup:",activity:":soccer:",travel:":motorcycle:",objects:":bomb:",nature:":rainbow:",food:":hotdog:",symbols:":musical_note:",flags:":flag_ac:",custom:null},emoji_category_labels:{smileys:e("Smileys and emotions"),people:e("People"),activity:e("Activities"),travel:e("Travel"),objects:e("Objects"),nature:e("Animals and nature"),food:e("Food and drink"),symbols:e("Symbols"),flags:e("Flags"),custom:e("Stickers")}}),Lc.EmojiPicker=Rs.extend({defaults:{current_category:"smileys",current_skintone:"",scroll_position:0}});const t={};Object.assign(wl,{shortnamesToEmojis:(e,t={unicode_only:!1,add_title_wrapper:!1})=>function(e,t){let n=[e];return[...Tl(e),...Ol(e)].sort((e,t)=>t.begin-e.begin).forEach(e=>{const r=n.shift(),i=jl(e,t);n="string"==typeof i?[r.slice(0,e.begin)+i+r.slice(e.end),...n]:[r.slice(0,e.begin),i,r.slice(e.end),...n]}),n}(e=Cl(e),t),shortnamesToUnicode:e=>wl.shortnamesToEmojis(e,{unicode_only:!0})[0],isOnlyEmojis(e){const t=e.trim().split(/\s+/);return!(0===t.length||t.length>3)&&t.filter(e=>{const t=Ol(wl.shortnamesToUnicode(e));return 1===t.length&&(e===t[0].shortname||e===t[0].emoji)}).length===t.length},getEmojisByAtrribute(e){if(t[e])return t[e];if("category"===e)return Yc.emojis.json;const n=Yc.emojis.list.map(t=>t[e]).filter((e,t,n)=>n.indexOf(e)==t);return t[e]={},n.forEach(n=>t[e][n]=Yc.emojis.list.find(t=>t[e]===n)),t[e]}}),Object.assign(qc,{emojis:{async initialize(){if(!Yc.emojis.initialized){Yc.emojis.initialized=!0;const{default:e}=await n.e(137).then(n.t.bind(null,458,3));Yc.emojis.json=e,Yc.emojis.by_sn=Object.keys(e).reduce((t,n)=>Object.assign(t,e[n]),{}),Yc.emojis.list=Object.values(Yc.emojis.by_sn),Yc.emojis.list.sort((e,t)=>e.sn<t.sn?-1:e.sn>t.sn?1:0),Yc.emojis.shortnames=Yc.emojis.list.map(e=>e.sn),xl=new RegExp((()=>Yc.emojis.shortnames.map(e=>e.replace(/[+]/g,"\\$&")).join("|"))(),"gi"),Yc.emojis.toned=Al(),Yc.emojis.initialized_promise.resolve()}return Yc.emojis.initialized_promise}}})}});var kl=function(e,t,n){for(var r=-1,i=e.length,s=t.length,o={};++r<i;){var a=r<s?t[r]:void 0;n(o,e[r],a)}return o};var Nl=function(e,t){return kl(e||[],t||[],we)},Il=Math.min;var Ml=function(e,t,n){for(var r=n?wo:yo,i=e[0].length,s=e.length,o=s,a=Array(s),c=1/0,l=[];o--;){var u=e[o];o&&t&&(u=Dr(u,Le(t))),c=Il(u.length,c),a[o]=!n&&(t||i>=120&&u.length>=120)?new Ui(o&&u):void 0}u=e[0];var d=-1,h=a[0];e:for(;++d<i&&l.length<c;){var f=u[d],p=t?t(f):f;if(f=n||0!==f?f:0,!(h?Wi(h,p):r(l,p,n))){for(o=s;--o;){var g=a[o];if(!(g?Wi(g,p):r(e[o],p,n)))continue e}h&&h.push(p),l.push(f)}}return l};var Rl=function(e){return xo(e)?e:[]},Dl=wr((function(e){var t=Dr(e,Rl);return t.length&&t[0]===e[0]?Ml(t):[]})); + */const Pl=rl.env.utils;rl.emojis={initialized:!1,initialized_promise:Pl.getResolveablePromise()};const Ll={"*\\0/*":"1f646","*\\O/*":"1f646","-___-":"1f611",":'-)":"1f602","':-)":"1f605","':-D":"1f605",">:-)":"1f606","':-(":"1f613",">:-(":"1f620",":'-(":"1f622","O:-)":"1f607","0:-3":"1f607","0:-)":"1f607","0;^)":"1f607","O;-)":"1f607","0;-)":"1f607","O:-3":"1f607","-__-":"1f611",":-Þ":"1f61b","</3":"1f494",":')":"1f602",":-D":"1f603","':)":"1f605","'=)":"1f605","':D":"1f605","'=D":"1f605",">:)":"1f606",">;)":"1f606",">=)":"1f606",";-)":"1f609","*-)":"1f609",";-]":"1f609",";^)":"1f609","':(":"1f613","'=(":"1f613",":-*":"1f618",":^*":"1f618",">:P":"1f61c","X-P":"1f61c",">:[":"1f61e",":-(":"1f61e",":-[":"1f61e",">:(":"1f620",":'(":"1f622",";-(":"1f622",">.<":"1f623","#-)":"1f635","%-)":"1f635","X-)":"1f635","\\0/":"1f646","\\O/":"1f646","0:3":"1f607","0:)":"1f607","O:)":"1f607","O=)":"1f607","O:3":"1f607","B-)":"1f60e","8-)":"1f60e","B-D":"1f60e","8-D":"1f60e","-_-":"1f611",">:\\":"1f615",">:/":"1f615",":-/":"1f615",":-.":"1f615",":-P":"1f61b",":Þ":"1f61b",":-b":"1f61b",":-O":"1f62e",O_O:"1f62e",">:O":"1f62e",":-X":"1f636",":-#":"1f636",":-)":"1f642","(y)":"1f44d","<3":"2764",":D":"1f603","=D":"1f603",";)":"1f609","*)":"1f609",";]":"1f609",";D":"1f609",":*":"1f618","=*":"1f618",":(":"1f61e",":[":"1f61e","=(":"1f61e",":@":"1f620",";(":"1f622","D:":"1f628",":$":"1f633","=$":"1f633","#)":"1f635","%)":"1f635","X)":"1f635","B)":"1f60e","8)":"1f60e",":/":"1f615",":\\":"1f615","=/":"1f615","=\\":"1f615",":L":"1f615","=L":"1f615",":P":"1f61b","=P":"1f61b",":b":"1f61b",":O":"1f62e",":X":"1f636",":#":"1f636","=X":"1f636","=#":"1f636",":)":"1f642","=]":"1f642","=)":"1f642",":]":"1f642"};function zl(e){if(e.indexOf("-")>-1){const t=[],n=e.split("-");for(let e=0;e<n.length;e++){let r=parseInt(n[e],16);if(r>=65536&&r<=1114111){const e=Math.floor((r-65536)/1024)+55296,t=(r-65536)%1024+56320;r=String.fromCharCode(e)+String.fromCharCode(t)}else r=String.fromCharCode(r);t.push(r)}return t.join("")}return function(e){let t="string"==typeof e?parseInt(e,16):e;return t<65536?String.fromCharCode(t):(t-=65536,String.fromCharCode(55296+(t>>10),56320+(1023&t)))}(e)}function Fl(){var e;return rl.emojis.toned||(rl.emojis.toned=(e=Object.values(rl.emojis.json.people).filter(e=>e.sn.includes("_tone")).map(e=>e.sn.replace(/_tone[1-5]/,"")),[...new Set(e)])),rl.emojis.toned}function Bl(e){return e.replace(kl,(e,t,n,r)=>{if(void 0===r||""===r||!(Pl.unescapeHTML(r)in Ll))return e;return r=Pl.unescapeHTML(r),n+zl(Ll[r].toUpperCase())})}function ql(e,t={unicode_only:!1,add_title_wrapper:!1}){const n=e.emoji,r=e.shortname;if(n){if(t.unicode_only)return n;if(Vc.settings.get("use_system_emojis"))return t.add_title_wrapper&&r?Za(Rl(),r,n):n;{const t=Vc.settings.get("emoji_image_path");return Za(Ml(),r,n,t,e.cp)}}return t.unicode_only?r:Za(Il(),r,r,rl.emojis.by_sn[r].url)}function Hl(e){if(!rl.emojis.initialized)throw new Error("getShortnameReferences called before emojis are initialized. To avoid this problem, first await the converse.emojis.initilaized_promise.");return[...e.matchAll(rl.emojis.shortnames_regex)].filter(e=>e[0].length>0).map(e=>{const t=rl.emojis.by_sn[e[0]].cp;return{cp:t,begin:e.index,end:e.index+e[0].length,shortname:e[0],emoji:t?zl(t):null}})}function Ul(e){const t=[];return function(e,t){const n=/\uFE0F/g,r=String.fromCharCode(8205);String(e).replace(Nl,(e,i,o)=>{const s=function(e){const t=[];let n=0,r=0;for(;r<e.length;){const i=e.charCodeAt(r++);n?(t.push((65536+(n-55296<<10)+(i-56320)).toString(16)),n=0):55296<=i&&i<=56319?n=i:t.push(i.toString(16))}return t.join("-")}(e.indexOf(r)<0?e.replace(n,""):e);s&&t(s,e,o)})}(e,(e,n,r)=>{var i;t.push({begin:r,cp:e,emoji:n,end:r+n.length,shortname:(null===(i=Pl.getEmojisByAtrribute("cp")[e])||void 0===i?void 0:i.sn)||""})}),t}rl.plugins.add("converse-emoji",{initialize(){const{___:e}=Uc;Vc.settings.extend({emoji_image_path:"https://twemoji.maxcdn.com/v/12.1.6/",emoji_categories:{smileys:":grinning:",people:":thumbsup:",activity:":soccer:",travel:":motorcycle:",objects:":bomb:",nature:":rainbow:",food:":hotdog:",symbols:":musical_note:",flags:":flag_ac:",custom:null},emoji_category_labels:{smileys:e("Smileys and emotions"),people:e("People"),activity:e("Activities"),travel:e("Travel"),objects:e("Objects"),nature:e("Animals and nature"),food:e("Food and drink"),symbols:e("Symbols"),flags:e("Flags"),custom:e("Stickers")}}),Uc.EmojiPicker=qo.extend({defaults:{current_category:"smileys",current_skintone:"",scroll_position:0}});const t={};Object.assign(Pl,{shortnamesToEmojis:(e,t={unicode_only:!1,add_title_wrapper:!1})=>function(e,t){let n=[e];return[...Hl(e),...Ul(e)].sort((e,t)=>t.begin-e.begin).forEach(e=>{const r=n.shift(),i=ql(e,t);n="string"==typeof i?[r.slice(0,e.begin)+i+r.slice(e.end),...n]:[r.slice(0,e.begin),i,r.slice(e.end),...n]}),n}(e=Bl(e),t),shortnamesToUnicode:e=>Pl.shortnamesToEmojis(e,{unicode_only:!0})[0],isOnlyEmojis(e){const t=e.trim().split(/\s+/);return!(0===t.length||t.length>3)&&t.filter(e=>{const t=Ul(Pl.shortnamesToUnicode(e));return 1===t.length&&(e===t[0].shortname||e===t[0].emoji)}).length===t.length},getEmojisByAtrribute(e){if(t[e])return t[e];if("category"===e)return rl.emojis.json;const n=rl.emojis.list.map(t=>t[e]).filter((e,t,n)=>n.indexOf(e)==t);return t[e]={},n.forEach(n=>t[e][n]=rl.emojis.list.find(t=>t[e]===n)),t[e]}}),Object.assign(Vc,{emojis:{async initialize(){if(!rl.emojis.initialized){rl.emojis.initialized=!0;const{default:e}=await n.e(137).then(n.t.bind(null,547,3));rl.emojis.json=e,rl.emojis.by_sn=Object.keys(e).reduce((t,n)=>Object.assign(t,e[n]),{}),rl.emojis.list=Object.values(rl.emojis.by_sn),rl.emojis.list.sort((e,t)=>e.sn<t.sn?-1:e.sn>t.sn?1:0),rl.emojis.shortnames=rl.emojis.list.map(e=>e.sn);const t=()=>rl.emojis.shortnames.map(e=>e.replace(/[+]/g,"\\$&")).join("|");rl.emojis.shortnames_regex=new RegExp(t(),"gi"),rl.emojis.toned=Fl(),rl.emojis.initialized_promise.resolve()}return rl.emojis.initialized_promise}}})}});var $l={initialize(){this.checkValidity()&&(this.get("file")&&this.on("change:put",this.uploadFile,this),this.setTimerForEphemeralMessage()||this.setOccupant(),Vc.trigger("chatRoomMessageInitialized",this))},mayBeModerated(){return["all","moderator"].includes(Vc.settings.get("allow_message_retraction"))&&this.collection.chatbox.canModerateMessages()},checkValidity(){const e=Uc.Message.prototype.checkValidity.call(this);return!e&&this.collection.chatbox.debouncedRejoin(),e},onOccupantRemoved(){var e;this.stopListening(this.occupant),delete this.occupant;const t=null==this||null===(e=this.collection)||void 0===e?void 0:e.chatbox;if(!t)return zn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));this.listenTo(t.occupants,"add",this.onOccupantAdded)},onOccupantAdded(e){if(e.get("nick")===kc.e.getResourceFromJid(this.get("from"))){var t;this.occupant=e,this.trigger("occupantAdded"),this.listenTo(this.occupant,"destroy",this.onOccupantRemoved);const n=null==this||null===(t=this.collection)||void 0===t?void 0:t.chatbox;if(!n)return zn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));this.stopListening(n.occupants,"add",this.onOccupantAdded)}},setOccupant(){var e;if("groupchat"!==this.get("type"))return;const t=null==this||null===(e=this.collection)||void 0===e?void 0:e.chatbox;if(!t)return zn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));const n=kc.e.getResourceFromJid(this.get("from"));if(this.occupant=t.occupants.findWhere({nick:n}),!this.occupant&&Vc.settings.get("muc_send_probes")){this.occupant=t.occupants.create({nick:n,type:"unavailable"});const e="".concat(t.get("jid"),"/").concat(n);Vc.user.presence.send("probe",e)}this.occupant?this.listenTo(this.occupant,"destroy",this.onOccupantRemoved):this.listenTo(t.occupants,"add",this.onOccupantAdded)}}; /** * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description This is the MUC utilities module. - */ -const{Strophe:Pl,sizzle:Ll}=Yc.env;var zl={computeAffiliationsDelta(e,t,n,r){const i=n.map(e=>e.jid),s=r.map(e=>e.jid);let o=Eo(i,s).map(e=>n[Po(i,e)]);return e||(o=o.concat(n.filter(e=>{const t=Po(s,e.jid);return t>=0&&e.affiliation!==r[t].affiliation}))),t&&(o=o.concat(Eo(s,i).map(e=>({jid:e,affiliation:"none"})))),o},parseMemberListIQ:e=>Ll('query[xmlns="'.concat(Pl.NS.MUC_ADMIN,'"] item'),e).map(e=>{const t={affiliation:e.getAttribute("affiliation")},n=e.getAttribute("jid");qs.isValidJID(n)?t.jid=n:t.nick=n;const r=e.getAttribute("nick");return r&&(t.nick=r),e.getAttribute("role")&&(t.role=r),t})}; + */const{Strophe:Wl,sizzle:Gl}=rl.env;var Vl={computeAffiliationsDelta(e,t,n,r){const i=n.map(e=>e.jid),o=r.map(e=>e.jid);let s=ks(i,o).map(e=>n[Hs(i,e)]);return e||(s=s.concat(n.filter(e=>{const t=Hs(o,e.jid);return t>=0&&e.affiliation!==r[t].affiliation}))),t&&(s=s.concat(ks(o,i).map(e=>({jid:e,affiliation:"none"})))),s},parseMemberListIQ:e=>Gl('query[xmlns="'.concat(Wl.NS.MUC_ADMIN,'"] item'),e).map(e=>{const t={affiliation:e.getAttribute("affiliation")},n=e.getAttribute("jid");Jo.isValidJID(n)?t.jid=n:t.nick=n;const r=e.getAttribute("nick");return r&&(t.nick=r),e.getAttribute("role")&&(t.role=r),t})}; /** * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - * @description This is the form utilities module. - */qs.webForm2xForm=function(e){const t=e.getAttribute("name");if(!t)return null;let n;return n="checkbox"===e.getAttribute("type")?e.checked?1:0:"TEXTAREA"==e.tagName?e.value.split("\n").filter(e=>e.trim()):"SELECT"==e.tagName?qs.getSelectValues(e):e.value,qs.toStanza('\n <field var="'.concat(t,'">\n ').concat(n.constructor===Array?n.map(e=>"<value>".concat(e,"</value>")):"<value>".concat(n,"</value>"),"\n </field>"))};var Fl=qs;function Bl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ql(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Bl(Object(n),!0).forEach((function(t){Hl(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Bl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Hl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + * @description Pure functions to help functionally parse messages. + * @todo Other parsing helpers can be made more abstract and placed here. + */const Jl={},Xl=(e,t)=>e.replace(RegExp("\\"+t,"ig"),"\\"+t);Jl.escapeCharacters=e=>t=>e.split("").reduce(Xl,t),Jl.escapeRegexString=Jl.escapeCharacters("[\\^$.?*+(){}"),Jl.findFirstMatchInArray=e=>t=>{for(let n=0;n<e.length;n++)if(0===t.localeCompare(e[n],void 0,{sensitivity:"base"}))return e[n];return null};const Ql=([e,t],n,r)=>{let i=e,{begin:o,end:s}=n;const{value:a}=n;return o-=r,s=s-r-1,i="".concat(i.slice(0,o)).concat(a).concat(i.slice(s+1)),[i,[...t,{...n,begin:o,end:s}]]};Jl.reduceTextFromReferences=(e,t)=>t.reduce(Ql,[e,[]]);var Yl=Jl; /** * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - * @description Pure functions to help funcitonally parse messages. - * @todo Other parsing helpers can be made more abstract and placed here. - */const Ul={mention_regex:/(?:\s|^)([@][\w_-]+(?:\.\w+)*)/gi,matchRegexInText:e=>t=>e.matchAll(t)},$l=(e,t)=>e.replace(RegExp("\\"+t,"ig"),"\\"+t);Ul.escapeCharacters=e=>t=>e.split("").reduce($l,t),Ul.escapeRegexString=Ul.escapeCharacters("[\\^$.?*+(){}"),Ul.findFirstMatchInArray=e=>t=>{for(let n=0;n<e.length;n++)if(0===t.localeCompare(e[n],void 0,{sensitivity:"base"}))return e[n];return null};const Wl=([e,t],n,r)=>{let i=e,{begin:s,end:o}=n;const{value:a}=n;return s-=r,o=o-r-1,i="".concat(i.slice(0,s)).concat(a).concat(i.slice(o+1)),[i,[...t,ql(ql({},n),{},{begin:s,end:o})]]};Ul.reduceTextFromReferences=(e,t)=>t.reduce(Wl,[e,[]]);var Vl=Ul;function Gl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Jl(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + * @description This is the form utilities module. + */Jo.webForm2xForm=function(e){const t=e.getAttribute("name");if(!t)return null;let n;return n="checkbox"===e.getAttribute("type")?e.checked?1:0:"TEXTAREA"==e.tagName?e.value.split("\n").filter(e=>e.trim()):"SELECT"==e.tagName?Jo.getSelectValues(e):e.value,Jo.toStanza('\n <field var="'.concat(t,'">\n ').concat(n.constructor===Array?n.map(e=>"<value>".concat(e,"</value>")):"<value>".concat(n,"</value>"),"\n </field>"))};var Kl=Jo;var Zl=function(e,t,n){for(var r=-1,i=e.length,o=t.length,s={};++r<i;){var a=r<o?t[r]:void 0;n(s,e[r],a)}return s};var eu=function(e,t){return Zl(e||[],t||[],we)},tu=Math.min;var nu=function(e,t,n){for(var r=n?js:Cs,i=e[0].length,o=e.length,s=o,a=Array(o),c=1/0,l=[];s--;){var u=e[s];s&&t&&(u=qr(u,Le(t))),c=tu(u.length,c),a[s]=!n&&(t||i>=120&&u.length>=120)?new Xi(s&&u):void 0}u=e[0];var d=-1,h=a[0];e:for(;++d<i&&l.length<c;){var f=u[d],p=t?t(f):f;if(f=n||0!==f?f:0,!(h?Yi(h,p):r(l,p,n))){for(s=o;--s;){var g=a[s];if(!(g?Yi(g,p):r(e[s],p,n)))continue e}h&&h.push(p),l.push(f)}}return l};var ru=function(e){return Os(e)?e:[]},iu=jr((function(e){var t=qr(e,ru);return t.length&&t[0]===e[0]?nu(t):[]}));const ou=["301","303","333","307","321","322"],su=qo.extend({defaults:()=>({connection_status:rl.ROOMSTATUS.DISCONNECTED})});var au={defaults(){return{num_unread_general:0,bookmarked:!1,chat_state:void 0,hidden:Uc.isUniView()&&!Vc.settings.get("singleton"),hidden_occupants:!!Vc.settings.get("hide_muc_participants"),message_type:"groupchat",name:"",num_unread:0,roomconfig:{},time_opened:this.get("time_opened")||(new Date).getTime(),time_sent:new Date(0).toISOString(),type:Uc.CHATROOMS_TYPE}},async initialize(){this.initialized=Kl.getResolveablePromise(),this.debouncedRejoin=Rc(this.rejoin,250),this.set("box_id","box-".concat(this.get("jid"))),this.initNotifications(),this.initMessages(),this.initOccupants(),this.initDiscoModels(),this.registerHandlers(),this.on("change:chat_state",this.sendChatState,this),await this.restoreSession(),this.session.on("change:connection_status",this.onConnectionStatusChanged,this),this.listenTo(this.occupants,"add",this.onOccupantAdded),this.listenTo(this.occupants,"remove",this.onOccupantRemoved),this.listenTo(this.occupants,"change:show",this.onOccupantShowChanged),this.listenTo(this.occupants,"change:affiliation",this.createAffiliationChangeMessage),this.listenTo(this.occupants,"change:role",this.createRoleChangeMessage),await this.restoreFromCache()||this.join(),await Vc.trigger("chatRoomInitialized",this,{Synchronous:!0}),this.initialized.resolve()},async restoreFromCache(){return this.session.get("connection_status")===rl.ROOMSTATUS.ENTERED&&await this.isJoined()?(await new Promise(e=>this.features.fetch({success:e,error:e})),await this.fetchOccupants().catch(e=>zn.error(e)),await this.fetchMessages().catch(e=>zn.error(e)),!0):(await this.clearCache(),!1)},async join(e,t){if(this.session.get("connection_status")===rl.ROOMSTATUS.ENTERED)return this;if(await this.refreshDiscoInfo(),!(e=await this.getAndPersistNickname(e)))return Kl.safeSave(this.session,{connection_status:rl.ROOMSTATUS.NICKNAME_REQUIRED}),Vc.settings.get("muc_show_logs_before_join")&&await this.fetchMessages(),this;const n=Object(kc.d)({from:Uc.connection.jid,to:this.getRoomJIDAndNick()}).c("x",{xmlns:kc.e.NS.MUC}).c("history",{maxstanzas:this.features.get("mam_enabled")?0:Vc.settings.get("muc_history_max_stanzas")}).up();return(t=t||this.get("password"))&&n.cnode(kc.e.xmlElement("password",[],t)),this.session.save("connection_status",rl.ROOMSTATUS.CONNECTING),Vc.send(n),this},async clearCache(){this.session.save("connection_status",rl.ROOMSTATUS.DISCONNECTED),this.occupants.length?this.occupants.filter(e=>!e.isMember()).forEach(e=>e.destroy()):this.occupants.clearStore(),Vc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages()},onOccupantAdded(e){Uc.isInfoVisible(rl.MUC_TRAFFIC_STATES.ENTERED)&&this.session.get("connection_status")===rl.ROOMSTATUS.ENTERED&&"online"===e.get("show")&&this.updateNotifications(e.get("nick"),rl.MUC_TRAFFIC_STATES.ENTERED)},onOccupantRemoved(e){Uc.isInfoVisible(rl.MUC_TRAFFIC_STATES.EXITED)&&this.session.get("connection_status")===rl.ROOMSTATUS.ENTERED&&"online"===e.get("show")&&this.updateNotifications(e.get("nick"),rl.MUC_TRAFFIC_STATES.EXITED)},onOccupantShowChanged(e){e.get("states").includes("303")||("offline"===e.get("show")&&Uc.isInfoVisible(rl.MUC_TRAFFIC_STATES.EXITED)?this.updateNotifications(e.get("nick"),rl.MUC_TRAFFIC_STATES.EXITED):"online"===e.get("show")&&Uc.isInfoVisible(rl.MUC_TRAFFIC_STATES.ENTERED)&&this.updateNotifications(e.get("nick"),rl.MUC_TRAFFIC_STATES.ENTERED))},rejoin(){return this.clearCache(),this.join()},async onConnectionStatusChanged(){this.session.get("connection_status")===rl.ROOMSTATUS.ENTERED&&(await this.occupants.fetchMembers(),await this.fetchMessages(),Vc.trigger("enteredNewRoom",this),Vc.settings.get("auto_register_muc_nickname")&&await Vc.disco.supports(kc.e.NS.MUC_REGISTER,this.get("jid"))&&this.registerNickname())},async onReconnection(){this.registerHandlers(),await this.rejoin(),this.announceReconnection()},getMessagesCollection:()=>new Uc.ChatRoomMessages,restoreSession(){const e="muc.session-".concat(Uc.bare_jid,"-").concat(this.get("jid"));return this.session=new su({id:e}),this.session.browserStorage=Uc.createStore(e,"session"),new Promise(e=>this.session.fetch({success:e,error:e}))},initDiscoModels(){let e="converse.muc-features-".concat(Uc.bare_jid,"-").concat(this.get("jid"));this.features=new qo(Object.assign({id:e},eu(rl.ROOM_FEATURES,rl.ROOM_FEATURES.map(()=>!1)))),this.features.browserStorage=Uc.createStore(e,"session"),e="converse.muc-config-{_converse.bare_jid}-".concat(this.get("jid")),this.config=new qo,this.config.browserStorage=Uc.createStore(e,"session")},initOccupants(){this.occupants=new Uc.ChatRoomOccupants;const e="converse.occupants-".concat(Uc.bare_jid).concat(this.get("jid"));this.occupants.browserStorage=Uc.createStore(e,"session"),this.occupants.chatroom=this},fetchOccupants(){return this.occupants.fetched=new Promise(e=>{this.occupants.fetch({add:!0,silent:!0,success:e,error:e})}),this.occupants.fetched},handleAffiliationChangedMessage(e){const t=mr()('x[xmlns="'.concat(kc.e.NS.MUC_USER,'"] item'),e).pop();if(t){const n=e.getAttribute("from"),r=e.getAttribute("type"),i=t.getAttribute("affiliation"),o=t.getAttribute("jid"),s={from:n,type:r,affiliation:i,nick:kc.e.getNodeFromJid(o),states:[],show:"unavailable"==r?"offline":"online",role:t.getAttribute("role"),jid:kc.e.getBareJidFromJid(o),resource:kc.e.getResourceFromJid(o)},a=this.occupants.findOccupant({jid:s.jid});a?a.save(s):this.occupants.create(s)}},async handleErrorMessageStanza(e){const{__:t}=Uc,n=await ps.parseMUCMessage(e,this,Uc);if(!await this.shouldShowErrorMessage(n))return;const r=this.getMessageReferencedByError(n);if(r){const e={error:n.error,error_condition:n.error_condition,error_text:n.error_text,error_type:n.error_type,editable:!1};n.msgid===r.get("retraction_id")?(e.retraction_id=void 0,n.error||("forbidden"===n.error_condition?e.error=t("You're not allowed to retract your message."):"not-acceptable"===n.error_condition?e.error=t("Your retraction was not delivered because you're not present in the groupchat."):e.error=t("Sorry, an error occurred while trying to retract your message."))):n.error||("forbidden"===n.error_condition?e.error=t("Your message was not delivered because you weren't allowed to send it."):"not-acceptable"===n.error_condition?e.error=t("Your message was not delivered because you're not present in the groupchat."):e.error=t("Sorry, an error occurred while trying to send your message.")),r.save(e)}else this.createMessage(n)},async handleMessageStanza(e){if(ps.isArchived(e))return zn.warn('Received a MAM message with type "groupchat"');this.createInfoMessages(e),this.fetchFeaturesIfConfigurationChanged(e);const t=await ps.parseMUCMessage(e,this,Uc),n={stanza:e,attrs:t,chatbox:this};return Vc.trigger("message",n),t&&this.queueMessage(t)},registerHandlers(){const e=this.get("jid");this.removeHandlers(),this.presence_handler=Uc.connection.addHandler(e=>this.onPresence(e)||!0,null,"presence",null,null,e,{ignoreNamespaceFragment:!0,matchBareFromJid:!0}),this.message_handler=Uc.connection.addHandler(e=>!!this.handleMessageStanza(e)||!0,null,"message","groupchat",null,e,{matchBareFromJid:!0}),this.affiliation_message_handler=Uc.connection.addHandler(e=>this.handleAffiliationChangedMessage(e)||!0,kc.e.NS.MUC_USER,"message",null,null,e)},removeHandlers(){return this.message_handler&&(Uc.connection&&Uc.connection.deleteHandler(this.message_handler),delete this.message_handler),this.presence_handler&&(Uc.connection&&Uc.connection.deleteHandler(this.presence_handler),delete this.presence_handler),this.affiliation_message_handler&&(Uc.connection&&Uc.connection.deleteHandler(this.affiliation_message_handler),delete this.affiliation_message_handler),this},invitesAllowed(){return Vc.settings.get("allow_muc_invitations")&&(this.features.get("open")||"owner"===this.getOwnAffiliation())},getDisplayName(){const e=this.get("name");return e||("hidden"===Vc.settings.get("locked_muc_domain")?kc.e.getNodeFromJid(this.get("jid")):this.get("jid"))},sendTimedMessage(e){"function"==typeof e.tree&&(e=e.tree());let t=e.getAttribute("id");t||(t=this.getUniqueId("sendIQ"),e.setAttribute("id",t));const n=Kl.getResolveablePromise(),r=Uc.connection.addTimedHandler(Uc.STANZA_TIMEOUT,()=>(Uc.connection.deleteHandler(i),n.reject(new Uc.TimeoutError("Timeout Error: No response from server")),!1)),i=Uc.connection.addHandler(e=>{r&&Uc.connection.deleteTimedHandler(r),"groupchat"===e.getAttribute("type")?n.resolve(e):n.reject(e)},null,"message",["error","groupchat"],t);return Vc.send(e),n},async retractOwnMessage(e){const t=Uc.__,n=e.get("origin_id");if(!n)throw new Error("Can't retract message without a XEP-0359 Origin ID");const r=e.get("editable"),i=Object(kc.c)({id:Kl.getUniqueId(),to:this.get("jid"),type:"groupchat"}).c("store",{xmlns:kc.e.NS.HINTS}).up().c("apply-to",{id:n,xmlns:kc.e.NS.FASTEN}).c("retract",{xmlns:kc.e.NS.RETRACT});e.set({retracted:(new Date).toISOString(),retracted_id:n,retraction_id:i.nodeTree.getAttribute("id"),editable:!1});try{await this.sendTimedMessage(i)}catch(n){throw e.save({editable:r,error_type:"timeout",error:t("A timeout happened while while trying to retract your message."),retracted:void 0,retracted_id:void 0}),n}},async retractOtherMessage(e,t){const n=e.get("editable");e.save({moderated:"retracted",moderated_by:Uc.bare_jid,moderated_id:e.get("msgid"),moderation_reason:t,editable:!1});const r=await this.sendRetractionIQ(e,t);return(null===r||Kl.isErrorStanza(r))&&e.save({editable:n,moderated:void 0,moderated_by:void 0,moderated_id:void 0,moderation_reason:void 0}),r},sendRetractionIQ(e,t){const n=Object(kc.b)({to:this.get("jid"),type:"set"}).c("apply-to",{id:e.get("stanza_id ".concat(this.get("jid"))),xmlns:kc.e.NS.FASTEN}).c("moderate",{xmlns:kc.e.NS.MODERATE}).c("retract",{xmlns:kc.e.NS.RETRACT}).up().c("reason").t(t||"");return Vc.sendIQ(n,null,!1)},sendDestroyIQ(e,t){const n=Object(kc.a)("destroy");t&&n.attrs({jid:t});const r=Object(kc.b)({to:this.get("jid"),type:"set"}).c("query",{xmlns:kc.e.NS.MUC_OWNER}).cnode(n.node);return e&&e.length>0&&r.c("reason",e),Vc.sendIQ(r)},async leave(e){if(this.features.destroy(),this.occupants.clearStore(),Uc.disco_entities){const e=Uc.disco_entities.get(this.get("jid"));e&&await new Promise((t,n)=>e.destroy({success:t,error:n}))}Vc.connection.connected()&&Vc.user.presence.send("unavailable",this.getRoomJIDAndNick(),e),Kl.safeSave(this.session,{connection_status:rl.ROOMSTATUS.DISCONNECTED}),this.removeHandlers()},async close(){return await new Promise(e=>this.session.destroy({success:e,error:(t,n)=>{zn.error(n),e()}})),await new Promise(e=>this.features.destroy({success:e,error:(t,n)=>{zn.error(n),e()}})),Uc.ChatBox.prototype.close.call(this)},canModerateMessages(){const e=this.getOwnOccupant();return e&&e.isModerator()&&Vc.disco.supports(kc.e.NS.MODERATE,this.get("jid"))},getAllKnownNicknames(){return[...new Set([...this.occupants.map(e=>e.get("nick")),...this.messages.map(e=>e.get("nick"))])].filter(e=>e)},getAllKnownNicknamesRegex(){const e=this.getAllKnownNicknames().join("|"),t=Yl.escapeRegexString(e);return RegExp("(?:\\p{P}|\\p{Z}|^)@(".concat(t,")(?![\\w@-])"),"uig")},getOccupantByJID(e){return this.occupants.findOccupant({jid:e})},getOccupantByNickname(e){return this.occupants.findOccupant({nick:e})},parseTextForReferences(e){if(!e||!/(\p{P}|\p{Z}|^)([@][\w_-]+(?:\.\w+)*)/giu.test(e))return[e,[]];const t=Yl.findFirstMatchInArray(this.getAllKnownNicknames()),n=e=>{const t=this.get("jid"),n=this.getOccupant(e)||this.getOccupant(t),r=n&&n.get("jid")||"".concat(t,"/").concat(e);return encodeURI("xmpp:".concat(r))},r=this.getAllKnownNicknamesRegex(),i=[...e.matchAll(r)].filter(e=>!e[0].startsWith("/")).map(e=>{let r=e[0].indexOf("@");"@"===e[0][r+1]&&(r+=1);const i=e.index+r,o=i+e[0].length-r,s=t(e[1]);return{begin:i,end:o,value:s,type:"mention",uri:n(s)}}),[o,s]=Yl.reduceTextFromReferences(e,i);return[o,s]},getOutgoingMessageAttributes(e,t){const n=this.get("composing_spoiler"),[r,i]=this.parseTextForReferences(e),o=Kl.getUniqueId(),s=r?Kl.httpToGeoUri(Kl.shortnamesToUnicode(r),Uc):void 0;return{body:s,is_spoiler:n,origin_id:o,references:i,id:o,msgid:o,from:"".concat(this.get("jid"),"/").concat(this.get("nick")),fullname:this.get("nick"),is_only_emojis:!!r&&Kl.isOnlyEmojis(r),message:s,nick:this.get("nick"),sender:"me",spoiler_hint:n?t:void 0,type:"groupchat"}},getRoomJIDAndNick(){const e=this.get("nick");return kc.e.getBareJidFromJid(this.get("jid"))+(null!==e?"/".concat(e):"")},sendChatState(){if(!Vc.settings.get("send_chat_state_notifications")||!this.get("chat_state")||this.session.get("connection_status")!==rl.ROOMSTATUS.ENTERED||this.features.get("moderated")&&"visitor"===this.getOwnRole())return;const e=Vc.settings.get("send_chat_state_notifications");if(Array.isArray(e)&&!e.includes(this.get("chat_state")))return;const t=this.get("chat_state");t!==Uc.GONE&&Vc.send(Object(kc.c)({to:this.get("jid"),type:"groupchat"}).c(t,{xmlns:kc.e.NS.CHATSTATES}).up().c("no-store",{xmlns:kc.e.NS.HINTS}).up().c("no-permanent-store",{xmlns:kc.e.NS.HINTS}))},directInvite(e,t){this.features.get("membersonly")&&this.updateMemberLists([{jid:e,affiliation:"member",reason:t}]);const n={xmlns:"jabber:x:conference",jid:this.get("jid")};null!==t&&(n.reason=t),this.get("password")&&(n.password=this.get("password"));const r=Object(kc.c)({from:Uc.connection.jid,to:e,id:Kl.getUniqueId()}).c("x",n);Vc.send(r),Vc.trigger("roomInviteSent",{room:this,recipient:e,reason:t})},refreshDiscoInfo(){return Vc.disco.refresh(this.get("jid")).then(()=>this.getDiscoInfo()).catch(e=>zn.error(e))},getDiscoInfo(){return Vc.disco.getIdentity("conference","text",this.get("jid")).then(e=>this.save({name:null==e?void 0:e.get("name")})).then(()=>this.getDiscoInfoFields()).then(()=>this.getDiscoInfoFeatures()).catch(e=>zn.error(e))},async getDiscoInfoFields(){const e=(await Vc.disco.getFields(this.get("jid"))).reduce((e,t)=>{const n=t.get("var");return n&&n.startsWith("muc#roominfo_")&&(e[n.replace("muc#roominfo_","")]=t.get("value")),e},{});this.config.save(e)},async getDiscoInfoFeatures(){const e=await Vc.disco.getFeatures(this.get("jid")),t=Object.assign(eu(rl.ROOM_FEATURES,rl.ROOM_FEATURES.map(()=>!1)),{fetched:(new Date).toISOString()});e.each(e=>{const n=e.get("var");n.startsWith("muc_")?t[n.replace("muc_","")]=!0:n===kc.e.NS.MAM&&(t.mam_enabled=!0)}),this.features.save(t)},setAffiliation(e,t){return t=t.filter(t=>void 0===t.affiliation||t.affiliation===e),Promise.all(t.map(t=>this.sendAffiliationIQ(e,t)))},addFieldValue(e){const t=e.getAttribute("type");if("fixed"===t)return e;const n=e.getAttribute("var").replace("muc#roomconfig_",""),r=this.get("roomconfig");if(n in r){let i;switch(t){case"boolean":i=[r[n]?1:0];break;case"list-multi":i=r[n];break;default:i=[r[n]]}e.innerHTML=i.map(e=>Object(kc.a)("value").t(e)).join("")}return e},async autoConfigureChatRoom(){const e=await this.fetchRoomConfiguration(),t=mr()("field",e).map(e=>this.addFieldValue(e));if(t.length)return this.sendConfiguration(t)},fetchRoomConfiguration(){return Vc.sendIQ(Object(kc.b)({to:this.get("jid"),type:"get"}).c("query",{xmlns:kc.e.NS.MUC_OWNER}))},sendConfiguration(e=[]){const t=Object(kc.b)({to:this.get("jid"),type:"set"}).c("query",{xmlns:kc.e.NS.MUC_OWNER}).c("x",{xmlns:kc.e.NS.XFORM,type:"submit"});return e.forEach(e=>t.cnode(e).up()),Vc.sendIQ(t)},getOwnRole(){var e,t;return null===(e=this.getOwnOccupant())||void 0===e||null===(t=e.attributes)||void 0===t?void 0:t.role},getOwnAffiliation(){var e,t;return null===(e=this.getOwnOccupant())||void 0===e||null===(t=e.attributes)||void 0===t?void 0:t.affiliation},getOwnOccupant(){return this.occupants.findWhere({jid:Uc.bare_jid})},sendAffiliationIQ(e,t){const n=Object(kc.b)({to:this.get("jid"),type:"set"}).c("query",{xmlns:kc.e.NS.MUC_ADMIN}).c("item",{affiliation:t.affiliation||e,nick:t.nick,jid:t.jid});return void 0!==t.reason&&n.c("reason",t.reason),Vc.sendIQ(n)},setAffiliations(e){const t=[...new Set(e.map(e=>e.affiliation))];return Promise.all(t.map(t=>this.setAffiliation(t,e)))},setRole(e,t,n,r,i){const o=Object(kc.a)("item",{nick:e.get("nick"),role:t}),s=Object(kc.b)({to:this.get("jid"),type:"set"}).c("query",{xmlns:kc.e.NS.MUC_ADMIN}).cnode(o.node);return null!==n&&s.c("reason",n),Vc.sendIQ(s).then(r).catch(i)},getOccupant(e){return Kl.isValidJID(e)?this.getOccupantByJID(e):this.getOccupantByNickname(e)},getOccupantsWithRole(e){return this.getOccupantsSortedBy("nick").filter(t=>t.get("role")===e).map(e=>({jid:e.get("jid"),nick:e.get("nick"),role:e.get("role")}))},getOccupantsWithAffiliation(e){return this.getOccupantsSortedBy("nick").filter(t=>t.get("affiliation")===e).map(e=>({jid:e.get("jid"),nick:e.get("nick"),affiliation:e.get("affiliation")}))},getOccupantsSortedBy(e){return Array.from(this.occupants.models).sort((t,n)=>t.get(e)<n.get(e)?-1:t.get(e)>n.get(e)?1:0)},async getAffiliationList(e){const t=Object(kc.b)({to:this.get("jid"),type:"get"}).c("query",{xmlns:kc.e.NS.MUC_ADMIN}).c("item",{affiliation:e}),n=await Vc.sendIQ(t,null,!1);if(null===n){const t="Error: timeout while fetching ".concat(e," list for MUC ").concat(this.get("jid")),r=new Error(t);return zn.warn(t),zn.warn(n),r}if(Kl.isErrorStanza(n)){const t="Error: not allowed to fetch ".concat(e," list for MUC ").concat(this.get("jid")),r=new Error(t);return zn.warn(t),zn.warn(n),r}return Vl.parseMemberListIQ(n).filter(e=>e).sort((e,t)=>e.nick<t.nick?-1:e.nick>t.nick?1:0)},async updateMemberLists(e){const t=(await Promise.all(["member","admin","owner"].map(e=>this.getAffiliationList(e)))).reduce((e,t)=>Kl.isErrorObject(t)?e:[...t,...e],[]);await this.setAffiliations(Vl.computeAffiliationsDelta(!0,!1,e,t)),await this.occupants.fetchMembers()},async getAndPersistNickname(e){return(e=e||this.get("nick")||await this.getReservedNick()||Uc.getDefaultMUCNickname())&&this.save({nick:e},{silent:!0}),e},async getReservedNick(){const e=Object(kc.b)({to:this.get("jid"),from:Uc.connection.jid,type:"get"}).c("query",{xmlns:kc.e.NS.DISCO_INFO,node:"x-roomuser-item"}),t=await Vc.sendIQ(e,null,!1);if(Kl.isErrorObject(t))throw t;const n=t.querySelector('query[node="x-roomuser-item"] identity');return n?n.getAttribute("name"):null},async registerNickname(){const e=Uc.__,t=this.get("nick"),n=this.get("jid");let r,i;try{r=await Vc.sendIQ(Object(kc.b)({to:n,from:Uc.connection.jid,type:"get"}).c("query",{xmlns:kc.e.NS.MUC_REGISTER}))}catch(t){return mr()('not-allowed[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),t).length?i=e("You're not allowed to register yourself in this groupchat."):mr()('registration-required[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),t).length&&(i=e("You're not allowed to register in this groupchat because it's members-only.")),zn.error(t),i}const o=mr()("field required",r).map(e=>e.parentElement);if(o.length>1&&"muc#register_roomnick"!==o[0].getAttribute("var"))return zn.error("Can't register the user register in the groupchat ".concat(n," due to the required fields"));try{await Vc.sendIQ(Object(kc.b)({to:n,from:Uc.connection.jid,type:"set"}).c("query",{xmlns:kc.e.NS.MUC_REGISTER}).c("x",{xmlns:kc.e.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE"}).c("value").t("http://jabber.org/protocol/muc#register").up().up().c("field",{var:"muc#register_roomnick"}).c("value").t(t))}catch(t){return mr()('service-unavailable[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),t).length?i=e("Can't register your nickname in this groupchat, it doesn't support registration."):mr()('bad-request[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),t).length&&(i=e("Can't register your nickname in this groupchat, invalid data form supplied.")),zn.error(i),zn.error(t),i}},updateOccupantsOnPresence(e){var t,n;const r=ps.parseMUCPresence(e);if("error"===r.type||!r.jid&&!r.nick)return!0;const i=this.occupants.findOccupant(r);if("unavailable"===r.type&&i&&!r.states.includes(rl.MUC_NICK_CHANGED_CODE)&&!["admin","owner","member"].includes(r.affiliation))return i.set(r),void i.destroy();const o=r.jid||"",s=Object.assign(r,{jid:kc.e.getBareJidFromJid(o)||(null==i||null===(t=i.attributes)||void 0===t?void 0:t.jid),resource:kc.e.getResourceFromJid(o)||(null==i||null===(n=i.attributes)||void 0===n?void 0:n.resource)});i?i.save(s):this.occupants.create(s)},fetchFeaturesIfConfigurationChanged(e){const t=["104","170","171","172","173","174"];mr()("status",e).filter(e=>t.includes(e.getAttribute("status"))).length&&this.refreshDiscoInfo()},isSameUser(e,t){const n=kc.e.getBareJidFromJid(e),r=kc.e.getBareJidFromJid(t),i=kc.e.getResourceFromJid(e),o=kc.e.getResourceFromJid(t);if(Kl.isSameBareJID(e,t))return n!==this.get("jid")||i===o;return(n===this.get("jid")?this.occupants.findOccupant({nick:i}):this.occupants.findOccupant({jid:n}))===(r===this.get("jid")?this.occupants.findOccupant({nick:o}):this.occupants.findOccupant({jid:r}))},async isSubjectHidden(){return(await Vc.user.settings.get("mucs_with_hidden_subject",[])).includes(this.get("jid"))},async toggleSubjectHiddenState(){const e=this.get("jid"),t=await Vc.user.settings.get("mucs_with_hidden_subject",[]);t.includes(this.get("jid"))?Vc.user.settings.set("mucs_with_hidden_subject",t.filter(t=>t!==e)):Vc.user.settings.set("mucs_with_hidden_subject",[...t,e])},async handleSubjectChange(e){const t=Uc.__;if("string"==typeof e.subject&&!e.thread&&!e.message){const n=e.subject,r=e.nick;if(Kl.safeSave(this,{subject:{author:r,text:e.subject||""}}),!e.is_delayed&&r){const i=t(n?"Topic set by %1$s":"Topic cleared by %1$s",r),o=this.messages.last();(null==o?void 0:o.get("nick"))===e.nick&&"info"===(null==o?void 0:o.get("type"))&&(null==o?void 0:o.get("message"))===i||this.createMessage({message:i,nick:e.nick,type:"info"}),await this.isSubjectHidden()&&this.toggleSubjectHiddenState()}return!0}return!1},setSubject(e=""){Vc.send(Object(kc.c)({to:this.get("jid"),from:Uc.connection.jid,type:"groupchat"}).c("subject",{xmlns:"jabber:client"}).t(e).tree())},ignorableCSN(e){return e.chat_state&&!e.body&&(e.is_delayed||this.isOwnMessage(e))},isOwnMessage(e){let t;return t=Dn(e)?e.getAttribute("from"):e instanceof Uc.Message?e.get("from"):e.from,kc.e.getResourceFromJid(t)==this.get("nick")},getUpdatedMessageAttributes(e,t){const n=Uc.ChatBox.prototype.getUpdatedMessageAttributes.call(this,e,t);if(this.isOwnMessage(t)){const r=Object.keys(t).filter(e=>e.startsWith("stanza_id"));Object.assign(n,Bo(t,r)),e.get("received")||(n.received=(new Date).toISOString())}return n},async isJoined(){const e=this.get("jid"),t=Object(kc.b)({to:"".concat(e,"/").concat(this.get("nick")),type:"get"}).c("ping",{xmlns:kc.e.NS.PING});try{await Vc.sendIQ(t)}catch(t){return null===t?zn.warn("isJoined: Timeout error while checking whether we're joined to MUC: ".concat(e)):zn.warn("isJoined: Apparently we're no longer connected to MUC: ".concat(e)),!1}return!0},async rejoinIfNecessary(){if(!await this.isJoined())return this.rejoin(),!0},async shouldShowErrorMessage(e){return("not-acceptable"!==e.error_condition||!await this.rejoinIfNecessary())&&Uc.ChatBox.prototype.shouldShowErrorMessage.call(this,e)},findDanglingModeration(e){if(!this.messages.length)return null;if(this.messages.last().get("time")>e.time){const t=Array.from(this.messages.models),n=e["stanza_id ".concat(this.get("jid"))];return n?(t.reverse(),t.find(({attributes:e})=>"retracted"===e.moderated&&e.moderated_id===n&&e.moderated_by)):null}},async handleModeration(e){const t=["editable","moderated","moderated_by","moderated_id","moderation_reason"];if("retracted"===e.moderated){const n={};n["stanza_id ".concat(this.get("jid"))]=e.moderated_id;const r=this.messages.findWhere(n);return r?(r.save(Bo(e,t)),!0):(e.dangling_moderation=!0,await this.createMessage(e),!0)}{const n=this.findDanglingModeration(e);if(n){const r=Bo(n.attributes,t),i=Object.assign({dangling_moderation:!1},e,r);return delete i.id,n.save(i),!0}}return!1},removeNotification(e,t){const n=this.notifications.toJSON();(t=Array.isArray(t)?t:[t]).forEach(t=>{const r=Array.from(n[t]||[]);if(r.includes(e)){const n=r.indexOf(e);r.splice(n,1),this.notifications.set(t,Array.from(r))}})},updateNotifications(e,t){const n=this.notifications.toJSON(),r=n[t]||[];if(r.includes(e))return;const i=(i,o)=>(i[o]=o===t?[...r,e]:(n[o]||[]).filter(t=>t!==e),i),o=rl.CHAT_STATES.reduce(i,{}),s=rl.MUC_TRAFFIC_STATES_LIST.reduce(i,{}),a=rl.MUC_ROLE_CHANGES_LIST.reduce(i,{});this.notifications.set(Object.assign(o,s,a)),window.setTimeout(()=>this.removeNotification(e,t),1e4)},async onMessage(e){if(e=await e,Kl.isErrorObject(e))return e.stanza&&zn.error(e.stanza),zn.error(e.message);const t=this.getDuplicateMessage(e);if(t)return this.updateMessage(t,e);if(!(e.is_valid_receipt_request||e.is_marker||this.ignorableCSN(e))){if(await this.handleRetraction(e)||await this.handleModeration(e)||await this.handleSubjectChange(e))return this.removeNotification(e.nick,["composing","paused"]);if(this.setEditable(e,e.time),e.chat_state&&this.updateNotifications(e.nick,e.chat_state),Kl.shouldCreateGroupchatMessage(e)){const t=this.handleCorrection(e)||await this.createMessage(e);this.removeNotification(e.nick,["composing","paused"]),this.handleUnreadMessage(t)}}},handleModifyError(e){var t;const n=null===(t=e.querySelector("error text"))||void 0===t?void 0:t.textContent;if(n)if(this.session.get("connection_status")===rl.ROOMSTATUS.CONNECTING)this.setDisconnectionMessage(n);else{const e={type:"error",message:n,is_ephemeral:!0};this.createMessage(e)}},handleDisconnection(e){var t;const n=null!==e.querySelector("status[code='110']"),r=mr()('x[xmlns="'.concat(kc.e.NS.MUC_USER,'"]'),e).pop();if(!r)return;const i=mr()("status",r).map(e=>e.getAttribute("code")),o=iu(i,Object.keys(Uc.muc.disconnect_messages));if(!(n&&o.length>0))return;const s=r.querySelector("item"),a=s?null===(t=s.querySelector("reason"))||void 0===t?void 0:t.textContent:void 0,c=s?Pc(s.querySelector("actor"),"getAttribute","nick"):void 0,l=Uc.muc.disconnect_messages[o[0]];this.setDisconnectionMessage(l,a,c)},getActionInfoMessage(e,t,n){const r=Uc.__;return"301"===e?n?r("%1$s has been banned by %2$s",t,n):r("%1$s has been banned",t):"303"===e?r("%1$s's nickname has changed",t):"307"===e?n?r("%1$s has been kicked out by %2$s",t,n):r("%1$s has been kicked out",t):"321"===e?r("%1$s has been removed because of an affiliation change",t):"322"===e?r("%1$s has been removed for not being a member",t):void 0},createAffiliationChangeMessage(e){const t=Uc.__,n=e._previousAttributes.affiliation;if(!n)return;const r=e.get("affiliation");"admin"===n&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.EXADMIN)?this.createMessage({type:"info",message:t("%1$s is no longer an admin of this groupchat",e.get("nick"))}):"owner"===n&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.EXOWNER)?this.createMessage({type:"info",message:t("%1$s is no longer an owner of this groupchat",e.get("nick"))}):"outcast"===n&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.EXOUTCAST)&&this.createMessage({type:"info",message:t("%1$s is no longer banned from this groupchat",e.get("nick"))}),"none"===r&&"member"===n&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.EXMEMBER)&&this.createMessage({type:"info",message:t("%1$s is no longer a member of this groupchat",e.get("nick"))}),"member"===r&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.MEMBER)?this.createMessage({type:"info",message:t("%1$s is now a member of this groupchat",e.get("nick"))}):("admin"===r&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.ADMIN)||"owner"==r&&Uc.isInfoVisible(rl.AFFILIATION_CHANGES.OWNER))&&this.createMessage({type:"info",message:t("%1$s is now an %2$s of this groupchat",e.get("nick"),r)})},createRoleChangeMessage(e,t){if("none"===t||e.changed.affiliation)return;const n=e._previousAttributes.role;"moderator"===n&&Uc.isInfoVisible(rl.MUC_ROLE_CHANGES.DEOP)?this.updateNotifications(e.get("nick"),rl.MUC_ROLE_CHANGES.DEOP):"visitor"===n&&Uc.isInfoVisible(rl.MUC_ROLE_CHANGES.VOICE)&&this.updateNotifications(e.get("nick"),rl.MUC_ROLE_CHANGES.VOICE),"visitor"===e.get("role")&&Uc.isInfoVisible(rl.MUC_ROLE_CHANGES.MUTE)?this.updateNotifications(e.get("nick"),rl.MUC_ROLE_CHANGES.MUTE):"moderator"===e.get("role")&&!["owner","admin"].includes(e.get("affiliation"))&&Uc.isInfoVisible(rl.MUC_ROLE_CHANGES.OP)&&this.updateNotifications(e.get("nick"),rl.MUC_ROLE_CHANGES.OP)},createInfoMessage(e,t,n){const r=Uc.__,i={type:"info"};if(Uc.isInfoVisible(e)&&"110"!==e&&("100"!==e||n)){if(e in Uc.muc.info_messages)i.message=Uc.muc.info_messages[e];else if(!n&&ou.includes(e)){var o,s;const n=kc.e.getResourceFromJid(t.getAttribute("from")),r=t.querySelector('x[xmlns="'.concat(kc.e.NS.MUC_USER,'"] item'));i.actor=r?null===(o=r.querySelector("actor"))||void 0===o?void 0:o.getAttribute("nick"):void 0,i.reason=r?null===(s=r.querySelector("reason"))||void 0===s?void 0:s.textContent:void 0,i.message=this.getActionInfoMessage(e,n,i.actor)}else if(n&&e in Uc.muc.new_nickname_messages){let o;n&&"210"===e?o=kc.e.getResourceFromJid(t.getAttribute("from")):n&&"303"===e&&(o=t.querySelector('x[xmlns="'.concat(kc.e.NS.MUC_USER,'"] item')).getAttribute("nick")),this.save("nick",o),i.message=r(Uc.muc.new_nickname_messages[e],o)}if(i.message){if("201"===e&&this.messages.findWhere(i))return;if(e in Uc.muc.info_messages&&this.messages.length&&this.messages.pop().get("message")===i.message)return;this.createMessage(i)}}},createInfoMessages(e){const t=mr()('x[xmlns="'.concat(kc.e.NS.MUC_USER,'"] status'),e).map(e=>e.getAttribute("code"));t.includes("333")&&t.includes("307")&&t.splice(t.indexOf("307"),1);const n=t.includes("110");t.forEach(t=>this.createInfoMessage(t,e,n))},setDisconnectionMessage(e,t,n){this.save({disconnection_message:e,disconnection_reason:t,disconnection_actor:n}),this.session.save({connection_status:rl.ROOMSTATUS.DISCONNECTED})},onNicknameClash(e){const t=Uc.__;if(Vc.settings.get("muc_nickname_from_jid")){const t=e.getAttribute("from").split("/")[1];if(t===Uc.getDefaultMUCNickname())this.join(t+"-2");else{const e=t.lastIndexOf("-"),n=t.substring(e+1,t.length);this.join(t.substring(0,e+1)+String(Number(n)+1))}}else this.save({nickname_validation_message:t("The nickname you chose is reserved or currently in use, please choose a different one.")}),this.session.save({connection_status:rl.ROOMSTATUS.NICKNAME_REQUIRED})},onErrorPresence(e){var t;const n=Uc.__,r=e.querySelector("error"),i=r.getAttribute("type"),o=null===(t=mr()('text[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),r).pop())||void 0===t?void 0:t.textContent;if("modify"===i)this.handleModifyError(e);else if("auth"===i){if(mr()('not-authorized[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),r).length&&(this.save({password_validation_message:o||n("Password incorrect")}),this.session.save({connection_status:rl.ROOMSTATUS.PASSWORD_REQUIRED})),r.querySelector("registration-required")){const e=n("You are not on the member list of this groupchat.");this.setDisconnectionMessage(e,o)}else if(r.querySelector("forbidden")){const e=n("You have been banned from this groupchat.");this.setDisconnectionMessage(e,o)}}else if("cancel"===i)if(r.querySelector("not-allowed")){const e=n("You are not allowed to create new groupchats.");this.setDisconnectionMessage(e,o)}else if(r.querySelector("not-acceptable")){const e=n("Your nickname doesn't conform to this groupchat's policies.");this.setDisconnectionMessage(e,o)}else if(mr()('gone[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),r).length){var s;const e=null===(s=mr()('gone[xmlns="'.concat(kc.e.NS.STANZAS,'"]'),r).pop())||void 0===s?void 0:s.textContent.replace(/^xmpp:/,"").replace(/\?join$/,"");this.save({moved_jid:e,destroyed_reason:o}),this.session.save({connection_status:rl.ROOMSTATUS.DESTROYED})}else if(r.querySelector("conflict"))this.onNicknameClash(e);else if(r.querySelector("item-not-found")){const e=n("This groupchat does not (yet) exist.");this.setDisconnectionMessage(e,o)}else if(r.querySelector("service-unavailable")){const e=n("This groupchat has reached its maximum number of participants.");this.setDisconnectionMessage(e,o)}else if(r.querySelector("remote-server-not-found")){const e=n("Remote server not found"),t=o?n('The explanation given is: "%1$s".',o):void 0;this.setDisconnectionMessage(e,t)}},onPresence(e){if("error"===e.getAttribute("type"))return this.onErrorPresence(e);this.createInfoMessages(e),e.querySelector("status[code='110']")?(this.onOwnPresence(e),"none"!==this.getOwnRole()&&this.session.get("connection_status")===rl.ROOMSTATUS.CONNECTING&&this.session.save("connection_status",rl.ROOMSTATUS.CONNECTED)):this.updateOccupantsOnPresence(e)},onOwnPresence(e){if("unavailable"!==e.getAttribute("type")){const t=this.session.get("connection_status");t!==rl.ROOMSTATUS.ENTERED?(this.session.save("connection_status",rl.ROOMSTATUS.ENTERED,{silent:!0}),this.updateOccupantsOnPresence(e),this.session.trigger("change:connection_status",this.session,t)):this.updateOccupantsOnPresence(e)}else this.updateOccupantsOnPresence(e);if("unavailable"===e.getAttribute("type"))this.handleDisconnection(e);else{if(e.querySelector("status[code='201']"))if(this.get("auto_configure"))this.autoConfigureChatRoom().then(()=>this.refreshDiscoInfo());else{if(!Vc.settings.get("muc_instant_rooms"))return void this.trigger("configurationNeeded");this.sendConfiguration().then(()=>this.refreshDiscoInfo())}else this.features.get("fetched")||("owner"===this.getOwnAffiliation()&&this.get("auto_configure")?this.autoConfigureChatRoom().then(()=>this.refreshDiscoInfo()):this.getDiscoInfo())}this.session.save({connection_status:rl.ROOMSTATUS.ENTERED})},isUserMentioned(e){const t=this.get("nick");if(e.get("references").length){return e.get("references").filter(e=>"mention"===e.type).map(e=>e.value).includes(t)}return new RegExp("\\b".concat(t,"\\b")).test(e.get("message"))},handleUnreadMessage(e){if((null==e?void 0:e.get("body"))&&Kl.isNewMessage(e))if(this.isHidden()){const t={num_unread_general:this.get("num_unread_general")+1};0===this.get("num_unread_general")&&(t.first_unread_id=e.get("id")),this.isUserMentioned(e)&&(t.num_unread=this.get("num_unread")+1),this.save(t)}else this.sendMarkerForMessage(e)},clearUnreadMsgCounter(){(this.get("num_unread_general")>0||this.get("num_unread")>0)&&this.sendMarkerForMessage(this.messages.last()),Kl.safeSave(this,{num_unread:0,num_unread_general:0})}};var cu=qo.extend({defaults:{hats:[],show:"offline",states:[]},initialize(e){this.set(Object.assign({id:Kl.getUniqueId()},e)),this.on("change:image_hash",this.onAvatarChanged,this)},onAvatarChanged(){const e=this.get("image_hash"),t=[];this.get("jid")&&t.push(Uc.vcards.findWhere({jid:this.get("jid")})),t.push(Uc.vcards.findWhere({jid:this.get("from")})),t.filter(e=>e).forEach(t=>{e&&t.get("image_hash")!==e&&Vc.vcard.update(t,!0)})},getDisplayName(){return this.get("nick")||this.get("jid")},isMember(){return["admin","owner","member"].includes(this.get("affiliation"))},isModerator(){return["admin","owner"].includes(this.get("affiliation"))||"moderator"===this.get("role")},isSelf(){return this.get("states").includes("110")}});const lu={moderator:1,participant:2,visitor:3,none:2};var uu=ra.extend({model:cu,comparator(e,t){const n=e.get("role")||"none",r=t.get("role")||"none";if(lu[n]===lu[r]){const n=e.getDisplayName().toLowerCase(),r=t.getDisplayName().toLowerCase();return n<r?-1:n>r?1:0}return lu[n]<lu[r]?-1:1},getAutoFetchedAffiliationLists(){const e=Vc.settings.get("muc_fetch_members");return Array.isArray(e)?e:e?["member","admin","owner"]:[]},async fetchMembers(){const e=this.getAutoFetchedAffiliationLists();if(0===e.length)return;const t=await Promise.all(e.map(e=>this.chatroom.getAffiliationList(e))),n=t.reduce((e,t)=>Kl.isErrorObject(t)?e:[...t,...e],[]),r=e.filter(n=>!Kl.isErrorObject(t[e.indexOf(n)])),i=n.map(e=>e.jid).filter(e=>void 0!==e),o=n.map(e=>!e.jid&&e.nick||void 0).filter(e=>void 0!==e);this.filter(e=>r.includes(e.get("affiliation"))&&!o.includes(e.get("nick"))&&!i.includes(e.get("jid"))).forEach(e=>{e.get("jid")!==Uc.bare_jid&&("offline"===e.get("show")?e.destroy():e.save("affiliation",null))}),n.forEach(e=>{const t=e.jid?this.findOccupant({jid:e.jid}):this.findOccupant({nick:e.nick});t?t.save(e):this.create(e)}),Vc.trigger("membersFetched")},findOccupant(e){const t=kc.e.getBareJidFromJid(e.jid);return t&&this.findWhere({jid:t})||this.findWhere({nick:e.nick})}}),du={rooms:{create(e,t={}){if(!(t="string"==typeof t?{nick:t}:t||{}).nick&&Vc.settings.get("muc_nickname_from_jid")&&(t.nick=kc.e.getNodeFromJid(Uc.bare_jid)),void 0===e)throw new TypeError("rooms.create: You need to provide at least one JID");return"string"==typeof e?Vc.rooms.get(Kl.getJIDFromURI(e),t,!0):e.map(e=>Vc.rooms.get(Kl.getJIDFromURI(e),t,!0))},async open(e,t={},n=!1){if(await Vc.waitUntil("chatBoxesFetched"),void 0===e){const e="rooms.open: You need to provide at least one JID";throw zn.error(e),new TypeError(e)}if("string"==typeof e){const r=await Vc.rooms.get(e,t,!0);return r&&r.maybeShow(n),r}{const r=await Promise.all(e.map(e=>Vc.rooms.get(e,t,!0)));return r.forEach(e=>e.maybeShow(n)),r}},async get(e,t={},n=!1){async function r(e){e=Kl.getJIDFromURI(e);let r=await Vc.chatboxes.get(e);return!r&&n?r=await Vc.chatboxes.create(e,t,Uc.ChatRoom):(r=r&&r.get("type")===Uc.CHATROOMS_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await Vc.chatboxes.get()).filter(e=>e.get("type")===Uc.CHATROOMS_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}}; /** * @module converse-muc * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description Implements the non-view logic for XEP-0045 Multi-User Chat - */const Xl=["moderator","participant","visitor"],Ql=["owner","admin","member","outcast","none"];Yc.AFFILIATION_CHANGES={OWNER:"owner",ADMIN:"admin",MEMBER:"member",EXADMIN:"exadmin",EXOWNER:"exowner",EXOUTCAST:"exoutcast",EXMEMBER:"exmember"},Yc.AFFILIATION_CHANGES_LIST=Object.values(Yc.AFFILIATION_CHANGES),Yc.MUC_TRAFFIC_STATES={ENTERED:"entered",EXITED:"exited"},Yc.MUC_TRAFFIC_STATES_LIST=Object.values(Yc.MUC_TRAFFIC_STATES),Yc.MUC_ROLE_CHANGES={OP:"op",DEOP:"deop",VOICE:"voice",MUTE:"mute"},Yc.MUC_ROLE_CHANGES_LIST=Object.values(Yc.MUC_ROLE_CHANGES);const Yl=["301","303","333","307","321","322"];Yc.MUC_INFO_CODES={visibility_changes:["100","102","103","172","173","174"],self:["110"],non_privacy_changes:["104","201"],muc_logging_changes:["170","171"],nickname_changes:["210","303"],disconnect_messages:["301","307","321","322","332","333"],affiliation_changes:[...Yc.AFFILIATION_CHANGES_LIST],join_leave_events:[...Yc.MUC_TRAFFIC_STATES_LIST],role_changes:[...Yc.MUC_ROLE_CHANGES_LIST]};const Kl={moderator:1,participant:2,visitor:3,none:2},{Strophe:Zl,$iq:eu,$build:tu,$msg:nu,$pres:ru,sizzle:iu}=Yc.env;Zl.addNamespace("MUC_ADMIN",Zl.NS.MUC+"#admin"),Zl.addNamespace("MUC_OWNER",Zl.NS.MUC+"#owner"),Zl.addNamespace("MUC_REGISTER","jabber:iq:register"),Zl.addNamespace("MUC_ROOMCONF",Zl.NS.MUC+"#roomconfig"),Zl.addNamespace("MUC_USER",Zl.NS.MUC+"#user"),Zl.addNamespace("MUC_HATS","xmpp:prosody.im/protocol/hats:1"),Yc.MUC_NICK_CHANGED_CODE="303",Yc.ROOM_FEATURES=["passwordprotected","unsecured","hidden","publicroom","membersonly","open","persistent","temporary","nonanonymous","semianonymous","moderated","unmoderated","mam_enabled"],Yc.ROOMSTATUS={CONNECTED:0,CONNECTING:1,NICKNAME_REQUIRED:2,PASSWORD_REQUIRED:3,DISCONNECTED:4,ENTERED:5,DESTROYED:6},Yc.plugins.add("converse-muc",{dependencies:["converse-chatboxes","converse-chat","converse-disco","converse-controlbox"],overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e&&e.type==n.CHATROOMS_TYPE?new n.ChatRoom(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){const{__:e,___:t}=Lc;if(qc.settings.extend({allow_muc:!0,allow_muc_invitations:!0,auto_join_on_invite:!1,auto_join_rooms:[],auto_register_muc_nickname:!1,locked_muc_domain:!1,muc_domain:void 0,muc_fetch_members:!0,muc_history_max_stanzas:void 0,muc_instant_rooms:!0,muc_nickname_from_jid:!1,muc_send_probes:!1,muc_show_info_messages:[...Yc.MUC_INFO_CODES.visibility_changes,...Yc.MUC_INFO_CODES.self,...Yc.MUC_INFO_CODES.non_privacy_changes,...Yc.MUC_INFO_CODES.muc_logging_changes,...Yc.MUC_INFO_CODES.nickname_changes,...Yc.MUC_INFO_CODES.disconnect_messages,...Yc.MUC_INFO_CODES.affiliation_changes,...Yc.MUC_INFO_CODES.join_leave_events,...Yc.MUC_INFO_CODES.role_changes],muc_show_logs_before_join:!1}),qc.promises.add(["roomsAutoJoined"]),qc.settings.get("locked_muc_domain")&&"string"!=typeof qc.settings.get("muc_domain"))throw new Error("Config Error: it makes no sense to set locked_muc_domain to true when muc_domain is not set");Lc.muc={info_messages:{100:e("This groupchat is not anonymous"),102:e("This groupchat now shows unavailable members"),103:e("This groupchat does not show unavailable members"),104:e("The groupchat configuration has changed"),170:e("Groupchat logging is now enabled"),171:e("Groupchat logging is now disabled"),172:e("This groupchat is now no longer anonymous"),173:e("This groupchat is now semi-anonymous"),174:e("This groupchat is now fully-anonymous"),201:e("A new groupchat has been created")},new_nickname_messages:{210:t("Your nickname has been automatically set to %1$s"),303:t("Your nickname has been changed to %1$s")},disconnect_messages:{301:e("You have been banned from this groupchat"),333:e("You have exited this groupchat due to a technical problem"),307:e("You have been kicked from this groupchat"),321:e("You have been removed from this groupchat because of an affiliation change"),322:e("You have been removed from this groupchat because the groupchat has changed to members-only and you're not a member"),332:e("You have been removed from this groupchat because the service hosting it is being shut down")}},Lc.isInfoVisible=function(e){return!!qc.settings.get("muc_show_info_messages").includes(e)},Lc.router.route("converse/room?jid=:jid",(async function(e){if(!Fl.isValidMUCJID(e))return Pn.warn('invalid jid "'.concat(e,'" provided in url fragment'));await qc.waitUntil("roomsAutoJoined"),qc.settings.get("allow_bookmarks")&&await qc.waitUntil("bookmarksInitialized"),qc.rooms.open(e)})),Lc.getDefaultMUCNickname=function(){if(!Lc.xmppstatus)throw new Error("Can't call _converse.getDefaultMUCNickname before the statusInitialized has been fired.");const e=Lc.xmppstatus.getNickname();return e||(qc.settings.get("muc_nickname_from_jid")?Zl.unescapeNode(Zl.getNodeFromJid(Lc.bare_jid)):void 0)},Lc.ChatRoomMessage=Lc.Message.extend({initialize(){this.checkValidity()&&(this.get("file")&&this.on("change:put",this.uploadFile,this),this.setTimerForEphemeralMessage()||this.setOccupant(),qc.trigger("chatRoomMessageInitialized",this))},mayBeModerated(){return["all","moderator"].includes(qc.settings.get("allow_message_retraction"))&&this.collection.chatbox.canModerateMessages()},checkValidity(){const e=Lc.Message.prototype.checkValidity.call(this);return!e&&this.collection.chatbox.debouncedRejoin(),e},onOccupantRemoved(){var e;this.stopListening(this.occupant),delete this.occupant;const t=null==this||null===(e=this.collection)||void 0===e?void 0:e.chatbox;if(!t)return Pn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));this.listenTo(t.occupants,"add",this.onOccupantAdded)},onOccupantAdded(e){if(e.get("nick")===Zl.getResourceFromJid(this.get("from"))){var t;this.occupant=e,this.trigger("occupantAdded"),this.listenTo(this.occupant,"destroy",this.onOccupantRemoved);const n=null==this||null===(t=this.collection)||void 0===t?void 0:t.chatbox;if(!n)return Pn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));this.stopListening(n.occupants,"add",this.onOccupantAdded)}},setOccupant(){var e;if("groupchat"!==this.get("type"))return;const t=null==this||null===(e=this.collection)||void 0===e?void 0:e.chatbox;if(!t)return Pn.error("Could not get collection.chatbox for message: ".concat(JSON.stringify(this.toJSON())));const n=Zl.getResourceFromJid(this.get("from"));if(this.occupant=t.occupants.findWhere({nick:n}),!this.occupant&&qc.settings.get("muc_send_probes")){this.occupant=t.occupants.create({nick:n,type:"unavailable"});const e="".concat(t.get("jid"),"/").concat(n);qc.user.presence.send("probe",e)}this.occupant?this.listenTo(this.occupant,"destroy",this.onOccupantRemoved):this.listenTo(t.occupants,"add",this.onOccupantAdded)}});const n=Rs.extend({defaults:()=>({connection_status:Yc.ROOMSTATUS.DISCONNECTED})});if(Lc.ChatRoomMessages=Yo.extend({model:Lc.ChatRoomMessage,comparator:"time"}),Lc.ChatRoom=Lc.ChatBox.extend({messagesCollection:Lc.ChatRoomMessages,defaults(){return{num_unread_general:0,bookmarked:!1,chat_state:void 0,hidden:Lc.isUniView()&&!qc.settings.get("singleton"),message_type:"groupchat",name:"",num_unread:0,roomconfig:{},time_opened:this.get("time_opened")||(new Date).getTime(),time_sent:new Date(0).toISOString(),type:Lc.CHATROOMS_TYPE}},async initialize(){this.initialized=Fl.getResolveablePromise(),this.debouncedRejoin=Tc(this.rejoin,250),this.set("box_id","box-".concat(this.get("jid"))),this.initNotifications(),this.initMessages(),this.initOccupants(),this.initDiscoModels(),this.registerHandlers(),this.on("change:chat_state",this.sendChatState,this),await this.restoreSession(),this.session.on("change:connection_status",this.onConnectionStatusChanged,this),this.listenTo(this.occupants,"add",this.onOccupantAdded),this.listenTo(this.occupants,"remove",this.onOccupantRemoved),this.listenTo(this.occupants,"change:show",this.onOccupantShowChanged),this.listenTo(this.occupants,"change:affiliation",this.createAffiliationChangeMessage),this.listenTo(this.occupants,"change:role",this.createRoleChangeMessage),await this.restoreFromCache()||this.join(),await qc.trigger("chatRoomInitialized",this,{Synchronous:!0}),this.initialized.resolve()},async restoreFromCache(){return this.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED&&await this.isJoined()?(await new Promise(e=>this.features.fetch({success:e,error:e})),await this.fetchOccupants(),await this.fetchMessages(),!0):(await this.clearCache(),!1)},async join(e,t){if(this.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED)return this;if(await this.refreshDiscoInfo(),!(e=await this.getAndPersistNickname(e)))return Fl.safeSave(this.session,{connection_status:Yc.ROOMSTATUS.NICKNAME_REQUIRED}),qc.settings.get("muc_show_logs_before_join")&&await this.fetchMessages(),this;const n=ru({from:Lc.connection.jid,to:this.getRoomJIDAndNick()}).c("x",{xmlns:Zl.NS.MUC}).c("history",{maxstanzas:this.features.get("mam_enabled")?0:qc.settings.get("muc_history_max_stanzas")}).up();return(t=t||this.get("password"))&&n.cnode(Zl.xmlElement("password",[],t)),this.session.save("connection_status",Yc.ROOMSTATUS.CONNECTING),qc.send(n),this},async fetchMessages(){await Lc.ChatBox.prototype.fetchMessages.call(this);const e=this.message_queue.map(e=>this.queueMessage(e));return this.message_queue=[],Promise.all(e)},async clearCache(){this.session.save("connection_status",Yc.ROOMSTATUS.DISCONNECTED),this.occupants.length?this.occupants.filter(e=>!e.isMember()).forEach(e=>e.destroy()):this.occupants.clearStore(),qc.settings.get("clear_messages_on_reconnection")&&await this.clearMessages()},onOccupantAdded(e){Lc.isInfoVisible(Yc.MUC_TRAFFIC_STATES.ENTERED)&&this.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED&&"online"===e.get("show")&&this.updateNotifications(e.get("nick"),Yc.MUC_TRAFFIC_STATES.ENTERED)},onOccupantRemoved(e){Lc.isInfoVisible(Yc.MUC_TRAFFIC_STATES.EXITED)&&this.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED&&"online"===e.get("show")&&this.updateNotifications(e.get("nick"),Yc.MUC_TRAFFIC_STATES.EXITED)},onOccupantShowChanged(e){e.get("states").includes("303")||("offline"===e.get("show")&&Lc.isInfoVisible(Yc.MUC_TRAFFIC_STATES.EXITED)?this.updateNotifications(e.get("nick"),Yc.MUC_TRAFFIC_STATES.EXITED):"online"===e.get("show")&&Lc.isInfoVisible(Yc.MUC_TRAFFIC_STATES.ENTERED)&&this.updateNotifications(e.get("nick"),Yc.MUC_TRAFFIC_STATES.ENTERED))},rejoin(){return this.clearCache(),this.join()},initMessages(){this.message_queue=[],Lc.ChatBox.prototype.initMessages.call(this)},async onConnectionStatusChanged(){this.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED&&(await this.occupants.fetchMembers(),await this.fetchMessages(),qc.trigger("enteredNewRoom",this),qc.settings.get("auto_register_muc_nickname")&&await qc.disco.supports(Zl.NS.MUC_REGISTER,this.get("jid"))&&this.registerNickname())},async onReconnection(){this.registerHandlers(),await this.rejoin(),this.announceReconnection()},restoreSession(){const e="muc.session-".concat(Lc.bare_jid,"-").concat(this.get("jid"));return this.session=new n({id:e}),this.session.browserStorage=Lc.createStore(e,"session"),new Promise(e=>this.session.fetch({success:e,error:e}))},initDiscoModels(){let e="converse.muc-features-".concat(Lc.bare_jid,"-").concat(this.get("jid"));this.features=new Rs(Object.assign({id:e},Nl(Yc.ROOM_FEATURES,Yc.ROOM_FEATURES.map(()=>!1)))),this.features.browserStorage=Lc.createStore(e,"session"),e="converse.muc-config-{_converse.bare_jid}-".concat(this.get("jid")),this.config=new Rs,this.config.browserStorage=Lc.createStore(e,"session")},initOccupants(){this.occupants=new Lc.ChatRoomOccupants;const e="converse.occupants-".concat(Lc.bare_jid).concat(this.get("jid"));this.occupants.browserStorage=Lc.createStore(e,"session"),this.occupants.chatroom=this},fetchOccupants(){return this.occupants.fetched=new Promise(e=>{this.occupants.fetch({add:!0,silent:!0,success:e,error:e})}),this.occupants.fetched},handleAffiliationChangedMessage(e){const t=iu('x[xmlns="'.concat(Zl.NS.MUC_USER,'"] item'),e).pop();if(t){const n=e.getAttribute("from"),r=e.getAttribute("type"),i=t.getAttribute("affiliation"),s=t.getAttribute("jid"),o={from:n,type:r,affiliation:i,nick:Zl.getNodeFromJid(s),states:[],show:"unavailable"==r?"offline":"online",role:t.getAttribute("role"),jid:Zl.getBareJidFromJid(s),resource:Zl.getResourceFromJid(s)},a=this.occupants.findOccupant({jid:o.jid});a?a.save(o):this.occupants.create(o)}},async handleErrorMessageStanza(t){const n=await ao.parseMUCMessage(t,this,Lc);if(!await this.shouldShowErrorMessage(n))return;const r=this.getMessageReferencedByError(n);if(r){const t={error:n.error,error_condition:n.error_condition,error_text:n.error_text,error_type:n.error_type,editable:!1};n.msgid===r.get("retraction_id")?(t.retraction_id=void 0,n.error||("forbidden"===n.error_condition?t.error=e("You're not allowed to retract your message."):"not-acceptable"===n.error_condition?t.error=e("Your retraction was not delivered because you're not present in the groupchat."):t.error=e("Sorry, an error occurred while trying to retract your message."))):n.error||("forbidden"===n.error_condition?t.error=e("Your message was not delivered because you weren't allowed to send it."):"not-acceptable"===n.error_condition?t.error=e("Your message was not delivered because you're not present in the groupchat."):t.error=e("Sorry, an error occurred while trying to send your message.")),r.save(t)}else this.createMessage(n)},async handleMessageStanza(e){if(ao.isArchived(e))return Pn.warn('Received a MAM message with type "groupchat"');this.createInfoMessages(e),this.fetchFeaturesIfConfigurationChanged(e);const t=await ao.parseMUCMessage(e,this,Lc),n={stanza:e,attrs:t,chatbox:this};return qc.trigger("message",n),t&&this.queueMessage(t)},registerHandlers(){const e=this.get("jid");this.removeHandlers(),this.presence_handler=Lc.connection.addHandler(e=>this.onPresence(e)||!0,null,"presence",null,null,e,{ignoreNamespaceFragment:!0,matchBareFromJid:!0}),this.message_handler=Lc.connection.addHandler(e=>!!this.handleMessageStanza(e)||!0,null,"message","groupchat",null,e,{matchBareFromJid:!0}),this.affiliation_message_handler=Lc.connection.addHandler(e=>this.handleAffiliationChangedMessage(e)||!0,Zl.NS.MUC_USER,"message",null,null,e)},removeHandlers(){return this.message_handler&&(Lc.connection&&Lc.connection.deleteHandler(this.message_handler),delete this.message_handler),this.presence_handler&&(Lc.connection&&Lc.connection.deleteHandler(this.presence_handler),delete this.presence_handler),this.affiliation_message_handler&&(Lc.connection&&Lc.connection.deleteHandler(this.affiliation_message_handler),delete this.affiliation_message_handler),this},invitesAllowed(){return qc.settings.get("allow_muc_invitations")&&(this.features.get("open")||"owner"===this.getOwnAffiliation())},getDisplayName(){const e=this.get("name");return e||("hidden"===qc.settings.get("locked_muc_domain")?Zl.getNodeFromJid(this.get("jid")):this.get("jid"))},sendTimedMessage(e){"function"==typeof e.tree&&(e=e.tree());let t=e.getAttribute("id");t||(t=this.getUniqueId("sendIQ"),e.setAttribute("id",t));const n=Fl.getResolveablePromise(),r=Lc.connection.addTimedHandler(Lc.STANZA_TIMEOUT,()=>(Lc.connection.deleteHandler(i),n.reject(new Lc.TimeoutError("Timeout Error: No response from server")),!1)),i=Lc.connection.addHandler(e=>{r&&Lc.connection.deleteTimedHandler(r),"groupchat"===e.getAttribute("type")?n.resolve(e):n.reject(e)},null,"message",["error","groupchat"],t);return qc.send(e),n},async retractOwnMessage(t){const n=t.get("origin_id");if(!n)throw new Error("Can't retract message without a XEP-0359 Origin ID");const r=t.get("editable"),i=nu({id:Fl.getUniqueId(),to:this.get("jid"),type:"groupchat"}).c("store",{xmlns:Zl.NS.HINTS}).up().c("apply-to",{id:n,xmlns:Zl.NS.FASTEN}).c("retract",{xmlns:Zl.NS.RETRACT});t.set({retracted:(new Date).toISOString(),retracted_id:n,retraction_id:i.nodeTree.getAttribute("id"),editable:!1});try{await this.sendTimedMessage(i)}catch(n){throw t.save({editable:r,error_type:"timeout",error:e("A timeout happened while while trying to retract your message."),retracted:void 0,retracted_id:void 0}),n}},async retractOtherMessage(e,t){const n=e.get("editable");e.save({moderated:"retracted",moderated_by:Lc.bare_jid,moderated_id:e.get("msgid"),moderation_reason:t,editable:!1});const r=await this.sendRetractionIQ(e,t);return(null===r||Fl.isErrorStanza(r))&&e.save({editable:n,moderated:void 0,moderated_by:void 0,moderated_id:void 0,moderation_reason:void 0}),r},sendRetractionIQ(e,t){const n=eu({to:this.get("jid"),type:"set"}).c("apply-to",{id:e.get("stanza_id ".concat(this.get("jid"))),xmlns:Zl.NS.FASTEN}).c("moderate",{xmlns:Zl.NS.MODERATE}).c("retract",{xmlns:Zl.NS.RETRACT}).up().c("reason").t(t||"");return qc.sendIQ(n,null,!1)},sendDestroyIQ(e,t){const n=tu("destroy");t&&n.attrs({jid:t});const r=eu({to:this.get("jid"),type:"set"}).c("query",{xmlns:Zl.NS.MUC_OWNER}).cnode(n.node);return e&&e.length>0&&r.c("reason",e),qc.sendIQ(r)},async leave(e){if(this.features.destroy(),this.occupants.clearStore(),Lc.disco_entities){const e=Lc.disco_entities.get(this.get("jid"));e&&await new Promise((t,n)=>e.destroy({success:t,error:n}))}qc.connection.connected()&&qc.user.presence.send("unavailable",this.getRoomJIDAndNick(),e),Fl.safeSave(this.session,{connection_status:Yc.ROOMSTATUS.DISCONNECTED}),this.removeHandlers()},async close(){return await new Promise(e=>this.session.destroy({success:e,error:(t,n)=>{Pn.error(n),e()}})),await new Promise(e=>this.features.destroy({success:e,error:(t,n)=>{Pn.error(n),e()}})),Lc.ChatBox.prototype.close.call(this)},canModerateMessages(){const e=this.getOwnOccupant();return e&&e.isModerator()&&qc.disco.supports(Zl.NS.MODERATE,this.get("jid"))},getAllKnownNicknames(){return[...new Set([...this.occupants.map(e=>e.get("nick")),...this.messages.map(e=>e.get("nick"))])].filter(e=>e)},getAllKnownNicknamesRegex(){const e=this.getAllKnownNicknames().join("|"),t=Vl.escapeRegexString(e),n=Yc.MENTION_BOUNDARIES.join("|"),r=Vl.escapeRegexString(n);return RegExp("(?:\\s|^)[".concat(r,"]?@(").concat(t,")(?![\\w@-])"),"ig")},getOccupantByJID(e){return this.occupants.findOccupant({jid:e})},getOccupantByNickname(e){return this.occupants.findOccupant({nick:e})},parseTextForReferences(e){if(!e)return["",[]];const t=Vl.matchRegexInText(e);if(!t(Vl.mention_regex))return[e,[]];const n=this.getAllKnownNicknames(),r=Vl.findFirstMatchInArray(n),i=e=>{const t=this.get("jid"),n=this.getOccupant(e)||this.getOccupant(t),r=n&&n.get("jid")||"".concat(t,"/").concat(e);return encodeURI("xmpp:".concat(r))},s=[...t(this.getAllKnownNicknamesRegex())].map(e=>{const t=e[0].indexOf("@"),n=e.index+t,s=n+e[0].length-t,o=r(e[1]);return{begin:n,end:s,value:o,type:"mention",uri:i(o)}}),[o,a]=Vl.reduceTextFromReferences(e,s);return[o,a]},getOutgoingMessageAttributes(e,t){const n=this.get("composing_spoiler"),[r,i]=this.parseTextForReferences(e),s=Fl.getUniqueId(),o=r?Fl.httpToGeoUri(Fl.shortnamesToUnicode(r),Lc):void 0;return{body:o,is_spoiler:n,origin_id:s,references:i,id:s,msgid:s,from:"".concat(this.get("jid"),"/").concat(this.get("nick")),fullname:this.get("nick"),is_only_emojis:!!r&&Fl.isOnlyEmojis(r),message:o,nick:this.get("nick"),sender:"me",spoiler_hint:n?t:void 0,type:"groupchat"}},getRoomJIDAndNick(){const e=this.get("nick");return Zl.getBareJidFromJid(this.get("jid"))+(null!==e?"/".concat(e):"")},sendChatState(){if(!qc.settings.get("send_chat_state_notifications")||!this.get("chat_state")||this.session.get("connection_status")!==Yc.ROOMSTATUS.ENTERED||this.features.get("moderated")&&"visitor"===this.getOwnRole())return;const e=qc.settings.get("send_chat_state_notifications");if(Array.isArray(e)&&!e.includes(this.get("chat_state")))return;const t=this.get("chat_state");t!==Lc.GONE&&qc.send(nu({to:this.get("jid"),type:"groupchat"}).c(t,{xmlns:Zl.NS.CHATSTATES}).up().c("no-store",{xmlns:Zl.NS.HINTS}).up().c("no-permanent-store",{xmlns:Zl.NS.HINTS}))},directInvite(e,t){this.features.get("membersonly")&&this.updateMemberLists([{jid:e,affiliation:"member",reason:t}]);const n={xmlns:"jabber:x:conference",jid:this.get("jid")};null!==t&&(n.reason=t),this.get("password")&&(n.password=this.get("password"));const r=nu({from:Lc.connection.jid,to:e,id:Fl.getUniqueId()}).c("x",n);qc.send(r),qc.trigger("roomInviteSent",{room:this,recipient:e,reason:t})},refreshDiscoInfo(){return qc.disco.refresh(this.get("jid")).then(()=>this.getDiscoInfo()).catch(e=>Pn.error(e))},getDiscoInfo(){return qc.disco.getIdentity("conference","text",this.get("jid")).then(e=>this.save({name:e&&e.get("name")})).then(()=>this.getDiscoInfoFields()).then(()=>this.getDiscoInfoFeatures()).catch(e=>Pn.error(e))},async getDiscoInfoFields(){const e=(await qc.disco.getFields(this.get("jid"))).reduce((e,t)=>{const n=t.get("var");return n&&n.startsWith("muc#roominfo_")&&(e[n.replace("muc#roominfo_","")]=t.get("value")),e},{});this.config.save(e)},async getDiscoInfoFeatures(){const e=await qc.disco.getFeatures(this.get("jid")),t=Object.assign(Nl(Yc.ROOM_FEATURES,Yc.ROOM_FEATURES.map(()=>!1)),{fetched:(new Date).toISOString()});e.each(e=>{const n=e.get("var");n.startsWith("muc_")?t[n.replace("muc_","")]=!0:n===Zl.NS.MAM&&(t.mam_enabled=!0)}),this.features.save(t)},setAffiliation(e,t){return t=t.filter(t=>void 0===t.affiliation||t.affiliation===e),Promise.all(t.map(t=>this.sendAffiliationIQ(e,t)))},addFieldValue(e){const t=e.getAttribute("type");if("fixed"===t)return e;const n=e.getAttribute("var").replace("muc#roomconfig_",""),r=this.get("roomconfig");if(n in r){let i;switch(t){case"boolean":i=[r[n]?1:0];break;case"list-multi":i=r[n];break;default:i=[r[n]]}e.innerHTML=i.map(e=>tu("value").t(e)).join("")}return e},async autoConfigureChatRoom(){const e=await this.fetchRoomConfiguration(),t=iu("field",e).map(e=>this.addFieldValue(e));if(t.length)return this.sendConfiguration(t)},fetchRoomConfiguration(){return qc.sendIQ(eu({to:this.get("jid"),type:"get"}).c("query",{xmlns:Zl.NS.MUC_OWNER}))},sendConfiguration(e=[]){const t=eu({to:this.get("jid"),type:"set"}).c("query",{xmlns:Zl.NS.MUC_OWNER}).c("x",{xmlns:Zl.NS.XFORM,type:"submit"});return e.forEach(e=>t.cnode(e).up()),qc.sendIQ(t)},getOwnRole(){var e,t;return null===(e=this.getOwnOccupant())||void 0===e||null===(t=e.attributes)||void 0===t?void 0:t.role},getOwnAffiliation(){var e,t;return null===(e=this.getOwnOccupant())||void 0===e||null===(t=e.attributes)||void 0===t?void 0:t.affiliation},getOwnOccupant(){return this.occupants.findWhere({jid:Lc.bare_jid})},sendAffiliationIQ(e,t){const n=eu({to:this.get("jid"),type:"set"}).c("query",{xmlns:Zl.NS.MUC_ADMIN}).c("item",{affiliation:t.affiliation||e,nick:t.nick,jid:t.jid});return void 0!==t.reason&&n.c("reason",t.reason),qc.sendIQ(n)},setAffiliations(e){const t=[...new Set(e.map(e=>e.affiliation))];return Promise.all(t.map(t=>this.setAffiliation(t,e)))},setRole(e,t,n,r,i){const s=tu("item",{nick:e.get("nick"),role:t}),o=eu({to:this.get("jid"),type:"set"}).c("query",{xmlns:Zl.NS.MUC_ADMIN}).cnode(s.node);return null!==n&&o.c("reason",n),qc.sendIQ(o).then(r).catch(i)},getOccupant(e){return Fl.isValidJID(e)?this.getOccupantByJID(e):this.getOccupantByNickname(e)},getOccupantsWithRole(e){return this.getOccupantsSortedBy("nick").filter(t=>t.get("role")===e).map(e=>({jid:e.get("jid"),nick:e.get("nick"),role:e.get("role")}))},getOccupantsWithAffiliation(e){return this.getOccupantsSortedBy("nick").filter(t=>t.get("affiliation")===e).map(e=>({jid:e.get("jid"),nick:e.get("nick"),affiliation:e.get("affiliation")}))},getOccupantsSortedBy(e){return Array.from(this.occupants.models).sort((t,n)=>t.get(e)<n.get(e)?-1:t.get(e)>n.get(e)?1:0)},async getAffiliationList(e){const t=eu({to:this.get("jid"),type:"get"}).c("query",{xmlns:Zl.NS.MUC_ADMIN}).c("item",{affiliation:e}),n=await qc.sendIQ(t,null,!1);if(null===n){const t="Error: timeout while fetching ".concat(e," list for MUC ").concat(this.get("jid")),r=new Error(t);return Pn.warn(t),Pn.warn(n),r}if(Fl.isErrorStanza(n)){const t="Error: not allowed to fetch ".concat(e," list for MUC ").concat(this.get("jid")),r=new Error(t);return Pn.warn(t),Pn.warn(n),r}return zl.parseMemberListIQ(n).filter(e=>e).sort((e,t)=>e.nick<t.nick?-1:e.nick>t.nick?1:0)},async updateMemberLists(e){const t=(await Promise.all(["member","admin","owner"].map(e=>this.getAffiliationList(e)))).reduce((e,t)=>Fl.isErrorObject(t)?e:[...t,...e],[]);await this.setAffiliations(zl.computeAffiliationsDelta(!0,!1,e,t)),await this.occupants.fetchMembers()},async getAndPersistNickname(e){return(e=e||this.get("nick")||await this.getReservedNick()||Lc.getDefaultMUCNickname())&&this.save({nick:e},{silent:!0}),e},async getReservedNick(){const e=eu({to:this.get("jid"),from:Lc.connection.jid,type:"get"}).c("query",{xmlns:Zl.NS.DISCO_INFO,node:"x-roomuser-item"}),t=await qc.sendIQ(e,null,!1);if(Fl.isErrorObject(t))throw t;const n=t.querySelector('query[node="x-roomuser-item"] identity');return n?n.getAttribute("name"):null},async registerNickname(){const t=this.get("nick"),n=this.get("jid");let r,i;try{r=await qc.sendIQ(eu({to:n,from:Lc.connection.jid,type:"get"}).c("query",{xmlns:Zl.NS.MUC_REGISTER}))}catch(t){return iu('not-allowed[xmlns="'.concat(Zl.NS.STANZAS,'"]'),t).length?i=e("You're not allowed to register yourself in this groupchat."):iu('registration-required[xmlns="'.concat(Zl.NS.STANZAS,'"]'),t).length&&(i=e("You're not allowed to register in this groupchat because it's members-only.")),Pn.error(t),i}const s=iu("field required",r).map(e=>e.parentElement);if(s.length>1&&"muc#register_roomnick"!==s[0].getAttribute("var"))return Pn.error("Can't register the user register in the groupchat ".concat(n," due to the required fields"));try{await qc.sendIQ(eu({to:n,from:Lc.connection.jid,type:"set"}).c("query",{xmlns:Zl.NS.MUC_REGISTER}).c("x",{xmlns:Zl.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE"}).c("value").t("http://jabber.org/protocol/muc#register").up().up().c("field",{var:"muc#register_roomnick"}).c("value").t(t))}catch(t){return iu('service-unavailable[xmlns="'.concat(Zl.NS.STANZAS,'"]'),t).length?i=e("Can't register your nickname in this groupchat, it doesn't support registration."):iu('bad-request[xmlns="'.concat(Zl.NS.STANZAS,'"]'),t).length&&(i=e("Can't register your nickname in this groupchat, invalid data form supplied.")),Pn.error(i),Pn.error(t),i}},updateOccupantsOnPresence(e){var t,n;const r=ao.parseMUCPresence(e);if("error"===r.type||!r.jid&&!r.nick)return!0;const i=this.occupants.findOccupant(r);if("unavailable"===r.type&&i&&!r.states.includes(Yc.MUC_NICK_CHANGED_CODE)&&!["admin","owner","member"].includes(r.affiliation))return i.set(r),void i.destroy();const s=r.jid||"",o=Object.assign(r,{jid:Zl.getBareJidFromJid(s)||(null==i||null===(t=i.attributes)||void 0===t?void 0:t.jid),resource:Zl.getResourceFromJid(s)||(null==i||null===(n=i.attributes)||void 0===n?void 0:n.resource)});i?i.save(o):this.occupants.create(o)},fetchFeaturesIfConfigurationChanged(e){const t=["104","170","171","172","173","174"];iu("status",e).filter(e=>t.includes(e.getAttribute("status"))).length&&this.refreshDiscoInfo()},isSameUser(e,t){const n=Zl.getBareJidFromJid(e),r=Zl.getBareJidFromJid(t),i=Zl.getResourceFromJid(e),s=Zl.getResourceFromJid(t);if(Fl.isSameBareJID(e,t))return n!==this.get("jid")||i===s;return(n===this.get("jid")?this.occupants.findOccupant({nick:i}):this.occupants.findOccupant({jid:n}))===(r===this.get("jid")?this.occupants.findOccupant({nick:s}):this.occupants.findOccupant({jid:r}))},async isSubjectHidden(){return(await qc.user.settings.get("mucs_with_hidden_subject",[])).includes(this.get("jid"))},async toggleSubjectHiddenState(){const e=this.get("jid"),t=await qc.user.settings.get("mucs_with_hidden_subject",[]);t.includes(this.get("jid"))?qc.user.settings.set("mucs_with_hidden_subject",t.filter(t=>t!==e)):qc.user.settings.set("mucs_with_hidden_subject",[...t,e])},async handleSubjectChange(t){if("string"==typeof t.subject&&!t.thread&&!t.message){const n=t.subject,r=t.nick;if(Fl.safeSave(this,{subject:{author:r,text:t.subject||""}}),!t.is_delayed&&r){const i=e(n?"Topic set by %1$s":"Topic cleared by %1$s",r),s=this.messages.last();(null==s?void 0:s.get("nick"))===t.nick&&"info"===(null==s?void 0:s.get("type"))&&(null==s?void 0:s.get("message"))===i||this.createMessage({message:i,nick:t.nick,type:"info"}),await this.isSubjectHidden()&&this.toggleSubjectHiddenState()}return!0}return!1},setSubject(e=""){qc.send(nu({to:this.get("jid"),from:Lc.connection.jid,type:"groupchat"}).c("subject",{xmlns:"jabber:client"}).t(e).tree())},ignorableCSN(e){return e.chat_state&&!e.body&&(e.is_delayed||this.isOwnMessage(e))},isOwnMessage(e){let t;return t=Mn(e)?e.getAttribute("from"):e instanceof Lc.Message?e.get("from"):e.from,Zl.getResourceFromJid(t)==this.get("nick")},getUpdatedMessageAttributes(e,t){const n=Lc.ChatBox.prototype.getUpdatedMessageAttributes.call(this,e,t);if(this.isOwnMessage(t)){const r=Object.keys(t).filter(e=>e.startsWith("stanza_id"));Object.assign(n,Ms(t,r)),e.get("received")||(n.received=(new Date).toISOString())}return n},async isJoined(){const e=eu({to:"".concat(this.get("jid"),"/").concat(this.get("nick")),type:"get"}).c("ping",{xmlns:Zl.NS.PING});try{await qc.sendIQ(e)}catch(e){return null===e?Pn.error("Timeout error while checking whether we're joined to MUC: ".concat(this.get("jid"))):(Pn.error("Apparently we're no longer connected to MUC: ".concat(this.get("jid"))),Pn.error(e)),!1}return!0},async rejoinIfNecessary(){if(!await this.isJoined())return this.rejoin(),!0},async shouldShowErrorMessage(e){return("not-acceptable"!==e.error_condition||!await this.rejoinIfNecessary())&&Lc.ChatBox.prototype.shouldShowErrorMessage.call(this,e)},findDanglingModeration(e){if(!this.messages.length)return null;if(this.messages.last().get("time")>e.time){const t=Array.from(this.messages.models),n=e["stanza_id ".concat(this.get("jid"))];return n?(t.reverse(),t.find(({attributes:e})=>"retracted"===e.moderated&&e.moderated_id===n&&e.moderated_by)):null}},async handleModeration(e){const t=["editable","moderated","moderated_by","moderated_id","moderation_reason"];if("retracted"===e.moderated){const n={};n["stanza_id ".concat(this.get("jid"))]=e.moderated_id;const r=this.messages.findWhere(n);return r?(r.save(Ms(e,t)),!0):(e.dangling_moderation=!0,await this.createMessage(e),!0)}{const n=this.findDanglingModeration(e);if(n){const r=Ms(n.attributes,t),i=Object.assign({dangling_moderation:!1},e,r);return delete i.id,n.save(i),!0}}return!1},queueMessage(e){var t;return(null===(t=this.messages)||void 0===t?void 0:t.fetched)?(this.msg_chain=this.msg_chain||this.messages.fetched,this.msg_chain=this.msg_chain.then(()=>this.onMessage(e)),this.msg_chain):(this.message_queue.push(e),Promise.resolve())},removeNotification(e,t){const n=this.notifications.toJSON();(t=Array.isArray(t)?t:[t]).forEach(t=>{const r=Array.from(n[t]||[]);if(r.includes(e)){const n=r.indexOf(e);r.splice(n,1),this.notifications.set(t,Array.from(r))}})},updateNotifications(e,t){const n=this.notifications.toJSON(),r=n[t]||[];if(r.includes(e))return;const i=(i,s)=>(i[s]=s===t?[...r,e]:(n[s]||[]).filter(t=>t!==e),i),s=Yc.CHAT_STATES.reduce(i,{}),o=Yc.MUC_TRAFFIC_STATES_LIST.reduce(i,{}),a=Yc.MUC_ROLE_CHANGES_LIST.reduce(i,{});this.notifications.set(Object.assign(s,o,a)),window.setTimeout(()=>this.removeNotification(e,t),1e4)},async onMessage(e){if(e=await e,Fl.isErrorObject(e))return e.stanza&&Pn.error(e.stanza),Pn.error(e.message);const t=this.getDuplicateMessage(e);if(t)return this.updateMessage(t,e);if(!(e.is_valid_receipt_request||e.is_marker||this.ignorableCSN(e))){if(await this.handleRetraction(e)||await this.handleModeration(e)||await this.handleSubjectChange(e))return this.removeNotification(e.nick,["composing","paused"]);if(this.setEditable(e,e.time),e.chat_state&&this.updateNotifications(e.nick,e.chat_state),Fl.shouldCreateGroupchatMessage(e)){const t=this.handleCorrection(e)||await this.createMessage(e);this.removeNotification(e.nick,["composing","paused"]),this.handleUnreadMessage(t)}}},handleModifyError(e){var t;const n=null===(t=e.querySelector("error text"))||void 0===t?void 0:t.textContent;if(n)if(this.session.get("connection_status")===Yc.ROOMSTATUS.CONNECTING)this.setDisconnectionMessage(n);else{const e={type:"error",message:n,is_ephemeral:!0};this.createMessage(e)}},handleDisconnection(e){var t;const n=null!==e.querySelector("status[code='110']"),r=iu('x[xmlns="'.concat(Zl.NS.MUC_USER,'"]'),e).pop();if(!r)return;const i=iu("status",r).map(e=>e.getAttribute("code")),s=Dl(i,Object.keys(Lc.muc.disconnect_messages));if(!(n&&s.length>0))return;const o=r.querySelector("item"),a=o?null===(t=o.querySelector("reason"))||void 0===t?void 0:t.textContent:void 0,c=o?kc(o.querySelector("actor"),"getAttribute","nick"):void 0,l=Lc.muc.disconnect_messages[s[0]];this.setDisconnectionMessage(l,a,c)},getActionInfoMessage:(t,n,r)=>"301"===t?r?e("%1$s has been banned by %2$s",n,r):e("%1$s has been banned",n):"303"===t?e("%1$s's nickname has changed",n):"307"===t?r?e("%1$s has been kicked out by %2$s",n,r):e("%1$s has been kicked out",n):"321"===t?e("%1$s has been removed because of an affiliation change",n):"322"===t?e("%1$s has been removed for not being a member",n):void 0,createAffiliationChangeMessage(t){const n=t._previousAttributes.affiliation;if(!n)return;const r=t.get("affiliation");"admin"===n&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.EXADMIN)?this.createMessage({type:"info",message:e("%1$s is no longer an admin of this groupchat",t.get("nick"))}):"owner"===n&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.EXOWNER)?this.createMessage({type:"info",message:e("%1$s is no longer an owner of this groupchat",t.get("nick"))}):"outcast"===n&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.EXOUTCAST)&&this.createMessage({type:"info",message:e("%1$s is no longer banned from this groupchat",t.get("nick"))}),"none"===r&&"member"===n&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.EXMEMBER)&&this.createMessage({type:"info",message:e("%1$s is no longer a member of this groupchat",t.get("nick"))}),"member"===r&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.MEMBER)?this.createMessage({type:"info",message:e("%1$s is now a member of this groupchat",t.get("nick"))}):("admin"===r&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.ADMIN)||"owner"==r&&Lc.isInfoVisible(Yc.AFFILIATION_CHANGES.OWNER))&&this.createMessage({type:"info",message:e("%1$s is now an %2$s of this groupchat",t.get("nick"),r)})},createRoleChangeMessage(e,t){if("none"===t||e.changed.affiliation)return;const n=e._previousAttributes.role;"moderator"===n&&Lc.isInfoVisible(Yc.MUC_ROLE_CHANGES.DEOP)?this.updateNotifications(e.get("nick"),Yc.MUC_ROLE_CHANGES.DEOP):"visitor"===n&&Lc.isInfoVisible(Yc.MUC_ROLE_CHANGES.VOICE)&&this.updateNotifications(e.get("nick"),Yc.MUC_ROLE_CHANGES.VOICE),"visitor"===e.get("role")&&Lc.isInfoVisible(Yc.MUC_ROLE_CHANGES.MUTE)?this.updateNotifications(e.get("nick"),Yc.MUC_ROLE_CHANGES.MUTE):"moderator"===e.get("role")&&!["owner","admin"].includes(e.get("affiliation"))&&Lc.isInfoVisible(Yc.MUC_ROLE_CHANGES.OP)&&this.updateNotifications(e.get("nick"),Yc.MUC_ROLE_CHANGES.OP)},createInfoMessage(t,n,r){const i={type:"info"};if(Lc.isInfoVisible(t)&&"110"!==t&&("100"!==t||r)){if(t in Lc.muc.info_messages)i.message=Lc.muc.info_messages[t];else if(!r&&Yl.includes(t)){var s,o;const e=Zl.getResourceFromJid(n.getAttribute("from")),r=n.querySelector('x[xmlns="'.concat(Zl.NS.MUC_USER,'"] item'));i.actor=r?null===(s=r.querySelector("actor"))||void 0===s?void 0:s.getAttribute("nick"):void 0,i.reason=r?null===(o=r.querySelector("reason"))||void 0===o?void 0:o.textContent:void 0,i.message=this.getActionInfoMessage(t,e,i.actor)}else if(r&&t in Lc.muc.new_nickname_messages){let s;r&&"210"===t?s=Zl.getResourceFromJid(n.getAttribute("from")):r&&"303"===t&&(s=n.querySelector('x[xmlns="'.concat(Zl.NS.MUC_USER,'"] item')).getAttribute("nick")),this.save("nick",s),i.message=e(Lc.muc.new_nickname_messages[t],s)}if(i.message){if("201"===t&&this.messages.findWhere(i))return;if(t in Lc.muc.info_messages&&this.messages.length&&this.messages.pop().get("message")===i.message)return;this.createMessage(i)}}},createInfoMessages(e){const t=iu('x[xmlns="'.concat(Zl.NS.MUC_USER,'"] status'),e).map(e=>e.getAttribute("code"));t.includes("333")&&t.includes("307")&&t.splice(t.indexOf("307"),1);const n=t.includes("110");t.forEach(t=>this.createInfoMessage(t,e,n))},setDisconnectionMessage(e,t,n){this.save({disconnection_message:e,disconnection_reason:t,disconnection_actor:n}),this.session.save({connection_status:Yc.ROOMSTATUS.DISCONNECTED})},onNicknameClash(t){if(qc.settings.get("muc_nickname_from_jid")){const e=t.getAttribute("from").split("/")[1];if(e===Lc.getDefaultMUCNickname())this.join(e+"-2");else{const t=e.lastIndexOf("-"),n=e.substring(t+1,e.length);this.join(e.substring(0,t+1)+String(Number(n)+1))}}else this.save({nickname_validation_message:e("The nickname you chose is reserved or currently in use, please choose a different one.")}),this.session.save({connection_status:Yc.ROOMSTATUS.NICKNAME_REQUIRED})},onErrorPresence(t){var n;const r=t.querySelector("error"),i=r.getAttribute("type"),s=null===(n=iu('text[xmlns="'.concat(Zl.NS.STANZAS,'"]'),r).pop())||void 0===n?void 0:n.textContent;if("modify"===i)this.handleModifyError(t);else if("auth"===i){if(iu('not-authorized[xmlns="'.concat(Zl.NS.STANZAS,'"]'),r).length&&(this.save({password_validation_message:s||e("Password incorrect")}),this.session.save({connection_status:Yc.ROOMSTATUS.PASSWORD_REQUIRED})),r.querySelector("registration-required")){const t=e("You are not on the member list of this groupchat.");this.setDisconnectionMessage(t,s)}else if(r.querySelector("forbidden")){const t=e("You have been banned from this groupchat.");this.setDisconnectionMessage(t,s)}}else if("cancel"===i)if(r.querySelector("not-allowed")){const t=e("You are not allowed to create new groupchats.");this.setDisconnectionMessage(t,s)}else if(r.querySelector("not-acceptable")){const t=e("Your nickname doesn't conform to this groupchat's policies.");this.setDisconnectionMessage(t,s)}else if(iu('gone[xmlns="'.concat(Zl.NS.STANZAS,'"]'),r).length){var o;const e=null===(o=iu('gone[xmlns="'.concat(Zl.NS.STANZAS,'"]'),r).pop())||void 0===o?void 0:o.textContent.replace(/^xmpp:/,"").replace(/\?join$/,"");this.save({moved_jid:e,destroyed_reason:s}),this.session.save({connection_status:Yc.ROOMSTATUS.DESTROYED})}else if(r.querySelector("conflict"))this.onNicknameClash(t);else if(r.querySelector("item-not-found")){const t=e("This groupchat does not (yet) exist.");this.setDisconnectionMessage(t,s)}else if(r.querySelector("service-unavailable")){const t=e("This groupchat has reached its maximum number of participants.");this.setDisconnectionMessage(t,s)}else if(r.querySelector("remote-server-not-found")){const t=e("Remote server not found"),n=s?e('The explanation given is: "%1$s".',s):void 0;this.setDisconnectionMessage(t,n)}},onPresence(e){if("error"===e.getAttribute("type"))return this.onErrorPresence(e);this.createInfoMessages(e),e.querySelector("status[code='110']")?(this.onOwnPresence(e),"none"!==this.getOwnRole()&&this.session.get("connection_status")===Yc.ROOMSTATUS.CONNECTING&&this.session.save("connection_status",Yc.ROOMSTATUS.CONNECTED)):this.updateOccupantsOnPresence(e)},onOwnPresence(e){if("unavailable"!==e.getAttribute("type")){const t=this.session.get("connection_status");t!==Yc.ROOMSTATUS.ENTERED?(this.session.save("connection_status",Yc.ROOMSTATUS.ENTERED,{silent:!0}),this.updateOccupantsOnPresence(e),this.session.trigger("change:connection_status",this.session,t)):this.updateOccupantsOnPresence(e)}else this.updateOccupantsOnPresence(e);if("unavailable"===e.getAttribute("type"))this.handleDisconnection(e);else{if(e.querySelector("status[code='201']"))if(this.get("auto_configure"))this.autoConfigureChatRoom().then(()=>this.refreshDiscoInfo());else{if(!qc.settings.get("muc_instant_rooms"))return void this.trigger("configurationNeeded");this.sendConfiguration().then(()=>this.refreshDiscoInfo())}else this.features.get("fetched")||("owner"===this.getOwnAffiliation()&&this.get("auto_configure")?this.autoConfigureChatRoom().then(()=>this.refreshDiscoInfo()):this.getDiscoInfo())}this.session.save({connection_status:Yc.ROOMSTATUS.ENTERED})},isUserMentioned(e){const t=this.get("nick");if(e.get("references").length){return e.get("references").filter(e=>"mention"===e.type).map(e=>e.value).includes(t)}return new RegExp("\\b".concat(t,"\\b")).test(e.get("message"))},handleUnreadMessage(e){if((null==e?void 0:e.get("body"))&&Fl.isNewMessage(e))if(this.isHidden()){const t={num_unread_general:this.get("num_unread_general")+1};0===this.get("num_unread_general")&&(t.first_unread_id=e.get("id")),this.isUserMentioned(e)&&(t.num_unread=this.get("num_unread")+1,Lc.incrementMsgCounter()),this.save(t)}else this.sendMarkerForMessage(e)},clearUnreadMsgCounter(){(this.get("num_unread_general")>0||this.get("num_unread")>0)&&this.sendMarkerForMessage(this.messages.last()),Fl.safeSave(this,{num_unread:0,num_unread_general:0})}}),Lc.ChatRoomOccupant=Rs.extend({defaults:{hats:[],show:"offline",states:[]},initialize(e){this.set(Object.assign({id:Fl.getUniqueId()},e)),this.on("change:image_hash",this.onAvatarChanged,this)},onAvatarChanged(){const e=this.get("image_hash"),t=[];this.get("jid")&&t.push(Lc.vcards.findWhere({jid:this.get("jid")})),t.push(Lc.vcards.findWhere({jid:this.get("from")})),t.filter(e=>e).forEach(t=>{e&&t.get("image_hash")!==e&&qc.vcard.update(t,!0)})},getDisplayName(){return this.get("nick")||this.get("jid")},isMember(){return["admin","owner","member"].includes(this.get("affiliation"))},isModerator(){return["admin","owner"].includes(this.get("affiliation"))||"moderator"===this.get("role")},isSelf(){return this.get("states").includes("110")}}),Lc.ChatRoomOccupants=Yo.extend({model:Lc.ChatRoomOccupant,comparator(e,t){const n=e.get("role")||"none",r=t.get("role")||"none";if(Kl[n]===Kl[r]){const n=e.getDisplayName().toLowerCase(),r=t.getDisplayName().toLowerCase();return n<r?-1:n>r?1:0}return Kl[n]<Kl[r]?-1:1},getAutoFetchedAffiliationLists(){const e=qc.settings.get("muc_fetch_members");return Array.isArray(e)?e:e?["member","admin","owner"]:[]},async fetchMembers(){const e=this.getAutoFetchedAffiliationLists();if(0===e.length)return;const t=await Promise.all(e.map(e=>this.chatroom.getAffiliationList(e))),n=t.reduce((e,t)=>Fl.isErrorObject(t)?e:[...t,...e],[]),r=e.filter(n=>!Fl.isErrorObject(t[e.indexOf(n)])),i=n.map(e=>e.jid).filter(e=>void 0!==e),s=n.map(e=>!e.jid&&e.nick||void 0).filter(e=>void 0!==e);this.filter(e=>r.includes(e.get("affiliation"))&&!s.includes(e.get("nick"))&&!i.includes(e.get("jid"))).forEach(e=>{e.get("jid")!==Lc.bare_jid&&("offline"===e.get("show")?e.destroy():e.save("affiliation",null))}),n.forEach(e=>{const t=e.jid?this.findOccupant({jid:e.jid}):this.findOccupant({nick:e.nick});t?t.save(e):this.create(e)}),qc.trigger("membersFetched")},findOccupant(e){const t=Zl.getBareJidFromJid(e.jid);return t&&this.findWhere({jid:t})||this.findWhere({nick:e.nick})}}),Lc.RoomsPanelModel=Rs.extend({defaults:function(){return{muc_domain:qc.settings.get("muc_domain"),nick:Lc.getDefaultMUCNickname()}},setDomain(e){qc.settings.get("locked_muc_domain")||this.save("muc_domain",Zl.getDomainFromJid(e))}}),Lc.onDirectMUCInvitation=async function(t){const n=iu('x[xmlns="jabber:x:conference"]',t).pop(),r=Zl.getBareJidFromJid(t.getAttribute("from")),i=n.getAttribute("jid"),s=n.getAttribute("reason");let o;if(qc.settings.get("auto_join_on_invite"))o=!0;else{let t=Lc.roster.get(r);t=t?t.getDisplayName():r,o=s?confirm(e('%1$s has invited you to join a groupchat: %2$s, and left the following reason: "%3$s"',t,i,s)):confirm(e("%1$s has invited you to join a groupchat: %2$s",t,i))}if(!0===o){(await async function(e,t){t.type=Lc.CHATROOMS_TYPE,t.id=e;const n=await qc.rooms.get(e,t,!0);return n.maybeShow(!0),n}(i,{password:n.getAttribute("password")})).session.get("connection_status")===Yc.ROOMSTATUS.DISCONNECTED&&Lc.chatboxes.get(i).rejoin()}},qc.settings.get("allow_muc_invitations")){const e=function(){Lc.connection.addHandler(e=>(Lc.onDirectMUCInvitation(e),!0),"jabber:x:conference","message")};qc.listen.on("connected",e),qc.listen.on("reconnected",e)}function r(){return Lc.chatboxes.filter(e=>e.get("type")===Lc.CHATROOMS_TYPE).forEach(e=>e.session.save({connection_status:Yc.ROOMSTATUS.DISCONNECTED}))}qc.listen.on("beforeTearDown",()=>{Lc.chatboxes.where({type:Lc.CHATROOMS_TYPE}).forEach(e=>Fl.safeSave(e.session,{connection_status:Yc.ROOMSTATUS.DISCONNECTED}))}),qc.listen.on("windowStateChanged",(async function(e){if("visible"===e.state&&qc.connection.connected()){(await qc.rooms.get()).forEach(e=>e.rejoinIfNecessary())}})),qc.listen.on("addClientFeatures",()=>{qc.settings.get("allow_muc")&&qc.disco.own.features.add(Zl.NS.MUC),qc.settings.get("allow_muc_invitations")&&qc.disco.own.features.add("jabber:x:conference")}),qc.listen.on("chatBoxesFetched",(async function(){await Promise.all(qc.settings.get("auto_join_rooms").map(e=>"string"==typeof e?Lc.chatboxes.where({jid:e}).length?Promise.resolve():qc.rooms.open(e):N(e)?qc.rooms.open(e.jid,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Gl(Object(n),!0).forEach((function(t){Jl(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},e)):(Pn.error('Invalid muc criteria specified for "auto_join_rooms"'),Promise.resolve()))),qc.trigger("roomsAutoJoined")})),qc.listen.on("beforeResourceBinding",()=>{Lc.connection.addHandler(e=>{const t=Zl.getBareJidFromJid(e.getAttribute("from"));return Lc.chatboxes.get(t)||qc.waitUntil("chatBoxesFetched").then(async()=>{const n=Lc.chatboxes.get(t);n&&(await n.initialized,await n.messages.fetched,n.message_handler.run(e))}),!0},null,"message","groupchat")}),qc.listen.on("disconnected",r),qc.listen.on("statusInitialized",()=>{window.addEventListener(Lc.unloadevent,()=>{!qc.connection.isType("websocket")||qc.settings.get("enable_smacks")&&Lc.session.get("smacks_stream_id")||r()})}),Yc.env.muc_utils=zl,Object.assign(qc,{rooms:{create(e,t={}){if(!(t="string"==typeof t?{nick:t}:t||{}).nick&&qc.settings.get("muc_nickname_from_jid")&&(t.nick=Zl.getNodeFromJid(Lc.bare_jid)),void 0===e)throw new TypeError("rooms.create: You need to provide at least one JID");return"string"==typeof e?qc.rooms.get(Fl.getJIDFromURI(e),t,!0):e.map(e=>qc.rooms.get(Fl.getJIDFromURI(e),t,!0))},async open(e,t,n=!1){if(await qc.waitUntil("chatBoxesFetched"),void 0===e){const e="rooms.open: You need to provide at least one JID";throw Pn.error(e),new TypeError(e)}if("string"==typeof e){const r=await qc.rooms.get(e,t,!0);return r&&r.maybeShow(n),r}{const r=await Promise.all(e.map(e=>qc.rooms.get(e,t,!0)));return r.forEach(e=>e.maybeShow(n)),r}},async get(e,t={},n=!1){async function r(e){e=Fl.getJIDFromURI(e);let r=await qc.chatboxes.get(e);return!r&&n?r=await qc.chatboxes.create(e,t,Lc.ChatRoom):(r=r&&r.get("type")===Lc.CHATROOMS_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await qc.chatboxes.get()).filter(e=>e.get("type")===Lc.CHATROOMS_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}})}}); + */ +const hu=["moderator","participant","visitor"],fu=["owner","admin","member","outcast","none"];rl.AFFILIATION_CHANGES={OWNER:"owner",ADMIN:"admin",MEMBER:"member",EXADMIN:"exadmin",EXOWNER:"exowner",EXOUTCAST:"exoutcast",EXMEMBER:"exmember"},rl.AFFILIATION_CHANGES_LIST=Object.values(rl.AFFILIATION_CHANGES),rl.MUC_TRAFFIC_STATES={ENTERED:"entered",EXITED:"exited"},rl.MUC_TRAFFIC_STATES_LIST=Object.values(rl.MUC_TRAFFIC_STATES),rl.MUC_ROLE_CHANGES={OP:"op",DEOP:"deop",VOICE:"voice",MUTE:"mute"},rl.MUC_ROLE_CHANGES_LIST=Object.values(rl.MUC_ROLE_CHANGES),rl.MUC_INFO_CODES={visibility_changes:["100","102","103","172","173","174"],self:["110"],non_privacy_changes:["104","201"],muc_logging_changes:["170","171"],nickname_changes:["210","303"],disconnect_messages:["301","307","321","322","332","333"],affiliation_changes:[...rl.AFFILIATION_CHANGES_LIST],join_leave_events:[...rl.MUC_TRAFFIC_STATES_LIST],role_changes:[...rl.MUC_ROLE_CHANGES_LIST]};const{Strophe:pu,sizzle:gu}=rl.env;function mu(){return Uc.chatboxes.filter(e=>e.get("type")===Uc.CHATROOMS_TYPE).forEach(e=>e.session.save({connection_status:rl.ROOMSTATUS.DISCONNECTED}))}async function vu(e){if("visible"===e.state&&Vc.connection.connected()){(await Vc.rooms.get()).forEach(e=>e.rejoinIfNecessary())}}async function _u(e){if(!Kl.isValidMUCJID(e))return zn.warn('invalid jid "'.concat(e,'" provided in url fragment'));await Vc.waitUntil("roomsAutoJoined"),Vc.settings.get("allow_bookmarks")&&await Vc.waitUntil("bookmarksInitialized"),Vc.rooms.open(e)}async function bu(){await Promise.all(Vc.settings.get("auto_join_rooms").map(e=>"string"==typeof e?Uc.chatboxes.where({jid:e}).length?Promise.resolve():Vc.rooms.open(e):N(e)?Vc.rooms.open(e.jid,{...e}):(zn.error('Invalid muc criteria specified for "auto_join_rooms"'),Promise.resolve()))),Vc.trigger("roomsAutoJoined")}pu.addNamespace("MUC_ADMIN",pu.NS.MUC+"#admin"),pu.addNamespace("MUC_OWNER",pu.NS.MUC+"#owner"),pu.addNamespace("MUC_REGISTER","jabber:iq:register"),pu.addNamespace("MUC_ROOMCONF",pu.NS.MUC+"#roomconfig"),pu.addNamespace("MUC_USER",pu.NS.MUC+"#user"),pu.addNamespace("MUC_HATS","xmpp:prosody.im/protocol/hats:1"),rl.MUC_NICK_CHANGED_CODE="303",rl.ROOM_FEATURES=["passwordprotected","unsecured","hidden","publicroom","membersonly","open","persistent","temporary","nonanonymous","semianonymous","moderated","unmoderated","mam_enabled"],rl.ROOMSTATUS={CONNECTED:0,CONNECTING:1,NICKNAME_REQUIRED:2,PASSWORD_REQUIRED:3,DISCONNECTED:4,ENTERED:5,DESTROYED:6},rl.plugins.add("converse-muc",{dependencies:["converse-chatboxes","converse-chat","converse-disco","converse-controlbox"],overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e&&e.type==n.CHATROOMS_TYPE?new n.ChatRoom(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){const{__:e,___:t}=Uc;if(Vc.settings.extend({allow_muc:!0,allow_muc_invitations:!0,auto_join_on_invite:!1,auto_join_rooms:[],auto_register_muc_nickname:!1,hide_muc_participants:!1,locked_muc_domain:!1,muc_domain:void 0,muc_fetch_members:!0,muc_history_max_stanzas:void 0,muc_instant_rooms:!0,muc_nickname_from_jid:!1,muc_send_probes:!1,muc_show_info_messages:[...rl.MUC_INFO_CODES.visibility_changes,...rl.MUC_INFO_CODES.self,...rl.MUC_INFO_CODES.non_privacy_changes,...rl.MUC_INFO_CODES.muc_logging_changes,...rl.MUC_INFO_CODES.nickname_changes,...rl.MUC_INFO_CODES.disconnect_messages,...rl.MUC_INFO_CODES.affiliation_changes,...rl.MUC_INFO_CODES.join_leave_events,...rl.MUC_INFO_CODES.role_changes],muc_show_logs_before_join:!1}),Vc.promises.add(["roomsAutoJoined"]),Vc.settings.get("locked_muc_domain")&&"string"!=typeof Vc.settings.get("muc_domain"))throw new Error("Config Error: it makes no sense to set locked_muc_domain to true when muc_domain is not set");if(rl.env.muc_utils=Vl,Object.assign(Vc,du),Uc.muc={info_messages:{100:e("This groupchat is not anonymous"),102:e("This groupchat now shows unavailable members"),103:e("This groupchat does not show unavailable members"),104:e("The groupchat configuration has changed"),170:e("Groupchat logging is now enabled"),171:e("Groupchat logging is now disabled"),172:e("This groupchat is now no longer anonymous"),173:e("This groupchat is now semi-anonymous"),174:e("This groupchat is now fully-anonymous"),201:e("A new groupchat has been created")},new_nickname_messages:{210:t("Your nickname has been automatically set to %1$s"),303:t("Your nickname has been changed to %1$s")},disconnect_messages:{301:e("You have been banned from this groupchat"),333:e("You have exited this groupchat due to a technical problem"),307:e("You have been kicked from this groupchat"),321:e("You have been removed from this groupchat because of an affiliation change"),322:e("You have been removed from this groupchat because the groupchat has changed to members-only and you're not a member"),332:e("You have been removed from this groupchat because the service hosting it is being shut down")}},Uc.isInfoVisible=function(e){return!!Vc.settings.get("muc_show_info_messages").includes(e)},Uc.router.route("converse/room?jid=:jid",_u),Uc.ChatRoom=Uc.ChatBox.extend(au),Uc.ChatRoomMessage=Uc.Message.extend($l),Uc.ChatRoomOccupants=uu,Uc.ChatRoomOccupant=cu,Uc.getDefaultMUCNickname=function(){if(!Uc.xmppstatus)throw new Error("Can't call _converse.getDefaultMUCNickname before the statusInitialized has been fired.");const e=Uc.xmppstatus.getNickname();return e||(Vc.settings.get("muc_nickname_from_jid")?pu.unescapeNode(pu.getNodeFromJid(Uc.bare_jid)):void 0)},Uc.ChatRoomMessages=ra.extend({model:Uc.ChatRoomMessage,comparator:"time"}),Uc.RoomsPanelModel=qo.extend({defaults:function(){return{muc_domain:Vc.settings.get("muc_domain"),nick:Uc.getDefaultMUCNickname()}},setDomain(e){Vc.settings.get("locked_muc_domain")||this.save("muc_domain",pu.getDomainFromJid(e))}}),Uc.onDirectMUCInvitation=async function(t){const n=gu('x[xmlns="jabber:x:conference"]',t).pop(),r=pu.getBareJidFromJid(t.getAttribute("from")),i=n.getAttribute("jid"),o=n.getAttribute("reason");let s;if(Vc.settings.get("auto_join_on_invite"))s=!0;else{let t=Uc.roster.get(r);t=t?t.getDisplayName():r,s=o?confirm(e('%1$s has invited you to join a groupchat: %2$s, and left the following reason: "%3$s"',t,i,o)):confirm(e("%1$s has invited you to join a groupchat: %2$s",t,i))}if(!0===s){(await async function(e,t){t.type=Uc.CHATROOMS_TYPE,t.id=e;const n=await Vc.rooms.get(e,t,!0);return n.maybeShow(!0),n}(i,{password:n.getAttribute("password")})).session.get("connection_status")===rl.ROOMSTATUS.DISCONNECTED&&Uc.chatboxes.get(i).rejoin()}},Vc.settings.get("allow_muc_invitations")){const e=function(){Uc.connection.addHandler(e=>(Uc.onDirectMUCInvitation(e),!0),"jabber:x:conference","message")};Vc.listen.on("connected",e),Vc.listen.on("reconnected",e)}Vc.listen.on("beforeTearDown",()=>{Uc.chatboxes.where({type:Uc.CHATROOMS_TYPE}).forEach(e=>Kl.safeSave(e.session,{connection_status:rl.ROOMSTATUS.DISCONNECTED}))}),Vc.listen.on("windowStateChanged",vu),Vc.listen.on("addClientFeatures",()=>{Vc.settings.get("allow_muc")&&Vc.disco.own.features.add(pu.NS.MUC),Vc.settings.get("allow_muc_invitations")&&Vc.disco.own.features.add("jabber:x:conference")}),Vc.listen.on("chatBoxesFetched",bu),Vc.listen.on("beforeResourceBinding",()=>{Uc.connection.addHandler(e=>{const t=pu.getBareJidFromJid(e.getAttribute("from"));return Uc.chatboxes.get(t)||Vc.waitUntil("chatBoxesFetched").then(async()=>{const n=Uc.chatboxes.get(t);n&&(await n.initialized,n.message_handler.run(e))}),!0},null,"message","groupchat")}),Vc.listen.on("disconnected",mu),Vc.listen.on("statusInitialized",()=>{window.addEventListener(Uc.unloadevent,()=>{!Vc.connection.isType("websocket")||Vc.settings.get("enable_smacks")&&Uc.session.get("smacks_stream_id")||mu()})})}}); /** * @module converse-bookmarks * @description @@ -286,31 +294,31 @@ const{Strophe:Pl,sizzle:Ll}=Yc.env;var zl={computeAffiliationsDelta(e,t,n,r){con * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:su,$iq:ou,sizzle:au}=Yc.env,cu=Yc.env.utils;Yc.plugins.add("converse-bookmarks",{dependencies:["converse-chatboxes","converse-muc"],overrides:{ChatRoom:{getDisplayName(){const{_converse:e}=this.__super__;if(this.get("bookmarked")&&e.bookmarks){const t=e.bookmarks.findWhere({jid:this.get("jid")});if(t)return t.get("name")}return this.__super__.getDisplayName.apply(this,arguments)},getAndPersistNickname(e){const{_converse:t}=this.__super__;return e=e||t.getNicknameFromBookmark(this.get("jid")),this.__super__.getAndPersistNickname.call(this,e)}}},initialize(){const{__:e}=Lc;qc.settings.extend({allow_bookmarks:!0,allow_public_bookmarks:!1,muc_respect_autojoin:!0}),qc.promises.add("bookmarksInitialized"),Lc.getNicknameFromBookmark=function(e){if(!Lc.bookmarks||!qc.settings.get("allow_bookmarks"))return null;const t=Lc.bookmarks.findWhere({jid:e});return t?t.get("nick"):void 0},Lc.Bookmark=Rs.extend({getDisplayName(){return su.xmlunescape(this.get("name"))}}),Lc.Bookmarks=Yo.extend({model:Lc.Bookmark,comparator:e=>e.get("name").toLowerCase(),initialize(){this.on("add",e=>this.openBookmarkedRoom(e).then(e=>this.markRoomAsBookmarked(e)).catch(e=>Pn.fatal(e))),this.on("remove",this.markRoomAsUnbookmarked,this),this.on("remove",this.sendBookmarkStanza,this);const e="converse.room-bookmarks".concat(Lc.bare_jid);this.fetched_flag=e+"fetched",this.browserStorage=Lc.createStore(e)},async openBookmarkedRoom(e){if(qc.settings.get("muc_respect_autojoin")&&e.get("autojoin")){(await qc.rooms.create(e.get("jid"),{nick:e.get("nick")})).maybeShow()}return e},fetchBookmarks(){const e=cu.getResolveablePromise();return window.sessionStorage.getItem(this.fetched_flag)?this.fetch({success:()=>e.resolve(),error:()=>e.resolve()}):this.fetchBookmarksFromServer(e),e},createBookmark(e){this.create(e),this.sendBookmarkStanza().catch(t=>this.onBookmarkError(t,e))},sendBookmarkStanza(){const e=ou({type:"set",from:Lc.connection.jid}).c("pubsub",{xmlns:su.NS.PUBSUB}).c("publish",{node:"storage:bookmarks"}).c("item",{id:"current"}).c("storage",{xmlns:"storage:bookmarks"});return this.forEach(t=>{e.c("conference",{name:t.get("name"),autojoin:t.get("autojoin"),jid:t.get("jid")}).c("nick").t(t.get("nick")).up().up()}),e.up().up().up(),e.c("publish-options").c("x",{xmlns:su.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t("http://jabber.org/protocol/pubsub#publish-options").up().up().c("field",{var:"pubsub#persist_items"}).c("value").t("true").up().up().c("field",{var:"pubsub#access_model"}).c("value").t("whitelist"),qc.sendIQ(e)},onBookmarkError(t,n){Pn.error("Error while trying to add bookmark"),Pn.error(t),qc.alert("error",e("Error"),[e("Sorry, something went wrong while trying to save your bookmark.")]),this.findWhere({jid:n.jid}).destroy()},fetchBookmarksFromServer(e){const t=ou({from:Lc.connection.jid,type:"get"}).c("pubsub",{xmlns:su.NS.PUBSUB}).c("items",{node:"storage:bookmarks"});qc.sendIQ(t).then(t=>this.onBookmarksReceived(e,t)).catch(t=>this.onBookmarksReceivedError(e,t))},markRoomAsBookmarked(e){const t=Lc.chatboxes.get(e.get("jid"));void 0!==t&&t.save("bookmarked",!0)},markRoomAsUnbookmarked(e){const t=Lc.chatboxes.get(e.get("jid"));void 0!==t&&t.save("bookmarked",!1)},createBookmarksFromStanza(e){au('items[node="storage:bookmarks"] item storage[xmlns="storage:bookmarks"] conference',e).forEach(e=>{var t;const n=e.getAttribute("jid");this.create({jid:n,name:e.getAttribute("name")||n,autojoin:"true"===e.getAttribute("autojoin"),nick:(null===(t=e.querySelector("nick"))||void 0===t?void 0:t.textContent)||""})})},onBookmarksReceived(e,t){if(this.createBookmarksFromStanza(t),window.sessionStorage.setItem(this.fetched_flag,!0),void 0!==e)return e.resolve()},onBookmarksReceivedError(t,n){if(null===n)Pn.error("Error: timeout while fetching bookmarks"),qc.alert("error",e("Timeout Error"),[e("The server did not return your bookmarks within the allowed time. You can reload the page to request them again.")]);else{if(t)return n.querySelector('error[type="cancel"] item-not-found')?(window.sessionStorage.setItem(this.fetched_flag,!0),t.resolve()):(Pn.error("Error while fetching bookmarks"),Pn.error(n),t.reject(new Error("Could not fetch bookmarks")));Pn.error("Error while fetching bookmarks"),Pn.error(n)}},getUnopenedBookmarks(){return this.filter(e=>!Lc.chatboxes.get(e.get("jid")))}}),Lc.BookmarksList=Rs.extend({defaults:{"toggle-state":Lc.OPENED}}),Lc.checkBookmarksSupport=async function(){const e=await qc.disco.getIdentity("pubsub","pep",Lc.bare_jid);return Lc.allow_public_bookmarks?!!e:qc.disco.supports(su.NS.PUBSUB+"#publish-options",Lc.bare_jid)};const t=async function(){qc.settings.get("allow_bookmarks")&&await Lc.checkBookmarksSupport()&&(Lc.bookmarks=new Lc.Bookmarks,await Lc.bookmarks.fetchBookmarks(),qc.trigger("bookmarksInitialized"))};qc.listen.on("clearSession",()=>{void 0!==Lc.bookmarks&&(Lc.bookmarks.clearStore({silent:!0}),window.sessionStorage.removeItem(Lc.bookmarks.fetched_flag),delete Lc.bookmarks)}),qc.listen.on("reconnected",t),qc.listen.on("connected",async()=>{Lc.connection.addHandler(e=>{au('event[xmlns="'+su.NS.PUBSUB+'#event"] items[node="storage:bookmarks"]',e).length&&qc.waitUntil("bookmarksInitialized").then(()=>Lc.bookmarks.createBookmarksFromStanza(e)).catch(e=>Pn.fatal(e))},null,"message","headline",null,Lc.bare_jid),await Promise.all([qc.waitUntil("chatBoxesFetched")]),t()})}});n(115); +const{Strophe:yu,$iq:wu,sizzle:Su}=rl.env,xu=rl.env.utils;function Eu(e){return Su('event[xmlns="'.concat(yu.NS.PUBSUB,'#event"] items[node="').concat(yu.NS.BOOKMARKS,'"]'),e).length&&Vc.waitUntil("bookmarksInitialized").then(()=>Uc.bookmarks.createBookmarksFromStanza(e)).catch(e=>zn.fatal(e)),!0}yu.addNamespace("BOOKMARKS","storage:bookmarks"),rl.plugins.add("converse-bookmarks",{dependencies:["converse-chatboxes","converse-muc"],overrides:{ChatRoom:{getDisplayName(){const{_converse:e}=this.__super__;if(this.get("bookmarked")&&e.bookmarks){const t=e.bookmarks.findWhere({jid:this.get("jid")});if(t)return t.get("name")}return this.__super__.getDisplayName.apply(this,arguments)},getAndPersistNickname(e){const{_converse:t}=this.__super__;return e=e||t.getNicknameFromBookmark(this.get("jid")),this.__super__.getAndPersistNickname.call(this,e)}}},initialize(){const{__:e}=Uc;Vc.settings.extend({allow_bookmarks:!0,allow_public_bookmarks:!1,muc_respect_autojoin:!0}),Vc.promises.add("bookmarksInitialized"),Uc.getNicknameFromBookmark=function(e){if(!Uc.bookmarks||!Vc.settings.get("allow_bookmarks"))return null;const t=Uc.bookmarks.findWhere({jid:e});return t?t.get("nick"):void 0},Uc.Bookmark=qo.extend({idAttribute:"jid",getDisplayName(){return yu.xmlunescape(this.get("name"))}}),Uc.Bookmarks=ra.extend({model:Uc.Bookmark,comparator:e=>e.get("name").toLowerCase(),initialize(){this.on("add",e=>this.openBookmarkedRoom(e).then(e=>this.markRoomAsBookmarked(e)).catch(e=>zn.fatal(e))),this.on("remove",this.markRoomAsUnbookmarked,this),this.on("remove",this.sendBookmarkStanza,this);const e="converse.room-bookmarks".concat(Uc.bare_jid);this.fetched_flag=e+"fetched",this.browserStorage=Uc.createStore(e)},async openBookmarkedRoom(e){if(Vc.settings.get("muc_respect_autojoin")&&e.get("autojoin")){(await Vc.rooms.create(e.get("jid"),{nick:e.get("nick")})).maybeShow()}return e},fetchBookmarks(){const e=xu.getResolveablePromise();return window.sessionStorage.getItem(this.fetched_flag)?this.fetch({success:()=>e.resolve(),error:()=>e.resolve()}):this.fetchBookmarksFromServer(e),e},createBookmark(e){this.create(e),this.sendBookmarkStanza().catch(t=>this.onBookmarkError(t,e))},sendBookmarkStanza(){const e=wu({type:"set",from:Uc.connection.jid}).c("pubsub",{xmlns:yu.NS.PUBSUB}).c("publish",{node:yu.NS.BOOKMARKS}).c("item",{id:"current"}).c("storage",{xmlns:yu.NS.BOOKMARKS});return this.forEach(t=>{e.c("conference",{name:t.get("name"),autojoin:t.get("autojoin"),jid:t.get("jid")}).c("nick").t(t.get("nick")).up().up()}),e.up().up().up(),e.c("publish-options").c("x",{xmlns:yu.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t("http://jabber.org/protocol/pubsub#publish-options").up().up().c("field",{var:"pubsub#persist_items"}).c("value").t("true").up().up().c("field",{var:"pubsub#access_model"}).c("value").t("whitelist"),Vc.sendIQ(e)},onBookmarkError(t,n){zn.error("Error while trying to add bookmark"),zn.error(t),Vc.alert("error",e("Error"),[e("Sorry, something went wrong while trying to save your bookmark.")]),this.findWhere({jid:n.jid}).destroy()},fetchBookmarksFromServer(e){const t=wu({from:Uc.connection.jid,type:"get"}).c("pubsub",{xmlns:yu.NS.PUBSUB}).c("items",{node:yu.NS.BOOKMARKS});Vc.sendIQ(t).then(t=>this.onBookmarksReceived(e,t)).catch(t=>this.onBookmarksReceivedError(e,t))},markRoomAsBookmarked(e){const t=Uc.chatboxes.get(e.get("jid"));void 0!==t&&t.save("bookmarked",!0)},markRoomAsUnbookmarked(e){const t=Uc.chatboxes.get(e.get("jid"));void 0!==t&&t.save("bookmarked",!1)},createBookmarksFromStanza(e){const t=yu.NS.BOOKMARKS,n='items[node="'.concat(t,'"] item storage[xmlns="').concat(t,'"] conference');Su(n,e).forEach(e=>{var t;const n=e.getAttribute("jid"),r=this.get(n),i={jid:n,name:e.getAttribute("name")||n,autojoin:"true"===e.getAttribute("autojoin"),nick:(null===(t=e.querySelector("nick"))||void 0===t?void 0:t.textContent)||""};r?r.save(i):this.create(i)})},onBookmarksReceived(e,t){if(this.createBookmarksFromStanza(t),window.sessionStorage.setItem(this.fetched_flag,!0),void 0!==e)return e.resolve()},onBookmarksReceivedError(t,n){if(null===n)zn.error("Error: timeout while fetching bookmarks"),Vc.alert("error",e("Timeout Error"),[e("The server did not return your bookmarks within the allowed time. You can reload the page to request them again.")]);else{if(t)return n.querySelector('error[type="cancel"] item-not-found')?(window.sessionStorage.setItem(this.fetched_flag,!0),t.resolve()):(zn.error("Error while fetching bookmarks"),zn.error(n),t.reject(new Error("Could not fetch bookmarks")));zn.error("Error while fetching bookmarks"),zn.error(n)}},getUnopenedBookmarks(){return this.filter(e=>!Uc.chatboxes.get(e.get("jid")))}}),Uc.BookmarksList=qo.extend({defaults:{"toggle-state":Uc.OPENED}}),Uc.checkBookmarksSupport=async function(){const e=await Vc.disco.getIdentity("pubsub","pep",Uc.bare_jid);return Uc.allow_public_bookmarks?!!e:Vc.disco.supports(yu.NS.PUBSUB+"#publish-options",Uc.bare_jid)};const t=async function(){Vc.settings.get("allow_bookmarks")&&await Uc.checkBookmarksSupport()&&(Uc.bookmarks=new Uc.Bookmarks,await Uc.bookmarks.fetchBookmarks(),Vc.trigger("bookmarksInitialized"))};Vc.listen.on("addClientFeatures",()=>{Vc.settings.get("allow_bookmarks")&&Vc.disco.own.features.add(yu.NS.BOOKMARKS+"+notify")}),Vc.listen.on("clearSession",()=>{void 0!==Uc.bookmarks&&(Uc.bookmarks.clearStore({silent:!0}),window.sessionStorage.removeItem(Uc.bookmarks.fetched_flag),delete Uc.bookmarks)}),Vc.listen.on("reconnected",t),Vc.listen.on("connected",async()=>{const{connection:e}=Uc;e.addHandler(Eu,null,"message","headline",null,Uc.bare_jid),await Promise.all([Vc.waitUntil("chatBoxesFetched")]),t()})}});n(154); /** * @module converse-bosh * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description Converse.js plugin which add support for XEP-0206: XMPP Over BOSH - */const{Strophe:lu}=Yc.env;Yc.plugins.add("converse-bosh",{enabled:()=>!Lc.api.settings.get("blacklisted_plugins").includes("converse-bosh"),initialize(){qc.settings.extend({bosh_service_url:void 0,prebind_url:null}),Lc.startNewPreboundBOSHSession=function(){if(!qc.settings.get("prebind_url"))throw new Error("startNewPreboundBOSHSession: If you use prebind then you MUST supply a prebind_url");const e=new XMLHttpRequest;e.open("GET",qc.settings.get("prebind_url"),!0),e.setRequestHeader("Accept","application/json, text/javascript"),e.onload=async function(){if(e.status>=200&&e.status<400){const t=JSON.parse(e.responseText),n=await Lc.setUserJID(t.jid);Lc.connection.attach(n,t.sid,t.rid,Lc.connection.onConnectStatusChanged)}else e.onerror()},e.onerror=function(){delete Lc.connection,qc.trigger("noResumeableBOSHSession",Lc)},e.send()},Lc.restoreBOSHSession=async function(){const e=(await async function(){const e="converse.bosh-session";if(Lc.bosh_session||(Lc.bosh_session=new Rs({id:e}),Lc.bosh_session.browserStorage=Lc.createStore(e,"session"),await new Promise(e=>Lc.bosh_session.fetch({success:e,error:e}))),Lc.jid){if(Lc.bosh_session.get("jid")!==Lc.jid){const e=await Lc.setUserJID(Lc.jid);Lc.bosh_session.clear({silent:!0}),Lc.bosh_session.save({jid:e})}}else{const e=Lc.bosh_session.get("jid");e&&await Lc.setUserJID(e)}return Lc.bosh_session}()).get("jid");if(e&&Lc.connection._proto instanceof lu.Bosh)try{return Lc.connection.restore(e,Lc.connection.onConnectStatusChanged),!0}catch(t){return!Lc.isTestEnv()&&Pn.warn("Could not restore session for jid: "+e+" Error message: "+t.message),!1}return!1},qc.listen.on("clearSession",()=>{if(void 0===Lc.bosh_session){const e="converse.bosh-session";sessionStorage.removeItem(e),sessionStorage.removeItem("".concat(e,"-").concat(e))}else Lc.bosh_session.destroy(),delete Lc.bosh_session}),qc.listen.on("setUserJID",()=>{void 0!==Lc.bosh_session&&Lc.bosh_session.save({jid:Lc.jid})}),qc.listen.on("addClientFeatures",()=>qc.disco.own.features.add(lu.NS.BOSH)),Object.assign(qc,{tokens:{get:e=>void 0===Lc.connection?null:"rid"===e.toLowerCase()?Lc.connection.rid||Lc.connection._proto.rid:"sid"===e.toLowerCase()?Lc.connection.sid||Lc.connection._proto.sid:void 0}})}});var uu=n(7); + */const{Strophe:Au}=rl.env;rl.plugins.add("converse-bosh",{enabled:()=>!Uc.api.settings.get("blacklisted_plugins").includes("converse-bosh"),initialize(){Vc.settings.extend({bosh_service_url:void 0,prebind_url:null}),Uc.startNewPreboundBOSHSession=function(){if(!Vc.settings.get("prebind_url"))throw new Error("startNewPreboundBOSHSession: If you use prebind then you MUST supply a prebind_url");const e=new XMLHttpRequest;e.open("GET",Vc.settings.get("prebind_url"),!0),e.setRequestHeader("Accept","application/json, text/javascript"),e.onload=async function(){if(e.status>=200&&e.status<400){const t=JSON.parse(e.responseText),n=await Uc.setUserJID(t.jid);Uc.connection.attach(n,t.sid,t.rid,Uc.connection.onConnectStatusChanged)}else e.onerror()},e.onerror=function(){delete Uc.connection,Vc.trigger("noResumeableBOSHSession",Uc)},e.send()},Uc.restoreBOSHSession=async function(){const e=(await async function(){const e="converse.bosh-session";if(Uc.bosh_session||(Uc.bosh_session=new qo({id:e}),Uc.bosh_session.browserStorage=Uc.createStore(e,"session"),await new Promise(e=>Uc.bosh_session.fetch({success:e,error:e}))),Uc.jid){if(Uc.bosh_session.get("jid")!==Uc.jid){const e=await Uc.setUserJID(Uc.jid);Uc.bosh_session.clear({silent:!0}),Uc.bosh_session.save({jid:e})}}else{const e=Uc.bosh_session.get("jid");e&&await Uc.setUserJID(e)}return Uc.bosh_session}()).get("jid");if(e&&Uc.connection._proto instanceof Au.Bosh)try{return Uc.connection.restore(e,Uc.connection.onConnectStatusChanged),!0}catch(t){return!Uc.isTestEnv()&&zn.warn("Could not restore session for jid: "+e+" Error message: "+t.message),!1}return!1},Vc.listen.on("clearSession",()=>{if(void 0===Uc.bosh_session){const e="converse.bosh-session";sessionStorage.removeItem(e),sessionStorage.removeItem("".concat(e,"-").concat(e))}else Uc.bosh_session.destroy(),delete Uc.bosh_session}),Vc.listen.on("setUserJID",()=>{void 0!==Uc.bosh_session&&Uc.bosh_session.save({jid:Uc.jid})}),Vc.listen.on("addClientFeatures",()=>Vc.disco.own.features.add(Au.NS.BOSH)),Object.assign(Vc,{tokens:{get:e=>void 0===Uc.connection?null:"rid"===e.toLowerCase()?Uc.connection.rid||Uc.connection._proto.rid:"sid"===e.toLowerCase()?Uc.connection.sid||Uc.connection._proto.sid:void 0}})}});var Cu=n(7); /** * @module converse-caps * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{Strophe:du,$build:hu}=Yc.env;function fu(e,t){return e.sort((e,n)=>e[t]>n[t]?-1:1)}function pu(e){const t=e.api.disco.own.identities.get(),n=e.api.disco.own.features.get();t.length>1&&(fu(t,"category"),fu(t,"type"),fu(t,"lang"));let r=t.reduce((e,t)=>{var n;return"".concat(e).concat(t.category,"/").concat(t.type,"/").concat(null!==(n=null==t?void 0:t.lang)&&void 0!==n?n:"","/").concat(t.name,"<")},"");return n.sort(),r=n.reduce((e,t)=>"".concat(e).concat(t,"<"),r),uu.a.b64_sha1(r)}du.addNamespace("CAPS","http://jabber.org/protocol/caps"),Yc.plugins.add("converse-caps",{overrides:{XMPPStatus:{constructPresence(){const e=this.__super__.constructPresence.apply(this,arguments);var t;return e.root().cnode((t=this.__super__._converse,hu("c",{xmlns:du.NS.CAPS,hash:"sha-1",node:"https://conversejs.org",ver:pu(t)}).nodeTree)),e}}}}),Yc.plugins.add("converse-carbons",{initialize(){qc.settings.extend({message_carbons:!0}),qc.listen.on("afterResourceBinding",()=> + */const{Strophe:ju,$build:Tu}=rl.env;function Ou(e,t){return e.sort((e,n)=>e[t]>n[t]?-1:1)}function ku(e){const t=e.api.disco.own.identities.get(),n=e.api.disco.own.features.get();t.length>1&&(Ou(t,"category"),Ou(t,"type"),Ou(t,"lang"));let r=t.reduce((e,t)=>{var n;return"".concat(e).concat(t.category,"/").concat(t.type,"/").concat(null!==(n=null==t?void 0:t.lang)&&void 0!==n?n:"","/").concat(t.name,"<")},"");return n.sort(),r=n.reduce((e,t)=>"".concat(e).concat(t,"<"),r),Cu.a.b64_sha1(r)} /** * @module converse-carbons * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description Implements support for XEP-0280 Message Carbons */ -function(){var e;if(!qc.settings.get("message_carbons")||(null===(e=Lc.session)||void 0===e?void 0:e.get("carbons_enabled")))return;const t=new Ec.e.Builder("iq",{from:Lc.connection.jid,id:"enablecarbons",type:"set"}).c("enable",{xmlns:Ec.e.NS.CARBONS});Lc.connection.addHandler(e=>{e.querySelectorAll("error").length>0?Pn.warn("An error occurred while trying to enable message carbons."):(Lc.session.save({carbons_enabled:!0}),Pn.debug("Message carbons have been enabled."))},null,"iq",null,"enablecarbons"),Lc.connection.send(t)}())}}); +function Nu(e){var t,n;e&&(null===(n=Uc.session)||void 0===n||n.set({carbons_enabled:!1}));if(!Vc.settings.get("message_carbons")||(null===(t=Uc.session)||void 0===t?void 0:t.get("carbons_enabled")))return;const r=new kc.e.Builder("iq",{from:Uc.connection.jid,id:"enablecarbons",type:"set"}).c("enable",{xmlns:kc.e.NS.CARBONS});Uc.connection.addHandler(e=>{e.querySelectorAll("error").length>0?zn.warn("An error occurred while trying to enable message carbons."):(Uc.session.set({carbons_enabled:!0}),zn.debug("Message carbons have been enabled.")),Uc.session.save()},null,"iq",null,"enablecarbons"),Uc.connection.send(r)}ju.addNamespace("CAPS","http://jabber.org/protocol/caps"),rl.plugins.add("converse-caps",{overrides:{XMPPStatus:{constructPresence(){const e=this.__super__.constructPresence.apply(this,arguments);var t;return e.root().cnode((t=this.__super__._converse,Tu("c",{xmlns:ju.NS.CAPS,hash:"sha-1",node:"https://conversejs.org",ver:ku(t)}).nodeTree)),e}}}}),rl.plugins.add("converse-carbons",{initialize(){Vc.settings.extend({message_carbons:!0}),Vc.listen.on("afterResourceBinding",Nu)}}); /** * @module converse-chatboxes * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:gu}=Yc.env;gu.addNamespace("MESSAGE_CORRECT","urn:xmpp:message-correct:0"),gu.addNamespace("RECEIPTS","urn:xmpp:receipts"),gu.addNamespace("REFERENCE","urn:xmpp:reference:0"),gu.addNamespace("MARKERS","urn:xmpp:chat-markers:0"),Yc.plugins.add("converse-chatboxes",{dependencies:["converse-emoji","converse-roster","converse-vcard"],initialize(){qc.promises.add(["chatBoxesFetched","chatBoxesInitialized","privateChatsAutoJoined"]);let e=0;async function t(e,t,n){let r;e=gu.getBareJidFromJid(e.toLowerCase()),Object.assign(t,{jid:e,id:e});try{r=new n(t,{collection:Lc.chatboxes})}catch(e){return Pn.error(e),null}return await r.initialized,r.isValid()?(Lc.chatboxes.add(r),await r.messages.fetched,r):(r.destroy(),null)}Lc.incrementMsgCounter=function(){e+=1;const t=document.title;t&&(-1===t.search(/^Messages \(\d+\) /)?document.title="Messages (".concat(e,") ").concat(t):document.title=t.replace(/^Messages \(\d+\) /,"Messages (".concat(e,") ")))},Lc.clearMsgCounter=function(){e=0;const t=document.title;t&&-1!==t.search(/^Messages \(\d+\) /)&&(document.title=t.replace(/^Messages \(\d+\) /,""))},Lc.ChatBoxes=Yo.extend({comparator:"time_opened",model:(e,t)=>new Lc.ChatBox(e,t),onChatBoxesFetched(e){e.filter(e=>!e.isValid()).forEach(e=>e.destroy()),qc.trigger("chatBoxesFetched")},onConnected(e){e||(this.browserStorage=Lc.createStore("converse.chatboxes-".concat(Lc.bare_jid)),this.fetch({add:!0,success:e=>this.onChatBoxesFetched(e)}))}}),qc.listen.on("addClientFeatures",()=>{qc.disco.own.features.add(gu.NS.MESSAGE_CORRECT),qc.disco.own.features.add(gu.NS.HTTPUPLOAD),qc.disco.own.features.add(gu.NS.OUTOFBAND)}),qc.listen.on("pluginsInitialized",()=>{Lc.chatboxes=new Lc.ChatBoxes,qc.trigger("chatBoxesInitialized")}),qc.listen.on("presencesInitialized",e=>Lc.chatboxes.onConnected(e)),qc.listen.on("reconnected",()=>Lc.chatboxes.forEach(e=>e.onReconnection())),qc.listen.on("windowStateChanged",e=>"visible"===e.state&&Lc.clearMsgCounter()),Object.assign(qc,{chatboxes:{create:async(e=[],n={},r)=>(await qc.waitUntil("chatBoxesFetched"),"string"==typeof e?t(e,n,r):Promise.all(e.map(e=>t(e,n,r)))),get:async e=>(await qc.waitUntil("chatBoxesFetched"),void 0===e?Lc.chatboxes.models:"string"==typeof e?Lc.chatboxes.get(e.toLowerCase()):(e=e.map(e=>e.toLowerCase()),Lc.chatboxes.models.filter(t=>e.includes(t.get("jid")))))}})}}),Yc.plugins.add("converse-headlines",{dependencies:["converse-chat"],overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e.type==n.HEADLINES_TYPE?new n.HeadlinesBox(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){function e(){Lc.connection.addHandler(e=>async function(e){if(ao.isHeadline(e)||ao.isServerMessage(e)){const t=e.getAttribute("from");if(t.includes("@")&&!Lc.roster.get(t)&&!qc.settings.get("allow_non_roster_messaging"))return;if(null===e.querySelector("body"))return;const n=Lc.chatboxes.create({id:t,jid:t,type:Lc.HEADLINES_TYPE,from:t}),r=await ao.parseMessage(e,Lc);await n.createMessage(r),qc.trigger("message",{chatbox:n,stanza:e,attrs:r})}}(e)||!0,null,"message")}Lc.HeadlinesBox=Lc.ChatBox.extend({defaults(){return{bookmarked:!1,hidden:["mobile","fullscreen"].includes(qc.settings.get("view_mode")),message_type:"headline",num_unread:0,time_opened:this.get("time_opened")||(new Date).getTime(),type:Lc.HEADLINES_TYPE}},initialize(){this.initMessages(),this.set({box_id:"box-".concat(this.get("jid"))}),qc.trigger("headlinesBoxInitialized",this)}}),qc.listen.on("connected",e),qc.listen.on("reconnected",e),Object.assign(qc,{headlines:{async get(e,t={},n=!1){async function r(e){let r=await qc.chatboxes.get(e);return!r&&n?r=await qc.chatboxes.create(e,t,Lc.HeadlinesBox):(r=r&&r.get("type")===Lc.HEADLINES_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await qc.chatboxes.get()).filter(e=>e.get("type")===Lc.HEADLINES_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}})}}); +const{Strophe:Iu}=rl.env;Iu.addNamespace("MESSAGE_CORRECT","urn:xmpp:message-correct:0"),Iu.addNamespace("RECEIPTS","urn:xmpp:receipts"),Iu.addNamespace("REFERENCE","urn:xmpp:reference:0"),Iu.addNamespace("MARKERS","urn:xmpp:chat-markers:0"),rl.plugins.add("converse-chatboxes",{dependencies:["converse-emoji","converse-roster","converse-vcard"],initialize(){async function e(e,t,n){let r;e=Iu.getBareJidFromJid(e.toLowerCase()),Object.assign(t,{jid:e,id:e});try{r=new n(t,{collection:Uc.chatboxes})}catch(e){return zn.error(e),null}return await r.initialized,r.isValid()?(Uc.chatboxes.add(r),r):(r.destroy(),null)}Vc.promises.add(["chatBoxesFetched","chatBoxesInitialized","privateChatsAutoJoined"]),Uc.ChatBoxes=ra.extend({comparator:"time_opened",model:(e,t)=>new Uc.ChatBox(e,t),onChatBoxesFetched(e){e.filter(e=>!e.isValid()).forEach(e=>e.destroy()),Vc.trigger("chatBoxesFetched")},onConnected(e){e||(this.browserStorage=Uc.createStore("converse.chatboxes-".concat(Uc.bare_jid)),this.fetch({add:!0,success:e=>this.onChatBoxesFetched(e)}))}}),Vc.listen.on("addClientFeatures",()=>{Vc.disco.own.features.add(Iu.NS.MESSAGE_CORRECT),Vc.disco.own.features.add(Iu.NS.HTTPUPLOAD),Vc.disco.own.features.add(Iu.NS.OUTOFBAND)}),Vc.listen.on("pluginsInitialized",()=>{Uc.chatboxes=new Uc.ChatBoxes,Vc.trigger("chatBoxesInitialized")}),Vc.listen.on("presencesInitialized",e=>Uc.chatboxes.onConnected(e)),Vc.listen.on("reconnected",()=>Uc.chatboxes.forEach(e=>e.onReconnection())),Object.assign(Vc,{chatboxes:{create:async(t=[],n={},r)=>(await Vc.waitUntil("chatBoxesFetched"),"string"==typeof t?e(t,n,r):Promise.all(t.map(t=>e(t,n,r)))),get:async e=>(await Vc.waitUntil("chatBoxesFetched"),void 0===e?Uc.chatboxes.models:"string"==typeof e?Uc.chatboxes.get(e.toLowerCase()):(e=e.map(e=>e.toLowerCase()),Uc.chatboxes.models.filter(t=>e.includes(t.get("jid")))))}})}}),rl.plugins.add("converse-headlines",{dependencies:["converse-chat"],overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e.type==n.HEADLINES_TYPE?new n.HeadlinesBox(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){function e(){Uc.connection.addHandler(e=>async function(e){if(ps.isHeadline(e)||ps.isServerMessage(e)){const t=e.getAttribute("from");if(t.includes("@")&&!Uc.roster.get(t)&&!Vc.settings.get("allow_non_roster_messaging"))return;if(null===e.querySelector("body"))return;const n=Uc.chatboxes.create({id:t,jid:t,type:Uc.HEADLINES_TYPE,from:t}),r=await ps.parseMessage(e,Uc);await n.createMessage(r),Vc.trigger("message",{chatbox:n,stanza:e,attrs:r})}}(e)||!0,null,"message")}Uc.HeadlinesBox=Uc.ChatBox.extend({defaults(){return{bookmarked:!1,hidden:["mobile","fullscreen"].includes(Vc.settings.get("view_mode")),message_type:"headline",num_unread:0,time_opened:this.get("time_opened")||(new Date).getTime(),type:Uc.HEADLINES_TYPE}},async initialize(){this.set({box_id:"box-".concat(this.get("jid"))}),this.initMessages(),await this.fetchMessages(),Vc.trigger("headlinesBoxInitialized",this)}}),Vc.listen.on("connected",e),Vc.listen.on("reconnected",e),Object.assign(Vc,{headlines:{async get(e,t={},n=!1){async function r(e){let r=await Vc.chatboxes.get(e);return!r&&n?r=await Vc.chatboxes.create(e,t,Uc.HeadlinesBox):(r=r&&r.get("type")===Uc.HEADLINES_TYPE?r:null,r&&Object.keys(t).length&&r.save(t)),r}if(void 0===e){return(await Vc.chatboxes.get()).filter(e=>e.get("type")===Uc.HEADLINES_TYPE)}return"string"==typeof e?r(e):Promise.all(e.map(e=>r(e)))}}})}}); /** * @module converse-rsm * @copyright The Converse.js contributors @@ -319,13 +327,14 @@ const{Strophe:gu}=Yc.env;gu.addNamespace("MESSAGE_CORRECT","urn:xmpp:message-cor * Some code taken from the Strophe RSM plugin, licensed under the MIT License * Copyright 2006-2017 Strophe (https://github.com/strophe/strophejs) */ -const{Strophe:mu,$build:vu}=Yc.env;mu.addNamespace("RSM","http://jabber.org/protocol/rsm");const _u=["after","before","index","max"],bu=e=>Number(e),yu=e=>e.toString(),wu={after:yu,before:yu,count:bu,first:yu,index:bu,last:yu,max:bu},Su=e=>void 0===e,xu=Object.keys(wu);class Eu{static getQueryParameters(e={}){return Ms(e,_u)}static parseXMLResult(e){const t={};for(var n=0;n<xu.length;n++){const r=xu[n],i=e.getElementsByTagName(r)[0];Su(i)||null===i||(t[r]=wu[r](mu.getText(i)),"first"==r&&(t.index=wu.index(i.getAttribute("index"))))}return t}constructor(e={}){this.query=Eu.getQueryParameters(e),this.result=e.xml?Eu.parseXMLResult(e.xml):{}}toXML(){const e=vu("set",{xmlns:mu.NS.RSM});return _u.reduce((e,t)=>Su(this.query[t])?e:e.c(t).t((this.query[t]||"").toString()).up(),e).tree()}next(e,t){const n=Object.assign({},this.query,{after:this.result.last,before:t,max:e});return new Eu(n)}previous(e,t){const n=Object.assign({},this.query,{after:t,before:this.result.first,max:e});return new Eu(n)}}function Au(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Cu(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Au(Object(n),!0).forEach((function(t){ju(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Au(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ju(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} +const{Strophe:Mu,$build:Ru}=rl.env;Mu.addNamespace("RSM","http://jabber.org/protocol/rsm");const Du=["after","before","index","max"],Pu=e=>Number(e),Lu=e=>e.toString(),zu={after:Lu,before:Lu,count:Pu,first:Lu,index:Pu,last:Lu,max:Pu},Fu=e=>void 0===e,Bu=Object.keys(zu);class qu{static getQueryParameters(e={}){return Bo(e,Du)}static parseXMLResult(e){const t={};for(var n=0;n<Bu.length;n++){const r=Bu[n],i=e.getElementsByTagName(r)[0];Fu(i)||null===i||(t[r]=zu[r](Mu.getText(i)),"first"==r&&(t.index=zu.index(i.getAttribute("index"))))}return t}constructor(e={}){this.query=qu.getQueryParameters(e),this.result=e.xml?qu.parseXMLResult(e.xml):{}}toXML(){const e=Ru("set",{xmlns:Mu.NS.RSM});return Du.reduce((e,t)=>Fu(this.query[t])?e:e.c(t).t((this.query[t]||"").toString()).up(),e).tree()}next(e,t){const n=Object.assign({},this.query,{after:this.result.last,before:t,max:e});return new qu(n)}previous(e,t){const n=Object.assign({},this.query,{after:t,before:this.result.first,max:e});return new qu(n)}}Uc.RSM_ATTRIBUTES=Bu,Uc.RSM=qu; /** * @module converse-mam * @description XEP-0313 Message Archive Management * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */Lc.RSM_ATTRIBUTES=xu,Lc.RSM=Eu;const{Strophe:Tu,$iq:Ou,dayjs:ku}=Yc.env,{NS:Nu}=Tu,Iu=Yc.env.utils,Mu={fetchNewestMessages(){if(this.disable_mam)return;const e=this.getMostRecentMessage();if(e&&!qc.settings.get("clear_messages_on_reconnection")){const t=e.get("stanza_id ".concat(this.get("jid")));t?this.fetchArchivedMessages({after:t},"forwards"):this.fetchArchivedMessages({start:e.get("time")},"forwards")}else this.fetchArchivedMessages({before:""})},async handleMAMResult(e,t,n,r){await qc.emojis.initialize();const i=this.get("type")===Lc.CHATROOMS_TYPE;e.messages=e.messages.map(e=>i?ao.parseMUCMessage(e,this,Lc):ao.parseMessage(e,Lc));const s={query:t,chatbox:this,messages:e.messages};if(await qc.trigger("MAMResult",s,{synchronous:!0}),e.messages.forEach(e=>this.queueMessage(e)),e.error){const t=e.error.retry_event_id=Iu.getUniqueId();qc.listen.once(t,()=>this.fetchArchivedMessages(n,r)),this.createMessageFromError(e.error)}},async fetchArchivedMessages(e={},t){if(this.disable_mam)return;const n=this.get("type")===Lc.CHATROOMS_TYPE,r=n?this.get("jid"):Lc.bare_jid;if(!await qc.disco.supports(Nu.MAM,r))return;const i=qc.settings.get("archived_messages_page_size"),s=Object.assign({groupchat:n,max:i,with:this.get("jid")},e),o=await qc.archive.query(s);return await this.handleMAMResult(o,s,e,t),t&&o.rsm&&!o.complete?("forwards"===t?e=o.rsm.next(i,e.before).query:"backwards"===t&&(e=o.rsm.previous(i,e.after).query),this.fetchArchivedMessages(e,t)):void 0}};Yc.plugins.add("converse-mam",{dependencies:["converse-disco","converse-muc"],initialize(){function e(e){qc.settings.get("muc_show_logs_before_join")&&e.features.get("mam_enabled")&&!e.get("prejoin_mam_fetched")&&(e.fetchNewestMessages(),e.save({prejoin_mam_fetched:!0}))}qc.settings.extend({archived_messages_page_size:"50",message_archiving:void 0,message_archiving_timeout:2e4}),Object.assign(Lc.ChatBox.prototype,Mu),Lc.onMAMError=function(e){(null==e?void 0:e.querySelectorAll("feature-not-implemented").length)?Pn.warn("Message Archive Management (XEP-0313) not supported by ".concat(e.getAttribute("from"))):(Pn.error("Error while trying to set archiving preferences for ".concat(e.getAttribute("from"),".")),Pn.error(e))},Lc.onMAMPreferences=function(e,t){const n=ur()('prefs[xmlns="'.concat(Nu.MAM,'"]'),e).pop();if(n.getAttribute("default")!==qc.settings.get("message_archiving")){const e=Ou({type:"set"}).c("prefs",{xmlns:Nu.MAM,default:qc.settings.get("message_archiving")});Array.from(n.children).forEach(t=>e.cnode(t).up()),qc.sendIQ(e).then(()=>t.save({preferences:{default:qc.settings.get("message_archiving")}})).catch(Lc.onMAMError)}else t.save({preferences:{default:qc.settings.get("message_archiving")}})},qc.listen.on("addClientFeatures",()=>qc.disco.own.features.add(Nu.MAM)),qc.listen.on("serviceDiscovered",(function(e){const t=e.get("preferences")||{};e.get("var")===Nu.MAM&&void 0!==qc.settings.get("message_archiving")&&t.default!==qc.settings.get("message_archiving")&&qc.sendIQ(Ou({type:"get"}).c("prefs",{xmlns:Nu.MAM})).then(t=>Lc.onMAMPreferences(t,e)).catch(Lc.onMAMError)})),qc.listen.on("chatRoomViewInitialized",t=>{qc.settings.get("muc_show_logs_before_join")&&(e(t.model),t.model.features.on("change:mam_enabled",()=>e(t.model)))}),qc.listen.on("enteredNewRoom",e=>e.features.get("mam_enabled")&&e.fetchNewestMessages()),qc.listen.on("chatReconnected",e=>{e.get("type")===Lc.PRIVATE_CHAT_TYPE&&e.fetchNewestMessages()}),qc.listen.on("afterMessagesFetched",e=>{e.get("type")!==Lc.PRIVATE_CHAT_TYPE||Lc.connection.restored||e.fetchNewestMessages()}),Object.assign(qc,{archive:{async query(e){if(!qc.connection.connected())throw new Error("Can't call `api.archive.query` before having established an XMPP session");const t={type:"set"};if(e&&e.groupchat){if(!e.with)throw new Error('You need to specify a "with" value containing the chat room JID, when querying groupchat messages.');t.to=e.with}const n=t.to||Lc.bare_jid;if(!await qc.disco.supports(Nu.MAM,n))return Pn.warn("Did not fetch MAM archive for ".concat(n," because it doesn't support ").concat(Nu.MAM)),{messages:[]};const r=Iu.getUniqueId(),i=Ou(t).c("query",{xmlns:Nu.MAM,queryid:r});if(e){i.c("x",{xmlns:Nu.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t(Nu.MAM).up().up(),e.with&&!e.groupchat&&i.c("field",{var:"with"}).c("value").t(e.with).up().up(),["start","end"].forEach(t=>{if(e[t]){const n=ku(e[t]);if(!n.isValid())throw new TypeError("archive.query: invalid date provided for: ".concat(t));i.c("field",{var:t}).c("value").t(n.toISOString()).up().up()}}),i.up();const t=new Eu(e);Object.keys(t.query).length&&i.cnode(t.toXML())}const s=[],o=Lc.connection.addHandler(t=>{const n=ur()('message > result[xmlns="'.concat(Nu.MAM,'"]'),t).pop();if(void 0===n||n.getAttribute("queryid")!==r)return!0;const i=t.getAttribute("from")||Lc.bare_jid;if(e.groupchat){if(i!==e.with)return Pn.warn("Ignoring alleged groupchat MAM message from ".concat(t.getAttribute("from"))),!0}else if(i!==Lc.bare_jid)return Pn.warn("Ignoring alleged MAM message from ".concat(t.getAttribute("from"))),!0;return s.push(t),!0},Nu.MAM);let a;const c=await qc.sendIQ(i,qc.settings.get("message_archiving_timeout"),!1);if(null===c){const{__:e}=Lc,t=e("Timeout while trying to fetch archived messages.");return Pn.error(t),a=new Lc.TimeoutError(t),{messages:s,error:a}}if(Iu.isErrorStanza(c)){const{__:e}=Lc,t=e("An error occurred while querying for archived messages.");return Pn.error(t),Pn.error(c),a=new Error(t),{messages:s,error:a}}let l;Lc.connection.deleteHandler(o);const u=c&&ur()('fin[xmlns="'.concat(Nu.MAM,'"]'),c).pop(),d="true"===(null==u?void 0:u.getAttribute("complete")),h=ur()('set[xmlns="'.concat(Nu.RSM,'"]'),u).pop();return h&&(l=new Eu(Cu(Cu({},e),{},{xml:h}))),{messages:s,rsm:l,complete:d}}}})}}); + */ +const{Strophe:Hu,$iq:Uu,dayjs:$u}=rl.env,{NS:Wu}=Hu,Gu=rl.env.utils,Vu={fetchNewestMessages(){if(this.disable_mam)return;const e=this.getMostRecentMessage();if(e&&!Vc.settings.get("clear_messages_on_reconnection")){const t=e.get("stanza_id ".concat(this.get("jid")));t?this.fetchArchivedMessages({after:t},"forwards"):this.fetchArchivedMessages({start:e.get("time")},"forwards")}else this.fetchArchivedMessages({before:""})},async handleMAMResult(e,t,n,r){await Vc.emojis.initialize();const i=this.get("type")===Uc.CHATROOMS_TYPE;e.messages=e.messages.map(e=>i?ps.parseMUCMessage(e,this,Uc):ps.parseMessage(e,Uc));const o={query:t,chatbox:this,messages:e.messages};if(await Vc.trigger("MAMResult",o,{synchronous:!0}),e.messages.forEach(e=>this.queueMessage(e)),e.error){const t=e.error.retry_event_id=Gu.getUniqueId();Vc.listen.once(t,()=>this.fetchArchivedMessages(n,r)),this.createMessageFromError(e.error)}},async fetchArchivedMessages(e={},t){if(this.disable_mam)return;const n=this.get("type")===Uc.CHATROOMS_TYPE,r=n?this.get("jid"):Uc.bare_jid;if(!await Vc.disco.supports(Wu.MAM,r))return;const i=Vc.settings.get("archived_messages_page_size"),o=Object.assign({groupchat:n,max:i,with:this.get("jid")},e),s=await Vc.archive.query(o);return await this.handleMAMResult(s,o,e,t),t&&s.rsm&&!s.complete?("forwards"===t?e=s.rsm.next(i,e.before).query:"backwards"===t&&(e=s.rsm.previous(i,e.after).query),this.fetchArchivedMessages(e,t)):void 0}};rl.plugins.add("converse-mam",{dependencies:["converse-disco","converse-muc"],initialize(){function e(e){Vc.settings.get("muc_show_logs_before_join")&&e.features.get("mam_enabled")&&!e.get("prejoin_mam_fetched")&&(e.fetchNewestMessages(),e.save({prejoin_mam_fetched:!0}))}Vc.settings.extend({archived_messages_page_size:"50",message_archiving:void 0,message_archiving_timeout:2e4}),Object.assign(Uc.ChatBox.prototype,Vu),Uc.onMAMError=function(e){(null==e?void 0:e.querySelectorAll("feature-not-implemented").length)?zn.warn("Message Archive Management (XEP-0313) not supported by ".concat(e.getAttribute("from"))):(zn.error("Error while trying to set archiving preferences for ".concat(e.getAttribute("from"),".")),zn.error(e))},Uc.onMAMPreferences=function(e,t){const n=mr()('prefs[xmlns="'.concat(Wu.MAM,'"]'),e).pop();if(n.getAttribute("default")!==Vc.settings.get("message_archiving")){const e=Uu({type:"set"}).c("prefs",{xmlns:Wu.MAM,default:Vc.settings.get("message_archiving")});Array.from(n.children).forEach(t=>e.cnode(t).up()),Vc.sendIQ(e).then(()=>t.save({preferences:{default:Vc.settings.get("message_archiving")}})).catch(Uc.onMAMError)}else t.save({preferences:{default:Vc.settings.get("message_archiving")}})},Vc.listen.on("addClientFeatures",()=>Vc.disco.own.features.add(Wu.MAM)),Vc.listen.on("serviceDiscovered",(function(e){const t=e.get("preferences")||{};e.get("var")===Wu.MAM&&void 0!==Vc.settings.get("message_archiving")&&t.default!==Vc.settings.get("message_archiving")&&Vc.sendIQ(Uu({type:"get"}).c("prefs",{xmlns:Wu.MAM})).then(t=>Uc.onMAMPreferences(t,e)).catch(Uc.onMAMError)})),Vc.listen.on("chatRoomViewInitialized",t=>{Vc.settings.get("muc_show_logs_before_join")&&(e(t.model),t.model.features.on("change:mam_enabled",()=>e(t.model)))}),Vc.listen.on("enteredNewRoom",e=>e.features.get("mam_enabled")&&e.fetchNewestMessages()),Vc.listen.on("chatReconnected",e=>{e.get("type")===Uc.PRIVATE_CHAT_TYPE&&e.fetchNewestMessages()}),Vc.listen.on("afterMessagesFetched",e=>{e.get("type")!==Uc.PRIVATE_CHAT_TYPE||Uc.connection.restored||e.fetchNewestMessages()}),Object.assign(Vc,{archive:{async query(e){if(!Vc.connection.connected())throw new Error("Can't call `api.archive.query` before having established an XMPP session");const t={type:"set"};if(e&&e.groupchat){if(!e.with)throw new Error('You need to specify a "with" value containing the chat room JID, when querying groupchat messages.');t.to=e.with}const n=t.to||Uc.bare_jid;if(!await Vc.disco.supports(Wu.MAM,n))return zn.warn("Did not fetch MAM archive for ".concat(n," because it doesn't support ").concat(Wu.MAM)),{messages:[]};const r=Gu.getUniqueId(),i=Uu(t).c("query",{xmlns:Wu.MAM,queryid:r});if(e){i.c("x",{xmlns:Wu.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t(Wu.MAM).up().up(),e.with&&!e.groupchat&&i.c("field",{var:"with"}).c("value").t(e.with).up().up(),["start","end"].forEach(t=>{if(e[t]){const n=$u(e[t]);if(!n.isValid())throw new TypeError("archive.query: invalid date provided for: ".concat(t));i.c("field",{var:t}).c("value").t(n.toISOString()).up().up()}}),i.up();const t=new qu(e);Object.keys(t.query).length&&i.cnode(t.toXML())}const o=[],s=Uc.connection.addHandler(t=>{const n=mr()('message > result[xmlns="'.concat(Wu.MAM,'"]'),t).pop();if(void 0===n||n.getAttribute("queryid")!==r)return!0;const i=t.getAttribute("from")||Uc.bare_jid;if(e.groupchat){if(i!==e.with)return zn.warn("Ignoring alleged groupchat MAM message from ".concat(t.getAttribute("from"))),!0}else if(i!==Uc.bare_jid)return zn.warn("Ignoring alleged MAM message from ".concat(t.getAttribute("from"))),!0;return o.push(t),!0},Wu.MAM);let a;const c=await Vc.sendIQ(i,Vc.settings.get("message_archiving_timeout"),!1);if(null===c){const{__:e}=Uc,t=e("Timeout while trying to fetch archived messages.");return zn.error(t),a=new Uc.TimeoutError(t),{messages:o,error:a}}if(Gu.isErrorStanza(c)){const{__:e}=Uc,t=e("An error occurred while querying for archived messages.");return zn.error(t),zn.error(c),a=new Error(t),{messages:o,error:a}}let l;Uc.connection.deleteHandler(s);const u=c&&mr()('fin[xmlns="'.concat(Wu.MAM,'"]'),c).pop(),d="true"===(null==u?void 0:u.getAttribute("complete")),h=mr()('set[xmlns="'.concat(Wu.RSM,'"]'),u).pop();return h&&(l=new qu({...e,xml:h})),{messages:o,rsm:l,complete:d}}}})}}); /** * @module converse-ping * @description @@ -334,43 +343,43 @@ const{Strophe:mu,$build:vu}=Yc.env;mu.addNamespace("RSM","http://jabber.org/prot * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:Ru,$iq:Du}=Yc.env,Pu=Yc.env.utils;Ru.addNamespace("PING","urn:xmpp:ping"),Yc.plugins.add("converse-ping",{initialize(){let e;function t(t){e=new Date;const n=t.getAttribute("from"),r=t.getAttribute("id"),i=Du({type:"result",to:n,id:r});return Lc.connection.sendIQ(i),!0}qc.settings.extend({ping_interval:60}),setTimeout(()=>{if(qc.settings.get("ping_interval")>0){const t=new Date;return e||(e=t),!((t-e)/1e3>qc.settings.get("ping_interval"))||qc.ping()}},1e3);const n=function(){void 0!==Lc.connection.disco&&qc.disco.own.features.add(Ru.NS.PING),Lc.connection.addHandler(t,Ru.NS.PING,"iq","get"),Lc.connection.addHandler(()=>{if(qc.settings.get("ping_interval")>0)return e=new Date,!0})};qc.listen.on("connected",n),qc.listen.on("reconnected",n),qc.listen.on("windowStateChanged",(function(e){"visible"===e.state&&qc.connection.connected()&&qc.ping(null,5e3)})),Object.assign(qc,{async ping(t,n){if(e=new Date,t=t||Ru.getDomainFromJid(Lc.bare_jid),Lc.connection){const e=Du({type:"get",to:t,id:Pu.getUniqueId("ping")}).c("ping",{xmlns:Ru.NS.PING}),r=await qc.sendIQ(e,n||1e4,!1);return null===r?(Pn.warn("Timeout while pinging ".concat(t)),t===Ru.getDomainFromJid(Lc.bare_jid)&&qc.connection.reconnect()):Pu.isErrorStanza(r)&&(Pn.error("Error while pinging ".concat(t)),Pn.error(r)),!0}return!1}})}}); +const{Strophe:Ju,$iq:Xu}=rl.env,Qu=rl.env.utils;Ju.addNamespace("PING","urn:xmpp:ping"),rl.plugins.add("converse-ping",{initialize(){let e;function t(t){e=new Date;const n=t.getAttribute("from"),r=t.getAttribute("id"),i=Xu({type:"result",to:n,id:r});return Uc.connection.sendIQ(i),!0}Vc.settings.extend({ping_interval:60}),setTimeout(()=>{if(Vc.settings.get("ping_interval")>0){const t=new Date;return e||(e=t),!((t-e)/1e3>Vc.settings.get("ping_interval"))||Vc.ping()}},1e3);const n=function(){void 0!==Uc.connection.disco&&Vc.disco.own.features.add(Ju.NS.PING),Uc.connection.addHandler(t,Ju.NS.PING,"iq","get"),Uc.connection.addHandler(()=>{if(Vc.settings.get("ping_interval")>0)return e=new Date,!0})};Vc.listen.on("connected",n),Vc.listen.on("reconnected",n),Vc.listen.on("windowStateChanged",(function(e){"visible"===e.state&&Vc.connection.connected()&&Vc.ping(null,5e3)})),Object.assign(Vc,{async ping(t,n){if(e=new Date,t=t||Ju.getDomainFromJid(Uc.bare_jid),Uc.connection){const e=Xu({type:"get",to:t,id:Qu.getUniqueId("ping")}).c("ping",{xmlns:Ju.NS.PING}),r=await Vc.sendIQ(e,n||1e4,!1);return null===r?(zn.warn("Timeout while pinging ".concat(t)),t===Ju.getDomainFromJid(Uc.bare_jid)&&Vc.connection.reconnect()):Qu.isErrorStanza(r)&&(zn.error("Error while pinging ".concat(t)),zn.error(r)),!0}return!1}})}}); /** * @module converse-pubsub * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:Lu,$iq:zu}=Yc.env;Lu.addNamespace("PUBSUB_ERROR",Lu.NS.PUBSUB+"#errors"),Yc.plugins.add("converse-pubsub",{dependencies:["converse-disco"],initialize(){Object.assign(Lc.api,{pubsub:{async publish(e,t,n,r,i=!0){const s=zu({from:Lc.bare_jid,type:"set",to:e}).c("pubsub",{xmlns:Lu.NS.PUBSUB}).c("publish",{node:t}).cnode(n.tree()).up().up();r&&(e=e||Lc.bare_jid,await qc.disco.supports(Lu.NS.PUBSUB+"#publish-options",e)?(s.c("publish-options").c("x",{xmlns:Lu.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t("".concat(Lu.NS.PUBSUB,"#publish-options")).up().up(),Object.keys(r).forEach(e=>s.c("field",{var:e}).c("value").t(r[e]).up().up())):Pn.warn("_converse.api.publish: ".concat(e," does not support #publish-options, ")+"so we didn't set them even though they were provided."));try{await qc.sendIQ(s)}catch(e){if(!(e instanceof Element&&i&&e.querySelector('precondition-not-met[xmlns="'.concat(Lu.NS.PUBSUB_ERROR,'"]'))))throw e;{const e=s.nodeTree;e.querySelector("publish-options").outerHTML="",Pn.warn("PubSub: Republishing without publish options. ".concat(e.outerHTML)),await qc.sendIQ(e)}}}}})}});var Fu=function(e){return"number"==typeof e||Ee(e)&&"[object Number]"==k(e)};var Bu=function(e){return Fu(e)&&e!=+e}; +const{Strophe:Yu,$iq:Ku}=rl.env;Yu.addNamespace("PUBSUB_ERROR",Yu.NS.PUBSUB+"#errors"),rl.plugins.add("converse-pubsub",{dependencies:["converse-disco"],initialize(){Object.assign(Uc.api,{pubsub:{async publish(e,t,n,r,i=!0){const o=Ku({from:Uc.bare_jid,type:"set",to:e}).c("pubsub",{xmlns:Yu.NS.PUBSUB}).c("publish",{node:t}).cnode(n.tree()).up().up();r&&(e=e||Uc.bare_jid,await Vc.disco.supports(Yu.NS.PUBSUB+"#publish-options",e)?(o.c("publish-options").c("x",{xmlns:Yu.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE",type:"hidden"}).c("value").t("".concat(Yu.NS.PUBSUB,"#publish-options")).up().up(),Object.keys(r).forEach(e=>o.c("field",{var:e}).c("value").t(r[e]).up().up())):zn.warn("_converse.api.publish: ".concat(e," does not support #publish-options, ")+"so we didn't set them even though they were provided."));try{await Vc.sendIQ(o)}catch(e){if(!(e instanceof Element&&i&&e.querySelector('precondition-not-met[xmlns="'.concat(Yu.NS.PUBSUB_ERROR,'"]'))))throw e;{const e=o.nodeTree;e.querySelector("publish-options").outerHTML="",zn.warn("PubSub: Republishing without publish options. ".concat(e.outerHTML)),await Vc.sendIQ(e)}}}}})}});var Zu=function(e){return"number"==typeof e||Ee(e)&&"[object Number]"==k(e)};var ed=function(e){return Zu(e)&&e!=+e}; /** * @module converse-status * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{Strophe:qu,$build:Hu,$pres:Uu}=Yc.env;Yc.plugins.add("converse-status",{initialize(){function e(e){qc.trigger("statusInitialized",e)}function t(t){if(t=void 0!==Lc.xmppstatus&&t)e(t);else{const n="converse.xmppstatus-".concat(Lc.bare_jid);Lc.xmppstatus=new Lc.XMPPStatus({id:n}),Lc.xmppstatus.browserStorage=Lc.createStore(n,"session"),Lc.xmppstatus.fetch({success:()=>e(t),error:()=>e(t),silent:!0})}}qc.settings.extend({auto_away:0,auto_xa:0,csi_waiting_time:0,default_state:"online",priority:0}),qc.promises.add(["statusInitialized"]),Lc.XMPPStatus=Rs.extend({defaults:()=>({status:qc.settings.get("default_state")}),initialize(){this.on("change",e=>{N(e.changed)&&("status"in e.changed||"status_message"in e.changed)&&qc.user.presence.send(this.get("status"),null,this.get("status_message"))})},getNickname:()=>Lc.nickname,getFullname:()=>"",constructPresence(e,t=null,n){let r;e="string"==typeof e?e:this.get("status")||qc.settings.get("default_state"),n="string"==typeof n?n:this.get("status_message");const i={to:t};"unavailable"===e||"probe"===e||"error"===e||"unsubscribe"===e||"unsubscribed"===e||"subscribe"===e||"subscribed"===e?(i.type=e,r=Uu(i)):"offline"===e?(i.type="unavailable",r=Uu(i)):r="online"===e?Uu(i):Uu(i).c("show").t(e).up(),n&&r.c("status").t(n).up();const s=qc.settings.get("priority");if(r.c("priority").t(Bu(Number(s))?0:s).up(),Lc.idle){const e=new Date;e.setSeconds(e.getSeconds()-Lc.idle_seconds),r.c("idle",{xmlns:qu.NS.IDLE,since:e.toISOString()})}return r}}),Lc.sendCSI=function(e){qc.send(Hu(e,{xmlns:qu.NS.CSI})),Lc.inactive=e===Lc.INACTIVE},Lc.onUserActivity=function(){var e;Lc.idle_seconds>0&&(Lc.idle_seconds=0),(null===(e=Lc.connection)||void 0===e?void 0:e.authenticated)&&(Lc.inactive&&Lc.sendCSI(Lc.ACTIVE),Lc.idle&&(Lc.idle=!1,qc.user.presence.send()),!0===Lc.auto_changed_status&&(Lc.auto_changed_status=!1,Lc.xmppstatus.set("status",qc.settings.get("default_state"))))},Lc.onEverySecond=function(){var e;if(!(null===(e=Lc.connection)||void 0===e?void 0:e.authenticated))return;const t=Lc.xmppstatus.get("status");Lc.idle_seconds++,qc.settings.get("csi_waiting_time")>0&&Lc.idle_seconds>qc.settings.get("csi_waiting_time")&&!Lc.inactive&&Lc.sendCSI(Lc.INACTIVE),qc.settings.get("idle_presence_timeout")>0&&Lc.idle_seconds>qc.settings.get("idle_presence_timeout")&&!Lc.idle&&(Lc.idle=!0,qc.user.presence.send()),qc.settings.get("auto_away")>0&&Lc.idle_seconds>qc.settings.get("auto_away")&&"away"!==t&&"xa"!==t&&"dnd"!==t?(Lc.auto_changed_status=!0,Lc.xmppstatus.set("status","away")):qc.settings.get("auto_xa")>0&&Lc.idle_seconds>qc.settings.get("auto_xa")&&"xa"!==t&&"dnd"!==t&&(Lc.auto_changed_status=!0,Lc.xmppstatus.set("status","xa"))},Lc.registerIntervalHandler=function(){if(qc.settings.get("auto_away")<1&&qc.settings.get("auto_xa")<1&&qc.settings.get("csi_waiting_time")<1&&qc.settings.get("idle_presence_timeout")<1)return;Lc.idle_seconds=0,Lc.auto_changed_status=!1;const{unloadevent:e}=Lc;window.addEventListener("click",Lc.onUserActivity),window.addEventListener("focus",Lc.onUserActivity),window.addEventListener("keypress",Lc.onUserActivity),window.addEventListener("mousemove",Lc.onUserActivity),window.addEventListener(e,Lc.onUserActivity,{once:!0,passive:!0}),window.addEventListener(e,()=>{var e;return null===(e=Lc.session)||void 0===e?void 0:e.save("active",!1)}),Lc.everySecondTrigger=window.setInterval(Lc.onEverySecond,1e3)},qc.listen.on("presencesInitialized",e=>{e||Lc.registerIntervalHandler()}),qc.listen.on("clearSession",()=>{Lc.shouldClearCache()&&Lc.xmppstatus&&(Lc.xmppstatus.destroy(),delete Lc.xmppstatus,qc.promises.add(["statusInitialized"]))}),qc.listen.on("connected",()=>t(!1)),qc.listen.on("reconnected",()=>t(!0)),Object.assign(Lc.api.user,{presence:{async send(e,t,n){await qc.waitUntil("statusInitialized"),qc.send(Lc.xmppstatus.constructPresence(e,t,n))}},status:{get:async()=>(await qc.waitUntil("statusInitialized"),Lc.xmppstatus.get("status")),async set(e,t){const n={status:e};if(!Object.keys(Lc.STATUS_WEIGHTS).includes(e))throw new Error("Invalid availability value. See https://xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2.1");"string"==typeof t&&(n.status_message=t),await qc.waitUntil("statusInitialized"),Lc.xmppstatus.save(n)},message:{get:async()=>(await qc.waitUntil("statusInitialized"),Lc.xmppstatus.get("status_message")),async set(e){await qc.waitUntil("statusInitialized"),Lc.xmppstatus.save({status_message:e})}}}})}});var $u=function(e){return function(t){return null==e?void 0:ls(e,t)}};var Wu=function(e,t){for(var n,r=-1,i=e.length;++r<i;){var s=t(e[r]);void 0!==s&&(n=void 0===n?s:n+s)}return n};var Vu=function(e){return e&&e.length?Wu(e,fr):0}; + */const{Strophe:td,$build:nd,$pres:rd}=rl.env;rl.plugins.add("converse-status",{initialize(){function e(e){Vc.trigger("statusInitialized",e)}function t(t){if(t=void 0!==Uc.xmppstatus&&t)e(t);else{const n="converse.xmppstatus-".concat(Uc.bare_jid);Uc.xmppstatus=new Uc.XMPPStatus({id:n}),Uc.xmppstatus.browserStorage=Uc.createStore(n,"session"),Uc.xmppstatus.fetch({success:()=>e(t),error:()=>e(t),silent:!0})}}Vc.settings.extend({auto_away:0,auto_xa:0,csi_waiting_time:0,default_state:"online",priority:0}),Vc.promises.add(["statusInitialized"]),Uc.XMPPStatus=qo.extend({defaults:()=>({status:Vc.settings.get("default_state")}),initialize(){this.on("change",e=>{N(e.changed)&&("status"in e.changed||"status_message"in e.changed)&&Vc.user.presence.send(this.get("status"),null,this.get("status_message"))})},getNickname:()=>Uc.nickname,getFullname:()=>"",constructPresence(e,t=null,n){let r;e="string"==typeof e?e:this.get("status")||Vc.settings.get("default_state"),n="string"==typeof n?n:this.get("status_message");const i={to:t};"unavailable"===e||"probe"===e||"error"===e||"unsubscribe"===e||"unsubscribed"===e||"subscribe"===e||"subscribed"===e?(i.type=e,r=rd(i)):"offline"===e?(i.type="unavailable",r=rd(i)):r="online"===e?rd(i):rd(i).c("show").t(e).up(),n&&r.c("status").t(n).up();const o=Vc.settings.get("priority");if(r.c("priority").t(ed(Number(o))?0:o).up(),Uc.idle){const e=new Date;e.setSeconds(e.getSeconds()-Uc.idle_seconds),r.c("idle",{xmlns:td.NS.IDLE,since:e.toISOString()})}return r}}),Uc.sendCSI=function(e){Vc.send(nd(e,{xmlns:td.NS.CSI})),Uc.inactive=e===Uc.INACTIVE},Uc.onUserActivity=function(){var e;Uc.idle_seconds>0&&(Uc.idle_seconds=0),(null===(e=Uc.connection)||void 0===e?void 0:e.authenticated)&&(Uc.inactive&&Uc.sendCSI(Uc.ACTIVE),Uc.idle&&(Uc.idle=!1,Vc.user.presence.send()),!0===Uc.auto_changed_status&&(Uc.auto_changed_status=!1,Uc.xmppstatus.set("status",Vc.settings.get("default_state"))))},Uc.onEverySecond=function(){var e;if(!(null===(e=Uc.connection)||void 0===e?void 0:e.authenticated))return;const t=Uc.xmppstatus.get("status");Uc.idle_seconds++,Vc.settings.get("csi_waiting_time")>0&&Uc.idle_seconds>Vc.settings.get("csi_waiting_time")&&!Uc.inactive&&Uc.sendCSI(Uc.INACTIVE),Vc.settings.get("idle_presence_timeout")>0&&Uc.idle_seconds>Vc.settings.get("idle_presence_timeout")&&!Uc.idle&&(Uc.idle=!0,Vc.user.presence.send()),Vc.settings.get("auto_away")>0&&Uc.idle_seconds>Vc.settings.get("auto_away")&&"away"!==t&&"xa"!==t&&"dnd"!==t?(Uc.auto_changed_status=!0,Uc.xmppstatus.set("status","away")):Vc.settings.get("auto_xa")>0&&Uc.idle_seconds>Vc.settings.get("auto_xa")&&"xa"!==t&&"dnd"!==t&&(Uc.auto_changed_status=!0,Uc.xmppstatus.set("status","xa"))},Uc.registerIntervalHandler=function(){if(Vc.settings.get("auto_away")<1&&Vc.settings.get("auto_xa")<1&&Vc.settings.get("csi_waiting_time")<1&&Vc.settings.get("idle_presence_timeout")<1)return;Uc.idle_seconds=0,Uc.auto_changed_status=!1;const{unloadevent:e}=Uc;window.addEventListener("click",Uc.onUserActivity),window.addEventListener("focus",Uc.onUserActivity),window.addEventListener("keypress",Uc.onUserActivity),window.addEventListener("mousemove",Uc.onUserActivity),window.addEventListener(e,Uc.onUserActivity,{once:!0,passive:!0}),window.addEventListener(e,()=>{var e;return null===(e=Uc.session)||void 0===e?void 0:e.save("active",!1)}),Uc.everySecondTrigger=window.setInterval(Uc.onEverySecond,1e3)},Vc.listen.on("presencesInitialized",e=>{e||Uc.registerIntervalHandler()}),Vc.listen.on("clearSession",()=>{Uc.shouldClearCache()&&Uc.xmppstatus&&(Uc.xmppstatus.destroy(),delete Uc.xmppstatus,Vc.promises.add(["statusInitialized"]))}),Vc.listen.on("connected",()=>t(!1)),Vc.listen.on("reconnected",()=>t(!0)),Object.assign(Uc.api.user,{presence:{async send(e,t,n){await Vc.waitUntil("statusInitialized"),Vc.send(Uc.xmppstatus.constructPresence(e,t,n))}},status:{get:async()=>(await Vc.waitUntil("statusInitialized"),Uc.xmppstatus.get("status")),async set(e,t){const n={status:e};if(!Object.keys(Uc.STATUS_WEIGHTS).includes(e))throw new Error("Invalid availability value. See https://xmpp.org/rfcs/rfc3921.html#rfc.section.2.2.2.1");"string"==typeof t&&(n.status_message=t),await Vc.waitUntil("statusInitialized"),Uc.xmppstatus.save(n)},message:{get:async()=>(await Vc.waitUntil("statusInitialized"),Uc.xmppstatus.get("status_message")),async set(e){await Vc.waitUntil("statusInitialized"),Uc.xmppstatus.save({status_message:e})}}}})}});var id=function(e){return function(t){return null==e?void 0:mo(e,t)}};var od=function(e,t){for(var n,r=-1,i=e.length;++r<i;){var o=t(e[r]);void 0!==o&&(n=void 0===n?o:n+o)}return n};var sd=function(e){return e&&e.length?od(e,br):0}; /** * @module converse-roster * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{Strophe:Gu,$iq:Ju,$pres:Xu,dayjs:Qu,sizzle:Yu}=Yc.env,Ku=Yc.env.utils;Yc.plugins.add("converse-roster",{dependencies:["converse-status"],initialize(){const{__:e}=Lc;qc.settings.extend({allow_contact_requests:!0,auto_subscribe:!1,synchronize_availability:!0}),qc.promises.add(["cachedRoster","roster","rosterContactsFetched","rosterGroupsFetched","rosterInitialized"]),Lc.HEADER_CURRENT_CONTACTS=e("My contacts"),Lc.HEADER_PENDING_CONTACTS=e("Pending contacts"),Lc.HEADER_REQUESTING_CONTACTS=e("Contact requests"),Lc.HEADER_UNGROUPED=e("Ungrouped"),Lc.HEADER_UNREAD=e("New messages");const t={};t[Lc.HEADER_UNREAD]=0,t[Lc.HEADER_REQUESTING_CONTACTS]=1,t[Lc.HEADER_CURRENT_CONTACTS]=2,t[Lc.HEADER_UNGROUPED]=3,t[Lc.HEADER_PENDING_CONTACTS]=4,Lc.registerPresenceHandler=function(){Lc.unregisterPresenceHandler(),Lc.presence_ref=Lc.connection.addHandler(e=>(Lc.roster.presenceHandler(e),!0),null,"presence",null)},Lc.rejectPresenceSubscription=function(e,t){const n=Xu({to:e,type:"unsubscribed"});t&&""!==t&&n.c("status").t(t),qc.send(n)},Lc.sendInitialPresence=function(){Lc.send_initial_presence&&qc.user.presence.send()},Lc.populateRoster=async function(e=!1){e&&(Lc.send_initial_presence=!0);try{await Lc.rostergroups.fetchRosterGroups(),qc.trigger("rosterGroupsFetched"),await Lc.roster.fetchRosterContacts(),qc.trigger("rosterContactsFetched")}catch(e){Pn.error(e)}finally{Lc.sendInitialPresence()}};const n=Rs.extend({idAttribute:"name"}),r=Yo.extend({model:n});function i(e){const t=Lc.roster&&Lc.roster.findWhere({jid:e.get("jid")});void 0!==t&&t.save({num_unread:e.get("num_unread")})}async function s(){Lc.presences&&await Lc.presences.clearStore()}Lc.Presence=Rs.extend({defaults:{show:"offline"},initialize(){this.resources=new r;const e="converse.identities-".concat(this.get("jid"));this.resources.browserStorage=Lc.createStore(e,"session"),this.listenTo(this.resources,"update",this.onResourcesChanged),this.listenTo(this.resources,"change",this.onResourcesChanged)},onResourcesChanged(){var e;const t=this.getHighestPriorityResource(),n=(null==t||null===(e=t.attributes)||void 0===e?void 0:e.show)||"offline";this.get("show")!==n&&this.save({show:n})},getHighestPriorityResource(){return this.resources.sortBy(e=>"".concat(e.get("priority"),"-").concat(e.get("timestamp"))).reverse()[0]},addResource(e){const t=e.getAttribute("from"),n=Gu.getResourceFromJid(t),r=Yu('delay[xmlns="'.concat(Gu.NS.DELAY,'"]'),e).pop(),i=$u(e.querySelector("priority"))("textContent")||0,s=this.resources.get(n),o={name:n,priority:Bu(parseInt(i,10))?0:parseInt(i,10),show:$u(e.querySelector("show"))("textContent")||"online",timestamp:r?Qu(r.getAttribute("stamp")).toISOString():(new Date).toISOString()};s?s.save(o):this.resources.create(o)},removeResource(e){const t=this.resources.get(e);t&&t.destroy()}}),Lc.Presences=Yo.extend({model:Lc.Presence}),Lc.RosterContact=Rs.extend({defaults:{chat_state:void 0,image:Lc.DEFAULT_IMAGE,image_type:Lc.DEFAULT_IMAGE_TYPE,num_unread:0,status:void 0},async initialize(e){this.initialized=Ku.getResolveablePromise(),this.setPresence();const{jid:t}=e,n=Gu.getBareJidFromJid(t).toLowerCase();e.jid=n,this.set(Object.assign({groups:[],id:n,jid:n,user_id:Gu.getNodeFromJid(t)},e)),this.listenTo(this.presence,"change:show",()=>qc.trigger("contactPresenceChanged",this)),this.listenTo(this.presence,"change:show",()=>this.trigger("presenceChanged")),await qc.trigger("rosterContactInitialized",this,{Synchronous:!0}),this.initialized.resolve()},setPresence(){const e=this.get("jid");this.presence=Lc.presences.findWhere({jid:e})||Lc.presences.create({jid:e})},openChat(){const e=this.attributes;qc.chats.open(e.jid,e,!0)},getFilterCriteria(){const e=this.get("nickname"),t=this.get("jid");let n=this.getDisplayName();return n=n.includes(t)?n:n.concat(" ".concat(t)),n=n.includes(e)?n:n.concat(" ".concat(e)),n.toLowerCase()},getDisplayName(){return this.get("nickname")?this.get("nickname"):this.get("jid")},getFullname(){return this.get("jid")},subscribe(e){const t=Xu({to:this.get("jid"),type:"subscribe"});e&&""!==e&&t.c("status").t(e).up();const n=Lc.xmppstatus.getNickname()||Lc.xmppstatus.getFullname();return n&&t.c("nick",{xmlns:Gu.NS.NICK}).t(n).up(),qc.send(t),this.save("ask","subscribe"),this},ackSubscribe(){qc.send(Xu({type:"subscribe",to:this.get("jid")}))},ackUnsubscribe(){qc.send(Xu({type:"unsubscribe",to:this.get("jid")})),this.removeFromRoster(),this.destroy()},unauthorize(e){return Lc.rejectPresenceSubscription(this.get("jid"),e),this},authorize(e){const t=Xu({to:this.get("jid"),type:"subscribed"});return e&&""!==e&&t.c("status").t(e),qc.send(t),this},removeFromRoster(){const e=Ju({type:"set"}).c("query",{xmlns:Gu.NS.ROSTER}).c("item",{jid:this.get("jid"),subscription:"remove"});return qc.sendIQ(e)}}),Lc.RosterContacts=Yo.extend({model:Lc.RosterContact,comparator(e,t){const n=e.presence.get("show")||"offline",r=t.presence.get("show")||"offline";if(Lc.STATUS_WEIGHTS[n]===Lc.STATUS_WEIGHTS[r]){const n=e.getDisplayName().toLowerCase(),r=t.getDisplayName().toLowerCase();return n<r?-1:n>r?1:0}return Lc.STATUS_WEIGHTS[n]<Lc.STATUS_WEIGHTS[r]?-1:1},onConnected(){this.registerRosterHandler(),this.registerRosterXHandler()},registerRosterHandler(){Lc.connection.addHandler(e=>(Lc.roster.onRosterPush(e),!0),Gu.NS.ROSTER,"iq","set")},registerRosterXHandler(){let e=0;Lc.connection.addHandler((function(t){return window.setTimeout((function(){Lc.connection.flush(),Lc.roster.subscribeToSuggestedItems.bind(Lc.roster)(t)}),e),e+=250*t.querySelectorAll("item").length,!0}),Gu.NS.ROSTERX,"message",null)},async fetchRosterContacts(){const e=await new Promise((e,t)=>{this.fetch({add:!0,silent:!0,success:e,error:(e,n)=>t(n)})});if(Ku.isErrorObject(e)&&(Pn.error(e),Lc.session.set("roster_cached",!1),this.data.save("version",void 0)),!Lc.session.get("roster_cached"))return Lc.send_initial_presence=!0,Lc.roster.fetchFromServer();qc.trigger("cachedRoster",e)},subscribeToSuggestedItems:e=>(Array.from(e.querySelectorAll("item")).forEach(e=>{"add"===e.getAttribute("action")&&Lc.roster.addAndSubscribe(e.getAttribute("jid"),Lc.xmppstatus.getNickname()||Lc.xmppstatus.getFullname())}),!0),isSelf:e=>Ku.isSameBareJID(e,Lc.connection.jid),async addAndSubscribe(e,t,n,r,i){const s=await this.addContactToRoster(e,t,n,i);s instanceof Lc.RosterContact&&s.subscribe(r)},sendContactAddIQ(e,t,n){t=t||null;const r=Ju({type:"set"}).c("query",{xmlns:Gu.NS.ROSTER}).c("item",{jid:e,name:t});return n.forEach(e=>r.c("group").t(e).up()),qc.sendIQ(r)},async addContactToRoster(t,n,r,i){await qc.waitUntil("rosterContactsFetched"),r=r||[];try{await this.sendContactAddIQ(t,n,r)}catch(r){return Pn.error(r),alert(e("Sorry, there was an error while trying to add %1$s as a contact.",n||t)),r}return this.create(Object.assign({ask:void 0,nickname:n,groups:r,jid:t,requesting:!1,subscription:"none"},i),{sort:!1})},async subscribeBack(e,t){const n=this.get(e);if(n instanceof Lc.RosterContact)n.authorize().subscribe();else{var r;const n=(null===(r=Yu('nick[xmlns="'.concat(Gu.NS.NICK,'"]'),t).pop())||void 0===r?void 0:r.textContent)||null,i=await this.addContactToRoster(e,n,[],{subscription:"from"});i instanceof Lc.RosterContact&&i.authorize().subscribe()}},getNumOnlineContacts(){const e=["offline","unavailable"];return Vu(this.models.filter(t=>!e.includes(t.presence.get("show"))))},onRosterPush(e){const t=e.getAttribute("id"),n=e.getAttribute("from");if(n&&n!==Lc.bare_jid)return void Pn.warn("Ignoring roster illegitimate roster push message from ".concat(e.getAttribute("from")));qc.send(Ju({type:"result",id:t,from:Lc.connection.jid}));const r=Yu('query[xmlns="'.concat(Gu.NS.ROSTER,'"]'),e).pop();this.data.save("version",r.getAttribute("ver"));const i=Yu("item",r);if(i.length>1)throw Pn.error(e),new Error('Roster push query may not contain more than one "item" element.');if(0===i.length)return Pn.warn(e),void Pn.warn('Received a roster push stanza without an "item" element.');this.updateContact(i.pop()),qc.trigger("rosterPush",e)},rosterVersioningSupported(){return qc.disco.stream.getFeature("ver","urn:xmpp:features:rosterver")&&this.data.get("version")},async fetchFromServer(){const e=Ju({type:"get",id:Ku.getUniqueId("roster")}).c("query",{xmlns:Gu.NS.ROSTER});this.rosterVersioningSupported()&&e.attrs({ver:this.data.get("version")});const t=await qc.sendIQ(e,null,!1);if("error"!==t.getAttribute("type")){const e=Yu('query[xmlns="'.concat(Gu.NS.ROSTER,'"]'),t).pop();if(e){Yu("item",e).forEach(e=>this.updateContact(e)),this.data.save("version",e.getAttribute("ver"))}}else if(!Ku.isServiceUnavailableError(t))return Pn.error(t),void Pn.error("Error while trying to fetch roster from the server");Lc.session.save("roster_cached",!0),qc.trigger("roster",t)},updateContact(e){const t=e.getAttribute("jid"),n=this.get(t),r=e.getAttribute("subscription"),i=e.getAttribute("ask"),s=Array.from(e.getElementsByTagName("group")).map(e=>e.textContent);if(n){if("remove"===r)return n.destroy();n.save({subscription:r,ask:i,nickname:e.getAttribute("name"),requesting:null,groups:s})}else{if("none"===r&&null===i||"remove"===r)return;this.create({ask:i,nickname:e.getAttribute("name"),groups:s,jid:t,subscription:r},{sort:!1})}},createRequestingContact(e){var t;const n={jid:Gu.getBareJidFromJid(e.getAttribute("from")),subscription:"none",ask:null,requesting:!0,nickname:(null===(t=Yu('nick[xmlns="'.concat(Gu.NS.NICK,'"]'),e).pop())||void 0===t?void 0:t.textContent)||null};qc.trigger("contactRequest",this.create(n))},handleIncomingSubscription(t){const n=t.getAttribute("from"),r=Gu.getBareJidFromJid(n),i=this.get(r);qc.settings.get("allow_contact_requests")||Lc.rejectPresenceSubscription(n,e("This client does not allow presence subscriptions")),qc.settings.get("auto_subscribe")?i&&"to"===i.get("subscription")?i.authorize():this.subscribeBack(r,t):i?("none"!==i.get("subscription")||"subscribe"===i.get("ask"))&&i.authorize():this.createRequestingContact(t)},handleOwnPresence(e){const t=e.getAttribute("from"),n=Gu.getResourceFromJid(t),r=e.getAttribute("type");if(Lc.connection.jid!==t&&"unavailable"!==r&&(!0===qc.settings.get("synchronize_availability")||qc.settings.get("synchronize_availability")===n)){const t=$u(e.querySelector("show"))("textContent")||"online";Lc.xmppstatus.save({status:t},{silent:!0});const n=$u(e.querySelector("status"))("textContent");n&&Lc.xmppstatus.save({status_message:n})}Lc.jid===t&&"unavailable"===r&&qc.user.presence.send()},presenceHandler(e){const t=e.getAttribute("type");if("error"===t)return!0;const n=e.getAttribute("from"),r=Gu.getBareJidFromJid(n);if(this.isSelf(r))return this.handleOwnPresence(e);if(Yu('query[xmlns="'.concat(Gu.NS.MUC,'"]'),e).length)return;const i=$u(e.querySelector("status"))("textContent"),s=this.get(r);if(s&&i!==s.get("status")&&s.save({status:i}),"subscribed"===t&&s)s.ackSubscribe();else if("unsubscribed"===t&&s)s.ackUnsubscribe();else{if("unsubscribe"===t)return;if("subscribe"===t)this.handleIncomingSubscription(e);else if("unavailable"===t&&s){const e=Gu.getResourceFromJid(n);s.presence.removeResource(e)}else s&&s.presence.addResource(e)}}}),Lc.RosterGroup=Rs.extend({initialize(t){this.set(Object.assign({description:e("Click to hide these contacts"),state:Lc.OPENED},t)),this.contacts=new Lc.RosterContacts}}),Lc.RosterGroups=Yo.extend({model:Lc.RosterGroup,comparator(e,n){e=e.get("name"),n=n.get("name");const r=t,i=Object.keys(t),s=i.includes(e),o=i.includes(n);if(!s&&!o)return e.toLowerCase()<n.toLowerCase()?-1:e.toLowerCase()>n.toLowerCase()?1:0;if(s&&o)return r[e]<r[n]?-1:r[e]>r[n]?1:0;if(!s&&o){const e=Lc.HEADER_CURRENT_CONTACTS;return r[e]<r[n]?-1:r[e]>r[n]?1:0}if(s&&!o){const t=Lc.HEADER_CURRENT_CONTACTS;return r[e]<r[t]?-1:r[e]>r[t]?1:0}},fetchRosterGroups(){return new Promise(e=>{this.fetch({success:e,silent:!0})})}}),Lc.unregisterPresenceHandler=function(){void 0!==Lc.presence_ref&&(Lc.connection.deleteHandler(Lc.presence_ref),delete Lc.presence_ref)},qc.listen.on("chatBoxesInitialized",()=>{Lc.chatboxes.on("change:num_unread",i),Lc.chatboxes.on("add",e=>{e.get("type")===Lc.PRIVATE_CHAT_TYPE&&e.setRosterContact(e.get("jid"))})}),qc.listen.on("beforeTearDown",()=>Lc.unregisterPresenceHandler()),qc.waitUntil("rosterContactsFetched").then(()=>{Lc.roster.on("add",e=>{const t=Lc.chatboxes.findWhere({jid:e.get("jid")});t&&t.setRosterContact(e.get("jid"))})}),qc.listen.on("streamResumptionFailed",()=>Lc.session.set("roster_cached",!1)),qc.listen.on("clearSession",async()=>{await s(),Lc.shouldClearCache()&&(Lc.rostergroups&&(await Lc.rostergroups.clearStore(),delete Lc.rostergroups),Lc.roster&&(kc(Lc,"roster.data.destroy"),await Lc.roster.clearStore(),delete Lc.roster))}),qc.listen.on("statusInitialized",async e=>{if(e)!Lc.connection.hasResumed()&&await s();else{Lc.presences=new Lc.Presences;const e="converse.presences-".concat(Lc.bare_jid);Lc.presences.browserStorage=Lc.createStore(e,"session"),Lc.presences.fetch()}qc.trigger("presencesInitialized",e)}),qc.listen.on("presencesInitialized",async e=>{e?qc.trigger("rosterReadyAfterReconnection"):await async function(){await qc.waitUntil("VCardsInitialized"),Lc.roster=new Lc.RosterContacts;let e="converse.contacts-".concat(Lc.bare_jid);Lc.roster.browserStorage=Lc.createStore(e),Lc.roster.data=new Rs,e="converse-roster-model-".concat(Lc.bare_jid),Lc.roster.data.id=e,Lc.roster.data.browserStorage=Lc.createStore(e),Lc.roster.data.fetch(),e="converse.roster.groups".concat(Lc.bare_jid),Lc.rostergroups=new Lc.RosterGroups,Lc.rostergroups.browserStorage=Lc.createStore(e),qc.trigger("rosterInitialized")}(),Lc.roster.onConnected(),Lc.registerPresenceHandler(),Lc.populateRoster(!Lc.connection.restored)}),Object.assign(Lc.api,{contacts:{async get(e){await qc.waitUntil("rosterContactsFetched");const t=e=>Lc.roster.get(Gu.getBareJidFromJid(e));if(void 0===e)e=Lc.roster.pluck("jid");else if("string"==typeof e)return t(e);return e.map(t)},async add(e,t){if(await qc.waitUntil("rosterContactsFetched"),"string"!=typeof e||!e.includes("@"))throw new TypeError("contacts.add: invalid jid");return Lc.roster.addAndSubscribe(e,t)}}})}}); + */const{Strophe:ad,$iq:cd,$pres:ld,dayjs:ud,sizzle:dd}=rl.env,hd=rl.env.utils;rl.plugins.add("converse-roster",{dependencies:["converse-status"],initialize(){const{__:e}=Uc;Vc.settings.extend({allow_contact_requests:!0,auto_subscribe:!1,synchronize_availability:!0}),Vc.promises.add(["cachedRoster","roster","rosterContactsFetched","rosterGroupsFetched","rosterInitialized"]),Uc.HEADER_CURRENT_CONTACTS=e("My contacts"),Uc.HEADER_PENDING_CONTACTS=e("Pending contacts"),Uc.HEADER_REQUESTING_CONTACTS=e("Contact requests"),Uc.HEADER_UNGROUPED=e("Ungrouped"),Uc.HEADER_UNREAD=e("New messages");const t={};t[Uc.HEADER_UNREAD]=0,t[Uc.HEADER_REQUESTING_CONTACTS]=1,t[Uc.HEADER_CURRENT_CONTACTS]=2,t[Uc.HEADER_UNGROUPED]=3,t[Uc.HEADER_PENDING_CONTACTS]=4,Uc.registerPresenceHandler=function(){Uc.unregisterPresenceHandler(),Uc.presence_ref=Uc.connection.addHandler(e=>(Uc.roster.presenceHandler(e),!0),null,"presence",null)},Uc.rejectPresenceSubscription=function(e,t){const n=ld({to:e,type:"unsubscribed"});t&&""!==t&&n.c("status").t(t),Vc.send(n)},Uc.sendInitialPresence=function(){Uc.send_initial_presence&&Vc.user.presence.send()},Uc.populateRoster=async function(e=!1){e&&(Uc.send_initial_presence=!0);try{await Uc.rostergroups.fetchRosterGroups(),Vc.trigger("rosterGroupsFetched"),await Uc.roster.fetchRosterContacts(),Vc.trigger("rosterContactsFetched")}catch(e){zn.error(e)}finally{Uc.sendInitialPresence()}};const n=qo.extend({idAttribute:"name"}),r=ra.extend({model:n});function i(e){const t=Uc.roster&&Uc.roster.findWhere({jid:e.get("jid")});void 0!==t&&t.save({num_unread:e.get("num_unread")})}async function o(){Uc.presences&&await Uc.presences.clearStore()}Uc.Presence=qo.extend({defaults:{show:"offline"},initialize(){this.resources=new r;const e="converse.identities-".concat(this.get("jid"));this.resources.browserStorage=Uc.createStore(e,"session"),this.listenTo(this.resources,"update",this.onResourcesChanged),this.listenTo(this.resources,"change",this.onResourcesChanged)},onResourcesChanged(){var e;const t=this.getHighestPriorityResource(),n=(null==t||null===(e=t.attributes)||void 0===e?void 0:e.show)||"offline";this.get("show")!==n&&this.save({show:n})},getHighestPriorityResource(){return this.resources.sortBy(e=>"".concat(e.get("priority"),"-").concat(e.get("timestamp"))).reverse()[0]},addResource(e){const t=e.getAttribute("from"),n=ad.getResourceFromJid(t),r=dd('delay[xmlns="'.concat(ad.NS.DELAY,'"]'),e).pop(),i=id(e.querySelector("priority"))("textContent")||0,o=this.resources.get(n),s={name:n,priority:ed(parseInt(i,10))?0:parseInt(i,10),show:id(e.querySelector("show"))("textContent")||"online",timestamp:r?ud(r.getAttribute("stamp")).toISOString():(new Date).toISOString()};o?o.save(s):this.resources.create(s)},removeResource(e){const t=this.resources.get(e);t&&t.destroy()}}),Uc.Presences=ra.extend({model:Uc.Presence}),Uc.RosterContact=qo.extend({defaults:{chat_state:void 0,image:Uc.DEFAULT_IMAGE,image_type:Uc.DEFAULT_IMAGE_TYPE,num_unread:0,status:void 0},async initialize(e){this.initialized=hd.getResolveablePromise(),this.setPresence();const{jid:t}=e,n=ad.getBareJidFromJid(t).toLowerCase();e.jid=n,this.set(Object.assign({groups:[],id:n,jid:n,user_id:ad.getNodeFromJid(t)},e)),this.listenTo(this.presence,"change:show",()=>Vc.trigger("contactPresenceChanged",this)),this.listenTo(this.presence,"change:show",()=>this.trigger("presenceChanged")),await Vc.trigger("rosterContactInitialized",this,{Synchronous:!0}),this.initialized.resolve()},setPresence(){const e=this.get("jid");this.presence=Uc.presences.findWhere({jid:e})||Uc.presences.create({jid:e})},openChat(){const e=this.attributes;Vc.chats.open(e.jid,e,!0)},getFilterCriteria(){const e=this.get("nickname"),t=this.get("jid");let n=this.getDisplayName();return n=n.includes(t)?n:n.concat(" ".concat(t)),n=n.includes(e)?n:n.concat(" ".concat(e)),n.toLowerCase()},getDisplayName(){return this.get("nickname")?this.get("nickname"):this.get("jid")},getFullname(){return this.get("jid")},subscribe(e){const t=ld({to:this.get("jid"),type:"subscribe"});e&&""!==e&&t.c("status").t(e).up();const n=Uc.xmppstatus.getNickname()||Uc.xmppstatus.getFullname();return n&&t.c("nick",{xmlns:ad.NS.NICK}).t(n).up(),Vc.send(t),this.save("ask","subscribe"),this},ackSubscribe(){Vc.send(ld({type:"subscribe",to:this.get("jid")}))},ackUnsubscribe(){Vc.send(ld({type:"unsubscribe",to:this.get("jid")})),this.removeFromRoster(),this.destroy()},unauthorize(e){return Uc.rejectPresenceSubscription(this.get("jid"),e),this},authorize(e){const t=ld({to:this.get("jid"),type:"subscribed"});return e&&""!==e&&t.c("status").t(e),Vc.send(t),this},removeFromRoster(){const e=cd({type:"set"}).c("query",{xmlns:ad.NS.ROSTER}).c("item",{jid:this.get("jid"),subscription:"remove"});return Vc.sendIQ(e)}}),Uc.RosterContacts=ra.extend({model:Uc.RosterContact,comparator(e,t){const n=e.presence.get("show")||"offline",r=t.presence.get("show")||"offline";if(Uc.STATUS_WEIGHTS[n]===Uc.STATUS_WEIGHTS[r]){const n=e.getDisplayName().toLowerCase(),r=t.getDisplayName().toLowerCase();return n<r?-1:n>r?1:0}return Uc.STATUS_WEIGHTS[n]<Uc.STATUS_WEIGHTS[r]?-1:1},onConnected(){this.registerRosterHandler(),this.registerRosterXHandler()},registerRosterHandler(){Uc.connection.addHandler(e=>(Uc.roster.onRosterPush(e),!0),ad.NS.ROSTER,"iq","set")},registerRosterXHandler(){let e=0;Uc.connection.addHandler((function(t){return window.setTimeout((function(){Uc.connection.flush(),Uc.roster.subscribeToSuggestedItems.bind(Uc.roster)(t)}),e),e+=250*t.querySelectorAll("item").length,!0}),ad.NS.ROSTERX,"message",null)},async fetchRosterContacts(){const e=await new Promise((e,t)=>{this.fetch({add:!0,silent:!0,success:e,error:(e,n)=>t(n)})});if(hd.isErrorObject(e)&&(zn.error(e),Uc.session.set("roster_cached",!1),this.data.save("version",void 0)),!Uc.session.get("roster_cached"))return Uc.send_initial_presence=!0,Uc.roster.fetchFromServer();Vc.trigger("cachedRoster",e)},subscribeToSuggestedItems:e=>(Array.from(e.querySelectorAll("item")).forEach(e=>{"add"===e.getAttribute("action")&&Uc.roster.addAndSubscribe(e.getAttribute("jid"),Uc.xmppstatus.getNickname()||Uc.xmppstatus.getFullname())}),!0),isSelf:e=>hd.isSameBareJID(e,Uc.connection.jid),async addAndSubscribe(e,t,n,r,i){const o=await this.addContactToRoster(e,t,n,i);o instanceof Uc.RosterContact&&o.subscribe(r)},sendContactAddIQ(e,t,n){t=t||null;const r=cd({type:"set"}).c("query",{xmlns:ad.NS.ROSTER}).c("item",{jid:e,name:t});return n.forEach(e=>r.c("group").t(e).up()),Vc.sendIQ(r)},async addContactToRoster(t,n,r,i){await Vc.waitUntil("rosterContactsFetched"),r=r||[];try{await this.sendContactAddIQ(t,n,r)}catch(r){return zn.error(r),alert(e("Sorry, there was an error while trying to add %1$s as a contact.",n||t)),r}return this.create(Object.assign({ask:void 0,nickname:n,groups:r,jid:t,requesting:!1,subscription:"none"},i),{sort:!1})},async subscribeBack(e,t){const n=this.get(e);if(n instanceof Uc.RosterContact)n.authorize().subscribe();else{var r;const n=(null===(r=dd('nick[xmlns="'.concat(ad.NS.NICK,'"]'),t).pop())||void 0===r?void 0:r.textContent)||null,i=await this.addContactToRoster(e,n,[],{subscription:"from"});i instanceof Uc.RosterContact&&i.authorize().subscribe()}},getNumOnlineContacts(){const e=["offline","unavailable"];return sd(this.models.filter(t=>!e.includes(t.presence.get("show"))))},onRosterPush(e){const t=e.getAttribute("id"),n=e.getAttribute("from");if(n&&n!==Uc.bare_jid)return void zn.warn("Ignoring roster illegitimate roster push message from ".concat(e.getAttribute("from")));Vc.send(cd({type:"result",id:t,from:Uc.connection.jid}));const r=dd('query[xmlns="'.concat(ad.NS.ROSTER,'"]'),e).pop();this.data.save("version",r.getAttribute("ver"));const i=dd("item",r);if(i.length>1)throw zn.error(e),new Error('Roster push query may not contain more than one "item" element.');if(0===i.length)return zn.warn(e),void zn.warn('Received a roster push stanza without an "item" element.');this.updateContact(i.pop()),Vc.trigger("rosterPush",e)},rosterVersioningSupported(){return Vc.disco.stream.getFeature("ver","urn:xmpp:features:rosterver")&&this.data.get("version")},async fetchFromServer(){const e=cd({type:"get",id:hd.getUniqueId("roster")}).c("query",{xmlns:ad.NS.ROSTER});this.rosterVersioningSupported()&&e.attrs({ver:this.data.get("version")});const t=await Vc.sendIQ(e,null,!1);if("error"!==t.getAttribute("type")){const e=dd('query[xmlns="'.concat(ad.NS.ROSTER,'"]'),t).pop();if(e){dd("item",e).forEach(e=>this.updateContact(e)),this.data.save("version",e.getAttribute("ver"))}}else if(!hd.isServiceUnavailableError(t))return zn.error(t),void zn.error("Error while trying to fetch roster from the server");Uc.session.save("roster_cached",!0),Vc.trigger("roster",t)},updateContact(e){const t=e.getAttribute("jid"),n=this.get(t),r=e.getAttribute("subscription"),i=e.getAttribute("ask"),o=Array.from(e.getElementsByTagName("group")).map(e=>e.textContent);if(n){if("remove"===r)return n.destroy();n.save({subscription:r,ask:i,nickname:e.getAttribute("name"),requesting:null,groups:o})}else{if("none"===r&&null===i||"remove"===r)return;this.create({ask:i,nickname:e.getAttribute("name"),groups:o,jid:t,subscription:r},{sort:!1})}},createRequestingContact(e){var t;const n={jid:ad.getBareJidFromJid(e.getAttribute("from")),subscription:"none",ask:null,requesting:!0,nickname:(null===(t=dd('nick[xmlns="'.concat(ad.NS.NICK,'"]'),e).pop())||void 0===t?void 0:t.textContent)||null};Vc.trigger("contactRequest",this.create(n))},handleIncomingSubscription(t){const n=t.getAttribute("from"),r=ad.getBareJidFromJid(n),i=this.get(r);Vc.settings.get("allow_contact_requests")||Uc.rejectPresenceSubscription(n,e("This client does not allow presence subscriptions")),Vc.settings.get("auto_subscribe")?i&&"to"===i.get("subscription")?i.authorize():this.subscribeBack(r,t):i?("none"!==i.get("subscription")||"subscribe"===i.get("ask"))&&i.authorize():this.createRequestingContact(t)},handleOwnPresence(e){const t=e.getAttribute("from"),n=ad.getResourceFromJid(t),r=e.getAttribute("type");if(Uc.connection.jid!==t&&"unavailable"!==r&&(!0===Vc.settings.get("synchronize_availability")||Vc.settings.get("synchronize_availability")===n)){const t=id(e.querySelector("show"))("textContent")||"online";Uc.xmppstatus.save({status:t},{silent:!0});const n=id(e.querySelector("status"))("textContent");n&&Uc.xmppstatus.save({status_message:n})}Uc.jid===t&&"unavailable"===r&&Vc.user.presence.send()},presenceHandler(e){const t=e.getAttribute("type");if("error"===t)return!0;const n=e.getAttribute("from"),r=ad.getBareJidFromJid(n);if(this.isSelf(r))return this.handleOwnPresence(e);if(dd('query[xmlns="'.concat(ad.NS.MUC,'"]'),e).length)return;const i=id(e.querySelector("status"))("textContent"),o=this.get(r);if(o&&i!==o.get("status")&&o.save({status:i}),"subscribed"===t&&o)o.ackSubscribe();else if("unsubscribed"===t&&o)o.ackUnsubscribe();else{if("unsubscribe"===t)return;if("subscribe"===t)this.handleIncomingSubscription(e);else if("unavailable"===t&&o){const e=ad.getResourceFromJid(n);o.presence.removeResource(e)}else o&&o.presence.addResource(e)}}}),Uc.RosterGroup=qo.extend({initialize(t){this.set(Object.assign({description:e("Click to hide these contacts"),state:Uc.OPENED},t)),this.contacts=new Uc.RosterContacts}}),Uc.RosterGroups=ra.extend({model:Uc.RosterGroup,comparator(e,n){e=e.get("name"),n=n.get("name");const r=t,i=Object.keys(t),o=i.includes(e),s=i.includes(n);if(!o&&!s)return e.toLowerCase()<n.toLowerCase()?-1:e.toLowerCase()>n.toLowerCase()?1:0;if(o&&s)return r[e]<r[n]?-1:r[e]>r[n]?1:0;if(!o&&s){const e=Uc.HEADER_CURRENT_CONTACTS;return r[e]<r[n]?-1:r[e]>r[n]?1:0}if(o&&!s){const t=Uc.HEADER_CURRENT_CONTACTS;return r[e]<r[t]?-1:r[e]>r[t]?1:0}},fetchRosterGroups(){return new Promise(e=>{this.fetch({success:e,silent:!0})})}}),Uc.unregisterPresenceHandler=function(){void 0!==Uc.presence_ref&&(Uc.connection.deleteHandler(Uc.presence_ref),delete Uc.presence_ref)},Vc.listen.on("chatBoxesInitialized",()=>{Uc.chatboxes.on("change:num_unread",i),Uc.chatboxes.on("add",e=>{e.get("type")===Uc.PRIVATE_CHAT_TYPE&&e.setRosterContact(e.get("jid"))})}),Vc.listen.on("beforeTearDown",()=>Uc.unregisterPresenceHandler()),Vc.waitUntil("rosterContactsFetched").then(()=>{Uc.roster.on("add",e=>{const t=Uc.chatboxes.findWhere({jid:e.get("jid")});t&&t.setRosterContact(e.get("jid"))})}),Vc.listen.on("streamResumptionFailed",()=>Uc.session.set("roster_cached",!1)),Vc.listen.on("clearSession",async()=>{await o(),Uc.shouldClearCache()&&(Uc.rostergroups&&(await Uc.rostergroups.clearStore(),delete Uc.rostergroups),Uc.roster&&(Pc(Uc,"roster.data.destroy"),await Uc.roster.clearStore(),delete Uc.roster))}),Vc.listen.on("statusInitialized",async e=>{if(e)!Uc.connection.hasResumed()&&await o();else{Uc.presences=new Uc.Presences;const e="converse.presences-".concat(Uc.bare_jid);Uc.presences.browserStorage=Uc.createStore(e,"session"),Uc.presences.fetch()}Vc.trigger("presencesInitialized",e)}),Vc.listen.on("presencesInitialized",async e=>{e?Vc.trigger("rosterReadyAfterReconnection"):await async function(){await Vc.waitUntil("VCardsInitialized"),Uc.roster=new Uc.RosterContacts;let e="converse.contacts-".concat(Uc.bare_jid);Uc.roster.browserStorage=Uc.createStore(e),Uc.roster.data=new qo,e="converse-roster-model-".concat(Uc.bare_jid),Uc.roster.data.id=e,Uc.roster.data.browserStorage=Uc.createStore(e),Uc.roster.data.fetch(),e="converse.roster.groups".concat(Uc.bare_jid),Uc.rostergroups=new Uc.RosterGroups,Uc.rostergroups.browserStorage=Uc.createStore(e),Vc.trigger("rosterInitialized")}(),Uc.roster.onConnected(),Uc.registerPresenceHandler(),Uc.populateRoster(!Uc.connection.restored)}),Object.assign(Uc.api,{contacts:{async get(e){await Vc.waitUntil("rosterContactsFetched");const t=e=>Uc.roster.get(ad.getBareJidFromJid(e));if(void 0===e)e=Uc.roster.pluck("jid");else if("string"==typeof e)return t(e);return e.map(t)},async add(e,t){if(await Vc.waitUntil("rosterContactsFetched"),"string"!=typeof e||!e.includes("@"))throw new TypeError("contacts.add: invalid jid");return Uc.roster.addAndSubscribe(e,t)}}})}}); /** * @module converse-smacks * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) * @description Converse.js plugin which adds support for XEP-0198: Stream Management */ -const{Strophe:Zu}=Yc.env,ed=Yc.env.utils;Zu.addNamespace("SM","urn:xmpp:sm:3"),Yc.plugins.add("converse-smacks",{initialize(){function e(){return!(qc.connection.isType("bosh")&&!Lc.isTestEnv())&&qc.disco.stream.getFeature("sm",Zu.NS.SM)}function t(e){if(!Lc.session.get("smacks_enabled"))return!0;const t=parseInt(e.getAttribute("h"),10),n=Lc.session.get("num_stanzas_handled_by_server"),r=t-n;if(r<0){const e="New reported stanza count lower than previous. "+"New: ".concat(t," - Previous: ").concat(n);Pn.error(e)}const i=Lc.session.get("unacked_stanzas");if(r>i.length){const e="Higher reported acknowledge count than unacknowledged stanzas. "+"Reported Acknowledged Count: ".concat(r," -")+"Unacknowledged Stanza Count: ".concat(i.length," -")+"New: ".concat(t," - Previous: ").concat(n);Pn.error(e)}return Lc.session.save({num_stanzas_handled_by_server:t,num_stanzas_since_last_ack:0,unacked_stanzas:i.slice(r)}),!0}function n(){if(Lc.session.get("smacks_enabled")){const e=Lc.session.get("num_stanzas_handled"),t=ed.toStanza('<a xmlns="'.concat(Zu.NS.SM,'" h="').concat(e,'"/>'));qc.send(t)}return!0}function r(e){if(Lc.session.get("smacks_enabled")&&(ed.isTagEqual(e,"iq")||ed.isTagEqual(e,"presence")||ed.isTagEqual(e,"message"))){const e=Lc.session.get("num_stanzas_handled");Lc.session.save("num_stanzas_handled",e+1)}return!0}function i(){Lc.session&&Lc.session.save({smacks_enabled:!1,num_stanzas_handled:0,num_stanzas_handled_by_server:0,num_stanzas_since_last_ack:0,unacked_stanzas:[]})}function s(e){const t={smacks_enabled:!0};return["1","true"].includes(e.getAttribute("resume"))&&(t.smacks_stream_id=e.getAttribute("id")),Lc.session.save(t),!0}function o(e){return e.querySelector("item-not-found")?Pn.warn("Could not resume previous SMACKS session, session id not found. A new session will be established."):(Pn.error("Failed to enable stream management"),Pn.error(e.outerHTML)),i(),qc.trigger("streamResumptionFailed"),!0}function a(e){s(e),t(e),function(){const e=Lc.session.get("unacked_stanzas");Lc.session.save("unacked_stanzas",[]),e.forEach(e=>qc.send(e))}(),Lc.connection.do_bind=!1,Lc.connection.authenticated=!0,Lc.connection.restored=!0,Lc.connection._changeConnectStatus(Zu.Status.CONNECTED,null)}qc.settings.extend({enable_smacks:!0,smacks_max_unacked_stanzas:5}),qc.listen.on("userSessionInitialized",(function(){Lc.session.save({smacks_enabled:Lc.session.get("smacks_enabled")||!1,num_stanzas_handled:Lc.session.get("num_stanzas_handled")||0,num_stanzas_handled_by_server:Lc.session.get("num_stanzas_handled_by_server")||0,num_stanzas_since_last_ack:Lc.session.get("num_stanzas_since_last_ack")||0,unacked_stanzas:Lc.session.get("unacked_stanzas")||[]})})),qc.listen.on("beforeResourceBinding",(async function(){qc.settings.get("enable_smacks")&&await e()&&(Lc.connection.addHandler(r),Lc.connection.addHandler(n,Zu.NS.SM,"r"),Lc.connection.addHandler(t,Zu.NS.SM,"a"),Lc.session.get("smacks_stream_id")?await async function(){const e=ed.getResolveablePromise();Lc.connection._addSysHandler(t=>e.resolve(a(t)),Zu.NS.SM,"resumed"),Lc.connection._addSysHandler(t=>e.resolve(o(t)),Zu.NS.SM,"failed");const t=Lc.session.get("smacks_stream_id"),n=Lc.session.get("num_stanzas_handled"),r=ed.toStanza('<resume xmlns="'.concat(Zu.NS.SM,'" h="').concat(n,'" previd="').concat(t,'"/>'));qc.send(r),Lc.connection.flush(),await e}():i())})),qc.listen.on("afterResourceBinding",(async function(){if(qc.settings.get("enable_smacks")&&!Lc.session.get("smacks_enabled")&&await e()){const e=ed.getResolveablePromise();Lc.connection._addSysHandler(t=>e.resolve(s(t)),Zu.NS.SM,"enabled"),Lc.connection._addSysHandler(t=>e.resolve(o(t)),Zu.NS.SM,"failed");const t=qc.connection.isType("websocket")||Lc.isTestEnv(),n=ed.toStanza('<enable xmlns="'.concat(Zu.NS.SM,'" resume="').concat(t,'"/>'));qc.send(n),Lc.connection.flush(),await e}})),qc.listen.on("send",(function(e){if(Lc.session){if(Lc.session.get("smacks_enabled")&&(ed.isTagEqual(e,"iq")||ed.isTagEqual(e,"presence")||ed.isTagEqual(e,"message"))){const t=Zu.serialize(e);Lc.session.save("unacked_stanzas",(Lc.session.get("unacked_stanzas")||[]).concat([t]));const n=qc.settings.get("smacks_max_unacked_stanzas");if(n>0){const e=Lc.session.get("num_stanzas_since_last_ack")+1;e%n==0&&qc.send(ed.toStanza('<r xmlns="'.concat(Zu.NS.SM,'"/>'))),Lc.session.save({num_stanzas_since_last_ack:e})}}}else Pn.warn("No _converse.session!")}))}}); +const{Strophe:fd}=rl.env,pd=rl.env.utils;function gd(){return!(Vc.connection.isType("bosh")&&!Uc.isTestEnv())&&Vc.disco.stream.getFeature("sm",fd.NS.SM)}function md(e){if(!Uc.session.get("smacks_enabled"))return!0;const t=parseInt(e.getAttribute("h"),10),n=Uc.session.get("num_stanzas_handled_by_server"),r=t-n;if(r<0){const e="New reported stanza count lower than previous. "+"New: ".concat(t," - Previous: ").concat(n);zn.error(e)}const i=Uc.session.get("unacked_stanzas");if(r>i.length){const e="Higher reported acknowledge count than unacknowledged stanzas. "+"Reported Acknowledged Count: ".concat(r," -")+"Unacknowledged Stanza Count: ".concat(i.length," -")+"New: ".concat(t," - Previous: ").concat(n);zn.error(e)}return Uc.session.save({num_stanzas_handled_by_server:t,num_stanzas_since_last_ack:0,unacked_stanzas:i.slice(r)}),!0}function vd(){if(Uc.session.get("smacks_enabled")){const e=Uc.session.get("num_stanzas_handled"),t=pd.toStanza('<a xmlns="'.concat(fd.NS.SM,'" h="').concat(e,'"/>'));Vc.send(t)}return!0}function _d(e){if(Uc.session.get("smacks_enabled")&&(pd.isTagEqual(e,"iq")||pd.isTagEqual(e,"presence")||pd.isTagEqual(e,"message"))){const e=Uc.session.get("num_stanzas_handled");Uc.session.save("num_stanzas_handled",e+1)}return!0}function bd(){Uc.session.save({smacks_enabled:Uc.session.get("smacks_enabled")||!1,num_stanzas_handled:Uc.session.get("num_stanzas_handled")||0,num_stanzas_handled_by_server:Uc.session.get("num_stanzas_handled_by_server")||0,num_stanzas_since_last_ack:Uc.session.get("num_stanzas_since_last_ack")||0,unacked_stanzas:Uc.session.get("unacked_stanzas")||[]})}function yd(){Uc.session&&Uc.session.save({smacks_enabled:!1,num_stanzas_handled:0,num_stanzas_handled_by_server:0,num_stanzas_since_last_ack:0,unacked_stanzas:[]})}function wd(e){const t={smacks_enabled:!0};return["1","true"].includes(e.getAttribute("resume"))&&(t.smacks_stream_id=e.getAttribute("id")),Uc.session.save(t),!0}function Sd(e){return e.querySelector("item-not-found")?zn.warn("Could not resume previous SMACKS session, session id not found. A new session will be established."):(zn.error("Failed to enable stream management"),zn.error(e.outerHTML)),yd(),Vc.trigger("streamResumptionFailed"),!0}function xd(e){wd(e),md(e),function(){const e=Uc.session.get("unacked_stanzas");Uc.session.save("unacked_stanzas",[]),e.forEach(e=>Vc.send(e))}(),Uc.connection.do_bind=!1,Uc.connection.authenticated=!0,Uc.connection.restored=!0,Uc.connection._changeConnectStatus(fd.Status.CONNECTED,null)}async function Ed(){if(Vc.settings.get("enable_smacks")&&!Uc.session.get("smacks_enabled")&&await gd()){const e=pd.getResolveablePromise();Uc.connection._addSysHandler(t=>e.resolve(wd(t)),fd.NS.SM,"enabled"),Uc.connection._addSysHandler(t=>e.resolve(Sd(t)),fd.NS.SM,"failed");const t=Vc.connection.isType("websocket")||Uc.isTestEnv(),n=pd.toStanza('<enable xmlns="'.concat(fd.NS.SM,'" resume="').concat(t,'"/>'));Vc.send(n),Uc.connection.flush(),await e}}fd.addNamespace("SM","urn:xmpp:sm:3");const Ad=[];async function Cd(){if(!Vc.settings.get("enable_smacks"))return;if(!await gd())return;const e=Uc.connection;for(;Ad.length;)e.deleteHandler(Ad.pop());Ad.push(e.addHandler(_d)),Ad.push(e.addHandler(vd,fd.NS.SM,"r")),Ad.push(e.addHandler(md,fd.NS.SM,"a")),Uc.session.get("smacks_stream_id")?await async function(){const e=pd.getResolveablePromise();Uc.connection._addSysHandler(t=>e.resolve(xd(t)),fd.NS.SM,"resumed"),Uc.connection._addSysHandler(t=>e.resolve(Sd(t)),fd.NS.SM,"failed");const t=Uc.session.get("smacks_stream_id"),n=Uc.session.get("num_stanzas_handled"),r=pd.toStanza('<resume xmlns="'.concat(fd.NS.SM,'" h="').concat(n,'" previd="').concat(t,'"/>'));Vc.send(r),Uc.connection.flush(),await e}():yd()}function jd(e){if(Uc.session){if(Uc.session.get("smacks_enabled")&&(pd.isTagEqual(e,"iq")||pd.isTagEqual(e,"presence")||pd.isTagEqual(e,"message"))){const t=fd.serialize(e);Uc.session.save("unacked_stanzas",(Uc.session.get("unacked_stanzas")||[]).concat([t]));const n=Vc.settings.get("smacks_max_unacked_stanzas");if(n>0){const e=Uc.session.get("num_stanzas_since_last_ack")+1;e%n==0&&Vc.send(pd.toStanza('<r xmlns="'.concat(fd.NS.SM,'"/>'))),Uc.session.save({num_stanzas_since_last_ack:e})}}}else zn.warn("No _converse.session!")}rl.plugins.add("converse-smacks",{initialize(){Vc.settings.extend({enable_smacks:!0,smacks_max_unacked_stanzas:5}),Vc.listen.on("afterResourceBinding",Ed),Vc.listen.on("beforeResourceBinding",Cd),Vc.listen.on("send",jd),Vc.listen.on("userSessionInitialized",bd)}}); /** * @module converse-vcard * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:td,$iq:nd,dayjs:rd}=Yc.env,id=Yc.env.utils;Yc.plugins.add("converse-vcard",{dependencies:["converse-status","converse-roster"],overrides:{XMPPStatus:{getNickname(){const{_converse:e}=this.__super__,t=this.__super__.getNickname.apply(this);return!t&&e.xmppstatus.vcard?e.xmppstatus.vcard.get("nickname"):t},getFullname(){const{_converse:e}=this.__super__,t=this.__super__.getFullname.apply(this);return!t&&e.xmppstatus.vcard?e.xmppstatus.vcard.get("fullname"):t}},RosterContact:{getDisplayName(){return!this.get("nickname")&&this.vcard?this.vcard.getDisplayName():this.__super__.getDisplayName.apply(this)},getFullname(){return this.vcard?this.vcard.get("fullname"):this.__super__.getFullname.apply(this)}}},initialize(){function e(e,t,n){const r=nd(t?{type:e,to:t}:{type:e});return n?r.cnode(n):r.c("vCard",{xmlns:td.NS.VCARD}),r}async function t(t,n){const r=td.getBareJidFromJid(n)===t.bare_jid?null:n;let i;try{i=await qc.sendIQ(e("get",r))}catch(i){return{stanza:i,jid:n,vcard_error:(new Date).toISOString()}}return async function(e,t){const n=t.querySelector("vCard");let r={};var i,s,o,a,c,l,u;if(null!==n&&(r={stanza:t,fullname:null===(i=n.querySelector("FN"))||void 0===i?void 0:i.textContent,nickname:null===(s=n.querySelector("NICKNAME"))||void 0===s?void 0:s.textContent,image:null===(o=n.querySelector("PHOTO BINVAL"))||void 0===o?void 0:o.textContent,image_type:null===(a=n.querySelector("PHOTO TYPE"))||void 0===a?void 0:a.textContent,url:null===(c=n.querySelector("URL"))||void 0===c?void 0:c.textContent,role:null===(l=n.querySelector("ROLE"))||void 0===l?void 0:l.textContent,email:null===(u=n.querySelector("EMAIL USERID"))||void 0===u?void 0:u.textContent,vcard_updated:(new Date).toISOString(),vcard_error:void 0}),r.image){const e=id.base64ToArrayBuffer(r.image),t=await crypto.subtle.digest("SHA-1",e);r.image_hash=id.arrayBufferToHex(t)}return r}(0,i)}async function n(e){let t;if(e instanceof Lc.Message){if("error"===e.get("type"))return;t=e.get("from")}else t=e.get("jid");await qc.waitUntil("VCardsInitialized"),e.vcard=Lc.vcards.findWhere({jid:t}),e.vcard||(e.vcard=Lc.vcards.create({jid:t})),e.vcard.on("change",()=>e.trigger("vcard:change"))}async function r(e){await qc.waitUntil("VCardsInitialized"),["error","info"].includes(e.get("type"))||(e.vcard=function(e){var t;const n=null==e||null===(t=e.collection)||void 0===t?void 0:t.chatbox,r=td.getResourceFromJid(e.get("from"));if(n&&n.get("nick")===r)return Lc.xmppstatus.vcard;{const t=e.occupant&&e.occupant.get("jid")||e.get("from");return t?Lc.vcards.findWhere({jid:t})||Lc.vcards.create({jid:t}):void Pn.error("Could not assign VCard for message because no JID found! msgid: ".concat(e.get("msgid")))}}(e))}qc.promises.add("VCardsInitialized"),Lc.VCard=Rs.extend({defaults:{image:Lc.DEFAULT_IMAGE,image_type:Lc.DEFAULT_IMAGE_TYPE},set(e,t,n){let r;return"object"==typeof e?(r=e,n=t):(r={})[e]=t,"image"in r&&!r.image?(r.image=Lc.DEFAULT_IMAGE,r.image_type=Lc.DEFAULT_IMAGE_TYPE,Rs.prototype.set.call(this,r,n)):Rs.prototype.set.apply(this,arguments)},getDisplayName(){return this.get("nickname")||this.get("fullname")||this.get("jid")}}),Lc.VCards=Yo.extend({model:Lc.VCard,initialize(){this.on("add",e=>e.get("jid")&&qc.vcard.update(e))}}),Lc.initVCardCollection=async function(){Lc.vcards=new Lc.VCards,Lc.vcards.browserStorage=Lc.createStore("".concat(Lc.bare_jid,"-converse.vcards")),await new Promise(e=>{Lc.vcards.fetch({success:e,error:e},{silent:!0})});const e=Lc.vcards;if(Lc.session){const t=Lc.session.get("bare_jid");Lc.xmppstatus.vcard=e.findWhere({jid:t})||e.create({jid:t})}qc.trigger("VCardsInitialized")},qc.listen.on("chatBoxInitialized",e=>n(e)),qc.listen.on("chatRoomInitialized",e=>n(e)),qc.listen.on("chatRoomMessageInitialized",e=>r(e)),qc.listen.on("addClientFeatures",()=>qc.disco.own.features.add(td.NS.VCARD)),qc.listen.on("clearSession",()=>{Lc.shouldClearCache()&&(qc.promises.add("VCardsInitialized"),Lc.vcards&&(Lc.vcards.clearStore(),delete Lc.vcards))}),qc.listen.on("messageInitialized",e=>n(e)),qc.listen.on("rosterContactInitialized",e=>n(e)),qc.listen.on("statusInitialized",Lc.initVCardCollection),Object.assign(Lc.api,{vcard:{async set(t,n){if(!t)throw Error("No jid provided for the VCard data");const r=document.createElement("div"),i=id.toStanza('\n <vCard xmlns="vcard-temp">\n <FN>'.concat(n.fn,"</FN>\n <NICKNAME>").concat(n.nickname,"</NICKNAME>\n <URL>").concat(n.url,"</URL>\n <ROLE>").concat(n.role,"</ROLE>\n <EMAIL><INTERNET/><PREF/><USERID>").concat(n.email,"</USERID></EMAIL>\n <PHOTO>\n <TYPE>").concat(n.image_type,"</TYPE>\n <BINVAL>").concat(n.image,"</BINVAL>\n </PHOTO>\n </vCard>"),r);let s;try{s=await qc.sendIQ(e("set",t,i))}catch(e){throw e}return await qc.vcard.update(t,!0),s},get(e,n){if("string"==typeof e)return t(Lc,e);if(!n&&e.get("vcard_updated")&&rd(e.get("vcard_error")).isSame(new Date,"day"))return Promise.resolve({});{const n=e.get("jid");return n||Pn.error("No JID to get vcard for"),t(Lc,n)}},async update(e,t){const n=await this.get(e,t);(e="string"==typeof e?Lc.vcards.findWhere({jid:e}):e)?(delete n.stanza,e.save(n)):Pn.error("Could not find a VCard model for ".concat(e))}}})}});var sd=n(53),od=n.n(sd);function ad(e,t){return"string"==typeof e&&t.includes(e)}function cd(e,t){return"string"!=typeof e||"en"!==e&&!t(e)? +const{Strophe:Td,$iq:Od,dayjs:kd}=rl.env,Nd=rl.env.utils;rl.plugins.add("converse-vcard",{dependencies:["converse-status","converse-roster"],overrides:{XMPPStatus:{getNickname(){const{_converse:e}=this.__super__,t=this.__super__.getNickname.apply(this);return!t&&e.xmppstatus.vcard?e.xmppstatus.vcard.get("nickname"):t},getFullname(){const{_converse:e}=this.__super__,t=this.__super__.getFullname.apply(this);return!t&&e.xmppstatus.vcard?e.xmppstatus.vcard.get("fullname"):t}},RosterContact:{getDisplayName(){return!this.get("nickname")&&this.vcard?this.vcard.getDisplayName():this.__super__.getDisplayName.apply(this)},getFullname(){return this.vcard?this.vcard.get("fullname"):this.__super__.getFullname.apply(this)}}},initialize(){function e(e,t,n){const r=Od(t?{type:e,to:t}:{type:e});return n?r.cnode(n):r.c("vCard",{xmlns:Td.NS.VCARD}),r}async function t(t,n){const r=Td.getBareJidFromJid(n)===t.bare_jid?null:n;let i;try{i=await Vc.sendIQ(e("get",r))}catch(i){return{stanza:i,jid:n,vcard_error:(new Date).toISOString()}}return async function(e,t){const n=t.querySelector("vCard");let r={};var i,o,s,a,c,l,u;if(null!==n&&(r={stanza:t,fullname:null===(i=n.querySelector("FN"))||void 0===i?void 0:i.textContent,nickname:null===(o=n.querySelector("NICKNAME"))||void 0===o?void 0:o.textContent,image:null===(s=n.querySelector("PHOTO BINVAL"))||void 0===s?void 0:s.textContent,image_type:null===(a=n.querySelector("PHOTO TYPE"))||void 0===a?void 0:a.textContent,url:null===(c=n.querySelector("URL"))||void 0===c?void 0:c.textContent,role:null===(l=n.querySelector("ROLE"))||void 0===l?void 0:l.textContent,email:null===(u=n.querySelector("EMAIL USERID"))||void 0===u?void 0:u.textContent,vcard_updated:(new Date).toISOString(),vcard_error:void 0}),r.image){const e=Nd.base64ToArrayBuffer(r.image),t=await crypto.subtle.digest("SHA-1",e);r.image_hash=Nd.arrayBufferToHex(t)}return r}(0,i)}async function n(e){let t;if(e instanceof Uc.Message){if("error"===e.get("type"))return;t=e.get("from")}else t=e.get("jid");await Vc.waitUntil("VCardsInitialized"),e.vcard=Uc.vcards.findWhere({jid:t}),e.vcard||(e.vcard=Uc.vcards.create({jid:t})),e.vcard.on("change",()=>e.trigger("vcard:change"))}async function r(e){await Vc.waitUntil("VCardsInitialized"),["error","info"].includes(e.get("type"))||(e.vcard=function(e){var t;const n=null==e||null===(t=e.collection)||void 0===t?void 0:t.chatbox,r=Td.getResourceFromJid(e.get("from"));if(n&&n.get("nick")===r)return Uc.xmppstatus.vcard;{const t=e.occupant&&e.occupant.get("jid")||e.get("from");return t?Uc.vcards.findWhere({jid:t})||Uc.vcards.create({jid:t}):void zn.error("Could not assign VCard for message because no JID found! msgid: ".concat(e.get("msgid")))}}(e))}Vc.promises.add("VCardsInitialized"),Uc.VCard=qo.extend({defaults:{image:Uc.DEFAULT_IMAGE,image_type:Uc.DEFAULT_IMAGE_TYPE},set(e,t,n){let r;return"object"==typeof e?(r=e,n=t):(r={})[e]=t,"image"in r&&!r.image?(r.image=Uc.DEFAULT_IMAGE,r.image_type=Uc.DEFAULT_IMAGE_TYPE,qo.prototype.set.call(this,r,n)):qo.prototype.set.apply(this,arguments)},getDisplayName(){return this.get("nickname")||this.get("fullname")||this.get("jid")}}),Uc.VCards=ra.extend({model:Uc.VCard,initialize(){this.on("add",e=>e.get("jid")&&Vc.vcard.update(e))}}),Uc.initVCardCollection=async function(){Uc.vcards=new Uc.VCards,Uc.vcards.browserStorage=Uc.createStore("".concat(Uc.bare_jid,"-converse.vcards")),await new Promise(e=>{Uc.vcards.fetch({success:e,error:e},{silent:!0})});const e=Uc.vcards;if(Uc.session){const t=Uc.session.get("bare_jid");Uc.xmppstatus.vcard=e.findWhere({jid:t})||e.create({jid:t})}Vc.trigger("VCardsInitialized")},Vc.listen.on("chatBoxInitialized",e=>n(e)),Vc.listen.on("chatRoomInitialized",e=>n(e)),Vc.listen.on("chatRoomMessageInitialized",e=>r(e)),Vc.listen.on("addClientFeatures",()=>Vc.disco.own.features.add(Td.NS.VCARD)),Vc.listen.on("clearSession",()=>{Uc.shouldClearCache()&&(Vc.promises.add("VCardsInitialized"),Uc.vcards&&(Uc.vcards.clearStore(),delete Uc.vcards))}),Vc.listen.on("messageInitialized",e=>n(e)),Vc.listen.on("rosterContactInitialized",e=>n(e)),Vc.listen.on("statusInitialized",Uc.initVCardCollection),Object.assign(Uc.api,{vcard:{async set(t,n){if(!t)throw Error("No jid provided for the VCard data");const r=document.createElement("div"),i=Nd.toStanza('\n <vCard xmlns="vcard-temp">\n <FN>'.concat(n.fn,"</FN>\n <NICKNAME>").concat(n.nickname,"</NICKNAME>\n <URL>").concat(n.url,"</URL>\n <ROLE>").concat(n.role,"</ROLE>\n <EMAIL><INTERNET/><PREF/><USERID>").concat(n.email,"</USERID></EMAIL>\n <PHOTO>\n <TYPE>").concat(n.image_type,"</TYPE>\n <BINVAL>").concat(n.image,"</BINVAL>\n </PHOTO>\n </vCard>"),r);let o;try{o=await Vc.sendIQ(e("set",t,i))}catch(e){throw e}return await Vc.vcard.update(t,!0),o},get(e,n){if("string"==typeof e)return t(Uc,e);if(!n&&e.get("vcard_updated")&&kd(e.get("vcard_error")).isSame(new Date,"day"))return Promise.resolve({});{const n=e.get("jid");return n||zn.error("No JID to get vcard for"),t(Uc,n)}},async update(e,t){const n=await this.get(e,t);(e="string"==typeof e?Uc.vcards.findWhere({jid:e}):e)?(delete n.stanza,e.save(n)):zn.error("Could not find a VCard model for ".concat(e))}}})}});var Id=n(67),Md=n.n(Id);function Rd(e,t){return"string"==typeof e&&t.includes(e)}function Dd(e,t){return"string"!=typeof e||"en"!==e&&!t(e)? /** * @module i18n * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) * @description This is the internationalization module */ -function(e){var t,n;if(window.navigator.userLanguage&&(t=ld(window.navigator.userLanguage,e)),window.navigator.languages&&!t)for(n=0;n<window.navigator.languages.length&&!t;n++)t=ld(window.navigator.languages[n],e);return window.navigator.browserLanguage&&!t&&(t=ld(window.navigator.browserLanguage,e)),window.navigator.language&&!t&&(t=ld(window.navigator.language,e)),window.navigator.systemLanguage&&!t&&(t=ld(window.navigator.systemLanguage,e)),t||"en"}(t)||"en":e}function ld(e,t){if(t(e))return e;var n=e.split("-")[0];return n!==e&&t(n)?n:void 0}let ud;Object.assign(Pc,{getLocale:(e,t)=>cd(e,e=>ad(e,t)),translate(e){if(!ud)return od.a.sprintf.apply(od.a,arguments);const t=ud.translate(e);return arguments.length>1?t.fetch.apply(t,[].slice.call(arguments,1)):t.fetch()},async initialize(){if(Lc.isTestEnv())Lc.locale="en";else try{Lc.locale=Pc.getLocale(qc.settings.get("i18n"),qc.settings.get("locales")),await async function(e){const{api:t,locale:r}=e;if(!ad(r,t.settings.get("locales"))||"en"===r)return;const{default:i}=await n(406)("./".concat(r,"/LC_MESSAGES/converse.po"));await n(407)("./".concat(r.toLowerCase().replace("_","-"))),Sn.a.locale(cd(r,e=>Sn.a.locale(e))),ud=new od.a(i)}(Lc)}catch(e){Pn.fatal(e.message),Lc.locale="en"}},__:(...e)=>Pc.translate(...e)});const dd=Pc.__,hd={};qc.elements={registry:hd,define:function(e,t){this.registry[e]=t},register:function(){Object.keys(hd).forEach(e=>{customElements.get(e)||customElements.define(e,hd[e])})}}, +function(e){var t,n;if(window.navigator.userLanguage&&(t=Pd(window.navigator.userLanguage,e)),window.navigator.languages&&!t)for(n=0;n<window.navigator.languages.length&&!t;n++)t=Pd(window.navigator.languages[n],e);return window.navigator.browserLanguage&&!t&&(t=Pd(window.navigator.browserLanguage,e)),window.navigator.language&&!t&&(t=Pd(window.navigator.language,e)),window.navigator.systemLanguage&&!t&&(t=Pd(window.navigator.systemLanguage,e)),t||"en"}(t)||"en":e}function Pd(e,t){if(t(e))return e;var n=e.split("-")[0];return n!==e&&t(n)?n:void 0}let Ld;Object.assign(Hc,{getLocale:(e,t)=>Dd(e,e=>Rd(e,t)),translate(e){if(!Ld)return Md.a.sprintf.apply(Md.a,arguments);const t=Ld.translate(e);return arguments.length>1?t.fetch.apply(t,[].slice.call(arguments,1)):t.fetch()},async initialize(){if(Uc.isTestEnv())Uc.locale="en";else try{Uc.locale=Hc.getLocale(Vc.settings.get("i18n"),Vc.settings.get("locales")),await async function(e){const{api:t,locale:r}=e,i=r.toLowerCase().replace("_","-");if(!Rd(r,t.settings.get("locales"))||"en"===r)return;const{default:o}=await n(494)("./".concat(r,"/LC_MESSAGES/converse.po"));await n(495)("./".concat(i)),En.a.locale(Dd(i,e=>En.a.locale(e))),Ld=new Md.a(o)}(Uc)}catch(e){zn.fatal(e.message),Uc.locale="en"}},__:(...e)=>Hc.translate(...e)});const zd=Hc.__,Fd={};Vc.elements={registry:Fd,define:function(e,t){this.registry[e]=t},register:function(){Object.keys(Fd).forEach(e=>{customElements.get(e)||customElements.define(e,Fd[e])})}}; /** * @module converse-autocomplete * @copyright Lea Verou and the Converse.js contributors @@ -379,19 +388,19 @@ function(e){var t,n;if(window.navigator.userLanguage&&(t=ld(window.navigator.use * https://leaverou.github.io/awesomplete/ * @license Mozilla Public License (MPLv2) */ -Yc.MENTION_BOUNDARIES=['"',"(","<","#","!","\\","/","+","~","[","{","^",">"];const fd=Yc.env.utils,pd=function(e,t){return RegExp(_d.regExpEscape(t.trim()),"i").test(e)},gd=function(e,t){return RegExp("^"+_d.regExpEscape(t.trim()),"i").test(e)},md=function(e,t){const n=e.query.toLowerCase(),r=e.label.toLowerCase().indexOf(n),i=t.label.toLowerCase().indexOf(n);return r===i?function(e,t){return e.length!==t.length?e.length-t.length:e<t?-1:1}(e,t):(-1===r?1/0:r)<(-1===i?1/0:i)?-1:1},vd=(e,t)=>{t=t.trim();const n=document.createElement("li");n.setAttribute("aria-selected","false");const r=new RegExp("("+t+")","ig");return(t?e.split(r):[e]).forEach(e=>{if(t&&e.match(r)){const t=document.createElement("mark");t.textContent=e,n.appendChild(t)}else n.appendChild(document.createTextNode(e))}),n},_d={getElement:(e,t)=>"string"==typeof e?(t||document).querySelector(e):e||null,bind(e,t){if(e)for(var n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const r=t[n];n.split(/\s+/).forEach(t=>e.addEventListener(t,r))}},unbind(e,t){if(e)for(var n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const r=t[n];n.split(/\s+/).forEach(t=>e.removeEventListener(t,r))}},regExpEscape:e=>e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&"),isMention:(e,t,n)=>t.includes(e[0])||n.includes(e[0])&&t.includes(e[1])};class bd extends String{constructor(e,t){super();const n=Array.isArray(e)?{label:e[0],value:e[1]}:"object"==typeof e&&"label"in e&&"value"in e?e:{label:e,value:e};this.label=n.label||n.value,this.value=n.value,this.query=t}get lenth(){return this.label.length}toString(){return""+this.label}valueOf(){return this.toString()}}class yd{constructor(e,t={}){this.is_opened=!1,fd.hasClass("suggestion-box",e)?this.container=e:this.container=e.querySelector(".suggestion-box"),this.input=this.container.querySelector(".suggestion-box__input"),this.input.setAttribute("aria-autocomplete","list"),this.ul=this.container.querySelector(".suggestion-box__results"),this.status=this.container.querySelector(".suggestion-box__additions"),Object.assign(this,{match_current_word:!1,ac_triggers:[],include_triggers:[],min_chars:2,max_items:10,auto_evaluate:!0,auto_first:!1,data:e=>e,filter:pd,sort:!1!==t.sort&&md,item:vd},t),this.index=-1,this.bindEvents(),this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||t.list||[]}bindEvents(){const e={blur:()=>this.close({reason:"blur"})};this.auto_evaluate&&(e.input=()=>this.evaluate()),this._events={input:e,form:{submit:()=>this.close({reason:"submit"})},ul:{mousedown:e=>this.onMouseDown(e),mouseover:e=>this.onMouseOver(e)}},_d.bind(this.input,this._events.input),_d.bind(this.input.form,this._events.form),_d.bind(this.ul,this._events.ul)}set list(e){if(Array.isArray(e)||"function"==typeof e)this._list=e;else if("string"==typeof e&&e.includes(","))this._list=e.split(/\s*,\s*/);else{var t;const n=(null===(t=_d.getElement(e))||void 0===t?void 0:t.children)||[];this._list=Array.from(n).filter(e=>!e.disabled).map(e=>{const t=e.textContent.trim(),n=e.value||t,r=e.label||t;return""!==n?{label:r,value:n}:null}).filter(e=>e)}document.activeElement===this.input&&this.evaluate()}get list(){return this._list}get selected(){return this.index>-1}get opened(){return this.is_opened}close(e){this.opened&&(this.ul.setAttribute("hidden",""),this.is_opened=!1,this.index=-1,this.trigger("suggestion-box-close",e||{}))}insertValue(e){this.match_current_word?fd.replaceCurrentWord(this.input,e.value,Yc.MENTION_BOUNDARIES):this.input.value=e.value}open(){this.ul.removeAttribute("hidden"),this.is_opened=!0,this.auto_first&&-1===this.index&&this.goto(0),this.trigger("suggestion-box-open")}destroy(){_d.unbind(this.input,this._events.input),_d.unbind(this.input.form,this._events.form),this.input.removeAttribute("aria-autocomplete")}next(){const e=this.ul.children.length;this.goto(this.index<e-1?this.index+1:e?0:-1)}previous(){const e=this.ul.children.length,t=this.index-1;this.goto(this.selected&&-1!==t?t:e-1)}goto(e){const t=this.ul.children;this.selected&&t[this.index].setAttribute("aria-selected","false"),this.index=e,e>-1&&t.length>0&&(t[e].setAttribute("aria-selected","true"),t[e].focus(),this.status.textContent=t[e].textContent,this.ul.scrollTop=t[e].offsetTop-this.ul.clientHeight+t[e].clientHeight,this.trigger("suggestion-box-highlight",{text:this.suggestions[this.index]}))}select(e){if(e?this.index=fd.siblingIndex(e):e=this.ul.children[this.index],e){const e=this.suggestions[this.index];this.insertValue(e),this.close({reason:"select"}),this.auto_completing=!1,this.trigger("suggestion-box-selectcomplete",{text:e})}}onMouseOver(e){const t=fd.ancestor(e.target,"li");t&&this.goto(Array.prototype.slice.call(this.ul.children).indexOf(t))}onMouseDown(e){if(0!==e.button)return;const t=fd.ancestor(e.target,"li");t&&(e.preventDefault(),this.select(t,e.target))}onKeyDown(e){if(this.opened){if([Yc.keycodes.ENTER,Yc.keycodes.TAB].includes(e.keyCode)&&this.selected)return e.preventDefault(),e.stopPropagation(),this.select(),!0;if(e.keyCode===Yc.keycodes.ESCAPE)return this.close({reason:"esc"}),!0;if([Yc.keycodes.UP_ARROW,Yc.keycodes.DOWN_ARROW].includes(e.keyCode))return e.preventDefault(),e.stopPropagation(),this[e.keyCode===Yc.keycodes.UP_ARROW?"previous":"next"](),!0}if(![Yc.keycodes.SHIFT,Yc.keycodes.META,Yc.keycodes.META_RIGHT,Yc.keycodes.ESCAPE,Yc.keycodes.ALT].includes(e.keyCode))if(this.ac_triggers.includes(e.key))"Tab"===e.key&&e.preventDefault(),this.auto_completing=!0;else if("Backspace"===e.key){const t=fd.getCurrentWord(e.target,e.target.selectionEnd-1);_d.isMention(t,this.ac_triggers,Yc.MENTION_BOUNDARIES)&&(this.auto_completing=!0)}}async evaluate(e){const t=this.selected&&e&&(e.keyCode===Yc.keycodes.UP_ARROW||e.keyCode===Yc.keycodes.DOWN_ARROW);if(!this.auto_evaluate&&!this.auto_completing||t)return;const n="function"==typeof this._list?await this._list():this._list;if(0===n.length)return;let r=this.match_current_word?fd.getCurrentWord(this.input):this.input.value;const i=_d.isMention(r,this.ac_triggers,Yc.MENTION_BOUNDARIES);i&&(this.auto_completing=!0,this.include_triggers.includes(e.key)||(r=Yc.MENTION_BOUNDARIES.includes(r[0])?r.slice("2"):r.slice("1"))),(i||r.length)&&r.length>=this.min_chars?(this.index=-1,this.ul.innerHTML="",this.suggestions=n.map(e=>new bd(this.data(e,r),r)).filter(e=>this.filter(e,r)),!1!==this.sort&&(this.suggestions=this.suggestions.sort(this.sort)),this.suggestions=this.suggestions.slice(0,this.max_items),this.suggestions.forEach(e=>this.ul.appendChild(this.item(e,r))),0===this.ul.children.length?this.close({reason:"nomatches"}):this.open()):(this.close({reason:"nomatches"}),i||(this.auto_completing=!1))}}function wd(){const e=xd(['\n <div class="list-container list-container--bookmarks ','">\n <a class="list-toggle bookmarks-toggle controlbox-padded"\n title="','"\n @click=','>\n\n <span class="fa ','">\n </span> ','</a>\n <div class="items-list bookmarks rooms-list ','">\n ',"\n </div>\n </div>\n "]);return wd=function(){return e},e}function Sd(){const e=xd(['\n <div class="list-item controlbox-padded room-item available-chatroom d-flex flex-row ','" data-room-jid="','">\n <a class="list-item-link open-room w-100" data-room-jid="','"\n title="','"\n @click=',">",'</a>\n\n <a class="list-item-action remove-bookmark fa fa-bookmark align-self-center ','"\n data-room-jid="','"\n data-bookmark-name="','"\n title="','"\n @click=',"></a>\n </div>\n "]);return Sd=function(){return e},e}function xd(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Object.assign(yd.prototype,hi),Yc.plugins.add("converse-autocomplete",{initialize(){const e=this._converse;e.FILTER_CONTAINS=pd,e.FILTER_STARTSWITH=gd,e.AutoComplete=yd}});var Ed=e=>{const t=dd("Click to toggle the bookmarks list"),n=dd("Bookmarks");return Ga(wd(),e.hidden?"":"hidden",t,e.toggleBookmarksList,e.toggle_state===e._converse.OPENED?"fa-caret-down":"fa-caret-right",n,e.toggle_state!==e._converse.OPENED?"hidden":"",e.bookmarks.map(t=>(e=>{const t=dd("Unbookmark this groupchat"),n=dd("Click to open this groupchat");return Ga(Sd(),e.is_hidden(e.bm)?"hidden":"",e.bm.get("jid"),e.bm.get("jid"),n,e.openRoom,e.bm.getDisplayName(),e.bm.get("bookmarked")?"button-on":"",e.bm.get("jid"),e.bm.getDisplayName(),t,e.removeBookmark)})(Object.assign({bm:t},e))))};function Ad(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="converse-form chatroom-form" @submit=',">\n <legend>",'</legend>\n <fieldset class="form-group">\n <label for="converse_muc_bookmark_name">','</label>\n <input class="form-control" type="text" value="','" name="name" required="required" id="converse_muc_bookmark_name"/>\n </fieldset>\n <fieldset class="form-group">\n <label for="converse_muc_bookmark_nick">','</label>\n <input class="form-control" type="text" name="nick" value="','" id="converse_muc_bookmark_nick"/>\n </fieldset>\n <fieldset class="form-group form-check">\n <input class="form-check-input" id="converse_muc_bookmark_autojoin" type="checkbox" name="autojoin"/>\n <label class="form-check-label" for="converse_muc_bookmark_autojoin">','</label>\n </fieldset>\n <fieldset class="form-group">\n <input class="btn btn-primary" type="submit" value="','">\n <input class="btn btn-secondary button-cancel" type="button" value="','" @click=',">\n </fieldset>\n </form>\n "]);return Ad=function(){return e},e}const Cd=/^\s*</,jd=("undefined"!=typeof Element&&Element.prototype,function(e){this.cid=di("view"),this._domEvents=[],this.preinitialize.apply(this,arguments),xr(this,Ms(e,Od)),this._ensureElement(),this.initialize.apply(this,arguments)});jd.extend=Wr;const Td=/^(\S+)\s*(.*)$/,Od=["model","collection","el","id","attributes","className","tagName","events"];Object.assign(jd.prototype,hi,{tagName:"div",$:function(e){return this.el.querySelectorAll(e)},preinitialize:function(){},initialize:function(){},render:function(){return M(this.beforeRender)&&this.beforeRender(),M(this.toHTML)&&Wa(this.toHTML(),this.el),M(this.afterRender)&&this.afterRender(),this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.undelegateEvents(),this.el.parentNode&&this.el.parentNode.removeChild(this.el)},setElement:function(e){return this.undelegateEvents(),this._setElement(e),this.delegateEvents(),this},_setElement:function(e){if("string"==typeof e)if(Cd.test(e)){const t=document.createElement("div");t.innerHTML=e,this.el=t.firstChild}else this.el=document.querySelector(e);else e&&!Mn(e)&&e.length?this.el=e[0]:this.el=e},delegateEvents:function(e){if(e||(e=$r(this,"events")),!e)return this;this.undelegateEvents();for(const t in e){let n=e[t];if(M(n)||(n=this[n]),!n)continue;const r=t.match(Td);this.delegate(r[1],r[2],n.bind(this))}return this},delegate:function(e,t,n){const r=this.el;if(!r)return this;if("function"==typeof t&&(n=t,t=null),-1!==["focus","blur"].indexOf(e)){const r=this.el.querySelectorAll(t);for(let t=0,i=r.length;t<i;t++){const i=r[t];i.addEventListener(e,n,!1),this._domEvents.push({el:i,eventName:e,handler:n})}return n}const i=t?function(e){let i=e.target||e.srcElement;for(;i&&i!=r;i=i.parentNode)i.matches(t)&&(e.delegateTarget=i,n(e))}:n;return this.el.addEventListener(e,i,!1),this._domEvents.push({el:this.el,eventName:e,handler:i,listener:n,selector:t}),this},undelegateEvents:function(){if(this.el){for(let e=0,t=this._domEvents.length;e<t;e++){const t=this._domEvents[e];t.el.removeEventListener(t.eventName,t.handler,!1)}this._domEvents.length=0}return this},undelegate:function(e,t,n){if("function"==typeof t&&(n=t,t=null),this.el){const r=this._domEvents.slice();let i=r.length;for(;i--;){const s=r[i];!(s.eventName!==e||n&&s.listener!==n||t&&s.selector!==t)&&(s.el.removeEventListener(s.eventName,s.handler,!1),this._domEvents.splice(i,1))}}return this},_createElement:function(e){return document.createElement(e)},_ensureElement:function(){if(this.el)this.setElement($r(this,"el"));else{const e=xr({},$r(this,"attributes"));this.id&&(e.id=$r(this,"id")),this.className&&(e.class=$r(this,"className")),this.setElement(this._createElement($r(this,"tagName"))),this._setAttributes(e)}},_setAttributes:function(e){for(const t in e)t in this.el?this.el[t]=e[t]:this.el.setAttribute(t,e[t])}});var kd=wr((function(e,t,n){var r=-1,i="function"==typeof t,s=Xe(e)?Array(e.length):[];return uo(e,(function(e){s[++r]=i?pr(t,e,n):Oc(e,t,n)})),s})); +const Bd=rl.env.utils,qd=function(e,t){return RegExp(Wd.regExpEscape(t.trim()),"i").test(e)},Hd=function(e,t){return RegExp("^"+Wd.regExpEscape(t.trim()),"i").test(e)},Ud=function(e,t){const n=e.query.toLowerCase(),r=e.label.toLowerCase().indexOf(n),i=t.label.toLowerCase().indexOf(n);return r===i?function(e,t){return e.length!==t.length?e.length-t.length:e<t?-1:1}(e,t):(-1===r?1/0:r)<(-1===i?1/0:i)?-1:1},$d=(e,t)=>{t=t.trim();const n=document.createElement("li");n.setAttribute("aria-selected","false");const r=new RegExp("("+t+")","ig");return(t?e.split(r):[e]).forEach(e=>{if(t&&e.match(r)){const t=document.createElement("mark");t.textContent=e,n.appendChild(t)}else n.appendChild(document.createTextNode(e))}),n},Wd={getElement:(e,t)=>"string"==typeof e?(t||document).querySelector(e):e||null,bind(e,t){if(e)for(var n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const r=t[n];n.split(/\s+/).forEach(t=>e.addEventListener(t,r))}},unbind(e,t){if(e)for(var n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;const r=t[n];n.split(/\s+/).forEach(t=>e.removeEventListener(t,r))}},regExpEscape:e=>e.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&"),isMention:(e,t)=>t.includes(e[0])||Bd.isMentionBoundary(e[0])&&t.includes(e[1])};class Gd extends String{constructor(e,t){super();const n=Array.isArray(e)?{label:e[0],value:e[1]}:"object"==typeof e&&"label"in e&&"value"in e?e:{label:e,value:e};this.label=n.label||n.value,this.value=n.value,this.query=t}get lenth(){return this.label.length}toString(){return""+this.label}valueOf(){return this.toString()}}class Vd{constructor(e,t={}){this.is_opened=!1,Bd.hasClass("suggestion-box",e)?this.container=e:this.container=e.querySelector(".suggestion-box"),this.input=this.container.querySelector(".suggestion-box__input"),this.input.setAttribute("aria-autocomplete","list"),this.ul=this.container.querySelector(".suggestion-box__results"),this.status=this.container.querySelector(".suggestion-box__additions"),Object.assign(this,{match_current_word:!1,ac_triggers:[],include_triggers:[],min_chars:2,max_items:10,auto_evaluate:!0,auto_first:!1,data:e=>e,filter:qd,sort:!1!==t.sort&&Ud,item:$d},t),this.index=-1,this.bindEvents(),this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||t.list||[]}bindEvents(){const e={blur:()=>this.close({reason:"blur"})};this.auto_evaluate&&(e.input=()=>this.evaluate()),this._events={input:e,form:{submit:()=>this.close({reason:"submit"})},ul:{mousedown:e=>this.onMouseDown(e),mouseover:e=>this.onMouseOver(e)}},Wd.bind(this.input,this._events.input),Wd.bind(this.input.form,this._events.form),Wd.bind(this.ul,this._events.ul)}set list(e){if(Array.isArray(e)||"function"==typeof e)this._list=e;else if("string"==typeof e&&e.includes(","))this._list=e.split(/\s*,\s*/);else{var t;const n=(null===(t=Wd.getElement(e))||void 0===t?void 0:t.children)||[];this._list=Array.from(n).filter(e=>!e.disabled).map(e=>{const t=e.textContent.trim(),n=e.value||t,r=e.label||t;return""!==n?{label:r,value:n}:null}).filter(e=>e)}document.activeElement===this.input&&this.evaluate()}get list(){return this._list}get selected(){return this.index>-1}get opened(){return this.is_opened}close(e){this.opened&&(this.ul.setAttribute("hidden",""),this.is_opened=!1,this.index=-1,this.trigger("suggestion-box-close",e||{}))}insertValue(e){this.match_current_word?Bd.replaceCurrentWord(this.input,e.value):this.input.value=e.value}open(){this.ul.removeAttribute("hidden"),this.is_opened=!0,this.auto_first&&-1===this.index&&this.goto(0),this.trigger("suggestion-box-open")}destroy(){Wd.unbind(this.input,this._events.input),Wd.unbind(this.input.form,this._events.form),this.input.removeAttribute("aria-autocomplete")}next(){const e=this.ul.children.length;this.goto(this.index<e-1?this.index+1:e?0:-1)}previous(){const e=this.ul.children.length,t=this.index-1;this.goto(this.selected&&-1!==t?t:e-1)}goto(e){const t=this.ul.children;this.selected&&t[this.index].setAttribute("aria-selected","false"),this.index=e,e>-1&&t.length>0&&(t[e].setAttribute("aria-selected","true"),t[e].focus(),this.status.textContent=t[e].textContent,this.ul.scrollTop=t[e].offsetTop-this.ul.clientHeight+t[e].clientHeight,this.trigger("suggestion-box-highlight",{text:this.suggestions[this.index]}))}select(e){if(e?this.index=Bd.siblingIndex(e):e=this.ul.children[this.index],e){const e=this.suggestions[this.index];this.insertValue(e),this.close({reason:"select"}),this.auto_completing=!1,this.trigger("suggestion-box-selectcomplete",{text:e})}}onMouseOver(e){const t=Bd.ancestor(e.target,"li");t&&this.goto(Array.prototype.slice.call(this.ul.children).indexOf(t))}onMouseDown(e){if(0!==e.button)return;const t=Bd.ancestor(e.target,"li");t&&(e.preventDefault(),this.select(t,e.target))}onKeyDown(e){if(this.opened){if([rl.keycodes.ENTER,rl.keycodes.TAB].includes(e.keyCode)&&this.selected)return e.preventDefault(),e.stopPropagation(),this.select(),!0;if(e.keyCode===rl.keycodes.ESCAPE)return this.close({reason:"esc"}),!0;if([rl.keycodes.UP_ARROW,rl.keycodes.DOWN_ARROW].includes(e.keyCode))return e.preventDefault(),e.stopPropagation(),this[e.keyCode===rl.keycodes.UP_ARROW?"previous":"next"](),!0}if(![rl.keycodes.SHIFT,rl.keycodes.META,rl.keycodes.META_RIGHT,rl.keycodes.ESCAPE,rl.keycodes.ALT].includes(e.keyCode))if(this.ac_triggers.includes(e.key))"Tab"===e.key&&e.preventDefault(),this.auto_completing=!0;else if("Backspace"===e.key){const t=Bd.getCurrentWord(e.target,e.target.selectionEnd-1);Wd.isMention(t,this.ac_triggers)&&(this.auto_completing=!0)}}async evaluate(e){const t=this.selected&&e&&(e.keyCode===rl.keycodes.UP_ARROW||e.keyCode===rl.keycodes.DOWN_ARROW);if(!this.auto_evaluate&&!this.auto_completing||t)return;const n="function"==typeof this._list?await this._list():this._list;if(0===n.length)return;let r=this.match_current_word?Bd.getCurrentWord(this.input):this.input.value;const i=Wd.isMention(r,this.ac_triggers);i&&(this.auto_completing=!0,this.include_triggers.includes(e.key)||(r=Bd.isMentionBoundary(r[0])?r.slice("2"):r.slice("1"))),(i||r.length)&&r.length>=this.min_chars?(this.index=-1,this.ul.innerHTML="",this.suggestions=n.map(e=>new Gd(this.data(e,r),r)).filter(e=>this.filter(e,r)),!1!==this.sort&&(this.suggestions=this.suggestions.sort(this.sort)),this.suggestions=this.suggestions.slice(0,this.max_items),this.suggestions.forEach(e=>this.ul.appendChild(this.item(e,r))),0===this.ul.children.length?this.close({reason:"nomatches"}):this.open()):(this.close({reason:"nomatches"}),i||(this.auto_completing=!1))}}function Jd(){const e=Qd(['\n <div class="list-container list-container--bookmarks ','">\n <a class="list-toggle bookmarks-toggle controlbox-padded"\n title="','"\n @click=','>\n\n <span class="fa ','">\n </span> ','</a>\n <div class="items-list bookmarks rooms-list ','">\n ',"\n </div>\n </div>\n "]);return Jd=function(){return e},e}function Xd(){const e=Qd(['\n <div class="list-item controlbox-padded room-item available-chatroom d-flex flex-row ','" data-room-jid="','">\n <a class="list-item-link open-room w-100" data-room-jid="','"\n title="','"\n @click=',">",'</a>\n\n <a class="list-item-action remove-bookmark fa fa-bookmark align-self-center ','"\n data-room-jid="','"\n data-bookmark-name="','"\n title="','"\n @click=',"></a>\n </div>\n "]);return Xd=function(){return e},e}function Qd(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Object.assign(Vd.prototype,_i),rl.plugins.add("converse-autocomplete",{initialize(){const e=this._converse;e.FILTER_CONTAINS=qd,e.FILTER_STARTSWITH=Hd,e.AutoComplete=Vd}});var Yd=e=>{const t=zd("Click to toggle the bookmarks list"),n=zd("Bookmarks");return Za(Jd(),e.hidden?"":"hidden",t,e.toggleBookmarksList,e.toggle_state===e._converse.OPENED?"fa-caret-down":"fa-caret-right",n,e.toggle_state!==e._converse.OPENED?"hidden":"",e.bookmarks.map(t=>(e=>{const t=zd("Unbookmark this groupchat"),n=zd("Click to open this groupchat");return Za(Xd(),e.is_hidden(e.bm)?"hidden":"",e.bm.get("jid"),e.bm.get("jid"),n,e.openRoom,e.bm.getDisplayName(),e.bm.get("bookmarked")?"button-on":"",e.bm.get("jid"),e.bm.getDisplayName(),t,e.removeBookmark)})(Object.assign({bm:t},e))))};function Kd(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="converse-form chatroom-form" @submit=',">\n <legend>",'</legend>\n <fieldset class="form-group">\n <label for="converse_muc_bookmark_name">','</label>\n <input class="form-control" type="text" value="','" name="name" required="required" id="converse_muc_bookmark_name"/>\n </fieldset>\n <fieldset class="form-group">\n <label for="converse_muc_bookmark_nick">','</label>\n <input class="form-control" type="text" name="nick" value="','" id="converse_muc_bookmark_nick"/>\n </fieldset>\n <fieldset class="form-group form-check">\n <input class="form-check-input" id="converse_muc_bookmark_autojoin" type="checkbox" name="autojoin"/>\n <label class="form-check-label" for="converse_muc_bookmark_autojoin">','</label>\n </fieldset>\n <fieldset class="form-group">\n <input class="btn btn-primary" type="submit" value="','">\n <input class="btn btn-secondary button-cancel" type="button" value="','" @click=',">\n </fieldset>\n </form>\n "]);return Kd=function(){return e},e}const Zd=/^\s*</,eh=("undefined"!=typeof Element&&Element.prototype,function(e){this.cid=vi("view"),this._domEvents=[],this.preinitialize.apply(this,arguments),Or(this,Bo(e,nh)),this._ensureElement(),this.initialize.apply(this,arguments)});eh.extend=Yr;const th=/^(\S+)\s*(.*)$/,nh=["model","collection","el","id","attributes","className","tagName","events"];Object.assign(eh.prototype,_i,{tagName:"div",$:function(e){return this.el.querySelectorAll(e)},preinitialize:function(){},initialize:function(){},render:function(){return M(this.beforeRender)&&this.beforeRender(),M(this.toHTML)&&Ya(this.toHTML(),this.el),M(this.afterRender)&&this.afterRender(),this},remove:function(){return this._removeElement(),this.stopListening(),this},_removeElement:function(){this.undelegateEvents(),this.el.parentNode&&this.el.parentNode.removeChild(this.el)},setElement:function(e){return this.undelegateEvents(),this._setElement(e),this.delegateEvents(),this},_setElement:function(e){if("string"==typeof e)if(Zd.test(e)){const t=document.createElement("div");t.innerHTML=e,this.el=t.firstChild}else this.el=document.querySelector(e);else e&&!Dn(e)&&e.length?this.el=e[0]:this.el=e},delegateEvents:function(e){if(e||(e=Qr(this,"events")),!e)return this;this.undelegateEvents();for(const t in e){let n=e[t];if(M(n)||(n=this[n]),!n)continue;const r=t.match(th);this.delegate(r[1],r[2],n.bind(this))}return this},delegate:function(e,t,n){const r=this.el;if(!r)return this;if("function"==typeof t&&(n=t,t=null),-1!==["focus","blur"].indexOf(e)){const r=this.el.querySelectorAll(t);for(let t=0,i=r.length;t<i;t++){const i=r[t];i.addEventListener(e,n,!1),this._domEvents.push({el:i,eventName:e,handler:n})}return n}const i=t?function(e){let i=e.target||e.srcElement;for(;i&&i!=r;i=i.parentNode)i.matches(t)&&(e.delegateTarget=i,n(e))}:n;return this.el.addEventListener(e,i,!1),this._domEvents.push({el:this.el,eventName:e,handler:i,listener:n,selector:t}),this},undelegateEvents:function(){if(this.el){for(let e=0,t=this._domEvents.length;e<t;e++){const t=this._domEvents[e];t.el.removeEventListener(t.eventName,t.handler,!1)}this._domEvents.length=0}return this},undelegate:function(e,t,n){if("function"==typeof t&&(n=t,t=null),this.el){const r=this._domEvents.slice();let i=r.length;for(;i--;){const o=r[i];!(o.eventName!==e||n&&o.listener!==n||t&&o.selector!==t)&&(o.el.removeEventListener(o.eventName,o.handler,!1),this._domEvents.splice(i,1))}}return this},_createElement:function(e){return document.createElement(e)},_ensureElement:function(){if(this.el)this.setElement(Qr(this,"el"));else{const e=Or({},Qr(this,"attributes"));this.id&&(e.id=Qr(this,"id")),this.className&&(e.class=Qr(this,"className")),this.setElement(this._createElement(Qr(this,"tagName"))),this._setAttributes(e)}},_setAttributes:function(e){for(const t in e)t in this.el?this.el[t]=e[t]:this.el.setAttribute(t,e[t])}});var rh=jr((function(e,t,n){var r=-1,i="function"==typeof t,o=Xe(e)?Array(e.length):[];return vs(e,(function(e){o[++r]=i?yr(t,e,n):Dc(e,t,n)})),o})); /** * @module converse-bookmark-views * @description Converse.js plugin which adds views for XEP-0048 bookmarks * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:Nd}=Yc.env,Id=Yc.env.utils;Yc.plugins.add("converse-bookmark-views",{dependencies:["converse-chatboxes","converse-muc","converse-muc-views"],initialize(){qc.settings.extend({hide_open_bookmarks:!0}),Object.assign(Lc,{removeBookmarkViaEvent(e){e.preventDefault();const t=e.target.getAttribute("data-bookmark-name"),n=e.target.getAttribute("data-room-jid");confirm(dd('Are you sure you want to remove the bookmark "%1$s"?',t))&&kd(Lc.bookmarks.where({jid:n}),Rs.prototype.destroy)},addBookmarkViaEvent(e){e.preventDefault();const t=e.target.getAttribute("data-room-jid");qc.rooms.open(t,{bring_to_foreground:!0}),Lc.chatboxviews.get(t).renderBookmarkForm()}});const e={setBookmarkState(){if(void 0!==Lc.bookmarks){Lc.bookmarks.where({jid:this.model.get("jid")}).length?this.model.save("bookmarked",!0):this.model.save("bookmarked",!1)}},renderBookmarkForm(){if(this.hideChatRoomContents(),!this.bookmark_form){this.bookmark_form=new Lc.MUCBookmarkForm({model:this.model,chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.bookmark_form.el)}Id.showElement(this.bookmark_form.el)},toggleBookmark(e){null==e||e.preventDefault();const t=Lc.bookmarks.where({jid:this.model.get("jid")});t.length?t.forEach(e=>e.destroy()):this.renderBookmarkForm()}};Object.assign(Lc.ChatRoomView.prototype,e),Lc.MUCBookmarkForm=jd.extend({className:"muc-bookmark-form chatroom-form-container",initialize(e){this.chatroomview=e.chatroomview,this.render()},toHTML(){return(e=>{const t=dd("Bookmark this groupchat"),n=dd("Would you like this groupchat to be automatically joined upon startup?"),r=dd("Cancel"),i=dd("The name for this bookmark:"),s=dd("What should your nickname for this groupchat be?"),o=dd("Save");return Ga(Ad(),e.onSubmit,t,i,e.name,s,e.nick||"",n,o,r,e.onCancel)})(Object.assign(this.model.toJSON(),{onCancel:e=>this.closeBookmarkForm(e),onSubmit:e=>this.onBookmarkFormSubmitted(e)}))},onBookmarkFormSubmitted(e){var t,n,r;e.preventDefault(),Lc.bookmarks.createBookmark({jid:this.model.get("jid"),autojoin:(null===(t=e.target.querySelector('input[name="autojoin"]'))||void 0===t?void 0:t.checked)||!1,name:null===(n=e.target.querySelector("input[name=name]"))||void 0===n?void 0:n.value,nick:null===(r=e.target.querySelector("input[name=nick]"))||void 0===r?void 0:r.value}),this.closeBookmarkForm(e)},closeBookmarkForm(e){e.preventDefault(),this.chatroomview.closeForm()}}),Lc.BookmarksView=jd.extend({tagName:"span",initialize(){this.listenTo(this.model,"add",this.render),this.listenTo(this.model,"remove",this.render),this.listenTo(Lc.chatboxes,"add",this.render),this.listenTo(Lc.chatboxes,"remove",this.render);const e="converse.room-bookmarks".concat(Lc.bare_jid,"-list-model");this.list_model=new Lc.BookmarksList({id:e}),this.list_model.browserStorage=Lc.createStore(e);const t=()=>{this.render(),this.insertIntoControlBox()};this.list_model.fetch({success:t,error:t})},toHTML(){return Ed({_converse:Lc,bookmarks:this.model,hidden:this.model.getUnopenedBookmarks().length&&!0,is_hidden:e=>!(!qc.settings.get("hide_open_bookmarks")||!Lc.chatboxes.get(e.get("jid"))),openRoom:e=>this.openRoom(e),removeBookmark:e=>this.removeBookmark(e),toggleBookmarksList:e=>this.toggleBookmarksList(e),toggle_state:this.list_model.get("toggle-state")})},insertIntoControlBox(){const e=Lc.chatboxviews.get("controlbox");if(void 0!==e&&!Id.rootContains(Lc.root,this.el)){const t=e.el.querySelector(".list-container--bookmarks");t&&t.parentNode.replaceChild(this.el,t)}},openRoom(e){e.preventDefault();const t=e.target.textContent,n=e.target.getAttribute("data-room-jid"),r={name:t||Nd.unescapeNode(Nd.getNodeFromJid(n))||n};qc.rooms.open(n,r,!0)},removeBookmark:Lc.removeBookmarkViaEvent,toggleBookmarksList(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");Id.hasClass("fa-caret-down",t)?(Id.slideIn(this.el.querySelector(".bookmarks")),this.list_model.save({"toggle-state":Lc.CLOSED}),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")):(t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down"),Id.slideOut(this.el.querySelector(".bookmarks")),this.list_model.save({"toggle-state":Lc.OPENED}))}});qc.listen.on("getHeadingButtons",(e,t)=>{if(Lc.allow_bookmarks&&e.model.get("type")===Lc.CHATROOMS_TYPE){const n=e.model.get("bookmarked"),r={i18n_title:dd(n?"Unbookmark this groupchat":"Bookmark this groupchat"),i18n_text:dd(n?"Unbookmark":"Bookmark"),handler:t=>e.toggleBookmark(t),a_class:"toggle-bookmark",icon_class:"fa-bookmark",name:"bookmark"},i=t.map(e=>e.name).indexOf("details"),s=Lc.checkBookmarksSupport().then(e=>e?r:"");return i>-1?[...t.slice(0,i),s,...t.slice(i)]:[s,...t]}return t}),qc.listen.on("bookmarksInitialized",(async function(){await qc.waitUntil("roomsPanelRendered"),Lc.bookmarksview=new Lc.BookmarksView({model:Lc.bookmarks}),qc.trigger("bookmarkViewsInitialized")})),qc.listen.on("chatRoomViewInitialized",e=>e.setBookmarkState())}});var Md=n(27),Rd=n.n(Md);function Dd(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<div class="alert ','" role="alert"><p>',"</p></div>"]);return Dd=function(){return e},e}function Pd(){const e=zd(['<button type="button" class="close" data-dismiss="modal" aria-label="','"><span aria-hidden="true">×</span></button>']);return Pd=function(){return e},e}function Ld(){const e=zd(['<button type="button" class="btn btn-secondary" data-dismiss="modal">',"</button>"]);return Ld=function(){return e},e}function zd(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const Fd=Ga(Ld(),dd("Close")),Bd=Ga(Pd(),dd("Close"));function qd(){const e=Ud(["<p>","</p>"]);return qd=function(){return e},e}function Hd(){const e=Ud(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header ','">\n <h5 class="modal-title">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n ',"\n </div>\n </div>\n </div>\n"]);return Hd=function(){return e},e}function Ud(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function $d(){const e=Gd(["<p>","</p>"]);return $d=function(){return e},e}function Wd(){const e=Gd(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header ','">\n <h5 class="modal-title">','</h5>\n <button type="button" class="close" data-dismiss="modal" aria-label="Close">\n <span aria-hidden="true">×</span>\n </button>\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form converse-form--modal confirm" action="#">\n <div class="form-group">\n ',"\n </div>\n ",'\n <div class="form-group">\n <button type="submit" class="btn btn-primary">','</button>\n <input type="button" class="btn btn-secondary" data-dismiss="modal" value="','"/>\n </div>\n </form>\n </div>\n </div>\n </div>\n']);return Wd=function(){return e},e}function Vd(){const e=Gd(['\n <div class="form-group">\n <label>\n ','\n <input type="text"\n name="','"\n class="',' form-control form-control--labeled"\n ?required="','"\n placeholder="','" />\n </label>\n </div>\n']);return Vd=function(){return e},e}function Gd(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Jd=e=>Ga(Wd(),e.level||"",e.title,e.messages.map(e=>Ga($d(),e)),e.fields.map(e=>(e=>Ga(Vd(),e.label||"",e.name,e.challenge_failed?"error":"",e.required,e.placeholder))(e)),dd("OK"),dd("Cancel")); +const{Strophe:ih}=rl.env,oh=rl.env.utils;rl.plugins.add("converse-bookmark-views",{dependencies:["converse-chatboxes","converse-muc","converse-muc-views"],initialize(){Vc.settings.extend({hide_open_bookmarks:!0}),Object.assign(Uc,{removeBookmarkViaEvent(e){e.preventDefault();const t=e.target.getAttribute("data-bookmark-name"),n=e.target.getAttribute("data-room-jid");confirm(zd('Are you sure you want to remove the bookmark "%1$s"?',t))&&rh(Uc.bookmarks.where({jid:n}),qo.prototype.destroy)},addBookmarkViaEvent(e){e.preventDefault();const t=e.target.getAttribute("data-room-jid");Vc.rooms.open(t,{bring_to_foreground:!0}),Uc.chatboxviews.get(t).renderBookmarkForm()}});const e={setBookmarkState(){if(void 0!==Uc.bookmarks){Uc.bookmarks.where({jid:this.model.get("jid")}).length?this.model.save("bookmarked",!0):this.model.save("bookmarked",!1)}},renderBookmarkForm(){if(this.hideChatRoomContents(),!this.bookmark_form){this.bookmark_form=new Uc.MUCBookmarkForm({model:this.model,chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.bookmark_form.el)}oh.showElement(this.bookmark_form.el)},toggleBookmark(e){null==e||e.preventDefault();const t=Uc.bookmarks.where({jid:this.model.get("jid")});t.length?t.forEach(e=>e.destroy()):this.renderBookmarkForm()}};Object.assign(Uc.ChatRoomView.prototype,e),Uc.MUCBookmarkForm=eh.extend({className:"muc-bookmark-form chatroom-form-container",initialize(e){this.chatroomview=e.chatroomview,this.render()},toHTML(){return(e=>{const t=zd("Bookmark this groupchat"),n=zd("Would you like this groupchat to be automatically joined upon startup?"),r=zd("Cancel"),i=zd("The name for this bookmark:"),o=zd("What should your nickname for this groupchat be?"),s=zd("Save");return Za(Kd(),e.onSubmit,t,i,e.name,o,e.nick||"",n,s,r,e.onCancel)})(Object.assign(this.model.toJSON(),{onCancel:e=>this.closeBookmarkForm(e),onSubmit:e=>this.onBookmarkFormSubmitted(e)}))},onBookmarkFormSubmitted(e){var t,n,r;e.preventDefault(),Uc.bookmarks.createBookmark({jid:this.model.get("jid"),autojoin:(null===(t=e.target.querySelector('input[name="autojoin"]'))||void 0===t?void 0:t.checked)||!1,name:null===(n=e.target.querySelector("input[name=name]"))||void 0===n?void 0:n.value,nick:null===(r=e.target.querySelector("input[name=nick]"))||void 0===r?void 0:r.value}),this.closeBookmarkForm(e)},closeBookmarkForm(e){e.preventDefault(),this.chatroomview.closeForm()}}),Uc.BookmarksView=eh.extend({tagName:"span",initialize(){this.listenTo(this.model,"add",this.render),this.listenTo(this.model,"remove",this.render),this.listenTo(Uc.chatboxes,"add",this.render),this.listenTo(Uc.chatboxes,"remove",this.render);const e="converse.room-bookmarks".concat(Uc.bare_jid,"-list-model");this.list_model=new Uc.BookmarksList({id:e}),this.list_model.browserStorage=Uc.createStore(e);const t=()=>{this.render(),this.insertIntoControlBox()};this.list_model.fetch({success:t,error:t})},toHTML(){return Yd({_converse:Uc,bookmarks:this.model,hidden:this.model.getUnopenedBookmarks().length&&!0,is_hidden:e=>!(!Vc.settings.get("hide_open_bookmarks")||!Uc.chatboxes.get(e.get("jid"))),openRoom:e=>this.openRoom(e),removeBookmark:e=>this.removeBookmark(e),toggleBookmarksList:e=>this.toggleBookmarksList(e),toggle_state:this.list_model.get("toggle-state")})},insertIntoControlBox(){const e=Uc.chatboxviews.get("controlbox");if(void 0!==e&&!oh.rootContains(Uc.root,this.el)){const t=e.el.querySelector(".list-container--bookmarks");t&&t.parentNode.replaceChild(this.el,t)}},openRoom(e){e.preventDefault();const t=e.target.textContent,n=e.target.getAttribute("data-room-jid"),r={name:t||ih.unescapeNode(ih.getNodeFromJid(n))||n};Vc.rooms.open(n,r,!0)},removeBookmark:Uc.removeBookmarkViaEvent,toggleBookmarksList(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");oh.hasClass("fa-caret-down",t)?(oh.slideIn(this.el.querySelector(".bookmarks")),this.list_model.save({"toggle-state":Uc.CLOSED}),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")):(t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down"),oh.slideOut(this.el.querySelector(".bookmarks")),this.list_model.save({"toggle-state":Uc.OPENED}))}});Vc.listen.on("getHeadingButtons",(e,t)=>{if(Uc.allow_bookmarks&&e.model.get("type")===Uc.CHATROOMS_TYPE){const n=e.model.get("bookmarked"),r={i18n_title:zd(n?"Unbookmark this groupchat":"Bookmark this groupchat"),i18n_text:zd(n?"Unbookmark":"Bookmark"),handler:t=>e.toggleBookmark(t),a_class:"toggle-bookmark",icon_class:"fa-bookmark",name:"bookmark"},i=t.map(e=>e.name).indexOf("details"),o=Uc.checkBookmarksSupport().then(e=>e?r:"");return i>-1?[...t.slice(0,i),o,...t.slice(i)]:[o,...t]}return t}),Vc.listen.on("bookmarksInitialized",(async function(){await Vc.waitUntil("roomsPanelRendered"),Uc.bookmarksview=new Uc.BookmarksView({model:Uc.bookmarks}),Vc.trigger("bookmarkViewsInitialized")})),Vc.listen.on("chatRoomViewInitialized",e=>e.setBookmarkState())}});var sh=n(35),ah=n.n(sh);function ch(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <audio controls src="','"></audio>\n <a target="_blank" rel="noopener" href="','">',"</a>\n"]);return ch=function(){return e},e}function lh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<a target="_blank" rel="noopener" href="','">',"</a>"]);return lh=function(){return e},e}var uh=e=>Za(lh(),e.url,e.label_download),dh=n(170),hh=n.n(dh),fh=n(171),ph=n.n(fh),gh=n(64),mh=n.n(gh),vh=n(172),_h=n.n(vh),bh=n(173),yh=n.n(bh),wh=n(174),Sh=n.n(wh),xh=n(65),Eh=n.n(xh);function Ah(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<a href="','"\n class="chat-image__link"\n target="_blank"\n rel="noopener"\n ><img class="chat-image img-thumbnail" src="','" @click='," @error="," @load=","/></a>"]);return Ah=function(){return e},e}const Ch=ka((e,t,n,r)=>i=>{i.setValue(Za(Ah(),t,e,r,(function(){const o=rl.env.utils;o.isURLWithImageExtension(e)?(i.setValue(o.convertUrlToHyperlink(t)),i.commit()):(i.setValue(Ch("".concat(e,".png"),t,n,r)),i.commit())}),n))});function jh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["",""]);return jh=function(){return e},e}var Th=n(175),Oh=n.n(Th);function kh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<video controls preload="metadata" src="','" style="max-height: 50vh"></video>']);return kh=function(){return e},e}function Nh(){const e=Mh(['<a target="_blank" rel="noopener" href="','">',"</a>"]);return Nh=function(){return e},e}function Ih(){const e=Mh(['\n <a target="_blank"\n rel="noopener"\n @click=','\n href="','">',"</a>"]);return Ih=function(){return e},e}function Mh(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** - * @module converse-modal - * @copyright The Converse.js contributors + * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{sizzle:Xd}=Yc.env,Qd=Yc.env.utils;let Yd;const Kd=jd.extend({className:"modal",events:{"click .nav-item .nav-link":"switchTab"},initialize(){this.render(),this.el.setAttribute("tabindex","-1"),this.el.setAttribute("role","dialog"),this.el.setAttribute("aria-hidden","true");const e=this.el.querySelector(".modal-title").getAttribute("id");e&&this.el.setAttribute("aria-labelledby",e),this.insertIntoDOM();const t=Rd.a.Modal;this.modal=new t(this.el,{backdrop:!0,keyboard:!0}),this.el.addEventListener("hide.bs.modal",()=>Qd.removeClass("selected",this.trigger_el),!1)},insertIntoDOM(){Yd.chatboxviews.el.querySelector("#converse-modals").insertAdjacentElement("beforeEnd",this.el)},switchTab(e){e.stopPropagation(),e.preventDefault(),Xd(".nav-link.active",this.el).forEach(e=>{Qd.removeClass("active",this.el.querySelector(e.getAttribute("href"))),Qd.removeClass("active",e)}),Qd.addClass("active",e.target),Qd.addClass("active",this.el.querySelector(e.target.getAttribute("href")))},alert(e,t="primary"){const n=this.el.querySelector(".modal-alert");if(null===n)return void Pn.error("Could not find a .modal-alert element in the modal to show an alert message in!");var r;Wa((r={type:"alert-".concat(t),message:e},Ga(Dd(),r.type,r.message)),n);const i=n.firstElementChild;setTimeout(()=>{Qd.addClass("fade-out",i),setTimeout(()=>Qd.removeElement(i),600)},5e3)},show(e){e&&(e.preventDefault(),this.trigger_el=e.target,this.trigger_el.classList.add("selected")),this.modal.show()}}),Zd=Kd.extend({events:{"submit .confirm":"onConfimation"},initialize(){this.confirmation=Qd.getResolveablePromise(),Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.el.addEventListener("closed.bs.modal",()=>this.confirmation.reject(),!1)},toHTML(){return Jd(this.model.toJSON())},afterRender(){this.close_handler_registered||(this.el.addEventListener("closed.bs.modal",()=>{this.confirmation.isResolved||this.confirmation.reject()},!1),this.close_handler_registered=!0)},onConfimation(e){e.preventDefault();const t=new FormData(e.target),n=(this.model.get("fields")||[]).map(e=>{const n=t.get(e.name).trim();return e.value=n,e.challenge&&(e.challenge_failed=n!==e.challenge),e});if(n.filter(e=>e.challenge_failed).length)return this.model.set("fields",n),void this.model.trigger("change");this.confirmation.resolve(n),this.modal.hide()}}),eh=Kd.extend({initialize(){Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render)},toHTML(){return e=Object.assign({__:dd},this.model.toJSON()),Ga(Hd(),e.level,e.title,Bd,e.messages.map(e=>Ga(qd(),e)));var e}});function th(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog fit-content" role="document">\n <div class="modal-content fit-content">\n <div class="modal-header">\n <h4 class="modal-title" id="message-versions-modal-label">','<a target="_blank" rel="noopener" href="','">',"</a></h4>\n ",'\n </div>\n <div class="modal-body fit-content">\n <img class="chat-image" src="','"/>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n"]);return th=function(){return e},e}Yc.plugins.add("converse-modal",{initialize(){let e;Yd=this._converse,Yd.api.listen.on("disconnect",()=>{const e=document.querySelector("#converse-modals");e&&(e.innerHTML="")}),Object.assign(Yd.api,{async confirm(e,t=[],n=[]){"string"==typeof t&&(t=[t]);const r=new Rs({title:e,messages:t,fields:n,type:"confirm"}),i=new Zd({model:r});let s;i.show();try{s=await i.confirmation}catch(e){s=!1}return i.remove(),s},async prompt(e,t=[],n=""){"string"==typeof t&&(t=[t]);const r=new Rs({title:e,messages:t,fields:[{name:"reason",placeholder:n}],type:"prompt"}),i=new Zd({model:r});let s;i.show();try{var o;s=null===(o=(await i.confirmation).pop())||void 0===o?void 0:o.value}catch(e){s=!1}return i.remove(),s},alert(t,n,r){let i;if("string"==typeof r&&(r=[r]),"error"===t?i="alert-danger":"info"===t?i="alert-info":"warn"===t&&(i="alert-warning"),void 0===e){const t=new Rs({title:n,messages:r,level:i,type:"alert"});e=new eh({model:t})}else e.model.set({title:n,messages:r,level:i});e.show()}})}});var nh=Kd.extend({toHTML(){return e={src:this.src},Ga(th(),dd("Image: "),e.src,e.src,Bd,e.src,Fd);var e}}),rh=n(28),ih=n.n(rh); + * @description This is the DOM/HTML utilities module. + */const Rh=["http","https","xmpp","mailto"];function Dh(e,t){return{"muc#roomconfig_lang":"language","muc#roomconfig_roomsecret":(null==t?void 0:t.new_password)?"new-password":"current-password"}[e]}const Ph={"text-private":"password","text-single":"text",fixed:"label",boolean:"checkbox",hidden:"hidden","jid-multi":"textarea","list-single":"dropdown","list-multi":"dropdown"};function Lh(e){try{return e instanceof ah.a?e:new ah.a(e)}catch(e){return zn.debug(e),null}}function zh(e,t){const n=Lh(t);if(null===n||!function(e){return"http:"===window.location.protocol||"https:"===window.location.protocol&&"https"===e.protocol().toLowerCase()}(n))return!1;const r=n.filename().toLowerCase();return!!e.filter(e=>r.endsWith(e)).length}function Fh(e){try{return decodeURI(e.filename())}catch(t){return zn.debug(t),e.filename()}}function Bh(e,t){const{__:n}=e;return r={url:t.toString(),label_download:n('Download audio file "%1$s"',Fh(t))},Za(ch(),r.url,r.url,r.label_download);var r}function qh(e){e.preventDefault(),Vc.rooms.open(e.target.href)}function Hh(e,t){e.classList.remove("visible"),M(t)&&t()}Jo.isAudioURL=e=>zh([".ogg",".mp3",".m4a"],e),Jo.isVideoURL=e=>zh([".mp4",".webm"],e),Jo.isURLWithImageExtension=e=>zh([".jpg",".jpeg",".png",".gif",".bmp",".tiff",".svg"],e),Jo.isImageURL=e=>{const t=Vc.settings.get("image_urls_regex");return(null==t?void 0:t.test(e))||Jo.isURLWithImageExtension(e)},Jo.isImageDomainAllowed=e=>{const t=Vc.settings.get("show_images_inline");if(!Array.isArray(t))return!0;try{const n=Lh(e).domain();return t.includes(n)}catch(e){return zn.debug(e),!0}},Jo.getOOBURLMarkup=function(e,t){const n=Lh(t);return null===n?t:Jo.isVideoURL(n)?(r={url:t},Za(kh(),r.url)):Jo.isAudioURL(n)?Bh(e,n):Jo.isImageURL(n)?function(e,t){const{__:n}=e;return uh({url:t.toString(),label_download:n('Download image file "%1$s"',Fh(t))})}(e,n):function(e,t){const{__:n}=e;return uh({url:t.toString(),label_download:n('Download file "%1$s"',Fh(t))})}(e,n);var r},Jo.applyDragResistance=function(e,t){if(void 0===e)return;if(void 0===t)return e;return e!==t&&Math.abs(e-t)<10?t:e},Jo.calculateElementHeight=function(e){return Array.from(e.children).reduce((e,t)=>e+t.offsetHeight,0)},Jo.getNextElement=function(e,t="*"){let n=e.nextElementSibling;for(;null!==n&&!mr.a.matchesSelector(n,t);)n=n.nextElementSibling;return n},Jo.getPreviousElement=function(e,t="*"){let n=e.previousElementSibling;for(;null!==n&&!mr.a.matchesSelector(n,t);)n=n.previousElementSibling;return n},Jo.getFirstChildElement=function(e,t="*"){let n=e.firstElementChild;for(;null!==n&&!mr.a.matchesSelector(n,t);)n=n.nextElementSibling;return n},Jo.getLastChildElement=function(e,t="*"){let n=e.lastElementChild;for(;null!==n&&!mr.a.matchesSelector(n,t);)n=n.previousElementSibling;return n},Jo.hasClass=function(e,t){return t instanceof Element&&t.classList.contains(e)},Jo.toggleClass=function(e,t){Jo.hasClass(e,t)?Jo.removeClass(e,t):Jo.addClass(e,t)},Jo.addClass=function(e,t){return t instanceof Element&&t.classList.add(e),t},Jo.removeClass=function(e,t){return t instanceof Element&&t.classList.remove(e),t},Jo.removeElement=function(e){return e instanceof Element&&e.parentNode&&e.parentNode.removeChild(e),e},Jo.getElementFromTemplateResult=function(e){const t=document.createElement("div");return Ya(e,t),t.firstElementChild},Jo.showElement=e=>{Jo.removeClass("collapsed",e),Jo.removeClass("hidden",e)},Jo.hideElement=function(e){return e instanceof Element&&e.classList.add("hidden"),e},Jo.ancestor=function(e,t){let n=e;for(;null!==n&&!mr.a.matchesSelector(n,t);)n=n.parentElement;return n},Jo.nextUntil=function(e,t){const n=[];let r=e.nextElementSibling;for(;null!==r&&!r.matches(t);)n.push(r),r=r.nextElementSibling;return n},Jo.unescapeHTML=function(e){var t=document.createElement("div");return t.innerHTML=e,t.innerText},Jo.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},Jo.convertToImageTag=function(e,t,n){return r={url:e,onClick:n,onLoad:t},Za(jh(),Ch(r.url,r.url,r.onLoad,r.onClick));var r},Jo.convertURIoHyperlink=function(e,t){let n=e.normalize()._string;const r=e._parts.urn?n:e.readable(),i=t||r;return e._parts.protocol||n.startsWith("http://")||n.startsWith("https://")||(n="http://"+n),"xmpp"===e._parts.protocol&&"join"===e._parts.query?Za(Ih(),qh,n,i):Za(Nh(),n,i)},Jo.convertUrlToHyperlink=function(e){const t=RegExp("^w{3}.","ig").test(e)?"http://".concat(e):e,n=Lh(e);return null===n||!function(e){try{return!!new URL(e)}catch(e){return!1}}(t)||!function(e,t=Rh){return!!t.includes(e)}(n._parts.protocol)&&n._parts.protocol?e:this.convertURIoHyperlink(n,e)},Jo.filterQueryParamsFromURL=function(e){const t=Vc.settings.get("filter_url_query_params");return t?Lh(e).removeQuery(t).toString():e},Jo.addHyperlinks=function(e){const t=[],n={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi};try{ah.a.withinString(e,(e,n,r)=>(t.push({url:e,start:n,end:r}),e),n)}catch(t){return zn.debug(t),[e]}let r=[e];return t.length?t.sort((e,t)=>t.start-e.start).forEach(e=>{const t=r.shift(),n=t.slice(e.start,e.end);r=[t.slice(0,e.start),Jo.convertUrlToHyperlink(n),t.slice(e.end),...r]}):r=[e],r},Jo.httpToGeoUri=function(e,t){return e.replace(t.api.settings.get("geouri_regex"),"geo:$1,$2")},Jo.slideInAllElements=function(e,t=300){return Promise.all(Array.from(e).map(e=>Jo.slideIn(e,t)))},Jo.slideToggleElement=function(e,t){return Jo.hasClass("collapsed",e)||Jo.hasClass("hidden",e)?Jo.slideOut(e,t):Jo.slideIn(e,t)},Jo.slideOut=function(e,t=200){return new Promise((n,r)=>{if(!e){const e="An element needs to be passed in to slideOut";return zn.warn(e),void r(new Error(e))}const i=e.getAttribute("data-slider-marker");i&&(e.removeAttribute("data-slider-marker"),window.cancelAnimationFrame(i));const o=Jo.calculateElementHeight(e);if(window.converse_disable_effects)return e.style.height=o+"px",function(e){e.removeAttribute("data-slider-marker"),e.classList.remove("collapsed"),e.style.overflow="",e.style.height=""}(e),void n();if(!Jo.hasClass("collapsed",e)&&!Jo.hasClass("hidden",e))return void n();const s=t/17;let a=0;e.style.height="0",e.style.overflow="hidden",e.classList.remove("hidden"),e.classList.remove("collapsed"),e.setAttribute("data-slider-marker",window.requestAnimationFrame((function t(){a+=o/s,a<o?(e.style.height=a+"px",e.setAttribute("data-slider-marker",window.requestAnimationFrame(t))):(e.removeAttribute("data-slider-marker"),e.style.height=Jo.calculateElementHeight(e)+"px",e.style.overflow="",e.style.height="",n())})))})},Jo.slideIn=function(e,t=200){return new Promise((n,r)=>{if(!e){const e="An element needs to be passed in to slideIn";return zn.warn(e),r(new Error(e))}if(Jo.hasClass("collapsed",e))return n(e);if(window.converse_disable_effects)return e.classList.add("collapsed"),e.style.height="",n(e);const i=e.getAttribute("data-slider-marker");i&&(e.removeAttribute("data-slider-marker"),window.cancelAnimationFrame(i));const o=e.offsetHeight,s=t/17;let a=o;e.style.overflow="hidden",e.setAttribute("data-slider-marker",window.requestAnimationFrame((function t(){a-=o/s,a>0?(e.style.height=a+"px",e.setAttribute("data-slider-marker",window.requestAnimationFrame(t))):(e.removeAttribute("data-slider-marker"),e.classList.add("collapsed"),e.style.height="",n(e))})))})},Jo.isInDOM=function(e){return document.querySelector("body").contains(e)},Jo.isVisible=function(e){return null!==e&&(!Jo.hasClass("hidden",e)&&(e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0))},Jo.fadeIn=function(e,t){if(e||zn.warn("An element needs to be passed in to fadeIn"),window.converse_disable_effects)return e.classList.remove("hidden"),Hh(e,t);Jo.hasClass("hidden",e)?(e.classList.add("visible"),e.classList.remove("hidden"),e.addEventListener("webkitAnimationEnd",()=>Hh(e,t)),e.addEventListener("animationend",()=>Hh(e,t)),e.addEventListener("oanimationend",()=>Hh(e,t))):Hh(e,t)},Jo.xForm2webForm=function(e,t,n){if("list-single"===e.getAttribute("type")||"list-multi"===e.getAttribute("type")){const t=Jo.queryChildren(e,"value").map(e=>null==e?void 0:e.textContent),n=Jo.queryChildren(e,"option").map(n=>{var r;const i=null===(r=n.querySelector("value"))||void 0===r?void 0:r.textContent;return Oh()({value:i,label:n.getAttribute("label"),selected:t.includes(i),required:!!e.querySelector("required")})});return _h()({id:Jo.getUniqueId(),name:e.getAttribute("var"),label:e.getAttribute("label"),options:n.join(""),multiple:"list-multi"===e.getAttribute("type"),required:!!e.querySelector("required")})}if("fixed"===e.getAttribute("type")){var r;return'<p class="form-help">'+(null===(r=e.querySelector("value"))||void 0===r?void 0:r.textContent)+"</p>"}var i,o,s;if("jid-multi"===e.getAttribute("type"))return yh()({name:e.getAttribute("var"),label:e.getAttribute("label")||"",value:null===(i=e.querySelector("value"))||void 0===i?void 0:i.textContent,required:!!e.querySelector("required")});if("boolean"===e.getAttribute("type")){var a;const t=null===(a=e.querySelector("value"))||void 0===a?void 0:a.textContent;return ph()({id:Jo.getUniqueId(),name:e.getAttribute("var"),label:e.getAttribute("label")||"",checked:"1"===t||"true"===t?'checked="1"':"",required:!!e.querySelector("required")})}if("url"===e.getAttribute("var"))return Sh()({label:e.getAttribute("label")||"",value:null===(o=e.querySelector("value"))||void 0===o?void 0:o.textContent});if("username"===e.getAttribute("var"))return Eh()({domain:" @"+n.domain,name:e.getAttribute("var"),type:Ph[e.getAttribute("type")],label:e.getAttribute("label")||"",value:null===(s=e.querySelector("value"))||void 0===s?void 0:s.textContent,required:!!e.querySelector("required")});if("ocr"===e.getAttribute("var")){const n=e.querySelector("uri"),r=mr()('data[cid="'+n.textContent.replace(/^cid:/,"")+'"]',t)[0];return hh()({label:e.getAttribute("label"),name:e.getAttribute("var"),data:null==r?void 0:r.textContent,type:n.getAttribute("type"),required:!!e.querySelector("required")})}{var c;const t=e.getAttribute("var");return mh()({id:Jo.getUniqueId(),label:e.getAttribute("label")||"",name:t,fixed_username:null==n?void 0:n.fixed_username,autocomplete:Dh(t,n),placeholder:null,required:!!e.querySelector("required"),type:Ph[e.getAttribute("type")],value:null===(c=e.querySelector("value"))||void 0===c?void 0:c.textContent})}};var Uh=Jo;const{keycodes:$h}=rl;function Wh(e){let t=0;do{isNaN(e.offsetTop)||(t+=e.offsetTop)}while(e=e.offsetParent);return t}function Gh(e){let t=0;do{isNaN(e.offsetLeft)||(t+=e.offsetLeft)}while(e=e.offsetParent);return t}class Vh{static get DIRECTION(){return{down:"down",end:"end",home:"home",left:"left",right:"right",up:"up"}}static get DEFAULTS(){return{home:["".concat($h.SHIFT,"+").concat($h.UP_ARROW)],end:["".concat($h.SHIFT,"+").concat($h.DOWN_ARROW)],up:[$h.UP_ARROW],down:[$h.DOWN_ARROW],left:[$h.LEFT_ARROW,"".concat($h.SHIFT,"+").concat($h.TAB)],right:[$h.RIGHT_ARROW,$h.TAB],getSelector:null,jump_to_picked:null,jump_to_picked_direction:null,jump_to_picked_selector:"picked",onSelected:null,selected:"selected",selector:"li"}}static getClosestElement(e,t){return e.reduce((e,n)=>{const r=t(n);return r<e.distance?{distance:r,element:n}:e},{distance:1/0}).element}constructor(e,t){this.doc=window.document,this.container=e,this.scroll_container=t.scroll_container||e,this.options=Object.assign({},Vh.DEFAULTS,t),this.init()}init(){this.selected=null,this.keydownHandler=null,this.elements={},this.keys={},this.options.down.forEach(e=>this.keys[e]=Vh.DIRECTION.down),this.options.end.forEach(e=>this.keys[e]=Vh.DIRECTION.end),this.options.home.forEach(e=>this.keys[e]=Vh.DIRECTION.home),this.options.left.forEach(e=>this.keys[e]=Vh.DIRECTION.left),this.options.right.forEach(e=>this.keys[e]=Vh.DIRECTION.right),this.options.up.forEach(e=>this.keys[e]=Vh.DIRECTION.up)}enable(){this.getElements(),this.keydownHandler=e=>this.handleKeydown(e),this.doc.addEventListener("keydown",this.keydownHandler),this.enabled=!0}disable(){this.keydownHandler&&this.doc.removeEventListener("keydown",this.keydownHandler),this.unselect(),this.elements={},this.enabled=!1}destroy(){this.disable(),this.container.domNavigator&&delete this.container.domNavigator}getNextElement(e){let t;if(e===Vh.DIRECTION.home)t=this.getElements(e)[0];else if(e===Vh.DIRECTION.end)t=Array.from(this.getElements(e)).pop();else if(this.selected)if(e===Vh.DIRECTION.right){const n=this.getElements(e);t=n.slice(n.indexOf(this.selected))[1]}else if(e==Vh.DIRECTION.left){const n=this.getElements(e);t=n.slice(0,n.indexOf(this.selected)).pop()||this.selected}else if(e==Vh.DIRECTION.down){const e=this.selected.offsetLeft,n=this.selected.offsetTop+this.selected.offsetHeight,r=this.elementsAfter(0,n),i=t=>Math.abs(t.offsetLeft-e)+Math.abs(t.offsetTop-n);t=Vh.getClosestElement(r,i)}else{if(e!=Vh.DIRECTION.up)throw new Error("getNextElement: invalid direction value");{const e=this.selected.offsetLeft,n=this.selected.offsetTop-1,r=this.elementsBefore(1/0,n),i=t=>Math.abs(e-t.offsetLeft)+Math.abs(n-t.offsetTop);t=Vh.getClosestElement(r,i)}}else t=e===Vh.DIRECTION.right||e===Vh.DIRECTION.down?this.getElements(e)[1]:this.getElements(e)[0];return this.options.jump_to_picked&&t&&t.matches(this.options.jump_to_picked)&&e===this.options.jump_to_picked_direction&&(t=this.container.querySelector(this.options.jump_to_picked_selector)||t),t}select(e,t){e&&e!==this.selected&&(this.unselect(),t&&this.scrollTo(e,t),e.matches("input")?e.focus():Uh.addClass(this.options.selected,e),this.selected=e,this.options.onSelected&&this.options.onSelected(e))}unselect(){this.selected&&(Uh.removeClass(this.options.selected,this.selected),delete this.selected)}scrollTo(e,t){if(this.inScrollContainerViewport(e)){if(!function(e){const t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}(e))switch(t){case Vh.DIRECTION.left:document.body.scrollLeft=Gh(e)-document.body.offsetLeft;break;case Vh.DIRECTION.up:document.body.scrollTop=Wh(e)-document.body.offsetTop;break;case Vh.DIRECTION.right:document.body.scrollLeft=Gh(e)-document.body.offsetLeft-(document.documentElement.clientWidth-e.offsetWidth);break;case Vh.DIRECTION.down:document.body.scrollTop=Wh(e)-document.body.offsetTop-(document.documentElement.clientHeight-e.offsetHeight)}}else{const n=this.scroll_container;if(!n.contains(e))return;switch(t){case Vh.DIRECTION.left:n.scrollLeft=e.offsetLeft-n.offsetLeft,n.scrollTop=e.offsetTop-n.offsetTop;break;case Vh.DIRECTION.up:n.scrollTop=e.offsetTop-n.offsetTop;break;case Vh.DIRECTION.right:n.scrollLeft=e.offsetLeft-n.offsetLeft-(n.offsetWidth-e.offsetWidth),n.scrollTop=e.offsetTop-n.offsetTop-(n.offsetHeight-e.offsetHeight);break;case Vh.DIRECTION.down:n.scrollTop=e.offsetTop-n.offsetTop-(n.offsetHeight-e.offsetHeight)}}}inScrollContainerViewport(e){const t=this.scroll_container;return!(e.offsetLeft-t.scrollLeft<t.offsetLeft)&&(!(e.offsetTop-t.scrollTop<t.offsetTop)&&(!(e.offsetLeft+e.offsetWidth-t.scrollLeft>t.offsetLeft+t.offsetWidth)&&!(e.offsetTop+e.offsetHeight-t.scrollTop>t.offsetTop+t.offsetHeight)))}getElements(e){const t=this.options.getSelector?this.options.getSelector(e):this.options.selector;return this.elements[t]||(this.elements[t]=Array.from(this.container.querySelectorAll(t))),this.elements[t]}elementsAfter(e,t){return this.getElements(Vh.DIRECTION.down).filter(n=>n.offsetLeft>=e&&n.offsetTop>=t)}elementsBefore(e,t){return this.getElements(Vh.DIRECTION.up).filter(n=>n.offsetLeft<=e&&n.offsetTop<=t)}handleKeydown(e){const t=$h,n=e.shiftKey?this.keys["".concat(t.SHIFT,"+").concat(e.which)]:this.keys[e.which];if(n){e.preventDefault(),e.stopPropagation();const t=this.getNextElement(n,e);this.select(t,n)}}}var Jh=Vh; /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -404,13 +413,13 @@ const{Strophe:Nd}=Yc.env,Id=Yc.env.utils;Yc.plugins.add("converse-bookmark-views * Code distributed by Google as part of the polymer project is also * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt - */ -const sh=new WeakMap,oh=Ea((...e)=>t=>{let n=sh.get(t);void 0===n&&(n={lastRenderedIndex:2147483647,values:[]},sh.set(t,n));const r=n.values;let i=r.length;n.values=e;for(let s=0;s<e.length&&!(s>n.lastRenderedIndex);s++){const o=e[s];if(Na(o)||"function"!=typeof o.then){t.setValue(o),n.lastRenderedIndex=s;break}s<i&&o===r[s]||(n.lastRenderedIndex=2147483647,i=0,Promise.resolve(o).then(e=>{const r=n.values.indexOf(o);r>-1&&r<n.lastRenderedIndex&&(n.lastRenderedIndex=r,t.setValue(e),t.commit())}))}});function ah(){const e=dh(["",""]);return ah=function(){return e},e}function ch(){const e=dh(["",""]);return ch=function(){return e},e}function lh(){const e=dh(['<span class="mention">',"</span>"]);return lh=function(){return e},e}function uh(){const e=dh(['<span class="mention mention--self badge badge-info">',"</span>"]);return uh=function(){return e},e}function dh(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const hh=Yc.env.utils;class fh extends String{constructor(e){super(e),this.references=[]}addTemplateResult(e,t,n){this.references.push({begin:e,end:t,template:n})}isMeCommand(){const e=this.toString();return!!e&&e.startsWith("/me ")}static replaceText(e){return Cl(e.replace(/\n\n+/g,"\n\n"))}marshall(){let e=[this.toString()];this.references.sort((e,t)=>t.begin-e.begin).forEach(t=>{const n=e.shift();e=[n.slice(0,t.begin),t.template,n.slice(t.end),...e]}),this.isMeCommand()&&(e[0]=e[0].substring(4));return e.reduce((e,t)=>"string"==typeof t?[...e,fh.replaceText(t)]:[...e,t],[])}}function ph(e,t){var n;const r=t.collection.chatbox.get("nick");null===(n=t.get("references"))||void 0===n||n.forEach(t=>{const n=e.slice(t.begin,t.end);var i;n===r?e.addTemplateResult(t.begin,t.end,(i={mention:n},Ga(uh(),i.mention))):e.addTemplateResult(t.begin,t.end,(e=>Ga(lh(),e.mention))({mention:n}))})}class gh{constructor(e){var t;this.model=e.model,this.component=e,this.chatview=null===(t=hh.ancestor(this.component,"converse-chat-message"))||void 0===t?void 0:t.chatview,this.was_scrolled_up=this.chatview.model.get("scrolled"),this.text=this.component.model.getMessageText()}scrollDownOnImageLoad(){this.was_scrolled_up||this.chatview.scrollDown()}async transform(){const e=new fh(this.text);return await qc.trigger("beforeMessageBodyTransformed",this.model,e,{Synchronous:!0}),function(e,t,n){const r=[];try{const t={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi};ih.a.withinString(e,(e,t,n)=>(r.push({url:e,start:t,end:n}),e),t)}catch(e){return void Pn.debug(e)}const i=qc.settings.get("show_images_inline");r.forEach(r=>{const s=e.slice(r.start,r.end),o=hh.filterQueryParamsFromURL(s);e.addTemplateResult(r.start,r.end,i&&hh.isImageURL(s)&&hh.isImageDomainAllowed(s)?hh.convertToImageTag(o,t,n):hh.convertUrlToHyperlink(o))})}(e,()=>this.scrollDownOnImageLoad(),e=>this.component.showImageModal(e)),function(e){const t=/geo:([\-0-9.]+),([\-0-9.]+)(?:,([\-0-9.]+))?(?:\?(.*))?/g,n=e.matchAll(t);for(const r of n)e.addTemplateResult(r.index,r.index+r.input.length,hh.convertUrlToHyperlink(r.input.replace(t,Lc.geouri_replacement)))}(e),await async function(e){await qc.emojis.initialize(),[...Tl(e.toString()),...Ol(e.toString())].forEach(t=>{e.addTemplateResult(t.begin,t.end,jl(t,{add_title_wrapper:!0}))})}(e),ph(e,this.model),await qc.trigger("afterMessageBodyTransformed",this.model,e,{Synchronous:!0}),e.marshall()}render(){return Ga(ch(),oh(this.transform(),Ga(ah(),this.text)))}}const mh=Ea(e=>t=>{var n;const r=new gh(e);t.setValue(r.render());const i=e.model;null===(n=i.collection)||void 0===n||n.trigger("rendered",i)});function vh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <audio controls src="','"></audio>\n <a target="_blank" rel="noopener" href="','">',"</a>\n"]);return vh=function(){return e},e}qc.elements.define("converse-chat-message-body",class extends uc{static get properties(){return{model:{type:Object},is_me_message:{type:Boolean},text:{type:String}}}showImageModal(e){e.preventDefault(),void 0===this.image_modal&&(this.image_modal=new nh),this.image_modal.src=e.target.src,this.image_modal.render(),this.image_modal.show(e)}render(){return mh(this)}});function _h(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<a target="_blank" rel="noopener" href="','">',"</a>"]);return _h=function(){return e},e}var bh=e=>Ga(_h(),e.url,e.label_download),yh=n(129),wh=n.n(yh),Sh=n(130),xh=n.n(Sh),Eh=n(50),Ah=n.n(Eh),Ch=n(131),jh=n.n(Ch),Th=n(132),Oh=n.n(Th),kh=n(133),Nh=n.n(kh),Ih=n(51),Mh=n.n(Ih);function Rh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<a href="','"\n class="chat-image__link"\n target="_blank"\n rel="noopener"\n ><img class="chat-image img-thumbnail" src="','" @click='," @error="," @load=","/></a>"]);return Rh=function(){return e},e}const Dh=Ea((e,t,n,r)=>i=>{i.setValue(Ga(Rh(),t,e,r,(function(){const s=Yc.env.utils;s.isURLWithImageExtension(e)?(i.setValue(s.convertUrlToHyperlink(t)),i.commit()):(i.setValue(Dh("".concat(e,".png"),t,n,r)),i.commit())}),n))});function Ph(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["",""]);return Ph=function(){return e},e}var Lh=n(134),zh=n.n(Lh);function Fh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<video controls preload="metadata" src="','" style="max-height: 50vh"></video>']);return Fh=function(){return e},e}function Bh(){const e=Hh(['<a target="_blank" rel="noopener" href="','">',"</a>"]);return Bh=function(){return e},e}function qh(){const e=Hh(['\n <a target="_blank"\n rel="noopener"\n @click=','\n href="','">',"</a>"]);return qh=function(){return e},e}function Hh(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} + */const Xh=new WeakMap,Qh=ka((...e)=>t=>{let n=Xh.get(t);void 0===n&&(n={lastRenderedIndex:2147483647,values:[]},Xh.set(t,n));const r=n.values;let i=r.length;n.values=e;for(let o=0;o<e.length&&!(o>n.lastRenderedIndex);o++){const s=e[o];if(La(s)||"function"!=typeof s.then){t.setValue(s),n.lastRenderedIndex=o;break}o<i&&s===r[o]||(n.lastRenderedIndex=2147483647,i=0,Promise.resolve(s).then(e=>{const r=n.values.indexOf(s);r>-1&&r<n.lastRenderedIndex&&(n.lastRenderedIndex=r,t.setValue(e),t.commit())}))}});function Yh(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="dropleft">\n <button type="button" class="btn btn--transparent btn--standalone" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n <i class="',' only-icon"></i>\n </button>\n <div class="dropdown-menu">\n ',"\n </div>\n </div>\n "]);return Yh=function(){return e},e}const Kh=rl.env.utils;class Zh extends mc{firstUpdated(){this.menu=this.querySelector(".dropdown-menu"),this.dropdown=this.firstElementChild,this.button=this.dropdown.querySelector("button"),this.dropdown.addEventListener("click",e=>this.toggleMenu(e)),this.dropdown.addEventListener("keyup",e=>this.handleKeyUp(e)),document.addEventListener("click",e=>!this.contains(e.composedPath()[0])&&this.hideMenu(e))}hideMenu(){var e,t;Kh.removeClass("show",this.menu),null===(e=this.button)||void 0===e||e.setAttribute("aria-expanded",!1),null===(t=this.button)||void 0===t||t.blur()}showMenu(){Kh.addClass("show",this.menu),this.button.setAttribute("aria-expanded",!0)}toggleMenu(e){e.preventDefault(),Kh.hasClass("show",this.menu)?this.hideMenu():this.showMenu()}handleKeyUp(e){e.keyCode===rl.keycodes.ESCAPE?this.hideMenu():e.keyCode===rl.keycodes.DOWN_ARROW&&this.navigator&&!this.navigator.enabled&&this.enableArrowNavigation(e)}}function ef(){const e=rf(['<converse-dropdown class="chat-msg__actions" .items=',"></converse-dropdown>"]);return ef=function(){return e},e}function tf(){const e=rf(['\n <button class="chat-msg__action ','" @click=','>\n <converse-icon class="','"\n path-prefix="','"\n color="var(--text-color-lighten-15-percent)"\n size="1em"></converse-icon>\n ',"\n </button>\n "]);return tf=function(){return e},e}function nf(){const e=rf(["",""]);return nf=function(){return e},e}function rf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-dropdown",class extends Zh{static get properties(){return{icon_classes:{type:String},items:{type:Array}}}render(){const e=this.icon_classes||"fa fa-bars";return Za(Yh(),e,this.items.map(e=>Qh(e,"")))}hideMenu(){super.hideMenu(),this.navigator.disable()}firstUpdated(){super.firstUpdated(),this.initArrowNavigation()}initArrowNavigation(){if(!this.navigator){const e={selector:".dropdown-item",onSelected:e=>e.focus()};this.navigator=new Jh(this.menu,e)}}enableArrowNavigation(e){e&&(e.preventDefault(),e.stopPropagation()),this.navigator.enable(),this.navigator.select(this.menu.firstElementChild)}handleKeyUp(e){super.handleKeyUp(e),e.keyCode!==rl.keycodes.DOWN_ARROW||this.navigator.enabled||this.enableArrowNavigation(e)}});class of extends mc{static get properties(){return{chatview:{type:Object},model:{type:Object},editable:{type:Boolean},correcting:{type:Boolean},message_type:{type:String},is_retracted:{type:Boolean}}}render(){return Za(nf(),Qh(this.renderActions(),""))}static getActionsDropdownItem(e){return Za(tf(),e.button_class,e.handler,e.icon_class,Vc.settings.get("assets_path"),e.i18n_text)}onMessageEditButtonClicked(e){e.preventDefault(),this.chatview.onMessageEditButtonClicked(this.model)}onMessageRetractButtonClicked(e){e.preventDefault(),this.chatview.onMessageRetractButtonClicked(this.model)}async getActionButtons(){const e=[];this.editable&&e.push({i18n_text:this.correcting?zd("Cancel Editing"):zd("Edit"),handler:e=>this.onMessageEditButtonClicked(e),button_class:"chat-msg__action-edit",icon_class:"fa fa-pencil-alt",name:"edit"});const t="groupchat"===this.model.get("type")&&await this.model.mayBeModerated();return!this.is_retracted&&(this.model.mayBeRetracted()||t)&&e.push({i18n_text:zd("Retract"),handler:e=>this.onMessageRetractButtonClicked(e),button_class:"chat-msg__action-retract",icon_class:"fas fa-trash-alt",name:"retract"}),Vc.hook("getMessageActionButtons",this,e)}async renderActions(){const e=(await this.getActionButtons()).map(e=>of.getActionsDropdownItem(e));return e.length?Za(ef(),e):""}}Vc.elements.define("converse-message-actions",of);var sf=n(34),af=n.n(sf);function cf(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<div class="alert ','" role="alert"><p>',"</p></div>"]);return cf=function(){return e},e}const{sizzle:lf}=rl.env,uf=rl.env.utils;var df=eh.extend({className:"modal",persistent:!1,events:{"click .nav-item .nav-link":"switchTab"},initialize(e){if(!this.id)throw new Error("Each modal class must have a unique id attribute");this.render(),Object.assign(this,e),this.el.setAttribute("tabindex","-1"),this.el.setAttribute("role","dialog"),this.el.setAttribute("aria-hidden","true");const t=this.el.querySelector(".modal-title").getAttribute("id");t&&this.el.setAttribute("aria-labelledby",t),this.insertIntoDOM();const n=af.a.Modal;this.modal=new n(this.el,{backdrop:!0,keyboard:!0}),this.el.addEventListener("hide.bs.modal",()=>this.onHide(),!1)},onHide(){uf.removeClass("selected",this.trigger_el),!this.persistent&&Vc.modal.remove(this)},insertIntoDOM(){Uc.chatboxviews.el.querySelector("#converse-modals").insertAdjacentElement("beforeEnd",this.el)},switchTab(e){e.stopPropagation(),e.preventDefault(),lf(".nav-link.active",this.el).forEach(e=>{uf.removeClass("active",this.el.querySelector(e.getAttribute("href"))),uf.removeClass("active",e)}),uf.addClass("active",e.target),uf.addClass("active",this.el.querySelector(e.target.getAttribute("href")))},alert(e,t="primary"){const n=this.el.querySelector(".modal-alert");if(null===n)return void zn.error("Could not find a .modal-alert element in the modal to show an alert message in!");var r;Ya((r={type:"alert-".concat(t),message:e},Za(cf(),r.type,r.message)),n);const i=n.firstElementChild;setTimeout(()=>{uf.addClass("fade-out",i),setTimeout(()=>uf.removeElement(i),600)},5e3)},show(e){e&&(e.preventDefault(),this.trigger_el=e.target,this.trigger_el.classList.add("selected")),this.modal.show()}});function hf(){const e=pf(['<button type="button" class="close" data-dismiss="modal" aria-label="','"><span aria-hidden="true">×</span></button>']);return hf=function(){return e},e}function ff(){const e=pf(['<button type="button" class="btn btn-secondary" data-dismiss="modal">',"</button>"]);return ff=function(){return e},e}function pf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const gf=Za(ff(),zd("Close")),mf=Za(hf(),zd("Close"));function vf(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog fit-content" role="document">\n <div class="modal-content fit-content">\n <div class="modal-header">\n <h4 class="modal-title" id="message-versions-modal-label">','<a target="_blank" rel="noopener" href="','">',"</a></h4>\n ",'\n </div>\n <div class="modal-body modal-body--image fit-content">\n <img class="chat-image" src="','" @load=','>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>"]);return vf=function(){return e},e}var _f=df.extend({id:"image-modal",toHTML(){return e={src:this.src,onload:e=>e.target.parentElement.style.height="".concat(e.target.height,"px")},Za(vf(),zd("Image: "),e.src,e.src,mf,e.src,e.onload,gf);var e}});function bf(){const e=wf(["",""]);return bf=function(){return e},e}function yf(){const e=wf(["",""]);return yf=function(){return e},e}function wf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const Sf=ka((e,t,n)=>r=>r.setValue(function(e,t,n){const r=new $f(e,t,n,!1);return Za(yf(),Qh(async function(e){return await e.addTemplates(),e.payload}(r),Za(bf(),r)))}(e,t,n)));function xf(){const e=Of(['<span class="styling-directive">*</span><b>','</b><span class="styling-directive">*</span>']);return xf=function(){return e},e}function Ef(){const e=Of(['<span class="styling-directive">~</span><del>','</del><span class="styling-directive">~</span>']);return Ef=function(){return e},e}function Af(){const e=Of(["<blockquote>","</blockquote>"]);return Af=function(){return e},e}function Cf(){const e=Of(['<div class="styling-directive">```</div><code class="block">','</code><div class="styling-directive">```</div>'],['<div class="styling-directive">\\`\\`\\`</div><code class="block">','</code><div class="styling-directive">\\`\\`\\`</div>']);return Cf=function(){return e},e}function jf(){const e=Of(['<span class="styling-directive">`</span><code>','</code><span class="styling-directive">`</span>'],['<span class="styling-directive">\\`</span><code>','</code><span class="styling-directive">\\`</span>']);return jf=function(){return e},e}function Tf(){const e=Of(['<span class="styling-directive">_</span><i>','</i><span class="styling-directive">_</span>']);return Tf=function(){return e},e}function Of(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - * @description This is the DOM/HTML utilities module. - */const Uh=["http","https","xmpp","mailto"];function $h(e,t){return{"muc#roomconfig_lang":"language","muc#roomconfig_roomsecret":(null==t?void 0:t.new_password)?"new-password":"current-password"}[e]}const Wh={"text-private":"password","text-single":"text",fixed:"label",boolean:"checkbox",hidden:"hidden","jid-multi":"textarea","list-single":"dropdown","list-multi":"dropdown"};function Vh(e){try{return e instanceof ih.a?e:new ih.a(e)}catch(e){return Pn.debug(e),null}}function Gh(e,t){const n=Vh(t);if(null===n||!function(e){return"http:"===window.location.protocol||"https:"===window.location.protocol&&"https"===e.protocol().toLowerCase()}(n))return!1;const r=n.filename().toLowerCase();return!!e.filter(e=>r.endsWith(e)).length}function Jh(e){try{return decodeURI(e.filename())}catch(t){return Pn.debug(t),e.filename()}}function Xh(e,t){const{__:n}=e;return r={url:t.toString(),label_download:n('Download audio file "%1$s"',Jh(t))},Ga(vh(),r.url,r.url,r.label_download);var r}function Qh(e,t){e.classList.remove("visible"),M(t)&&t()}qs.isAudioURL=e=>Gh([".ogg",".mp3",".m4a"],e),qs.isVideoURL=e=>Gh([".mp4",".webm"],e),qs.isURLWithImageExtension=e=>Gh([".jpg",".jpeg",".png",".gif",".bmp",".tiff",".svg"],e),qs.isImageURL=e=>{const t=qc.settings.get("image_urls_regex");return(null==t?void 0:t.test(e))||qs.isURLWithImageExtension(e)},qs.isImageDomainAllowed=e=>{const t=qc.settings.get("show_images_inline");if(!Array.isArray(t))return!0;try{const n=Vh(e).domain();return t.includes(n)}catch(e){return Pn.debug(e),!0}},qs.getOOBURLMarkup=function(e,t){const n=Vh(t);return null===n?t:qs.isVideoURL(n)?(r={url:t},Ga(Fh(),r.url)):qs.isAudioURL(n)?Xh(e,n):qs.isImageURL(n)?function(e,t){const{__:n}=e;return bh({url:t.toString(),label_download:n('Download image file "%1$s"',Jh(t))})}(e,n):function(e,t){const{__:n}=e;return bh({url:t.toString(),label_download:n('Download file "%1$s"',Jh(t))})}(e,n);var r},qs.applyDragResistance=function(e,t){if(void 0===e)return;if(void 0===t)return e;return e!==t&&Math.abs(e-t)<10?t:e},qs.calculateElementHeight=function(e){return Array.from(e.children).reduce((e,t)=>e+t.offsetHeight,0)},qs.getNextElement=function(e,t="*"){let n=e.nextElementSibling;for(;null!==n&&!ur.a.matchesSelector(n,t);)n=n.nextElementSibling;return n},qs.getPreviousElement=function(e,t="*"){let n=e.previousElementSibling;for(;null!==n&&!ur.a.matchesSelector(n,t);)n=n.previousElementSibling;return n},qs.getFirstChildElement=function(e,t="*"){let n=e.firstElementChild;for(;null!==n&&!ur.a.matchesSelector(n,t);)n=n.nextElementSibling;return n},qs.getLastChildElement=function(e,t="*"){let n=e.lastElementChild;for(;null!==n&&!ur.a.matchesSelector(n,t);)n=n.previousElementSibling;return n},qs.hasClass=function(e,t){return t instanceof Element&&t.classList.contains(e)},qs.toggleClass=function(e,t){qs.hasClass(e,t)?qs.removeClass(e,t):qs.addClass(e,t)},qs.addClass=function(e,t){return t instanceof Element&&t.classList.add(e),t},qs.removeClass=function(e,t){return t instanceof Element&&t.classList.remove(e),t},qs.removeElement=function(e){return e instanceof Element&&e.parentNode&&e.parentNode.removeChild(e),e},qs.getElementFromTemplateResult=function(e){const t=document.createElement("div");return Wa(e,t),t.firstElementChild},qs.showElement=e=>{qs.removeClass("collapsed",e),qs.removeClass("hidden",e)},qs.hideElement=function(e){return e instanceof Element&&e.classList.add("hidden"),e},qs.ancestor=function(e,t){let n=e;for(;null!==n&&!ur.a.matchesSelector(n,t);)n=n.parentElement;return n},qs.nextUntil=function(e,t){const n=[];let r=e.nextElementSibling;for(;null!==r&&!r.matches(t);)n.push(r),r=r.nextElementSibling;return n},qs.unescapeHTML=function(e){var t=document.createElement("div");return t.innerHTML=e,t.innerText},qs.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")},qs.convertToImageTag=function(e,t,n){return r={url:e,onClick:n,onLoad:t},Ga(Ph(),Dh(r.url,r.url,r.onLoad,r.onClick));var r},qs.convertURIoHyperlink=function(e,t){let n=e.normalize()._string;const r=e._parts.urn?n:e.readable(),i=t||r;return e._parts.protocol||n.startsWith("http://")||n.startsWith("https://")||(n="http://"+n),"xmpp"===e._parts.protocol&&"join"===e._parts.query?Ga(qh(),e=>qc.rooms.open(e.target.href),n,i):Ga(Bh(),n,i)},qs.convertUrlToHyperlink=function(e){const t=RegExp("^w{3}.","ig").test(e)?"http://".concat(e):e,n=Vh(e);return null===n||!function(e){try{return!!new URL(e)}catch(e){return!1}}(t)||!function(e,t=Uh){return!!t.includes(e)}(n._parts.protocol)&&n._parts.protocol?e:this.convertURIoHyperlink(n,e)},qs.filterQueryParamsFromURL=function(e){const t=qc.settings.get("filter_url_query_params");return t?Vh(e).removeQuery(t).toString():e},qs.addHyperlinks=function(e){const t=[],n={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi};try{ih.a.withinString(e,(e,n,r)=>(t.push({url:e,start:n,end:r}),e),n)}catch(t){return Pn.debug(t),[e]}let r=[e];return t.length?t.sort((e,t)=>t.start-e.start).forEach(e=>{const t=r.shift(),n=t.slice(e.start,e.end);r=[t.slice(0,e.start),qs.convertUrlToHyperlink(n),t.slice(e.end),...r]}):r=[e],r},qs.httpToGeoUri=function(e,t){return e.replace(t.api.settings.get("geouri_regex"),"geo:$1,$2")},qs.slideInAllElements=function(e,t=300){return Promise.all(Array.from(e).map(e=>qs.slideIn(e,t)))},qs.slideToggleElement=function(e,t){return qs.hasClass("collapsed",e)||qs.hasClass("hidden",e)?qs.slideOut(e,t):qs.slideIn(e,t)},qs.slideOut=function(e,t=200){return new Promise((n,r)=>{if(!e){const e="An element needs to be passed in to slideOut";return Pn.warn(e),void r(new Error(e))}const i=e.getAttribute("data-slider-marker");i&&(e.removeAttribute("data-slider-marker"),window.cancelAnimationFrame(i));const s=qs.calculateElementHeight(e);if(window.converse_disable_effects)return e.style.height=s+"px",function(e){e.removeAttribute("data-slider-marker"),e.classList.remove("collapsed"),e.style.overflow="",e.style.height=""}(e),void n();if(!qs.hasClass("collapsed",e)&&!qs.hasClass("hidden",e))return void n();const o=t/17;let a=0;e.style.height="0",e.style.overflow="hidden",e.classList.remove("hidden"),e.classList.remove("collapsed"),e.setAttribute("data-slider-marker",window.requestAnimationFrame((function t(){a+=s/o,a<s?(e.style.height=a+"px",e.setAttribute("data-slider-marker",window.requestAnimationFrame(t))):(e.removeAttribute("data-slider-marker"),e.style.height=qs.calculateElementHeight(e)+"px",e.style.overflow="",e.style.height="",n())})))})},qs.slideIn=function(e,t=200){return new Promise((n,r)=>{if(!e){const e="An element needs to be passed in to slideIn";return Pn.warn(e),r(new Error(e))}if(qs.hasClass("collapsed",e))return n(e);if(window.converse_disable_effects)return e.classList.add("collapsed"),e.style.height="",n(e);const i=e.getAttribute("data-slider-marker");i&&(e.removeAttribute("data-slider-marker"),window.cancelAnimationFrame(i));const s=e.offsetHeight,o=t/17;let a=s;e.style.overflow="hidden",e.setAttribute("data-slider-marker",window.requestAnimationFrame((function t(){a-=s/o,a>0?(e.style.height=a+"px",e.setAttribute("data-slider-marker",window.requestAnimationFrame(t))):(e.removeAttribute("data-slider-marker"),e.classList.add("collapsed"),e.style.height="",n(e))})))})},qs.isInDOM=function(e){return document.querySelector("body").contains(e)},qs.isVisible=function(e){return null!==e&&(!qs.hasClass("hidden",e)&&(e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0))},qs.fadeIn=function(e,t){if(e||Pn.warn("An element needs to be passed in to fadeIn"),window.converse_disable_effects)return e.classList.remove("hidden"),Qh(e,t);qs.hasClass("hidden",e)?(e.classList.add("visible"),e.classList.remove("hidden"),e.addEventListener("webkitAnimationEnd",()=>Qh(e,t)),e.addEventListener("animationend",()=>Qh(e,t)),e.addEventListener("oanimationend",()=>Qh(e,t))):Qh(e,t)},qs.xForm2webForm=function(e,t,n){if("list-single"===e.getAttribute("type")||"list-multi"===e.getAttribute("type")){const t=qs.queryChildren(e,"value").map(e=>null==e?void 0:e.textContent),n=qs.queryChildren(e,"option").map(n=>{var r;const i=null===(r=n.querySelector("value"))||void 0===r?void 0:r.textContent;return zh()({value:i,label:n.getAttribute("label"),selected:t.includes(i),required:!!e.querySelector("required")})});return jh()({id:qs.getUniqueId(),name:e.getAttribute("var"),label:e.getAttribute("label"),options:n.join(""),multiple:"list-multi"===e.getAttribute("type"),required:!!e.querySelector("required")})}if("fixed"===e.getAttribute("type")){var r;return'<p class="form-help">'+(null===(r=e.querySelector("value"))||void 0===r?void 0:r.textContent)+"</p>"}var i,s,o;if("jid-multi"===e.getAttribute("type"))return Oh()({name:e.getAttribute("var"),label:e.getAttribute("label")||"",value:null===(i=e.querySelector("value"))||void 0===i?void 0:i.textContent,required:!!e.querySelector("required")});if("boolean"===e.getAttribute("type")){var a;const t=null===(a=e.querySelector("value"))||void 0===a?void 0:a.textContent;return xh()({id:qs.getUniqueId(),name:e.getAttribute("var"),label:e.getAttribute("label")||"",checked:"1"===t||"true"===t?'checked="1"':"",required:!!e.querySelector("required")})}if("url"===e.getAttribute("var"))return Nh()({label:e.getAttribute("label")||"",value:null===(s=e.querySelector("value"))||void 0===s?void 0:s.textContent});if("username"===e.getAttribute("var"))return Mh()({domain:" @"+n.domain,name:e.getAttribute("var"),type:Wh[e.getAttribute("type")],label:e.getAttribute("label")||"",value:null===(o=e.querySelector("value"))||void 0===o?void 0:o.textContent,required:!!e.querySelector("required")});if("ocr"===e.getAttribute("var")){const n=e.querySelector("uri"),r=ur()('data[cid="'+n.textContent.replace(/^cid:/,"")+'"]',t)[0];return wh()({label:e.getAttribute("label"),name:e.getAttribute("var"),data:null==r?void 0:r.textContent,type:n.getAttribute("type"),required:!!e.querySelector("required")})}{var c;const t=e.getAttribute("var");return Ah()({id:qs.getUniqueId(),label:e.getAttribute("label")||"",name:t,fixed_username:null==n?void 0:n.fixed_username,autocomplete:$h(t,n),placeholder:null,required:!!e.querySelector("required"),type:Wh[e.getAttribute("type")],value:null===(c=e.querySelector("value"))||void 0===c?void 0:c.textContent})}};var Yh=qs;const{keycodes:Kh}=Yc;function Zh(e){let t=0;do{isNaN(e.offsetTop)||(t+=e.offsetTop)}while(e=e.offsetParent);return t}function ef(e){let t=0;do{isNaN(e.offsetLeft)||(t+=e.offsetLeft)}while(e=e.offsetParent);return t}class tf{static get DIRECTION(){return{down:"down",end:"end",home:"home",left:"left",right:"right",up:"up"}}static get DEFAULTS(){return{home:["".concat(Kh.SHIFT,"+").concat(Kh.UP_ARROW)],end:["".concat(Kh.SHIFT,"+").concat(Kh.DOWN_ARROW)],up:[Kh.UP_ARROW],down:[Kh.DOWN_ARROW],left:[Kh.LEFT_ARROW,"".concat(Kh.SHIFT,"+").concat(Kh.TAB)],right:[Kh.RIGHT_ARROW,Kh.TAB],getSelector:null,jump_to_picked:null,jump_to_picked_direction:null,jump_to_picked_selector:"picked",onSelected:null,selected:"selected",selector:"li"}}static getClosestElement(e,t){return e.reduce((e,n)=>{const r=t(n);return r<e.distance?{distance:r,element:n}:e},{distance:1/0}).element}constructor(e,t){this.doc=window.document,this.container=e,this.scroll_container=t.scroll_container||e,this.options=Object.assign({},tf.DEFAULTS,t),this.init()}init(){this.selected=null,this.keydownHandler=null,this.elements={},this.keys={},this.options.down.forEach(e=>this.keys[e]=tf.DIRECTION.down),this.options.end.forEach(e=>this.keys[e]=tf.DIRECTION.end),this.options.home.forEach(e=>this.keys[e]=tf.DIRECTION.home),this.options.left.forEach(e=>this.keys[e]=tf.DIRECTION.left),this.options.right.forEach(e=>this.keys[e]=tf.DIRECTION.right),this.options.up.forEach(e=>this.keys[e]=tf.DIRECTION.up)}enable(){this.getElements(),this.keydownHandler=e=>this.handleKeydown(e),this.doc.addEventListener("keydown",this.keydownHandler),this.enabled=!0}disable(){this.keydownHandler&&this.doc.removeEventListener("keydown",this.keydownHandler),this.unselect(),this.elements={},this.enabled=!1}destroy(){this.disable(),this.container.domNavigator&&delete this.container.domNavigator}getNextElement(e){let t;if(e===tf.DIRECTION.home)t=this.getElements(e)[0];else if(e===tf.DIRECTION.end)t=Array.from(this.getElements(e)).pop();else if(this.selected)if(e===tf.DIRECTION.right){const n=this.getElements(e);t=n.slice(n.indexOf(this.selected))[1]}else if(e==tf.DIRECTION.left){const n=this.getElements(e);t=n.slice(0,n.indexOf(this.selected)).pop()||this.selected}else if(e==tf.DIRECTION.down){const e=this.selected.offsetLeft,n=this.selected.offsetTop+this.selected.offsetHeight,r=this.elementsAfter(0,n),i=t=>Math.abs(t.offsetLeft-e)+Math.abs(t.offsetTop-n);t=tf.getClosestElement(r,i)}else{if(e!=tf.DIRECTION.up)throw new Error("getNextElement: invalid direction value");{const e=this.selected.offsetLeft,n=this.selected.offsetTop-1,r=this.elementsBefore(1/0,n),i=t=>Math.abs(e-t.offsetLeft)+Math.abs(n-t.offsetTop);t=tf.getClosestElement(r,i)}}else t=e===tf.DIRECTION.right||e===tf.DIRECTION.down?this.getElements(e)[1]:this.getElements(e)[0];return this.options.jump_to_picked&&t&&t.matches(this.options.jump_to_picked)&&e===this.options.jump_to_picked_direction&&(t=this.container.querySelector(this.options.jump_to_picked_selector)||t),t}select(e,t){e&&e!==this.selected&&(this.unselect(),t&&this.scrollTo(e,t),e.matches("input")?e.focus():Yh.addClass(this.options.selected,e),this.selected=e,this.options.onSelected&&this.options.onSelected(e))}unselect(){this.selected&&(Yh.removeClass(this.options.selected,this.selected),delete this.selected)}scrollTo(e,t){if(this.inScrollContainerViewport(e)){if(!function(e){const t=e.getBoundingClientRect();return t.top>=0&&t.left>=0&&t.bottom<=window.innerHeight&&t.right<=window.innerWidth}(e))switch(t){case tf.DIRECTION.left:document.body.scrollLeft=ef(e)-document.body.offsetLeft;break;case tf.DIRECTION.up:document.body.scrollTop=Zh(e)-document.body.offsetTop;break;case tf.DIRECTION.right:document.body.scrollLeft=ef(e)-document.body.offsetLeft-(document.documentElement.clientWidth-e.offsetWidth);break;case tf.DIRECTION.down:document.body.scrollTop=Zh(e)-document.body.offsetTop-(document.documentElement.clientHeight-e.offsetHeight)}}else{const n=this.scroll_container;if(!n.contains(e))return;switch(t){case tf.DIRECTION.left:n.scrollLeft=e.offsetLeft-n.offsetLeft,n.scrollTop=e.offsetTop-n.offsetTop;break;case tf.DIRECTION.up:n.scrollTop=e.offsetTop-n.offsetTop;break;case tf.DIRECTION.right:n.scrollLeft=e.offsetLeft-n.offsetLeft-(n.offsetWidth-e.offsetWidth),n.scrollTop=e.offsetTop-n.offsetTop-(n.offsetHeight-e.offsetHeight);break;case tf.DIRECTION.down:n.scrollTop=e.offsetTop-n.offsetTop-(n.offsetHeight-e.offsetHeight)}}}inScrollContainerViewport(e){const t=this.scroll_container;return!(e.offsetLeft-t.scrollLeft<t.offsetLeft)&&(!(e.offsetTop-t.scrollTop<t.offsetTop)&&(!(e.offsetLeft+e.offsetWidth-t.scrollLeft>t.offsetLeft+t.offsetWidth)&&!(e.offsetTop+e.offsetHeight-t.scrollTop>t.offsetTop+t.offsetHeight)))}getElements(e){const t=this.options.getSelector?this.options.getSelector(e):this.options.selector;return this.elements[t]||(this.elements[t]=Array.from(this.container.querySelectorAll(t))),this.elements[t]}elementsAfter(e,t){return this.getElements(tf.DIRECTION.down).filter(n=>n.offsetLeft>=e&&n.offsetTop>=t)}elementsBefore(e,t){return this.getElements(tf.DIRECTION.up).filter(n=>n.offsetLeft<=e&&n.offsetTop<=t)}handleKeydown(e){const t=Kh,n=e.shiftKey?this.keys["".concat(t.SHIFT,"+").concat(e.which)]:this.keys[e.which];if(n){e.preventDefault(),e.stopPropagation();const t=this.getNextElement(n,e);this.select(t,n)}}}var nf=tf;function rf(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="dropleft">\n <button type="button" class="btn btn--transparent btn--standalone" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">\n <i class="',' only-icon"></i>\n </button>\n <div class="dropdown-menu">\n ',"\n </div>\n </div>\n "]);return rf=function(){return e},e}const sf=Yc.env.utils;class of extends uc{firstUpdated(){this.menu=this.querySelector(".dropdown-menu"),this.dropdown=this.firstElementChild,this.button=this.dropdown.querySelector("button"),this.dropdown.addEventListener("click",e=>this.toggleMenu(e)),this.dropdown.addEventListener("keyup",e=>this.handleKeyUp(e)),document.addEventListener("click",e=>!this.contains(e.composedPath()[0])&&this.hideMenu(e))}hideMenu(){var e,t;sf.removeClass("show",this.menu),null===(e=this.button)||void 0===e||e.setAttribute("aria-expanded",!1),null===(t=this.button)||void 0===t||t.blur()}showMenu(){sf.addClass("show",this.menu),this.button.setAttribute("aria-expanded",!0)}toggleMenu(e){e.preventDefault(),sf.hasClass("show",this.menu)?this.hideMenu():this.showMenu()}handleKeyUp(e){e.keyCode===Yc.keycodes.ESCAPE?this.hideMenu():e.keyCode===Yc.keycodes.DOWN_ARROW&&this.navigator&&!this.navigator.enabled&&this.enableArrowNavigation(e)}}function af(){const e=uf(['<converse-dropdown class="chat-msg__actions" .items=',"></converse-dropdown>"]);return af=function(){return e},e}function cf(){const e=uf(['\n <button class="chat-msg__action ','" @click=','>\n <converse-icon class="','"\n path-prefix="','"\n color="var(--text-color-lighten-15-percent)"\n size="1em"></converse-icon>\n ',"\n </button>\n "]);return cf=function(){return e},e}function lf(){const e=uf(["",""]);return lf=function(){return e},e}function uf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-dropdown",class extends of{static get properties(){return{icon_classes:{type:String},items:{type:Array}}}render(){const e=this.icon_classes||"fa fa-bars";return Ga(rf(),e,this.items.map(e=>oh(e,"")))}hideMenu(){super.hideMenu(),this.navigator.disable()}firstUpdated(){super.firstUpdated(),this.initArrowNavigation()}initArrowNavigation(){if(!this.navigator){const e={selector:".dropdown-item",onSelected:e=>e.focus()};this.navigator=new nf(this.menu,e)}}enableArrowNavigation(e){e&&(e.preventDefault(),e.stopPropagation()),this.navigator.enable(),this.navigator.select(this.menu.firstElementChild)}handleKeyUp(e){super.handleKeyUp(e),e.keyCode!==Yc.keycodes.DOWN_ARROW||this.navigator.enabled||this.enableArrowNavigation(e)}});class df extends uc{static get properties(){return{chatview:{type:Object},model:{type:Object},editable:{type:Boolean},correcting:{type:Boolean},message_type:{type:String},is_retracted:{type:Boolean}}}render(){return Ga(lf(),oh(this.renderActions(),""))}static getActionsDropdownItem(e){return Ga(cf(),e.button_class,e.handler,e.icon_class,qc.settings.get("assets_path"),e.i18n_text)}onMessageEditButtonClicked(e){e.preventDefault(),this.chatview.onMessageEditButtonClicked(this.model)}onMessageRetractButtonClicked(e){e.preventDefault(),this.chatview.onMessageRetractButtonClicked(this.model)}async renderActions(){const e=[];this.editable&&e.push({i18n_text:this.correcting?dd("Cancel Editing"):dd("Edit"),handler:e=>this.onMessageEditButtonClicked(e),button_class:"chat-msg__action-edit",icon_class:"fa fa-pencil-alt",name:"edit"});const t="groupchat"===this.model.get("type")&&await this.model.mayBeModerated();!this.is_retracted&&(this.model.mayBeRetracted()||t)&&e.push({i18n_text:dd("Retract"),handler:e=>this.onMessageRetractButtonClicked(e),button_class:"chat-msg__action-retract",icon_class:"fas fa-trash-alt",name:"retract"});const n=e.map(e=>df.getActionsDropdownItem(e));return n.length?Ga(af(),n):""}}function hf(){const e=pf(['<p class="older-msg"><time>',"</time>: ","</p>"]);return hf=function(){return e},e}function ff(){const e=pf(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h4 class="modal-title" id="message-versions-modal-label">',"</h4>\n ",'\n </div>\n <div class="modal-body">\n <h4>Older versions</h4>\n ',"\n <hr/>\n <h4>Current version</h4>\n <p>",'</p>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n"]);return ff=function(){return e},e}function pf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-message-actions",df);var gf=Kd.extend({id:"message-versions-modal",toHTML(){return e=this.model.toJSON(),Ga(ff(),dd("Message versions"),Bd,Object.keys(e.older_versions).map(t=>Ga(hf(),Sn()(t).format("MMM D, YYYY, HH:mm:ss"),e.older_versions[t])),e.message,Fd);var e}}),mf=n(135),vf=n.n(mf);function _f(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <svg xmlns="http://www.w3.org/2000/svg" class="avatar ','" width="','" height="','">\n <image width="','" height="','" preserveAspectRatio="xMidYMid meet" href="','"/>\n </svg>']);return _f=function(){return e},e}var bf=e=>{return Ga(_f(),e.classes,e.width,e.height,e.width,e.height,(t=e.image,n=e.image_type,t.startsWith("data:")?t:"data:".concat(n,";base64,").concat(t)));var t,n};const yf=Ea(e=>t=>{const n={classes:e.classes?"".concat(e.classes," avatar"):"avatar",height:e.width||36,image:e.image,image_type:e.image_type,width:e.height||36};t.setValue(bf(n))});function wf(){const e=Cf(['\n <time timestamp="','" class="chat-msg__time">','</time> \n <span class="chat-msg__author">',"","</span> "]);return wf=function(){return e},e}function Sf(){const e=Cf(['<span class="fa fa-lock"></span>']);return Sf=function(){return e},e}function xf(){const e=Cf(['\n <span class="chat-msg__heading">\n <span class="chat-msg__author">',"</span>\n ","\n ","\n </span>"]);return xf=function(){return e},e}function Ef(){const e=Cf(['<div class="message separator"><hr class="separator"><span class="separator-text">',"</span></div>"]);return Ef=function(){return e},e}function Af(){const e=Cf(["\n ",'\n <div class="message chat-msg ','"\n data-isodate="','"\n data-msgid="','"\n data-from="','"\n data-encrypted="','">\n\n ','\n <div class="chat-msg__content chat-msg__content--'," ",'">\n\n ','\n <div class="chat-msg__body chat-msg__body--'," "," ",'">\n <div class="chat-msg__message">\n ',"\n ","\n </div>\n <converse-message-actions\n .chatview=","\n .model=",'\n ?correcting="','"\n ?editable="','"\n ?is_retracted="','"\n message_type="','"></converse-message-actions>\n </div>\n </div>\n </div>']);return Af=function(){return e},e}function Cf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function jf(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<span class="spinner fa fa-spinner centered ','"/>']);return jf=function(){return e},e}var Tf=(e={})=>Ga(jf(),e.classes||"");function Of(){const e=$f(['<span class="badge badge-secondary">',"</span>"]);return Of=function(){return e},e}function kf(){const e=$f(["\n ",'\n <time timestamp="','" class="chat-msg__time">',"</time>\n "]);return kf=function(){return e},e}function Nf(){const e=$f(['<div class="chat-msg__media">',"</div>"]);return Nf=function(){return e},e}function If(){const e=$f(['<i title="','" class="fa fa-edit chat-msg__edit-modal" @click=',"></i>"]);return If=function(){return e},e}function Mf(){const e=$f(['<span class="fa fa-check chat-msg__receipt"></span>']);return Mf=function(){return e},e}function Rf(){const e=$f(['<div class="chat-msg__subject">',"</div>"]);return Rf=function(){return e},e}function Df(){const e=$f(["\n ","\n ",'\n <span>\n <converse-chat-message-body\n class="chat-msg__text '," ",'"\n .model="','"\n ?is_me_message="','"\n ?is_only_emojis="','"\n ?is_spoiler="','"\n ?is_spoiler_visible="','"\n text="','"></converse-chat-message-body>\n ',"\n ","\n </span>\n ",'\n <div class="chat-msg__error">',"</div>\n "]);return Df=function(){return e},e}function Pf(){const e=$f(['\n <div class="chat-msg__spoiler-hint">\n <span class="spoiler-hint">','</span>\n <a class="badge badge-info spoiler-toggle" href="#" @click=','>\n <i class="fa ','"></i>\n ',"\n </a>\n </div>\n "]);return Pf=function(){return e},e}function Lf(){const e=$f(['<q class="chat-msg--retracted__reason">',"</q>"]);return Lf=function(){return e},e}function zf(){const e=$f(["\n <div>","</div>\n ","\n "]);return zf=function(){return e},e}function Ff(){const e=$f(['\n <div class="message chat-msg">\n ','\n <div class="chat-msg__content">\n <span class="chat-msg__text">'," <strong>","</strong>, ",'</span>\n <progress value="','"/>\n </div>\n </div>']);return Ff=function(){return e},e}function Bf(){const e=$f(['<a class="retry" @click=',">","</a>"]);return Bf=function(){return e},e}function qf(){const e=$f(['<q class="reason">',"</q>"]);return qf=function(){return e},e}function Hf(){const e=$f(['<q class="reason">',"</q>"]);return Hf=function(){return e},e}function Uf(){const e=$f(['\n <div class="message chat-info chat-','"\n data-isodate="','"\n data-type="','"\n data-value="','">\n\n <div class="chat-info__message">\n ',"\n </div>\n ","\n ","\n ","\n </div>\n "]);return Uf=function(){return e},e}function $f(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const{Strophe:Wf}=Yc.env,Vf=Yc.env.utils;class Gf extends uc{static get properties(){return{chatview:{type:Object},correcting:{type:Boolean},editable:{type:Boolean},edited:{type:String},error:{type:String},error_text:{type:String},from:{type:String},has_mentions:{type:Boolean},hats:{type:Array},is_delayed:{type:Boolean},is_encrypted:{type:Boolean},is_first_unread:{type:Boolean},is_me_message:{type:Boolean},is_only_emojis:{type:Boolean},is_retracted:{type:Boolean},is_spoiler:{type:Boolean},is_spoiler_visible:{type:Boolean},message_type:{type:String},model:{type:Object},moderated_by:{type:String},moderation_reason:{type:String},msgid:{type:String},occupant_affiliation:{type:String},occupant_role:{type:String},oob_url:{type:String},progress:{type:Number},reason:{type:String},received:{type:String},retractable:{type:Boolean},retry_event_id:{type:String},sender:{type:String},show_spinner:{type:Boolean},spoiler_hint:{type:String},subject:{type:String},time:{type:String},username:{type:String}}}render(){const e=qc.settings.get("time_format");return this.pretty_time=Sn()(this.time).format(e),this.show_spinner?Tf():this.model.get("file")&&!this.model.get("oob_url")?this.renderFileProgress():["error","info"].includes(this.message_type)?this.renderInfoMessage():this.renderChatMessage()}connectedCallback(){super.connectedCallback(),this.listenTo(this.model,"change",e=>{const t=this.model.collection.chatbox;Object.assign(this,up(t,this.model)),Object.keys(e.changed).filter(e=>Object.keys(Gf.properties).includes(e)).forEach(t=>this[t]=e.changed[t])});const e=this.model.vcard;e&&this.listenTo(e,"change",()=>this.requestUpdate())}updated(){var e;(this.show_spinner||this.model.get("file")&&!this.model.get("oob_url")||["error","info"].includes(this.message_type))&&(null===(e=this.model.collection)||void 0===e||e.trigger("rendered",this.model))}renderInfoMessage(){const e=Sn()(this.model.get("time")).toISOString(),t=dd("Retry");return Ga(Uf(),this.message_type,e,this.data_name,this.data_value,this.model.getMessageText(),this.reason?Ga(Hf(),this.reason):"",this.error_text?Ga(qf(),this.error_text):"",this.retry_event_id?Ga(Bf(),this.onRetryClicked,t):"")}renderFileProgress(){const e=dd("Uploading file:"),t=this.model.file.name,n=vf()(this.model.file.size);return Ga(Ff(),yf(this.getAvatarData()),e,t,n,this.progress)}renderChatMessage(){return(e=>{const t=dd("New messages");return Ga(Af(),e.is_first_unread?Ga(Ef(),t):"",e.getExtraMessageClasses(),e.time,e.msgid,e.from,e.is_encrypted,e.shouldShowAvatar()?yf(e.getAvatarData()):"",e.sender,e.is_me_message?"chat-msg__content--action":"",e.is_me_message?"":Ga(xf(),e.username,e.renderAvatarByline(),e.is_encrypted?Ga(Sf()):""),e.message_type,e.received?"chat-msg__body--received":"",e.is_delayed?"chat-msg__body--delayed":"",e.is_me_message?Ga(wf(),e.time,e.pretty_time,e.is_me_message?"**":"",e.username):"",e.is_retracted?e.renderRetraction():e.renderMessageText(),e.chatview,e.model,e.correcting,e.editable,e.is_retracted,e.message_type)})(this)}shouldShowAvatar(){return qc.settings.get("show_message_avatar")&&!this.is_me_message&&"headline"!==this.type}getAvatarData(){var e,t;return{classes:"chat-msg__avatar",height:36,width:36,image:"data:"+((null===(e=this.model.vcard)||void 0===e?void 0:e.get("image_type"))||Lc.DEFAULT_IMAGE_TYPE)+";base64,"+((null===(t=this.model.vcard)||void 0===t?void 0:t.get("image"))||Lc.DEFAULT_IMAGE)}}async onRetryClicked(){this.show_spinner=!0,await qc.trigger(this.retry_event_id,{synchronous:!0}),this.model.destroy(),this.parentElement.removeChild(this)}isFollowup(){const e=this.model.collection.models,t=e.indexOf(this.model),n=t?e[t-1]:null;if(null===n)return!1;const r=Sn()(this.time);return this.from===n.get("from")&&!this.is_me_message&&!n.isMeCommand()&&"info"!==this.message_type&&"info"!==n.get("type")&&r.isBefore(Sn()(n.get("time")).add(10,"minutes"))&&!!this.is_encrypted==!!n.get("is_encrypted")}getExtraMessageClasses(){const e=[this.isFollowup()?"chat-msg--followup":null,this.is_delayed?"delayed":null,this.is_me_message?"chat-msg--action":null,this.is_retracted?"chat-msg--retracted":null,this.message_type,this.shouldShowAvatar()?"chat-msg--with-avatar":null].map(e=>e);return"groupchat"===this.message_type&&(this.occupant_role&&e.push(this.occupant_role),this.occupant_affiliation&&e.push(this.occupant_affiliation),"them"===this.sender&&this.has_mentions&&e.push("mentioned")),this.correcting&&e.push("correcting"),e.filter(e=>e).join(" ")}getRetractionText(){if("groupchat"===this.message_type&&this.moderated_by){const e=this.moderated_by,t=this.model.collection.chatbox;this.model.mod||(this.model.mod=t.occupants.findOccupant({jid:e})||t.occupants.findOccupant({nick:Wf.getResourceFromJid(e)}));const n=this.model.mod?this.model.mod.getDisplayName():"A moderator";return dd("%1$s has removed this message",n)}return dd("%1$s has removed this message",this.model.getDisplayName())}renderRetraction(){const e=this.is_retracted?this.getRetractionText():null;return Ga(zf(),e,this.moderation_reason?Ga(Lf(),this.moderation_reason):"")}renderMessageText(){const e=dd("This message has been edited"),t=dd("Show more"),n="groupchat"===this.message_type,r=dd("Show less"),i=Ga(Pf(),this.spoiler_hint,this.toggleSpoilerMessage,this.is_spoiler_visible?"fa-eye-slash":"fa-eye",this.is_spoiler_visible?r:t),s=this.is_spoiler?"spoiler ".concat(this.is_spoiler_visible?"":"hidden"):"";return Ga(Df(),this.is_spoiler?i:"",this.subject?Ga(Rf(),this.subject):"",this.is_only_emojis?"chat-msg__text--larger":"",s,this.model,this.is_me_message,this.is_only_emojis,this.is_spoiler,this.is_spoiler_visible,this.model.getMessageText(),!this.received||this.is_me_message||n?"":Ga(Mf()),this.edited?Ga(If(),e,this.showMessageVersionsModal):"",this.oob_url?Ga(Nf(),Vf.getOOBURLMarkup(Lc,this.oob_url)):"",this.error_text||this.error)}renderAvatarByline(){return Ga(kf(),this.hats.map(e=>Ga(Of(),e.title)),this.time,this.pretty_time)}showMessageVersionsModal(e){e.preventDefault(),void 0===this.message_versions_modal&&(this.message_versions_modal=new gf({model:this.model})),this.message_versions_modal.show(e)}toggleSpoilerMessage(e){null==e||e.preventDefault(),this.model.save({is_spoiler_visible:!this.model.get("is_spoiler_visible")})}}function Jf(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="message date-separator" data-isodate="','">\n <hr class="separator"/>\n <time class="separator-text" datetime="','"><span>',"</span></time>\n </div>\n"]);return Jf=function(){return e},e}qc.elements.define("converse-chat-message",Gf); + * @description Utility functions to help with parsing XEP-393 message styling hints + * @todo Other parsing helpers can be made more abstract and placed here. + */const kf=["*","_","~","`","```",">"],Nf={"*":{name:"strong",type:"span"},_:{name:"emphasis",type:"span"},"~":{name:"strike",type:"span"},"`":{name:"preformatted",type:"span"},"```":{name:"preformatted_block",type:"block"},">":{name:"quote",type:"block"}},If=["_",">","`","~"],Mf={emphasis:(e,t,n)=>Za(Tf(),Sf(e,t,n)),preformatted:e=>Za(jf(),e),preformatted_block:e=>Za(Cf(),e),quote:(e,t,n)=>Za(Af(),Sf(e,t,n)),strike:(e,t,n)=>Za(Ef(),Sf(e,t,n)),strong:(e,t,n)=>Za(xf(),Sf(e,t,n))};function Rf(e,t,n=!0){let r;if(!/(^```\s*\n|^```\s*$)/.test(e.slice(t))||0!==t&&"\n"!==e[t-1]&&">"!==e[t-1]){if(!kf.includes(e.slice(t,t+1)))return null;if(r=e.slice(t,t+1),!function(e,t,n,r){if(r){const r=RegExp(If.includes(e)?"^(\\p{L}|\\p{N})".concat(e):"^(\\p{L}|\\p{N})\\".concat(e),"u");if(n>1&&r.test(t.slice(n-1)))return!1;const i=Lf(e);if(i&&n>0&&"\n"!==t[n-1])return!1;if(!i&&e===t[n+1])return!1}else{const r=RegExp(If.includes(e)?"^".concat(e,"(\\p{L}|\\p{N})"):"^\\".concat(e,"(\\p{L}|\\p{N})"),"u");if(n<t.length-1&&r.test(t.slice(n)))return!1}return!0}(r,e,t,n))return null}else r=e.slice(t,t+3);return r}function Df(e,t,n){const r=Nf[e].type;return t===n.length||Rf(n,t,!1)===e||"span"===r&&"\n"===n[t]}function Pf(e,t){const n=Rf(e,t),r=n?function(e,t,n){if(!e)return 0;const r=n;if(n+=e.length,Lf(e))return(n+=t.slice(n).split(/\n[^>]/).shift().length)-r;if("span"===Nf[e].type){const r=t.slice(n+1).split("\n").shift();let i=0,o=r.indexOf(e);for(;-1!==o;){if(Df(e,n+1+o,t))return o+1+2*e.length;o=r.indexOf(e,i++)}return 0}{const r=t.slice(n+1);let i,o=r.indexOf(e);for(;-1!==o;){if(Df(e,n+1+o,t))return o+1+2*e.length;o=r.indexOf(e,i++)}return 0}}(n,e,t):0;return r>0?{d:n,length:r}:{}}const Lf=e=>[">",">"].includes(e);function zf(e,t,n,r){const i=Mf[Nf[e].name];if(Lf(e)){return i(t.replace(/\n>/g,"\n").replace(/\n$/,""),n,r)}return i(t,n,r)}function Ff(){const e=qf(['<span class="mention">',"</span>"]);return Ff=function(){return e},e}function Bf(){const e=qf(['<span class="mention mention--self badge badge-info">',"</span>"]);return Bf=function(){return e},e}function qf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const Hf=rl.env.utils,Uf=e=>"string"==typeof e;class $f extends String{constructor(e,t,n=0,r,i,o){super(e),this.model=t,this.offset=n,this.onImgClick=o,this.onImgLoad=i,this.references=[],this.show_images=r,this.payload=[]}addHyperlinks(e,t){const n=[];try{const t={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|xmpp:|mailto:|www\.)/gi};ah.a.withinString(e,(e,t,r)=>(n.push({url:e,start:t,end:r}),e),t)}catch(e){return void zn.debug(e)}n.forEach(n=>{const r=e.slice(n.start,n.end),i=Hf.filterQueryParamsFromURL(r);this.addTemplateResult(n.start+t,n.end+t,this.show_images&&Hf.isImageURL(r)&&Hf.isImageDomainAllowed(r)?Hf.convertToImageTag(i,this.onImgLoad,this.onImgClick):Hf.convertUrlToHyperlink(i))})}addMapURLs(e,t){const n=/geo:([\-0-9.]+),([\-0-9.]+)(?:,([\-0-9.]+))?(?:\?(.*))?/g,r=e.matchAll(n);for(const e of r)this.addTemplateResult(e.index+t,e.index+e[0].length+t,Hf.convertUrlToHyperlink(e[0].replace(n,Uc.geouri_replacement)))}addEmojis(e,t){[...Hl(e.toString()),...Ul(e.toString())].forEach(e=>{this.addTemplateResult(e.begin+t,e.end+t,ql(e,{add_title_wrapper:!0}))})}addMentions(e,t){var n;const r=t+this.offset;if(!this.model.collection)return void zn.debug("addMentions: ignoring dangling model");const i=this.model.collection.chatbox.get("nick");null===(n=this.model.get("references"))||void 0===n||n.forEach(n=>{const o=Number(n.begin)-r;if(o<0||o>=r+e.length)return;const s=Number(n.end)-r,a=e.slice(o,s);var c;a===i?this.addTemplateResult(o+t,s+t,(c={mention:a},Za(Bf(),c.mention))):this.addTemplateResult(o+t,s+t,(e=>Za(Ff(),e.mention))({mention:a}))})}addStyling(){if(this.model.get("is_unstyled")||!Vc.settings.get("allow_message_styling"))return;let e=0;const t=[];if(function(e){for(let t=0;t<kf.length;t++)if(e.includes(kf[t]))return!0}(this))for(;e<this.length;){const{d:n,length:r}=Pf(this,e);if(n&&r){const i=Lf(n),o=e+r,s=i?o:o-n.length;let a="```"===n?e+n.length+1:e+n.length;i&&" "===this[a]&&(a+=1);const c=a,l=this.slice(a,s);t.push({begin:e,template:zf(n,l,this.model,c),end:o}),e=o}e++}t.forEach(e=>this.addTemplateResult(e.begin,e.end,e.template))}trimMeMessage(){0===this.offset&&this.isMeCommand()&&(this.payload[0]=this.payload[0].substring(4))}addAnnotations(e){const t=this.marshall();let n=0;for(const r of t)r&&(Uf(r)?(e.call(this,r,n),n+=r.length):n=r.end)}async addTemplates(){await Vc.trigger("beforeMessageBodyTransformed",this,{Synchronous:!0}),this.addStyling(),this.addAnnotations(this.addMentions),this.addAnnotations(this.addHyperlinks),this.addAnnotations(this.addMapURLs),await Vc.emojis.initialize(),this.addAnnotations(this.addEmojis),await Vc.trigger("afterMessageBodyTransformed",this,{Synchronous:!0}),this.payload=this.marshall(),this.trimMeMessage(),this.payload=this.payload.map(e=>Uf(e)?e:e.template)}addTemplateResult(e,t,n){this.references.push({begin:e,end:t,template:n})}isMeCommand(){const e=this.toString();return!!e&&e.startsWith("/me ")}static replaceText(e){return Bl(e.replace(/\n\n+/g,"\n\n"))}marshall(){let e=[this.toString()];return this.references.sort((e,t)=>t.begin-e.begin).forEach(t=>{const n=e.shift();e=[n.slice(0,t.begin),t,n.slice(t.end),...e]}),e.reduce((e,t)=>Uf(t)?[...e,$f.replaceText(t)]:[...e,t],[])}}function Wf(){const e=Vf(["",""]);return Wf=function(){return e},e}function Gf(){const e=Vf(["",""]);return Gf=function(){return e},e}function Vf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const Jf=rl.env.utils;class Xf{constructor(e){var t;this.model=e.model,this.component=e,this.chatview=null===(t=Jf.ancestor(this.component,"converse-chat-message"))||void 0===t?void 0:t.chatview,this.was_scrolled_up=this.chatview.model.get("scrolled"),this.text=this.component.model.getMessageText()}scrollDownOnImageLoad(){this.was_scrolled_up||this.chatview.scrollDown()}async transform(){const e=Vc.settings.get("show_images_inline"),t=new $f(this.text,this.model,0,e,()=>this.scrollDownOnImageLoad(),e=>this.component.showImageModal(e));return await t.addTemplates(),t.payload}render(){return Za(Gf(),Qh(this.transform(),Za(Wf(),this.text)))}}const Qf=ka(e=>t=>{var n;const r=new Xf(e);t.setValue(r.render());const i=e.model;null===(n=i.collection)||void 0===n||n.trigger("rendered",i)});function Yf(){const e=Zf(['<p class="older-msg"><time>',"</time>: ","</p>"]);return Yf=function(){return e},e}function Kf(){const e=Zf(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h4 class="modal-title" id="message-versions-modal-label">',"</h4>\n ",'\n </div>\n <div class="modal-body">\n <h4>Older versions</h4>\n ',"\n <hr/>\n <h4>Current version</h4>\n <p>",'</p>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n"]);return Kf=function(){return e},e}function Zf(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-chat-message-body",class extends mc{static get properties(){return{model:{type:Object},is_me_message:{type:Boolean},text:{type:String}}}showImageModal(e){e.preventDefault(),Vc.modal.create(_f,{src:e.target.src},e).show(e)}render(){return Qf(this)}});var ep=df.extend({id:"message-versions-modal",toHTML(){return e=this.model.toJSON(),Za(Kf(),zd("Message versions"),mf,Object.keys(e.older_versions).map(t=>Za(Yf(),En()(t).format("MMM D, YYYY, HH:mm:ss"),e.older_versions[t])),e.message,gf);var e}}),tp=n(176),np=n.n(tp);function rp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <svg xmlns="http://www.w3.org/2000/svg" class="avatar ','" width="','" height="','">\n <image width="','" height="','" preserveAspectRatio="xMidYMid meet" href="','"/>\n </svg>']);return rp=function(){return e},e}var ip=e=>{return Za(rp(),e.classes,e.width,e.height,e.width,e.height,(t=e.image,n=e.image_type,t.startsWith("data:")?t:"data:".concat(n,";base64,").concat(t)));var t,n};const op=ka(e=>t=>{const n={classes:e.classes?"".concat(e.classes," avatar"):"avatar",height:e.width||36,image:e.image,image_type:e.image_type,width:e.height||36};t.setValue(ip(n))});function sp(){const e=dp(['\n <time timestamp="','" class="chat-msg__time">','</time> \n <span class="chat-msg__author">',"","</span> "]);return sp=function(){return e},e}function ap(){const e=dp(['<span class="fa fa-lock"></span>']);return ap=function(){return e},e}function cp(){const e=dp(['\n <span class="chat-msg__heading">\n <span class="chat-msg__author"><a class="show-msg-author-modal" @click=',">","</a></span>\n ","\n ","\n </span>"]);return cp=function(){return e},e}function lp(){const e=dp(['<div class="message separator"><hr class="separator"><span class="separator-text">',"</span></div>"]);return lp=function(){return e},e}function up(){const e=dp(["\n ",'\n <div class="message chat-msg ','"\n data-isodate="','"\n data-msgid="','"\n data-from="','"\n data-encrypted="','">\n\n \x3c!-- Anchor to allow us to scroll the message into view --\x3e\n <a id="','"></a>\n\n <a class="show-msg-author-modal" @click=',">",'</a>\n <div class="chat-msg__content chat-msg__content--'," ",'">\n\n ','\n <div class="chat-msg__body chat-msg__body--'," "," ",'">\n <div class="chat-msg__message">\n ',"\n ","\n </div>\n <converse-message-actions\n .chatview=","\n .model=",'\n ?correcting="','"\n ?editable="','"\n ?is_retracted="','"\n message_type="','"></converse-message-actions>\n </div>\n </div>\n </div>']);return up=function(){return e},e}function dp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function hp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['<span class="spinner fa fa-spinner centered ','"/>']);return hp=function(){return e},e}var fp=(e={})=>Za(hp(),e.classes||"");function pp(){const e=Op(['<span class="badge badge-secondary">',"</span>"]);return pp=function(){return e},e}function gp(){const e=Op(["\n ",'\n <time timestamp="','" class="chat-msg__time">',"</time>\n "]);return gp=function(){return e},e}function mp(){const e=Op(['<div class="chat-msg__media">',"</div>"]);return mp=function(){return e},e}function vp(){const e=Op(['<i title="','" class="fa fa-edit chat-msg__edit-modal" @click=',"></i>"]);return vp=function(){return e},e}function _p(){const e=Op(['<span class="fa fa-check chat-msg__receipt"></span>']);return _p=function(){return e},e}function bp(){const e=Op(['<div class="chat-msg__subject">',"</div>"]);return bp=function(){return e},e}function yp(){const e=Op(["\n ","\n ",'\n <span>\n <converse-chat-message-body\n class="chat-msg__text '," ",'"\n .model="','"\n ?is_me_message="','"\n ?is_only_emojis="','"\n ?is_spoiler="','"\n ?is_spoiler_visible="','"\n text="','"></converse-chat-message-body>\n ',"\n ","\n </span>\n ",'\n <div class="chat-msg__error">',"</div>\n "]);return yp=function(){return e},e}function wp(){const e=Op(['\n <div class="chat-msg__spoiler-hint">\n <span class="spoiler-hint">','</span>\n <a class="badge badge-info spoiler-toggle" href="#" @click=','>\n <i class="fa ','"></i>\n ',"\n </a>\n </div>\n "]);return wp=function(){return e},e}function Sp(){const e=Op(['<q class="chat-msg--retracted__reason">',"</q>"]);return Sp=function(){return e},e}function xp(){const e=Op(["\n <div>","</div>\n ","\n "]);return xp=function(){return e},e}function Ep(){const e=Op(['\n <div class="message chat-msg">\n ','\n <div class="chat-msg__content">\n <span class="chat-msg__text">'," <strong>","</strong>, ",'</span>\n <progress value="','"/>\n </div>\n </div>']);return Ep=function(){return e},e}function Ap(){const e=Op(['<a class="retry" @click=',">","</a>"]);return Ap=function(){return e},e}function Cp(){const e=Op(['<q class="reason">',"</q>"]);return Cp=function(){return e},e}function jp(){const e=Op(['<q class="reason">',"</q>"]);return jp=function(){return e},e}function Tp(){const e=Op(['\n <div class="message chat-info chat-','"\n data-isodate="','"\n data-type="','"\n data-value="','">\n\n <div class="chat-info__message">\n ',"\n </div>\n ","\n ","\n ","\n </div>\n "]);return Tp=function(){return e},e}function Op(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const{Strophe:kp}=rl.env,Np=rl.env.utils;class Ip extends mc{static get properties(){return{chatview:{type:Object},correcting:{type:Boolean},editable:{type:Boolean},edited:{type:String},error:{type:String},error_text:{type:String},from:{type:String},has_mentions:{type:Boolean},hats:{type:Array},is_delayed:{type:Boolean},is_encrypted:{type:Boolean},is_first_unread:{type:Boolean},is_me_message:{type:Boolean},is_only_emojis:{type:Boolean},is_retracted:{type:Boolean},is_spoiler:{type:Boolean},is_spoiler_visible:{type:Boolean},message_type:{type:String},model:{type:Object},moderated_by:{type:String},moderation_reason:{type:String},msgid:{type:String},occupant_affiliation:{type:String},occupant_role:{type:String},oob_url:{type:String},progress:{type:Number},reason:{type:String},received:{type:String},retractable:{type:Boolean},retry_event_id:{type:String},sender:{type:String},show_spinner:{type:Boolean},spoiler_hint:{type:String},subject:{type:String},time:{type:String},username:{type:String}}}render(){const e=Vc.settings.get("time_format");return this.pretty_time=En()(this.edited||this.time).format(e),this.show_spinner?fp():this.model.get("file")&&!this.model.get("oob_url")?this.renderFileProgress():["error","info"].includes(this.message_type)?this.renderInfoMessage():this.renderChatMessage()}connectedCallback(){super.connectedCallback(),this.listenTo(this.model,"change",e=>{const t=this.model.collection.chatbox;Object.assign(this,Jp(t,this.model)),Object.keys(e.changed).filter(e=>Object.keys(Ip.properties).includes(e)).forEach(t=>this[t]=e.changed[t])});const e=this.model.vcard;e&&this.listenTo(e,"change",()=>this.requestUpdate())}updated(){var e;(this.show_spinner||this.model.get("file")&&!this.model.get("oob_url")||["error","info"].includes(this.message_type))&&(null===(e=this.model.collection)||void 0===e||e.trigger("rendered",this.model))}renderInfoMessage(){const e=En()(this.model.get("time")).toISOString(),t=zd("Retry");return Za(Tp(),this.message_type,e,this.data_name,this.data_value,this.model.getMessageText(),this.reason?Za(jp(),this.reason):"",this.error_text?Za(Cp(),this.error_text):"",this.retry_event_id?Za(Ap(),this.onRetryClicked,t):"")}renderFileProgress(){const e=zd("Uploading file:"),t=this.model.file.name,n=np()(this.model.file.size);return Za(Ep(),op(this.getAvatarData()),e,t,n,this.progress)}renderChatMessage(){return(e=>{const t=zd("New messages");return Za(up(),e.is_first_unread?Za(lp(),t):"",e.getExtraMessageClasses(),e.time,e.msgid,e.from,e.is_encrypted,e.msgid,e.showUserModal,e.shouldShowAvatar()?op(e.getAvatarData()):"",e.sender,e.is_me_message?"chat-msg__content--action":"",e.is_me_message?"":Za(cp(),e.showUserModal,e.username,e.renderAvatarByline(),e.is_encrypted?Za(ap()):""),e.message_type,e.received?"chat-msg__body--received":"",e.is_delayed?"chat-msg__body--delayed":"",e.is_me_message?Za(sp(),e.edited||e.time,e.pretty_time,e.is_me_message?"**":"",e.username):"",e.is_retracted?e.renderRetraction():e.renderMessageText(),e.chatview,e.model,e.correcting,e.editable,e.is_retracted,e.message_type)})(this)}shouldShowAvatar(){return Vc.settings.get("show_message_avatar")&&!this.is_me_message&&"headline"!==this.type}getAvatarData(){var e,t;return{classes:"chat-msg__avatar",height:36,width:36,image:"data:"+((null===(e=this.model.vcard)||void 0===e?void 0:e.get("image_type"))||Uc.DEFAULT_IMAGE_TYPE)+";base64,"+((null===(t=this.model.vcard)||void 0===t?void 0:t.get("image"))||Uc.DEFAULT_IMAGE)}}async onRetryClicked(){this.show_spinner=!0,await Vc.trigger(this.retry_event_id,{synchronous:!0}),this.model.destroy(),this.parentElement.removeChild(this)}isFollowup(){const e=this.model.collection.models,t=e.indexOf(this.model),n=t?e[t-1]:null;if(null===n)return!1;const r=En()(this.time);return this.from===n.get("from")&&!this.is_me_message&&!n.isMeCommand()&&"info"!==this.message_type&&"info"!==n.get("type")&&r.isBefore(En()(n.get("time")).add(10,"minutes"))&&!!this.is_encrypted==!!n.get("is_encrypted")}getExtraMessageClasses(){const e=[this.isFollowup()?"chat-msg--followup":null,this.is_delayed?"delayed":null,this.is_me_message?"chat-msg--action":null,this.is_retracted?"chat-msg--retracted":null,this.message_type,this.shouldShowAvatar()?"chat-msg--with-avatar":null].map(e=>e);return"groupchat"===this.message_type&&(this.occupant_role&&e.push(this.occupant_role),this.occupant_affiliation&&e.push(this.occupant_affiliation),"them"===this.sender&&this.has_mentions&&e.push("mentioned")),this.correcting&&e.push("correcting"),e.filter(e=>e).join(" ")}getRetractionText(){if("groupchat"===this.message_type&&this.moderated_by){const e=this.moderated_by,t=this.model.collection.chatbox;this.model.mod||(this.model.mod=t.occupants.findOccupant({jid:e})||t.occupants.findOccupant({nick:kp.getResourceFromJid(e)}));const n=this.model.mod?this.model.mod.getDisplayName():"A moderator";return zd("%1$s has removed this message",n)}return zd("%1$s has removed this message",this.model.getDisplayName())}renderRetraction(){const e=this.is_retracted?this.getRetractionText():null;return Za(xp(),e,this.moderation_reason?Za(Sp(),this.moderation_reason):"")}renderMessageText(){const e=zd("This message has been edited"),t=zd("Show more"),n="groupchat"===this.message_type,r=zd("Show less"),i=Za(wp(),this.spoiler_hint,this.toggleSpoilerMessage,this.is_spoiler_visible?"fa-eye-slash":"fa-eye",this.is_spoiler_visible?r:t),o=this.is_spoiler?"spoiler ".concat(this.is_spoiler_visible?"":"hidden"):"";return Za(yp(),this.is_spoiler?i:"",this.subject?Za(bp(),this.subject):"",this.is_only_emojis?"chat-msg__text--larger":"",o,this.model,this.is_me_message,this.is_only_emojis,this.is_spoiler,this.is_spoiler_visible,this.model.getMessageText(),!this.received||this.is_me_message||n?"":Za(_p()),this.edited?Za(vp(),e,this.showMessageVersionsModal):"",this.oob_url?Za(mp(),Np.getOOBURLMarkup(Uc,this.oob_url)):"",this.error_text||this.error)}renderAvatarByline(){return Za(gp(),this.hats.map(e=>Za(pp(),e.title)),this.edited||this.time,this.pretty_time)}showUserModal(e){"me"===this.model.get("sender")?Uc.xmppstatusview.showProfileModal(e):"groupchat"===this.message_type?this.chatview.showOccupantDetailsModal(e,this.model):this.chatview.showUserDetailsModal(e,this.model)}showMessageVersionsModal(e){e.preventDefault(),void 0===this.message_versions_modal&&(this.message_versions_modal=new ep({model:this.model})),this.message_versions_modal.show(e)}toggleSpoilerMessage(e){null==e||e.preventDefault(),this.model.save({is_spoiler_visible:!this.model.get("is_spoiler_visible")})}}function Mp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="message date-separator" data-isodate="','">\n <hr class="separator"/>\n <time class="separator-text" datetime="','"><span>',"</span></time>\n </div>\n"]);return Mp=function(){return e},e}Vc.elements.define("converse-chat-message",Ip); /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -424,7 +433,7 @@ const sh=new WeakMap,oh=Ea((...e)=>t=>{let n=sh.get(t);void 0===n&&(n={lastRende * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -const Xf=(e,t)=>{const n=e.startNode.parentNode,r=void 0===t?e.endNode:t.startNode,i=n.insertBefore(_a(),r);n.insertBefore(_a(),r);const s=new Da(e.options);return s.insertAfterNode(i),s},Qf=(e,t)=>(e.setValue(t),e.commit(),e),Yf=(e,t,n)=>{const r=e.startNode.parentNode,i=n?n.startNode:e.endNode,s=t.endNode.nextSibling;s!==i&&ua(r,t.startNode,s,i)},Kf=e=>{da(e.startNode.parentNode,e.startNode,e.endNode.nextSibling)},Zf=(e,t,n)=>{const r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},ep=new WeakMap,tp=new WeakMap,np=Ea((e,t,n)=>{let r;return void 0===n?n=t:void 0!==t&&(r=t),t=>{if(!(t instanceof Da))throw new Error("repeat can only be used in text bindings");const i=ep.get(t)||[],s=tp.get(t)||[],o=[],a=[],c=[];let l,u,d=0;for(const t of e)c[d]=r?r(t,d):d,a[d]=n(t,d),d++;let h=0,f=i.length-1,p=0,g=a.length-1;for(;h<=f&&p<=g;)if(null===i[h])h++;else if(null===i[f])f--;else if(s[h]===c[p])o[p]=Qf(i[h],a[p]),h++,p++;else if(s[f]===c[g])o[g]=Qf(i[f],a[g]),f--,g--;else if(s[h]===c[g])o[g]=Qf(i[h],a[g]),Yf(t,i[h],o[g+1]),h++,g--;else if(s[f]===c[p])o[p]=Qf(i[f],a[p]),Yf(t,i[f],i[h]),f--,p++;else if(void 0===l&&(l=Zf(c,p,g),u=Zf(s,h,f)),l.has(s[h]))if(l.has(s[f])){const e=u.get(c[p]),n=void 0!==e?i[e]:null;if(null===n){const e=Xf(t,i[h]);Qf(e,a[p]),o[p]=e}else o[p]=Qf(n,a[p]),Yf(t,n,i[h]),i[e]=null;p++}else Kf(i[f]),f--;else Kf(i[h]),h++;for(;p<=g;){const e=Xf(t,o[g+1]);Qf(e,a[p]),o[p++]=e}for(;h<=f;){const e=i[h++];null!==e&&Kf(e)}ep.set(t,o),tp.set(t,c)}});function rp(){const e=op(['<div class="empty-history-feedback form-help"><span>',"</span></div>"]);return rp=function(){return e},e}function ip(){const e=op(["",""]);return ip=function(){return e},e}function sp(){const e=op(["\n <converse-chat-message\n .chatview=","\n .hats=","\n .model=","\n ?correcting=","\n ?editable=","\n ?has_mentions=","\n ?is_delayed=","\n ?is_encrypted=","\n ?is_first_unread=","\n ?is_me_message=","\n ?is_only_emojis=","\n ?is_retracted=","\n ?is_spoiler=","\n ?is_spoiler_visible=","\n ?retractable=","\n edited=","\n error=","\n error_text=","\n filename=","\n filesize=","\n from=","\n message_type=","\n moderated_by=","\n moderation_reason=","\n msgid=","\n occupant_affiliation=","\n occupant_role=","\n oob_url=","\n pretty_type=","\n progress=","\n reason=","\n received=","\n retry_event_id=","\n sender=","\n spoiler_hint=","\n subject=","\n time=","\n username=","></converse-chat-message>\n"]);return sp=function(){return e},e}function op(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const ap=dd("No message history available.");function cp(e){const t=e.collection.models,n=t.indexOf(e),r=t[n-1];if(!r||Sn()(e.get("time")).isAfter(Sn()(r.get("time")),"day")){const t=Sn()(e.get("time")).startOf("day");return i={type:"date",time:t.toISOString(),datestring:t.format("dddd MMM Do YYYY")},Ga(Jf(),i.time,i.time,i.datestring)}var i}function lp(e){if("groupchat"===e.get("type")){var t;const n=qc.settings.get("muc_hats").filter(e=>e).map(e=>e.toLowerCase());let r=[];n.includes("vcard_roles")&&(r=e.vcard?e.vcard.get("role"):null,r=r?r.split(",").filter(e=>e).map(e=>({title:e})):[]);let i=[...e.occupant?[e.occupant.get("role")]:[],...e.occupant?[e.occupant.get("affiliation")]:[]].filter(e=>e).filter(e=>n.includes(e.toLowerCase())).map(e=>({title:e}));const s=qc.settings.get("role_affiliation_hat_conversions")||"";if(s){Object.keys(s);i=i.map(e=>Object.keys(s).includes(e.title)?{title:s[e.title]}:e)}return[...n.includes("xep317")&&(null===(t=e.occupant)||void 0===t?void 0:t.get("hats"))||[],...r,...i]}return[]}function up(e,t){return{has_mentions:"groupchat"===t.get("type")&&"them"===t.get("sender")&&e.isUserMentioned(t),hats:lp(t),is_first_unread:e.get("first_unread_id")===t.get("id"),is_me_message:t.isMeCommand(),is_retracted:t.get("retracted")||"retracted"===t.get("moderated"),username:t.getDisplayName()}}qc.elements.define("converse-message-history",class extends uc{static get properties(){return{chatview:{type:Object},messages:{type:Array}}}render(){const e=this.messages;return e.length?Ga(ip(),np(e,e=>e.get("id"),e=>this.renderMessage(e))):Ga(rp(),ap)}renderMessage(e){if(e.get("dangling_retraction")||e.get("is_only_key"))return"";const t=cp(e);var n;return[...t?[t]:[],(n=Object.assign(e.toJSON(),up(this.chatview.model,e),{chatview:this.chatview,model:e}),Ga(sp(),n.chatview,n.hats,n.model,n.correcting,n.editable,n.has_mentions,n.is_delayed,!!n.is_encrypted,n.is_first_unread,n.is_me_message,n.is_only_emojis,n.is_retracted,n.is_spoiler,n.is_spoiler_visible,n.retractable,n.edited||"",n.error||"",n.error_text||"",n.filename||"",n.filesize||"",n.from,n.type||"",n.moderated_by||"",n.moderation_reason||"",n.msgid,n.model.occupant?n.model.occupant.get("affiliation"):"",n.model.occupant?n.model.occupant.get("role"):"",n.oob_url||"",n.pretty_type,n.progress||0,n.reason||"",n.received||"",n.retry_event_id||"",n.sender,n.spoiler_hint||"",n.subject||"",n.time,n.username))]}});var dp=n(16),hp=n.n(dp); +const Rp=(e,t)=>{const n=e.startNode.parentNode,r=void 0===t?e.endNode:t.startNode,i=n.insertBefore(Ea(),r);n.insertBefore(Ea(),r);const o=new qa(e.options);return o.insertAfterNode(i),o},Dp=(e,t)=>(e.setValue(t),e.commit(),e),Pp=(e,t,n)=>{const r=e.startNode.parentNode,i=n?n.startNode:e.endNode,o=t.endNode.nextSibling;o!==i&&ma(r,t.startNode,o,i)},Lp=e=>{va(e.startNode.parentNode,e.startNode,e.endNode.nextSibling)},zp=(e,t,n)=>{const r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},Fp=new WeakMap,Bp=new WeakMap,qp=ka((e,t,n)=>{let r;return void 0===n?n=t:void 0!==t&&(r=t),t=>{if(!(t instanceof qa))throw new Error("repeat can only be used in text bindings");const i=Fp.get(t)||[],o=Bp.get(t)||[],s=[],a=[],c=[];let l,u,d=0;for(const t of e)c[d]=r?r(t,d):d,a[d]=n(t,d),d++;let h=0,f=i.length-1,p=0,g=a.length-1;for(;h<=f&&p<=g;)if(null===i[h])h++;else if(null===i[f])f--;else if(o[h]===c[p])s[p]=Dp(i[h],a[p]),h++,p++;else if(o[f]===c[g])s[g]=Dp(i[f],a[g]),f--,g--;else if(o[h]===c[g])s[g]=Dp(i[h],a[g]),Pp(t,i[h],s[g+1]),h++,g--;else if(o[f]===c[p])s[p]=Dp(i[f],a[p]),Pp(t,i[f],i[h]),f--,p++;else if(void 0===l&&(l=zp(c,p,g),u=zp(o,h,f)),l.has(o[h]))if(l.has(o[f])){const e=u.get(c[p]),n=void 0!==e?i[e]:null;if(null===n){const e=Rp(t,i[h]);Dp(e,a[p]),s[p]=e}else s[p]=Dp(n,a[p]),Pp(t,n,i[h]),i[e]=null;p++}else Lp(i[f]),f--;else Lp(i[h]),h++;for(;p<=g;){const e=Rp(t,s[g+1]);Dp(e,a[p]),s[p++]=e}for(;h<=f;){const e=i[h++];null!==e&&Lp(e)}Fp.set(t,s),Bp.set(t,c)}});function Hp(){const e=Wp(['<div class="empty-history-feedback form-help"><span>',"</span></div>"]);return Hp=function(){return e},e}function Up(){const e=Wp(["",""]);return Up=function(){return e},e}function $p(){const e=Wp(["\n <converse-chat-message\n .chatview=","\n .hats=","\n .model=","\n ?correcting=","\n ?editable=","\n ?has_mentions=","\n ?is_delayed=","\n ?is_encrypted=","\n ?is_first_unread=","\n ?is_me_message=","\n ?is_only_emojis=","\n ?is_retracted=","\n ?is_spoiler=","\n ?is_spoiler_visible=","\n ?retractable=","\n edited=","\n error=","\n error_text=","\n filename=","\n filesize=","\n from=","\n message_type=","\n moderated_by=","\n moderation_reason=","\n msgid=","\n occupant_affiliation=","\n occupant_role=","\n oob_url=","\n pretty_type=","\n progress=","\n reason=","\n received=","\n retry_event_id=","\n sender=","\n spoiler_hint=","\n subject=","\n time=","\n username=","></converse-chat-message>\n"]);return $p=function(){return e},e}function Wp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const Gp=zd("No message history available.");function Vp(e){const t=e.collection.models,n=t.indexOf(e),r=t[n-1];if(!r||En()(e.get("time")).isAfter(En()(r.get("time")),"day")){const t=En()(e.get("time")).startOf("day");return i={type:"date",time:t.toISOString(),datestring:t.format("dddd MMM Do YYYY")},Za(Mp(),i.time,i.time,i.datestring)}var i}function Jp(e,t){return{has_mentions:"groupchat"===t.get("type")&&"them"===t.get("sender")&&e.isUserMentioned(t),hats:Uc.getHats(t),is_first_unread:e.get("first_unread_id")===t.get("id"),is_me_message:t.isMeCommand(),is_retracted:t.get("retracted")||"retracted"===t.get("moderated"),username:t.getDisplayName()}}Uc.getHats=function(e){if("groupchat"===e.get("type")){var t;const n=Vc.settings.get("muc_hats").filter(e=>e).map(e=>e.toLowerCase());let r=[];n.includes("vcard_roles")&&(r=e.vcard?e.vcard.get("role"):null,r=r?r.split(",").filter(e=>e).map(e=>({title:e})):[]);const i=[...e.occupant?[e.occupant.get("role")]:[],...e.occupant?[e.occupant.get("affiliation")]:[]].filter(e=>e).filter(e=>n.includes(e.toLowerCase())).map(e=>({title:e}));return[...n.includes("xep317")&&(null===(t=e.occupant)||void 0===t?void 0:t.get("hats"))||[],...r,...i]}return[]};Vc.elements.define("converse-message-history",class extends mc{static get properties(){return{chatview:{type:Object},messages:{type:Array}}}render(){const e=this.messages;return e.length?Za(Up(),qp(e,e=>e.get("id"),e=>this.renderMessage(e))):Za(Hp(),Gp)}renderMessage(e){if(e.get("dangling_retraction")||e.get("is_only_key"))return"";const t=Vp(e);var n;return[...t?[t]:[],(n=Object.assign(e.toJSON(),Jp(this.chatview.model,e),{chatview:this.chatview,model:e}),Za($p(),n.chatview,n.hats,n.model,n.correcting,n.editable,n.has_mentions,n.is_delayed,!!n.is_encrypted,n.is_first_unread,n.is_me_message,n.is_only_emojis,n.is_retracted,n.is_spoiler,n.is_spoiler_visible,n.retractable,n.edited||"",n.error||"",n.error_text||"",n.filename||"",n.filesize||"",n.from,n.type||"",n.moderated_by||"",n.moderation_reason||"",n.msgid,n.model.occupant?n.model.occupant.get("affiliation"):"",n.model.occupant?n.model.occupant.get("role"):"",n.oob_url||"",n.pretty_type,n.progress||0,n.reason||"",n.received||"",n.retry_event_id||"",n.sender,n.spoiler_hint||"",n.subject||"",n.time,n.username))]}});var Xp=n(18),Qp=n.n(Xp); /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -438,7 +447,7 @@ const Xf=(e,t)=>{const n=e.startNode.parentNode,r=void 0===t?e.endNode:t.startNo * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -const fp=new WeakMap,pp=Ea(e=>t=>{if(!(t instanceof Da))throw new Error("unsafeHTML can only be used in text bindings");const n=fp.get(t);if(void 0!==n&&Na(e)&&e===n.value&&t.value===n.fragment)return;const r=document.createElement("template");r.innerHTML=e;const i=document.importNode(r.content,!0);t.setValue(i),fp.set(t,{value:e,fragment:i})});function gp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n <converse-message-history\n .chatview=","\n .messages=",'>\n </converse-message-history>\n <div class="chat-content__notifications">',"</div>\n "]);return gp=function(){return e},e}function mp(){const e=_p(['<svg .style="','"> <use href="','"> </use> </svg>']);return mp=function(){return e},e}function vp(){const e=_p(["\n :host {\n display: inline-block;\n padding: 0;\n margin: 0;\n }\n "]);return vp=function(){return e},e}function _p(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} +const Yp=new WeakMap,Kp=ka(e=>t=>{if(!(t instanceof qa))throw new Error("unsafeHTML can only be used in text bindings");const n=Yp.get(t);if(void 0!==n&&La(e)&&e===n.value&&t.value===n.fragment)return;const r=document.createElement("template");r.innerHTML=e;const i=document.importNode(r.content,!0);t.setValue(i),Yp.set(t,{value:e,fragment:i})});function Zp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n <converse-message-history\n .chatview=","\n .messages=",'>\n </converse-message-history>\n <div class="chat-content__notifications">',"</div>\n "]);return Zp=function(){return e},e}function eg(){const e=ng(['<svg .style="','"> <use href="','"> </use> </svg>']);return eg=function(){return e},e}function tg(){const e=ng(["\n :host {\n display: inline-block;\n padding: 0;\n margin: 0;\n }\n "]);return tg=function(){return e},e}function ng(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** * @module icons.js * @copyright Alfredo Medrano Sánchez and the Converse.js contributors @@ -446,7 +455,7 @@ const fp=new WeakMap,pp=Ea(e=>t=>{if(!(t instanceof Da))throw new Error("unsafeH * Component inspired by the one from fa-icons * https://github.com/obsidiansoft-io/fa-icons/blob/master/LICENSE * @license Mozilla Public License (MPLv2) - */qc.elements.define("converse-chat-content",class extends uc{static get properties(){return{chatview:{type:Object},messages:{type:Array},notifications:{type:String}}}render(){const e=hp.a.filterXSS(this.notifications,{whiteList:{}});return Ga(gp(),this.chatview,this.messages,pp(e))}});function bp(){const e=wp(['<div class="message chat-','" data-isodate="','">',"</div>"]);return bp=function(){return e},e}function yp(){const e=wp(['<converse-icon class="fas fa-times close-chat-help"\n @click=','\n path-prefix="','"\n size="1em"></converse-icon>']);return yp=function(){return e},e}function wp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}customElements.define("converse-icon",class extends uc{static get properties(){return{color:String,class_name:{attribute:"class"},style:String,size:String}}static get styles(){return ac(vp())}constructor(){super(),this.class_name="",this.style="",this.size="",this.color=""}getSource(){return"#icon-".concat(this.class_name.split(" ")[1].replace("fa-",""))}getStyles(){return"\n ".concat(this.size?"width: ".concat(this.size,";"):"","\n ").concat(this.size?"height: ".concat(this.size,";"):"","\n ").concat(this.color?"fill: ".concat(this.color,";"):"","\n ").concat(this.style,"\n ")}render(){return Ga(mp(),this.getStyles(),this.getSource())}});function Sp(){const e=Np(["<converse-emoji-picker-content\n .chatview=","\n .model=",'\n .search_results="','"\n current_skintone="','"\n query="','"></converse-emoji-picker-content>']);return Sp=function(){return e},e}function xp(){const e=Np(['\n <div class="emoji-picker__header">\n <input class="form-control emoji-search" name="emoji-search" placeholder="','"\n .value=',"\n @keydown=","\n @blur=","\n @focus=",">\n ","\n </div>\n ",'\n\n <div class="emoji-skintone-picker">\n <label>Skin tone</label>\n <ul>',"</ul>\n </div>"]);return xp=function(){return e},e}function Ep(){const e=Np(['\n <li data-skintone="','" class="emoji-skintone ','">\n <a class="pick-skintone" href="#" data-skintone="','" @click=',">","</a>\n </li>"]);return Ep=function(){return e},e}function Ap(){const e=Np(["\n <span ?hidden=",' class="emoji-lists__container emoji-lists__container--browse">\n ',"\n </span>"]);return Ap=function(){return e},e}function Cp(){const e=Np(['\n <a id="emoji-picker-','" class="emoji-category__heading" data-category="','">','</a>\n <ul class="emoji-picker" data-category="','">\n ',"\n </ul>"]);return Cp=function(){return e},e}function jp(){const e=Np(["\n <span ?hidden=",' class="emoji-lists__container emojis-lists__container--search">\n <a id="emoji-picker-search-results" class="emoji-category__heading">','</a>\n <ul class="emoji-picker">\n ',"\n </ul>\n </span>\n "]);return jp=function(){return e},e}function Tp(){const e=Np(['\n <li class="emoji insert-emoji ','" data-emoji="','" title="','">\n <a href="#" @click=',' data-emoji="','">',"</a>\n </li>\n "]);return Tp=function(){return e},e}function Op(){const e=Np(["<ul>","</ul>"]);return Op=function(){return e},e}function kp(){const e=Np(['\n <li data-category="','"\n class="emoji-category '," ",'"\n title="','">\n\n <a class="pick-category"\n @click=','\n href="#emoji-picker-','"\n data-category="','">'," </a>\n </li>\n "]);return kp=function(){return e},e}function Np(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-chat-help",class extends uc{static get properties(){return{chat_type:{type:String},messages:{type:Array},model:{type:Object},type:{type:String}}}render(){const e=(new Date).toISOString();return[Ga(yp(),this.close,qc.settings.get("assets_path")),...this.messages.map(t=>this.renderHelpMessage({isodate:e,markup:hp.a.filterXSS(t,{whiteList:{strong:[]}})}))]}close(){this.model.set({show_help_messages:!1})}renderHelpMessage(e){return Ga(bp(),this.type,e.isodate,pp(e.markup))}});const Ip=Yc.env.utils,Mp=e=>{const t=qc.settings.get("emoji_categories");return Ga(Op(),Object.keys(t).map(n=>t[n]?(e=>Ga(kp(),e.category,e.category,e.current_category===e.category?"picked":"",dd(Lc.emoji_category_labels[e.category]),e.onCategoryPicked,e.category,e.category,e.emoji))(Object.assign({category:n,emoji:e.sn2Emoji(t[n])},e)):""))},Rp=e=>Ga(Tp(),e.shouldBeHidden(e.emoji.sn)?"hidden":"",e.emoji.sn,e.emoji.sn,e.insertEmoji,e.emoji.sn,Ip.shortnamesToEmojis(e.emoji.sn)),Dp=e=>{const t=qc.settings.get("emoji_categories");return Ga(Ap(),e.query,Object.keys(t).map(n=>t[n]?(e=>Ga(Cp(),e.category,e.category,dd(qc.settings.get("emoji_category_labels")[e.category]),e.category,Object.values(Yc.emojis.json[e.category]).map(t=>Rp(Object.assign({emoji:t},e)))))(Object.assign({category:n},e)):""))},Pp=e=>{const t=dd("Search");return Ga(xp(),t,e.query||"",e.onSearchInputKeyDown,e.onSearchInputBlurred,e.onSearchInputFocus,e.query?"":Mp(e),e.render_emojis?Ga(Sp(),e.chatview,e.model,e.search_results,e.current_skintone,e.query):"",["tone1","tone2","tone3","tone4","tone5"].map(t=>(e=>Ga(Ep(),e.skintone,e.current_skintone===e.skintone?"picked":"",e.skintone,e.onSkintonePicked,Ip.shortnamesToEmojis(":"+e.skintone+":")))(Object.assign({skintone:t},e))))};function Lp(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="emoji-picker__lists">\n ',"\n ","\n </div>\n "]);return Lp=function(){return e},e}function zp(){const e=Bp(["\n <converse-emoji-picker\n .chatview=","\n .model=","\n ?render_emojis=",'\n current_category="','"\n current_skintone="','"\n query="','"\n ></converse-emoji-picker>']);return zp=function(){return e},e}function Fp(){const e=Bp(['\n <div class="dropup">\n <button class="toggle-emojis"\n title="','"\n data-toggle="dropdown"\n aria-haspopup="true"\n aria-expanded="false">\n <converse-icon\n class="fa fa-smile "\n path-prefix="','"\n size="1em"></converse-icon>\n </button>\n <div class="dropdown-menu">\n ',"\n </div>\n </div>"]);return Fp=function(){return e},e}function Bp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-emoji-picker-content",class extends uc{static get properties(){return{chatview:{type:Object},search_results:{type:Array},current_skintone:{type:String},model:{type:Object},query:{type:String}}}render(){const e={current_skintone:this.current_skintone,insertEmoji:e=>this.insertEmoji(e),query:this.query,search_results:this.search_results,shouldBeHidden:e=>this.shouldBeHidden(e)};return Ga(Lp(),(e=>{const t=dd("Search results");return Ga(jp(),!e.query,t,e.search_results.map(t=>Rp(Object.assign({emoji:t},e))))})(e),Dp(e))}firstUpdated(){this.initIntersectionObserver()}initIntersectionObserver(){if(window.IntersectionObserver){if(this.observer)this.observer.disconnect();else{const e={root:this.querySelector(".emoji-picker__lists"),threshold:[.1]},t=e=>this.setCategoryOnVisibilityChange(e);this.observer=new IntersectionObserver(t,e)}ur()(".emoji-picker",this).forEach(e=>this.observer.observe(e))}}setCategoryOnVisibilityChange(e){const t=this.parentElement.navigator.selected,n=e.filter(e=>e.target.contains(t)).pop();let r;if(r=n||e.reduce((e,t)=>t.intersectionRatio>=((null==e?void 0:e.intersectionRatio)||0)?t:e,null),r&&r.isIntersecting){const e=r.target.getAttribute("data-category");e!==this.model.get("current_category")&&(this.parentElement.preserve_scroll=!0,this.model.save({current_category:e}))}}insertEmoji(e){e.preventDefault(),e.stopPropagation();const t="IMG"===e.target.nodeName?e.target.parentElement:e.target;this.parentElement.insertIntoTextArea(t.getAttribute("data-emoji"))}shouldBeHidden(e){if(e.includes("_tone")){if(!this.current_skintone||!e.includes(this.current_skintone))return!0}else if(this.current_skintone&&Yc.emojis.toned.includes(e))return!0;return!(!this.query||Lc.FILTER_CONTAINS(e,this.query))}});const qp=Yc.env.utils;function Hp(){const e=Zp(["",""]);return Hp=function(){return e},e}function Up(){const e=Zp(['\n <button class="toggle-compose-spoiler"\n title="','"\n @click=','>\n <converse-icon class="fa ','"\n path-prefix="','"\n size="1em"></converse-icon>\n </button>']);return Up=function(){return e},e}function $p(){const e=Zp(['\n <button title="','" @click=','>\n <converse-icon class="fa fa-paperclip"\n path-prefix="','"\n size="1em"></converse-icon>\n </button>\n <input type="file" @change=',' class="fileupload" multiple="" style="display:none"/>']);return $p=function(){return e},e}function Wp(){const e=Zp(['\n <button class="toggle_occupants right"\n title="','"\n @click=','>\n <converse-icon class="fa ','"\n path-prefix="','" size="1em"></converse-icon>\n </button>']);return Wp=function(){return e},e}function Vp(){const e=Zp(["",""]);return Vp=function(){return e},e}function Gp(){const e=Zp(['<span class="right message-limit" title="','">',"</span>"]);return Gp=function(){return e},e}function Jp(){const e=Zp(['\n <button class="toggle-call" @click=',' title="','">\n <converse-icon class="fa fa-phone" path-prefix="/dist" size="1em"></converse-icon>\n </button>']);return Jp=function(){return e},e}function Xp(){const e=Zp(["<converse-emoji-dropdown .chatview=","></converse-dropdown>"]);return Xp=function(){return e},e}function Qp(){const e=Zp(['<button type="submit" class="btn send-button fa fa-paper-plane" title="','"></button>']);return Qp=function(){return e},e}function Yp(){const e=Zp(['<span class="toolbar-buttons">',"</span>"]);return Yp=function(){return e},e}function Kp(){const e=Zp(["\n ","\n ","\n "]);return Kp=function(){return e},e}function Zp(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-emoji-dropdown",class extends of{static get properties(){return{chatview:{type:Object}}}constructor(){super(),this.render_emojis=!1}initModel(){return this.init_promise||(this.init_promise=(async()=>{await qc.emojis.initialize();const e="converse.emoji-".concat(Lc.bare_jid,"-").concat(this.chatview.model.get("jid"));this.model=new Lc.EmojiPicker({id:e}),this.model.browserStorage=Lc.createStore(e),await new Promise(e=>this.model.fetch({success:e,error:e})),this.model.set({autocompleting:null,ac_position:null})})()),this.init_promise}render(){return Ga(Fp(),dd("Insert emojis"),qc.settings.get("assets_path"),oh(this.initModel().then(()=>Ga(zp(),this.chatview,this.model,this.render_emojis,this.model.get("current_category")||"",this.model.get("current_skintone")||"",this.model.get("query")||"")),""))}connectedCallback(){super.connectedCallback(),this.render_emojis=!1}toggleMenu(e){e.stopPropagation(),e.preventDefault(),qp.hasClass("show",this.menu)?qp.ancestor(e.target,".toggle-emojis")&&this.hideMenu():this.showMenu()}async showMenu(){await this.initModel(),this.render_emojis||(this.render_emojis=!0,await this.requestUpdate()),super.showMenu(),setTimeout(()=>{var e;return null===(e=this.querySelector(".emoji-search"))||void 0===e?void 0:e.focus()})}}),qc.elements.define("converse-emoji-picker",class extends uc{static get properties(){return{chatview:{type:Object},current_category:{type:String,reflect:!0},current_skintone:{type:String,reflect:!0},model:{type:Object},query:{type:String,reflet:!0},render_emojis:{type:Boolean}}}firstUpdated(){this.listenTo(this.model,"change",e=>this.onModelChanged(e.changed)),this.initArrowNavigation()}constructor(){super(),this._search_results=[],this.debouncedFilter=Tc(e=>this.model.set({query:e.value}),250),this.registerEvents()}get search_results(){return this._search_results}set search_results(e){this._search_results=e,this.requestUpdate()}render(){return Pp({chatview:this.chatview,current_category:this.current_category,current_skintone:this.current_skintone,model:this.model,onCategoryPicked:e=>this.chooseCategory(e),onSearchInputBlurred:e=>this.chatview.emitFocused(e),onSearchInputFocus:e=>this.onSearchInputFocus(e),onSearchInputKeyDown:e=>this.onKeyDown(e),onSkintonePicked:e=>this.chooseSkinTone(e),query:this.query,search_results:this.search_results,render_emojis:this.render_emojis,sn2Emoji:e=>qp.shortnamesToEmojis(this.getTonedShortname(e))})}updated(e){e.has("query")&&this.updateSearchResults(e),e.has("current_category")&&this.setScrollPosition()}onModelChanged(e){"current_category"in e&&(this.current_category=e.current_category),"current_skintone"in e&&(this.current_skintone=e.current_skintone),"query"in e&&(this.query=e.query)}setScrollPosition(){if(this.preserve_scroll)return void(this.preserve_scroll=!1);const e=this.querySelector(".emoji-lists__container--browse"),t=this.querySelector("#emoji-picker-".concat(this.current_category));t&&(e.scrollTop=t.offsetTop-3*t.offsetHeight+4)}updateSearchResults(e){const t=e.get("query"),n=Lc.FILTER_CONTAINS;if(this.query){if(this.query===t)return this.search_results;t&&this.query.includes(t)?this.search_results=this.search_results.filter(e=>n(e.sn,this.query)):this.search_results=Yc.emojis.list.filter(e=>n(e.sn,this.query))}else this.search_results.length&&(this.search_results=[]);this.requestUpdate()}registerEvents(){this.onGlobalKeyDown=e=>this._onGlobalKeyDown(e),document.querySelector("body").addEventListener("keydown",this.onGlobalKeyDown)}connectedCallback(){super.connectedCallback(),this.registerEvents()}disconnectedCallback(){document.querySelector("body").removeEventListener("keydown",this.onGlobalKeyDown),super.disconnectedCallback()}_onGlobalKeyDown(e){this.navigator&&(e.keyCode===Yc.keycodes.ENTER&&this.navigator.selected&&qp.isVisible(this)?this.onEnterPressed(e):e.keyCode===Yc.keycodes.DOWN_ARROW&&!this.navigator.enabled&&qp.isVisible(this)&&this.enableArrowNavigation(e))}setCategoryForElement(e){const t=this.current_category,n=(null==e?void 0:e.getAttribute("data-category"))||t;t!==n&&this.model.save({current_category:n})}insertIntoTextArea(e){this.chatview.onEmojiReceivedFromPicker(e),this.model.set({autocompleting:null,query:"",ac_position:null})}chooseSkinTone(e){e.preventDefault(),e.stopPropagation();const t=("IMG"===e.target.nodeName?e.target.parentElement:e.target).getAttribute("data-skintone").trim();this.current_skintone===t?this.model.save({current_skintone:""}):this.model.save({current_skintone:t})}chooseCategory(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation();const t=e.target.matches("li")?e.target:qp.ancestor(e.target,"li");this.setCategoryForElement(t),this.navigator.select(t),!this.navigator.enabled&&this.navigator.enable()}onKeyDown(e){if(e.keyCode===Yc.keycodes.TAB)if(e.target.value){e.preventDefault();const t=Yc.emojis.shortnames.find(t=>Lc.FILTER_CONTAINS(t,e.target.value));t&&this.model.set({query:t})}else this.navigator.enabled||this.enableArrowNavigation(e);else e.keyCode!==Yc.keycodes.DOWN_ARROW||this.navigator.enabled?e.keyCode===Yc.keycodes.ENTER?this.onEnterPressed(e):e.keyCode===Yc.keycodes.ESCAPE?(qp.ancestor(this,"converse-emoji-dropdown").hideMenu(),this.chatview.el.querySelector(".chat-textarea").focus(),e.stopPropagation(),e.preventDefault()):e.keyCode!==Yc.keycodes.ENTER&&e.keyCode!==Yc.keycodes.DOWN_ARROW&&this.debouncedFilter(e.target):this.enableArrowNavigation(e)}onEnterPressed(e){e.emoji_keypress_handled||(e.preventDefault(),e.stopPropagation(),e.emoji_keypress_handled=!0,Yc.emojis.shortnames.includes(e.target.value)?this.insertIntoTextArea(e.target.value):1===this.search_results.length?this.insertIntoTextArea(this.search_results[0].sn):this.navigator.selected&&this.navigator.selected.matches(".insert-emoji")?this.insertIntoTextArea(this.navigator.selected.getAttribute("data-emoji")):this.navigator.selected&&this.navigator.selected.matches(".emoji-category")&&this.chooseCategory({target:this.navigator.selected}))}onSearchInputFocus(e){this.chatview.emitBlurred(e),this.disableArrowNavigation()}getTonedShortname(e){return Yc.emojis.toned.includes(e)&&this.current_skintone?"".concat(e.slice(0,e.length-1),"_").concat(this.current_skintone,":"):e}initArrowNavigation(){if(!this.navigator){const e="li:not(.hidden):not(.emoji-skintone), .emoji-search",t={jump_to_picked:".emoji-category",jump_to_picked_selector:".emoji-category.picked",jump_to_picked_direction:nf.DIRECTION.down,picked_selector:".picked",scroll_container:this.querySelector(".emoji-picker__lists"),getSelector:t=>{if(t===nf.DIRECTION.down){const t=this.navigator.selected&&this.navigator.selected.getAttribute("data-category");return t?'ul[data-category="'.concat(t,'"] li:not(.hidden):not(.emoji-skintone), .emoji-search'):e}return e},onSelected:e=>{e.matches(".insert-emoji")&&this.setCategoryForElement(e.parentElement),e.matches(".insert-emoji, .emoji-category")&&e.firstElementChild.focus(),e.matches(".emoji-search")&&e.focus()}};this.navigator=new nf(this,t)}}disableArrowNavigation(){this.navigator.disable()}enableArrowNavigation(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.disableArrowNavigation(),this.navigator.enable(),this.navigator.handleKeydown(e)}});const eg=Yc.env.Strophe;window.customElements.define("converse-chat-toolbar",class extends uc{static get properties(){return{chatview:{type:Object},composing_spoiler:{type:Boolean},hidden_occupants:{type:Boolean},is_groupchat:{type:Boolean},message_limit:{type:Number},model:{type:Object},show_call_button:{type:Boolean},show_emoji_button:{type:Boolean},show_occupants_toggle:{type:Boolean},show_send_button:{type:Boolean},show_spoiler_button:{type:Boolean},show_toolbar:{type:Boolean}}}render(){const e=dd("Send the message");return Ga(Kp(),this.show_toolbar?Ga(Yp(),oh(this.getButtons(),"")):"",this.show_send_button?Ga(Qp(),e):"")}getButtons(){const e=[];if(this.show_emoji_button&&e.push(Ga(Xp(),this.chatview)),this.show_call_button){const t=dd("Start a call");e.push(Ga(Jp(),this.toggleCall,t))}const t=dd("Message characters remaining");qc.settings.get("message_limit")&&e.push(Ga(Gp(),t,this.message_limit)),this.show_spoiler_button&&e.push(this.getSpoilerButton());const n=qc.disco.supports(eg.NS.HTTPUPLOAD,Lc.domain);if(e.push(Ga(Vp(),oh(n.then(e=>this.getHTTPUploadButton(e)),""))),this.show_occupants_toggle){const t=dd("Hide participants"),n=dd("Show participants");e.push(Ga(Wp(),this.hidden_occupants?n:t,this.toggleOccupants,this.hidden_occupants?"fa-angle-double-left":"fa-angle-double-right",qc.settings.get("assets_path")))}return Lc.api.hook("getToolbarButtons",this,e)}getHTTPUploadButton(e){if(e){const e=dd("Choose a file to send");return Ga($p(),e,this.toggleFileUpload,qc.settings.get("assets_path"),this.onFileSelection)}return""}getSpoilerButton(){const e=this.model;if(!this.is_groupchat&&0===e.presence.resources.length)return;let t;t=this.composing_spoiler?dd("Click to write as a normal (non-spoiler) message"):dd("Click to write your message as a spoiler");const n=Ga(Up(),t,this.toggleComposeSpoilerMessage,this.composing_spoiler?"fa-eye-slash":"fa-eye",qc.settings.get("assets_path"));if(this.is_groupchat)return n;{const t=e.get("jid"),r=Promise.all(e.presence.resources.map(e=>qc.disco.supports(eg.NS.SPOILER,"".concat(t,"/").concat(e.get("name"))))).then(e=>e.reduce((e,t)=>e&&t,!0));return Ga(Hp(),oh(r.then(()=>n),""))}}toggleFileUpload(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.querySelector(".fileupload").click()}onFileSelection(e){this.model.sendFiles(e.target.files)}toggleComposeSpoilerMessage(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.set("composing_spoiler",!this.model.get("composing_spoiler"))}toggleOccupants(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.save({hidden_occupants:!this.model.get("hidden_occupants")})}toggleCall(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),qc.trigger("callButtonClicked",{connection:Lc.connection,model:this.model})}});class tg extends HTMLElement{async connectedCallback(){await qc.waitUntil("initialized"),Yc.insertInto(this)}}function ng(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="inner-content converse-brand row">\n <div class="converse-brand__padding"></div>\n <div class="converse-brand__heading">\n <svg height="200px"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n viewBox="0 0 364 364"\n version="1.1">\n <title>Logo Converse</title>\n <defs>\n <linearGradient id="gradient" x1="92.14" y1="27.64" x2="267.65" y2="331.62" gradientUnits="userSpaceOnUse">\n <stop offset="0" stop-color="#fff1d1"/>\n <stop offset="0.05" stop-color="#fae8c1"/>\n <stop offset="0.15" stop-color="#f0d5a1"/>\n <stop offset="0.27" stop-color="#e7c687"/>\n <stop offset="0.4" stop-color="#e1bb72"/>\n <stop offset="0.54" stop-color="#dcb264"/>\n <stop offset="0.71" stop-color="#daad5c"/>\n <stop offset="1" stop-color="#d9ac59"/>\n </linearGradient>\n <filter id="shadow">\n <feGaussianBlur in="SourceAlpha" stdDeviation="2.3" result="blur1"/>\n <feOffset in="blur1" dx="3" dy="3" result="blur2"/>\n <feColorMatrix in="blur2" type="matrix" result="blur3"\n values="1 0 0 0 0.1\n 0 1 0 0 0.1\n 0 0 1 0 0.1\n 0 0 0 1 0"/>\n <feMerge>\n <feMergeNode in="blur3"/>\n <feMergeNode in="SourceGraphic"/>\n </feMerge>\n </filter>\n </defs>\n <g filter="url(#shadow)">\n <path d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" fill="#d9ac59"/>\n <path d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" fill="url(#gradient)"/>\n </g>\n </svg>\n <span class="converse-brand__text">\n <span>converse<span class="subdued">.js</span></span>\n <p class="byline">messaging freedom</p>\n </span>\n </div>\n </div>']);return ng=function(){return e},e}customElements.define("converse-root",tg); + */Vc.elements.define("converse-chat-content",class extends mc{static get properties(){return{chatview:{type:Object},messages:{type:Array},notifications:{type:String}}}render(){const e=Qp.a.filterXSS(this.notifications,{whiteList:{}});return Za(Zp(),this.chatview,this.messages,Kp(e))}});function rg(){const e=og(['<div class="message chat-','" data-isodate="','">',"</div>"]);return rg=function(){return e},e}function ig(){const e=og(['<converse-icon class="fas fa-times close-chat-help"\n @click=','\n path-prefix="','"\n size="1em"></converse-icon>']);return ig=function(){return e},e}function og(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}customElements.define("converse-icon",class extends mc{static get properties(){return{color:String,class_name:{attribute:"class"},style:String,size:String}}static get styles(){return fc(tg())}constructor(){super(),this.class_name="",this.style="",this.size="",this.color=""}getSource(){return"#icon-".concat(this.class_name.split(" ")[1].replace("fa-",""))}getStyles(){return"\n ".concat(this.size?"width: ".concat(this.size,";"):"","\n ").concat(this.size?"height: ".concat(this.size,";"):"","\n ").concat(this.color?"fill: ".concat(this.color,";"):"","\n ").concat(this.style,"\n ")}render(){return Za(eg(),this.getStyles(),this.getSource())}});function sg(){const e=gg(["<converse-emoji-picker-content\n .chatview=","\n .model=",'\n .search_results="','"\n current_skintone="','"\n query="','"></converse-emoji-picker-content>']);return sg=function(){return e},e}function ag(){const e=gg(['\n <div class="emoji-picker__header">\n <input class="form-control emoji-search" name="emoji-search" placeholder="','"\n .value=',"\n @keydown=","\n @blur=","\n @focus=",">\n ","\n </div>\n ",'\n\n <div class="emoji-skintone-picker">\n <label>Skin tone</label>\n <ul>',"</ul>\n </div>"]);return ag=function(){return e},e}function cg(){const e=gg(['\n <li data-skintone="','" class="emoji-skintone ','">\n <a class="pick-skintone" href="#" data-skintone="','" @click=',">","</a>\n </li>"]);return cg=function(){return e},e}function lg(){const e=gg(["\n <span ?hidden=",' class="emoji-lists__container emoji-lists__container--browse">\n ',"\n </span>"]);return lg=function(){return e},e}function ug(){const e=gg(['\n <a id="emoji-picker-','" class="emoji-category__heading" data-category="','">','</a>\n <ul class="emoji-picker" data-category="','">\n ',"\n </ul>"]);return ug=function(){return e},e}function dg(){const e=gg(["\n <span ?hidden=",' class="emoji-lists__container emojis-lists__container--search">\n <a id="emoji-picker-search-results" class="emoji-category__heading">','</a>\n <ul class="emoji-picker">\n ',"\n </ul>\n </span>\n "]);return dg=function(){return e},e}function hg(){const e=gg(['\n <li class="emoji insert-emoji ','" data-emoji="','" title="','">\n <a href="#" @click=',' data-emoji="','">',"</a>\n </li>\n "]);return hg=function(){return e},e}function fg(){const e=gg(["<ul>","</ul>"]);return fg=function(){return e},e}function pg(){const e=gg(['\n <li data-category="','"\n class="emoji-category '," ",'"\n title="','">\n\n <a class="pick-category"\n @click=','\n href="#emoji-picker-','"\n data-category="','">'," </a>\n </li>\n "]);return pg=function(){return e},e}function gg(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-chat-help",class extends mc{static get properties(){return{chat_type:{type:String},messages:{type:Array},model:{type:Object},type:{type:String}}}render(){const e=(new Date).toISOString();return[Za(ig(),this.close,Vc.settings.get("assets_path")),...this.messages.map(t=>this.renderHelpMessage({isodate:e,markup:Qp.a.filterXSS(t,{whiteList:{strong:[]}})}))]}close(){this.model.set({show_help_messages:!1})}renderHelpMessage(e){return Za(rg(),this.type,e.isodate,Kp(e.markup))}});const mg=rl.env.utils,vg=e=>{const t=Vc.settings.get("emoji_categories");return Za(fg(),Object.keys(t).map(n=>t[n]?(e=>Za(pg(),e.category,e.category,e.current_category===e.category?"picked":"",zd(Uc.emoji_category_labels[e.category]),e.onCategoryPicked,e.category,e.category,e.emoji))(Object.assign({category:n,emoji:e.sn2Emoji(t[n])},e)):""))},_g=e=>Za(hg(),e.shouldBeHidden(e.emoji.sn)?"hidden":"",e.emoji.sn,e.emoji.sn,e.insertEmoji,e.emoji.sn,mg.shortnamesToEmojis(e.emoji.sn)),bg=e=>{const t=Vc.settings.get("emoji_categories");return Za(lg(),e.query,Object.keys(t).map(n=>t[n]?(e=>Za(ug(),e.category,e.category,zd(Vc.settings.get("emoji_category_labels")[e.category]),e.category,Object.values(rl.emojis.json[e.category]).map(t=>_g(Object.assign({emoji:t},e)))))(Object.assign({category:n},e)):""))},yg=e=>{const t=zd("Search");return Za(ag(),t,e.query||"",e.onSearchInputKeyDown,e.onSearchInputBlurred,e.onSearchInputFocus,e.query?"":vg(e),e.render_emojis?Za(sg(),e.chatview,e.model,e.search_results,e.current_skintone,e.query):"",["tone1","tone2","tone3","tone4","tone5"].map(t=>(e=>Za(cg(),e.skintone,e.current_skintone===e.skintone?"picked":"",e.skintone,e.onSkintonePicked,mg.shortnamesToEmojis(":"+e.skintone+":")))(Object.assign({skintone:t},e))))};function wg(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="emoji-picker__lists">\n ',"\n ","\n </div>\n "]);return wg=function(){return e},e}function Sg(){const e=Eg(["\n <converse-emoji-picker\n .chatview=","\n .model=","\n ?render_emojis=",'\n current_category="','"\n current_skintone="','"\n query="','"\n ></converse-emoji-picker>']);return Sg=function(){return e},e}function xg(){const e=Eg(['\n <div class="dropup">\n <button class="toggle-emojis"\n title="','"\n data-toggle="dropdown"\n aria-haspopup="true"\n aria-expanded="false">\n <converse-icon\n class="fa fa-smile "\n path-prefix="','"\n size="1em"></converse-icon>\n </button>\n <div class="dropdown-menu">\n ',"\n </div>\n </div>"]);return xg=function(){return e},e}function Eg(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-emoji-picker-content",class extends mc{static get properties(){return{chatview:{type:Object},search_results:{type:Array},current_skintone:{type:String},model:{type:Object},query:{type:String}}}render(){const e={current_skintone:this.current_skintone,insertEmoji:e=>this.insertEmoji(e),query:this.query,search_results:this.search_results,shouldBeHidden:e=>this.shouldBeHidden(e)};return Za(wg(),(e=>{const t=zd("Search results");return Za(dg(),!e.query,t,e.search_results.map(t=>_g(Object.assign({emoji:t},e))))})(e),bg(e))}firstUpdated(){this.initIntersectionObserver()}initIntersectionObserver(){if(window.IntersectionObserver){if(this.observer)this.observer.disconnect();else{const e={root:this.querySelector(".emoji-picker__lists"),threshold:[.1]},t=e=>this.setCategoryOnVisibilityChange(e);this.observer=new IntersectionObserver(t,e)}mr()(".emoji-picker",this).forEach(e=>this.observer.observe(e))}}setCategoryOnVisibilityChange(e){const t=this.parentElement.navigator.selected,n=e.filter(e=>e.target.contains(t)).pop();let r;if(r=n||e.reduce((e,t)=>t.intersectionRatio>=((null==e?void 0:e.intersectionRatio)||0)?t:e,null),r&&r.isIntersecting){const e=r.target.getAttribute("data-category");e!==this.model.get("current_category")&&(this.parentElement.preserve_scroll=!0,this.model.save({current_category:e}))}}insertEmoji(e){e.preventDefault(),e.stopPropagation();const t="IMG"===e.target.nodeName?e.target.parentElement:e.target;this.parentElement.insertIntoTextArea(t.getAttribute("data-emoji"))}shouldBeHidden(e){if(e.includes("_tone")){if(!this.current_skintone||!e.includes(this.current_skintone))return!0}else if(this.current_skintone&&rl.emojis.toned.includes(e))return!0;return!(!this.query||Uc.FILTER_CONTAINS(e,this.query))}});const Ag=rl.env.utils;function Cg(){const e=Lg(["",""]);return Cg=function(){return e},e}function jg(){const e=Lg(['\n <button class="toggle-compose-spoiler"\n title="','"\n @click=','>\n <converse-icon class="fa ','"\n path-prefix="','"\n size="1em"></converse-icon>\n </button>']);return jg=function(){return e},e}function Tg(){const e=Lg(['\n <button title="','" @click=','>\n <converse-icon class="fa fa-paperclip"\n path-prefix="','"\n size="1em"></converse-icon>\n </button>\n <input type="file" @change=',' class="fileupload" multiple="" style="display:none"/>']);return Tg=function(){return e},e}function Og(){const e=Lg(['\n <button class="toggle_occupants right"\n title="','"\n @click=','>\n <converse-icon class="fa ','"\n path-prefix="','" size="1em"></converse-icon>\n </button>']);return Og=function(){return e},e}function kg(){const e=Lg(["",""]);return kg=function(){return e},e}function Ng(){const e=Lg(['<span class="right message-limit" title="','">',"</span>"]);return Ng=function(){return e},e}function Ig(){const e=Lg(['\n <button class="toggle-call" @click=',' title="','">\n <converse-icon class="fa fa-phone" path-prefix="/dist" size="1em"></converse-icon>\n </button>']);return Ig=function(){return e},e}function Mg(){const e=Lg(["<converse-emoji-dropdown .chatview=","></converse-dropdown>"]);return Mg=function(){return e},e}function Rg(){const e=Lg(['<button type="submit" class="btn send-button fa fa-paper-plane" title="','"></button>']);return Rg=function(){return e},e}function Dg(){const e=Lg(['<span class="toolbar-buttons">',"</span>"]);return Dg=function(){return e},e}function Pg(){const e=Lg(["\n ","\n ","\n "]);return Pg=function(){return e},e}function Lg(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-emoji-dropdown",class extends Zh{static get properties(){return{chatview:{type:Object}}}constructor(){super(),this.render_emojis=!1}initModel(){return this.init_promise||(this.init_promise=(async()=>{await Vc.emojis.initialize();const e="converse.emoji-".concat(Uc.bare_jid,"-").concat(this.chatview.model.get("jid"));this.model=new Uc.EmojiPicker({id:e}),this.model.browserStorage=Uc.createStore(e),await new Promise(e=>this.model.fetch({success:e,error:e})),this.model.set({autocompleting:null,ac_position:null})})()),this.init_promise}render(){return Za(xg(),zd("Insert emojis"),Vc.settings.get("assets_path"),Qh(this.initModel().then(()=>Za(Sg(),this.chatview,this.model,this.render_emojis,this.model.get("current_category")||"",this.model.get("current_skintone")||"",this.model.get("query")||"")),""))}connectedCallback(){super.connectedCallback(),this.render_emojis=!1}toggleMenu(e){e.stopPropagation(),e.preventDefault(),Ag.hasClass("show",this.menu)?Ag.ancestor(e.target,".toggle-emojis")&&this.hideMenu():this.showMenu()}async showMenu(){await this.initModel(),this.render_emojis||(this.render_emojis=!0,await this.requestUpdate()),super.showMenu(),setTimeout(()=>{var e;return null===(e=this.querySelector(".emoji-search"))||void 0===e?void 0:e.focus()})}}),Vc.elements.define("converse-emoji-picker",class extends mc{static get properties(){return{chatview:{type:Object},current_category:{type:String,reflect:!0},current_skintone:{type:String,reflect:!0},model:{type:Object},query:{type:String,reflet:!0},render_emojis:{type:Boolean}}}firstUpdated(){this.listenTo(this.model,"change",e=>this.onModelChanged(e.changed)),this.initArrowNavigation()}constructor(){super(),this._search_results=[],this.debouncedFilter=Rc(e=>this.model.set({query:e.value}),250),this.registerEvents()}get search_results(){return this._search_results}set search_results(e){this._search_results=e,this.requestUpdate()}render(){return yg({chatview:this.chatview,current_category:this.current_category,current_skintone:this.current_skintone,model:this.model,onCategoryPicked:e=>this.chooseCategory(e),onSearchInputBlurred:e=>this.chatview.emitFocused(e),onSearchInputFocus:e=>this.onSearchInputFocus(e),onSearchInputKeyDown:e=>this.onKeyDown(e),onSkintonePicked:e=>this.chooseSkinTone(e),query:this.query,search_results:this.search_results,render_emojis:this.render_emojis,sn2Emoji:e=>Ag.shortnamesToEmojis(this.getTonedShortname(e))})}updated(e){e.has("query")&&this.updateSearchResults(e),e.has("current_category")&&this.setScrollPosition()}onModelChanged(e){"current_category"in e&&(this.current_category=e.current_category),"current_skintone"in e&&(this.current_skintone=e.current_skintone),"query"in e&&(this.query=e.query)}setScrollPosition(){if(this.preserve_scroll)return void(this.preserve_scroll=!1);const e=this.querySelector(".emoji-lists__container--browse"),t=this.querySelector("#emoji-picker-".concat(this.current_category));t&&(e.scrollTop=t.offsetTop-3*t.offsetHeight+4)}updateSearchResults(e){const t=e.get("query"),n=Uc.FILTER_CONTAINS;if(this.query){if(this.query===t)return this.search_results;t&&this.query.includes(t)?this.search_results=this.search_results.filter(e=>n(e.sn,this.query)):this.search_results=rl.emojis.list.filter(e=>n(e.sn,this.query))}else this.search_results.length&&(this.search_results=[]);this.requestUpdate()}registerEvents(){this.onGlobalKeyDown=e=>this._onGlobalKeyDown(e),document.querySelector("body").addEventListener("keydown",this.onGlobalKeyDown)}connectedCallback(){super.connectedCallback(),this.registerEvents()}disconnectedCallback(){document.querySelector("body").removeEventListener("keydown",this.onGlobalKeyDown),super.disconnectedCallback()}_onGlobalKeyDown(e){this.navigator&&(e.keyCode===rl.keycodes.ENTER&&this.navigator.selected&&Ag.isVisible(this)?this.onEnterPressed(e):e.keyCode===rl.keycodes.DOWN_ARROW&&!this.navigator.enabled&&Ag.isVisible(this)&&this.enableArrowNavigation(e))}setCategoryForElement(e){const t=this.current_category,n=(null==e?void 0:e.getAttribute("data-category"))||t;t!==n&&this.model.save({current_category:n})}insertIntoTextArea(e){this.chatview.onEmojiReceivedFromPicker(e),this.model.set({autocompleting:null,query:"",ac_position:null})}chooseSkinTone(e){e.preventDefault(),e.stopPropagation();const t=("IMG"===e.target.nodeName?e.target.parentElement:e.target).getAttribute("data-skintone").trim();this.current_skintone===t?this.model.save({current_skintone:""}):this.model.save({current_skintone:t})}chooseCategory(e){e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation();const t=e.target.matches("li")?e.target:Ag.ancestor(e.target,"li");this.setCategoryForElement(t),this.navigator.select(t),!this.navigator.enabled&&this.navigator.enable()}onKeyDown(e){if(e.keyCode===rl.keycodes.TAB)if(e.target.value){e.preventDefault();const t=rl.emojis.shortnames.find(t=>Uc.FILTER_CONTAINS(t,e.target.value));t&&this.model.set({query:t})}else this.navigator.enabled||this.enableArrowNavigation(e);else e.keyCode!==rl.keycodes.DOWN_ARROW||this.navigator.enabled?e.keyCode===rl.keycodes.ENTER?this.onEnterPressed(e):e.keyCode===rl.keycodes.ESCAPE?(Ag.ancestor(this,"converse-emoji-dropdown").hideMenu(),this.chatview.el.querySelector(".chat-textarea").focus(),e.stopPropagation(),e.preventDefault()):e.keyCode!==rl.keycodes.ENTER&&e.keyCode!==rl.keycodes.DOWN_ARROW&&this.debouncedFilter(e.target):this.enableArrowNavigation(e)}onEnterPressed(e){e.emoji_keypress_handled||(e.preventDefault(),e.stopPropagation(),e.emoji_keypress_handled=!0,rl.emojis.shortnames.includes(e.target.value)?this.insertIntoTextArea(e.target.value):1===this.search_results.length?this.insertIntoTextArea(this.search_results[0].sn):this.navigator.selected&&this.navigator.selected.matches(".insert-emoji")?this.insertIntoTextArea(this.navigator.selected.getAttribute("data-emoji")):this.navigator.selected&&this.navigator.selected.matches(".emoji-category")&&this.chooseCategory({target:this.navigator.selected}))}onSearchInputFocus(e){this.chatview.emitBlurred(e),this.disableArrowNavigation()}getTonedShortname(e){return rl.emojis.toned.includes(e)&&this.current_skintone?"".concat(e.slice(0,e.length-1),"_").concat(this.current_skintone,":"):e}initArrowNavigation(){if(!this.navigator){const e="li:not(.hidden):not(.emoji-skintone), .emoji-search",t={jump_to_picked:".emoji-category",jump_to_picked_selector:".emoji-category.picked",jump_to_picked_direction:Jh.DIRECTION.down,picked_selector:".picked",scroll_container:this.querySelector(".emoji-picker__lists"),getSelector:t=>{if(t===Jh.DIRECTION.down){const t=this.navigator.selected&&this.navigator.selected.getAttribute("data-category");return t?'ul[data-category="'.concat(t,'"] li:not(.hidden):not(.emoji-skintone), .emoji-search'):e}return e},onSelected:e=>{e.matches(".insert-emoji")&&this.setCategoryForElement(e.parentElement),e.matches(".insert-emoji, .emoji-category")&&e.firstElementChild.focus(),e.matches(".emoji-search")&&e.focus()}};this.navigator=new Jh(this,t)}}disableArrowNavigation(){this.navigator.disable()}enableArrowNavigation(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.disableArrowNavigation(),this.navigator.enable(),this.navigator.handleKeydown(e)}});const zg=rl.env.Strophe;window.customElements.define("converse-chat-toolbar",class extends mc{static get properties(){return{chatview:{type:Object},composing_spoiler:{type:Boolean},hidden_occupants:{type:Boolean},is_groupchat:{type:Boolean},message_limit:{type:Number},model:{type:Object},show_call_button:{type:Boolean},show_emoji_button:{type:Boolean},show_occupants_toggle:{type:Boolean},show_send_button:{type:Boolean},show_spoiler_button:{type:Boolean},show_toolbar:{type:Boolean}}}render(){const e=zd("Send the message");return Za(Pg(),this.show_toolbar?Za(Dg(),Qh(this.getButtons(),"")):"",this.show_send_button?Za(Rg(),e):"")}getButtons(){const e=[];if(this.show_emoji_button&&e.push(Za(Mg(),this.chatview)),this.show_call_button){const t=zd("Start a call");e.push(Za(Ig(),this.toggleCall,t))}const t=zd("Message characters remaining");Vc.settings.get("message_limit")&&e.push(Za(Ng(),t,this.message_limit)),this.show_spoiler_button&&e.push(this.getSpoilerButton());const n=Vc.disco.supports(zg.NS.HTTPUPLOAD,Uc.domain);if(e.push(Za(kg(),Qh(n.then(e=>this.getHTTPUploadButton(e)),""))),this.show_occupants_toggle){const t=zd("Hide participants"),n=zd("Show participants");e.push(Za(Og(),this.hidden_occupants?n:t,this.toggleOccupants,this.hidden_occupants?"fa-angle-double-left":"fa-angle-double-right",Vc.settings.get("assets_path")))}return Uc.api.hook("getToolbarButtons",this,e)}getHTTPUploadButton(e){if(e){const e=zd("Choose a file to send");return Za(Tg(),e,this.toggleFileUpload,Vc.settings.get("assets_path"),this.onFileSelection)}return""}getSpoilerButton(){const e=this.model;if(!this.is_groupchat&&0===e.presence.resources.length)return;let t;t=this.composing_spoiler?zd("Click to write as a normal (non-spoiler) message"):zd("Click to write your message as a spoiler");const n=Za(jg(),t,this.toggleComposeSpoilerMessage,this.composing_spoiler?"fa-eye-slash":"fa-eye",Vc.settings.get("assets_path"));if(this.is_groupchat)return n;{const t=e.get("jid"),r=Promise.all(e.presence.resources.map(e=>Vc.disco.supports(zg.NS.SPOILER,"".concat(t,"/").concat(e.get("name"))))).then(e=>e.reduce((e,t)=>e&&t,!0));return Za(Cg(),Qh(r.then(()=>n),""))}}toggleFileUpload(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.querySelector(".fileupload").click()}onFileSelection(e){this.model.sendFiles(e.target.files)}toggleComposeSpoilerMessage(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.set("composing_spoiler",!this.model.get("composing_spoiler"))}toggleOccupants(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.save({hidden_occupants:!this.model.get("hidden_occupants")})}toggleCall(e){var t,n;null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),Vc.trigger("callButtonClicked",{connection:Uc.connection,model:this.model})}});class Fg extends HTMLElement{async connectedCallback(){await Vc.waitUntil("initialized"),rl.insertInto(this)}}customElements.define("converse-root",Fg);const Bg=rl.env.utils;var qg={renderAvatar(e){const t=(e=e||this.el).querySelector("canvas.avatar, svg.avatar");if(null!==t&&this.model.vcard){const e={classes:t.getAttribute("class"),width:t.getAttribute("width"),height:t.getAttribute("height"),image_type:this.model.vcard.get("image_type"),image:this.model.vcard.get("image")};t.outerHTML=Bg.getElementFromTemplateResult(ip(e)).outerHTML}}};function Hg(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="inner-content converse-brand row">\n <div class="converse-brand__padding"></div>\n <div class="converse-brand__heading">\n <svg height="200px"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n viewBox="0 0 364 364"\n version="1.1">\n <title>Logo Converse</title>\n <defs>\n <linearGradient id="gradient" x1="92.14" y1="27.64" x2="267.65" y2="331.62" gradientUnits="userSpaceOnUse">\n <stop offset="0" stop-color="#fff1d1"/>\n <stop offset="0.05" stop-color="#fae8c1"/>\n <stop offset="0.15" stop-color="#f0d5a1"/>\n <stop offset="0.27" stop-color="#e7c687"/>\n <stop offset="0.4" stop-color="#e1bb72"/>\n <stop offset="0.54" stop-color="#dcb264"/>\n <stop offset="0.71" stop-color="#daad5c"/>\n <stop offset="1" stop-color="#d9ac59"/>\n </linearGradient>\n <filter id="shadow">\n <feGaussianBlur in="SourceAlpha" stdDeviation="2.3" result="blur1"/>\n <feOffset in="blur1" dx="3" dy="3" result="blur2"/>\n <feColorMatrix in="blur2" type="matrix" result="blur3"\n values="1 0 0 0 0.1\n 0 1 0 0 0.1\n 0 0 1 0 0.1\n 0 0 0 1 0"/>\n <feMerge>\n <feMergeNode in="blur3"/>\n <feMergeNode in="SourceGraphic"/>\n </feMerge>\n </filter>\n </defs>\n <g filter="url(#shadow)">\n <path d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" fill="#d9ac59"/>\n <path d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" fill="url(#gradient)"/>\n </g>\n </svg>\n <span class="converse-brand__text">\n <span>converse<span class="subdued">.js</span></span>\n <p class="byline">messaging freedom</p>\n </span>\n </div>\n </div>']);return Hg=function(){return e},e} /** * @license * Copyright (c) 2017 The Polymer Project Authors. All rights reserved. @@ -460,45 +469,51 @@ const fp=new WeakMap,pp=Ea(e=>t=>{if(!(t instanceof Da))throw new Error("unsafeH * subject to an additional IP rights grant found at * http://polymer.github.io/PATENTS.txt */ -const rg=new WeakMap,ig=Ea(e=>t=>{if(!(t instanceof Da))throw new Error("unsafeSVG can only be used in text bindings");const n=rg.get(t);if(void 0!==n&&Na(e)&&e===n.value&&t.value===n.fragment)return;const r=document.createElement("template");r.innerHTML=`<svg>${e}</svg>`;const i=r.content,s=i.firstChild;i.removeChild(s),ua(i,s.firstChild);const o=document.importNode(i,!0);t.setValue(o),rg.set(t,{value:e,fragment:o})});function sg(){const e=ag(["",""]);return sg=function(){return e},e}function og(){const e=ag(["",""]);return og=function(){return e},e}function ag(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function cg(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="converse-chatboxes row no-gutters"></div>\n <div id="converse-modals" class="modals"></div>\n <converse-fontawesome></converse-fontawesome>\n']);return cg=function(){return e},e}window.customElements.define("converse-fontawesome",class extends uc{constructor(){super();const e=n.e(138).then(n.t.bind(null,459,7));this.data=e.then(e=>Ga(og(),ig(e.default())))}render(){return Ga(sg(),oh(this.data,""))}});var lg=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:ai(t),ys(e,t<0?0:t,r)):[]};var ug=function(e,t){var n=[];return uo(e,(function(e,r,i){t(e,r,i)&&n.push(e)})),n};var dg=function(e,t){return(ke(e)?st:ug)(e,vs(t,3))};var hg=function(e){return e&&e.length?e[0]:void 0};var fg=function(e){return"function"==typeof e?e:fr};var pg=function(e,t){return(ke(e)?ve:uo)(e,fg(t))};var gg=function(e,t){return Dr(t,(function(t){return e[t]}))};var mg=function(e){return null==e?[]:gg(e,Qe(e))},vg=Math.max;var _g=function(e,t,n,r){e=Xe(e)?e:mg(e),n=n&&!r?ai(n):0;var i=e.length;return n<0&&(n=vg(i+n,0)),Zt(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&bo(e,t,n)>-1};var bg=function(e){return(null==e?0:e.length)?ys(e,0,-1):[]};var yg=function(e,t){return(ke(e)?Dr:$o)(e,vs(t,3))};var wg=function(e,t,n){for(var r=-1,i=e.length;++r<i;){var s=e[r],o=t(s);if(null!=o&&(void 0===a?o==o&&!Cr(o):n(o,a)))var a=o,c=s}return c};var Sg=function(e,t){return e>t};var xg=function(e){return e&&e.length?wg(e,fr,Sg):void 0};var Eg=function(e,t){return e<t};var Ag=function(e){return e&&e.length?wg(e,fr,Eg):void 0};var Cg=function(e,t,n,r){var i=-1,s=null==e?0:e.length;for(r&&s&&(n=e[++i]);++i<s;)n=t(n,e[i],i,e);return n};var jg=function(e,t,n,r,i){return i(e,(function(e,i,s){n=r?(r=!1,e):t(n,e,i,s)})),n};var Tg=function(e,t,n){var r=ke(e)?Cg:jg,i=arguments.length<3;return r(e,vs(t,4),n,i,uo)};var Og=function(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n},kg=Mi(!0);var Ng=lo((function(e,t){return e&&kg(e,t,Qe)}),!0);var Ig=function(e,t,n){var r=ke(e)?Og:jg,i=arguments.length<3;return r(e,vs(t,4),n,i,Ng)};var Mg=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};var Rg=function(e,t){return(ke(e)?st:ug)(e,Mg(vs(t,3)))};var Dg=function(e,t){if("function"!=typeof e)throw new TypeError("Expected a function");return t=void 0===t?t:ai(t),wr(e,t)},Pg=Math.floor,Lg=Math.random;var zg=function(e,t){return e+Pg(Lg()*(t-e+1))};var Fg=function(e){var t=e.length;return t?e[zg(0,t-1)]:void 0};var Bg=function(e){return Fg(mg(e))};var qg=function(e){return(ke(e)?Fg:Bg)(e)};var Hg=function(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n<t;){var s=zg(n,i),o=e[s];e[s]=e[n],e[n]=o}return e.length=t,e};var Ug=function(e){return Hg(it(e))};var $g=function(e){return Hg(mg(e))};var Wg=function(e){return(ke(e)?Ug:$g)(e)},Vg=ps("length"),Gg=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Jg=function(e){return Gg.test(e)},Xg="[\\ud800-\\udfff]",Qg="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Yg="\\ud83c[\\udffb-\\udfff]",Kg="[^\\ud800-\\udfff]",Zg="(?:\\ud83c[\\udde6-\\uddff]){2}",em="[\\ud800-\\udbff][\\udc00-\\udfff]",tm="(?:"+Qg+"|"+Yg+")"+"?",nm="[\\ufe0e\\ufe0f]?"+tm+("(?:\\u200d(?:"+[Kg,Zg,em].join("|")+")[\\ufe0e\\ufe0f]?"+tm+")*"),rm="(?:"+[Kg+Qg+"?",Qg,Zg,em,Xg].join("|")+")",im=RegExp(Yg+"(?="+Yg+")|"+rm+nm,"g");var sm=function(e){for(var t=im.lastIndex=0;im.test(e);)++t;return t};var om=function(e){return Jg(e)?sm(e):Vg(e)};var am=function(e){if(null==e)return 0;if(Xe(e))return Zt(e)?om(e):e.length;var t=Tt(e);return"[object Map]"==t||"[object Set]"==t?e.size:Je(e).length};var cm=function(e){var t=null==e?0:e.length;return t?ys(e,1,t):[]};var lm=function(e,t,n){return e&&e.length?(t=n||void 0===t?1:ai(t),ys(e,0,t<0?0:t)):[]};var um=function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n};var dm=function(e){return e.split("")},hm="[\\ud800-\\udfff]",fm="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",pm="[^\\ud800-\\udfff]",gm="(?:\\ud83c[\\udde6-\\uddff]){2}",mm="[\\ud800-\\udbff][\\udc00-\\udfff]",vm="(?:"+fm+"|\\ud83c[\\udffb-\\udfff])"+"?",_m="[\\ufe0e\\ufe0f]?"+vm+("(?:\\u200d(?:"+[pm,gm,mm].join("|")+")[\\ufe0e\\ufe0f]?"+vm+")*"),bm="(?:"+[pm+fm+"?",fm,gm,mm,hm].join("|")+")",ym=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+bm+_m,"g");var wm=function(e){return e.match(ym)||[]};var Sm=function(e){return Jg(e)?wm(e):dm(e)},xm=w?w.iterator:void 0;var Em=function(e){if(!e)return[];if(Xe(e))return Zt(e)?Sm(e):it(e);if(xm&&e[xm])return um(e[xm]());var t=Tt(e);return("[object Map]"==t?Gi:"[object Set]"==t?Ji:mg)(e)},Am=wr((function(e,t){return xo(e)?So(e,t):[]})); +const Ug=new WeakMap,$g=ka(e=>t=>{if(!(t instanceof qa))throw new Error("unsafeSVG can only be used in text bindings");const n=Ug.get(t);if(void 0!==n&&La(e)&&e===n.value&&t.value===n.fragment)return;const r=document.createElement("template");r.innerHTML=`<svg>${e}</svg>`;const i=r.content,o=i.firstChild;i.removeChild(o),ma(i,o.firstChild);const s=document.importNode(i,!0);t.setValue(s),Ug.set(t,{value:e,fragment:s})});function Wg(){const e=Vg(["",""]);return Wg=function(){return e},e}function Gg(){const e=Vg(["",""]);return Gg=function(){return e},e}function Vg(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Jg(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="converse-chatboxes row no-gutters"></div>\n <div id="converse-modals" class="modals"></div>\n <converse-fontawesome></converse-fontawesome>\n']);return Jg=function(){return e},e}window.customElements.define("converse-fontawesome",class extends mc{constructor(){super();const e=n.e(138).then(n.t.bind(null,548,7));this.data=e.then(e=>Za(Gg(),$g(e.default())))}render(){return Za(Wg(),Qh(this.data,""))}});var Xg=function(e,t,n){var r=null==e?0:e.length;return r?(t=n||void 0===t?1:fi(t),jo(e,t<0?0:t,r)):[]};var Qg=function(e,t){var n=[];return vs(e,(function(e,r,i){t(e,r,i)&&n.push(e)})),n};var Yg=function(e,t){return(ke(e)?ot:Qg)(e,Eo(t,3))};var Kg=function(e){return e&&e.length?e[0]:void 0};var Zg=function(e){return"function"==typeof e?e:br};var em=function(e,t){return(ke(e)?ve:vs)(e,Zg(t))};var tm=function(e,t){return qr(t,(function(t){return e[t]}))};var nm=function(e){return null==e?[]:tm(e,Qe(e))},rm=Math.max;var im=function(e,t,n,r){e=Xe(e)?e:nm(e),n=n&&!r?fi(n):0;var i=e.length;return n<0&&(n=rm(i+n,0)),Zt(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&As(e,t,n)>-1};var om=function(e){return(null==e?0:e.length)?jo(e,0,-1):[]};var sm=function(e,t){return(ke(e)?qr:Qs)(e,Eo(t,3))};var am=function(e,t,n){for(var r=-1,i=e.length;++r<i;){var o=e[r],s=t(o);if(null!=s&&(void 0===a?s==s&&!Ir(s):n(s,a)))var a=s,c=o}return c};var cm=function(e,t){return e>t};var lm=function(e){return e&&e.length?am(e,br,cm):void 0};var um=function(e,t){return e<t};var dm=function(e){return e&&e.length?am(e,br,um):void 0};var hm=function(e,t,n,r){var i=-1,o=null==e?0:e.length;for(r&&o&&(n=e[++i]);++i<o;)n=t(n,e[i],i,e);return n};var fm=function(e,t,n,r,i){return i(e,(function(e,i,o){n=r?(r=!1,e):t(n,e,i,o)})),n};var pm=function(e,t,n){var r=ke(e)?hm:fm,i=arguments.length<3;return r(e,Eo(t,4),n,i,vs)};var gm=function(e,t,n,r){var i=null==e?0:e.length;for(r&&i&&(n=e[--i]);i--;)n=t(n,e[i],i,e);return n},mm=Fi(!0);var vm=ms((function(e,t){return e&&mm(e,t,Qe)}),!0);var _m=function(e,t,n){var r=ke(e)?gm:fm,i=arguments.length<3;return r(e,Eo(t,4),n,i,vm)};var bm=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};var ym=function(e,t){return(ke(e)?ot:Qg)(e,bm(Eo(t,3)))};var wm=function(e,t){if("function"!=typeof e)throw new TypeError("Expected a function");return t=void 0===t?t:fi(t),jr(e,t)},Sm=Math.floor,xm=Math.random;var Em=function(e,t){return e+Sm(xm()*(t-e+1))};var Am=function(e){var t=e.length;return t?e[Em(0,t-1)]:void 0};var Cm=function(e){return Am(nm(e))};var jm=function(e){return(ke(e)?Am:Cm)(e)};var Tm=function(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n<t;){var o=Em(n,i),s=e[o];e[o]=e[n],e[n]=s}return e.length=t,e};var Om=function(e){return Tm(it(e))};var km=function(e){return Tm(nm(e))};var Nm=function(e){return(ke(e)?Om:km)(e)},Im=wo("length"),Mm=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");var Rm=function(e){return Mm.test(e)},Dm="[\\ud800-\\udfff]",Pm="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Lm="\\ud83c[\\udffb-\\udfff]",zm="[^\\ud800-\\udfff]",Fm="(?:\\ud83c[\\udde6-\\uddff]){2}",Bm="[\\ud800-\\udbff][\\udc00-\\udfff]",qm="(?:"+Pm+"|"+Lm+")"+"?",Hm="[\\ufe0e\\ufe0f]?"+qm+("(?:\\u200d(?:"+[zm,Fm,Bm].join("|")+")[\\ufe0e\\ufe0f]?"+qm+")*"),Um="(?:"+[zm+Pm+"?",Pm,Fm,Bm,Dm].join("|")+")",$m=RegExp(Lm+"(?="+Lm+")|"+Um+Hm,"g");var Wm=function(e){for(var t=$m.lastIndex=0;$m.test(e);)++t;return t};var Gm=function(e){return Rm(e)?Wm(e):Im(e)};var Vm=function(e){if(null==e)return 0;if(Xe(e))return Zt(e)?Gm(e):e.length;var t=Tt(e);return"[object Map]"==t||"[object Set]"==t?e.size:Je(e).length};var Jm=function(e){var t=null==e?0:e.length;return t?jo(e,1,t):[]};var Xm=function(e,t,n){return e&&e.length?(t=n||void 0===t?1:fi(t),jo(e,0,t<0?0:t)):[]};var Qm=function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n};var Ym=function(e){return e.split("")},Km="[\\ud800-\\udfff]",Zm="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",ev="[^\\ud800-\\udfff]",tv="(?:\\ud83c[\\udde6-\\uddff]){2}",nv="[\\ud800-\\udbff][\\udc00-\\udfff]",rv="(?:"+Zm+"|\\ud83c[\\udffb-\\udfff])"+"?",iv="[\\ufe0e\\ufe0f]?"+rv+("(?:\\u200d(?:"+[ev,tv,nv].join("|")+")[\\ufe0e\\ufe0f]?"+rv+")*"),ov="(?:"+[ev+Zm+"?",Zm,tv,nv,Km].join("|")+")",sv=RegExp("\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|"+ov+iv,"g");var av=function(e){return e.match(sv)||[]};var cv=function(e){return Rm(e)?av(e):Ym(e)},lv=w?w.iterator:void 0;var uv=function(e){if(!e)return[];if(Xe(e))return Zt(e)?cv(e):it(e);if(lv&&e[lv])return Qm(e[lv]());var t=Tt(e);return("[object Map]"==t?Zi:"[object Set]"==t?eo:nm)(e)},dv=jr((function(e,t){return Os(e)?Ts(e,t):[]})); /*! * Copyright (c) JC Brand <jc@opkode.com> */ -const Cm=function(e){this.views={},this.keys=()=>Object.keys(this.views),this.getAll=()=>this.views,this.get=e=>this.views[e],this.xget=e=>this.keys().filter(t=>t!==e).reduce((e,t)=>(e[t]=this.views[t],e),{}),this.add=(e,t)=>(this.views[e]=t,t),this.remove=e=>{void 0===e&&(new jd).remove.apply(this);const t=this.views[e];if(t)return delete this.views[e],t.remove(),t},this.removeAll=()=>(this.keys().forEach(e=>this.remove(e)),this),jd.apply(this,Array.prototype.slice.apply(arguments))},jm={includes:_g,difference:Eo,drop:lg,every:jo,filter:dg,find:sl,first:hg,forEach:pg,head:hg,indexOf:Po,initial:bg,invoke:kc,isEmpty:Zr,last:bs,lastIndexOf:qo,map:yg,max:xg,min:Ag,reduce:Tg,reduceRight:Ig,reject:Rg,rest:Dg,sample:qg,shuffle:Wg,size:am,some:Uo,sortBy:Xo,tail:cm,take:lm,toArray:Em,without:Am};Object.keys(jm).forEach(e=>{Cm.prototype[e]=function(){const t=Array.prototype.slice.call(arguments);return t.unshift(this.views),jm[e].apply(this,t)}}),Object.assign(Cm.prototype,jd.prototype),Cm.extend=jd.extend;const Tm=Cm.extend({listItems:"model",sortEvent:"change",sortImmediatelyOnAdd:!1,listSelector:".ordered-items",ItemView:void 0,subviewIndex:"id",initialize(){this.sortEventually=Tc(()=>this.sortAndPositionAllItems(),100),this.items=us(this,this.listItems),this.items.on("remove",this.removeView,this),this.items.on("reset",this.removeAll,this),this.items.on("add",(e,t)=>{this.sortImmediatelyOnAdd?this.sortAndPositionAllItems():this.sortEventually()}),this.sortEvent&&this.items.on(this.sortEvent,this.sortEventually,this)},createItemView(e){let t=this.get(e.get(this.subviewIndex));return t?(t.model=e,t.initialize()):(t=new this.ItemView({model:e}),this.add(e.get(this.subviewIndex),t)),t.render(),t},removeView(e){this.remove(e.get(this.subviewIndex))},sortAndPositionAllItems(){if(!this.items.length)return;this.items.sort();const e=this.el.querySelector(this.listSelector),t=document.createElement("div");e.parentNode.replaceChild(t,e),this.items.forEach(t=>{let n=this.get(t.get(this.subviewIndex));n||(n=this.createItemView(t)),e.insertAdjacentElement("beforeend",n.el)}),t.parentNode.replaceChild(e,t)}}),Om=Yc.env.utils,km=jd.extend({renderAvatar(e){const t=(e=e||this.el).querySelector("canvas.avatar, svg.avatar");if(null!==t&&this.model.vcard){const e={classes:t.getAttribute("class"),width:t.getAttribute("width"),height:t.getAttribute("height"),image_type:this.model.vcard.get("image_type"),image:this.model.vcard.get("image")};t.outerHTML=Om.getElementFromTemplateResult(bf(e)).outerHTML}}}),Nm=Cm.extend({_ensureElement(){if(this.el)this.setElement($r(this,"el"),!1);else{let e=Lc.root.querySelector("#conversejs");if(null===e){e=document.createElement("div"),e.setAttribute("id","conversejs"),Om.addClass("theme-".concat(qc.settings.get("theme")),e);const t=Lc.root.querySelector("body");t?t.appendChild(e):Lc.root.appendChild(e)}this.setElement(e,!1)}},initialize(){this.listenTo(this.model,"destroy",this.removeChat);const e=document.getElementById("conversejs-bg");e&&!e.innerHTML.trim()&&Wa(Ga(ng()),e),document.querySelector("body").classList.add("converse-".concat(qc.settings.get("view_mode"))),this.el.classList.add("converse-".concat(qc.settings.get("view_mode"))),qc.settings.get("singleton")&&this.el.classList.add("converse-singleton"),this.render()},render(){this._ensureElement(),Wa(Ga(cg()),this.el),this.row_el=this.el.querySelector(".row")},insertRowColumn(e){this.row_el.insertAdjacentElement("afterBegin",e)},removeChat(e){this.remove(e.get("id"))},closeAllChatBoxes(){return Promise.all(this.map(e=>e.close({name:"closeAllChatBoxes"})))}}); +const hv=function(e){this.views={},this.keys=()=>Object.keys(this.views),this.getAll=()=>this.views,this.get=e=>this.views[e],this.xget=e=>this.keys().filter(t=>t!==e).reduce((e,t)=>(e[t]=this.views[t],e),{}),this.add=(e,t)=>(this.views[e]=t,t),this.remove=e=>{void 0===e&&(new eh).remove.apply(this);const t=this.views[e];if(t)return delete this.views[e],t.remove(),t},this.removeAll=()=>(this.keys().forEach(e=>this.remove(e)),this),eh.apply(this,Array.prototype.slice.apply(arguments))},fv={includes:im,difference:ks,drop:Xg,every:Ms,filter:Yg,find:fl,first:Kg,forEach:em,head:Kg,indexOf:Hs,initial:om,invoke:Pc,isEmpty:oi,last:Co,lastIndexOf:Vs,map:sm,max:lm,min:dm,reduce:pm,reduceRight:_m,reject:ym,rest:wm,sample:jm,shuffle:Nm,size:Vm,some:Xs,sortBy:ta,tail:Jm,take:Xm,toArray:uv,without:dv};Object.keys(fv).forEach(e=>{hv.prototype[e]=function(){const t=Array.prototype.slice.call(arguments);return t.unshift(this.views),fv[e].apply(this,t)}}),Object.assign(hv.prototype,eh.prototype),hv.extend=eh.extend;const pv=hv.extend({listItems:"model",sortEvent:"change",sortImmediatelyOnAdd:!1,listSelector:".ordered-items",ItemView:void 0,subviewIndex:"id",initialize(){this.sortEventually=Rc(()=>this.sortAndPositionAllItems(),100),this.items=vo(this,this.listItems),this.items.on("remove",this.removeView,this),this.items.on("reset",this.removeAll,this),this.items.on("add",(e,t)=>{this.sortImmediatelyOnAdd?this.sortAndPositionAllItems():this.sortEventually()}),this.sortEvent&&this.items.on(this.sortEvent,this.sortEventually,this)},createItemView(e){let t=this.get(e.get(this.subviewIndex));return t?(t.model=e,t.initialize()):(t=new this.ItemView({model:e}),this.add(e.get(this.subviewIndex),t)),t.render(),t},removeView(e){this.remove(e.get(this.subviewIndex))},sortAndPositionAllItems(){if(!this.items.length)return;this.items.sort();const e=this.el.querySelector(this.listSelector),t=document.createElement("div");e.parentNode.replaceChild(t,e),this.items.forEach(t=>{let n=this.get(t.get(this.subviewIndex));n||(n=this.createItemView(t)),e.insertAdjacentElement("beforeend",n.el)}),t.parentNode.replaceChild(e,t)}}),gv=rl.env.utils;var mv=hv.extend({_ensureElement(){if(this.el)this.setElement(Qr(this,"el"),!1);else{let e=Uc.root.querySelector("#conversejs");if(null===e){e=document.createElement("div"),e.setAttribute("id","conversejs"),gv.addClass("theme-".concat(Vc.settings.get("theme")),e);const t=Uc.root.querySelector("body");t?t.appendChild(e):Uc.root.appendChild(e)}this.setElement(e,!1)}},initialize(){this.listenTo(this.model,"destroy",this.removeChat);const e=document.getElementById("conversejs-bg");e&&!e.innerHTML.trim()&&Ya(Za(Hg()),e),document.querySelector("body").classList.add("converse-".concat(Vc.settings.get("view_mode"))),this.el.classList.add("converse-".concat(Vc.settings.get("view_mode"))),Vc.settings.get("singleton")&&this.el.classList.add("converse-singleton"),this.render()},render(){this._ensureElement(),Ya(Za(Jg()),this.el),this.row_el=this.el.querySelector(".row")},insertRowColumn(e){this.row_el.insertAdjacentElement("afterBegin",e)},removeChat(e){this.remove(e.get("id"))},closeAllChatBoxes(){return Promise.all(this.map(e=>e.close({name:"closeAllChatBoxes"})))}}); /** * @module converse-chatboxviews * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */function Im(){Lc.chatboxviews=new Lc.ChatBoxViews({model:Lc.chatboxes}),qc.trigger("chatBoxViewsInitialized")}function Mm(e){"controlbox"!==e.model.get("id")&&(Om.safeSave(e.model,{hidden:!0}),e.hide())}function Rm(e){if(Lc.isUniView()&&(Object.values(Lc.chatboxviews.xget(e.model.get("id"))).filter(e=>!e.model.get("hidden")).forEach(Mm),e.model.get("hidden")))return new Promise(t=>{Om.safeSave(e.model,{hidden:!1},{success:t,failure:t})})}function Dm(){const e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh","".concat(e,"px"))}function Pm(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="flyout box-flyout">\n <div class="chat-head chat-head-chatbox row no-gutters"></div>\n <div class="chat-body">\n <div class="chat-content ','" aria-live="polite">\n <div class="chat-content__messages" @scroll=','></div>\n <div class="chat-content__help"></div>\n </div>\n <div class="bottom-panel">\n <div class="message-form-container">\n </div>\n </div>\n </div>\n']);return Pm=function(){return e},e}Yc.plugins.add("converse-chatboxviews",{dependencies:["converse-chatboxes","converse-vcard"],initialize(){qc.elements.register(),qc.promises.add(["chatBoxViewsInitialized"]),qc.settings.extend({animate:!0,theme:"default"}),Lc.ViewWithAvatar=km,Lc.ChatBoxViews=Nm,qc.listen.on("beforeShowingChatView",Rm),qc.listen.on("chatBoxesInitialized",Im),qc.listen.on("cleanup",()=>delete Lc.chatboxviews),qc.listen.on("clearSession",()=>Lc.chatboxviews.closeAllChatBoxes()),qc.listen.on("chatBoxViewsInitialized",Dm),window.addEventListener("resize",Dm),Object.assign(Yc,{insertInto(e){var t;const n=null===(t=Lc.chatboxviews)||void 0===t?void 0:t.el;if(n&&!e.contains(n))e.insertAdjacentElement("afterBegin",n),qc.chatviews.get().filter(e=>"controlbox"!==e.model.get("id")).forEach(e=>e.maintainScrollTop());else if(!n)throw new Error("Cannot insert non-existing #conversejs element into the DOM")}})}});var Lm=e=>Ga(Pm(),e.show_send_button?"chat-content-sendbutton":"",e.markScrolled);function zm(){const e=$m(['<p class="chat-head__desc">',"</p>"]);return zm=function(){return e},e}function Fm(){const e=$m(["<converse-dropdown .items=","></converse-dropdown>"]);return Fm=function(){return e},e}function Bm(){const e=$m(['<a href="','" target="_blank" rel="noopener" class="user">',"</a>"]);return Bm=function(){return e},e}function qm(){const e=$m(['<span class="mr-2">',"</span>"]);return qm=function(){return e},e}function Hm(){const e=$m(['<div class="chatbox-navback"><i class="fa fa-arrow-left"></i></div>']);return Hm=function(){return e},e}function Um(){const e=$m(['\n <div class="chatbox-title ','">\n <div class="chatbox-title--row">\n ',"\n ",'\n <div class="chatbox-title__text" title="','">\n ','\n </div>\n </div>\n <div class="chatbox-title__buttons row no-gutters">\n ',"\n ","\n </div>\n </div>\n ","\n "]);return Um=function(){return e},e}function $m(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Wm(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="new-msgs-indicator hidden">▼ ',' ▼</div>\n <form class="setNicknameButtonForm hidden">\n <input type="submit" class="btn btn-primary" name="join" value="Join"/>\n </form>\n <form class="sendXMPPMessage">\n <span class="chat-toolbar no-text-select"></span>\n <input type="text" placeholder="','" value="','" class="',' spoiler-hint"/>\n\n <div class="suggestion-box">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <textarea\n type="text"\n class="chat-textarea suggestion-box__input\n ',"\n ",'"\n placeholder="','">','</textarea>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </form>\n']);return Wm=function(){return e},e}function Vm(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n <converse-chat-toolbar\n .chatview=","\n .model=",'\n ?composing_spoiler="','"\n ?hidden_occupants="','"\n ?is_groupchat="','"\n ?show_call_button="','"\n ?show_emoji_button="','"\n ?show_occupants_toggle="','"\n ?show_send_button="','"\n ?show_spoiler_button="','"\n ?show_toolbar="','"\n message_limit="','"\n ></converse-chat-toolbar>\n ']);return Vm=function(){return e},e}function Gm(){const e=iv(["<p><label>",":</label> ","</p>"]);return Gm=function(){return e},e}function Jm(){const e=iv(["<p><label>",':</label> <a href="mailto:','">',"</a></p>"]);return Jm=function(){return e},e}function Xm(){const e=iv(["<p><label>",':</label> <a target="_blank" rel="noopener" href="','">',"</a></p>"]);return Xm=function(){return e},e}function Qm(){const e=iv(["<p><label>",":</label> ","</p>"]);return Qm=function(){return e},e}function Ym(){const e=iv(["<p><label>",":</label> ","</p>"]);return Ym=function(){return e},e}function Km(){const e=iv(['<div class="mb-4">',"</div>"]);return Km=function(){return e},e}function Zm(){const e=iv(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="user-details-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n ',"\n ","\n <p><label>",':</label> <a href="xmpp:','">',"</a></p>\n ","\n ","\n ","\n ","\n\n ",'\n </div>\n <div class="modal-footer">\n ','\n <button type="button" class="btn btn-info refresh-contact"><i class="fa fa-refresh"> </i>',"</button>\n ","\n\n </div>\n </div>\n </div>\n "]);return Zm=function(){return e},e}function ev(){const e=iv(['\n <button type="button" @click="','" class="btn btn-danger remove-contact">\n <i class="far fa-trash-alt"></i>',"\n </button>\n "]);return ev=function(){return e},e}function tv(){const e=iv(['<li class="list-group-item"> '," </li>"]);return tv=function(){return e},e}function nv(){const e=iv(['\n <hr/>\n <ul class="list-group fingerprints">\n <li class="list-group-item active">',"</li>\n ","\n </ul>\n "]);return nv=function(){return e},e}function rv(){const e=iv(['\n <li class="list-group-item">\n <form class="fingerprint-trust">\n <div class="btn-group btn-group-toggle">\n <label class="btn btn--small ','">\n <input type="radio" name="','" value="1" ?checked=',">",'\n </label>\n <label class="btn btn--small ','">\n <input type="radio" name="','" value="-1" ?checked=',">",'\n </label>\n </div>\n <code class="fingerprint">',"</code>\n </form>\n </li>\n "]);return rv=function(){return e},e}function iv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const sv=e=>{const t=dd("OMEMO Fingerprints"),n=dd("No OMEMO-enabled devices found"),r=e.view.devicelist.devices;return Ga(nv(),t,r.length?r.map(t=>(e=>{const t=dd("Trusted"),n=dd("Untrusted");return e.device.get("bundle")&&e.device.get("bundle").fingerprint?Ga(rv(),-1!==e.device.get("trusted")?"btn-primary active":"btn-secondary",e.device.get("id"),-1!==e.device.get("trusted"),t,-1!==e.device.get("trusted")?"btn-primary active":"btn-secondary",e.device.get("id"),-1===e.device.get("trusted"),n,e.utils.formatFingerprint(e.device.get("bundle").fingerprint)):""})(Object.assign({device:t},e))):Ga(tv(),n))};var ov=e=>{const t=dd("XMPP Address"),n=dd("Email"),r=dd("Full Name"),i=dd("Nickname"),s=dd("The User's Profile Image"),o=dd("Refresh"),a=dd("Role"),c=dd("URL"),l={alt_text:s,extra_classes:"mb-3",height:"120",width:"120"};return Ga(Zm(),e.display_name,Bd,e.image?Ga(Km(),bf(Object.assign(e,l))):"",e.fullname?Ga(Ym(),r,e.fullname):"",t,e.jid,e.jid,e.nickname?Ga(Qm(),i,e.nickname):"",e.url?Ga(Xm(),c,e.url,e.url):"",e.email?Ga(Jm(),n,e.email,e.email):"",e.role?Ga(Gm(),a,e.role):"",e._converse.pluggable.plugins["converse-omemo"].enabled(e._converse)?sv(e):"",Fd,o,e.allow_contact_removal&&e.is_roster_contact?(e=>{const t=dd("Remove as contact");return Ga(ev(),e.removeContact,t)})(e):"")};function av(){const e=dv(['<a href="#"\n class="dropdown-item ','"\n @click=','\n title="','"><i class="fa ','"></i>',"</a>"]);return av=function(){return e},e}function cv(){const e=dv(['<a href="#"\n class="chatbox-btn '," fa ",'"\n @click=','\n title="','"></a>']);return cv=function(){return e},e}function lv(){const e=dv(["\n <converse-chat-content\n .chatview=","\n .messages=","\n notifications=",">\n </converse-chat-content>"]);return lv=function(){return e},e}function uv(){const e=dv(["<converse-chat-help\n .model=","\n .messages=","\n ?hidden=",'\n type="info"\n chat_type="','"></converse-chat-help>']);return uv=function(){return e},e}function dv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} + */function vv(){Uc.chatboxviews=new Uc.ChatBoxViews({model:Uc.chatboxes}),Vc.trigger("chatBoxViewsInitialized")}function _v(){const e=.01*window.innerHeight;document.documentElement.style.setProperty("--vh","".concat(e,"px"))}function bv(){const e=wv(["<p>","</p>"]);return bv=function(){return e},e}function yv(){const e=wv(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header ','">\n <h5 class="modal-title">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n ',"\n </div>\n </div>\n </div>\n"]);return yv=function(){return e},e}function wv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}rl.plugins.add("converse-chatboxviews",{dependencies:["converse-chatboxes","converse-vcard"],initialize(){Vc.elements.register(),Vc.promises.add(["chatBoxViewsInitialized"]),Vc.settings.extend({animate:!0,theme:"default"}),Uc.ViewWithAvatar=eh.extend(qg),Uc.ChatBoxViews=mv,Vc.listen.on("chatBoxesInitialized",vv),Vc.listen.on("cleanup",()=>delete Uc.chatboxviews),Vc.listen.on("clearSession",()=>Uc.chatboxviews.closeAllChatBoxes()),Vc.listen.on("chatBoxViewsInitialized",_v),window.addEventListener("resize",_v),Object.assign(rl,{insertInto(e){var t;const n=null===(t=Uc.chatboxviews)||void 0===t?void 0:t.el;if(n&&!e.contains(n))e.insertAdjacentElement("afterBegin",n),Vc.chatviews.get().filter(e=>"controlbox"!==e.model.get("id")).forEach(e=>e.maintainScrollTop());else if(!n)throw new Error("Cannot insert non-existing #conversejs element into the DOM")}})}});var Sv=df.extend({id:"alert-modal",initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render)},toHTML(){return e=Object.assign({__:zd},this.model.toJSON()),Za(yv(),e.level,e.title,mf,e.messages.map(e=>Za(bv(),e)));var e}});function xv(){const e=Cv(["<p>","</p>"]);return xv=function(){return e},e}function Ev(){const e=Cv(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header ','">\n <h5 class="modal-title">','</h5>\n <button type="button" class="close" data-dismiss="modal" aria-label="Close">\n <span aria-hidden="true">×</span>\n </button>\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form converse-form--modal confirm" action="#">\n <div class="form-group">\n ',"\n </div>\n ",'\n <div class="form-group">\n <button type="submit" class="btn btn-primary">','</button>\n <input type="button" class="btn btn-secondary" data-dismiss="modal" value="','"/>\n </div>\n </form>\n </div>\n </div>\n </div>\n']);return Ev=function(){return e},e}function Av(){const e=Cv(['\n <div class="form-group">\n <label>\n ','\n <input type="text"\n name="','"\n class="',' form-control form-control--labeled"\n ?required="','"\n placeholder="','" />\n </label>\n </div>\n']);return Av=function(){return e},e}function Cv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var jv=e=>Za(Ev(),e.level||"",e.title,e.messages.map(e=>Za(xv(),e)),e.fields.map(e=>(e=>Za(Av(),e.label||"",e.name,e.challenge_failed?"error":"",e.required,e.placeholder))(e)),zd("OK"),zd("Cancel"));const Tv=rl.env.utils;var Ov=df.extend({id:"confirm-modal",events:{"submit .confirm":"onConfimation"},initialize(){this.confirmation=Tv.getResolveablePromise(),df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.el.addEventListener("closed.bs.modal",()=>this.confirmation.reject(),!1)},toHTML(){return jv(this.model.toJSON())},afterRender(){this.close_handler_registered||(this.el.addEventListener("closed.bs.modal",()=>{this.confirmation.isResolved||this.confirmation.reject()},!1),this.close_handler_registered=!0)},onConfimation(e){e.preventDefault();const t=new FormData(e.target),n=(this.model.get("fields")||[]).map(e=>{const n=t.get(e.name).trim();return e.value=n,e.challenge&&(e.challenge_failed=n!==e.challenge),e});if(n.filter(e=>e.challenge_failed).length)return this.model.set("fields",n),void this.model.trigger("change");this.confirmation.resolve(n),this.modal.hide()}}); +/** + * @module converse-modal + * @copyright The Converse.js contributors + * @license Mozilla Public License (MPLv2) + */rl.env.BootstrapModal=df;let kv=[];const Nv={modal:{show(e,t,n){const r=this.get(e.id)||this.create(e,t);return r.show(n),r},get:e=>kv.filter(t=>t.id==e).pop(),create(e,t){const n=new e(t);return kv.push(n),n},remove(e){kv=kv.filter(t=>t!==e),e.remove()},removeAll(){kv.forEach(e=>e.remove()),kv=[]}},async confirm(e,t=[],n=[]){"string"==typeof t&&(t=[t]);const r=new qo({title:e,messages:t,fields:n,type:"confirm"}),i=new Ov({model:r});let o;i.show();try{o=await i.confirmation}catch(e){o=!1}return i.remove(),o},async prompt(e,t=[],n=""){"string"==typeof t&&(t=[t]);const r=new qo({title:e,messages:t,fields:[{name:"reason",placeholder:n}],type:"prompt"}),i=new Ov({model:r});let o;i.show();try{var s;o=null===(s=(await i.confirmation).pop())||void 0===s?void 0:s.value}catch(e){o=!1}return i.remove(),o},alert(e,t,n){let r;"string"==typeof n&&(n=[n]),"error"===e?r="alert-danger":"info"===e?r="alert-info":"warn"===e&&(r="alert-warning");const i=new qo({title:t,messages:n,level:r,type:"alert"});Vc.modal.show(Sv,{model:i})}};function Iv(){const e=Uv(["<p><label>",":</label> ","</p>"]);return Iv=function(){return e},e}function Mv(){const e=Uv(["<p><label>",':</label> <a href="mailto:','">',"</a></p>"]);return Mv=function(){return e},e}function Rv(){const e=Uv(["<p><label>",':</label> <a target="_blank" rel="noopener" href="','">',"</a></p>"]);return Rv=function(){return e},e}function Dv(){const e=Uv(["<p><label>",":</label> ","</p>"]);return Dv=function(){return e},e}function Pv(){const e=Uv(["<p><label>",":</label> ","</p>"]);return Pv=function(){return e},e}function Lv(){const e=Uv(['<div class="mb-4">',"</div>"]);return Lv=function(){return e},e}function zv(){const e=Uv(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="user-details-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n ',"\n ","\n <p><label>",':</label> <a href="xmpp:','">',"</a></p>\n ","\n ","\n ","\n ","\n\n ",'\n </div>\n <div class="modal-footer">\n ','\n <button type="button" class="btn btn-info refresh-contact"><i class="fa fa-refresh"> </i>',"</button>\n ","\n\n </div>\n </div>\n </div>\n "]);return zv=function(){return e},e}function Fv(){const e=Uv(['\n <button type="button" @click="','" class="btn btn-danger remove-contact">\n <i class="far fa-trash-alt"></i>',"\n </button>\n "]);return Fv=function(){return e},e}function Bv(){const e=Uv(['<li class="list-group-item"> '," </li>"]);return Bv=function(){return e},e}function qv(){const e=Uv(['\n <hr/>\n <ul class="list-group fingerprints">\n <li class="list-group-item active">',"</li>\n ","\n </ul>\n "]);return qv=function(){return e},e}function Hv(){const e=Uv(['\n <li class="list-group-item">\n <form class="fingerprint-trust">\n <div class="btn-group btn-group-toggle">\n <label class="btn btn--small ','">\n <input type="radio" name="','" value="1" ?checked=',">",'\n </label>\n <label class="btn btn--small ','">\n <input type="radio" name="','" value="-1" ?checked=',">",'\n </label>\n </div>\n <code class="fingerprint">',"</code>\n </form>\n </li>\n "]);return Hv=function(){return e},e}function Uv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}rl.plugins.add("converse-modal",{initialize(){Vc.listen.on("disconnect",()=>{const e=document.querySelector("#converse-modals");e&&(e.innerHTML="")}),Vc.listen.on("clearSession",()=>Vc.modal.removeAll()),Object.assign(Uc.api,Nv)}});const $v=e=>{const t=zd("OMEMO Fingerprints"),n=zd("No OMEMO-enabled devices found"),r=e.view.devicelist.devices;return Za(qv(),t,r.length?r.map(t=>(e=>{const t=zd("Trusted"),n=zd("Untrusted");return e.device.get("bundle")&&e.device.get("bundle").fingerprint?Za(Hv(),-1!==e.device.get("trusted")?"btn-primary active":"btn-secondary",e.device.get("id"),-1!==e.device.get("trusted"),t,-1!==e.device.get("trusted")?"btn-primary active":"btn-secondary",e.device.get("id"),-1===e.device.get("trusted"),n,e.utils.formatFingerprint(e.device.get("bundle").fingerprint)):""})(Object.assign({device:t},e))):Za(Bv(),n))};var Wv=e=>{const t=zd("XMPP Address"),n=zd("Email"),r=zd("Full Name"),i=zd("Nickname"),o=zd("The User's Profile Image"),s=zd("Refresh"),a=zd("Role"),c=zd("URL"),l={alt_text:o,extra_classes:"mb-3",height:"120",width:"120"};return Za(zv(),e.display_name,mf,e.image?Za(Lv(),ip(Object.assign(e,l))):"",e.fullname?Za(Pv(),r,e.fullname):"",t,e.jid,e.jid,e.nickname?Za(Dv(),i,e.nickname):"",e.url?Za(Rv(),c,e.url,e.url):"",e.email?Za(Mv(),n,e.email,e.email):"",e.role?Za(Iv(),a,e.role):"",e._converse.pluggable.plugins["converse-omemo"].enabled(e._converse)?$v(e):"",gf,s,e.allow_contact_removal&&e.is_roster_contact?(e=>{const t=zd("Remove as contact");return Za(Fv(),e.removeContact,t)})(e):"")};const Gv=rl.env.utils;const Vv=df.extend({id:"user-details-modal",persistent:!0,events:{"click button.refresh-contact":"refreshContact","click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){df.prototype.initialize.apply(this,arguments),this.model.rosterContactAdded.then(()=>this.registerContactEventHandlers()),this.listenTo(this.model,"change",this.render),this.registerContactEventHandlers(),Vc.trigger("userDetailsModalInitialized",this.model)},toHTML(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{};return Wv(Object.assign(this.model.toJSON(),n,{_converse:Uc,allow_contact_removal:Vc.settings.get("allow_contact_removal"),display_name:this.model.getDisplayName(),is_roster_contact:void 0!==this.model.contact,removeContact:e=>this.removeContact(e),view:this,utils:Gv}))},registerContactEventHandlers(){void 0!==this.model.contact&&(this.listenTo(this.model.contact,"change",this.render),this.listenTo(this.model.contact.vcard,"change",this.render),this.model.contact.on("destroy",()=>{delete this.model.contact,this.render()}))},async refreshContact(e){e&&e.preventDefault&&e.preventDefault();const t=this.el.querySelector(".fa-refresh");Gv.addClass("fa-spin",t);try{await Vc.vcard.update(this.model.contact.vcard,!0)}catch(e){zn.fatal(e),this.alert(zd("Sorry, something went wrong while trying to refresh"),"danger")}Gv.removeClass("fa-spin",t)},removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),!Vc.settings.get("allow_contact_removal"))return;!0===confirm(zd("Are you sure you want to remove this contact?"))&&(setTimeout(()=>{var e;(e=this.model.contact).removeFromRoster(()=>e.destroy(),t=>{t&&zn.error(t),Vc.alert("error",zd("Error"),[zd("Sorry, there was an error while trying to remove %1$s as a contact.",e.getDisplayName())])})},1),this.modal.hide())}});Uc.UserDetailsModal=Vv;var Jv=Vv;function Xv(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="flyout box-flyout">\n <div class="chat-head chat-head-chatbox row no-gutters"></div>\n <div class="chat-body">\n <div class="chat-content ','" aria-live="polite">\n <div class="chat-content__messages" @scroll=','></div>\n <div class="chat-content__help"></div>\n </div>\n <div class="bottom-panel">\n <div class="message-form-container">\n </div>\n </div>\n </div>\n']);return Xv=function(){return e},e}var Qv=e=>Za(Xv(),e.show_send_button?"chat-content-sendbutton":"",e.markScrolled);function Yv(){const e=i_(['<p class="chat-head__desc">',"</p>"]);return Yv=function(){return e},e}function Kv(){const e=i_(["<converse-dropdown .items=","></converse-dropdown>"]);return Kv=function(){return e},e}function Zv(){const e=i_(['<a class="user show-msg-author-modal" @click=',">","</a>"]);return Zv=function(){return e},e}function e_(){const e=i_(['<a class="show-msg-author-modal" @click=',">","</a>"]);return e_=function(){return e},e}function t_(){const e=i_(['<div class="chatbox-navback"><i class="fa fa-arrow-left"></i></div>']);return t_=function(){return e},e}function n_(){const e=i_(['\n <div class="chatbox-title ','">\n <div class="chatbox-title--row">\n ',"\n ",'\n <div class="chatbox-title__text" title="','">\n ','\n </div>\n </div>\n <div class="chatbox-title__buttons row no-gutters">\n ',"\n ","\n </div>\n </div>\n ","\n "]);return n_=function(){return e},e}function r_(){const e=i_(['<span class="mr-2">',"</span>"]);return r_=function(){return e},e}function i_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function o_(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="new-msgs-indicator hidden">▼ ',' ▼</div>\n <form class="setNicknameButtonForm hidden">\n <input type="submit" class="btn btn-primary" name="join" value="Join"/>\n </form>\n <form class="sendXMPPMessage">\n <span class="chat-toolbar no-text-select"></span>\n <input type="text" placeholder="','" value="','" class="',' spoiler-hint"/>\n\n <div class="suggestion-box">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <textarea\n type="text"\n class="chat-textarea suggestion-box__input\n ',"\n ",'"\n placeholder="','">','</textarea>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </form>\n']);return o_=function(){return e},e}function s_(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(["\n <converse-chat-toolbar\n .chatview=","\n .model=",'\n ?composing_spoiler="','"\n ?hidden_occupants="','"\n ?is_groupchat="','"\n ?show_call_button="','"\n ?show_emoji_button="','"\n ?show_occupants_toggle="','"\n ?show_send_button="','"\n ?show_spoiler_button="','"\n ?show_toolbar="','"\n message_limit="','"\n ></converse-chat-toolbar>\n ']);return s_=function(){return e},e}function a_(){const e=d_(['\n <a href="#" class="dropdown-item ','" @click=',' title="','"\n ><i class="fa ','"></i>',"</a\n >\n "]);return a_=function(){return e},e}function c_(){const e=d_(['\n <a\n href="#"\n class="chatbox-btn '," fa ",'"\n @click=','\n title="','"\n ></a>\n ']);return c_=function(){return e},e}function l_(){const e=d_(["\n <converse-chat-content .chatview="," .messages="," notifications=",">\n </converse-chat-content>\n "]);return l_=function(){return e},e}function u_(){const e=d_(["\n <converse-chat-help\n .model=","\n .messages=","\n ?hidden=",'\n type="info"\n chat_type="','"\n ></converse-chat-help>\n ']);return u_=function(){return e},e}function d_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const h_=rl.env.utils,{dayjs:f_}=rl.env;var p_=eh.extend({length:200,className:"chatbox hidden",is_chatroom:!1,events:{"click .chatbox-navback":"showControlBox","click .new-msgs-indicator":"viewUnreadMessages","click .send-button":"onFormSubmitted","click .toggle-clear":"clearMessages","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","paste .chat-textarea":"onPaste"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:status",this.onStatusMessageChanged),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"vcard:change",this.renderHeading),this.model.contact&&this.listenTo(this.model.contact,"destroy",this.renderHeading),this.model.rosterContactAdded&&this.model.rosterContactAdded.then(()=>{this.listenTo(this.model.contact,"change:nickname",this.renderHeading),this.renderHeading()}),this.listenTo(this.model.presence,"change:show",this.onPresenceChanged),this.render(),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),await this.model.messages.fetched,this.insertIntoDOM(),this.model.maybeShow(),this.scrollDown(),Vc.trigger("chatBoxViewInitialized",this)},initDebounced(){this.markScrolled=Rc(this._markScrolled,100),this.debouncedScrollDown=Rc(this.scrollDown,100),Vc.settings.get("debounced_content_rendering")?(this.renderChatHistory=Rc(()=>this.renderChatContent(!1),100),this.renderNotifications=Rc(()=>this.renderChatContent(!0),100)):(this.renderChatHistory=()=>this.renderChatContent(!1),this.renderNotifications=()=>this.renderChatContent(!0))},render(){const e=Qv(Object.assign(this.model.toJSON(),{markScrolled:e=>this.markScrolled(e)}));return Ya(e,this.el),this.content=this.el.querySelector(".chat-content"),this.notifications=this.el.querySelector(".chat-content__notifications"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderChatContent(),this.renderMessageForm(),this.renderHeading(),this},onMessageAdded(e){this.renderChatHistory(),h_.isNewMessage(e)&&("me"===e.get("sender")?this.model.set("scrolled",!1):this.model.get("scrolled",!0)&&this.showNewMessagesIndicator())},getNotifications(){return this.model.notifications.get("chat_state")===Uc.COMPOSING?zd("%1$s is typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Uc.PAUSED?zd("%1$s has stopped typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Uc.GONE?zd("%1$s has gone away",this.model.getDisplayName()):""},getHelpMessages:()=>["<strong>/clear</strong>: ".concat(zd("Remove messages")),"<strong>/close</strong>: ".concat(zd("Close this chat")),"<strong>/me</strong>: ".concat(zd("Write in the third person")),"<strong>/help</strong>: ".concat(zd("Show this menu"))],renderHelpMessages(){Ya(Za(u_(),this.model,this.getHelpMessages(),!this.model.get("show_help_messages"),this.model.get("type")),this.help_container)},renderChatContent(e=!1){this.tpl_chat_content||(this.tpl_chat_content=e=>Za(l_(),this,e.messages,e.notifications));const t=this.model.messages.models,n=e?t:Array.from(t);Ya(this.tpl_chat_content({messages:n,notifications:this.getNotifications()}),this.msgs_container)},renderToolbar(){if(!Vc.settings.get("show_toolbar"))return this;const e=Object.assign({model:this.model,chatview:this},this.model.toJSON(),this.getToolbarOptions());return Ya((e=>{const t=Vc.settings.get("message_limit"),n=Vc.settings.get("visible_toolbar_buttons").call,r=Vc.settings.get("visible_toolbar_buttons").emoji,i=Vc.settings.get("show_send_button"),o=Vc.settings.get("visible_toolbar_buttons").spoiler,s=Vc.settings.get("show_toolbar");return Za(s_(),e.chatview,e.model,e.composing_spoiler,e.hidden_occupants,e.is_groupchat,n,r,e.show_occupants_toggle,i,o,s,t)})(e),this.el.querySelector(".chat-toolbar")),Vc.trigger("renderToolbar",this),this},renderMessageForm(){var e,t;const n=this.el.querySelector(".message-form-container");var r;Ya((r=Object.assign(this.model.toJSON(),{hint_value:null===(e=this.el.querySelector(".spoiler-hint"))||void 0===e?void 0:e.value,label_message:this.model.get("composing_spoiler")?zd("Hidden message"):zd("Message"),label_spoiler_hint:zd("Optional hint"),message_value:null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value,show_send_button:Vc.settings.get("show_send_button"),show_toolbar:Vc.settings.get("show_toolbar"),unread_msgs:zd("You have unread messages")}),Za(o_(),r.unread_msgs,r.label_spoiler_hint||"",r.hint_value||"",r.composing_spoiler?"":"hidden",r.show_send_button?"chat-textarea-send-button":"",r.composing_spoile?"spoiler":"",r.label_message,r.message_value||"")),n),this.el.addEventListener("focusin",e=>this.emitFocused(e)),this.el.addEventListener("focusout",e=>this.emitBlurred(e)),this.renderToolbar()},showControlBox(){var e;null===(e=Uc.chatboxviews.get("controlbox"))||void 0===e||e.show(),this.hide()},showUserDetailsModal(e){e.preventDefault(),Vc.modal.show(Jv,{model:this.model},e)},onDragOver(e){e.preventDefault()},onDrop(e){0!=e.dataTransfer.files.length&&(e.preventDefault(),this.model.sendFiles(e.dataTransfer.files))},async renderHeading(){const e=await this.generateHeadingTemplate();Ya(e,this.el.querySelector(".chat-head-chatbox"))},async getHeadingStandaloneButton(e){const t=await e;return Za(c_(),t.a_class,t.icon_class,t.handler,t.i18n_title)},async getHeadingDropdownItem(e){const t=await e;return Za(a_(),t.a_class,t.handler,t.i18n_title,t.icon_class,t.i18n_text)},async generateHeadingTemplate(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{},r=zd("The User's Profile Image"),i=Object.assign({alt_text:r,extra_classes:"",height:40,width:40},n),o=await this.getHeadingButtons(),s=o.filter(e=>e.standalone),a=o.filter(e=>!e.standalone);return(e=>{const t=Za(r_(),op(e.avatar_data));return Za(n_(),e.status?"":"chatbox-title--no-desc",Uc.api.settings.get("singleton")?"":Za(t_()),e.type!==Uc.HEADLINES_TYPE?Za(e_(),e.showUserDetailsModal,t):"",e.jid,e.type!==Uc.HEADLINES_TYPE?Za(Zv(),e.showUserDetailsModal,e.display_name):e.display_name,e.dropdown_btns.length?Za(Kv(),e.dropdown_btns):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>Qh(e,"")))(e):"",e.status?Za(Yv(),e.status):"")})(Object.assign(this.model.toJSON(),{avatar_data:i,display_name:this.model.getDisplayName(),dropdown_btns:a.map(e=>this.getHeadingDropdownItem(e)),showUserDetailsModal:e=>this.showUserDetailsModal(e),standalone_btns:s.map(e=>this.getHeadingStandaloneButton(e))}))},getHeadingButtons(){const e=[{a_class:"show-user-details-modal",handler:e=>this.showUserDetailsModal(e),i18n_text:zd("Details"),i18n_title:zd("See more information about this person"),icon_class:"fa-id-card",name:"details",standalone:"overlayed"===Vc.settings.get("view_mode")}];return Vc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:zd("Close"),i18n_title:zd("Close and end this conversation"),icon_class:"fa-times",name:"close",standalone:"overlayed"===Vc.settings.get("view_mode")}),Uc.api.hook("getHeadingButtons",this,e)},getToolbarOptions:()=>({}),maybeScrollDown(e){!(!(null==e?void 0:e.get("is_archived"))&&"me"===(null==e?void 0:e.get("sender")))&&this.model.get("scrolled")||this.model.isHidden()||this.debouncedScrollDown()},scrollDown(e){var t,n;if(null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.get("scrolled")&&h_.safeSave(this.model,{scrolled:!1,scrollTop:null}),this.msgs_container.scrollTo){const e=this.msgs_container.scrollTop?"smooth":"auto";this.msgs_container.scrollTo({top:this.msgs_container.scrollHeight,behavior:e})}else this.msgs_container.scrollTop=this.msgs_container.scrollHeight;this.onScrolledDown()},maintainScrollTop(){const e=this.model.get("scrollTop");e?this.msgs_container.scrollTop=e:this.scrollDown()},insertIntoDOM(){return Uc.chatboxviews.insertRowColumn(this.el),Vc.trigger("chatBoxInsertedIntoDOM",this),this},addSpinner(e=!1){if(null===this.el.querySelector(".spinner")){const t=h_.getElementFromTemplateResult(fp());e?(this.content.insertAdjacentElement("beforeend",t),this.scrollDown()):this.content.insertAdjacentElement("afterbegin",t)}},clearSpinner(){this.content.querySelectorAll(".spinner").forEach(h_.removeElement)},onStatusMessageChanged(e){this.renderHeading(),Vc.trigger("contactStatusMessageChanged",{contact:e.attributes,message:e.get("status")})},markFollowups(e){const t=e.getAttribute("data-from"),n=e.previousElementSibling,r=f_(e.getAttribute("data-isodate")),i=e.nextElementSibling;h_.hasClass("chat-msg--action",e)||h_.hasClass("chat-msg--action",n)||h_.hasClass("chat-info",e)||h_.hasClass("chat-info",n)||n.getAttribute("data-from")!==t||!r.isBefore(f_(n.getAttribute("data-isodate")).add(10,"minutes"))||e.getAttribute("data-encrypted")!==n.getAttribute("data-encrypted")||h_.addClass("chat-msg--followup",e),i&&(!h_.hasClass("chat-msg--action",e)&&h_.hasClass("chat-info",e)&&i.getAttribute("data-from")===t&&f_(i.getAttribute("data-isodate")).isBefore(r.add(10,"minutes"))&&e.getAttribute("data-encrypted")===i.getAttribute("data-encrypted")?h_.addClass("chat-msg--followup",i):h_.removeClass("chat-msg--followup",i))},parseMessageForCommands(e){const t=e.replace(/^\s*/,"").match(/^\/(.*)\s*$/);if(t){if("clear"===t[1])return this.clearMessages(),!0;if("close"===t[1])return this.close(),!0;if("help"===t[1])return this.model.set({show_help_messages:!0}),!0}},async onFormSubmitted(e){var t;e.preventDefault();const n=this.el.querySelector(".chat-textarea"),r=n.value.trim();if(Vc.settings.get("message_limit")&&r.length>Vc.settings.get("message_limit")||!r.replace(/\s/g,"").length)return;if(!Uc.connection.authenticated){const e=zd("Sorry, the connection has been lost, and your message could not be sent");return Vc.alert("error",zd("Error"),e),void Vc.connection.reconnect()}let i,o={};this.model.get("composing_spoiler")&&(o=this.el.querySelector("form.sendXMPPMessage input.spoiler-hint"),i=o.value),h_.addClass("disabled",n),n.setAttribute("disabled","disabled"),null===(t=this.el.querySelector("converse-emoji-dropdown"))||void 0===t||t.hideMenu();const s=this.parseMessageForCommands(r),a=s?null:await this.model.sendMessage(r,i);(s||a)&&(o.value="",n.value="",h_.removeClass("correcting",n),n.style.height="auto",this.updateCharCounter(n.value)),a&&Vc.trigger("messageSend",a),"overlayed"===Vc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display="none"),n.removeAttribute("disabled"),h_.removeClass("disabled",n),"overlayed"===Vc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display=""),this.model.setChatState(Uc.ACTIVE,{silent:!0}),n.focus()},updateCharCounter(e){if(Vc.settings.get("message_limit")){const t=this.el.querySelector(".message-limit"),n=Vc.settings.get("message_limit")-e.length;t.textContent=n,n<1?h_.addClass("error",t):h_.removeClass("error",t)}},onPaste(e){if(0!==e.clipboardData.files.length)return e.preventDefault(),void this.model.sendFiles(Array.from(e.clipboardData.files));this.updateCharCounter(e.clipboardData.getData("text/plain"))},autocompleteInPicker(e,t){const n=this.el.querySelector("converse-emoji-dropdown"),r=this.el.querySelector("converse-emoji-picker");if(r&&n)return r.model.set({ac_position:e.selectionStart,autocompleting:t,query:t}),n.showMenu(),!0},onEmojiReceivedFromPicker(e){const t=this.el.querySelector("converse-emoji-picker").model,n=t.get("autocompleting"),r=t.get("ac_position");this.insertIntoTextArea(e,n,!1,r)},onKeyUp(e){this.updateCharCounter(e.target.value)},onKeyDown(e){if(!e.ctrlKey){if(!e.shiftKey&&!e.altKey&&!e.metaKey)if(e.keyCode===rl.keycodes.TAB){const t=h_.getCurrentWord(e.target,null,/(:.*?:)/g);t.startsWith(":")&&this.autocompleteInPicker(e.target,t)&&(e.preventDefault(),e.stopPropagation())}else{if(e.keyCode===rl.keycodes.FORWARD_SLASH)return;if(e.keyCode===rl.keycodes.ESCAPE)return this.onEscapePressed(e);if(e.keyCode===rl.keycodes.ENTER)return this.onEnterPressed(e);if(e.keyCode!==rl.keycodes.UP_ARROW||e.target.selectionEnd){if(e.keyCode===rl.keycodes.DOWN_ARROW&&e.target.selectionEnd===e.target.value.length&&h_.hasClass("correcting",this.el.querySelector(".chat-textarea")))return this.editLaterMessage()}else{const e=this.el.querySelector(".chat-textarea");if(!e.value||h_.hasClass("correcting",e))return this.editEarlierMessage()}}[rl.keycodes.SHIFT,rl.keycodes.META,rl.keycodes.META_RIGHT,rl.keycodes.ESCAPE,rl.keycodes.ALT].includes(e.keyCode)||this.model.get("chat_state")!==Uc.COMPOSING&&this.model.setChatState(Uc.COMPOSING)}},getOwnMessages(){return this.model.messages.filter({sender:"me"})},onEnterPressed(e){return this.onFormSubmitted(e)},onEscapePressed(e){e.preventDefault();const t=this.model.messages.findLastIndex("correcting"),n=t>=0?this.model.messages.at(t):null;n&&n.save("correcting",!1),this.insertIntoTextArea("",!0,!1)},async onMessageRetractButtonClicked(e){if("me"!==e.get("sender"))return zn.error("onMessageRetractButtonClicked called for someone else's message!");const t=zd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere."),n=[zd("Are you sure you want to retract this message?")];Vc.settings.get("show_retraction_warning")&&(n[1]=t),await Vc.confirm(zd("Confirm"),n)&&this.model.retractOwnMessage(e)},onMessageEditButtonClicked(e){var t;const n=this.model.messages.findWhere("correcting"),r=null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value;(!r||n&&n.get("message")===r||confirm(zd("You have an unsent message which will be lost if you continue. Are you sure?")))&&(n!==e?(null==n||n.save("correcting",!1),e.save("correcting",!0),this.insertIntoTextArea(h_.prefixMentions(e),!0,!0)):(e.save("correcting",!1),this.insertIntoTextArea("",!0,!1)))},editLaterMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t<this.model.messages.length-1;){t+=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e?(this.insertIntoTextArea(h_.prefixMentions(e),!0,!0),e.save("correcting",!0)):this.insertIntoTextArea("",!0,!1)},editEarlierMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t>0;){t-=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e=e||this.getOwnMessages().reverse().find(e=>e.get("editable")),e&&(this.insertIntoTextArea(h_.prefixMentions(e),!0,!0),e.save("correcting",!0))},inputChanged(e){const t=e.target.scrollHeight+"px";e.target.style.height!=t&&(e.target.style.height="auto",e.target.style.height=t)},async clearMessages(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(zd("Are you sure you want to clear the messages from this conversation?"))&&await this.model.clearMessages(),this},insertIntoTextArea(e,t=!1,n=!1,r){const i=this.el.querySelector(".chat-textarea");if(n?h_.addClass("correcting",i):h_.removeClass("correcting",i),t)i.value=r&&"string"==typeof t?i.value.replace(new RegExp(t,"g"),(n,i)=>i==r-t.length?e+" ":n):e;else{let t=i.value;t&&" "!==t[t.length-1]&&(t+=" "),i.value=t+e+" "}this.updateCharCounter(i.value),h_.placeCaretAtEnd(i)},onPresenceChanged(e){const t=e.get("show"),n=this.model.getDisplayName();let r;h_.isVisible(this.el)&&("offline"===t?r=zd("%1$s has gone offline",n):"away"===t?r=zd("%1$s has gone away",n):"dnd"===t?r=zd("%1$s is busy",n):"online"===t&&(r=zd("%1$s is online",n)),r&&this.model.createMessage({message:r,type:"info"}))},async close(e){return e&&e.preventDefault&&e.preventDefault(),Uc.router.history.getFragment()==="converse/chat?jid="+this.model.get("jid")&&Uc.router.navigate(""),Vc.connection.connected()&&(this.model.setChatState(Uc.INACTIVE),this.model.sendChatState()),await this.model.close(),this.remove(),Vc.trigger("chatBoxClosed",this),this},emitBlurred(e){this.el.contains(document.activeElement)||this.el.contains(e.relatedTarget)||Vc.trigger("chatBoxBlurred",this,e)},emitFocused(e){this.el.contains(e.relatedTarget)||Vc.trigger("chatBoxFocused",this,e)},focus(){const e=this.el.getElementsByClassName("chat-textarea")[0];return e&&document.activeElement!==e&&e.focus(),this},maybeFocus(){Vc.settings.get("auto_focus")&&this.focus()},hide(){return this.el.classList.add("hidden"),this},afterShown(){this.model.clearUnreadMsgCounter(),this.model.setChatState(Uc.ACTIVE),this.scrollDown(),this.maybeFocus()},show(){this.model.get("hidden")?zn.debug("Not showing chat ".concat(this.model.get("jid")," because it's set as hidden")):h_.isVisible(this.el)?this.maybeFocus():Vc.settings.get("animate")?h_.fadeIn(this.el,()=>this.afterShown()):(h_.showElement(this.el),this.afterShown())},showNewMessagesIndicator(){h_.showElement(this.el.querySelector(".new-msgs-indicator"))},hideNewMessagesIndicator(){const e=this.el.querySelector(".new-msgs-indicator");null!==e&&e.classList.add("hidden")},_markScrolled:function(e){let t=!0,n=null;this.msgs_container.scrollTop+this.msgs_container.clientHeight>=this.msgs_container.scrollHeight-62?(t=!1,this.onScrolledDown()):0===this.msgs_container.scrollTop?Vc.trigger("chatBoxScrolledUp",this):n=e.target.scrollTop,h_.safeSave(this.model,{scrolled:t,scrollTop:n})},viewUnreadMessages(){this.model.save({scrolled:!1,scrollTop:null}),this.scrollDown()},onScrolledDown(){if(this.hideNewMessagesIndicator(),!this.model.isHidden()){this.model.clearUnreadMsgCounter();const e=window.location.hash;e&&this.model.messages.get(e.slice(1))&&Uc.router.history.navigate()}Vc.trigger("chatBoxScrolledDown",{chatbox:this.model})},onWindowStateChanged(e){"visible"===e?this.model.isHidden()||this.model.get("num_unread",0)&&this.model.clearUnreadMsgCounter():"hidden"===e&&(this.model.setChatState(Uc.INACTIVE,{silent:!0}),this.model.sendChatState())}}),g_={chatviews:{get:e=>void 0===e?Object.values(Uc.chatboxviews.getAll()):"string"==typeof e?Uc.chatboxviews.get(e):e.map(e=>Uc.chatboxviews.get(e))}}; /** * @module converse-chatview * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{Strophe:hv,dayjs:fv}=Yc.env,pv=Yc.env.utils,gv=jd.extend({length:200,className:"chatbox hidden",is_chatroom:!1,events:{"click .chatbox-navback":"showControlBox","click .new-msgs-indicator":"viewUnreadMessages","click .send-button":"onFormSubmitted","click .toggle-clear":"clearMessages","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","paste .chat-textarea":"onPaste"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:status",this.onStatusMessageChanged),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"vcard:change",this.renderHeading),this.model.contact&&this.listenTo(this.model.contact,"destroy",this.renderHeading),this.model.rosterContactAdded&&this.model.rosterContactAdded.then(()=>{this.listenTo(this.model.contact,"change:nickname",this.renderHeading),this.renderHeading()}),this.listenTo(this.model.presence,"change:show",this.onPresenceChanged),this.render(),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),await this.updateAfterMessagesFetched(),this.model.maybeShow(),qc.trigger("chatBoxViewInitialized",this)},initDebounced(){this.markScrolled=Tc(this._markScrolled,100),this.debouncedScrollDown=Tc(this.scrollDown,100),qc.settings.get("debounced_content_rendering")?(this.renderChatHistory=Tc(()=>this.renderChatContent(!1),100),this.renderNotifications=Tc(()=>this.renderChatContent(!0),100)):(this.renderChatHistory=()=>this.renderChatContent(!1),this.renderNotifications=()=>this.renderChatContent(!0))},render(){const e=Lm(Object.assign(this.model.toJSON(),{markScrolled:e=>this.markScrolled(e)}));return Wa(e,this.el),this.content=this.el.querySelector(".chat-content"),this.notifications=this.el.querySelector(".chat-content__notifications"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderChatContent(),this.renderMessageForm(),this.renderHeading(),this},onMessageAdded(e){this.renderChatHistory(),pv.isNewMessage(e)&&("me"===e.get("sender")?this.model.set("scrolled",!1):this.model.get("scrolled",!0)&&this.showNewMessagesIndicator())},getNotifications(){return this.model.notifications.get("chat_state")===Lc.COMPOSING?dd("%1$s is typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.PAUSED?dd("%1$s has stopped typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.GONE?dd("%1$s has gone away",this.model.getDisplayName()):""},getHelpMessages:()=>["<strong>/clear</strong>: ".concat(dd("Remove messages")),"<strong>/close</strong>: ".concat(dd("Close this chat")),"<strong>/me</strong>: ".concat(dd("Write in the third person")),"<strong>/help</strong>: ".concat(dd("Show this menu"))],renderHelpMessages(){Wa(Ga(uv(),this.model,this.getHelpMessages(),!this.model.get("show_help_messages"),this.model.get("type")),this.help_container)},renderChatContent(e=!1){this.tpl_chat_content||(this.tpl_chat_content=e=>Ga(lv(),this,e.messages,e.notifications));const t=this.model.messages.models,n=e?t:Array.from(t);Wa(this.tpl_chat_content({messages:n,notifications:this.getNotifications()}),this.msgs_container)},renderToolbar(){if(!qc.settings.get("show_toolbar"))return this;const e=Object.assign({model:this.model,chatview:this},this.model.toJSON(),this.getToolbarOptions());return Wa((e=>{const t=qc.settings.get("message_limit"),n=qc.settings.get("visible_toolbar_buttons").call,r=qc.settings.get("visible_toolbar_buttons").emoji,i=qc.settings.get("show_send_button"),s=qc.settings.get("visible_toolbar_buttons").spoiler,o=qc.settings.get("show_toolbar");return Ga(Vm(),e.chatview,e.model,e.composing_spoiler,e.hidden_occupants,e.is_groupchat,n,r,e.show_occupants_toggle,i,s,o,t)})(e),this.el.querySelector(".chat-toolbar")),qc.trigger("renderToolbar",this),this},renderMessageForm(){var e,t;const n=this.el.querySelector(".message-form-container");var r;Wa((r=Object.assign(this.model.toJSON(),{hint_value:null===(e=this.el.querySelector(".spoiler-hint"))||void 0===e?void 0:e.value,label_message:this.model.get("composing_spoiler")?dd("Hidden message"):dd("Message"),label_spoiler_hint:dd("Optional hint"),message_value:null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value,show_send_button:qc.settings.get("show_send_button"),show_toolbar:qc.settings.get("show_toolbar"),unread_msgs:dd("You have unread messages")}),Ga(Wm(),r.unread_msgs,r.label_spoiler_hint||"",r.hint_value||"",r.composing_spoiler?"":"hidden",r.show_send_button?"chat-textarea-send-button":"",r.composing_spoile?"spoiler":"",r.label_message,r.message_value||"")),n),this.el.addEventListener("focusin",e=>this.emitFocused(e)),this.el.addEventListener("focusout",e=>this.emitBlurred(e)),this.renderToolbar()},showControlBox(){Lc.chatboxviews.get("controlbox").show(),this.hide()},showUserDetailsModal(e){e.preventDefault(),void 0===this.user_details_modal&&(this.user_details_modal=new Lc.UserDetailsModal({model:this.model})),this.user_details_modal.show(e)},onDragOver(e){e.preventDefault()},onDrop(e){0!=e.dataTransfer.files.length&&(e.preventDefault(),this.model.sendFiles(e.dataTransfer.files))},async renderHeading(){const e=await this.generateHeadingTemplate();Wa(e,this.el.querySelector(".chat-head-chatbox"))},async getHeadingStandaloneButton(e){const t=await e;return Ga(cv(),t.a_class,t.icon_class,t.handler,t.i18n_title)},async getHeadingDropdownItem(e){const t=await e;return Ga(av(),t.a_class,t.handler,t.i18n_title,t.icon_class,t.i18n_text)},async generateHeadingTemplate(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{},r=await this.getHeadingButtons(),i=r.filter(e=>e.standalone),s=r.filter(e=>!e.standalone);return(e=>{const t={alt_text:dd("The User's Profile Image"),extra_classes:"",height:40,width:40};return Ga(Um(),e.status?"":"chatbox-title--no-desc",e._converse.api.settings.get("singleton")?"":Ga(Hm()),e.type!==e._converse.HEADLINES_TYPE?Ga(qm(),bf(Object.assign({},e,t))):"",e.jid,e.url?Ga(Bm(),e.url,e.display_name):e.display_name,e.dropdown_btns.length?Ga(Fm(),e.dropdown_btns):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>oh(e,"")))(e):"",e.status?Ga(zm(),e.status):"")})(Object.assign(n,this.model.toJSON(),{_converse:Lc,dropdown_btns:s.map(e=>this.getHeadingDropdownItem(e)),standalone_btns:i.map(e=>this.getHeadingStandaloneButton(e)),display_name:this.model.getDisplayName()}))},getHeadingButtons(){const e=[{a_class:"show-user-details-modal",handler:e=>this.showUserDetailsModal(e),i18n_text:dd("Details"),i18n_title:dd("See more information about this person"),icon_class:"fa-id-card",name:"details",standalone:"overlayed"===qc.settings.get("view_mode")}];return qc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:dd("Close"),i18n_title:dd("Close and end this conversation"),icon_class:"fa-times",name:"close",standalone:"overlayed"===qc.settings.get("view_mode")}),Lc.api.hook("getHeadingButtons",this,e)},getToolbarOptions:()=>({}),async updateAfterMessagesFetched(){await this.model.messages.fetched,this.renderChatContent(),this.insertIntoDOM(),this.scrollDown(),qc.trigger("afterMessagesFetched",this.model)},maybeScrollDown(e){("me"!==e.get("sender")||e.get("is_archived"))&&this.model.isHidden()||this.debouncedScrollDown()},scrollDown(e){var t,n;if(null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.get("scrolled")&&pv.safeSave(this.model,{scrolled:!1,scrollTop:null}),this.msgs_container.scrollTo){const e=this.msgs_container.scrollTop?"smooth":"auto";this.msgs_container.scrollTo({top:this.msgs_container.scrollHeight,behavior:e})}else this.msgs_container.scrollTop=this.msgs_container.scrollHeight;this.onScrolledDown()},maintainScrollTop(){const e=this.model.get("scrollTop");e?this.msgs_container.scrollTop=e:this.scrollDown()},insertIntoDOM(){return Lc.chatboxviews.insertRowColumn(this.el),qc.trigger("chatBoxInsertedIntoDOM",this),this},addSpinner(e=!1){if(null===this.el.querySelector(".spinner")){const t=pv.getElementFromTemplateResult(Tf());e?(this.content.insertAdjacentElement("beforeend",t),this.scrollDown()):this.content.insertAdjacentElement("afterbegin",t)}},clearSpinner(){this.content.querySelectorAll(".spinner").forEach(pv.removeElement)},onStatusMessageChanged(e){this.renderHeading(),qc.trigger("contactStatusMessageChanged",{contact:e.attributes,message:e.get("status")})},shouldShowOnTextMessage(){return!Lc.isUniView()&&!pv.isVisible(this.el)},markFollowups(e){const t=e.getAttribute("data-from"),n=e.previousElementSibling,r=fv(e.getAttribute("data-isodate")),i=e.nextElementSibling;pv.hasClass("chat-msg--action",e)||pv.hasClass("chat-msg--action",n)||pv.hasClass("chat-info",e)||pv.hasClass("chat-info",n)||n.getAttribute("data-from")!==t||!r.isBefore(fv(n.getAttribute("data-isodate")).add(10,"minutes"))||e.getAttribute("data-encrypted")!==n.getAttribute("data-encrypted")||pv.addClass("chat-msg--followup",e),i&&(!pv.hasClass("chat-msg--action",e)&&pv.hasClass("chat-info",e)&&i.getAttribute("data-from")===t&&fv(i.getAttribute("data-isodate")).isBefore(r.add(10,"minutes"))&&e.getAttribute("data-encrypted")===i.getAttribute("data-encrypted")?pv.addClass("chat-msg--followup",i):pv.removeClass("chat-msg--followup",i))},parseMessageForCommands(e){const t=e.replace(/^\s*/,"").match(/^\/(.*)\s*$/);if(t){if("clear"===t[1])return this.clearMessages(),!0;if("close"===t[1])return this.close(),!0;if("help"===t[1])return this.model.set({show_help_messages:!0}),!0}},async onFormSubmitted(e){var t;e.preventDefault();const n=this.el.querySelector(".chat-textarea"),r=n.value.trim();if(qc.settings.get("message_limit")&&r.length>qc.settings.get("message_limit")||!r.replace(/\s/g,"").length)return;if(!Lc.connection.authenticated){const e=dd("Sorry, the connection has been lost, and your message could not be sent");return qc.alert("error",dd("Error"),e),void qc.connection.reconnect()}let i,s={};this.model.get("composing_spoiler")&&(s=this.el.querySelector("form.sendXMPPMessage input.spoiler-hint"),i=s.value),pv.addClass("disabled",n),n.setAttribute("disabled","disabled"),null===(t=this.el.querySelector("converse-emoji-dropdown"))||void 0===t||t.hideMenu();const o=this.parseMessageForCommands(r),a=o?null:await this.model.sendMessage(r,i);(o||a)&&(s.value="",n.value="",pv.removeClass("correcting",n),n.style.height="auto",this.updateCharCounter(n.value)),a&&qc.trigger("messageSend",a),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display="none"),n.removeAttribute("disabled"),pv.removeClass("disabled",n),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display=""),this.model.setChatState(Lc.ACTIVE,{silent:!0}),n.focus()},updateCharCounter(e){if(qc.settings.get("message_limit")){const t=this.el.querySelector(".message-limit"),n=qc.settings.get("message_limit")-e.length;t.textContent=n,n<1?pv.addClass("error",t):pv.removeClass("error",t)}},onPaste(e){if(0!==e.clipboardData.files.length)return e.preventDefault(),void this.model.sendFiles(Array.from(e.clipboardData.files));this.updateCharCounter(e.clipboardData.getData("text/plain"))},autocompleteInPicker(e,t){const n=this.el.querySelector("converse-emoji-dropdown"),r=this.el.querySelector("converse-emoji-picker");if(r&&n)return r.model.set({ac_position:e.selectionStart,autocompleting:t,query:t}),n.showMenu(),!0},onEmojiReceivedFromPicker(e){const t=this.el.querySelector("converse-emoji-picker").model,n=t.get("autocompleting"),r=t.get("ac_position");this.insertIntoTextArea(e,n,!1,r)},onKeyUp(e){this.updateCharCounter(e.target.value)},onKeyDown(e){if(!e.ctrlKey){if(!e.shiftKey&&!e.altKey&&!e.metaKey)if(e.keyCode===Yc.keycodes.TAB){const t=pv.getCurrentWord(e.target,null,/(:.*?:)/g);t.startsWith(":")&&this.autocompleteInPicker(e.target,t)&&(e.preventDefault(),e.stopPropagation())}else{if(e.keyCode===Yc.keycodes.FORWARD_SLASH)return;if(e.keyCode===Yc.keycodes.ESCAPE)return this.onEscapePressed(e);if(e.keyCode===Yc.keycodes.ENTER)return this.onEnterPressed(e);if(e.keyCode!==Yc.keycodes.UP_ARROW||e.target.selectionEnd){if(e.keyCode===Yc.keycodes.DOWN_ARROW&&e.target.selectionEnd===e.target.value.length&&pv.hasClass("correcting",this.el.querySelector(".chat-textarea")))return this.editLaterMessage()}else{const e=this.el.querySelector(".chat-textarea");if(!e.value||pv.hasClass("correcting",e))return this.editEarlierMessage()}}[Yc.keycodes.SHIFT,Yc.keycodes.META,Yc.keycodes.META_RIGHT,Yc.keycodes.ESCAPE,Yc.keycodes.ALT].includes(e.keyCode)||this.model.get("chat_state")!==Lc.COMPOSING&&this.model.setChatState(Lc.COMPOSING)}},getOwnMessages(){return this.model.messages.filter({sender:"me"})},onEnterPressed(e){return this.onFormSubmitted(e)},onEscapePressed(e){e.preventDefault();const t=this.model.messages.findLastIndex("correcting"),n=t>=0?this.model.messages.at(t):null;n&&n.save("correcting",!1),this.insertIntoTextArea("",!0,!1)},async onMessageRetractButtonClicked(e){if("me"!==e.get("sender"))return Pn.error("onMessageRetractButtonClicked called for someone else's message!");const t=dd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere."),n=[dd("Are you sure you want to retract this message?")];qc.settings.get("show_retraction_warning")&&(n[1]=t),await qc.confirm(dd("Confirm"),n)&&this.model.retractOwnMessage(e)},onMessageEditButtonClicked(e){var t;const n=this.model.messages.findWhere("correcting"),r=null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value;(!r||n&&n.get("message")===r||confirm(dd("You have an unsent message which will be lost if you continue. Are you sure?")))&&(n!==e?(null==n||n.save("correcting",!1),e.save("correcting",!0),this.insertIntoTextArea(pv.prefixMentions(e),!0,!0)):(e.save("correcting",!1),this.insertIntoTextArea("",!0,!1)))},editLaterMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t<this.model.messages.length-1;){t+=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e?(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0)):this.insertIntoTextArea("",!0,!1)},editEarlierMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t>0;){t-=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e=e||this.getOwnMessages().reverse().find(e=>e.get("editable")),e&&(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0))},inputChanged(e){const t=e.target.scrollHeight+"px";e.target.style.height!=t&&(e.target.style.height="auto",e.target.style.height=t)},async clearMessages(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(dd("Are you sure you want to clear the messages from this conversation?"))&&await this.model.clearMessages(),this},insertIntoTextArea(e,t=!1,n=!1,r){const i=this.el.querySelector(".chat-textarea");if(n?pv.addClass("correcting",i):pv.removeClass("correcting",i),t)i.value=r&&"string"==typeof t?i.value.replace(new RegExp(t,"g"),(n,i)=>i==r-t.length?e+" ":n):e;else{let t=i.value;t&&" "!==t[t.length-1]&&(t+=" "),i.value=t+e+" "}this.updateCharCounter(i.value),pv.placeCaretAtEnd(i)},onPresenceChanged(e){const t=e.get("show"),n=this.model.getDisplayName();let r;pv.isVisible(this.el)&&("offline"===t?r=dd("%1$s has gone offline",n):"away"===t?r=dd("%1$s has gone away",n):"dnd"===t?r=dd("%1$s is busy",n):"online"===t&&(r=dd("%1$s is online",n)),r&&this.model.createMessage({message:r,type:"info"}))},async close(e){return e&&e.preventDefault&&e.preventDefault(),Lc.router.history.getFragment()==="converse/chat?jid="+this.model.get("jid")&&Lc.router.navigate(""),qc.connection.connected()&&(this.model.setChatState(Lc.INACTIVE),this.model.sendChatState()),await this.model.close(),this.remove(),qc.trigger("chatBoxClosed",this),this},emitBlurred(e){this.el.contains(document.activeElement)||this.el.contains(e.relatedTarget)||qc.trigger("chatBoxBlurred",this,e)},emitFocused(e){this.el.contains(e.relatedTarget)||qc.trigger("chatBoxFocused",this,e)},focus(){const e=this.el.getElementsByClassName("chat-textarea")[0];return e&&document.activeElement!==e&&e.focus(),this},maybeFocus(){qc.settings.get("auto_focus")&&this.focus()},hide(){return this.el.classList.add("hidden"),this},afterShown(){this.model.clearUnreadMsgCounter(),this.model.setChatState(Lc.ACTIVE),this.scrollDown(),this.maybeFocus()},show(){pv.isVisible(this.el)?this.maybeFocus():(qc.trigger("beforeShowingChatView",this),qc.settings.get("animate")?pv.fadeIn(this.el,()=>this.afterShown()):(pv.showElement(this.el),this.afterShown()))},showNewMessagesIndicator(){pv.showElement(this.el.querySelector(".new-msgs-indicator"))},hideNewMessagesIndicator(){const e=this.el.querySelector(".new-msgs-indicator");null!==e&&e.classList.add("hidden")},_markScrolled:function(e){let t=!0,n=null;this.msgs_container.scrollTop+this.msgs_container.clientHeight>=this.msgs_container.scrollHeight-62?(t=!1,this.onScrolledDown()):0===this.msgs_container.scrollTop?qc.trigger("chatBoxScrolledUp",this):n=e.target.scrollTop,pv.safeSave(this.model,{scrolled:t,scrollTop:n})},viewUnreadMessages(){this.model.save({scrolled:!1,scrollTop:null}),this.scrollDown()},onScrolledDown(){this.hideNewMessagesIndicator(),!this.model.isHidden()&&this.model.clearUnreadMsgCounter(),qc.trigger("chatBoxScrolledDown",{chatbox:this.model})},onWindowStateChanged(e){"visible"===e?this.model.isHidden()||this.model.get("num_unread",0)&&this.model.clearUnreadMsgCounter():"hidden"===e&&(this.model.setChatState(Lc.INACTIVE,{silent:!0}),this.model.sendChatState())}});let mv;Yc.plugins.add("converse-chatview",{dependencies:["converse-chatboxviews","converse-chat","converse-disco","converse-modal"],initialize(){qc.settings.extend({auto_focus:!0,debounced_content_rendering:!0,filter_url_query_params:null,image_urls_regex:null,message_limit:0,muc_hats:["xep317"],role_affiliation_hat_conversions:{},show_images_inline:!0,show_message_avatar:!0,show_retraction_warning:!0,show_send_button:!0,show_toolbar:!0,time_format:"HH:mm",use_system_emojis:!0,visible_toolbar_buttons:{call:!1,clear:!0,emoji:!0,spoiler:!0}}),Lc.ChatBoxView=gv,Lc.UserDetailsModal=Kd.extend({id:"user-details-modal",events:{"click button.refresh-contact":"refreshContact","click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){Kd.prototype.initialize.apply(this,arguments),this.model.rosterContactAdded.then(()=>this.registerContactEventHandlers()),this.listenTo(this.model,"change",this.render),this.registerContactEventHandlers(),qc.trigger("userDetailsModalInitialized",this.model)},toHTML(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{};return ov(Object.assign(this.model.toJSON(),n,{_converse:Lc,allow_contact_removal:qc.settings.get("allow_contact_removal"),display_name:this.model.getDisplayName(),is_roster_contact:void 0!==this.model.contact,removeContact:e=>this.removeContact(e),view:this,utils:pv}))},registerContactEventHandlers(){void 0!==this.model.contact&&(this.listenTo(this.model.contact,"change",this.render),this.listenTo(this.model.contact.vcard,"change",this.render),this.model.contact.on("destroy",()=>{delete this.model.contact,this.render()}))},async refreshContact(e){e&&e.preventDefault&&e.preventDefault();const t=this.el.querySelector(".fa-refresh");pv.addClass("fa-spin",t);try{await qc.vcard.update(this.model.contact.vcard,!0)}catch(e){Pn.fatal(e),this.alert(dd("Sorry, something went wrong while trying to refresh"),"danger")}pv.removeClass("fa-spin",t)},removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),!qc.settings.get("allow_contact_removal"))return;!0===confirm(dd("Are you sure you want to remove this contact?"))&&(this.modal.hide(),setTimeout(()=>{this.model.contact.removeFromRoster(()=>this.model.contact.destroy(),e=>{Pn.error(e),qc.alert("error",dd("Error"),[dd("Sorry, there was an error while trying to remove %1$s as a contact.",this.model.contact.getDisplayName())])})},1))}}),qc.listen.on("chatBoxViewsInitialized",()=>{const e=Lc.chatboxviews;Lc.chatboxes.on("add",async t=>{e.get(t.get("id"))||t.get("type")!==Lc.PRIVATE_CHAT_TYPE||(await t.initialized,e.add(t.get("id"),new Lc.ChatBoxView({model:t})))})}),qc.listen.on("windowStateChanged",(function(e){Lc.chatboxviews&&Lc.chatboxviews.forEach(t=>{"controlbox"!==t.model.get("id")&&t.onWindowStateChanged(e.state)})})),qc.listen.on("connected",()=>qc.disco.own.features.add(hv.NS.SPOILER)),Object.assign(qc,{chatviews:{get:e=>void 0===e?Object.values(Lc.chatboxviews.getAll()):"string"==typeof e?Lc.chatboxviews.get(e):e.map(e=>Lc.chatboxviews.get(e))}})}});let vv=0;function _v(e){mv=e}function bv(){mv=null,vv=0}const yv=Symbol("haunted.phase"),wv=Symbol("haunted.hook"),Sv=Symbol("haunted.update"),xv=Symbol("haunted.commit"),Ev=Symbol("haunted.effects"),Av=Symbol("haunted.layoutEffects");class Cv{constructor(e,t){this.update=e,this.host=t,this[wv]=new Map,this[Ev]=[],this[Av]=[]}run(e){_v(this);let t=e();return bv(),t}_runEffects(e){let t=this[e];_v(this);for(let e of t)e.call(this);bv()}runEffects(){this._runEffects(Ev)}runLayoutEffects(){this._runEffects(Av)}teardown(){this[wv].forEach(e=>{"function"==typeof e.teardown&&e.teardown()})}}const jv=Promise.resolve().then.bind(Promise.resolve());function Tv(){let e,t=[];function n(){e=null;let n=t;t=[];for(var r=0,i=n.length;r<i;r++)n[r]()}return function(r){t.push(r),null==e&&(e=jv(n))}}const Ov=Tv(),kv=Tv();class Nv{constructor(e,t){this.renderer=e,this.host=t,this.state=new Cv(this.update.bind(this),t),this[yv]=null,this._updateQueued=!1}update(){this._updateQueued||(Ov(()=>{let e=this.handlePhase(Sv);kv(()=>{this.handlePhase(xv,e),kv(()=>{this.handlePhase(Ev)})}),this._updateQueued=!1}),this._updateQueued=!0)}handlePhase(e,t){switch(this[yv]=e,e){case xv:return this.commit(t),void this.runEffects(Av);case Sv:return this.render();case Ev:return this.runEffects(Ev)}this[yv]=null}render(){return this.state.run(()=>this.renderer.call(this.host,this.host))}runEffects(e){this.state._runEffects(e)}teardown(){this.state.teardown()}}function Iv(e){class t extends Nv{constructor(e,t,n){super(e,n||t),this.frag=t}commit(t){e(t,this.frag)}}return function(e,n,r){const i=(r||n||{}).baseElement||HTMLElement,{observedAttributes:s=[],useShadowDOM:o=!0,shadowRootInit:a={}}=r||n||{};class c extends i{constructor(){super(),!1===o?this._scheduler=new t(e,this):(this.attachShadow({mode:"open",...a}),this._scheduler=new t(e,this.shadowRoot,this))}static get observedAttributes(){return e.observedAttributes||s||[]}connectedCallback(){this._scheduler.update()}disconnectedCallback(){this._scheduler.teardown()}attributeChangedCallback(e,t,n){if(t===n)return;let r=""===n||n;Reflect.set(this,((e="")=>e.replace(/-+([a-z])?/g,(e,t)=>t?t.toUpperCase():""))(e),r)}}const l=new Proxy(i.prototype,{getPrototypeOf:e=>e,set(e,t,n,r){let i;if(t in e){if(i=Object.getOwnPropertyDescriptor(e,t),i&&i.set)return i.set.call(r,n),!0;Reflect.set(e,t,n)}return i="symbol"==typeof t||"_"===t[0]?{enumerable:!0,configurable:!0,writable:!0,value:n}:function(e){let t=e;return Object.freeze({enumerable:!0,configurable:!0,get:()=>t,set(e){t=e,this._scheduler.update()}})}(n),Object.defineProperty(r,t,i),i.set&&i.set.call(r,n),!0}});return Object.setPrototypeOf(c.prototype,l),c}}class Mv{constructor(e,t){this.id=e,this.state=t}}function Rv(e,...t){let n=vv++,r=mv[wv],i=r.get(n);return i||(i=new e(n,mv,...t),r.set(n,i)),i.update(...t)}function Dv(e){return Rv.bind(null,e)}function Pv(e){return Dv(class extends Mv{constructor(t,n,r,i){super(t,n),e(n,this)}update(e,t){this.callback=e,this.lastValues=this.values,this.values=t}call(){this.values&&!this.hasChanged()||this.run()}run(){this.teardown(),this._teardown=this.callback.call(this.state)}teardown(){"function"==typeof this._teardown&&this._teardown()}hasChanged(){return!this.lastValues||this.values.some((e,t)=>this.lastValues[t]!==e)}})}function Lv(e,t){e[Ev].push(t)}Pv(Lv);const zv=Dv(class extends Mv{constructor(e,t,n){super(e,t),this._updater=this._updater.bind(this),this._ranEffect=!1,this._unsubscribe=null,Lv(t,this)}update(e){if(this.state.virtual)throw new Error("can't be used with virtual components");return this.Context!==e&&(this._subscribe(e),this.Context=e),this.value}call(){this._ranEffect||(this._ranEffect=!0,this._unsubscribe&&this._unsubscribe(),this._subscribe(this.Context),this.state.update())}_updater(e){this.value=e,this.state.update()}_subscribe(e){const t={Context:e,callback:this._updater};this.state.host.dispatchEvent(new CustomEvent("haunted.context",{detail:t,bubbles:!0,cancelable:!0,composed:!0}));const{unsubscribe:n,value:r}=t;this.value=n?r:e.defaultValue,this._unsubscribe=n}teardown(){this._unsubscribe&&this._unsubscribe()}});Dv(class extends Mv{constructor(e,t,n,r){super(e,t),this.value=n(),this.values=r}update(e,t){return this.hasChanged(t)&&(this.values=t,this.value=e()),this.value}hasChanged(e=[]){return e.some((e,t)=>this.values[t]!==e)}});Pv((function(e,t){e[Av].push(t)})),Dv(class extends Mv{constructor(e,t,n){super(e,t),this.updater=this.updater.bind(this),"function"==typeof n&&(n=n()),this.makeArgs(n)}update(){return this.args}updater(e){if("function"==typeof e){const t=e,[n]=this.args;e=t(n)}this.makeArgs(e),this.state.update()}makeArgs(e){this.args=Object.freeze([e,this.updater])}}),Dv(class extends Mv{constructor(e,t,n,r,i){super(e,t),this.dispatch=this.dispatch.bind(this),this.currentState=void 0!==i?i(r):r}update(e){return this.reducer=e,[this.currentState,this.dispatch]}dispatch(e){this.currentState=this.reducer(this.currentState,e),this.state.update()}});const Fv=Array.prototype.includes;const{component:Bv,createContext:qv}=function({render:e}){const t=Iv(e),n=function(e){return t=>{const n={Provider:class extends HTMLElement{constructor(){super(),this.listeners=new Set,this.addEventListener("haunted.context",this)}disconnectedCallback(){this.removeEventListener("haunted.context",this)}handleEvent(e){const{detail:t}=e;t.Context===n&&(t.value=this.value,t.unsubscribe=this.unsubscribe.bind(this,t.callback),this.listeners.add(t.callback),e.stopPropagation())}unsubscribe(e){this.listeners.delete(e)}set value(e){this._value=e;for(let t of this.listeners)t(e)}get value(){return this._value}},Consumer:e((function({render:e}){return e(zv(n))})),defaultValue:t};return n}}(t);return{component:t,createContext:n}}({render:Wa});!function(){const e=new WeakMap,t=new WeakMap;class n extends Nv{constructor(e,t){super(e,t),this.state.virtual=!0}render(){return this.state.run(()=>this.renderer.apply(this.host,this.args))}commit(e){this.host.setValue(e),this.host.commit()}teardown(){super.teardown();let n=t.get(this);e.delete(n)}}}();function Hv(){const e=Wv(['\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p>\n <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p>']);return Hv=function(){return e},e}function Uv(){const e=Wv(['<p class="byline">messaging freedom</p>']);return Uv=function(){return e},e}function $v(){const e=Wv(['\n <a class="brand-heading" href="https://conversejs.org" target="_blank" rel="noopener">\n <span class="brand-name-wrapper ','">\n <svg class="converse-svg-logo"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n viewBox="0 0 364 364">\n <title>Converse</title>\n <g class="cls-1" id="g904">\n <g data-name="Layer 2">\n <g data-name="Layer 7">\n <path\n class="cls-3"\n d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />\n <path\n class="cls-4"\n d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />\n </g>\n </g>\n </g>\n </svg>\n <span class="brand-name">\n <span class="brand-name__text">converse<span class="subdued">.js</span></span>\n ',"\n </span>\n </span>\n </a>\n ","\n "]);return $v=function(){return e},e}function Wv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Vv(){const e=Jv(['<a class="chatbox-btn close-chatbox-button fa fa-times"></a>']);return Vv=function(){return e},e}function Gv(){const e=Jv(['\n <div class="flyout box-flyout">\n <div class="chat-head controlbox-head">\n ','\n </div>\n <div class="controlbox-panes"></div>\n </div>']);return Gv=function(){return e},e}function Jv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-brand-heading",Bv(e=>{const t="fullscreen"===qc.settings.get("view_mode");return Ga($v(),t?"brand-name-wrapper--fullscreen":"",t?Ga(Uv()):"",t?Ga(Hv(),e.version_name):"")},{useShadowDOM:!1}));var Xv=n(136),Qv=n.n(Xv);function Yv(){const e=s_(['\n <converse-brand-heading></converse-brand-heading>\n <form id="converse-login" class="converse-form" method="post">\n <div class="conn-feedback fade-in ','">\n <p class="feedback-subject">','</p>\n <p class="feedback-message ','">',"</p>\n </div>\n ","\n </form>\n"]);return Yv=function(){return e},e}function Kv(){const e=s_(["<p>","</p>"]);return Kv=function(){return e},e}function Zv(){const e=s_(['<input class="btn btn-primary login-anon" type="submit" value="','">']);return Zv=function(){return e},e}function e_(){const e=s_(["\n ","\n ","\n ","\n "]);return e_=function(){return e},e}function t_(){const e=s_(['\n <div class="form-group">\n <label for="converse-login-jid">',':</label>\n <input id="converse-login-jid"\n ?autofocus=','\n required\n class="form-control"\n type="text"\n name="jid"\n placeholder="','"/>\n </div>\n ',"\n ",'\n <fieldset class="buttons">\n <input class="btn btn-primary" type="submit" value="','"/>\n </fieldset>\n ',"\n "]);return t_=function(){return e},e}function n_(){const e=s_(['\n <fieldset class="switch-form">\n <p>','</p>\n <p><a class="register-account toggle-register-login" href="#converse/register">',"</a></p>\n </fieldset>\n "]);return n_=function(){return e},e}function r_(){const e=s_(['\n <div class="form-group">\n <label for="converse-login-password">','</label>\n <input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="','"/>\n </div>\n ']);return r_=function(){return e},e}function i_(){const e=s_(['\n <div class="form-group form-check login-trusted">\n <input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" ?checked=','>\n <label for="converse-login-trusted" class="form-check-label login-trusted__desc">','</label>\n <i class="fa fa-info-circle" data-toggle="popover"\n data-title="Trusted device?"\n data-content="','"></i>\n </div>\n ']);return i_=function(){return e},e}function s_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const o_=e=>{const t=dd("Log in"),n=dd("XMPP Address");return Ga(t_(),n,!!qc.settings.get("auto_focus"),e.placeholder_username,e.authentication!==e.EXTERNAL?(()=>{const e=dd("Password");return Ga(r_(),e,e)})():"",e.show_trust_checkbox?(e=>{const t=dd("To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It's important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available."),n=dd("This is a trusted device");return Ga(i_(),e._converse.config.get("trusted"),n,t)})(e):"",t,(e=>{const t=e._converse;return t.allow_registration&&!qc.settings.get("auto_login")&&t.pluggable.plugins["converse-register"].enabled(t)})(e)?(()=>{const e=dd("Create an account"),t=dd("Don't have a chat account?");return Ga(n_(),t,e)})():"")};var a_=e=>Ga(Yv(),e.conn_feedback_subject?e.conn_feedback_class:"hidden",e.conn_feedback_subject,e.conn_feedback_message?"":"hidden",e.conn_feedback_message,"CONNECTING"===e._converse.CONNECTION_STATUS[e.connection_status]?Tf({classes:"hor_centered"}):(e=>{const t=dd("Disconnected"),n=dd("Click here to log in anonymously");return Ga(e_(),e.authentication==e.LOGIN||e.authentication==e.EXTERNAL?o_(e):"",e.authentication==e.ANONYMOUS?Ga(Zv(),n):"",e.authentication==e.PREBIND?Ga(Kv(),t):"")})(e));function c_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e} + */ +const{Strophe:m_}=rl.env;function v_(e){Uc.chatboxviews&&Uc.chatboxviews.forEach(t=>{"controlbox"!==t.model.get("id")&&t.onWindowStateChanged(e.state)})}function __(){const e=Uc.chatboxviews;Uc.chatboxes.on("add",async t=>{e.get(t.get("id"))||t.get("type")!==Uc.PRIVATE_CHAT_TYPE||(await t.initialized,e.add(t.get("id"),new Uc.ChatBoxView({model:t})))})}let b_;rl.plugins.add("converse-chatview",{dependencies:["converse-chatboxviews","converse-chat","converse-disco","converse-modal"],initialize(){Vc.settings.extend({auto_focus:!0,debounced_content_rendering:!0,filter_url_query_params:null,image_urls_regex:null,message_limit:0,muc_hats:["xep317"],show_images_inline:!0,show_message_avatar:!0,show_retraction_warning:!0,show_send_button:!0,show_toolbar:!0,time_format:"HH:mm",use_system_emojis:!0,visible_toolbar_buttons:{call:!1,clear:!0,emoji:!0,spoiler:!0}}),Object.assign(Vc,g_),Uc.ChatBoxView=p_,Vc.listen.on("chatBoxViewsInitialized",__),Vc.listen.on("windowStateChanged",v_),Vc.listen.on("connected",()=>Vc.disco.own.features.add(m_.NS.SPOILER))}});let y_=0;function w_(e){b_=e}function S_(){b_=null,y_=0}const x_=Symbol("haunted.phase"),E_=Symbol("haunted.hook"),A_=Symbol("haunted.update"),C_=Symbol("haunted.commit"),j_=Symbol("haunted.effects"),T_=Symbol("haunted.layoutEffects");class O_{constructor(e,t){this.update=e,this.host=t,this[E_]=new Map,this[j_]=[],this[T_]=[]}run(e){w_(this);let t=e();return S_(),t}_runEffects(e){let t=this[e];w_(this);for(let e of t)e.call(this);S_()}runEffects(){this._runEffects(j_)}runLayoutEffects(){this._runEffects(T_)}teardown(){this[E_].forEach(e=>{"function"==typeof e.teardown&&e.teardown()})}}const k_=Promise.resolve().then.bind(Promise.resolve());function N_(){let e,t=[];function n(){e=null;let n=t;t=[];for(var r=0,i=n.length;r<i;r++)n[r]()}return function(r){t.push(r),null==e&&(e=k_(n))}}const I_=N_(),M_=N_();class R_{constructor(e,t){this.renderer=e,this.host=t,this.state=new O_(this.update.bind(this),t),this[x_]=null,this._updateQueued=!1}update(){this._updateQueued||(I_(()=>{let e=this.handlePhase(A_);M_(()=>{this.handlePhase(C_,e),M_(()=>{this.handlePhase(j_)})}),this._updateQueued=!1}),this._updateQueued=!0)}handlePhase(e,t){switch(this[x_]=e,e){case C_:return this.commit(t),void this.runEffects(T_);case A_:return this.render();case j_:return this.runEffects(j_)}this[x_]=null}render(){return this.state.run(()=>this.renderer.call(this.host,this.host))}runEffects(e){this.state._runEffects(e)}teardown(){this.state.teardown()}}function D_(e){class t extends R_{constructor(e,t,n){super(e,n||t),this.frag=t}commit(t){e(t,this.frag)}}return function(e,n,r){const i=(r||n||{}).baseElement||HTMLElement,{observedAttributes:o=[],useShadowDOM:s=!0,shadowRootInit:a={}}=r||n||{};class c extends i{constructor(){super(),!1===s?this._scheduler=new t(e,this):(this.attachShadow({mode:"open",...a}),this._scheduler=new t(e,this.shadowRoot,this))}static get observedAttributes(){return e.observedAttributes||o||[]}connectedCallback(){this._scheduler.update()}disconnectedCallback(){this._scheduler.teardown()}attributeChangedCallback(e,t,n){if(t===n)return;let r=""===n||n;Reflect.set(this,((e="")=>e.replace(/-+([a-z])?/g,(e,t)=>t?t.toUpperCase():""))(e),r)}}const l=new Proxy(i.prototype,{getPrototypeOf:e=>e,set(e,t,n,r){let i;if(t in e){if(i=Object.getOwnPropertyDescriptor(e,t),i&&i.set)return i.set.call(r,n),!0;Reflect.set(e,t,n)}return i="symbol"==typeof t||"_"===t[0]?{enumerable:!0,configurable:!0,writable:!0,value:n}:function(e){let t=e;return Object.freeze({enumerable:!0,configurable:!0,get:()=>t,set(e){t=e,this._scheduler.update()}})}(n),Object.defineProperty(r,t,i),i.set&&i.set.call(r,n),!0}});return Object.setPrototypeOf(c.prototype,l),c}}class P_{constructor(e,t){this.id=e,this.state=t}}function L_(e,...t){let n=y_++,r=b_[E_],i=r.get(n);return i||(i=new e(n,b_,...t),r.set(n,i)),i.update(...t)}function z_(e){return L_.bind(null,e)}function F_(e){return z_(class extends P_{constructor(t,n,r,i){super(t,n),e(n,this)}update(e,t){this.callback=e,this.lastValues=this.values,this.values=t}call(){this.values&&!this.hasChanged()||this.run()}run(){this.teardown(),this._teardown=this.callback.call(this.state)}teardown(){"function"==typeof this._teardown&&this._teardown()}hasChanged(){return!this.lastValues||this.values.some((e,t)=>this.lastValues[t]!==e)}})}function B_(e,t){e[j_].push(t)}F_(B_);const q_=z_(class extends P_{constructor(e,t,n){super(e,t),this._updater=this._updater.bind(this),this._ranEffect=!1,this._unsubscribe=null,B_(t,this)}update(e){if(this.state.virtual)throw new Error("can't be used with virtual components");return this.Context!==e&&(this._subscribe(e),this.Context=e),this.value}call(){this._ranEffect||(this._ranEffect=!0,this._unsubscribe&&this._unsubscribe(),this._subscribe(this.Context),this.state.update())}_updater(e){this.value=e,this.state.update()}_subscribe(e){const t={Context:e,callback:this._updater};this.state.host.dispatchEvent(new CustomEvent("haunted.context",{detail:t,bubbles:!0,cancelable:!0,composed:!0}));const{unsubscribe:n,value:r}=t;this.value=n?r:e.defaultValue,this._unsubscribe=n}teardown(){this._unsubscribe&&this._unsubscribe()}});z_(class extends P_{constructor(e,t,n,r){super(e,t),this.value=n(),this.values=r}update(e,t){return this.hasChanged(t)&&(this.values=t,this.value=e()),this.value}hasChanged(e=[]){return e.some((e,t)=>this.values[t]!==e)}});F_((function(e,t){e[T_].push(t)})),z_(class extends P_{constructor(e,t,n){super(e,t),this.updater=this.updater.bind(this),"function"==typeof n&&(n=n()),this.makeArgs(n)}update(){return this.args}updater(e){if("function"==typeof e){const t=e,[n]=this.args;e=t(n)}this.makeArgs(e),this.state.update()}makeArgs(e){this.args=Object.freeze([e,this.updater])}}),z_(class extends P_{constructor(e,t,n,r,i){super(e,t),this.dispatch=this.dispatch.bind(this),this.currentState=void 0!==i?i(r):r}update(e){return this.reducer=e,[this.currentState,this.dispatch]}dispatch(e){this.currentState=this.reducer(this.currentState,e),this.state.update()}});const H_=Array.prototype.includes;const{component:U_,createContext:$_}=function({render:e}){const t=D_(e),n=function(e){return t=>{const n={Provider:class extends HTMLElement{constructor(){super(),this.listeners=new Set,this.addEventListener("haunted.context",this)}disconnectedCallback(){this.removeEventListener("haunted.context",this)}handleEvent(e){const{detail:t}=e;t.Context===n&&(t.value=this.value,t.unsubscribe=this.unsubscribe.bind(this,t.callback),this.listeners.add(t.callback),e.stopPropagation())}unsubscribe(e){this.listeners.delete(e)}set value(e){this._value=e;for(let t of this.listeners)t(e)}get value(){return this._value}},Consumer:e((function({render:e}){return e(q_(n))})),defaultValue:t};return n}}(t);return{component:t,createContext:n}}({render:Ya});!function(){const e=new WeakMap,t=new WeakMap;class n extends R_{constructor(e,t){super(e,t),this.state.virtual=!0}render(){return this.state.run(()=>this.renderer.apply(this.host,this.args))}commit(e){this.host.setValue(e),this.host.commit()}teardown(){super.teardown();let n=t.get(this);e.delete(n)}}}();function W_(){const e=J_(['\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p>\n <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p>']);return W_=function(){return e},e}function G_(){const e=J_(['<p class="byline">messaging freedom</p>']);return G_=function(){return e},e}function V_(){const e=J_(['\n <a class="brand-heading" href="https://conversejs.org" target="_blank" rel="noopener">\n <span class="brand-name-wrapper ','">\n <svg class="converse-svg-logo"\n xmlns:svg="http://www.w3.org/2000/svg"\n xmlns="http://www.w3.org/2000/svg"\n xmlns:xlink="http://www.w3.org/1999/xlink"\n viewBox="0 0 364 364">\n <title>Converse</title>\n <g class="cls-1" id="g904">\n <g data-name="Layer 2">\n <g data-name="Layer 7">\n <path\n class="cls-3"\n d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />\n <path\n class="cls-4"\n d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />\n </g>\n </g>\n </g>\n </svg>\n <span class="brand-name">\n <span class="brand-name__text">converse<span class="subdued">.js</span></span>\n ',"\n </span>\n </span>\n </a>\n ","\n "]);return V_=function(){return e},e}function J_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-brand-heading",U_(e=>{const t="fullscreen"===Vc.settings.get("view_mode");return Za(V_(),t?"brand-name-wrapper--fullscreen":"",t?Za(G_()):"",t?Za(W_(),e.version_name):"")},{useShadowDOM:!1}));const{dayjs:X_}=rl.env;var Q_={defaults(){return{bookmarked:!1,box_id:"controlbox",chat_state:void 0,closed:!Vc.settings.get("show_controlbox_by_default"),num_unread:0,time_opened:this.get("time_opened")||(new Date).getTime(),type:Uc.CONTROLBOX_TYPE,url:""}},initialize(){"controlbox"===this.get("id")?this.set({time_opened:X_(0).valueOf()}):Uc.ChatBox.prototype.initialize.apply(this,arguments)},validate(e){return e.type===Uc.CONTROLBOX_TYPE?"embedded"===Vc.settings.get("view_mode")&&Vc.settings.get("singleton")?"Controlbox not relevant in embedded view mode":void 0:Uc.ChatBox.prototype.validate.call(this,e)},maybeShow(e){return e||"controlbox"!==this.get("id")?Uc.ChatBox.prototype.maybeShow.call(this,e):this},onReconnection:function(){}};var Y_=eh.extend({tagName:"div",className:"controlbox-pane",initialize(){Vc.trigger("controlBoxPaneInitialized",this)}}),K_=n(177),Z_=n.n(K_);function eb(){const e=new Uc.ControlBox({id:"controlbox"});return Uc.chatboxes.add(e)}const tb=rl.env.utils;var nb=eh.extend({tagName:"a",className:"toggle-controlbox hidden",id:"toggle-controlbox",events:{click:"onClick"},attributes:{href:"#"},initialize(){Uc.chatboxviews.insertRowColumn(this.render().el),Vc.waitUntil("initialized").then(this.render.bind(this)).catch(e=>zn.fatal(e))},render(){return this.el.innerHTML=Z_()({label_toggle:Vc.connection.connected()?zd("Chat Contacts"):zd("Toggle chat")}),this},hide(e){tb.isVisible(this.el)&&(tb.hideElement(this.el),e())},show(e){tb.isVisible(this.el)||tb.fadeIn(this.el,e)},showControlBox(){let e=Uc.chatboxes.get("controlbox");e||(e=eb()),Vc.connection.connected()?e.save({closed:!1}):e.trigger("show")},onClick(e){if(e.preventDefault(),tb.isVisible(Uc.root.querySelector("#controlbox"))){const e=Uc.chatboxes.get("controlbox");Vc.connection.connected?e.save({closed:!0}):e.trigger("hide")}else this.showControlBox()}});function rb(){const e=ob(['<a class="chatbox-btn close-chatbox-button fa fa-times"></a>']);return rb=function(){return e},e}function ib(){const e=ob(['\n <div class="flyout box-flyout">\n <div class="chat-head controlbox-head">\n ','\n </div>\n <div class="controlbox-panes"></div>\n </div>']);return ib=function(){return e},e}function ob(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const sb=rl.env.utils;var ab={tagName:"div",className:"chatbox",id:"controlbox",events:{"click a.close-chatbox-button":"close"},initialize(){void 0===Uc.controlboxtoggle&&(Uc.controlboxtoggle=new Uc.ControlBoxToggle),Uc.controlboxtoggle.el.insertAdjacentElement("afterend",this.el),this.listenTo(this.model,"change:connected",this.onConnected),this.listenTo(this.model,"destroy",this.hide),this.listenTo(this.model,"hide",this.hide),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"change:closed",this.ensureClosedState),this.render(),Vc.trigger("controlBoxInitialized",this)},render(){this.model.get("connected")&&void 0===this.model.get("closed")&&this.model.set("closed",!Vc.settings.get("show_controlbox_by_default"));const e=(t={sticky_controlbox:Vc.settings.get("sticky_controlbox"),...this.model.toJSON()},Za(ib(),t.sticky_controlbox?"":Za(rb())));var t;Ya(e,this.el),this.model.get("closed")?this.hide():this.show();const n=(null==Uc?void 0:Uc.connection)||{};return n.connected&&n.authenticated&&!n.disconnecting?this.model.get("connected")&&this.renderControlBoxPane():this.renderLoginPanel(),this},onConnected(){this.model.get("connected")&&this.render()},renderLoginPanel(){if(this.el.classList.add("logged-out"),this.loginpanel)this.loginpanel.render();else{this.loginpanel=new Uc.LoginPanel({model:new Uc.LoginPanelModel});const e=this.el.querySelector(".controlbox-panes");e.innerHTML="",e.appendChild(this.loginpanel.render().el)}return this.loginpanel.initPopovers(),this},renderControlBoxPane(){this.loginpanel&&(this.loginpanel.remove(),delete this.loginpanel),this.controlbox_pane&&sb.isVisible(this.controlbox_pane.el)||(this.el.classList.remove("logged-out"),this.controlbox_pane=new Uc.ControlBoxPane,this.el.querySelector(".controlbox-panes").insertAdjacentElement("afterBegin",this.controlbox_pane.el))},async close(e){if(e&&e.preventDefault&&e.preventDefault(),"closeAllChatBoxes"===(null==e?void 0:e.name)&&(Uc.disconnection_cause!==Uc.LOGOUT||Vc.settings.get("show_controlbox_by_default")))return;if(Vc.settings.get("sticky_controlbox"))return;const t=(null==Uc?void 0:Uc.connection)||{};return t.connected&&!t.disconnecting?await new Promise((e,t)=>this.model.save({closed:!0},{success:e,error:t,wait:!0})):this.model.trigger("hide"),Vc.trigger("controlBoxClosed",this),this},ensureClosedState(){this.model.get("closed")?this.hide():this.show()},hide(e){if(!Vc.settings.get("sticky_controlbox"))return sb.addClass("hidden",this.el),Vc.trigger("chatBoxClosed",this),Vc.connection.connected()||Uc.controlboxtoggle.render(),Uc.controlboxtoggle.show(e),this},onControlBoxToggleHidden(){this.model.set("closed",!1),this.el.classList.remove("hidden"),Vc.trigger("controlBoxOpened",this)},show(){return Uc.controlboxtoggle.hide(()=>this.onControlBoxToggleHidden()),this},showHelpMessages(){}};function cb(){const e=mb(['\n <converse-brand-heading></converse-brand-heading>\n <form id="converse-login" class="converse-form" method="post">\n <div class="conn-feedback fade-in ','">\n <p class="feedback-subject">','</p>\n <p class="feedback-message ','">',"</p>\n </div>\n ","\n </form>\n"]);return cb=function(){return e},e}function lb(){const e=mb(["<p>","</p>"]);return lb=function(){return e},e}function ub(){const e=mb(['<input class="btn btn-primary login-anon" type="submit" value="','">']);return ub=function(){return e},e}function db(){const e=mb(["\n ","\n ","\n ","\n "]);return db=function(){return e},e}function hb(){const e=mb(['\n <div class="form-group">\n <label for="converse-login-jid">',':</label>\n <input id="converse-login-jid"\n ?autofocus=','\n required\n class="form-control"\n type="text"\n name="jid"\n placeholder="','"/>\n </div>\n ',"\n ",'\n <fieldset class="buttons">\n <input class="btn btn-primary" type="submit" value="','"/>\n </fieldset>\n ',"\n "]);return hb=function(){return e},e}function fb(){const e=mb(['\n <fieldset class="switch-form">\n <p>','</p>\n <p><a class="register-account toggle-register-login" href="#converse/register">',"</a></p>\n </fieldset>\n "]);return fb=function(){return e},e}function pb(){const e=mb(['\n <div class="form-group">\n <label for="converse-login-password">','</label>\n <input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="','"/>\n </div>\n ']);return pb=function(){return e},e}function gb(){const e=mb(['\n <div class="form-group form-check login-trusted">\n <input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" ?checked=','>\n <label for="converse-login-trusted" class="form-check-label login-trusted__desc">','</label>\n <i class="fa fa-info-circle" data-toggle="popover"\n data-title="Trusted device?"\n data-content="','"></i>\n </div>\n ']);return gb=function(){return e},e}function mb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const vb=e=>{const t=zd("Log in"),n=zd("XMPP Address");return Za(hb(),n,!!Vc.settings.get("auto_focus"),e.placeholder_username,e.authentication!==e.EXTERNAL?(()=>{const e=zd("Password");return Za(pb(),e,e)})():"",e.show_trust_checkbox?(e=>{const t=zd("To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It's important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available."),n=zd("This is a trusted device");return Za(gb(),e,n,t)})("off"!==e.show_trust_checkbox):"",t,Uc.allow_registration&&!Vc.settings.get("auto_login")&&Uc.pluggable.plugins["converse-register"].enabled(Uc)?(()=>{const e=zd("Create an account"),t=zd("Don't have a chat account?");return Za(fb(),t,e)})():"")};var _b=e=>Za(cb(),e.conn_feedback_subject?e.conn_feedback_class:"hidden",e.conn_feedback_subject,e.conn_feedback_message?"":"hidden",e.conn_feedback_message,"CONNECTING"===Uc.CONNECTION_STATUS[e.connection_status]?fp({classes:"hor_centered"}):(e=>{const t=zd("Disconnected"),n=zd("Click here to log in anonymously");return Za(db(),e.authentication==e.LOGIN||e.authentication==e.EXTERNAL?vb(e):"",e.authentication==e.ANONYMOUS?Za(ub(),n):"",e.authentication==e.PREBIND?Za(lb(),t):"")})(e));const bb=rl.env.utils,{Strophe:yb}=rl.env,wb=[0,1,2,3,4,7,10],Sb={0:"Error",1:"Connecting",2:"Connection failure",3:"Authenticating",4:"Authentication failure",5:"Connected",6:"Disconnected",7:"Disconnecting",8:"Attached",9:"Redirect",10:"Reconnecting"},xb={Error:"error",Connecting:"info","Connection failure":"error",Authenticating:"info","Authentication failure":"error",Connected:"info",Disconnected:"error",Disconnecting:"warn",Attached:"info",Redirect:"info",Reconnecting:"warn"},Eb=qo.extend({defaults:{errors:[]}}),Ab=eh.extend({tagName:"div",id:"converse-login-panel",className:"controlbox-pane fade-in row no-gutters",events:{"submit form#converse-login":"authenticate","change input":"validate"},initialize(){this.listenTo(this.model,"change",this.render),this.listenTo(Uc.connfeedback,"change",this.render),this.render()},toHTML(){const e=Uc.connfeedback.get("connection_status");let t,n;return wb.includes(e)&&(n=Sb[e],t=xb[n]),_b(Object.assign(this.model.toJSON(),{_converse:Uc,ANONYMOUS:Uc.ANONYMOUS,EXTERNAL:Uc.EXTERNAL,LOGIN:Uc.LOGIN,PREBIND:Uc.PREBIND,auto_login:Vc.settings.get("auto_login"),authentication:Vc.settings.get("authentication"),connection_status:e,conn_feedback_class:t,conn_feedback_subject:n,conn_feedback_message:Uc.connfeedback.get("message"),placeholder_username:(Vc.settings.get("locked_domain")||Vc.settings.get("default_domain"))&&zd("Username")||zd("user@domain"),show_trust_checkbox:Vc.settings.get("allow_user_trust_override")}))},initPopovers(){Array.from(this.el.querySelectorAll("[data-title]")).forEach(e=>{new af.a.Popover(e,{trigger:"mobile"===Vc.settings.get("view_mode")?"click":"hover",dismissible:"mobile"===Vc.settings.get("view_mode"),container:this.el.parentElement.parentElement.parentElement})})},validate(){const e=this.el.querySelector("form").querySelector("input[name=jid]");return!e.value||Vc.settings.get("locked_domain")||Vc.settings.get("default_domain")||bb.isValidJID(e.value)?(e.setCustomValidity(""),!0):(e.setCustomValidity(zd("Please enter a valid XMPP address")),!1)},authenticate(e){if(e&&e.preventDefault&&e.preventDefault(),Vc.settings.get("authentication")===Uc.ANONYMOUS)return this.connect(Uc.jid,null);if(!this.validate())return;const t=new FormData(e.target);Uc.config.save({trusted:!!t.get("trusted")});let n=t.get("jid");if(Vc.settings.get("locked_domain")){const e="@"+Vc.settings.get("locked_domain");n.endsWith(e)&&(n=n.substr(0,n.length-e.length)),n=yb.escapeNode(n)+e}else Vc.settings.get("default_domain")&&!n.includes("@")&&(n=n+"@"+Vc.settings.get("default_domain"));this.connect(n,t.get("password"))},connect(e,t){["converse/login","converse/register"].includes(Uc.router.history.getFragment())&&Uc.router.navigate("",{replace:!0}),Uc.connection&&Uc.connection.reset(),Vc.user.login(e,t)}});var Cb={controlbox:{async open(){await Vc.waitUntil("chatBoxesFetched");const e=await Vc.chatboxes.get("controlbox")||Vc.chatboxes.create("controlbox",{},Uc.Controlbox);return e.trigger("show"),e},get:()=>Uc.chatboxviews.get("controlbox")}}; /** * @module converse-controlbox * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) - */const{Strophe:u_,dayjs:d_}=Yc.env,h_=Yc.env.utils,f_={Error:"error",Connecting:"info","Connection failure":"error",Authenticating:"info","Authentication failure":"error",Connected:"info",Disconnected:"error",Disconnecting:"warn",Attached:"info",Redirect:"info",Reconnecting:"warn"},p_={0:"Error",1:"Connecting",2:"Connection failure",3:"Authenticating",4:"Authentication failure",5:"Connected",6:"Disconnected",7:"Disconnecting",8:"Attached",9:"Redirect",10:"Reconnecting"},g_=[0,1,2,3,4,7,10];Yc.plugins.add("converse-controlbox",{dependencies:["converse-modal","converse-chatboxes","converse-chat","converse-rosterview","converse-chatview"],enabled:e=>!e.api.settings.get("singleton"),overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e&&"controlbox"==e.id?new n.ControlBox(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){function e(){const e=new Lc.ControlBox({id:"controlbox"});return Lc.chatboxes.add(e)}qc.settings.extend({allow_logout:!0,default_domain:void 0,locked_domain:void 0,show_controlbox_by_default:!1,sticky_controlbox:!1}),qc.promises.add("controlBoxInitialized"),Lc.ControlBox=Lc.ChatBox.extend({defaults(){return{bookmarked:!1,box_id:"controlbox",chat_state:void 0,closed:!qc.settings.get("show_controlbox_by_default"),num_unread:0,time_opened:this.get("time_opened")||(new Date).getTime(),type:Lc.CONTROLBOX_TYPE,url:""}},initialize(){"controlbox"===this.get("id")?this.set({time_opened:d_(0).valueOf()}):Lc.ChatBox.prototype.initialize.apply(this,arguments)},validate(e){return e.type===Lc.CONTROLBOX_TYPE?"embedded"===qc.settings.get("view_mode")&&qc.settings.get("singleton")?"Controlbox not relevant in embedded view mode":void 0:Lc.ChatBox.prototype.validate.call(this,e)},maybeShow(e){return e||"controlbox"!==this.get("id")?Lc.ChatBox.prototype.maybeShow.call(this,e):this},onReconnection:function(){}}),Lc.ControlBoxView=Lc.ChatBoxView.extend({tagName:"div",className:"chatbox",id:"controlbox",events:{"click a.close-chatbox-button":"close"},initialize(){void 0===Lc.controlboxtoggle&&(Lc.controlboxtoggle=new Lc.ControlBoxToggle),Lc.controlboxtoggle.el.insertAdjacentElement("afterend",this.el),this.listenTo(this.model,"change:connected",this.onConnected),this.listenTo(this.model,"destroy",this.hide),this.listenTo(this.model,"hide",this.hide),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"change:closed",this.ensureClosedState),this.render(),qc.trigger("controlBoxInitialized",this)},render(){this.model.get("connected")&&void 0===this.model.get("closed")&&this.model.set("closed",!qc.settings.get("show_controlbox_by_default"));const e=(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?c_(Object(n),!0).forEach((function(t){l_(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):c_(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({sticky_controlbox:qc.settings.get("sticky_controlbox")},this.model.toJSON()),Ga(Gv(),t.sticky_controlbox?"":Ga(Vv())));var t;Wa(e,this.el),this.model.get("closed")?this.hide():this.show();const n=(null==Lc?void 0:Lc.connection)||{};return n.connected&&n.authenticated&&!n.disconnecting?this.model.get("connected")&&this.renderControlBoxPane():this.renderLoginPanel(),this},onConnected(){this.model.get("connected")&&this.render()},renderLoginPanel(){if(this.el.classList.add("logged-out"),this.loginpanel)this.loginpanel.render();else{this.loginpanel=new Lc.LoginPanel({model:new Lc.LoginPanelModel});const e=this.el.querySelector(".controlbox-panes");e.innerHTML="",e.appendChild(this.loginpanel.render().el)}return this.loginpanel.initPopovers(),this},renderControlBoxPane(){this.loginpanel&&(this.loginpanel.remove(),delete this.loginpanel),this.controlbox_pane&&h_.isVisible(this.controlbox_pane.el)||(this.el.classList.remove("logged-out"),this.controlbox_pane=new Lc.ControlBoxPane,this.el.querySelector(".controlbox-panes").insertAdjacentElement("afterBegin",this.controlbox_pane.el))},async close(e){if(e&&e.preventDefault&&e.preventDefault(),"closeAllChatBoxes"===(null==e?void 0:e.name)&&(Lc.disconnection_cause!==Lc.LOGOUT||qc.settings.get("show_controlbox_by_default")))return;if(qc.settings.get("sticky_controlbox"))return;const t=(null==Lc?void 0:Lc.connection)||{};return t.connected&&!t.disconnecting?await new Promise((e,t)=>this.model.save({closed:!0},{success:e,error:t,wait:!0})):this.model.trigger("hide"),qc.trigger("controlBoxClosed",this),this},ensureClosedState(){this.model.get("closed")?this.hide():this.show()},hide(e){if(!qc.settings.get("sticky_controlbox"))return h_.addClass("hidden",this.el),qc.trigger("chatBoxClosed",this),qc.connection.connected()||Lc.controlboxtoggle.render(),Lc.controlboxtoggle.show(e),this},onControlBoxToggleHidden(){this.model.set("closed",!1),this.el.classList.remove("hidden"),qc.trigger("controlBoxOpened",this)},show(){return Lc.controlboxtoggle.hide(()=>this.onControlBoxToggleHidden()),this},showHelpMessages(){}}),Lc.LoginPanelModel=Rs.extend({defaults:{errors:[]}}),Lc.LoginPanel=jd.extend({tagName:"div",id:"converse-login-panel",className:"controlbox-pane fade-in row no-gutters",events:{"submit form#converse-login":"authenticate","change input":"validate"},initialize(){this.listenTo(this.model,"change",this.render),this.listenTo(Lc.connfeedback,"change",this.render),this.render()},toHTML(){const e=Lc.connfeedback.get("connection_status");let t,n;return g_.includes(e)&&(n=p_[e],t=f_[n]),a_(Object.assign(this.model.toJSON(),{_converse:Lc,ANONYMOUS:Lc.ANONYMOUS,EXTERNAL:Lc.EXTERNAL,LOGIN:Lc.LOGIN,PREBIND:Lc.PREBIND,auto_login:qc.settings.get("auto_login"),authentication:qc.settings.get("authentication"),connection_status:e,conn_feedback_class:t,conn_feedback_subject:n,conn_feedback_message:Lc.connfeedback.get("message"),placeholder_username:(qc.settings.get("locked_domain")||qc.settings.get("default_domain"))&&dd("Username")||dd("user@domain"),show_trust_checkbox:"on"!==Lc.trusted&&"off"!==Lc.trusted}))},initPopovers(){Array.from(this.el.querySelectorAll("[data-title]")).forEach(e=>{new Rd.a.Popover(e,{trigger:"mobile"===qc.settings.get("view_mode")?"click":"hover",dismissible:"mobile"===qc.settings.get("view_mode"),container:this.el.parentElement.parentElement.parentElement})})},validate(){const e=this.el.querySelector("form").querySelector("input[name=jid]");return!e.value||qc.settings.get("locked_domain")||qc.settings.get("default_domain")||h_.isValidJID(e.value)?(e.setCustomValidity(""),!0):(e.setCustomValidity(dd("Please enter a valid XMPP address")),!1)},authenticate(e){if(e&&e.preventDefault&&e.preventDefault(),qc.settings.get("authentication")===Lc.ANONYMOUS)return this.connect(Lc.jid,null);if(!this.validate())return;const t=new FormData(e.target);"on"===Lc.trusted||"off"===Lc.trusted?Lc.config.save({trusted:"on"===Lc.trusted,storage:"on"===Lc.trusted?"persistent":"session"}):Lc.config.save({trusted:!!t.get("trusted"),storage:t.get("trusted")?"persistent":"session"});let n=t.get("jid");if(qc.settings.get("locked_domain")){const e="@"+qc.settings.get("locked_domain");n.endsWith(e)&&(n=n.substr(0,n.length-e.length)),n=u_.escapeNode(n)+e}else qc.settings.get("default_domain")&&!n.includes("@")&&(n=n+"@"+qc.settings.get("default_domain"));this.connect(n,t.get("password"))},connect(e,t){["converse/login","converse/register"].includes(Lc.router.history.getFragment())&&Lc.router.navigate("",{replace:!0}),Lc.connection&&Lc.connection.reset(),qc.user.login(e,t)}}),Lc.ControlBoxPane=jd.extend({tagName:"div",className:"controlbox-pane",initialize(){qc.trigger("controlBoxPaneInitialized",this)}}),Lc.ControlBoxToggle=jd.extend({tagName:"a",className:"toggle-controlbox hidden",id:"toggle-controlbox",events:{click:"onClick"},attributes:{href:"#"},initialize(){Lc.chatboxviews.insertRowColumn(this.render().el),qc.waitUntil("initialized").then(this.render.bind(this)).catch(e=>Pn.fatal(e))},render(){return this.el.innerHTML=Qv()({label_toggle:qc.connection.connected()?dd("Chat Contacts"):dd("Toggle chat")}),this},hide(e){h_.isVisible(this.el)&&(h_.hideElement(this.el),e())},show(e){h_.isVisible(this.el)||h_.fadeIn(this.el,e)},showControlBox(){let t=Lc.chatboxes.get("controlbox");t||(t=e()),qc.connection.connected()?t.save({closed:!1}):t.trigger("show")},onClick(e){if(e.preventDefault(),h_.isVisible(Lc.root.querySelector("#controlbox"))){const e=Lc.chatboxes.get("controlbox");qc.connection.connected?e.save({closed:!0}):e.trigger("hide")}else this.showControlBox()}}),qc.listen.on("cleanup",()=>delete Lc.controlboxtoggle),qc.listen.on("chatBoxViewsInitialized",()=>{Lc.chatboxes.on("add",e=>{if(e.get("type")===Lc.CONTROLBOX_TYPE){const t=Lc.chatboxviews,n=t.get(e.get("id"));n?(n.model=e,n.initialize()):t.add(e.get("id"),new Lc.ControlBoxView({model:e}))}})}),qc.listen.on("clearSession",()=>{const e=null==Lc?void 0:Lc.chatboxviews,t=e&&e.get("controlbox");t&&(h_.safeSave(t.model,{connected:!1}),(null==t?void 0:t.controlbox_pane)&&(t.controlbox_pane.remove(),delete t.controlbox_pane))}),qc.waitUntil("chatBoxViewsInitialized").then(e).catch(e=>Pn.fatal(e)),qc.listen.on("chatBoxesFetched",()=>{(Lc.chatboxes.get("controlbox")||e()).save({connected:!0})});const t=function(){const e=Lc.chatboxviews.get("controlbox");return e.model.set({connected:!1}),e};qc.listen.on("disconnected",()=>t().renderLoginPanel()),qc.listen.on("will-reconnect",t),Object.assign(qc,{controlbox:{async open(){await qc.waitUntil("chatBoxesFetched");const e=await qc.chatboxes.get("controlbox")||qc.chatboxes.create("controlbox",{},Lc.Controlbox);return e.trigger("show"),e},get:()=>Lc.chatboxviews.get("controlbox")}})}});var m_=n(137),v_=n.n(m_); + */const jb=rl.env.utils;function Tb(){Uc.chatboxes.on("add",e=>{if(e.get("type")===Uc.CONTROLBOX_TYPE){const t=Uc.chatboxviews,n=t.get(e.get("id"));n?(n.model=e,n.initialize()):t.add(e.get("id"),new Uc.ControlBoxView({model:e}))}})}function Ob(){const e=Uc.chatboxviews.get("controlbox");return e.model.set({connected:!1}),e}function kb(){const e=null==Uc?void 0:Uc.chatboxviews,t=e&&e.get("controlbox");t&&(jb.safeSave(t.model,{connected:!1}),(null==t?void 0:t.controlbox_pane)&&(t.controlbox_pane.remove(),delete t.controlbox_pane))}function Nb(){(Uc.chatboxes.get("controlbox")||eb()).save({connected:!0})}rl.plugins.add("converse-controlbox",{dependencies:["converse-modal","converse-chatboxes","converse-chat","converse-rosterview","converse-chatview"],enabled:e=>!e.api.settings.get("singleton"),overrides:{ChatBoxes:{model(e,t){const{_converse:n}=this.__super__;return e&&"controlbox"==e.id?new n.ControlBox(e,t):this.__super__.model.apply(this,arguments)}}},initialize(){Vc.settings.extend({allow_logout:!0,allow_user_trust_override:!0,default_domain:void 0,locked_domain:void 0,show_controlbox_by_default:!1,sticky_controlbox:!1}),Vc.promises.add("controlBoxInitialized"),Object.assign(Vc,Cb),Uc.ControlBox=Uc.ChatBox.extend(Q_),Uc.ControlBoxView=Uc.ChatBoxView.extend(ab),Uc.LoginPanelModel=Eb,Uc.LoginPanel=Ab,Uc.ControlBoxPane=Y_,Uc.ControlBoxToggle=nb,Vc.listen.on("chatBoxViewsInitialized",Tb),Vc.listen.on("chatBoxesFetched",Nb),Vc.listen.on("cleanup",()=>delete Uc.controlboxtoggle),Vc.listen.on("clearSession",kb),Vc.listen.on("disconnected",()=>Ob().renderLoginPanel()),Vc.listen.on("will-reconnect",Ob),Vc.waitUntil("chatBoxViewsInitialized").then(eb).catch(e=>zn.fatal(e))}});var Ib=n(178),Mb=n.n(Ib); /** * @module converse-dragresize * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const __=Yc.env.utils;function b_(e,t){const n=t.el.querySelector(".box-flyout"),r=document.createElement("div");r.innerHTML=v_()(),n.insertBefore(r,n.firstChild)}function y_(){const e=S_(['<span class="message-count badge badge-light">',"</span>"]);return y_=function(){return e},e}function w_(){const e=S_(['\n <div class="chat-head-',' chat-head row no-gutters">\n <a class="restore-chat w-100 align-self-center" title="','" @click=',">\n ","\n ",'\n </a>\n <a class="chatbox-btn close-chatbox-button fa fa-times" @click=',"></a>\n </div>"]);return w_=function(){return e},e}function S_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Yc.plugins.add("converse-dragresize",{dependencies:["converse-chatview","converse-headlines-view","converse-muc-views"],enabled:e=>"overlayed"==e.api.settings.get("view_mode"),overrides:{ChatBox:{initialize(){const e=this.__super__.initialize.apply(this,arguments),t=this.get("height"),n=this.get("width");return("controlbox"===this.get("id")?e=>this.set(e):e=>this.save(e))({height:__.applyDragResistance(t,this.get("default_height")),width:__.applyDragResistance(n,this.get("default_width"))}),e}},ChatBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return b_(this.__super__._converse,this),this.setWidth(),e}},HeadlinesBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return b_(this.__super__._converse,this),this.setWidth(),e}},ControlBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return b_(this.__super__._converse,this),this.setWidth(),e},renderLoginPanel(){const e=this.__super__.renderLoginPanel.apply(this,arguments);return this.initDragResize().setDimensions(),e},renderControlBoxPane(){const e=this.__super__.renderControlBoxPane.apply(this,arguments);return this.initDragResize().setDimensions(),e}},ChatRoomView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return b_(this.__super__._converse,this),this.setWidth(),e}}},initialize(){qc.settings.extend({allow_dragresize:!0});const e={initDragResize(){var e;const t=this,n=Tc(()=>t.setDimensions());window.addEventListener("resize",t.debouncedSetDimensions),this.listenTo(this.model,"destroy",()=>window.removeEventListener("resize",n));const r=this.el.querySelector(".box-flyout"),i=window.getComputedStyle(r);if(void 0===this.model.get("height")){const e=parseInt(i.height.replace(/px$/,""),10),t=parseInt(i.width.replace(/px$/,""),10);this.model.set("height",e),this.model.set("default_height",e),this.model.set("width",t),this.model.set("default_width",t)}const s=i["min-width"],o=i["min-height"];return this.model.set("min_width",s.endsWith("px")?Number(s.replace(/px$/,"")):0),this.model.set("min_height",o.endsWith("px")?Number(o.replace(/px$/,"")):0),this.prev_pageY=0,this.prev_pageX=0,(null===(e=Lc.connection)||void 0===e?void 0:e.connected)&&(this.height=this.model.get("height"),this.width=this.model.get("width")),this},resizeChatBox(e){let t;0===Lc.resizing.direction.indexOf("top")&&(t=e.pageY-this.prev_pageY,t&&(this.height=this.height-t>(this.model.get("min_height")||0)?this.height-t:this.model.get("min_height"),this.prev_pageY=e.pageY,this.setChatBoxHeight(this.height))),Lc.resizing.direction.includes("left")&&(t=this.prev_pageX-e.pageX,t&&(this.width=this.width+t>(this.model.get("min_width")||0)?this.width+t:this.model.get("min_width"),this.prev_pageX=e.pageX,this.setChatBoxWidth(this.width)))},setWidth(){this.model.get("width")&&(this.el.style.width=this.model.get("width"))},setDimensions(){this.adjustToViewport(),this.setChatBoxHeight(this.model.get("height")),this.setChatBoxWidth(this.model.get("width"))},setChatBoxHeight(e){e=e?__.applyDragResistance(e,this.model.get("default_height"))+"px":"";const t=this.el.querySelector(".box-flyout");null!==t&&(t.style.height=e)},setChatBoxWidth(e){e=e?__.applyDragResistance(e,this.model.get("default_width"))+"px":"",this.el.style.width=e;const t=this.el.querySelector(".box-flyout");null!==t&&(t.style.width=e)},adjustToViewport(){const e=Math.max(document.documentElement.clientWidth,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight,window.innerHeight||0);e<=480?(this.model.set("height",void 0),this.model.set("width",void 0)):e<=this.model.get("width")?this.model.set("width",void 0):t<=this.model.get("height")&&this.model.set("height",void 0)},onStartVerticalResize(e,t=!0){if(!qc.settings.get("allow_dragresize"))return!0;e.preventDefault();const n=this.el.querySelector(".box-flyout"),r=window.getComputedStyle(n);this.height=parseInt(r.height.replace(/px$/,""),10),Lc.resizing={chatbox:this,direction:"top"},this.prev_pageY=e.pageY,t&&qc.trigger("startVerticalResize",this)},onStartHorizontalResize(e,t=!0){if(!qc.settings.get("allow_dragresize"))return!0;e.preventDefault();const n=this.el.querySelector(".box-flyout"),r=window.getComputedStyle(n);this.width=parseInt(r.width.replace(/px$/,""),10),Lc.resizing={chatbox:this,direction:"left"},this.prev_pageX=e.pageX,t&&qc.trigger("startHorizontalResize",this)},onStartDiagonalResize(e){this.onStartHorizontalResize(e,!1),this.onStartVerticalResize(e,!1),Lc.resizing.direction="topleft",qc.trigger("startDiagonalResize",this)}};function t(e){if(!Lc.resizing||!qc.settings.get("allow_dragresize"))return!0;e.preventDefault(),Lc.resizing.chatbox.resizeChatBox(e)}function n(e){if(!Lc.resizing||!qc.settings.get("allow_dragresize"))return!0;e.preventDefault();const t=__.applyDragResistance(Lc.resizing.chatbox.height,Lc.resizing.chatbox.model.get("default_height")),n=__.applyDragResistance(Lc.resizing.chatbox.width,Lc.resizing.chatbox.model.get("default_width"));qc.connection.connected()?(Lc.resizing.chatbox.model.save({height:t}),Lc.resizing.chatbox.model.save({width:n})):(Lc.resizing.chatbox.model.set({height:t}),Lc.resizing.chatbox.model.set({width:n})),Lc.resizing=null}Object.assign(Lc.ChatBoxView.prototype,e),__.applyDragResistance=function(e,t){if(void 0===e)return;if(void 0===t)return e;return e!==t&&Math.abs(e-t)<10?t:e},qc.listen.on("registeredGlobalEventHandlers",(function(){document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)})),qc.listen.on("unregisteredGlobalEventHandlers",(function(){document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",n)})),qc.listen.on("beforeShowingChatView",e=>e.initDragResize().setDimensions())}}), +const Rb=rl.env.utils;function Db(e,t){const n=t.el.querySelector(".box-flyout"),r=document.createElement("div");r.innerHTML=Mb()(),n.insertBefore(r,n.firstChild)}function Pb(){const e=zb(['<span class="message-count badge badge-light">',"</span>"]);return Pb=function(){return e},e}function Lb(){const e=zb(['\n <div class="chat-head-',' chat-head row no-gutters">\n <a class="restore-chat w-100 align-self-center" title="','" @click=',">\n ","\n ",'\n </a>\n <a class="chatbox-btn close-chatbox-button fa fa-times" @click=',"></a>\n </div>"]);return Lb=function(){return e},e}function zb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}rl.plugins.add("converse-dragresize",{dependencies:["converse-chatview","converse-headlines-view","converse-muc-views"],enabled:e=>"overlayed"==e.api.settings.get("view_mode"),overrides:{ChatBox:{initialize(){const e=this.__super__.initialize.apply(this,arguments),t=this.get("height"),n=this.get("width");return("controlbox"===this.get("id")?e=>this.set(e):e=>this.save(e))({height:Rb.applyDragResistance(t,this.get("default_height")),width:Rb.applyDragResistance(n,this.get("default_width"))}),e}},ChatBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return Db(this.__super__._converse,this),this.setWidth(),e}},HeadlinesBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return Db(this.__super__._converse,this),this.setWidth(),e}},ControlBoxView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return Db(this.__super__._converse,this),this.setWidth(),e},renderLoginPanel(){const e=this.__super__.renderLoginPanel.apply(this,arguments);return this.initDragResize().setDimensions(),e},renderControlBoxPane(){const e=this.__super__.renderControlBoxPane.apply(this,arguments);return this.initDragResize().setDimensions(),e}},ChatRoomView:{events:{"mousedown .dragresize-top":"onStartVerticalResize","mousedown .dragresize-left":"onStartHorizontalResize","mousedown .dragresize-topleft":"onStartDiagonalResize"},render(){const e=this.__super__.render.apply(this,arguments);return Db(this.__super__._converse,this),this.setWidth(),e}}},initialize(){Vc.settings.extend({allow_dragresize:!0});const e={initDragResize(){var e;const t=this,n=Rc(()=>t.setDimensions());window.addEventListener("resize",t.debouncedSetDimensions),this.listenTo(this.model,"destroy",()=>window.removeEventListener("resize",n));const r=this.el.querySelector(".box-flyout"),i=window.getComputedStyle(r);if(void 0===this.model.get("height")){const e=parseInt(i.height.replace(/px$/,""),10),t=parseInt(i.width.replace(/px$/,""),10);this.model.set("height",e),this.model.set("default_height",e),this.model.set("width",t),this.model.set("default_width",t)}const o=i["min-width"],s=i["min-height"];return this.model.set("min_width",o.endsWith("px")?Number(o.replace(/px$/,"")):0),this.model.set("min_height",s.endsWith("px")?Number(s.replace(/px$/,"")):0),this.prev_pageY=0,this.prev_pageX=0,(null===(e=Uc.connection)||void 0===e?void 0:e.connected)&&(this.height=this.model.get("height"),this.width=this.model.get("width")),this},resizeChatBox(e){let t;0===Uc.resizing.direction.indexOf("top")&&(t=e.pageY-this.prev_pageY,t&&(this.height=this.height-t>(this.model.get("min_height")||0)?this.height-t:this.model.get("min_height"),this.prev_pageY=e.pageY,this.setChatBoxHeight(this.height))),Uc.resizing.direction.includes("left")&&(t=this.prev_pageX-e.pageX,t&&(this.width=this.width+t>(this.model.get("min_width")||0)?this.width+t:this.model.get("min_width"),this.prev_pageX=e.pageX,this.setChatBoxWidth(this.width)))},setWidth(){this.model.get("width")&&(this.el.style.width=this.model.get("width"))},setDimensions(){this.adjustToViewport(),this.setChatBoxHeight(this.model.get("height")),this.setChatBoxWidth(this.model.get("width"))},setChatBoxHeight(e){e=e?Rb.applyDragResistance(e,this.model.get("default_height"))+"px":"";const t=this.el.querySelector(".box-flyout");null!==t&&(t.style.height=e)},setChatBoxWidth(e){e=e?Rb.applyDragResistance(e,this.model.get("default_width"))+"px":"",this.el.style.width=e;const t=this.el.querySelector(".box-flyout");null!==t&&(t.style.width=e)},adjustToViewport(){const e=Math.max(document.documentElement.clientWidth,window.innerWidth||0),t=Math.max(document.documentElement.clientHeight,window.innerHeight||0);e<=480?(this.model.set("height",void 0),this.model.set("width",void 0)):e<=this.model.get("width")?this.model.set("width",void 0):t<=this.model.get("height")&&this.model.set("height",void 0)},onStartVerticalResize(e,t=!0){if(!Vc.settings.get("allow_dragresize"))return!0;e.preventDefault();const n=this.el.querySelector(".box-flyout"),r=window.getComputedStyle(n);this.height=parseInt(r.height.replace(/px$/,""),10),Uc.resizing={chatbox:this,direction:"top"},this.prev_pageY=e.pageY,t&&Vc.trigger("startVerticalResize",this)},onStartHorizontalResize(e,t=!0){if(!Vc.settings.get("allow_dragresize"))return!0;e.preventDefault();const n=this.el.querySelector(".box-flyout"),r=window.getComputedStyle(n);this.width=parseInt(r.width.replace(/px$/,""),10),Uc.resizing={chatbox:this,direction:"left"},this.prev_pageX=e.pageX,t&&Vc.trigger("startHorizontalResize",this)},onStartDiagonalResize(e){this.onStartHorizontalResize(e,!1),this.onStartVerticalResize(e,!1),Uc.resizing.direction="topleft",Vc.trigger("startDiagonalResize",this)}};function t(e){if(!Uc.resizing||!Vc.settings.get("allow_dragresize"))return!0;e.preventDefault(),Uc.resizing.chatbox.resizeChatBox(e)}function n(e){if(!Uc.resizing||!Vc.settings.get("allow_dragresize"))return!0;e.preventDefault();const t=Rb.applyDragResistance(Uc.resizing.chatbox.height,Uc.resizing.chatbox.model.get("default_height")),n=Rb.applyDragResistance(Uc.resizing.chatbox.width,Uc.resizing.chatbox.model.get("default_width"));Vc.connection.connected()?(Uc.resizing.chatbox.model.save({height:t}),Uc.resizing.chatbox.model.save({width:n})):(Uc.resizing.chatbox.model.set({height:t}),Uc.resizing.chatbox.model.set({width:n})),Uc.resizing=null}Object.assign(Uc.ChatBoxView.prototype,e),Rb.applyDragResistance=function(e,t){if(void 0===e)return;if(void 0===t)return e;return e!==t&&Math.abs(e-t)<10?t:e},Vc.listen.on("registeredGlobalEventHandlers",(function(){document.addEventListener("mousemove",t),document.addEventListener("mouseup",n)})),Vc.listen.on("unregisteredGlobalEventHandlers",(function(){document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",n)})),Vc.listen.on("beforeShowingChatView",e=>e.initDragResize().setDimensions())}}), /** * @module converse-singleton * @copyright JC Brand * @license Mozilla Public License (MPLv2) * @description A plugin which restricts Converse to only one chat. */ -Yc.plugins.add("converse-singleton",{enabled:e=>e.api.settings.get("singleton"),initialize(){if(qc.settings.extend({allow_logout:!1,allow_muc_invitations:!1,hide_muc_server:!0}),!Array.isArray(qc.settings.get("auto_join_rooms"))&&!Array.isArray(qc.settings.get("auto_join_private_chats")))throw new Error("converse-singleton: auto_join_rooms must be an Array");if(qc.settings.get("auto_join_rooms").length>1||qc.settings.get("auto_join_private_chats").length>1)throw new Error("It doesn't make sense to have singleton set to true and auto_join_rooms or auto_join_private_chats set to more then one, since only one chat room may be open at any time.")}}), +rl.plugins.add("converse-singleton",{enabled:e=>e.api.settings.get("singleton"),initialize(){if(Vc.settings.extend({allow_logout:!1,allow_muc_invitations:!1,hide_muc_server:!0}),!Array.isArray(Vc.settings.get("auto_join_rooms"))&&!Array.isArray(Vc.settings.get("auto_join_private_chats")))throw new Error("converse-singleton: auto_join_rooms must be an Array");if(Vc.settings.get("auto_join_rooms").length>1||Vc.settings.get("auto_join_private_chats").length>1)throw new Error("It doesn't make sense to have singleton set to true and auto_join_rooms or auto_join_private_chats set to more then one, since only one chat room may be open at any time.")}}), /** * @module converse-fullscreen * @license Mozilla Public License (MPLv2) * @copyright 2020, the Converse.js contributors */ -Yc.plugins.add("converse-fullscreen",{enabled:e=>e.isUniView(),initialize(){qc.settings.extend({chatview_avatar_height:50,chatview_avatar_width:50,hide_open_bookmarks:!0,show_controlbox_by_default:!0,sticky_controlbox:!0})}}), +rl.plugins.add("converse-fullscreen",{enabled:e=>e.isUniView(),initialize(){Vc.settings.extend({chatview_avatar_height:50,chatview_avatar_width:50,hide_open_bookmarks:!0,show_controlbox_by_default:!0,sticky_controlbox:!0})}}), /** * @module converse-mam-views * @description @@ -506,43 +521,36 @@ Yc.plugins.add("converse-fullscreen",{enabled:e=>e.isUniView(),initialize(){qc.s * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -Yc.plugins.add("converse-mam-views",{dependencies:["converse-mam","converse-chatview","converse-muc-views"],initialize(){qc.listen.on("chatBoxScrolledUp",async e=>{if(e.model.messages.length){const t=e.model.getOldestMessage();if(t){const n=e.model.get("jid"),r=t&&t.get("stanza_id ".concat(n));e.addSpinner(),r?await e.model.fetchArchivedMessages({before:r}):await e.model.fetchArchivedMessages({end:t.get("time")}),e.clearSpinner()}}})}});function x_(){const e=A_(["<converse-minimized-chat\n .model=","\n title=","\n type=","\n num_unread=","></converse-minimized-chat>"]);return x_=function(){return e},e}function E_(){const e=A_(['<div id="minimized-chats" class="','">\n <a id="toggle-minimized-chats" class="row no-gutters" @click=',">\n "," ",'\n <span class="unread-message-count ','" href="#">','</span>\n </a>\n <div class="flyout minimized-chats-flyout row no-gutters ','">\n ',"\n </div>\n </div>"]);return E_=function(){return e},e}function A_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-minimized-chat",class extends uc{static get properties(){return{model:{type:Object},title:{type:String},type:{type:String},num_unread:{type:Number}}}render(){return(e=>{const t=dd("Click to restore this chat");return Ga(w_(),e.type,t,e.restore,e.num_unread?Ga(y_(),e.num_unread):"",e.title,e.close)})({close:e=>this.close(e),num_unread:this.num_unread,restore:e=>this.restore(e),title:this.title,type:this.type})}close(e){null==e||e.preventDefault();const t=Lc.chatboxviews.get(this.model.get("id"));t?t.close():(this.model.destroy(),qc.trigger("chatBoxClosed",this))}restore(e){null==e||e.preventDefault(),this.model.maximize()}}); +rl.plugins.add("converse-mam-views",{dependencies:["converse-mam","converse-chatview","converse-muc-views"],initialize(){Vc.listen.on("chatBoxScrolledUp",async e=>{if(e.model.messages.length){const t=e.model.get("type")===Uc.CHATROOMS_TYPE,n=e.model.getOldestMessage();if(n){const r=t?e.model.get("jid"):Uc.bare_jid,i=n&&n.get("stanza_id ".concat(r));e.addSpinner(),i?await e.model.fetchArchivedMessages({before:i}):await e.model.fetchArchivedMessages({end:n.get("time")}),e.clearSpinner()}}})}});function Fb(){const e=qb(["<converse-minimized-chat\n .model=","\n title=","\n type=","\n num_unread=","></converse-minimized-chat>"]);return Fb=function(){return e},e}function Bb(){const e=qb(['<div id="minimized-chats" class="','">\n <a id="toggle-minimized-chats" class="row no-gutters" @click=',">\n "," ",'\n <span class="unread-message-count ','" href="#">','</span>\n </a>\n <div class="flyout minimized-chats-flyout row no-gutters ','">\n ',"\n </div>\n </div>"]);return Bb=function(){return e},e}function qb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-minimized-chat",class extends mc{static get properties(){return{model:{type:Object},title:{type:String},type:{type:String},num_unread:{type:Number}}}render(){return(e=>{const t=zd("Click to restore this chat");return Za(Lb(),e.type,t,e.restore,e.num_unread?Za(Pb(),e.num_unread):"",e.title,e.close)})({close:e=>this.close(e),num_unread:this.num_unread,restore:e=>this.restore(e),title:this.title,type:this.type})}close(e){null==e||e.preventDefault();const t=Uc.chatboxviews.get(this.model.get("id"));t?t.close():(this.model.destroy(),Vc.trigger("chatBoxClosed",this))}restore(e){null==e||e.preventDefault(),this.model.maximize()}}); /** * @module converse-minimize * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{dayjs:C_}=Yc.env,j_=Yc.env.utils;function T_(){const e=I_(['<div class="form-group">',"</div>"]);return T_=function(){return e},e}function O_(){const e=I_(['<label class="roomid-policy-error">',"</label>"]);return O_=function(){return e},e}function k_(){const e=I_(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="add-chatroom-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form add-chatroom">\n <div class="form-group">\n <label for="chatroom">',":</label>\n ",'\n <input type="text" required="required" name="chatroom" class="form-control roomjid-input" placeholder="','"/>\n </div>\n ',"\n ",'\n <input type="submit" class="btn btn-primary" name="join" value="','" ?disabled=',">\n </form>\n </div>\n </div>\n </div>\n "]);return k_=function(){return e},e}function N_(){const e=I_(['\n <div class="form-group" >\n <label for="nickname">',':</label>\n <input type="text" title="','" required="required" name="nickname" value="','" class="form-control"/>\n </div>\n ']);return N_=function(){return e},e}function I_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Yc.plugins.add("converse-minimize",{dependencies:["converse-chatview","converse-controlbox","converse-muc-views","converse-headlines-view","converse-dragresize"],enabled:e=>"overlayed"===e.api.settings.get("view_mode"),overrides:{ChatBox:{initialize(){this.__super__.initialize.apply(this,arguments),this.on("show",this.maximize,this),"controlbox"!==this.get("id")&&this.save({minimized:this.get("minimized")||!1,time_minimized:this.get("time_minimized")||C_()})},maybeShow(e){return!e&&this.get("minimized")?this:this.__super__.maybeShow.apply(this,arguments)},isHidden(){return this.__super__.isHidden.call(this)||this.get("minimized")}},ChatBoxView:{show(){const{_converse:e}=this.__super__;return"overlayed"===e.api.settings.get("view_mode")&&this.model.get("minimized")?(this.model.minimize(),this):this.__super__.show.apply(this,arguments)},isNewMessageHidden(){return this.model.get("minimized")||this.__super__.isNewMessageHidden.apply(this,arguments)},shouldShowOnTextMessage(){return!this.model.get("minimized")&&this.__super__.shouldShowOnTextMessage.apply(this,arguments)},setChatBoxHeight(e){if(!this.model.get("minimized"))return this.__super__.setChatBoxHeight.call(this,e)},setChatBoxWidth(e){if(!this.model.get("minimized"))return this.__super__.setChatBoxWidth.call(this,e)}}},initialize(){qc.settings.extend({no_trimming:!1});const e={maximize(){j_.safeSave(this,{minimized:!1,time_opened:(new Date).getTime()})},minimize(){j_.safeSave(this,{minimized:!0,time_minimized:(new Date).toISOString()})}};Object.assign(Lc.ChatBox.prototype,e);const t={onMaximized(){const{_converse:e}=this.__super__;return this.insertIntoDOM(),this.model.isScrolledUp()||this.model.clearUnreadMsgCounter(),this.model.setChatState(e.ACTIVE),this.show(),qc.trigger("chatBoxMaximized",this),this},onMinimized(e){const{_converse:t}=this.__super__;return e&&e.preventDefault&&e.preventDefault(),this.model.collection&&this.model.collection.browserStorage?this.model.save({scroll:this.content.scrollTop}):this.model.set({scroll:this.content.scrollTop}),this.model.setChatState(t.INACTIVE),this.hide(),qc.trigger("chatBoxMinimized",this),this},minimize(e){return e&&e.preventDefault&&e.preventDefault(),this.model.minimize(),this},onMinimizedChanged(e){e.get("minimized")?this.onMinimized():this.onMaximized()}};Object.assign(Lc.ChatBoxView.prototype,t);const n={getChatBoxWidth(e){if("controlbox"===e.model.get("id")){const e=this.get("controlbox");return e&&j_.isVisible(e.el)?j_.getOuterWidth(e.el,!0):j_.getOuterWidth(Lc.controlboxtoggle.el,!0)}return!e.model.get("minimized")&&j_.isVisible(e.el)?j_.getOuterWidth(e.el,!0):0},getShownChats(){return this.filter(e=>!e.model.get("minimized")&&!e.model.get("closed")&&j_.isVisible(e.el))},getMinimizedWidth(){var e;const t=null===(e=Lc.minimized_chats)||void 0===e?void 0:e.el;return this.model.pluck("minimized").includes(!0)?j_.getOuterWidth(t,!0):0},getBoxesWidth(e){const t=e?e.model.get("id"):null,n=e?j_.getOuterWidth(e.el,!0):0;return Object.values(this.xget(t)).reduce((e,t)=>e+this.getChatBoxWidth(t),n)},async trimChats(e){var t;if(qc.settings.get("no_trimming")||!qc.connection.connected()||"overlayed"!==qc.settings.get("view_mode"))return;const n=this.getShownChats();if(n.length<=1)return;const r=j_.getOuterWidth(document.querySelector("body"),!0);if(this.getChatBoxWidth(n[0])!==r&&(await qc.waitUntil("minimizedChatsInitialized"),null===(t=Lc.minimized_chats)||void 0===t?void 0:t.el))for(;this.getMinimizedWidth()+this.getBoxesWidth(e)>r;){const t=e?e.model.get("id"):null,n=this.getOldestMaximizedChat([t]);if(!n)break;{const e=this.get(n.get("id"));e&&e.hide(),n.minimize()}}},getOldestMaximizedChat(e){e.push("controlbox");let t=0,n=this.model.sort().at(t);for(;e.includes(n.get("id"))||!0===n.get("minimized");)if(t++,n=this.model.at(t),!n)return null;return n}};Object.assign(Lc.ChatBoxViews.prototype,n),qc.promises.add("minimizedChatsInitialized"),Lc.MinimizedChatsToggle=Rs.extend({defaults:{collapsed:!1}}),Lc.MinimizedChats=jd.extend({tagName:"span",async initialize(){await this.initToggle(),this.render(),this.listenTo(this.minchats,"change:collapsed",this.render),this.listenTo(this.model,"add",this.render),this.listenTo(this.model,"change:fullname",this.render),this.listenTo(this.model,"change:jid",this.render),this.listenTo(this.model,"change:minimized",this.render),this.listenTo(this.model,"change:name",this.render),this.listenTo(this.model,"change:num_unread",this.render),this.listenTo(this.model,"remove",this.render)},render(){const e=this.model.where({minimized:!0}),t=e.reduce((e,t)=>e+t.get("num_unread"),0),n=e.reduce((e,t)=>e+(t.get("minimized")?1:0),0),r={chats:e,num_unread:t,num_minimized:n,collapsed:this.minchats.get("collapsed")};var i;r.toggle=e=>this.toggle(e),Wa((i=r,Ga(E_(),i.chats.length?"":"hidden",i.toggle,i.num_minimized,dd("Minimized"),i.num_unread?"":"unread-message-count-hidden",i.num_unread,i.collapsed?"hidden":"",i.chats.map(e=>Ga(x_(),e,e.getDisplayName(),e.get("type"),e.get("num_unread"))))),this.el),this.el.parentElement||Lc.chatboxviews.insertRowColumn(this.el)},async initToggle(){const e="converse.minchatstoggle-".concat(Lc.bare_jid);this.minchats=new Lc.MinimizedChatsToggle({id:e}),this.minchats.browserStorage=Lc.createStore(e),await new Promise(e=>this.minchats.fetch({success:e,error:e}))},toggle(e){null==e||e.preventDefault(),this.minchats.save({collapsed:!this.minchats.get("collapsed")})}}),qc.listen.on("chatBoxInsertedIntoDOM",e=>Lc.chatboxviews.trimChats(e)),qc.listen.on("connected",()=>{return null===(e=Lc.minimized_chats)||void 0===e||e.remove(),Lc.minimized_chats=new Lc.MinimizedChats({model:Lc.chatboxes}),void qc.trigger("minimizedChatsInitialized");var e}),qc.listen.on("controlBoxOpened",e=>Lc.chatboxviews.trimChats(e)),qc.listen.on("chatBoxViewInitialized",e=>e.listenTo(e.model,"change:minimized",e.onMinimizedChanged)),qc.listen.on("chatRoomViewInitialized",e=>{e.listenTo(e.model,"change:minimized",e.onMinimizedChanged),e.model.get("minimized")&&e.hide()}),qc.listen.on("getHeadingButtons",(e,t)=>e.model.get("type")===Lc.CHATROOMS_TYPE?function(e,t){const n={a_class:"toggle-chatbox-button",handler:t=>e.minimize(t),i18n_text:dd("Minimize"),i18n_title:dd("Minimize this groupchat"),icon_class:"fa-minus",name:"minimize",standalone:"overlayed"===Lc.api.settings.get("view_mode")},r=t.map(e=>e.name).indexOf("signout");return r>-1?[...t.slice(0,r),n,...t.slice(r)]:[n,...t]}(e,t):function(e,t){const n={a_class:"toggle-chatbox-button",handler:t=>e.minimize(t),i18n_text:dd("Minimize"),i18n_title:dd("Minimize this chat"),icon_class:"fa-minus",name:"minimize",standalone:"overlayed"===Lc.api.settings.get("view_mode")},r=t.map(e=>e.name).indexOf("close");return r>-1?[...t.slice(0,r),n,...t.slice(r)]:[n,...t]}(e,t));const r=Tc(()=>Lc.chatboxviews.trimChats(),250);qc.listen.on("registeredGlobalEventHandlers",()=>window.addEventListener("resize",r)),qc.listen.on("unregisteredGlobalEventHandlers",()=>window.removeEventListener("resize",r))}});var M_=e=>{const t=dd("Join"),n=dd("Enter a new Groupchat");return Ga(k_(),n,Bd,e.label_room_address,e.muc_roomid_policy_error_msg?Ga(O_(),e.muc_roomid_policy_error_msg):"",e.chatroom_placeholder,e.muc_roomid_policy_hint?Ga(T_(),pp(hp.a.filterXSS(e.muc_roomid_policy_hint,{whiteList:{b:[],br:[],em:[]}}))):"",e._converse.locked_muc_nickname?"":(e=>{const t=dd("Nickname"),n=dd("This field is required");return Ga(N_(),t,n,e.nick||"")})(e),t||"",e.muc_roomid_policy_error_msg)},R_=n(20);const D_=Yc.env.utils;var P_=Kd.extend({id:"add-chatroom-modal",events:{"submit form.add-chatroom":"openChatRoom","keyup .roomjid-input":"checkRoomidPolicy","change .roomjid-input":"checkRoomidPolicy"},initialize(){Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:muc_domain",this.render),this.muc_roomid_policy_error_msg=null},toHTML(){let e="";if(!qc.settings.get("locked_muc_domain")){const t=this.model.get("muc_domain")||qc.settings.get("muc_domain");e=t?"name@".concat(t):dd("name@conference.example.org")}return M_(Object.assign(this.model.toJSON(),{_converse:Lc,label_room_address:qc.settings.get("muc_domain")?dd("Groupchat name"):dd("Groupchat address"),chatroom_placeholder:e,muc_roomid_policy_error_msg:this.muc_roomid_policy_error_msg,muc_roomid_policy_hint:qc.settings.get("muc_roomid_policy_hint")}))},afterRender(){this.el.addEventListener("shown.bs.modal",()=>{this.el.querySelector('input[name="chatroom"]').focus()},!1)},parseRoomDataFromEvent(e){const t=new FormData(e),n=t.get("chatroom");let r;if(qc.settings.get("locked_muc_nickname")){if(r=Lc.getDefaultMUCNickname(),!r)throw new Error("Using locked_muc_nickname but no nickname found!")}else r=t.get("nickname").trim();return{jid:n,nick:r}},openChatRoom(e){e.preventDefault();const t=this.parseRoomDataFromEvent(e.target);let n;""===t.nick&&(t.nick=void 0),qc.settings.get("locked_muc_domain")||qc.settings.get("muc_domain")&&!D_.isValidJID(t.jid)?n="".concat(R_.b.escapeNode(t.jid),"@").concat(qc.settings.get("muc_domain")):(n=t.jid,this.model.setDomain(n)),qc.rooms.open(n,Object.assign(t,{jid:n}),!0),this.modal.hide(),e.target.reset()},checkRoomidPolicy(){if(qc.settings.get("muc_roomid_policy")&&qc.settings.get("muc_domain")){let e=this.el.querySelector(".roomjid-input").value;!Yc.locked_muc_domain&&D_.isValidJID(e)||(e="".concat(R_.b.escapeNode(e),"@").concat(qc.settings.get("muc_domain")));const t=R_.b.getNodeFromJid(e),n=R_.b.getDomainFromJid(e);qc.settings.get("muc_domain")!==n||qc.settings.get("muc_roomid_policy").test(t)?this.muc_roomid_policy_error_msg=null:this.muc_roomid_policy_error_msg=dd("Groupchat id is invalid."),this.render()}}});function L_(){const e=F_(['<div class="error error-feedback">',"</div>"]);return L_=function(){return e},e}function z_(){const e=F_(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="add-chatroom-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="suggestion-box room-invite">\n <form @submit=','>\n <div class="form-group">\n <label class="clearfix" for="invitee_jids">',":</label>\n ",'\n <input class="form-control suggestion-box__input"\n required="required"\n name="invitee_jids"\n id="invitee_jids"\n placeholder="','"\n type="text"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n <ul class="suggestion-box__results suggestion-box__results--below" hidden=""></ul>\n </div>\n <div class="form-group">\n <label>',':</label>\n <textarea class="form-control" name="reason"></textarea>\n </div>\n <div class="form-group">\n <button type="submit" class="btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n "]);return z_=function(){return e},e}function F_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const B_=Yc.env.utils;var q_=Kd.extend({id:"muc-invite-modal",initialize(){Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.initInviteWidget()},toHTML(){return(e=>{const t=dd("Invite"),n=dd("Invite someone to this groupchat"),r=dd("user@example.org"),i=dd("Please enter a valid XMPP address"),s=dd("XMPP Address"),o=dd("Optional reason for the invitation");return Ga(z_(),n,Bd,e.submitInviteForm,s,e.invalid_invite_jid?Ga(L_(),i):"",r,o,t)})(Object.assign(this.model.toJSON(),{submitInviteForm:e=>this.submitInviteForm(e)}))},initInviteWidget(){this.invite_auto_complete&&this.invite_auto_complete.destroy();const e=Lc.roster.map(e=>({label:e.getDisplayName(),value:e.get("jid")})),t=this.el.querySelector(".suggestion-box").parentElement;this.invite_auto_complete=new Lc.AutoComplete(t,{min_chars:1,list:e})},submitInviteForm(e){e.preventDefault();const t=new FormData(e.target),n=t.get("invitee_jids"),r=t.get("reason");B_.isValidJID(n)?(this.chatroomview.model.directInvite(n,r),this.modal.hide()):this.model.set({invalid_invite_jid:!0})}});function H_(){const e=G_(['<li class="list-group-item active">',"</li>"]);return H_=function(){return e},e}function U_(){const e=G_(['<li class="list-group-item"> '," </li>"]);return U_=function(){return e},e}function $_(){const e=G_(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="list-chatrooms-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body d-flex flex-column">\n <span class="modal-alert"></span>\n ','\n <ul class="available-chatrooms list-group">\n ',"\n ","\n ",'\n </ul>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n "]);return $_=function(){return e},e}function W_(){const e=G_(['\n <li class="room-item list-group-item">\n <div class="available-chatroom d-flex flex-row">\n <a class="open-room available-room w-100"\n @click=','\n data-room-jid="','"\n data-room-name="','"\n title="','"\n href="#">','</a>\n <a class="right room-info icon-room-info"\n @click=','\n data-room-jid="','"\n title="','"\n href="#"></a>\n </div>\n </li>\n ']);return W_=function(){return e},e}function V_(){const e=G_(['\n <form class="converse-form list-chatrooms"\n @submit=','>\n <div class="form-group">\n <label for="chatroom">',':</label>\n <input type="text"\n @change=','\n value="','"\n required="required"\n name="server"\n class="form-control"\n placeholder="','"/>\n </div>\n <input type="submit" class="btn btn-primary" name="list" value="','"/>\n </form>\n ']);return V_=function(){return e},e}function G_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var J_=e=>{const t=dd("Query for Groupchats");return Ga($_(),t,Bd,e.show_form?(e=>{const t=dd("Show groupchats"),n=dd("Server address");return Ga(V_(),e.submitForm,n,e.setDomainFromEvent,e.muc_domain||"",e.server_placeholder,t)})(e):"",e.loading_items?Ga(U_(),Tf()):"",e.feedback_text?Ga(H_(),e.feedback_text):"",np(e.items,e=>e.jid,t=>((e,t)=>{const n=dd("Show more information on this groupchat"),r=dd("Click to open this groupchat");return Ga(W_(),e.openRoom,t.jid,t.name,r,t.name||t.jid,e.toggleRoomInfo,t.jid,n)})(e,t)),Fd)},X_=n(138),Q_=n.n(X_);const Y_=Yc.env.utils;function K_(e){const t=Y_.ancestor(e.target,".room-item"),n=t.querySelector("div.room-info");n?(Y_.slideIn(n).then(Y_.removeElement),t.querySelector("a.room-info").classList.remove("selected")):(t.insertAdjacentElement("beforeend",Y_.getElementFromTemplateResult(Tf())),qc.disco.info(e.target.getAttribute("data-room-jid"),null).then(e=>function(e,t){var n,r;e.querySelector("span.spinner").remove(),e.querySelector("a.room-info").classList.add("selected"),e.insertAdjacentHTML("beforeEnd",Q_()({jid:t.getAttribute("from"),desc:null===(n=hg(ur()('field[var="muc#roominfo_description"] value',t)))||void 0===n?void 0:n.textContent,occ:null===(r=hg(ur()('field[var="muc#roominfo_occupants"] value',t)))||void 0===r?void 0:r.textContent,hidden:ur()('feature[var="muc_hidden"]',t).length,membersonly:ur()('feature[var="muc_membersonly"]',t).length,moderated:ur()('feature[var="muc_moderated"]',t).length,nonanonymous:ur()('feature[var="muc_nonanonymous"]',t).length,open:ur()('feature[var="muc_open"]',t).length,passwordprotected:ur()('feature[var="muc_passwordprotected"]',t).length,persistent:ur()('feature[var="muc_persistent"]',t).length,publicroom:ur()('feature[var="muc_publicroom"]',t).length,semianonymous:ur()('feature[var="muc_semianonymous"]',t).length,temporary:ur()('feature[var="muc_temporary"]',t).length,unmoderated:ur()('feature[var="muc_unmoderated"]',t).length,label_desc:dd("Description:"),label_jid:dd("Groupchat Address (JID):"),label_occ:dd("Participants:"),label_features:dd("Features:"),label_requires_auth:dd("Requires authentication"),label_hidden:dd("Hidden"),label_requires_invite:dd("Requires an invitation"),label_moderated:dd("Moderated"),label_non_anon:dd("Non-anonymous"),label_open_room:dd("Open"),label_permanent_room:dd("Permanent"),label_public:dd("Public"),label_semi_anon:dd("Semi-anonymous"),label_temp_room:dd("Temporary"),label_unmoderated:dd("Unmoderated")}))}(t,e)).catch(e=>Pn.error(e)))}var Z_=Kd.extend({id:"list-chatrooms-modal",initialize(){this.items=[],this.loading_items=!1,Kd.prototype.initialize.apply(this,arguments),qc.settings.get("muc_domain")&&!this.model.get("muc_domain")&&this.model.save("muc_domain",qc.settings.get("muc_domain")),this.listenTo(this.model,"change:muc_domain",this.onDomainChange),this.el.addEventListener("shown.bs.modal",()=>qc.settings.get("locked_muc_domain")?this.updateRoomsList():this.el.querySelector('input[name="server"]').focus())},toHTML(){const e=this.model.get("muc_domain")||qc.settings.get("muc_domain");return J_(Object.assign(this.model.toJSON(),{show_form:!qc.settings.get("locked_muc_domain"),server_placeholder:e||dd("conference.example.org"),items:this.items,loading_items:this.loading_items,openRoom:e=>this.openRoom(e),setDomainFromEvent:e=>this.setDomainFromEvent(e),submitForm:e=>this.showRooms(e),toggleRoomInfo:e=>this.toggleRoomInfo(e)}))},openRoom(e){e.preventDefault();const t=e.target.getAttribute("data-room-jid"),n=e.target.getAttribute("data-room-name");this.modal.hide(),qc.rooms.open(t,{name:n},!0)},toggleRoomInfo(e){e.preventDefault(),K_(e)},onDomainChange(){qc.settings.get("auto_list_rooms")&&this.updateRoomsList()},onRoomsFound(e){this.loading_items=!1;const t=e?ur()("query item",e):[];return t.length?(this.model.set({feedback_text:dd("Groupchats found")},{silent:!0}),this.items=t.map(ao.getAttributes)):(this.items=[],this.model.set({feedback_text:dd("No groupchats found")},{silent:!0})),this.render(),!0},updateRoomsList(){const e=Object(R_.a)({to:this.model.get("muc_domain"),from:Lc.connection.jid,type:"get"}).c("query",{xmlns:R_.b.NS.DISCO_ITEMS});qc.sendIQ(e).then(e=>this.onRoomsFound(e)).catch(()=>this.onRoomsFound())},showRooms(e){e.preventDefault(),this.loading_items=!0,this.render();const t=new FormData(e.target);this.model.setDomain(t.get("server")),this.updateRoomsList()},setDomainFromEvent(e){this.model.setDomain(e.target.value)},setNick(e){this.model.save({nick:e.target.value})}});function eb(){const e=wb(['<li class="list-group-item">',"</li>"]);return eb=function(){return e},e}function tb(){const e=wb(['<li class="list-group-item"> '," </li>"]);return tb=function(){return e},e}function nb(){const e=wb(['<div class="row"><div class="col pt-2"><p class="helptext pb-3">',"</p></div></div>"]);return nb=function(){return e},e}function rb(){const e=wb(['<input class="form-control" .value="','" @keyup=',' type="text" name="filter" placeholder="','"/>']);return rb=function(){return e},e}function ib(){const e=wb(['<li class="list-group-item">',"</li>"]);return ib=function(){return e},e}function sb(){const e=wb(['<li class="list-group-item">',"</li>"]);return sb=function(){return e},e}function ob(){const e=wb(['<li class="list-group-item"> '," </li>"]);return ob=function(){return e},e}function ab(){const e=wb(['<div class="row"><div class="col pt-2"><p class="helptext pb-3">',"</p></div></div>"]);return ab=function(){return e},e}function cb(){const e=wb(['<input class="form-control" .value="','" @keyup=',' type="text" name="filter" placeholder="','"/>']);return cb=function(){return e},e}function lb(){const e=wb(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="converse-modtools-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body d-flex flex-column">\n <span class="modal-alert"></span>\n\n ','\n\n <div class="tab-content">\n <div class="tab-pane tab-pane--columns ','" id="affiliations-tabpanel" role="tabpanel" aria-labelledby="affiliations-tab">\n <form class="converse-form query-affiliation" @submit=','>\n <p class="helptext pb-3">','</p>\n <div class="form-group">\n <label for="affiliation">\n <strong>',':</strong>\n </label>\n <div class="row">\n <div class="col">\n <select class="custom-select select-affiliation" name="affiliation">\n ','\n </select>\n </div>\n <div class="col">\n <input type="submit" class="btn btn-primary" name="users_with_affiliation" value="','"/>\n </div>\n </div>\n <div class="row">\n <div class="col mt-3">\n ',"\n </div>\n </div>\n\n ",'\n </div>\n </form>\n <div class="scrollable-container">\n <ul class="list-group list-group--users">\n ',"\n ","\n\n ",'\n </ul>\n </div>\n </div>\n\n <div class="tab-pane tab-pane--columns ','" id="roles-tabpanel" role="tabpanel" aria-labelledby="roles-tab">\n <form class="converse-form query-role" @submit=','>\n <p class="helptext pb-3">','</p>\n <div class="form-group">\n <label for="role"><strong>',':</strong></label>\n <div class="row">\n <div class="col">\n <select class="custom-select select-role" name="role">\n ','\n </select>\n </div>\n <div class="col">\n <input type="submit" class="btn btn-primary" name="users_with_role" value="','"/>\n </div>\n </div>\n <div class="row">\n <div class="col mt-3">\n ',"\n </div>\n </div>\n\n ",'\n </div>\n </form>\n <div class="scrollable-container">\n <ul class="list-group list-group--users">\n ',"\n ","\n ","\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>"]);return lb=function(){return e},e}function ub(){const e=wb(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="affiliations-tab" href="#affiliations-tabpanel" aria-controls="affiliations-tabpanel" role="tab" data-toggle="tab" @click=','>Affiliations</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="roles-tab" href="#roles-tabpanel" aria-controls="roles-tabpanel" role="tab" data-toggle="tab" @click=',">Roles</a>\n </li>\n </ul>\n"]);return ub=function(){return e},e}function db(){const e=wb(['<a href="#" data-form="affiliation-form" class="toggle-form right fa fa-wrench" @click=',"></a>"]);return db=function(){return e},e}function hb(){const e=wb(['\n <li class="list-group-item" data-nick="','">\n <ul class="list-group">\n <li class="list-group-item active">\n <div><strong>JID:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Nickname:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Affiliation:</strong> '," ","</div>\n ","\n </li>\n </ul>\n </li>\n"]);return hb=function(){return e},e}function fb(){const e=wb(['<option value="','" ?selected=',">","</option>"]);return fb=function(){return e},e}function pb(){const e=wb(['\n <form class="affiliation-form hidden" @submit=','>\n <div class="form-group">\n <input type="hidden" name="jid" value="','"/>\n <input type="hidden" name="nick" value="','"/>\n <div class="row">\n <div class="col">\n <label><strong>',':</strong></label>\n <select class="custom-select select-affiliation" name="affiliation">\n ','\n </select>\n </div>\n <div class="col">\n <label><strong>',':</strong></label>\n <input class="form-control" type="text" name="reason"/>\n </div>\n </div>\n </div>\n <div class="form-group">\n <input type="submit" class="btn btn-primary" name="change" value="','"/>\n </div>\n </form>\n ']);return pb=function(){return e},e}function gb(){const e=wb(['<a href="#" data-form="role-form" class="toggle-form right fa fa-wrench" @click=',"></a>"]);return gb=function(){return e},e}function mb(){const e=wb(['\n <li class="list-group-item" data-nick="','">\n <ul class="list-group">\n <li class="list-group-item active">\n <div><strong>JID:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Nickname:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Role:</strong> '," ","</div>\n ","\n </li>\n </ul>\n </li>\n"]);return mb=function(){return e},e}function vb(){const e=wb(['<option value="','" ?selected=',">","</option>"]);return vb=function(){return e},e}function _b(){const e=wb(['\n <form class="role-form hidden" @submit=','>\n <div class="form-group">\n <input type="hidden" name="jid" value="','"/>\n <input type="hidden" name="nick" value="','"/>\n <div class="row">\n <div class="col">\n <label><strong>',':</strong></label>\n <select class="custom-select select-role" name="role">\n ','\n </select>\n </div>\n <div class="col">\n <label><strong>',':</strong></label>\n <input class="form-control" type="text" name="reason"/>\n </div>\n </div>\n </div>\n <div class="form-group">\n <input type="submit" class="btn btn-primary" value="','"/>\n </div>\n </form>\n ']);return _b=function(){return e},e}function bb(){const e=wb(['\n <option value="','"\n ?selected=','\n title="','">',"</option>\n"]);return bb=function(){return e},e}function yb(){const e=wb(['\n <option value="','"\n ?selected=','\n title="','">',"</option>\n"]);return yb=function(){return e},e}function wb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Sb(e){return"moderator"===e?dd("Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations."):"participant"===e?dd("The default role, implies that you can read and write messages."):"visitor"==e?dd("Visitors aren't allowed to write messages in a moderated multi-user chat."):void 0}function xb(e){return"owner"===e?dd("Owner is the highest affiliation. Owners can modify roles and affiliations of all other users."):"admin"===e?dd("Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners."):"outcast"===e?dd('To ban a user, you give them the affiliation of "outcast".'):void 0}const Eb=e=>Ga(mb(),e.item.nick,e.item.jid,e.item.nick,e.item.role,e.assignable_roles.length?Ga(gb(),e.toggleForm):"",e.assignable_roles.length?(e=>{const t=dd("Change role"),n=dd("New Role"),r=dd("Reason");return Ga(_b(),e.assignRole,e.item.jid,e.item.nick,n,e.assignable_roles.map(t=>Ga(vb(),t,t===e.item.role,t)),r,t)})(e):""),Ab=e=>Ga(hb(),e.item.nick,e.item.jid,e.item.nick,e.item.affiliation,e.assignable_affiliations.length?Ga(db(),e.toggleForm):"",e.assignable_affiliations.length?(e=>{const t=dd("Change affiliation"),n=dd("New affiliation"),r=dd("Reason");return Ga(pb(),e.assignAffiliation,e.item.jid,e.item.nick,n,e.assignable_affiliations.map(t=>Ga(fb(),t,t===e.item.affiliation,t)),r,t)})(e):"");var Cb=e=>{const t=dd("Affiliation"),n=dd("Moderator Tools"),r=dd("No users with that affiliation found."),i=dd("No users with that role found."),s=dd("Type here to filter the search results"),o=dd("Role"),a=dd("Show users"),c=dd("Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They're assigned either explicitly or implicitly as part of an affiliation. A role that's not due to an affiliation, is only valid for the duration of the user's session."),l=dd("An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role."),u=e.queryable_roles.length&&e.queryable_affiliations.length;return Ga(lb(),n,Bd,u?(e=>Ga(ub(),e.switchTab,e.switchTab))(e):"",e.queryable_affiliations.length?"active":"",e.queryAffiliation,l,t,e.queryable_affiliations.map(t=>(e=>Ga(bb(),e.item||"",e.item===e.affiliation,xb(e.item),e.item))(Object.assign({item:t},e))),a,Array.isArray(e.users_with_affiliation)&&e.users_with_affiliation.length>5?Ga(cb(),e.affiliations_filter,e.filterAffiliationResults,s):"",xb(e.affiliation)?Ga(ab(),xb(e.affiliation)):"",e.loading_users_with_affiliation?Ga(ob(),Tf()):"",Array.isArray(e.users_with_affiliation)&&0===e.users_with_affiliation.length?Ga(sb(),r):"",e.users_with_affiliation instanceof Error?Ga(ib(),e.users_with_affiliation.message):(e.users_with_affiliation||[]).map(t=>(t.nick||t.jid).match(new RegExp(e.affiliations_filter,"i"))?Ab(Object.assign({item:t},e)):""),!u&&e.queryable_roles.length?"active":"",e.queryRole,c,o,e.queryable_roles.map(t=>(e=>Ga(yb(),e.item||"",e.item===e.role,Sb(e.item),e.item))(Object.assign({item:t},e))),a,Array.isArray(e.users_with_role)&&e.users_with_role.length>5?Ga(rb(),e.roles_filter,e.filterRoleResults,s):"",Sb(e.role)?Ga(nb(),Sb(e.role)):"",e.loading_users_with_role?Ga(tb(),Tf()):"",e.users_with_role&&0===e.users_with_role.length?Ga(eb(),i):"",(e.users_with_role||[]).map(t=>t.nick.match(e.roles_filter)?Eb(Object.assign({item:t},e)):""))};const{Strophe:jb}=Yc.env,Tb=Yc.env.utils;let Ob;var kb=Kd.extend({id:"converse-modtools-modal",initialize(e){Ob=e._converse,this.chatroomview=e.chatroomview,Kd.prototype.initialize.apply(this,arguments),this.affiliations_filter="",this.roles_filter="",this.listenTo(this.model,"change:role",()=>{this.users_with_role=this.chatroomview.model.getOccupantsWithRole(this.model.get("role")),this.render()}),this.listenTo(this.model,"change:affiliation",async()=>{this.loading_users_with_affiliation=!0,this.users_with_affiliation=null,this.render();const e=this.chatroomview.model,t=this.model.get("affiliation");this.shouldFetchAffiliationsList()?this.users_with_affiliation=await e.getAffiliationList(t):this.users_with_affiliation=e.getOccupantsWithAffiliation(t),this.loading_users_with_affiliation=!1,this.render()})},toHTML(){const e=this.chatroomview.model.occupants.findWhere({jid:Ob.bare_jid});return Cb(Object.assign(this.model.toJSON(),{affiliations_filter:this.affiliations_filter,assignAffiliation:e=>this.assignAffiliation(e),assignRole:e=>this.assignRole(e),assignable_affiliations:this.getAssignableAffiliations(e),assignable_roles:this.getAssignableRoles(e),filterAffiliationResults:e=>this.filterAffiliationResults(e),filterRoleResults:e=>this.filterRoleResults(e),loading_users_with_affiliation:this.loading_users_with_affiliation,queryAffiliation:e=>this.queryAffiliation(e),queryRole:e=>this.queryRole(e),queryable_affiliations:Ql.filter(e=>!Ob.modtools_disable_query.includes(e)),queryable_roles:Xl.filter(e=>!Ob.modtools_disable_query.includes(e)),roles_filter:this.roles_filter,switchTab:e=>this.switchTab(e),toggleForm:e=>this.toggleForm(e),users_with_affiliation:this.users_with_affiliation,users_with_role:this.users_with_role}))},getAssignableAffiliations(e){let t=qc.settings.get("modtools_disable_assign");return Array.isArray(t)||(t=t?Ql:[]),"owner"===e.get("affiliation")?Ql.filter(e=>!t.includes(e)):"admin"===e.get("affiliation")?Ql.filter(e=>!["owner","admin",...t].includes(e)):[]},getAssignableRoles(e){let t=qc.settings.get("modtools_disable_assign");return Array.isArray(t)||(t=t?Xl:[]),"moderator"===e.get("role")?Xl.filter(e=>!t.includes(e)):[]},shouldFetchAffiliationsList(){const e=this.model.get("affiliation");return"none"!==e&&!this.chatroomview.model.occupants.getAutoFetchedAffiliationLists().includes(e)},toggleForm(e){e.stopPropagation(),e.preventDefault();const t=e.target.getAttribute("data-form"),n=Tb.ancestor(e.target,".list-group-item").querySelector(".".concat(t));Tb.hasClass("hidden",n)?Tb.removeClass("hidden",n):Tb.addClass("hidden",n)},filterRoleResults(e){this.roles_filter=e.target.value,this.render()},filterAffiliationResults(e){this.affiliations_filter=e.target.value,this.render()},queryRole(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target).get("role");this.model.set({role:null},{silent:!0}),this.model.set({role:t})},queryAffiliation(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target).get("affiliation");this.model.set({affiliation:null},{silent:!0}),this.model.set({affiliation:t})},async assignAffiliation(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target),n=t.get("affiliation"),r={jid:t.get("jid"),reason:t.get("reason")},i=this.model.get("affiliation");try{await this.chatroomview.model.setAffiliation(n,[r])}catch(e){return null===e?this.alert(dd("Timeout error while trying to set the affiliation"),"danger"):ur()('not-allowed[xmlns="'.concat(jb.NS.STANZAS,'"]'),e).length?this.alert(dd("Sorry, you're not allowed to make that change"),"danger"):this.alert(dd("Sorry, something went wrong while trying to set the affiliation"),"danger"),void Pn.error(e)}this.alert(dd("Affiliation changed"),"primary"),await this.chatroomview.model.occupants.fetchMembers(),this.model.set({affiliation:null},{silent:!0}),this.model.set({affiliation:i})},assignRole(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target),n=this.chatroomview.model.getOccupant(t.get("jid")||t.get("nick")),r=t.get("role"),i=t.get("reason"),s=this.model.get("role");this.chatroomview.model.setRole(n,r,i,()=>{this.alert(dd("Role changed"),"primary"),this.model.set({role:null},{silent:!0}),this.model.set({role:s})},e=>{ur()('not-allowed[xmlns="'.concat(jb.NS.STANZAS,'"]'),e).length?this.alert(dd("You're not allowed to make that change"),"danger"):(this.alert(dd("Sorry, something went wrong while trying to set the role"),"danger"),Tb.isErrorObject(e)&&Pn.error(e))})}});function Nb(){const e=Vb(['<li class="feature" ><span class="fa fa-database"></span>'," - <em>","</em></li>"]);return Nb=function(){return e},e}function Ib(){const e=Vb(['<li class="feature" ><span class="fa fa-info-circle"></span>'," - <em>","</em></li>"]);return Ib=function(){return e},e}function Mb(){const e=Vb(['<li class="feature" ><span class="fa fa-gavel"></span>'," - <em>","</em></li>"]);return Mb=function(){return e},e}function Rb(){const e=Vb(['<li class="feature" ><span class="fa fa-user-secret"></span>'," - <em>","</em></li>"]);return Rb=function(){return e},e}function Db(){const e=Vb(['<li class="feature" ><span class="fa fa-id-card"></span>'," - <em>","</em></li>"]);return Db=function(){return e},e}function Pb(){const e=Vb(['<li class="feature" ><span class="fa fa-snowflake-o"></span>'," - <em>","</em></li>"]);return Pb=function(){return e},e}function Lb(){const e=Vb(['<li class="feature" ><span class="fa fa-save"></span>'," - <em>","</em></li>"]);return Lb=function(){return e},e}function zb(){const e=Vb(['<li class="feature" ><span class="fa fa-globe"></span>'," - <em>","</em></li>"]);return zb=function(){return e},e}function Fb(){const e=Vb(['<li class="feature" ><span class="fa fa-address-book"></span>'," - <em>","</em></li>"]);return Fb=function(){return e},e}function Bb(){const e=Vb(['<li class="feature" ><span class="fa fa-eye"></span>'," - <em>","</em></li>"]);return Bb=function(){return e},e}function qb(){const e=Vb(['<li class="feature" ><span class="fa fa-eye-slash"></span>'," - <em>","</em></li>"]);return qb=function(){return e},e}function Hb(){const e=Vb(['<li class="feature" ><span class="fa fa-unlock"></span>'," - <em>","</em></li>"]);return Hb=function(){return e},e}function Ub(){const e=Vb(['<li class="feature" ><span class="fa fa-lock"></span>'," - <em>","</em></li>"]);return Ub=function(){return e},e}function $b(){const e=Vb(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="room-details-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="room-info">\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ","</p>\n ",'\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>','</strong>:\n <div class="chatroom-features">\n <ul class="features-list">\n ',"\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ",'\n </ul>\n </div>\n </p>\n </div>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n "]);return $b=function(){return e},e}function Wb(){const e=Vb(['\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ","</p>\n "]);return Wb=function(){return e},e}function Vb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Gb=e=>{const t=dd("Groupchat address (JID)"),n=dd("Message archiving"),r=dd("Messages are archived on the server"),i=dd("Description"),s=dd("Features"),o=dd("Hidden"),a=dd("This groupchat is not publicly searchable"),c=dd("This groupchat is restricted to members only"),l=dd("Members only"),u=dd("Moderated"),d=dd("Participants entering this groupchat need to request permission to write"),h=dd("Name"),f=dd("This groupchat does not require a password upon entry"),p=dd("No password required"),g=dd("Not anonymous"),m=dd("All other groupchat participants can see your XMPP address"),v=dd("Not moderated"),_=dd("Participants entering this groupchat can write right away"),b=dd("Online users"),y=dd("Open"),w=dd("Anyone can join this groupchat"),S=dd("This groupchat requires a password before entry"),x=dd("Password protected"),E=dd("Persistent"),A=dd("This groupchat persists even if it's unoccupied"),C=dd("Public"),j=dd("Semi-anonymous"),T=dd("Only moderators can see your XMPP address"),O=dd("Temporary"),k=dd("This groupchat will disappear once the last person leaves");return Ga($b(),e.display_name,Bd,h,e.name,t,e.jid,i,e.config.description,e.subject?(e=>{const t=dd("Topic"),n=dd("Topic author");return Ga(Wb(),t,pp(hp.a.filterXSS(e.subject.text,{whiteList:{}})),n,e.subject&&e.subject.author)})(e):"",b,e.num_occupants,s,e.features.passwordprotected?Ga(Ub(),x,S):"",e.features.unsecured?Ga(Hb(),p,f):"",e.features.hidden?Ga(qb(),o,a):"",e.features.public_room?Ga(Bb(),C,e.__("This groupchat is publicly searchable")):"",e.features.membersonly?Ga(Fb(),l,c):"",e.features.open?Ga(zb(),y,w):"",e.features.persistent?Ga(Lb(),E,A):"",e.features.temporary?Ga(Pb(),O,k):"",e.features.nonanonymous?Ga(Db(),g,m):"",e.features.semianonymous?Ga(Rb(),j,T):"",e.features.moderated?Ga(Mb(),u,d):"",e.features.unmoderated?Ga(Ib(),v,_):"",e.features.mam_enabled?Ga(Nb(),n,r):"",Fd)},Jb=Kd.extend({id:"room-details-modal",initialize(){Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.listenTo(this.model.features,"change",this.render),this.listenTo(this.model.occupants,"add",this.render),this.listenTo(this.model.occupants,"change",this.render)},toHTML(){return Gb(Object.assign(this.model.toJSON(),{config:this.model.config.toJSON(),display_name:dd("Groupchat info for %1$s",this.model.getDisplayName()),features:this.model.features.toJSON(),num_occupants:this.model.occupants.length}))}});function Xb(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="flyout box-flyout">\n <div class="chat-head chat-head-chatroom row no-gutters"></div>\n <div class="chat-body chatroom-body row no-gutters">\n <div class="chat-area col">\n <div class="chat-content ','" aria-live="polite">\n <div class="chat-content__messages" @scroll=','></div>\n <div class="chat-content__help"></div>\n </div>\n <div class="bottom-panel"></div>\n </div>\n <div class="disconnect-container hidden"></div>\n </div>\n </div>\n']);return Xb=function(){return e},e}function Qb(){const e=Zb(['<div class="muc-bottom-panel"></div>']);return Qb=function(){return e},e}function Yb(){const e=Zb(['<div class="muc-bottom-panel">',"</div>"]);return Yb=function(){return e},e}function Kb(){const e=Zb(['\n <div class="emoji-picker__container dropup"></div>\n <div class="message-form-container">']);return Kb=function(){return e},e}function Zb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var ey=e=>{const t=dd("You're not allowed to send messages in this room");return e.entered?e.can_edit?Ga(Kb()):Ga(Yb(),t):Ga(Qb())};function ty(){const e=iy(['<p class="destroyed-reason">"','"</p>']);return ty=function(){return e},e}function ny(){const e=iy(['\n <div class="alert alert-danger">\n <h3 class="alert-heading disconnect-msg">',"</h3>\n ","\n ","\n </div>"]);return ny=function(){return e},e}function ry(){const e=iy(['\n <p class="moved-label">','</p>\n <p class="moved-link"><a class="switch-chat" href="#">',"</a></p>"]);return ry=function(){return e},e}function iy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var sy=(e,t)=>{const n=dd("This groupchat no longer exists");return Ga(ny(),n,t?Ga(ty(),t):"",e?(e=>{const t=dd("The conversation has moved. Click below to enter.");return Ga(ry(),t,e)})(e):"")};function oy(){const e=cy(['<p class="disconnect-msg">',"</p>"]);return oy=function(){return e},e}function ay(){const e=cy(['\n <div class="alert alert-danger">\n <h3 class="alert-heading disconnect-msg">',"</h3>\n ","\n </div>"]);return ay=function(){return e},e}function cy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ly(){const e=py(['<p class="chat-head__desc" title="','">',"</p>"]);return ly=function(){return e},e}function uy(){const e=py(["<converse-dropdown .items=","></converse-dropdown>"]);return uy=function(){return e},e}function dy(){const e=py(['<i class="fa fa-bookmark chatbox-title__text--bookmarked" title="','"></i>']);return dy=function(){return e},e}function hy(){const e=py(['<div class="chatbox-navback"><i class="fa fa-arrow-left"></i></div>']);return hy=function(){return e},e}function fy(){const e=py(['\n <div class="chatbox-title ','">\n ','\n <div class="chatbox-title__text" title="','">',"\n ",'\n </div>\n <div class="chatbox-title__buttons row no-gutters">\n ',"\n ","\n </div>\n </div>\n ","\n "]);return fy=function(){return e},e}function py(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const gy=Yc.env.utils;var my=e=>{const t=dd("Hide the groupchat topic"),n=dd("This groupchat is bookmarked"),r=e.subject?gy.addHyperlinks(e.subject.text):"",i=r&&!e.subject_hidden;return Ga(fy(),i?"":"chatbox-title--no-desc",e._converse.standalone?Ga(hy()):"","hidden"!==e._converse.locked_muc_domain?e.jid:"",e.title,e.bookmarked?Ga(dy(),n):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>oh(e,"")))(e):"",e.dropdown_btns.length?Ga(uy(),e.dropdown_btns):"",i?Ga(ly(),t,r):"")};function vy(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="chatroom-form-container muc-nickname-form">\n <form class="converse-form chatroom-form converse-centered-form">\n <fieldset class="form-group">\n <label>','</label>\n <input type="text" required="required" name="nick" value="','"\n class="form-control" placeholder="','"/>\n </fieldset>\n <fieldset class="form-group">\n <input type="submit" class="btn btn-primary" name="join" value="','"/>\n </fieldset>\n </form>\n </div>']);return vy=function(){return e},e}function _y(){const e=yy(['<p class="form-help">',"</p>"]);return _y=function(){return e},e}function by(){const e=yy(['\n <form class="converse-form chatroom-form" autocomplete="off" @submit=','>\n <fieldset class="form-group">\n <legend>',"</legend>\n ","\n \x3c!-- Fields are generated internally, with xForm2webForm --\x3e\n ",'\n </fieldset>\n <fieldset>\n <input type="submit" class="btn btn-primary" value="','">\n <input type="button" class="btn btn-secondary button-cancel" value="','" @click=',">\n </fieldset>\n </form>\n "]);return by=function(){return e},e}function yy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function wy(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="converse-form chatroom-form converse-centered-form" @submit=','>\n <fieldset class="form-group">\n <label>','</label>\n <p class="validation-message">','</p>\n <input class="hidden-username" type="text" autocomplete="username" value="','"></input>\n <input type="password"\n name="password"\n required="required"\n class="form-control ','"\n placeholder="','"/>\n </fieldset>\n <fieldset class="form-group">\n <input class="btn btn-primary" type="submit" value="','"/>\n </fieldset>\n </form>\n ']);return wy=function(){return e},e}function Sy(){const e=Ty(['<span class="badge badge-secondary">',"</span>"]);return Sy=function(){return e},e}function xy(){const e=Ty(['<span class="badge badge-info">',"</span>"]);return xy=function(){return e},e}function Ey(){const e=Ty(['<span class="badge badge-info">',"</span>"]);return Ey=function(){return e},e}function Ay(){const e=Ty(['<span class="badge badge-info">',"</span>"]);return Ay=function(){return e},e}function Cy(){const e=Ty(['<span class="badge badge-groupchat">',"</span>"]);return Cy=function(){return e},e}function jy(){const e=Ty(['\n <li class="occupant" id="','" title="','">\n <div class="row no-gutters">\n <div class="col-auto">\n <div class="occupant-status occupant-',' circle" title="','"></div>\n </div>\n <div class="col occupant-nick-badge">\n <span class="occupant-nick">','</span>\n <span class="occupant-badges">\n ',"\n ","\n ","\n ","\n ","\n </span>\n </div>\n </div>\n </li>\n "]);return jy=function(){return e},e}function Ty(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Oy=e=>{const t=dd("Owner"),n=dd("Admin"),r=dd("Member"),i=dd("Moderator"),s=dd("Visitor");return Ga(jy(),e.id,(e=>{const t=dd("This user is a moderator."),n=dd("This user can send messages in this groupchat."),r=dd("This user can NOT send messages in this groupchat."),i="".concat(e.jid," ")||!1;return"moderator"===e.role?"".concat(i).concat(t," ").concat(e.hint_occupant):"participant"===e.role?"".concat(i).concat(n," ").concat(e.hint_occupant):"visitor"===e.role?"".concat(i).concat(r," ").concat(e.hint_occupant):["visitor","participant","moderator"].includes(e.role)?void 0:"".concat(i).concat(e.hint_occupant)})(e),e.show,e.hint_show,e.nick||e.jid,"owner"===e.affiliation?Ga(Cy(),t):"","admin"===e.affiliation?Ga(Ay(),n):"","member"===e.affiliation?Ga(Ey(),r):"","moderator"===e.role?Ga(xy(),i):"","visitor"===e.role?Ga(Sy(),s):"")};function ky(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="occupants-header">\n <i class="hide-occupants fa fa-times"></i>\n <div class="occupants-header--title">\n <span class="occupants-heading">','</span>\n </div>\n </div>\n <div class="dragresize dragresize-occupants-left"></div>\n <ul class="occupant-list">\n ',"\n </ul>\n "]);return ky=function(){return e},e}const Ny={offline:"Offline",unavailable:"Unavailable",xa:"Extended Away",away:"Away",dnd:"Do not disturb",chat:"Chattty",online:"Online"};function Iy(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="d-flex controlbox-padded">\n <span class="w-100 controlbox-heading controlbox-heading--groupchats">','</span>\n <a class="controlbox-heading__btn show-list-muc-modal fa fa-list-ul" title="','" data-toggle="modal" data-target="#list-chatrooms-modal"></a>\n <a class="controlbox-heading__btn show-add-muc-modal fa fa-plus" title="','" data-toggle="modal" data-target="#add-chatrooms-modal"></a>\n </div>\n <div class="list-container list-container--openrooms hidden"></div>\n <div class="list-container list-container--bookmarks hidden"></div>']);return Iy=function(){return e},e} -/** - * @module converse-muc-views - * @copyright 2020, the Converse.js contributors - * @description XEP-0045 Multi-User Chat Views - * @license Mozilla Public License (MPLv2) - */ -const{Strophe:My,sizzle:Ry,$pres:Dy}=Yc.env,Py=Yc.env.utils,Ly=["owner"],zy=["admin","ban","deop","destroy","member","op","revoke"],Fy=["kick","mute","voice","modtools"],By=["nick"],qy={deop:"participant",kick:"none",mute:"visitor",op:"moderator",voice:"participant"},Hy={admin:"admin",ban:"outcast",member:"member",owner:"owner",revoke:"none"},Uy=gv.extend({length:300,tagName:"div",className:"chatbox chatroom hidden",is_chatroom:!0,events:{"click .chatbox-navback":"showControlBox","click .hide-occupants":"hideOccupants","click .new-msgs-indicator":"viewUnreadMessages","click .occupant-nick":function(e){this.insertIntoTextArea(e.target.textContent)},"click .send-button":"onFormSubmitted","dragover .chat-textarea":"onDragOver","drop .chat-textarea":"onDrop","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","mousedown .dragresize-occupants-left":"onStartResizeOccupants","paste .chat-textarea":"onPaste","submit .muc-nickname-form":"submitNickname"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change",Tc(()=>this.renderHeading(),250)),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:hidden_occupants",this.renderToolbar),this.listenTo(this.model,"configurationNeeded",this.getAndRenderConfigurationForm),this.listenTo(this.model,"destroy",this.hide),this.listenTo(this.model,"show",this.show),this.listenTo(this.model.features,"change:moderated",this.renderBottomPanel),this.listenTo(this.model.features,"change:open",this.renderHeading),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.session,"change:connection_status",this.onConnectionStatusChanged),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),await this.render(),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"change",this.renderChatHistory),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.model.occupants.forEach(e=>this.onOccupantAdded(e)),this.listenTo(this.model.occupants,"add",this.onOccupantAdded),this.listenTo(this.model.occupants,"change",this.renderChatHistory),this.listenTo(this.model.occupants,"change:affiliation",this.onOccupantAffiliationChanged),this.listenTo(this.model.occupants,"change:role",this.onOccupantRoleChanged),this.listenTo(this.model.occupants,"change:show",this.showJoinOrLeaveNotification),this.listenTo(this.model.occupants,"remove",this.onOccupantRemoved),this.createSidebarView(),await this.updateAfterMessagesFetched();const e=await Lc.api.user.settings.getModel();this.listenTo(e,"change:mucs_with_hidden_subject",this.renderHeading),this.onConnectionStatusChanged(),this.model.maybeShow(),qc.trigger("chatRoomViewInitialized",this)},async render(){var e;this.el.setAttribute("id",this.model.get("box_id")),Wa((e={markScrolled:e=>this.markScrolled(e),muc_show_logs_before_join:qc.settings.get("muc_show_logs_before_join"),show_send_button:Lc.show_send_button},Ga(Xb(),e.show_send_button?"chat-content-sendbutton":"",e.markScrolled)),this.el),this.notifications=this.el.querySelector(".chat-content__notifications"),this.content=this.el.querySelector(".chat-content"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderBottomPanel(),qc.settings.get("muc_show_logs_before_join")||this.model.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED||this.showSpinner(),await this.renderHeading(),!this.model.get("hidden")&&this.show()},getNotifications(){const e=this.model.notifications.toJSON(),t=qc.settings.get("muc_show_info_messages").filter(e=>Yc.MUC_ROLE_CHANGES_LIST.includes(e)),n=qc.settings.get("muc_show_info_messages").filter(e=>Yc.MUC_TRAFFIC_STATES_LIST.includes(e));return[...Yc.CHAT_STATES,...n,...t].reduce((t,n)=>{const r=e[n];if(!(null==r?void 0:r.length))return t;const i=r.map(e=>{var t;return(null===(t=this.model.getOccupant(e))||void 0===t?void 0:t.getDisplayName())||e});if(1===i.length){if("composing"===n)return"".concat(t).concat(dd("%1$s is typing",i[0]),"\n");if("paused"===n)return"".concat(t).concat(dd("%1$s has stopped typing",i[0]),"\n");if(n===Lc.GONE)return"".concat(t).concat(dd("%1$s has gone away",i[0]),"\n");if("entered"===n)return"".concat(t).concat(dd("%1$s has entered the groupchat",i[0]),"\n");if("exited"===n)return"".concat(t).concat(dd("%1$s has left the groupchat",i[0]),"\n");if("op"===n)return"".concat(t).concat(dd("%1$s is now a moderator",i[0]),"\n");if("deop"===n)return"".concat(t).concat(dd("%1$s is no longer a moderator",i[0]),"\n");if("voice"===n)return"".concat(t).concat(dd("%1$s has been given a voice",i[0]),"\n");if("mute"===n)return"".concat(t).concat(dd("%1$s has been muted",i[0]),"\n")}else if(i.length>1){let e;if(i.length>3)e="".concat(Array.from(i).slice(0,2).join(", ")," and others");else{const t=i.pop();e=dd("%1$s and %2$s",i.join(", "),t)}if("composing"===n)return"".concat(t).concat(dd("%1$s are typing",e),"\n");if("paused"===n)return"".concat(t).concat(dd("%1$s have stopped typing",e),"\n");if(n===Lc.GONE)return"".concat(t).concat(dd("%1$s have gone away",e),"\n");if("entered"===n)return"".concat(t).concat(dd("%1$s have entered the groupchat",e),"\n");if("exited"===n)return"".concat(t).concat(dd("%1$s have left the groupchat",e),"\n");if("op"===n)return"".concat(t).concat(dd("%1$s are now moderators",i[0]),"\n");if("deop"===n)return"".concat(t).concat(dd("%1$s are no longer moderators",i[0]),"\n");if("voice"===n)return"".concat(t).concat(dd("%1$s have been given voices",i[0]),"\n");if("mute"===n)return"".concat(t).concat(dd("%1$s have been muted",i[0]),"\n")}return t},"")},getHelpMessages(){const e=qc.settings.get("muc_disable_slash_commands"),t=Array.isArray(e)?e:[];return["<strong>/admin</strong>: ".concat(dd("Change user's affiliation to admin")),"<strong>/ban</strong>: ".concat(dd("Ban user by changing their affiliation to outcast")),"<strong>/clear</strong>: ".concat(dd("Clear the chat area")),"<strong>/close</strong>: ".concat(dd("Close this groupchat")),"<strong>/deop</strong>: ".concat(dd("Change user role to participant")),"<strong>/destroy</strong>: ".concat(dd("Remove this groupchat")),"<strong>/help</strong>: ".concat(dd("Show this menu")),"<strong>/kick</strong>: ".concat(dd("Kick user from groupchat")),"<strong>/me</strong>: ".concat(dd("Write in 3rd person")),"<strong>/member</strong>: ".concat(dd("Grant membership to a user")),"<strong>/modtools</strong>: ".concat(dd("Opens up the moderator tools GUI")),"<strong>/mute</strong>: ".concat(dd("Remove user's ability to post messages")),"<strong>/nick</strong>: ".concat(dd("Change your nickname")),"<strong>/op</strong>: ".concat(dd("Grant moderator role to user")),"<strong>/owner</strong>: ".concat(dd("Grant ownership of this groupchat")),"<strong>/register</strong>: ".concat(dd("Register your nickname")),"<strong>/revoke</strong>: ".concat(dd("Revoke the user's current affiliation")),"<strong>/subject</strong>: ".concat(dd("Set groupchat subject")),"<strong>/topic</strong>: ".concat(dd("Set groupchat subject (alias for /subject)")),"<strong>/voice</strong>: ".concat(dd("Allow muted user to post messages"))].filter(e=>t.every(t=>!e.startsWith(t+"<",9))).filter(e=>this.getAllowedCommands().some(t=>e.startsWith(t+"<",9)))},async renderHeading(){const e=await this.generateHeadingTemplate();Wa(e,this.el.querySelector(".chat-head-chatroom"))},renderBottomPanel(){const e=this.el.querySelector(".bottom-panel"),t=this.model.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED,n=t&&!(this.model.features.get("moderated")&&"visitor"===this.model.getOwnRole());Wa(ey({can_edit:n,entered:t}),e),t&&n&&(this.renderMessageForm(),this.initMentionAutoComplete())},createSidebarView(){this.model.occupants.chatroomview=this,this.sidebar_view=new Lc.MUCSidebar({model:this.model.occupants});const e=this.el.querySelector(".chatroom-body"),t=this.model.get("occupants_width");this.sidebar_view&&void 0!==t&&(this.sidebar_view.el.style.flex="0 0 "+t+"px"),e.insertAdjacentElement("beforeend",this.sidebar_view.el)},onStartResizeOccupants(e){this.resizing=!0,this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseup",this.onMouseUp);const t=window.getComputedStyle(this.sidebar_view.el);this.width=parseInt(t.width.replace(/px$/,""),10),this.prev_pageX=e.pageX},onMouseMove(e){if(this.resizing){e.preventDefault();const t=this.prev_pageX-e.pageX;this.resizeSidebarView(t,e.pageX),this.prev_pageX=e.pageX}},onMouseUp(e){if(this.resizing){e.preventDefault(),this.resizing=!1,this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseup",this.onMouseUp);const t=this.sidebar_view.el.getBoundingClientRect(),n={occupants_width:this.calculateSidebarWidth(t,0)};Lc.connection.connected?this.model.save(n):this.model.set(n)}},resizeSidebarView(e,t){const n=this.sidebar_view.el.getBoundingClientRect();if(this.is_minimum)this.is_minimum=n.left<t;else if(this.is_maximum)this.is_maximum=n.left>t;else{const t=this.calculateSidebarWidth(n,e);this.sidebar_view.el.style.flex="0 0 "+t+"px"}},calculateSidebarWidth(e,t){let n=e.width+t;const r=this.el.clientWidth;return n<.2*r?(n=.2*r,this.is_minimum=!0):n>.75*r?(n=.75*r,this.is_maximum=!0):r-n<250?(n=r-250,this.is_maximum=!0):(this.is_maximum=!1,this.is_minimum=!1),n},getAutoCompleteList(){return this.model.getAllKnownNicknames().map(e=>({label:e,value:"@".concat(e)}))},getAutoCompleteListItem(e,t){t=t.trim();const n=document.createElement("li");if(n.setAttribute("aria-selected","false"),qc.settings.get("muc_mention_autocomplete_show_avatar")){const t=document.createElement("img");let r="data:"+Lc.DEFAULT_IMAGE_TYPE+";base64,"+Lc.DEFAULT_IMAGE;if(Lc.vcards){const t=Lc.vcards.findWhere({nickname:e});t&&(r="data:"+t.get("image_type")+";base64,"+t.get("image"))}t.setAttribute("src",r),t.setAttribute("width","22"),t.setAttribute("class","avatar avatar-autocomplete"),n.appendChild(t)}const r=new RegExp("("+t+")","ig");return(t?e.split(r):[e]).forEach(e=>{if(t&&e.match(r)){const t=document.createElement("mark");t.textContent=e,n.appendChild(t)}else n.appendChild(document.createTextNode(e))}),n},initMentionAutoComplete(){this.mention_auto_complete=new Lc.AutoComplete(this.el,{auto_first:!0,auto_evaluate:!1,min_chars:qc.settings.get("muc_mention_autocomplete_min_chars"),match_current_word:!0,list:()=>this.getAutoCompleteList(),filter:"contains"==qc.settings.get("muc_mention_autocomplete_filter")?Lc.FILTER_CONTAINS:Lc.FILTER_STARTSWITH,ac_triggers:["Tab","@"],include_triggers:[],item:this.getAutoCompleteListItem}),this.mention_auto_complete.on("suggestion-box-selectcomplete",()=>this.auto_completing=!1)},submitNickname(e){e.preventDefault();const t=e.target.nick.value.trim();t&&this.model.join(t)},onKeyDown(e){if(!this.mention_auto_complete.onKeyDown(e))return Lc.ChatBoxView.prototype.onKeyDown.call(this,e)},onKeyUp(e){return this.mention_auto_complete.evaluate(e),Lc.ChatBoxView.prototype.onKeyUp.call(this,e)},async onMessageRetractButtonClicked(e){const t=dd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.");if(e.mayBeRetracted()){const n=[dd("Are you sure you want to retract this message?")];qc.settings.get("show_retraction_warning")&&(n[1]=t),await qc.confirm(dd("Confirm"),n)&&this.model.retractOwnMessage(e)}else if(await e.mayBeModerated())if("me"===e.get("sender")){let n=[dd("Are you sure you want to retract this message?")];qc.settings.get("show_retraction_warning")&&(n=[n[0],t,n[1]]),await qc.confirm(dd("Confirm"),n)&&this.retractOtherMessage(e)}else{let n=[dd("You are about to retract this message."),dd("You may optionally include a message, explaining the reason for the retraction.")];qc.settings.get("show_retraction_warning")&&(n=[n[0],t,n[1]]);const r=await qc.prompt(dd("Message Retraction"),n,dd("Optional reason"));!1!==r&&this.retractOtherMessage(e,r)}else{const e=dd("Sorry, you're not allowed to retract this message");qc.alert("error",dd("Error"),e)}},async retractOtherMessage(e,t){const n=await this.model.retractOtherMessage(e,t);if(null===n){const e=dd("A timeout occurred while trying to retract the message");qc.alert("error",dd("Error"),e),Pn(e,My.LogLevel.WARN)}else if(Py.isErrorStanza(n)){const e=dd("Sorry, you're not allowed to retract this message.");qc.alert("error",dd("Error"),e),Pn(e,My.LogLevel.WARN),Pn(n,My.LogLevel.WARN)}},showModeratorToolsModal(e){if(this.verifyRoles(["moderator"])){if(void 0===this.model.modtools_modal){const t=new Rs({affiliation:e});this.modtools_modal=new kb({model:t,_converse:Lc,chatroomview:this})}else this.modtools_modal.set("affiliation",e);this.modtools_modal.show()}},showRoomDetailsModal(e){e.preventDefault(),void 0===this.model.room_details_modal&&(this.model.room_details_modal=new Jb({model:this.model})),this.model.room_details_modal.show(e)},showChatStateNotification(e){if("me"!==e.get("sender"))return Lc.ChatBoxView.prototype.showChatStateNotification.apply(this,arguments)},onOccupantAffiliationChanged(e){e.get("jid")===Lc.bare_jid&&this.renderHeading()},onOccupantRoleChanged(e){e.get("jid")===Lc.bare_jid&&this.renderBottomPanel()},getHeadingButtons(e){const t=[];t.push({i18n_text:dd("Details"),i18n_title:dd("Show more information about this groupchat"),handler:e=>this.showRoomDetailsModal(e),a_class:"show-room-details-modal",icon_class:"fa-info-circle",name:"details"}),"owner"===this.model.getOwnAffiliation()&&t.push({i18n_text:dd("Configure"),i18n_title:dd("Configure this groupchat"),handler:e=>this.getAndRenderConfigurationForm(e),a_class:"configure-chatroom-button",icon_class:"fa-wrench",name:"configure"}),this.model.invitesAllowed()&&t.push({i18n_text:dd("Invite"),i18n_title:dd("Invite someone to join this groupchat"),handler:e=>this.showInviteModal(e),a_class:"open-invite-modal",icon_class:"fa-user-plus",name:"invite"});const n=this.model.get("subject");if(n&&n.text&&t.push({i18n_text:dd(e?"Show topic":"Hide topic"),i18n_title:dd(e?"Show the topic message in the heading":"Hide the topic in the heading"),handler:e=>this.toggleTopic(e),a_class:"hide-topic",icon_class:"fa-minus-square",name:"toggle-topic"}),this.model.session.get("connection_status")===Yc.ROOMSTATUS.ENTERED){const e=this.getAllowedCommands();e.includes("modtools")&&t.push({i18n_text:dd("Moderate"),i18n_title:dd("Moderate this groupchat"),handler:()=>this.showModeratorToolsModal(),a_class:"moderate-chatroom-button",icon_class:"fa-user-cog",name:"moderate"}),e.includes("destroy")&&t.push({i18n_text:dd("Destroy"),i18n_title:dd("Remove this groupchat"),handler:e=>this.destroy(e),a_class:"destroy-chatroom-button",icon_class:"fa-trash",name:"destroy"})}return qc.settings.get("singleton")||t.push({i18n_text:dd("Leave"),i18n_title:dd("Leave and close this groupchat"),handler:async e=>{e.stopPropagation();const t=[dd("Are you sure you want to leave this groupchat?")];await qc.confirm(dd("Confirm"),t)&&this.close(e)},a_class:"close-chatbox-button",standalone:"overlayed"===qc.settings.get("view_mode"),icon_class:"fa-sign-out-alt",name:"signout"}),Lc.api.hook("getHeadingButtons",this,t)},async generateHeadingTemplate(){const e=await this.model.isSubjectHidden(),t=await this.getHeadingButtons(e),n=t.filter(e=>e.standalone),r=t.filter(e=>!e.standalone);return my(Object.assign(this.model.toJSON(),{_converse:Lc,subject_hidden:e,dropdown_btns:r.map(e=>this.getHeadingDropdownItem(e)),standalone_btns:n.map(e=>this.getHeadingStandaloneButton(e)),title:this.model.getDisplayName()}))},toggleTopic(){this.model.toggleSubjectHiddenState()},showInviteModal(e){e.preventDefault(),void 0===this.muc_invite_modal&&(this.muc_invite_modal=new q_({model:new Rs}),this.muc_invite_modal.chatroomview=this),this.muc_invite_modal.show(e)},afterShown(){Py.isPersistableModel(this.model)&&this.model.clearUnreadMsgCounter(),this.scrollDown()},onConnectionStatusChanged(){const e=this.model.session.get("connection_status");e===Yc.ROOMSTATUS.NICKNAME_REQUIRED?this.renderNicknameForm():e===Yc.ROOMSTATUS.PASSWORD_REQUIRED?this.renderPasswordForm():e===Yc.ROOMSTATUS.CONNECTING?this.showSpinner():e===Yc.ROOMSTATUS.ENTERED?(this.renderBottomPanel(),this.hideSpinner(),this.maybeFocus()):e===Yc.ROOMSTATUS.DISCONNECTED?this.showDisconnectMessage():e===Yc.ROOMSTATUS.DESTROYED&&this.showDestroyedMessage()},getToolbarOptions(){return Object.assign(Lc.ChatBoxView.prototype.getToolbarOptions.apply(this,arguments),{is_groupchat:!0,label_hide_occupants:dd("Hide the list of participants"),show_occupants_toggle:Lc.visible_toolbar_buttons.toggle_occupants})},async close(){return this.hide(),Lc.router.history.getFragment()==="converse/room?jid="+this.model.get("jid")&&Lc.router.navigate(""),await this.model.leave(),Lc.ChatBoxView.prototype.close.apply(this,arguments)},hideOccupants(e){e&&(e.preventDefault(),e.stopPropagation()),this.model.save({hidden_occupants:!0}),this.scrollDown()},verifyRoles(e,t,n=!0){if(!Array.isArray(e))throw new TypeError("roles must be an Array");if(!e.length)return!0;if(t=t||this.model.occupants.findWhere({jid:Lc.bare_jid})){const n=t.get("role");if(e.includes(n))return!0}if(n){const e=dd("Forbidden: you do not have the necessary role in order to do that.");this.model.createMessage({message:e,type:"error"})}return!1},verifyAffiliations(e,t,n=!0){if(!Array.isArray(e))throw new TypeError("affiliations must be an Array");if(!e.length)return!0;if(t=t||this.model.occupants.findWhere({jid:Lc.bare_jid})){const n=t.get("affiliation");if(e.includes(n))return!0}if(n){const e=dd("Forbidden: you do not have the necessary affiliation in order to do that.");this.model.createMessage({message:e,type:"error"})}return!1},validateRoleOrAffiliationChangeArgs(e,t){if(!t){const t=dd('Error: the "%1$s" command takes two arguments, the user\'s nickname and optionally a reason.',e);return this.model.createMessage({message:t,type:"error"}),!1}return!0},getNickOrJIDFromCommandArgs(e){if(Py.isValidJID(e.trim()))return e.trim();e.startsWith("@")||(e="@"+e);const[t,n]=this.model.parseTextForReferences(e);if(!n.length){const e=dd("Error: couldn't find a groupchat participant based on your arguments");return void this.model.createMessage({message:e,type:"error"})}if(n.length>1){const e=dd("Error: found multiple groupchat participant based on your arguments");return void this.model.createMessage({message:e,type:"error"})}const r=n.pop().value,i=e.split(r,2)[1];if(!i||i.startsWith(" "))return r;{const e=dd("Error: couldn't find a groupchat participant based on your arguments");this.model.createMessage({message:e,type:"error"})}},setAffiliation(e,t,n){const r=Hy[e];if(!r)throw Error("ChatRoomView#setAffiliation called with invalid command: ".concat(e));if(!this.verifyAffiliations(n))return!1;if(!this.validateRoleOrAffiliationChangeArgs(e,t))return!1;const i=this.getNickOrJIDFromCommandArgs(t);if(!i)return!1;let s;const o=t.split(i,2)[1].trim(),a=this.model.getOccupant(i);if(a)s=a.get("jid");else{if(!Py.isValidJID(i)){const e=dd("Couldn't find a participant with that nickname. They might have left the groupchat.");return void this.model.createMessage({message:e,type:"error"})}s=i}const c={jid:s,reason:o};a&&qc.settings.get("auto_register_muc_nickname")&&(c.nick=a.get("nick")),this.model.setAffiliation(r,[c]).then(()=>this.model.occupants.fetchMembers()).catch(e=>this.onCommandError(e))},getReason:e=>e.includes(",")?e.slice(e.indexOf(",")+1).trim():null,setRole(e,t,n=[],r=[]){const i=qy[e];if(!i)throw Error("ChatRoomView#setRole called with invalid command: ".concat(e));if(!this.verifyAffiliations(n)||!this.verifyRoles(r))return!1;if(!this.validateRoleOrAffiliationChangeArgs(e,t))return!1;const s=this.getNickOrJIDFromCommandArgs(t);if(!s)return!1;const o=t.split(s,2)[1].trim(),a=this.model.getOccupant(s);return this.model.setRole(a,i,o,void 0,this.onCommandError.bind(this)),!0},onCommandError(e){Pn.fatal(e);const t=dd("Sorry, an error happened while running the command.")+" "+dd("Check your browser's developer console for details.");this.model.createMessage({message:t,type:"error"})},getAllowedCommands(){let e=["clear","help","me","nick","register"];(this.model.config.get("changesubject")||["owner","admin"].includes(this.model.getOwnAffiliation()))&&(e=[...e,"subject","topic"]);const t=this.model.occupants.findWhere({jid:Lc.bare_jid});return this.verifyAffiliations(["owner"],t,!1)?e=e.concat(Ly).concat(zy):this.verifyAffiliations(["admin"],t,!1)&&(e=e.concat(zy)),this.verifyRoles(["moderator"],t,!1)?e=e.concat(Fy).concat(By):this.verifyRoles(["visitor","participant","moderator"],t,!1)||(e=e.concat(By)),e.sort(),Array.isArray(qc.settings.get("muc_disable_slash_commands"))?e.filter(e=>!qc.settings.get("muc_disable_slash_commands").includes(e)):e},async destroy(){const e=[dd("Are you sure you want to destroy this groupchat?")];let t=[{name:"challenge",label:dd("Please enter the XMPP address of this groupchat to confirm"),challenge:this.model.get("jid"),placeholder:dd("name@example.org"),required:!0},{name:"reason",label:dd("Optional reason for destroying this groupchat"),placeholder:dd("Reason")},{name:"newjid",label:dd("Optional XMPP address for a new groupchat that replaces this one"),placeholder:dd("replacement@example.org")}];try{var n,r;t=await qc.confirm(dd("Confirm"),e,t);const i=null===(n=t.filter(e=>"reason"===e.name).pop())||void 0===n?void 0:n.value,s=null===(r=t.filter(e=>"newjid"===e.name).pop())||void 0===r?void 0:r.value;return this.model.sendDestroyIQ(i,s).then(()=>this.close())}catch(e){Pn.error(e)}},parseMessageForCommands(e){if(qc.settings.get("muc_disable_slash_commands")&&!Array.isArray(qc.settings.get("muc_disable_slash_commands")))return Lc.ChatBoxView.prototype.parseMessageForCommands.apply(this,arguments);const t=((e=e.replace(/^\s*/,"")).match(/^\/([a-zA-Z]*) ?/)||[""]).pop().toLowerCase();if(!t)return!1;const n=e.slice(("/"+t).length+1).trim();if(!this.getAllowedCommands().includes(t))return!1;switch(t){case"admin":this.setAffiliation(t,n,["owner"]);break;case"ban":this.setAffiliation(t,n,["admin","owner"]);break;case"modtools":this.showModeratorToolsModal(n);break;case"deop":this.setRole(t,n,["admin","owner"]);break;case"destroy":if(!this.verifyAffiliations(["owner"]))break;this.destroy().catch(e=>this.onCommandError(e));break;case"help":this.model.set({show_help_messages:!0});break;case"kick":case"mute":this.setRole(t,n,[],["moderator"]);break;case"member":this.setAffiliation(t,n,["admin","owner"]);break;case"nick":if(!this.verifyRoles(["visitor","participant","moderator"]))break;if(0===n.length){const e=dd('Your nickname is "%1$s"',this.model.get("nick"));this.model.createMessage({message:e,type:"error"})}else{const e=My.getBareJidFromJid(this.model.get("jid"));qc.send(Dy({from:Lc.connection.jid,to:"".concat(e,"/").concat(n),id:Py.getUniqueId()}).tree())}break;case"owner":this.setAffiliation(t,n,["owner"]);break;case"op":this.setRole(t,n,["admin","owner"]);break;case"register":n.length>1?this.model.createMessage({message:dd("Error: invalid number of arguments"),type:"error"}):this.model.registerNickname().then(e=>{e&&this.model.createMessage({message:e,type:"error"})});break;case"revoke":this.setAffiliation(t,n,["admin","owner"]);break;case"topic":case"subject":this.model.setSubject(n);break;case"voice":this.setRole(t,n,[],["moderator"]);break;default:return Lc.ChatBoxView.prototype.parseMessageForCommands.apply(this,arguments)}return!0},renderConfigurationForm(e){if(this.hideChatRoomContents(),this.model.save("config_stanza",e.outerHTML),!this.config_form){this.config_form=new Lc.MUCConfigForm({model:this.model,chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.config_form.el)}Py.showElement(this.config_form.el)},renderNicknameForm(){const e=(e=>{const t=dd("Nickname"),n=dd("Enter groupchat"),r=qc.settings.get("muc_show_logs_before_join")?dd("Choose a nickname to enter"):dd("Please choose your nickname");return Ga(vy(),r,e.nick||"",t,n)})(this.model.toJSON());if(qc.settings.get("muc_show_logs_before_join")){const t=this.el.querySelector(".muc-bottom-panel");Wa(e,t),Py.addClass("muc-bottom-panel--nickname",t)}else{const t=this.el.querySelector(".muc-nickname-form"),n=Py.getElementFromTemplateResult(e);if(t)Ry(".spinner",this.el).forEach(Py.removeElement),t.outerHTML=n.outerHTML;else{this.hideChatRoomContents(),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",n)}}Py.safeSave(this.model.session,{connection_status:Yc.ROOMSTATUS.NICKNAME_REQUIRED})},closeForm(){Ry(".chatroom-form-container",this.el).forEach(e=>Py.addClass("hidden",e)),this.renderAfterTransition()},getAndRenderConfigurationForm(){this.config_form&&Py.isVisible(this.config_form.el)?this.closeForm():(this.showSpinner(),this.model.fetchRoomConfiguration().then(e=>this.renderConfigurationForm(e)).catch(e=>Pn.error(e)))},hideChatRoomContents(){const e=this.el.querySelector(".chatroom-body");null!==e&&[].forEach.call(e.children,e=>e.classList.add("hidden"))},renderPasswordForm(){this.hideChatRoomContents();const e=this.model.get("password_validation_message");if(this.model.save("password_validation_message",void 0),this.password_form)this.password_form.model.set("validation_message",e);else{this.password_form=new Lc.MUCPasswordForm({model:new Rs({validation_message:e}),chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.password_form.el)}Py.showElement(this.password_form.el),this.model.session.save("connection_status",Yc.ROOMSTATUS.PASSWORD_REQUIRED)},showDestroyedMessage(){Py.hideElement(this.el.querySelector(".chat-area")),Py.hideElement(this.el.querySelector(".occupants")),Ry(".spinner",this.el).forEach(Py.removeElement);const e=this.model.get("destroyed_reason"),t=this.model.get("moved_jid");this.model.save({destroyed_reason:void 0,moved_jid:void 0});const n=this.el.querySelector(".disconnect-container");Wa(sy(t,e),n);const r=n.querySelector("a.switch-chat");r&&r.addEventListener("click",async e=>{e.preventDefault(),(await qc.rooms.get(t,null,!0)).maybeShow(!0),this.model.destroy()}),Py.showElement(n)},showDisconnectMessage(){const e=this.model.get("disconnection_message");if(!e)return;Py.hideElement(this.el.querySelector(".chat-area")),Py.hideElement(this.el.querySelector(".occupants")),Ry(".spinner",this.el).forEach(Py.removeElement);const t=[e],n=this.model.get("disconnection_actor");n&&t.push(dd("This action was done by %1$s.",n));const r=this.model.get("disconnection_reason");r&&t.push(dd('The reason given is: "%1$s".',r)),this.model.save({disconnection_message:void 0,disconnection_reason:void 0,disconnection_actor:void 0});const i=this.el.querySelector(".disconnect-container");Wa((e=>Ga(ay(),e[0],e.slice(1).map(e=>Ga(oy(),e))))(t),i),Py.showElement(i)},onOccupantAdded(e){e.get("jid")===Lc.bare_jid&&(this.renderHeading(),this.renderBottomPanel())},getPreviousJoinOrLeaveNotification(e,t){const n=(new Date).toISOString().split("T")[0];for(;null!==e;){var r;if(!e.classList.contains("chat-info"))return;const i=e.getAttribute("data-isodate");if(i&&i.split("T")[0]!==n)return;const s=(null===(r=e)||void 0===r?void 0:r.dataset)||{};if(s.join===t||s.leave===t||s.leavejoin===t||s.joinleave===t)return e;e=e.previousElementSibling}},renderAfterTransition(){const e=this.model.session.get("connection_status");e==Yc.ROOMSTATUS.NICKNAME_REQUIRED?this.renderNicknameForm():e==Yc.ROOMSTATUS.PASSWORD_REQUIRED?this.renderPasswordForm():e==Yc.ROOMSTATUS.ENTERED&&(this.hideChatRoomContents(),Py.showElement(this.el.querySelector(".chat-area")),Py.showElement(this.el.querySelector(".occupants")),this.scrollDown())},showSpinner(){Ry(".spinner",this.el).forEach(Py.removeElement),this.hideChatRoomContents(),this.el.querySelector(".chatroom-body").insertAdjacentElement("afterbegin",Py.getElementFromTemplateResult(Tf()))},hideSpinner(){const e=this.el.querySelector(".spinner");return null!==e&&(Py.removeElement(e),this.renderAfterTransition()),this}}),$y=jd.extend({tagName:"div",className:"controlbox-section",id:"chatrooms",events:{"click a.controlbox-heading__btn.show-add-muc-modal":"showAddRoomModal","click a.controlbox-heading__btn.show-list-muc-modal":"showMUCListModal"},toHTML(){return e={heading_chatrooms:dd("Groupchats"),title_new_room:dd("Add a new groupchat"),title_list_rooms:dd("Query for groupchats")},Ga(Iy(),e.heading_chatrooms,e.title_list_rooms,e.title_new_room);var e},showAddRoomModal(e){void 0===this.add_room_modal&&(this.add_room_modal=new P_({model:this.model})),this.add_room_modal.show(e)},showMUCListModal(e){void 0===this.muc_list_modal&&(this.muc_list_modal=new Z_({model:this.model})),this.muc_list_modal.show(e)}});function Wy(){const e=Gy(['\n <div class="list-container list-container--headline ','">\n <div class="items-list rooms-list headline-list">\n ',"\n </div>\n </div>\n"]);return Wy=function(){return e},e}function Vy(){const e=Gy(['\n <div class="list-item controlbox-padded d-flex flex-row"\n data-headline-jid="','">\n <a class="list-item-link open-headline available-room w-100"\n data-headline-jid="','"\n title="','" href="#">',"</a>\n </div>\n"]);return Vy=function(){return e},e}function Gy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Yc.plugins.add("converse-muc-views",{dependencies:["converse-autocomplete","converse-modal","converse-controlbox","converse-chatview"],overrides:{ControlBoxView:{renderControlBoxPane(){this.__super__.renderControlBoxPane.apply(this,arguments),qc.settings.get("allow_muc")&&this.renderRoomsPanel()}}},initialize(){const{_converse:e}=this;qc.promises.add(["roomsPanelRendered"]),qc.settings.extend({auto_list_rooms:!1,cache_muc_messages:!0,locked_muc_nickname:!1,modtools_disable_query:[],modtools_disable_assign:!1,muc_disable_slash_commands:!1,muc_mention_autocomplete_filter:"contains",muc_mention_autocomplete_min_chars:0,muc_mention_autocomplete_show_avatar:!0,muc_roomid_policy:null,muc_roomid_policy_hint:null,roomconfig_whitelist:[],show_retraction_warning:!0,visible_toolbar_buttons:{toggle_occupants:!0}}),e.ChatRoomView=Uy,e.RoomsPanel=$y;const t={renderRoomsPanel(){if(this.roomspanel&&Py.isInDOM(this.roomspanel.el))return this.roomspanel;const t="converse.roomspanel".concat(e.bare_jid);return this.roomspanel=new e.RoomsPanel({model:new(e.RoomsPanelModel.extend({id:t,browserStorage:e.createStore(t)}))}),this.roomspanel.model.fetch(),this.el.querySelector(".controlbox-pane").insertAdjacentElement("beforeEnd",this.roomspanel.render().el),qc.trigger("roomsPanelRendered"),this.roomspanel},getRoomsPanel(){return this.roomspanel&&Py.isInDOM(this.roomspanel.el)?this.roomspanel:this.renderRoomsPanel()}};function n(e,t){t.getRoomsPanel().model.save("muc_domain",My.getDomainFromJid(e))}function r(t){t.model.get("connected")&&(t.getRoomsPanel().model.get("muc_domain")||(void 0===qc.settings.get("muc_domain")?function(t){function r(e){e&&e.get("var")===My.NS.MUC&&e.entity.getIdentity("conference","text").then(r=>{r&&n(e.get("from"),t)})}qc.waitUntil("discoInitialized").then(()=>{qc.listen.on("serviceDiscovered",r),e.disco_entities.each(e=>r(e.features.findWhere({var:My.NS.MUC})))}).catch(e=>Pn.error(e))}(t):n(qc.settings.get("muc_domain"),t)))}e.ControlBoxView&&Object.assign(e.ControlBoxView.prototype,t),e.MUCConfigForm=jd.extend({className:"chatroom-form-container muc-config-form",initialize(e){this.chatroomview=e.chatroomview,this.listenTo(this.chatroomview.model.features,"change:passwordprotected",this.render),this.listenTo(this.chatroomview.model.features,"change:config_stanza",this.render),this.render()},toHTML(){var e,t;const n=Py.toStanza(this.model.get("config_stanza")),r=qc.settings.get("roomconfig_whitelist");let i=Ry("field",n);r.length&&(i=i.filter(e=>r.includes(e.getAttribute("var"))));const s={new_password:!this.model.features.get("passwordprotected"),fixed_username:this.model.get("jid")};return(e=>{const t=dd("Save"),n=dd("Cancel");return Ga(by(),e.submitConfigForm,e.title,e.title!==e.instructions?Ga(_y(),e.instructions):"",e.fields.map(e=>pp(e)),t,n,e.closeConfigForm)})({closeConfigForm:e=>this.closeConfigForm(e),fields:i.map(e=>Py.xForm2webForm(e,n,s)),instructions:null===(e=n.querySelector("instructions"))||void 0===e?void 0:e.textContent,submitConfigForm:e=>this.submitConfigForm(e),title:null===(t=n.querySelector("title"))||void 0===t?void 0:t.textContent})},async submitConfigForm(e){e.preventDefault();const t=Ry(":input:not([type=button]):not([type=submit])",e.target).map(Py.webForm2xForm).filter(e=>e);try{await this.model.sendConfiguration(t)}catch(e){Pn.error(e);const t=dd("Sorry, an error occurred while trying to submit the config form.")+" "+dd("Check your browser's developer console for details.");qc.alert("error",dd("Error"),t)}await this.model.refreshDiscoInfo(),this.chatroomview.closeForm()},closeConfigForm(e){e.preventDefault(),this.chatroomview.closeForm()}}),e.MUCPasswordForm=jd.extend({className:"chatroom-form-container muc-password-form",initialize(e){this.chatroomview=e.chatroomview,this.listenTo(this.model,"change:validation_message",this.render),this.render()},toHTML(){return(e=>{const t=dd("This groupchat requires a password"),n=dd("Password: "),r=dd("Submit");return Ga(wy(),e.submitPassword,t,e.validation_message,e.jid,e.validation_message?"error":"",n,r)})({jid:this.model.get("jid"),submitPassword:e=>this.submitPassword(e),validation_message:this.model.get("validation_message")})},submitPassword(e){e.preventDefault();const t=this.el.querySelector("input[type=password]").value;this.chatroomview.model.join(this.chatroomview.model.get("nick"),t),this.model.set("validation_message",null)}}),e.MUCSidebar=jd.extend({tagName:"div",className:"occupants col-md-3 col-4",async initialize(){this.chatroomview=this.model.chatroomview,this.listenTo(this.model,"add",this.render),this.listenTo(this.model,"remove",this.render),this.listenTo(this.model,"change",this.render),this.listenTo(this.chatroomview.model.features,"change",this.render),this.listenTo(this.chatroomview.model,"change:hidden_occupants",this.setVisibility),this.render(),await this.model.fetched},toHTML(){return(e=>{const t=e=>dd("Click to mention %1$s in your message.",e.get("nick")),n=dd("Participants");return Ga(ky(),n,e.occupants.map(e=>Oy(Object.assign({jid:"",hint_show:Ny[e.get("show")],hint_occupant:t(e)},e.toJSON()))))})(Object.assign(this.chatroomview.model.toJSON(),{_converse:e,features:this.chatroomview.model.features,occupants:this.model.models}))},afterRender(){this.setVisibility()},setVisibility(){this.chatroomview.model.get("hidden_occupants")||this.chatroomview.model.session.get("connection_status")!==Yc.ROOMSTATUS.ENTERED?Py.hideElement(this.el):Py.showElement(this.el)}}),qc.listen.on("chatBoxViewsInitialized",()=>{e.chatboxviews.delegate("click","a.open-chatroom",(function(e){e.preventDefault(),qc.rooms.open(e.target.href)})),e.chatboxes.on("add",(async function(t){const n=e.chatboxviews;if(!n.get(t.get("id"))&&t.get("type")===e.CHATROOMS_TYPE&&t.isValid())return await t.initialized,n.add(t.get("id"),new e.ChatRoomView({model:t}))}))}),qc.listen.on("clearSession",()=>{const t=e.chatboxviews.get("controlbox");t&&t.roomspanel&&(t.roomspanel.model.destroy(),t.roomspanel.remove(),delete t.roomspanel)}),qc.listen.on("controlBoxInitialized",e=>{qc.settings.get("allow_muc")&&(r(e),e.model.on("change:connected",()=>r(e)))}),Object.assign(e.api,{roomviews:{get(t){if(Array.isArray(t)){return qc.chatviews.get(t).filter(t=>t.model.get("type")===e.CHATROOMS_TYPE)}{const n=qc.chatviews.get(t);return n.model.get("type")===e.CHATROOMS_TYPE?n:null}},close(t){let n;return void 0===t?n=e.chatboxviews:"string"==typeof t?n=[e.chatboxviews.get(t)].filter(e=>e):Array.isArray(t)&&(n=t.map(t=>e.chatboxviews.get(t))),Promise.all(n.map(e=>e.is_chatroom&&e.model&&e.close()))}}})}});var Jy=e=>Ga(Wy(),e.headlineboxes.length?"":"hidden",e.headlineboxes.map(t=>(e=>Ga(Vy(),e.headlinebox.get("jid"),e.headlinebox.get("jid"),e.open_title,e.headlinebox.get("jid")))(Object.assign({headlinebox:t},e))));function Xy(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="d-flex controlbox-padded ','">\n <span class="w-100 controlbox-heading controlbox-heading--headline">',"</span>\n </div>\n ","\n"]);return Xy=function(){return e},e} +const{dayjs:Hb}=rl.env,Ub=rl.env.utils;function $b(){const e=Qb(['<span class="badge badge-secondary">',"</span>"]);return $b=function(){return e},e}function Wb(){const e=Qb(['<span class="badge badge-info">',"</span>"]);return Wb=function(){return e},e}function Gb(){const e=Qb(['<span class="badge badge-info">',"</span>"]);return Gb=function(){return e},e}function Vb(){const e=Qb(['<span class="badge badge-info">',"</span>"]);return Vb=function(){return e},e}function Jb(){const e=Qb(['<span class="badge badge-groupchat">',"</span>"]);return Jb=function(){return e},e}function Xb(){const e=Qb(['\n <li class="occupant" id="','" title="','">\n <div class="row no-gutters">\n <div class="col-auto">\n <div class="occupant-status occupant-',' circle" title="','"></div>\n </div>\n <div class="col occupant-nick-badge">\n <span class="occupant-nick">','</span>\n <span class="occupant-badges">\n ',"\n ","\n ","\n ","\n ","\n </span>\n </div>\n </div>\n </li>\n "]);return Xb=function(){return e},e}function Qb(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}rl.plugins.add("converse-minimize",{dependencies:["converse-chatview","converse-controlbox","converse-muc-views","converse-headlines-view","converse-dragresize"],enabled:e=>"overlayed"===e.api.settings.get("view_mode"),overrides:{ChatBox:{initialize(){this.__super__.initialize.apply(this,arguments),this.on("show",this.maximize,this),"controlbox"!==this.get("id")&&this.save({minimized:this.get("minimized")||!1,time_minimized:this.get("time_minimized")||Hb()})},maybeShow(e){return!e&&this.get("minimized")?this:this.__super__.maybeShow.apply(this,arguments)},isHidden(){return this.__super__.isHidden.call(this)||this.get("minimized")}},ChatBoxView:{show(){const{_converse:e}=this.__super__;return"overlayed"===e.api.settings.get("view_mode")&&this.model.get("minimized")?(this.model.minimize(),this):this.__super__.show.apply(this,arguments)},isNewMessageHidden(){return this.model.get("minimized")||this.__super__.isNewMessageHidden.apply(this,arguments)},setChatBoxHeight(e){if(!this.model.get("minimized"))return this.__super__.setChatBoxHeight.call(this,e)},setChatBoxWidth(e){if(!this.model.get("minimized"))return this.__super__.setChatBoxWidth.call(this,e)}}},initialize(){Vc.settings.extend({no_trimming:!1});const e={maximize(){Ub.safeSave(this,{minimized:!1,time_opened:(new Date).getTime()})},minimize(){Ub.safeSave(this,{minimized:!0,time_minimized:(new Date).toISOString()})}};Object.assign(Uc.ChatBox.prototype,e);const t={onMaximized(){const{_converse:e}=this.__super__;return this.insertIntoDOM(),this.model.isScrolledUp()||this.model.clearUnreadMsgCounter(),this.model.setChatState(e.ACTIVE),this.show(),Vc.trigger("chatBoxMaximized",this),this},onMinimized(e){const{_converse:t}=this.__super__;return e&&e.preventDefault&&e.preventDefault(),this.model.collection&&this.model.collection.browserStorage?this.model.save({scroll:this.content.scrollTop}):this.model.set({scroll:this.content.scrollTop}),this.model.setChatState(t.INACTIVE),this.hide(),Vc.trigger("chatBoxMinimized",this),this},minimize(e){return e&&e.preventDefault&&e.preventDefault(),this.model.minimize(),this},onMinimizedChanged(e){e.get("minimized")?this.onMinimized():this.onMaximized()}};Object.assign(Uc.ChatBoxView.prototype,t);const n={getChatBoxWidth(e){if("controlbox"===e.model.get("id")){const e=this.get("controlbox");return e&&Ub.isVisible(e.el)?Ub.getOuterWidth(e.el,!0):Ub.getOuterWidth(Uc.controlboxtoggle.el,!0)}return!e.model.get("minimized")&&Ub.isVisible(e.el)?Ub.getOuterWidth(e.el,!0):0},getShownChats(){return this.filter(e=>!e.model.get("minimized")&&!e.model.get("closed")&&Ub.isVisible(e.el))},getMinimizedWidth(){var e;const t=null===(e=Uc.minimized_chats)||void 0===e?void 0:e.el;return this.model.pluck("minimized").includes(!0)?Ub.getOuterWidth(t,!0):0},getBoxesWidth(e){const t=e?e.model.get("id"):null,n=e?Ub.getOuterWidth(e.el,!0):0;return Object.values(this.xget(t)).reduce((e,t)=>e+this.getChatBoxWidth(t),n)},async trimChats(e){var t;if(Vc.settings.get("no_trimming")||!Vc.connection.connected()||"overlayed"!==Vc.settings.get("view_mode"))return;const n=this.getShownChats();if(n.length<=1)return;const r=Ub.getOuterWidth(document.querySelector("body"),!0);if(this.getChatBoxWidth(n[0])!==r&&(await Vc.waitUntil("minimizedChatsInitialized"),null===(t=Uc.minimized_chats)||void 0===t?void 0:t.el))for(;this.getMinimizedWidth()+this.getBoxesWidth(e)>r;){const t=e?e.model.get("id"):null,n=this.getOldestMaximizedChat([t]);if(!n)break;{const e=this.get(n.get("id"));e&&e.hide(),n.minimize()}}},getOldestMaximizedChat(e){e.push("controlbox");let t=0,n=this.model.sort().at(t);for(;e.includes(n.get("id"))||!0===n.get("minimized");)if(t++,n=this.model.at(t),!n)return null;return n}};Object.assign(Uc.ChatBoxViews.prototype,n),Vc.promises.add("minimizedChatsInitialized"),Uc.MinimizedChatsToggle=qo.extend({defaults:{collapsed:!1}}),Uc.MinimizedChats=eh.extend({tagName:"span",async initialize(){await this.initToggle(),this.render(),this.listenTo(this.minchats,"change:collapsed",this.render),this.listenTo(this.model,"add",this.render),this.listenTo(this.model,"change:fullname",this.render),this.listenTo(this.model,"change:jid",this.render),this.listenTo(this.model,"change:minimized",this.render),this.listenTo(this.model,"change:name",this.render),this.listenTo(this.model,"change:num_unread",this.render),this.listenTo(this.model,"remove",this.render)},render(){const e=this.model.where({minimized:!0}),t=e.reduce((e,t)=>e+t.get("num_unread"),0),n=e.reduce((e,t)=>e+(t.get("minimized")?1:0),0),r={chats:e,num_unread:t,num_minimized:n,collapsed:this.minchats.get("collapsed")};var i;r.toggle=e=>this.toggle(e),Ya((i=r,Za(Bb(),i.chats.length?"":"hidden",i.toggle,i.num_minimized,zd("Minimized"),i.num_unread?"":"unread-message-count-hidden",i.num_unread,i.collapsed?"hidden":"",i.chats.map(e=>Za(Fb(),e,e.getDisplayName(),e.get("type"),e.get("num_unread"))))),this.el),this.el.parentElement||Uc.chatboxviews.insertRowColumn(this.el)},async initToggle(){const e="converse.minchatstoggle-".concat(Uc.bare_jid);this.minchats=new Uc.MinimizedChatsToggle({id:e}),this.minchats.browserStorage=Uc.createStore(e),await new Promise(e=>this.minchats.fetch({success:e,error:e}))},toggle(e){null==e||e.preventDefault(),this.minchats.save({collapsed:!this.minchats.get("collapsed")})}}),Vc.listen.on("chatBoxInsertedIntoDOM",e=>Uc.chatboxviews.trimChats(e)),Vc.listen.on("connected",()=>{return null===(e=Uc.minimized_chats)||void 0===e||e.remove(),Uc.minimized_chats=new Uc.MinimizedChats({model:Uc.chatboxes}),void Vc.trigger("minimizedChatsInitialized");var e}),Vc.listen.on("controlBoxOpened",e=>Uc.chatboxviews.trimChats(e)),Vc.listen.on("chatBoxViewInitialized",e=>e.listenTo(e.model,"change:minimized",e.onMinimizedChanged)),Vc.listen.on("chatRoomViewInitialized",e=>{e.listenTo(e.model,"change:minimized",e.onMinimizedChanged),e.model.get("minimized")&&e.hide()}),Vc.listen.on("getHeadingButtons",(e,t)=>e.model.get("type")===Uc.CHATROOMS_TYPE?function(e,t){const n={a_class:"toggle-chatbox-button",handler:t=>e.minimize(t),i18n_text:zd("Minimize"),i18n_title:zd("Minimize this groupchat"),icon_class:"fa-minus",name:"minimize",standalone:"overlayed"===Uc.api.settings.get("view_mode")},r=t.map(e=>e.name).indexOf("signout");return r>-1?[...t.slice(0,r),n,...t.slice(r)]:[n,...t]}(e,t):function(e,t){const n={a_class:"toggle-chatbox-button",handler:t=>e.minimize(t),i18n_text:zd("Minimize"),i18n_title:zd("Minimize this chat"),icon_class:"fa-minus",name:"minimize",standalone:"overlayed"===Uc.api.settings.get("view_mode")},r=t.map(e=>e.name).indexOf("close");return r>-1?[...t.slice(0,r),n,...t.slice(r)]:[n,...t]}(e,t));const r=Rc(()=>Uc.chatboxviews.trimChats(),250);Vc.listen.on("registeredGlobalEventHandlers",()=>window.addEventListener("resize",r)),Vc.listen.on("unregisteredGlobalEventHandlers",()=>window.removeEventListener("resize",r))}});var Yb=e=>{const t=zd("Owner"),n=zd("Admin"),r=zd("Member"),i=zd("Moderator"),o=zd("Visitor");return Za(Xb(),e.id,(e=>{const t=zd("This user is a moderator."),n=zd("This user can send messages in this groupchat."),r=zd("This user can NOT send messages in this groupchat."),i="".concat(e.jid," ")||!1;return"moderator"===e.role?"".concat(i).concat(t," ").concat(e.hint_occupant):"participant"===e.role?"".concat(i).concat(n," ").concat(e.hint_occupant):"visitor"===e.role?"".concat(i).concat(r," ").concat(e.hint_occupant):["visitor","participant","moderator"].includes(e.role)?void 0:"".concat(i).concat(e.hint_occupant)})(e),e.show,e.hint_show,e.nick||e.jid,"owner"===e.affiliation?Za(Jb(),t):"","admin"===e.affiliation?Za(Vb(),n):"","member"===e.affiliation?Za(Gb(),r):"","moderator"===e.role?Za(Wb(),i):"","visitor"===e.role?Za($b(),o):"")};function Kb(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="occupants-header">\n <i class="hide-occupants fa fa-times"></i>\n <div class="occupants-header--title">\n <span class="occupants-heading">','</span>\n </div>\n </div>\n <div class="dragresize dragresize-occupants-left"></div>\n <ul class="occupant-list">',"</ul>\n "]);return Kb=function(){return e},e}const Zb={offline:"Offline",unavailable:"Unavailable",xa:"Extended Away",away:"Away",dnd:"Do not disturb",chat:"Chattty",online:"Online"};const ey=rl.env.utils;function ty(){const e=ry(['<p class="form-help">',"</p>"]);return ty=function(){return e},e}function ny(){const e=ry(['\n <form class="converse-form chatroom-form" autocomplete="off" @submit=','>\n <fieldset class="form-group">\n <legend>',"</legend>\n ","\n \x3c!-- Fields are generated internally, with xForm2webForm --\x3e\n ",'\n </fieldset>\n <fieldset>\n <input type="submit" class="btn btn-primary" value="','">\n <input type="button" class="btn btn-secondary button-cancel" value="','" @click=',">\n </fieldset>\n </form>\n "]);return ny=function(){return e},e}function ry(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-muc-sidebar",class extends mc{static get properties(){return{chatroom:{type:Object},occupants:{type:Object}}}connectedCallback(){super.connectedCallback(),this.listenTo(this.occupants,"add",this.requestUpdate),this.listenTo(this.occupants,"remove",this.requestUpdate),this.listenTo(this.occupants,"change",this.requestUpdate)}render(){return(e=>{const t=e=>zd("Click to mention %1$s in your message.",e.get("nick")),n=zd("Participants"),r=e.occupants.map(e=>Yb(Object.assign({jid:"",hint_show:Zb[e.get("show")],hint_occupant:t(e)},e.toJSON())));return Za(Kb(),n,r)})(Object.assign(this.chatroom.toJSON(),{occupants:[...this.occupants.models]}))}shouldShow(){return!this.chatroom.get("hidden_occupants")&&this.chatroom.session.get("connection_status")===rl.ROOMSTATUS.ENTERED}setVisibility(){this.shouldShow()?ey.showElement(this):ey.hideElement(this)}});const{sizzle:iy}=rl.env,oy=rl.env.utils;var sy=eh.extend({className:"chatroom-form-container muc-config-form",initialize(e){this.chatroomview=e.chatroomview,this.listenTo(this.chatroomview.model.features,"change:passwordprotected",this.render),this.listenTo(this.chatroomview.model.features,"change:config_stanza",this.render),this.render()},toHTML(){var e,t;const n=oy.toStanza(this.model.get("config_stanza")),r=Vc.settings.get("roomconfig_whitelist");let i=iy("field",n);r.length&&(i=i.filter(e=>r.includes(e.getAttribute("var"))));const o={new_password:!this.model.features.get("passwordprotected"),fixed_username:this.model.get("jid")};return(e=>{const t=zd("Save"),n=zd("Cancel");return Za(ny(),e.submitConfigForm,e.title,e.title!==e.instructions?Za(ty(),e.instructions):"",e.fields.map(e=>Kp(e)),t,n,e.closeConfigForm)})({closeConfigForm:e=>this.closeConfigForm(e),fields:i.map(e=>oy.xForm2webForm(e,n,o)),instructions:null===(e=n.querySelector("instructions"))||void 0===e?void 0:e.textContent,submitConfigForm:e=>this.submitConfigForm(e),title:null===(t=n.querySelector("title"))||void 0===t?void 0:t.textContent})},async submitConfigForm(e){e.preventDefault();const t=iy(":input:not([type=button]):not([type=submit])",e.target).map(oy.webForm2xForm).filter(e=>e);try{await this.model.sendConfiguration(t)}catch(e){zn.error(e);const t=zd("Sorry, an error occurred while trying to submit the config form.")+" "+zd("Check your browser's developer console for details.");Vc.alert("error",zd("Error"),t)}await this.model.refreshDiscoInfo(),this.chatroomview.closeForm()},closeConfigForm(e){e.preventDefault(),this.chatroomview.closeForm()}});function ay(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="converse-form chatroom-form converse-centered-form" @submit=','>\n <fieldset class="form-group">\n <label>','</label>\n <p class="validation-message">','</p>\n <input class="hidden-username" type="text" autocomplete="username" value="','"></input>\n <input type="password"\n name="password"\n required="required"\n class="form-control ','"\n placeholder="','"/>\n </fieldset>\n <fieldset class="form-group">\n <input class="btn btn-primary" type="submit" value="','"/>\n </fieldset>\n </form>\n ']);return ay=function(){return e},e}var cy=eh.extend({className:"chatroom-form-container muc-password-form",initialize(e){this.chatroomview=e.chatroomview,this.listenTo(this.model,"change:validation_message",this.render),this.render()},toHTML(){return(e=>{const t=zd("This groupchat requires a password"),n=zd("Password: "),r=zd("Submit");return Za(ay(),e.submitPassword,t,e.validation_message,e.jid,e.validation_message?"error":"",n,r)})({jid:this.model.get("jid"),submitPassword:e=>this.submitPassword(e),validation_message:this.model.get("validation_message")})},submitPassword(e){e.preventDefault();const t=this.el.querySelector("input[type=password]").value;this.chatroomview.model.join(this.chatroomview.model.get("nick"),t),this.model.set("validation_message",null)}});function ly(){const e=dy(['<div class="error error-feedback">',"</div>"]);return ly=function(){return e},e}function uy(){const e=dy(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="add-chatroom-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="suggestion-box room-invite">\n <form @submit=','>\n <div class="form-group">\n <label class="clearfix" for="invitee_jids">',":</label>\n ",'\n <input class="form-control suggestion-box__input"\n required="required"\n name="invitee_jids"\n id="invitee_jids"\n placeholder="','"\n type="text"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n <ul class="suggestion-box__results suggestion-box__results--below" hidden=""></ul>\n </div>\n <div class="form-group">\n <label>',':</label>\n <textarea class="form-control" name="reason"></textarea>\n </div>\n <div class="form-group">\n <button type="submit" class="btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n </div>\n </div>\n </div>\n "]);return uy=function(){return e},e}function dy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const hy=rl.env.utils;var fy=df.extend({id:"muc-invite-modal",initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.initInviteWidget()},toHTML(){return(e=>{const t=zd("Invite"),n=zd("Invite someone to this groupchat"),r=zd("user@example.org"),i=zd("Please enter a valid XMPP address"),o=zd("XMPP Address"),s=zd("Optional reason for the invitation");return Za(uy(),n,mf,e.submitInviteForm,o,e.invalid_invite_jid?Za(ly(),i):"",r,s,t)})(Object.assign(this.model.toJSON(),{submitInviteForm:e=>this.submitInviteForm(e)}))},initInviteWidget(){this.invite_auto_complete&&this.invite_auto_complete.destroy();const e=Uc.roster.map(e=>({label:e.getDisplayName(),value:e.get("jid")})),t=this.el.querySelector(".suggestion-box").parentElement;this.invite_auto_complete=new Uc.AutoComplete(t,{min_chars:1,list:e})},submitInviteForm(e){e.preventDefault();const t=new FormData(e.target),n=t.get("invitee_jids"),r=t.get("reason");hy.isValidJID(n)?(this.chatroomview.model.directInvite(n,r),this.modal.hide()):this.model.set({invalid_invite_jid:!0})}});function py(){const e=Dy(['<li class="list-group-item">',"</li>"]);return py=function(){return e},e}function gy(){const e=Dy(['<li class="list-group-item"> '," </li>"]);return gy=function(){return e},e}function my(){const e=Dy(['<div class="row"><div class="col pt-2"><p class="helptext pb-3">',"</p></div></div>"]);return my=function(){return e},e}function vy(){const e=Dy(['<input class="form-control" .value="','" @keyup=',' type="text" name="filter" placeholder="','"/>']);return vy=function(){return e},e}function _y(){const e=Dy(['<li class="list-group-item">',"</li>"]);return _y=function(){return e},e}function by(){const e=Dy(['<li class="list-group-item">',"</li>"]);return by=function(){return e},e}function yy(){const e=Dy(['<li class="list-group-item"> '," </li>"]);return yy=function(){return e},e}function wy(){const e=Dy(['<div class="row"><div class="col pt-2"><p class="helptext pb-3">',"</p></div></div>"]);return wy=function(){return e},e}function Sy(){const e=Dy(['<input class="form-control" .value="','" @keyup=',' type="text" name="filter" placeholder="','"/>']);return Sy=function(){return e},e}function xy(){const e=Dy(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="converse-modtools-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body d-flex flex-column">\n <span class="modal-alert"></span>\n\n ','\n\n <div class="tab-content">\n <div class="tab-pane tab-pane--columns ','" id="affiliations-tabpanel" role="tabpanel" aria-labelledby="affiliations-tab">\n <form class="converse-form query-affiliation" @submit=','>\n <p class="helptext pb-3">','</p>\n <div class="form-group">\n <label for="affiliation">\n <strong>',':</strong>\n </label>\n <div class="row">\n <div class="col">\n <select class="custom-select select-affiliation" name="affiliation">\n ','\n </select>\n </div>\n <div class="col">\n <input type="submit" class="btn btn-primary" name="users_with_affiliation" value="','"/>\n </div>\n </div>\n <div class="row">\n <div class="col mt-3">\n ',"\n </div>\n </div>\n\n ",'\n </div>\n </form>\n <div class="scrollable-container">\n <ul class="list-group list-group--users">\n ',"\n ","\n\n ",'\n </ul>\n </div>\n </div>\n\n <div class="tab-pane tab-pane--columns ','" id="roles-tabpanel" role="tabpanel" aria-labelledby="roles-tab">\n <form class="converse-form query-role" @submit=','>\n <p class="helptext pb-3">','</p>\n <div class="form-group">\n <label for="role"><strong>',':</strong></label>\n <div class="row">\n <div class="col">\n <select class="custom-select select-role" name="role">\n ','\n </select>\n </div>\n <div class="col">\n <input type="submit" class="btn btn-primary" name="users_with_role" value="','"/>\n </div>\n </div>\n <div class="row">\n <div class="col mt-3">\n ',"\n </div>\n </div>\n\n ",'\n </div>\n </form>\n <div class="scrollable-container">\n <ul class="list-group list-group--users">\n ',"\n ","\n ","\n </ul>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>"]);return xy=function(){return e},e}function Ey(){const e=Dy(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="affiliations-tab" href="#affiliations-tabpanel" aria-controls="affiliations-tabpanel" role="tab" data-toggle="tab" @click=','>Affiliations</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="roles-tab" href="#roles-tabpanel" aria-controls="roles-tabpanel" role="tab" data-toggle="tab" @click=',">Roles</a>\n </li>\n </ul>\n"]);return Ey=function(){return e},e}function Ay(){const e=Dy(['<a href="#" data-form="affiliation-form" class="toggle-form right fa fa-wrench" @click=',"></a>"]);return Ay=function(){return e},e}function Cy(){const e=Dy(['\n <li class="list-group-item" data-nick="','">\n <ul class="list-group">\n <li class="list-group-item active">\n <div><strong>JID:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Nickname:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Affiliation:</strong> '," ","</div>\n ","\n </li>\n </ul>\n </li>\n"]);return Cy=function(){return e},e}function jy(){const e=Dy(['<option value="','" ?selected=',">","</option>"]);return jy=function(){return e},e}function Ty(){const e=Dy(['\n <form class="affiliation-form hidden" @submit=','>\n <div class="form-group">\n <input type="hidden" name="jid" value="','"/>\n <input type="hidden" name="nick" value="','"/>\n <div class="row">\n <div class="col">\n <label><strong>',':</strong></label>\n <select class="custom-select select-affiliation" name="affiliation">\n ','\n </select>\n </div>\n <div class="col">\n <label><strong>',':</strong></label>\n <input class="form-control" type="text" name="reason"/>\n </div>\n </div>\n </div>\n <div class="form-group">\n <input type="submit" class="btn btn-primary" name="change" value="','"/>\n </div>\n </form>\n ']);return Ty=function(){return e},e}function Oy(){const e=Dy(['<a href="#" data-form="role-form" class="toggle-form right fa fa-wrench" @click=',"></a>"]);return Oy=function(){return e},e}function ky(){const e=Dy(['\n <li class="list-group-item" data-nick="','">\n <ul class="list-group">\n <li class="list-group-item active">\n <div><strong>JID:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Nickname:</strong> ','</div>\n </li>\n <li class="list-group-item">\n <div><strong>Role:</strong> '," ","</div>\n ","\n </li>\n </ul>\n </li>\n"]);return ky=function(){return e},e}function Ny(){const e=Dy(['<option value="','" ?selected=',">","</option>"]);return Ny=function(){return e},e}function Iy(){const e=Dy(['\n <form class="role-form hidden" @submit=','>\n <div class="form-group">\n <input type="hidden" name="jid" value="','"/>\n <input type="hidden" name="nick" value="','"/>\n <div class="row">\n <div class="col">\n <label><strong>',':</strong></label>\n <select class="custom-select select-role" name="role">\n ','\n </select>\n </div>\n <div class="col">\n <label><strong>',':</strong></label>\n <input class="form-control" type="text" name="reason"/>\n </div>\n </div>\n </div>\n <div class="form-group">\n <input type="submit" class="btn btn-primary" value="','"/>\n </div>\n </form>\n ']);return Iy=function(){return e},e}function My(){const e=Dy(['\n <option value="','"\n ?selected=','\n title="','">',"</option>\n"]);return My=function(){return e},e}function Ry(){const e=Dy(['\n <option value="','"\n ?selected=','\n title="','">',"</option>\n"]);return Ry=function(){return e},e}function Dy(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Py(e){return"moderator"===e?zd("Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations."):"participant"===e?zd("The default role, implies that you can read and write messages."):"visitor"==e?zd("Visitors aren't allowed to write messages in a moderated multi-user chat."):void 0}function Ly(e){return"owner"===e?zd("Owner is the highest affiliation. Owners can modify roles and affiliations of all other users."):"admin"===e?zd("Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners."):"outcast"===e?zd('To ban a user, you give them the affiliation of "outcast".'):void 0}const zy=e=>Za(ky(),e.item.nick,e.item.jid,e.item.nick,e.item.role,e.assignable_roles.length?Za(Oy(),e.toggleForm):"",e.assignable_roles.length?(e=>{const t=zd("Change role"),n=zd("New Role"),r=zd("Reason");return Za(Iy(),e.assignRole,e.item.jid,e.item.nick,n,e.assignable_roles.map(t=>Za(Ny(),t,t===e.item.role,t)),r,t)})(e):""),Fy=e=>Za(Cy(),e.item.nick,e.item.jid,e.item.nick,e.item.affiliation,e.assignable_affiliations.length?Za(Ay(),e.toggleForm):"",e.assignable_affiliations.length?(e=>{const t=zd("Change affiliation"),n=zd("New affiliation"),r=zd("Reason");return Za(Ty(),e.assignAffiliation,e.item.jid,e.item.nick,n,e.assignable_affiliations.map(t=>Za(jy(),t,t===e.item.affiliation,t)),r,t)})(e):"");var By=e=>{const t=zd("Affiliation"),n=zd("Moderator Tools"),r=zd("No users with that affiliation found."),i=zd("No users with that role found."),o=zd("Type here to filter the search results"),s=zd("Role"),a=zd("Show users"),c=zd("Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They're assigned either explicitly or implicitly as part of an affiliation. A role that's not due to an affiliation, is only valid for the duration of the user's session."),l=zd("An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role."),u=e.queryable_roles.length&&e.queryable_affiliations.length;return Za(xy(),n,mf,u?(e=>Za(Ey(),e.switchTab,e.switchTab))(e):"",e.queryable_affiliations.length?"active":"",e.queryAffiliation,l,t,e.queryable_affiliations.map(t=>(e=>Za(My(),e.item||"",e.item===e.affiliation,Ly(e.item),e.item))(Object.assign({item:t},e))),a,Array.isArray(e.users_with_affiliation)&&e.users_with_affiliation.length>5?Za(Sy(),e.affiliations_filter,e.filterAffiliationResults,o):"",Ly(e.affiliation)?Za(wy(),Ly(e.affiliation)):"",e.loading_users_with_affiliation?Za(yy(),fp()):"",Array.isArray(e.users_with_affiliation)&&0===e.users_with_affiliation.length?Za(by(),r):"",e.users_with_affiliation instanceof Error?Za(_y(),e.users_with_affiliation.message):(e.users_with_affiliation||[]).map(t=>(t.nick||t.jid).match(new RegExp(e.affiliations_filter,"i"))?Fy(Object.assign({item:t},e)):""),!u&&e.queryable_roles.length?"active":"",e.queryRole,c,s,e.queryable_roles.map(t=>(e=>Za(Ry(),e.item||"",e.item===e.role,Py(e.item),e.item))(Object.assign({item:t},e))),a,Array.isArray(e.users_with_role)&&e.users_with_role.length>5?Za(vy(),e.roles_filter,e.filterRoleResults,o):"",Py(e.role)?Za(my(),Py(e.role)):"",e.loading_users_with_role?Za(gy(),fp()):"",e.users_with_role&&0===e.users_with_role.length?Za(py(),i):"",(e.users_with_role||[]).map(t=>t.nick.match(e.roles_filter)?zy(Object.assign({item:t},e)):""))};const{Strophe:qy}=rl.env,Hy=rl.env.utils;let Uy;var $y=df.extend({id:"converse-modtools-modal",persistent:!0,initialize(e){Uy=e._converse,this.chatroomview=e.chatroomview,df.prototype.initialize.apply(this,arguments),this.affiliations_filter="",this.roles_filter="",this.listenTo(this.model,"change:role",()=>{this.users_with_role=this.chatroomview.model.getOccupantsWithRole(this.model.get("role")),this.render()}),this.listenTo(this.model,"change:affiliation",async()=>{this.loading_users_with_affiliation=!0,this.users_with_affiliation=null,this.render();const e=this.chatroomview.model,t=this.model.get("affiliation");this.shouldFetchAffiliationsList()?this.users_with_affiliation=await e.getAffiliationList(t):this.users_with_affiliation=e.getOccupantsWithAffiliation(t),this.loading_users_with_affiliation=!1,this.render()})},toHTML(){const e=this.chatroomview.model.occupants.findWhere({jid:Uy.bare_jid});return By(Object.assign(this.model.toJSON(),{affiliations_filter:this.affiliations_filter,assignAffiliation:e=>this.assignAffiliation(e),assignRole:e=>this.assignRole(e),assignable_affiliations:this.getAssignableAffiliations(e),assignable_roles:this.getAssignableRoles(e),filterAffiliationResults:e=>this.filterAffiliationResults(e),filterRoleResults:e=>this.filterRoleResults(e),loading_users_with_affiliation:this.loading_users_with_affiliation,queryAffiliation:e=>this.queryAffiliation(e),queryRole:e=>this.queryRole(e),queryable_affiliations:fu.filter(e=>!Uy.modtools_disable_query.includes(e)),queryable_roles:hu.filter(e=>!Uy.modtools_disable_query.includes(e)),roles_filter:this.roles_filter,switchTab:e=>this.switchTab(e),toggleForm:e=>this.toggleForm(e),users_with_affiliation:this.users_with_affiliation,users_with_role:this.users_with_role}))},getAssignableAffiliations(e){let t=Vc.settings.get("modtools_disable_assign");return Array.isArray(t)||(t=t?fu:[]),"owner"===e.get("affiliation")?fu.filter(e=>!t.includes(e)):"admin"===e.get("affiliation")?fu.filter(e=>!["owner","admin",...t].includes(e)):[]},getAssignableRoles(e){let t=Vc.settings.get("modtools_disable_assign");return Array.isArray(t)||(t=t?hu:[]),"moderator"===e.get("role")?hu.filter(e=>!t.includes(e)):[]},shouldFetchAffiliationsList(){const e=this.model.get("affiliation");return"none"!==e&&!this.chatroomview.model.occupants.getAutoFetchedAffiliationLists().includes(e)},toggleForm(e){e.stopPropagation(),e.preventDefault();const t=e.target.getAttribute("data-form"),n=Hy.ancestor(e.target,".list-group-item").querySelector(".".concat(t));Hy.hasClass("hidden",n)?Hy.removeClass("hidden",n):Hy.addClass("hidden",n)},filterRoleResults(e){this.roles_filter=e.target.value,this.render()},filterAffiliationResults(e){this.affiliations_filter=e.target.value,this.render()},queryRole(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target).get("role");this.model.set({role:null},{silent:!0}),this.model.set({role:t})},queryAffiliation(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target).get("affiliation");this.model.set({affiliation:null},{silent:!0}),this.model.set({affiliation:t})},async assignAffiliation(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target),n=t.get("affiliation"),r={jid:t.get("jid"),reason:t.get("reason")},i=this.model.get("affiliation");try{await this.chatroomview.model.setAffiliation(n,[r])}catch(e){return null===e?this.alert(zd("Timeout error while trying to set the affiliation"),"danger"):mr()('not-allowed[xmlns="'.concat(qy.NS.STANZAS,'"]'),e).length?this.alert(zd("Sorry, you're not allowed to make that change"),"danger"):this.alert(zd("Sorry, something went wrong while trying to set the affiliation"),"danger"),void zn.error(e)}this.alert(zd("Affiliation changed"),"primary"),await this.chatroomview.model.occupants.fetchMembers(),this.model.set({affiliation:null},{silent:!0}),this.model.set({affiliation:i})},assignRole(e){e.stopPropagation(),e.preventDefault();const t=new FormData(e.target),n=this.chatroomview.model.getOccupant(t.get("jid")||t.get("nick")),r=t.get("role"),i=t.get("reason"),o=this.model.get("role");this.chatroomview.model.setRole(n,r,i,()=>{this.alert(zd("Role changed"),"primary"),this.model.set({role:null},{silent:!0}),this.model.set({role:o})},e=>{mr()('not-allowed[xmlns="'.concat(qy.NS.STANZAS,'"]'),e).length?this.alert(zd("You're not allowed to make that change"),"danger"):(this.alert(zd("Sorry, something went wrong while trying to set the role"),"danger"),Hy.isErrorObject(e)&&zn.error(e))})}});function Wy(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="user-details-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n ','\n </div>\n <div class="modal-footer">\n ',"\n </div>\n </div>\n </div>\n "]);return Wy=function(){return e},e}const Gy=df.extend({initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),Vc.trigger("occupantModalInitialized",this.model)},toHTML(){return e=Object.assign(this.model.toJSON(),{avatar_data:this.getAvatarData(),display_name:this.model.getDisplayName()}),Za(Wy(),e.display_name,mf,op(e.avatar_data),gf);var e},getAvatarData(){const e=Uc.vcards.findWhere({jid:this.model.get("jid")});return{classes:"chat-msg__avatar",height:120,width:120,image:"data:"+((null==e?void 0:e.get("image_type"))||Uc.DEFAULT_IMAGE_TYPE)+";base64,"+((null==e?void 0:e.get("image"))||Uc.DEFAULT_IMAGE)}}});Uc.OccupantModal=Gy;var Vy=Gy;function Jy(){const e=lw(['<li class="feature" ><span class="fa fa-database"></span>'," - <em>","</em></li>"]);return Jy=function(){return e},e}function Xy(){const e=lw(['<li class="feature" ><span class="fa fa-info-circle"></span>'," - <em>","</em></li>"]);return Xy=function(){return e},e}function Qy(){const e=lw(['<li class="feature" ><span class="fa fa-gavel"></span>'," - <em>","</em></li>"]);return Qy=function(){return e},e}function Yy(){const e=lw(['<li class="feature" ><span class="fa fa-user-secret"></span>'," - <em>","</em></li>"]);return Yy=function(){return e},e}function Ky(){const e=lw(['<li class="feature" ><span class="fa fa-id-card"></span>'," - <em>","</em></li>"]);return Ky=function(){return e},e}function Zy(){const e=lw(['<li class="feature" ><span class="fa fa-snowflake-o"></span>'," - <em>","</em></li>"]);return Zy=function(){return e},e}function ew(){const e=lw(['<li class="feature" ><span class="fa fa-save"></span>'," - <em>","</em></li>"]);return ew=function(){return e},e}function tw(){const e=lw(['<li class="feature" ><span class="fa fa-globe"></span>'," - <em>","</em></li>"]);return tw=function(){return e},e}function nw(){const e=lw(['<li class="feature" ><span class="fa fa-address-book"></span>'," - <em>","</em></li>"]);return nw=function(){return e},e}function rw(){const e=lw(['<li class="feature" ><span class="fa fa-eye"></span>'," - <em>","</em></li>"]);return rw=function(){return e},e}function iw(){const e=lw(['<li class="feature" ><span class="fa fa-eye-slash"></span>'," - <em>","</em></li>"]);return iw=function(){return e},e}function ow(){const e=lw(['<li class="feature" ><span class="fa fa-unlock"></span>'," - <em>","</em></li>"]);return ow=function(){return e},e}function sw(){const e=lw(['<li class="feature" ><span class="fa fa-lock"></span>'," - <em>","</em></li>"]);return sw=function(){return e},e}function aw(){const e=lw(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="muc-details-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="room-info">\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ","</p>\n ",'\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>','</strong>:\n <div class="chatroom-features">\n <ul class="features-list">\n ',"\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ","\n ",'\n </ul>\n </div>\n </p>\n </div>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n "]);return aw=function(){return e},e}function cw(){const e=lw(['\n <p class="room-info"><strong>',"</strong>: ",'</p>\n <p class="room-info"><strong>',"</strong>: ","</p>\n "]);return cw=function(){return e},e}function lw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var uw=e=>{const t=zd("Groupchat address (JID)"),n=zd("Message archiving"),r=zd("Messages are archived on the server"),i=zd("Description"),o=zd("Features"),s=zd("Hidden"),a=zd("This groupchat is not publicly searchable"),c=zd("This groupchat is restricted to members only"),l=zd("Members only"),u=zd("Moderated"),d=zd("Participants entering this groupchat need to request permission to write"),h=zd("Name"),f=zd("This groupchat does not require a password upon entry"),p=zd("No password required"),g=zd("Not anonymous"),m=zd("All other groupchat participants can see your XMPP address"),v=zd("Not moderated"),_=zd("Participants entering this groupchat can write right away"),b=zd("Online users"),y=zd("Open"),w=zd("Anyone can join this groupchat"),S=zd("This groupchat requires a password before entry"),x=zd("Password protected"),E=zd("Persistent"),A=zd("This groupchat persists even if it's unoccupied"),C=zd("Public"),j=zd("Semi-anonymous"),T=zd("Only moderators can see your XMPP address"),O=zd("Temporary"),k=zd("This groupchat will disappear once the last person leaves");return Za(aw(),e.display_name,mf,h,e.name,t,e.jid,i,e.config.description,e.subject?(e=>{const t=zd("Topic"),n=zd("Topic author");return Za(cw(),t,Kp(Qp.a.filterXSS(e.subject.text,{whiteList:{}})),n,e.subject&&e.subject.author)})(e):"",b,e.num_occupants,o,e.features.passwordprotected?Za(sw(),x,S):"",e.features.unsecured?Za(ow(),p,f):"",e.features.hidden?Za(iw(),s,a):"",e.features.public_room?Za(rw(),C,e.__("This groupchat is publicly searchable")):"",e.features.membersonly?Za(nw(),l,c):"",e.features.open?Za(tw(),y,w):"",e.features.persistent?Za(ew(),E,A):"",e.features.temporary?Za(Zy(),O,k):"",e.features.nonanonymous?Za(Ky(),g,m):"",e.features.semianonymous?Za(Yy(),j,T):"",e.features.moderated?Za(Qy(),u,d):"",e.features.unmoderated?Za(Xy(),v,_):"",e.features.mam_enabled?Za(Jy(),n,r):"",gf)},dw=df.extend({id:"muc-details-modal",initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render),this.listenTo(this.model.features,"change",this.render),this.listenTo(this.model.occupants,"add",this.render),this.listenTo(this.model.occupants,"change",this.render)},toHTML(){return uw(Object.assign(this.model.toJSON(),{config:this.model.config.toJSON(),display_name:zd("Groupchat info for %1$s",this.model.getDisplayName()),features:this.model.features.toJSON(),num_occupants:this.model.occupants.length}))}});function hw(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="flyout box-flyout">\n <div class="chat-head chat-head-chatroom row no-gutters"></div>\n <div class="chat-body chatroom-body row no-gutters">\n <div class="chat-area col">\n <div class="chat-content ','" aria-live="polite">\n <div class="chat-content__messages" @scroll=','></div>\n <div class="chat-content__help"></div>\n </div>\n <div class="bottom-panel"></div>\n </div>\n <div class="disconnect-container hidden"></div>\n <converse-muc-sidebar class="occupants col-md-3 col-4 ','"\n .occupants=',"\n .chatroom=","></converse-muc-sidebar>\n </div>\n </div>\n"]);return hw=function(){return e},e}function fw(){const e=_w(['<p class="chat-head__desc" title="','">',"</p>"]);return fw=function(){return e},e}function pw(){const e=_w(["<converse-dropdown .items=","></converse-dropdown>"]);return pw=function(){return e},e}function gw(){const e=_w(['<i class="fa fa-bookmark chatbox-title__text--bookmarked" title="','"></i>']);return gw=function(){return e},e}function mw(){const e=_w(['<div class="chatbox-navback"><i class="fa fa-arrow-left"></i></div>']);return mw=function(){return e},e}function vw(){const e=_w(['\n <div class="chatbox-title ','">\n ','\n <div class="chatbox-title__text" title="','">',"\n ",'\n </div>\n <div class="chatbox-title__buttons row no-gutters">\n ',"\n ","\n </div>\n </div>\n ","\n "]);return vw=function(){return e},e}function _w(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const bw=rl.env.utils;var yw=e=>{const t=zd("Hide the groupchat topic"),n=zd("This groupchat is bookmarked"),r=e.subject?bw.addHyperlinks(e.subject.text):"",i=r&&!e.subject_hidden;return Za(vw(),i?"":"chatbox-title--no-desc",e._converse.api.settings.get("singleton")?"":Za(mw()),"hidden"!==e._converse.locked_muc_domain?e.jid:"",e.title,e.bookmarked?Za(gw(),n):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>Qh(e,"")))(e):"",e.dropdown_btns.length?Za(pw(),e.dropdown_btns):"",i?Za(fw(),t,r):"")};function ww(){const e=Ew(['<div class="muc-bottom-panel"></div>']);return ww=function(){return e},e}function Sw(){const e=Ew(['<div class="muc-bottom-panel">',"</div>"]);return Sw=function(){return e},e}function xw(){const e=Ew(['\n <div class="emoji-picker__container dropup"></div>\n <div class="message-form-container">']);return xw=function(){return e},e}function Ew(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Aw=e=>{const t=zd("You're not allowed to send messages in this room");return e.entered?e.can_edit?Za(xw()):Za(Sw(),t):Za(ww())};function Cw(){const e=Ow(['<p class="destroyed-reason">"','"</p>']);return Cw=function(){return e},e}function jw(){const e=Ow(['\n <div class="alert alert-danger">\n <h3 class="alert-heading disconnect-msg">',"</h3>\n ","\n ","\n </div>"]);return jw=function(){return e},e}function Tw(){const e=Ow(['\n <p class="moved-label">','</p>\n <p class="moved-link"><a class="switch-chat" href="#">',"</a></p>"]);return Tw=function(){return e},e}function Ow(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var kw=(e,t)=>{const n=zd("This groupchat no longer exists");return Za(jw(),n,t?Za(Cw(),t):"",e?(e=>{const t=zd("The conversation has moved. Click below to enter.");return Za(Tw(),t,e)})(e):"")};function Nw(){const e=Mw(['<p class="disconnect-msg">',"</p>"]);return Nw=function(){return e},e}function Iw(){const e=Mw(['\n <div class="alert alert-danger">\n <h3 class="alert-heading disconnect-msg">',"</h3>\n ","\n </div>"]);return Iw=function(){return e},e}function Mw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Rw(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="chatroom-form-container muc-nickname-form">\n <form class="converse-form chatroom-form converse-centered-form">\n <fieldset class="form-group">\n <label>','</label>\n <p class="validation-message">','</p>\n <input type="text"\n required="required"\n name="nick"\n value="','"\n class="form-control ','"\n placeholder="','"/>\n </fieldset>\n <fieldset class="form-group">\n <input type="submit" class="btn btn-primary" name="join" value="','"/>\n </fieldset>\n </form>\n </div>']);return Rw=function(){return e},e}const{Strophe:Dw,sizzle:Pw,$pres:Lw}=rl.env,zw=rl.env.utils,Fw=["owner"],Bw=["admin","ban","deop","destroy","member","op","revoke"],qw=["kick","mute","voice","modtools"],Hw=["nick"],Uw={deop:"participant",kick:"none",mute:"visitor",op:"moderator",voice:"participant"},$w={admin:"admin",ban:"outcast",member:"member",owner:"owner",revoke:"none"};var Ww={length:300,tagName:"div",className:"chatbox chatroom hidden",is_chatroom:!0,events:{"click .chatbox-navback":"showControlBox","click .hide-occupants":"hideOccupants","click .new-msgs-indicator":"viewUnreadMessages","click .occupant-nick":function(e){this.insertIntoTextArea(e.target.textContent)},"click .send-button":"onFormSubmitted","dragover .chat-textarea":"onDragOver","drop .chat-textarea":"onDrop","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","mousedown .dragresize-occupants-left":"onStartResizeOccupants","paste .chat-textarea":"onPaste","submit .muc-nickname-form":"submitNickname"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change",Rc(()=>this.renderHeading(),250)),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:hidden_occupants",this.onSidebarToggle),this.listenTo(this.model,"configurationNeeded",this.getAndRenderConfigurationForm),this.listenTo(this.model,"destroy",this.hide),this.listenTo(this.model,"show",this.show),this.listenTo(this.model.features,"change:moderated",this.renderBottomPanel),this.listenTo(this.model.features,"change:open",this.renderHeading),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.session,"change:connection_status",this.onConnectionStatusChanged),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),await this.render(),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"change",this.renderChatHistory),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.model.occupants.forEach(e=>this.onOccupantAdded(e)),this.listenTo(this.model.occupants,"add",this.onOccupantAdded),this.listenTo(this.model.occupants,"change",this.renderChatHistory),this.listenTo(this.model.occupants,"change:affiliation",this.onOccupantAffiliationChanged),this.listenTo(this.model.occupants,"change:role",this.onOccupantRoleChanged),this.listenTo(this.model.occupants,"change:show",this.showJoinOrLeaveNotification),this.listenTo(this.model.occupants,"remove",this.onOccupantRemoved),this.renderChatContent(),this.insertIntoDOM();const e=await Uc.api.user.settings.getModel();this.listenTo(e,"change:mucs_with_hidden_subject",this.renderHeading),this.onConnectionStatusChanged(),this.model.maybeShow(),this.scrollDown(),Vc.trigger("chatRoomViewInitialized",this)},async render(){const e=!this.shouldShowSidebar();var t;this.el.setAttribute("id",this.model.get("box_id")),Ya((t={sidebar_hidden:e,model:this.model,occupants:this.model.occupants,show_sidebar:!this.model.get("hidden_occupants")&&this.model.session.get("connection_status")===rl.ROOMSTATUS.ENTERED,markScrolled:e=>this.markScrolled(e),muc_show_logs_before_join:Vc.settings.get("muc_show_logs_before_join"),show_send_button:Uc.show_send_button},Za(hw(),t.show_send_button?"chat-content-sendbutton":"",t.markScrolled,t.sidebar_hidden?"hidden":"",t.occupants,t.model)),this.el),this.notifications=this.el.querySelector(".chat-content__notifications"),this.content=this.el.querySelector(".chat-content"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderBottomPanel(),Vc.settings.get("muc_show_logs_before_join")||this.model.session.get("connection_status")===rl.ROOMSTATUS.ENTERED||this.showSpinner(),await this.renderHeading(),!this.model.get("hidden")&&this.show()},getNotifications(){const e=this.model.notifications.toJSON(),t=Vc.settings.get("muc_show_info_messages").filter(e=>rl.MUC_ROLE_CHANGES_LIST.includes(e)),n=Vc.settings.get("muc_show_info_messages").filter(e=>rl.MUC_TRAFFIC_STATES_LIST.includes(e));return[...rl.CHAT_STATES,...n,...t].reduce((t,n)=>{const r=e[n];if(!(null==r?void 0:r.length))return t;const i=r.map(e=>{var t;return(null===(t=this.model.getOccupant(e))||void 0===t?void 0:t.getDisplayName())||e});if(1===i.length){if("composing"===n)return"".concat(t).concat(zd("%1$s is typing",i[0]),"\n");if("paused"===n)return"".concat(t).concat(zd("%1$s has stopped typing",i[0]),"\n");if(n===Uc.GONE)return"".concat(t).concat(zd("%1$s has gone away",i[0]),"\n");if("entered"===n)return"".concat(t).concat(zd("%1$s has entered the groupchat",i[0]),"\n");if("exited"===n)return"".concat(t).concat(zd("%1$s has left the groupchat",i[0]),"\n");if("op"===n)return"".concat(t).concat(zd("%1$s is now a moderator",i[0]),"\n");if("deop"===n)return"".concat(t).concat(zd("%1$s is no longer a moderator",i[0]),"\n");if("voice"===n)return"".concat(t).concat(zd("%1$s has been given a voice",i[0]),"\n");if("mute"===n)return"".concat(t).concat(zd("%1$s has been muted",i[0]),"\n")}else if(i.length>1){let e;if(i.length>3)e="".concat(Array.from(i).slice(0,2).join(", ")," and others");else{const t=i.pop();e=zd("%1$s and %2$s",i.join(", "),t)}if("composing"===n)return"".concat(t).concat(zd("%1$s are typing",e),"\n");if("paused"===n)return"".concat(t).concat(zd("%1$s have stopped typing",e),"\n");if(n===Uc.GONE)return"".concat(t).concat(zd("%1$s have gone away",e),"\n");if("entered"===n)return"".concat(t).concat(zd("%1$s have entered the groupchat",e),"\n");if("exited"===n)return"".concat(t).concat(zd("%1$s have left the groupchat",e),"\n");if("op"===n)return"".concat(t).concat(zd("%1$s are now moderators",i[0]),"\n");if("deop"===n)return"".concat(t).concat(zd("%1$s are no longer moderators",i[0]),"\n");if("voice"===n)return"".concat(t).concat(zd("%1$s have been given voices",i[0]),"\n");if("mute"===n)return"".concat(t).concat(zd("%1$s have been muted",i[0]),"\n")}return t},"")},getHelpMessages(){const e=Vc.settings.get("muc_disable_slash_commands"),t=Array.isArray(e)?e:[];return["<strong>/admin</strong>: ".concat(zd("Change user's affiliation to admin")),"<strong>/ban</strong>: ".concat(zd("Ban user by changing their affiliation to outcast")),"<strong>/clear</strong>: ".concat(zd("Clear the chat area")),"<strong>/close</strong>: ".concat(zd("Close this groupchat")),"<strong>/deop</strong>: ".concat(zd("Change user role to participant")),"<strong>/destroy</strong>: ".concat(zd("Remove this groupchat")),"<strong>/help</strong>: ".concat(zd("Show this menu")),"<strong>/kick</strong>: ".concat(zd("Kick user from groupchat")),"<strong>/me</strong>: ".concat(zd("Write in 3rd person")),"<strong>/member</strong>: ".concat(zd("Grant membership to a user")),"<strong>/modtools</strong>: ".concat(zd("Opens up the moderator tools GUI")),"<strong>/mute</strong>: ".concat(zd("Remove user's ability to post messages")),"<strong>/nick</strong>: ".concat(zd("Change your nickname")),"<strong>/op</strong>: ".concat(zd("Grant moderator role to user")),"<strong>/owner</strong>: ".concat(zd("Grant ownership of this groupchat")),"<strong>/register</strong>: ".concat(zd("Register your nickname")),"<strong>/revoke</strong>: ".concat(zd("Revoke the user's current affiliation")),"<strong>/subject</strong>: ".concat(zd("Set groupchat subject")),"<strong>/topic</strong>: ".concat(zd("Set groupchat subject (alias for /subject)")),"<strong>/voice</strong>: ".concat(zd("Allow muted user to post messages"))].filter(e=>t.every(t=>!e.startsWith(t+"<",9))).filter(e=>this.getAllowedCommands().some(t=>e.startsWith(t+"<",9)))},async renderHeading(){const e=await this.generateHeadingTemplate();Ya(e,this.el.querySelector(".chat-head-chatroom"))},renderBottomPanel(){const e=this.el.querySelector(".bottom-panel"),t=this.model.session.get("connection_status")===rl.ROOMSTATUS.ENTERED,n=t&&!(this.model.features.get("moderated")&&"visitor"===this.model.getOwnRole());Ya(Aw({can_edit:n,entered:t}),e),t&&n&&(this.renderMessageForm(),this.initMentionAutoComplete())},onStartResizeOccupants(e){this.resizing=!0,this.el.addEventListener("mousemove",this.onMouseMove),this.el.addEventListener("mouseup",this.onMouseUp);const t=this.el.querySelector("converse-muc-sidebar"),n=window.getComputedStyle(t);this.width=parseInt(n.width.replace(/px$/,""),10),this.prev_pageX=e.pageX},onMouseMove(e){if(this.resizing){e.preventDefault();const t=this.prev_pageX-e.pageX;this.resizeSidebarView(t,e.pageX),this.prev_pageX=e.pageX}},onMouseUp(e){if(this.resizing){e.preventDefault(),this.resizing=!1,this.el.removeEventListener("mousemove",this.onMouseMove),this.el.removeEventListener("mouseup",this.onMouseUp);const t=this.el.querySelector("converse-muc-sidebar").getBoundingClientRect(),n={occupants_width:this.calculateSidebarWidth(t,0)};Uc.connection.connected?this.model.save(n):this.model.set(n)}},resizeSidebarView(e,t){const n=this.el.querySelector("converse-muc-sidebar"),r=n.getBoundingClientRect();if(this.is_minimum)this.is_minimum=r.left<t;else if(this.is_maximum)this.is_maximum=r.left>t;else{const t=this.calculateSidebarWidth(r,e);n.style.flex="0 0 "+t+"px"}},calculateSidebarWidth(e,t){let n=e.width+t;const r=this.el.clientWidth;return n<.2*r?(n=.2*r,this.is_minimum=!0):n>.75*r?(n=.75*r,this.is_maximum=!0):r-n<250?(n=r-250,this.is_maximum=!0):(this.is_maximum=!1,this.is_minimum=!1),n},getAutoCompleteList(){return this.model.getAllKnownNicknames().map(e=>({label:e,value:"@".concat(e)}))},getAutoCompleteListItem(e,t){t=t.trim();const n=document.createElement("li");if(n.setAttribute("aria-selected","false"),Vc.settings.get("muc_mention_autocomplete_show_avatar")){const t=document.createElement("img");let r="data:"+Uc.DEFAULT_IMAGE_TYPE+";base64,"+Uc.DEFAULT_IMAGE;if(Uc.vcards){const t=Uc.vcards.findWhere({nickname:e});t&&(r="data:"+t.get("image_type")+";base64,"+t.get("image"))}t.setAttribute("src",r),t.setAttribute("width","22"),t.setAttribute("class","avatar avatar-autocomplete"),n.appendChild(t)}const r=new RegExp("("+t+")","ig");return(t?e.split(r):[e]).forEach(e=>{if(t&&e.match(r)){const t=document.createElement("mark");t.textContent=e,n.appendChild(t)}else n.appendChild(document.createTextNode(e))}),n},initMentionAutoComplete(){this.mention_auto_complete=new Uc.AutoComplete(this.el,{auto_first:!0,auto_evaluate:!1,min_chars:Vc.settings.get("muc_mention_autocomplete_min_chars"),match_current_word:!0,list:()=>this.getAutoCompleteList(),filter:"contains"==Vc.settings.get("muc_mention_autocomplete_filter")?Uc.FILTER_CONTAINS:Uc.FILTER_STARTSWITH,ac_triggers:["Tab","@"],include_triggers:[],item:this.getAutoCompleteListItem}),this.mention_auto_complete.on("suggestion-box-selectcomplete",()=>this.auto_completing=!1)},submitNickname(e){e.preventDefault();const t=e.target.nick.value.trim();t&&this.model.join(t)},onKeyDown(e){if(!this.mention_auto_complete.onKeyDown(e))return Uc.ChatBoxView.prototype.onKeyDown.call(this,e)},onKeyUp(e){return this.mention_auto_complete.evaluate(e),Uc.ChatBoxView.prototype.onKeyUp.call(this,e)},async onMessageRetractButtonClicked(e){const t=zd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.");if(e.mayBeRetracted()){const n=[zd("Are you sure you want to retract this message?")];Vc.settings.get("show_retraction_warning")&&(n[1]=t),await Vc.confirm(zd("Confirm"),n)&&this.model.retractOwnMessage(e)}else if(await e.mayBeModerated())if("me"===e.get("sender")){let n=[zd("Are you sure you want to retract this message?")];Vc.settings.get("show_retraction_warning")&&(n=[n[0],t,n[1]]),await Vc.confirm(zd("Confirm"),n)&&this.retractOtherMessage(e)}else{let n=[zd("You are about to retract this message."),zd("You may optionally include a message, explaining the reason for the retraction.")];Vc.settings.get("show_retraction_warning")&&(n=[n[0],t,n[1]]);const r=await Vc.prompt(zd("Message Retraction"),n,zd("Optional reason"));!1!==r&&this.retractOtherMessage(e,r)}else{const e=zd("Sorry, you're not allowed to retract this message");Vc.alert("error",zd("Error"),e)}},async retractOtherMessage(e,t){const n=await this.model.retractOtherMessage(e,t);if(null===n){const e=zd("A timeout occurred while trying to retract the message");Vc.alert("error",zd("Error"),e),zn(e,Dw.LogLevel.WARN)}else if(zw.isErrorStanza(n)){const e=zd("Sorry, you're not allowed to retract this message.");Vc.alert("error",zd("Error"),e),zn(e,Dw.LogLevel.WARN),zn(n,Dw.LogLevel.WARN)}},showModeratorToolsModal(e){if(!this.verifyRoles(["moderator"]))return;let t=Vc.modal.get($y.id);if(t)t.model.set("affiliation",e);else{const n=new qo({affiliation:e});t=Vc.modal.create($y,{model:n,_converse:Uc,chatroomview:this})}t.show()},showRoomDetailsModal(e){e.preventDefault(),Vc.modal.show(dw,{model:this.model},e)},showOccupantDetailsModal(e,t){e.preventDefault(),Vc.modal.show(Vy,{model:t.occupant},e)},showChatStateNotification(e){if("me"!==e.get("sender"))return Uc.ChatBoxView.prototype.showChatStateNotification.apply(this,arguments)},shouldShowSidebar(){return!this.model.get("hidden_occupants")&&this.model.session.get("connection_status")===rl.ROOMSTATUS.ENTERED},onSidebarToggle(){var e;this.renderToolbar(),null===(e=this.el.querySelector(".occupants"))||void 0===e||e.setVisibility()},onOccupantAffiliationChanged(e){e.get("jid")===Uc.bare_jid&&this.renderHeading()},onOccupantRoleChanged(e){e.get("jid")===Uc.bare_jid&&this.renderBottomPanel()},getHeadingButtons(e){const t=[];t.push({i18n_text:zd("Details"),i18n_title:zd("Show more information about this groupchat"),handler:e=>this.showRoomDetailsModal(e),a_class:"show-muc-details-modal",icon_class:"fa-info-circle",name:"details"}),"owner"===this.model.getOwnAffiliation()&&t.push({i18n_text:zd("Configure"),i18n_title:zd("Configure this groupchat"),handler:e=>this.getAndRenderConfigurationForm(e),a_class:"configure-chatroom-button",icon_class:"fa-wrench",name:"configure"}),this.model.invitesAllowed()&&t.push({i18n_text:zd("Invite"),i18n_title:zd("Invite someone to join this groupchat"),handler:e=>this.showInviteModal(e),a_class:"open-invite-modal",icon_class:"fa-user-plus",name:"invite"});const n=this.model.get("subject");if(n&&n.text&&t.push({i18n_text:zd(e?"Show topic":"Hide topic"),i18n_title:zd(e?"Show the topic message in the heading":"Hide the topic in the heading"),handler:e=>this.toggleTopic(e),a_class:"hide-topic",icon_class:"fa-minus-square",name:"toggle-topic"}),this.model.session.get("connection_status")===rl.ROOMSTATUS.ENTERED){const e=this.getAllowedCommands();e.includes("modtools")&&t.push({i18n_text:zd("Moderate"),i18n_title:zd("Moderate this groupchat"),handler:()=>this.showModeratorToolsModal(),a_class:"moderate-chatroom-button",icon_class:"fa-user-cog",name:"moderate"}),e.includes("destroy")&&t.push({i18n_text:zd("Destroy"),i18n_title:zd("Remove this groupchat"),handler:e=>this.destroy(e),a_class:"destroy-chatroom-button",icon_class:"fa-trash",name:"destroy"})}return Vc.settings.get("singleton")||t.push({i18n_text:zd("Leave"),i18n_title:zd("Leave and close this groupchat"),handler:async e=>{e.stopPropagation();const t=[zd("Are you sure you want to leave this groupchat?")];await Vc.confirm(zd("Confirm"),t)&&this.close(e)},a_class:"close-chatbox-button",standalone:"overlayed"===Vc.settings.get("view_mode"),icon_class:"fa-sign-out-alt",name:"signout"}),Uc.api.hook("getHeadingButtons",this,t)},async generateHeadingTemplate(){const e=await this.model.isSubjectHidden(),t=await this.getHeadingButtons(e),n=t.filter(e=>e.standalone),r=t.filter(e=>!e.standalone);return yw(Object.assign(this.model.toJSON(),{_converse:Uc,subject_hidden:e,dropdown_btns:r.map(e=>this.getHeadingDropdownItem(e)),standalone_btns:n.map(e=>this.getHeadingStandaloneButton(e)),title:this.model.getDisplayName()}))},toggleTopic(){this.model.toggleSubjectHiddenState()},showInviteModal(e){e.preventDefault(),Vc.modal.show(fy,{model:new qo,chatroomview:this},e)},afterShown(){zw.isPersistableModel(this.model)&&this.model.clearUnreadMsgCounter(),this.scrollDown()},onConnectionStatusChanged(){const e=this.model.session.get("connection_status");e===rl.ROOMSTATUS.NICKNAME_REQUIRED?this.renderNicknameForm():e===rl.ROOMSTATUS.PASSWORD_REQUIRED?this.renderPasswordForm():e===rl.ROOMSTATUS.CONNECTING?this.showSpinner():e===rl.ROOMSTATUS.ENTERED?(this.renderBottomPanel(),this.hideSpinner(),this.maybeFocus()):e===rl.ROOMSTATUS.DISCONNECTED?this.showDisconnectMessage():e===rl.ROOMSTATUS.DESTROYED&&this.showDestroyedMessage()},getToolbarOptions(){return Object.assign(Uc.ChatBoxView.prototype.getToolbarOptions.apply(this,arguments),{is_groupchat:!0,label_hide_occupants:zd("Hide the list of participants"),show_occupants_toggle:Uc.visible_toolbar_buttons.toggle_occupants})},async close(){return this.hide(),Uc.router.history.getFragment()==="converse/room?jid="+this.model.get("jid")&&Uc.router.navigate(""),await this.model.leave(),Uc.ChatBoxView.prototype.close.apply(this,arguments)},hideOccupants(e){e&&(e.preventDefault(),e.stopPropagation()),this.model.save({hidden_occupants:!0}),this.scrollDown()},verifyRoles(e,t,n=!0){if(!Array.isArray(e))throw new TypeError("roles must be an Array");if(!e.length)return!0;if(t=t||this.model.occupants.findWhere({jid:Uc.bare_jid})){const n=t.get("role");if(e.includes(n))return!0}if(n){const e=zd("Forbidden: you do not have the necessary role in order to do that.");this.model.createMessage({message:e,type:"error"})}return!1},verifyAffiliations(e,t,n=!0){if(!Array.isArray(e))throw new TypeError("affiliations must be an Array");if(!e.length)return!0;if(t=t||this.model.occupants.findWhere({jid:Uc.bare_jid})){const n=t.get("affiliation");if(e.includes(n))return!0}if(n){const e=zd("Forbidden: you do not have the necessary affiliation in order to do that.");this.model.createMessage({message:e,type:"error"})}return!1},validateRoleOrAffiliationChangeArgs(e,t){if(!t){const t=zd('Error: the "%1$s" command takes two arguments, the user\'s nickname and optionally a reason.',e);return this.model.createMessage({message:t,type:"error"}),!1}return!0},getNickOrJIDFromCommandArgs(e){if(zw.isValidJID(e.trim()))return e.trim();e.startsWith("@")||(e="@"+e);const[t,n]=this.model.parseTextForReferences(e);if(!n.length){const e=zd("Error: couldn't find a groupchat participant based on your arguments");return void this.model.createMessage({message:e,type:"error"})}if(n.length>1){const e=zd("Error: found multiple groupchat participant based on your arguments");return void this.model.createMessage({message:e,type:"error"})}const r=n.pop().value,i=e.split(r,2)[1];if(!i||i.startsWith(" "))return r;{const e=zd("Error: couldn't find a groupchat participant based on your arguments");this.model.createMessage({message:e,type:"error"})}},setAffiliation(e,t,n){const r=$w[e];if(!r)throw Error("ChatRoomView#setAffiliation called with invalid command: ".concat(e));if(!this.verifyAffiliations(n))return!1;if(!this.validateRoleOrAffiliationChangeArgs(e,t))return!1;const i=this.getNickOrJIDFromCommandArgs(t);if(!i)return!1;let o;const s=t.split(i,2)[1].trim(),a=this.model.getOccupant(i);if(a)o=a.get("jid");else{if(!zw.isValidJID(i)){const e=zd("Couldn't find a participant with that nickname. They might have left the groupchat.");return void this.model.createMessage({message:e,type:"error"})}o=i}const c={jid:o,reason:s};a&&Vc.settings.get("auto_register_muc_nickname")&&(c.nick=a.get("nick")),this.model.setAffiliation(r,[c]).then(()=>this.model.occupants.fetchMembers()).catch(e=>this.onCommandError(e))},getReason:e=>e.includes(",")?e.slice(e.indexOf(",")+1).trim():null,setRole(e,t,n=[],r=[]){const i=Uw[e];if(!i)throw Error("ChatRoomView#setRole called with invalid command: ".concat(e));if(!this.verifyAffiliations(n)||!this.verifyRoles(r))return!1;if(!this.validateRoleOrAffiliationChangeArgs(e,t))return!1;const o=this.getNickOrJIDFromCommandArgs(t);if(!o)return!1;const s=t.split(o,2)[1].trim(),a=this.model.getOccupant(o);return this.model.setRole(a,i,s,void 0,this.onCommandError.bind(this)),!0},onCommandError(e){zn.fatal(e);const t=zd("Sorry, an error happened while running the command.")+" "+zd("Check your browser's developer console for details.");this.model.createMessage({message:t,type:"error"})},getAllowedCommands(){let e=["clear","help","me","nick","register"];(this.model.config.get("changesubject")||["owner","admin"].includes(this.model.getOwnAffiliation()))&&(e=[...e,"subject","topic"]);const t=this.model.occupants.findWhere({jid:Uc.bare_jid});return this.verifyAffiliations(["owner"],t,!1)?e=e.concat(Fw).concat(Bw):this.verifyAffiliations(["admin"],t,!1)&&(e=e.concat(Bw)),this.verifyRoles(["moderator"],t,!1)?e=e.concat(qw).concat(Hw):this.verifyRoles(["visitor","participant","moderator"],t,!1)||(e=e.concat(Hw)),e.sort(),Array.isArray(Vc.settings.get("muc_disable_slash_commands"))?e.filter(e=>!Vc.settings.get("muc_disable_slash_commands").includes(e)):e},async destroy(){const e=[zd("Are you sure you want to destroy this groupchat?")];let t=[{name:"challenge",label:zd("Please enter the XMPP address of this groupchat to confirm"),challenge:this.model.get("jid"),placeholder:zd("name@example.org"),required:!0},{name:"reason",label:zd("Optional reason for destroying this groupchat"),placeholder:zd("Reason")},{name:"newjid",label:zd("Optional XMPP address for a new groupchat that replaces this one"),placeholder:zd("replacement@example.org")}];try{var n,r;t=await Vc.confirm(zd("Confirm"),e,t);const i=null===(n=t.filter(e=>"reason"===e.name).pop())||void 0===n?void 0:n.value,o=null===(r=t.filter(e=>"newjid"===e.name).pop())||void 0===r?void 0:r.value;return this.model.sendDestroyIQ(i,o).then(()=>this.close())}catch(e){zn.error(e)}},parseMessageForCommands(e){if(Vc.settings.get("muc_disable_slash_commands")&&!Array.isArray(Vc.settings.get("muc_disable_slash_commands")))return Uc.ChatBoxView.prototype.parseMessageForCommands.apply(this,arguments);const t=((e=e.replace(/^\s*/,"")).match(/^\/([a-zA-Z]*) ?/)||[""]).pop().toLowerCase();if(!t)return!1;const n=e.slice(("/"+t).length+1).trim();if(!this.getAllowedCommands().includes(t))return!1;switch(t){case"admin":this.setAffiliation(t,n,["owner"]);break;case"ban":this.setAffiliation(t,n,["admin","owner"]);break;case"modtools":this.showModeratorToolsModal(n);break;case"deop":this.setRole(t,n,["admin","owner"]);break;case"destroy":if(!this.verifyAffiliations(["owner"]))break;this.destroy().catch(e=>this.onCommandError(e));break;case"help":this.model.set({show_help_messages:!0});break;case"kick":case"mute":this.setRole(t,n,[],["moderator"]);break;case"member":this.setAffiliation(t,n,["admin","owner"]);break;case"nick":if(!this.verifyRoles(["visitor","participant","moderator"]))break;if(0===n.length){const e=zd('Your nickname is "%1$s"',this.model.get("nick"));this.model.createMessage({message:e,type:"error"})}else{const e=Dw.getBareJidFromJid(this.model.get("jid"));Vc.send(Lw({from:Uc.connection.jid,to:"".concat(e,"/").concat(n),id:zw.getUniqueId()}).tree())}break;case"owner":this.setAffiliation(t,n,["owner"]);break;case"op":this.setRole(t,n,["admin","owner"]);break;case"register":n.length>1?this.model.createMessage({message:zd("Error: invalid number of arguments"),type:"error"}):this.model.registerNickname().then(e=>{e&&this.model.createMessage({message:e,type:"error"})});break;case"revoke":this.setAffiliation(t,n,["admin","owner"]);break;case"topic":case"subject":this.model.setSubject(n);break;case"voice":this.setRole(t,n,[],["moderator"]);break;default:return Uc.ChatBoxView.prototype.parseMessageForCommands.apply(this,arguments)}return!0},renderConfigurationForm(e){if(this.hideChatRoomContents(),this.model.save("config_stanza",e.outerHTML),!this.config_form){this.config_form=new Uc.MUCConfigForm({model:this.model,chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.config_form.el)}zw.showElement(this.config_form.el)},renderNicknameForm(){const e=(e=>{const t=zd("Nickname"),n=zd("Enter groupchat"),r=Vc.settings.get("muc_show_logs_before_join")?zd("Choose a nickname to enter"):zd("Please choose your nickname");return Za(Rw(),r,e.nickname_validation_message,e.nick||"",e.nickname_validation_message?"error":"",t,n)})(this.model.toJSON());if(Vc.settings.get("muc_show_logs_before_join")){const t=this.el.querySelector(".muc-bottom-panel");Ya(e,t),zw.addClass("muc-bottom-panel--nickname",t)}else{const t=this.el.querySelector(".muc-nickname-form"),n=zw.getElementFromTemplateResult(e);if(t)Pw(".spinner",this.el).forEach(zw.removeElement),t.outerHTML=n.outerHTML;else{this.hideChatRoomContents(),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",n)}}zw.safeSave(this.model.session,{connection_status:rl.ROOMSTATUS.NICKNAME_REQUIRED})},closeForm(){Pw(".chatroom-form-container",this.el).forEach(e=>zw.addClass("hidden",e)),this.renderAfterTransition()},getAndRenderConfigurationForm(){this.config_form&&zw.isVisible(this.config_form.el)?this.closeForm():(this.showSpinner(),this.model.fetchRoomConfiguration().then(e=>this.renderConfigurationForm(e)).catch(e=>zn.error(e)))},hideChatRoomContents(){const e=this.el.querySelector(".chatroom-body");null!==e&&[].forEach.call(e.children,e=>e.classList.add("hidden"))},renderPasswordForm(){this.hideChatRoomContents();const e=this.model.get("password_validation_message");if(this.model.save("password_validation_message",void 0),this.password_form)this.password_form.model.set("validation_message",e);else{this.password_form=new Uc.MUCPasswordForm({model:new qo({validation_message:e}),chatroomview:this}),this.el.querySelector(".chatroom-body").insertAdjacentElement("beforeend",this.password_form.el)}zw.showElement(this.password_form.el),this.model.session.save("connection_status",rl.ROOMSTATUS.PASSWORD_REQUIRED)},showDestroyedMessage(){zw.hideElement(this.el.querySelector(".chat-area")),zw.hideElement(this.el.querySelector(".occupants")),Pw(".spinner",this.el).forEach(zw.removeElement);const e=this.model.get("destroyed_reason"),t=this.model.get("moved_jid");this.model.save({destroyed_reason:void 0,moved_jid:void 0});const n=this.el.querySelector(".disconnect-container");Ya(kw(t,e),n);const r=n.querySelector("a.switch-chat");r&&r.addEventListener("click",async e=>{e.preventDefault(),(await Vc.rooms.get(t,null,!0)).maybeShow(!0),this.model.destroy()}),zw.showElement(n)},showDisconnectMessage(){const e=this.model.get("disconnection_message");if(!e)return;zw.hideElement(this.el.querySelector(".chat-area")),zw.hideElement(this.el.querySelector(".occupants")),Pw(".spinner",this.el).forEach(zw.removeElement);const t=[e],n=this.model.get("disconnection_actor");n&&t.push(zd("This action was done by %1$s.",n));const r=this.model.get("disconnection_reason");r&&t.push(zd('The reason given is: "%1$s".',r)),this.model.save({disconnection_message:void 0,disconnection_reason:void 0,disconnection_actor:void 0});const i=this.el.querySelector(".disconnect-container");Ya((e=>Za(Iw(),e[0],e.slice(1).map(e=>Za(Nw(),e))))(t),i),zw.showElement(i)},onOccupantAdded(e){e.get("jid")===Uc.bare_jid&&(this.renderHeading(),this.renderBottomPanel())},getPreviousJoinOrLeaveNotification(e,t){const n=(new Date).toISOString().split("T")[0];for(;null!==e;){var r;if(!e.classList.contains("chat-info"))return;const i=e.getAttribute("data-isodate");if(i&&i.split("T")[0]!==n)return;const o=(null===(r=e)||void 0===r?void 0:r.dataset)||{};if(o.join===t||o.leave===t||o.leavejoin===t||o.joinleave===t)return e;e=e.previousElementSibling}},renderAfterTransition(){const e=this.model.session.get("connection_status");if(e==rl.ROOMSTATUS.NICKNAME_REQUIRED)this.renderNicknameForm();else if(e==rl.ROOMSTATUS.PASSWORD_REQUIRED)this.renderPasswordForm();else if(e==rl.ROOMSTATUS.ENTERED){var t;this.hideChatRoomContents(),zw.showElement(this.el.querySelector(".chat-area")),null===(t=this.el.querySelector(".occupants"))||void 0===t||t.setVisibility(),this.scrollDown()}},showSpinner(){Pw(".spinner",this.el).forEach(zw.removeElement),this.hideChatRoomContents(),this.el.querySelector(".chatroom-body").insertAdjacentElement("afterbegin",zw.getElementFromTemplateResult(fp()))},hideSpinner(){const e=this.el.querySelector(".spinner");return null!==e&&(zw.removeElement(e),this.renderAfterTransition()),this}},Gw={roomviews:{get(e){if(Array.isArray(e)){return Vc.chatviews.get(e).filter(e=>e.model.get("type")===Uc.CHATROOMS_TYPE)}{const t=Vc.chatviews.get(e);return t.model.get("type")===Uc.CHATROOMS_TYPE?t:null}},close(e){let t;return void 0===e?t=Uc.chatboxviews:"string"==typeof e?t=[Uc.chatboxviews.get(e)].filter(e=>e):Array.isArray(e)&&(t=e.map(e=>Uc.chatboxviews.get(e))),Promise.all(t.map(e=>e.is_chatroom&&e.model&&e.close()))}}};function Vw(){const e=Yw(['<div class="form-group">',"</div>"]);return Vw=function(){return e},e}function Jw(){const e=Yw(['<label class="roomid-policy-error">',"</label>"]);return Jw=function(){return e},e}function Xw(){const e=Yw(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="add-chatroom-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form add-chatroom">\n <div class="form-group">\n <label for="chatroom">',":</label>\n ",'\n <input type="text" required="required" name="chatroom" class="form-control roomjid-input" placeholder="','"/>\n </div>\n ',"\n ",'\n <input type="submit" class="btn btn-primary" name="join" value="','" ?disabled=',">\n </form>\n </div>\n </div>\n </div>\n "]);return Xw=function(){return e},e}function Qw(){const e=Yw(['\n <div class="form-group" >\n <label for="nickname">',':</label>\n <input type="text" title="','" required="required" name="nickname" value="','" class="form-control"/>\n </div>\n ']);return Qw=function(){return e},e}function Yw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var Kw=e=>{const t=zd("Join"),n=zd("Enter a new Groupchat");return Za(Xw(),n,mf,e.label_room_address,e.muc_roomid_policy_error_msg?Za(Jw(),e.muc_roomid_policy_error_msg):"",e.chatroom_placeholder,e.muc_roomid_policy_hint?Za(Vw(),Kp(Qp.a.filterXSS(e.muc_roomid_policy_hint,{whiteList:{b:[],br:[],em:[]}}))):"",e._converse.locked_muc_nickname?"":(e=>{const t=zd("Nickname"),n=zd("This field is required");return Za(Qw(),t,n,e.nick||"")})(e),t||"",e.muc_roomid_policy_error_msg)},Zw=n(24);const eS=rl.env.utils;var tS=df.extend({persistent:!0,id:"add-chatroom-modal",events:{"submit form.add-chatroom":"openChatRoom","keyup .roomjid-input":"checkRoomidPolicy","change .roomjid-input":"checkRoomidPolicy"},initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:muc_domain",this.render),this.muc_roomid_policy_error_msg=null},toHTML(){let e="";if(!Vc.settings.get("locked_muc_domain")){const t=this.model.get("muc_domain")||Vc.settings.get("muc_domain");e=t?"name@".concat(t):zd("name@conference.example.org")}return Kw(Object.assign(this.model.toJSON(),{_converse:Uc,label_room_address:Vc.settings.get("muc_domain")?zd("Groupchat name"):zd("Groupchat address"),chatroom_placeholder:e,muc_roomid_policy_error_msg:this.muc_roomid_policy_error_msg,muc_roomid_policy_hint:Vc.settings.get("muc_roomid_policy_hint")}))},afterRender(){this.el.addEventListener("shown.bs.modal",()=>{this.el.querySelector('input[name="chatroom"]').focus()},!1)},parseRoomDataFromEvent(e){const t=new FormData(e),n=t.get("chatroom");let r;if(Vc.settings.get("locked_muc_nickname")){if(r=Uc.getDefaultMUCNickname(),!r)throw new Error("Using locked_muc_nickname but no nickname found!")}else r=t.get("nickname").trim();return{jid:n,nick:r}},openChatRoom(e){e.preventDefault();const t=this.parseRoomDataFromEvent(e.target);let n;""===t.nick&&(t.nick=void 0),Vc.settings.get("locked_muc_domain")||Vc.settings.get("muc_domain")&&!eS.isValidJID(t.jid)?n="".concat(Zw.b.escapeNode(t.jid),"@").concat(Vc.settings.get("muc_domain")):(n=t.jid,this.model.setDomain(n)),Vc.rooms.open(n,Object.assign(t,{jid:n}),!0),this.modal.hide(),e.target.reset()},checkRoomidPolicy(){if(Vc.settings.get("muc_roomid_policy")&&Vc.settings.get("muc_domain")){let e=this.el.querySelector(".roomjid-input").value;!rl.locked_muc_domain&&eS.isValidJID(e)||(e="".concat(Zw.b.escapeNode(e),"@").concat(Vc.settings.get("muc_domain")));const t=Zw.b.getNodeFromJid(e),n=Zw.b.getDomainFromJid(e);Vc.settings.get("muc_domain")!==n||Vc.settings.get("muc_roomid_policy").test(t)?this.muc_roomid_policy_error_msg=null:this.muc_roomid_policy_error_msg=zd("Groupchat id is invalid."),this.render()}}});function nS(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="d-flex controlbox-padded">\n <span class="w-100 controlbox-heading controlbox-heading--groupchats">','</span>\n <a class="controlbox-heading__btn show-list-muc-modal fa fa-list-ul" title="','" data-toggle="modal" data-target="#muc-list-modal"></a>\n <a class="controlbox-heading__btn show-add-muc-modal fa fa-plus" title="','" data-toggle="modal" data-target="#add-chatrooms-modal"></a>\n </div>\n <div class="list-container list-container--openrooms hidden"></div>\n <div class="list-container list-container--bookmarks hidden"></div>']);return nS=function(){return e},e}function rS(){const e=cS(['<li class="list-group-item active">',"</li>"]);return rS=function(){return e},e}function iS(){const e=cS(['<li class="list-group-item"> '," </li>"]);return iS=function(){return e},e}function oS(){const e=cS(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="muc-list-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body d-flex flex-column">\n <span class="modal-alert"></span>\n ','\n <ul class="available-chatrooms list-group">\n ',"\n ","\n ",'\n </ul>\n </div>\n <div class="modal-footer">',"</div>\n </div>\n </div>\n "]);return oS=function(){return e},e}function sS(){const e=cS(['\n <li class="room-item list-group-item">\n <div class="available-chatroom d-flex flex-row">\n <a class="open-room available-room w-100"\n @click=','\n data-room-jid="','"\n data-room-name="','"\n title="','"\n href="#">','</a>\n <a class="right room-info icon-room-info"\n @click=','\n data-room-jid="','"\n title="','"\n href="#"></a>\n </div>\n </li>\n ']);return sS=function(){return e},e}function aS(){const e=cS(['\n <form class="converse-form list-chatrooms"\n @submit=','>\n <div class="form-group">\n <label for="chatroom">',':</label>\n <input type="text"\n @change=','\n value="','"\n required="required"\n name="server"\n class="form-control"\n placeholder="','"/>\n </div>\n <input type="submit" class="btn btn-primary" name="list" value="','"/>\n </form>\n ']);return aS=function(){return e},e}function cS(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var lS=e=>{const t=zd("Query for Groupchats");return Za(oS(),t,mf,e.show_form?(e=>{const t=zd("Show groupchats"),n=zd("Server address");return Za(aS(),e.submitForm,n,e.setDomainFromEvent,e.muc_domain||"",e.server_placeholder,t)})(e):"",e.loading_items?Za(iS(),fp()):"",e.feedback_text?Za(rS(),e.feedback_text):"",qp(e.items,e=>e.jid,t=>((e,t)=>{const n=zd("Show more information on this groupchat"),r=zd("Click to open this groupchat");return Za(sS(),e.openRoom,t.jid,t.name,r,t.name||t.jid,e.toggleRoomInfo,t.jid,n)})(e,t)),gf)},uS=n(179),dS=n.n(uS);const hS=rl.env.utils;function fS(e){const t=hS.ancestor(e.target,".room-item"),n=t.querySelector("div.room-info");n?(hS.slideIn(n).then(hS.removeElement),t.querySelector("a.room-info").classList.remove("selected")):(t.insertAdjacentElement("beforeend",hS.getElementFromTemplateResult(fp())),Vc.disco.info(e.target.getAttribute("data-room-jid"),null).then(e=>function(e,t){var n,r;e.querySelector("span.spinner").remove(),e.querySelector("a.room-info").classList.add("selected"),e.insertAdjacentHTML("beforeEnd",dS()({jid:t.getAttribute("from"),desc:null===(n=Kg(mr()('field[var="muc#roominfo_description"] value',t)))||void 0===n?void 0:n.textContent,occ:null===(r=Kg(mr()('field[var="muc#roominfo_occupants"] value',t)))||void 0===r?void 0:r.textContent,hidden:mr()('feature[var="muc_hidden"]',t).length,membersonly:mr()('feature[var="muc_membersonly"]',t).length,moderated:mr()('feature[var="muc_moderated"]',t).length,nonanonymous:mr()('feature[var="muc_nonanonymous"]',t).length,open:mr()('feature[var="muc_open"]',t).length,passwordprotected:mr()('feature[var="muc_passwordprotected"]',t).length,persistent:mr()('feature[var="muc_persistent"]',t).length,publicroom:mr()('feature[var="muc_publicroom"]',t).length,semianonymous:mr()('feature[var="muc_semianonymous"]',t).length,temporary:mr()('feature[var="muc_temporary"]',t).length,unmoderated:mr()('feature[var="muc_unmoderated"]',t).length,label_desc:zd("Description:"),label_jid:zd("Groupchat Address (JID):"),label_occ:zd("Participants:"),label_features:zd("Features:"),label_requires_auth:zd("Requires authentication"),label_hidden:zd("Hidden"),label_requires_invite:zd("Requires an invitation"),label_moderated:zd("Moderated"),label_non_anon:zd("Non-anonymous"),label_open_room:zd("Open"),label_permanent_room:zd("Permanent"),label_public:zd("Public"),label_semi_anon:zd("Semi-anonymous"),label_temp_room:zd("Temporary"),label_unmoderated:zd("Unmoderated")}))}(t,e)).catch(e=>zn.error(e)))}var pS=df.extend({id:"muc-list-modal",persistent:!0,initialize(){this.items=[],this.loading_items=!1,df.prototype.initialize.apply(this,arguments),Vc.settings.get("muc_domain")&&!this.model.get("muc_domain")&&this.model.save("muc_domain",Vc.settings.get("muc_domain")),this.listenTo(this.model,"change:muc_domain",this.onDomainChange),this.el.addEventListener("shown.bs.modal",()=>Vc.settings.get("locked_muc_domain")?this.updateRoomsList():this.el.querySelector('input[name="server"]').focus())},toHTML(){const e=this.model.get("muc_domain")||Vc.settings.get("muc_domain");return lS(Object.assign(this.model.toJSON(),{show_form:!Vc.settings.get("locked_muc_domain"),server_placeholder:e||zd("conference.example.org"),items:this.items,loading_items:this.loading_items,openRoom:e=>this.openRoom(e),setDomainFromEvent:e=>this.setDomainFromEvent(e),submitForm:e=>this.showRooms(e),toggleRoomInfo:e=>this.toggleRoomInfo(e)}))},openRoom(e){e.preventDefault();const t=e.target.getAttribute("data-room-jid"),n=e.target.getAttribute("data-room-name");this.modal.hide(),Vc.rooms.open(t,{name:n},!0)},toggleRoomInfo(e){e.preventDefault(),fS(e)},onDomainChange(){Vc.settings.get("auto_list_rooms")&&this.updateRoomsList()},onRoomsFound(e){this.loading_items=!1;const t=e?mr()("query item",e):[];return t.length?(this.model.set({feedback_text:zd("Groupchats found")},{silent:!0}),this.items=t.map(ps.getAttributes)):(this.items=[],this.model.set({feedback_text:zd("No groupchats found")},{silent:!0})),this.render(),!0},updateRoomsList(){const e=Object(Zw.a)({to:this.model.get("muc_domain"),from:Uc.connection.jid,type:"get"}).c("query",{xmlns:Zw.b.NS.DISCO_ITEMS});Vc.sendIQ(e).then(e=>this.onRoomsFound(e)).catch(()=>this.onRoomsFound())},showRooms(e){e.preventDefault(),this.loading_items=!0,this.render();const t=new FormData(e.target);this.model.setDomain(t.get("server")),this.updateRoomsList()},setDomainFromEvent(e){this.model.setDomain(e.target.value)},setNick(e){this.model.save({nick:e.target.value})}});const gS=rl.env.utils,mS=eh.extend({tagName:"div",className:"controlbox-section",id:"chatrooms",events:{"click a.controlbox-heading__btn.show-add-muc-modal":"showAddRoomModal","click a.controlbox-heading__btn.show-list-muc-modal":"showMUCListModal"},toHTML(){return e={heading_chatrooms:zd("Groupchats"),title_new_room:zd("Add a new groupchat"),title_list_rooms:zd("Query for groupchats")},Za(nS(),e.heading_chatrooms,e.title_list_rooms,e.title_new_room);var e},showAddRoomModal(e){Vc.modal.show(tS,{model:this.model},e)},showMUCListModal(e){Vc.modal.show(pS,{model:this.model},e)}}),vS={renderRoomsPanel(){if(this.roomspanel&&gS.isInDOM(this.roomspanel.el))return this.roomspanel;const e="converse.roomspanel".concat(Uc.bare_jid);return this.roomspanel=new Uc.RoomsPanel({model:new(Uc.RoomsPanelModel.extend({id:e,browserStorage:Uc.createStore(e)}))}),this.roomspanel.model.fetch(),this.el.querySelector(".controlbox-pane").insertAdjacentElement("beforeEnd",this.roomspanel.render().el),Vc.trigger("roomsPanelRendered"),this.roomspanel},getRoomsPanel(){return this.roomspanel&&gS.isInDOM(this.roomspanel.el)?this.roomspanel:this.renderRoomsPanel()}},{Strophe:_S}=rl.env;function bS(e,t){t.getRoomsPanel().model.save("muc_domain",_S.getDomainFromJid(e))}function yS(e){e.model.get("connected")&&(e.getRoomsPanel().model.get("muc_domain")||(void 0===Vc.settings.get("muc_domain")?function(e){function t(t){t&&t.get("var")===_S.NS.MUC&&t.entity.getIdentity("conference","text").then(n=>{n&&bS(t.get("from"),e)})}Vc.waitUntil("discoInitialized").then(()=>{Vc.listen.on("serviceDiscovered",t),Uc.disco_entities.each(e=>t(e.features.findWhere({var:_S.NS.MUC})))}).catch(e=>zn.error(e))}(e):bS(Vc.settings.get("muc_domain"),e)))}function wS(e){e.preventDefault(),Vc.rooms.open(e.target.href)}async function SS(e){const t=Uc.chatboxviews;if(!t.get(e.get("id"))&&e.get("type")===Uc.CHATROOMS_TYPE&&e.isValid())return await e.initialized,t.add(e.get("id"),new Uc.ChatRoomView({model:e}))}rl.plugins.add("converse-muc-views",{dependencies:["converse-autocomplete","converse-modal","converse-controlbox","converse-chatview"],overrides:{ControlBoxView:{renderControlBoxPane(){this.__super__.renderControlBoxPane.apply(this,arguments),Vc.settings.get("allow_muc")&&this.renderRoomsPanel()}}},initialize(){const{_converse:e}=this;Vc.promises.add(["roomsPanelRendered"]),Vc.settings.extend({auto_list_rooms:!1,cache_muc_messages:!0,locked_muc_nickname:!1,modtools_disable_query:[],modtools_disable_assign:!1,muc_disable_slash_commands:!1,muc_mention_autocomplete_filter:"contains",muc_mention_autocomplete_min_chars:0,muc_mention_autocomplete_show_avatar:!0,muc_roomid_policy:null,muc_roomid_policy_hint:null,roomconfig_whitelist:[],show_retraction_warning:!0,visible_toolbar_buttons:{toggle_occupants:!0}}),e.MUCConfigForm=sy,e.MUCPasswordForm=cy,e.ChatRoomView=e.ChatBoxView.extend(Ww),e.RoomsPanel=mS,e.ControlBoxView&&Object.assign(e.ControlBoxView.prototype,vS),Object.assign(e.api,Gw),Vc.listen.on("chatBoxViewsInitialized",()=>{e.chatboxviews.delegate("click","a.open-chatroom",wS),e.chatboxes.on("add",SS)}),Vc.listen.on("clearSession",()=>{const t=e.chatboxviews.get("controlbox");t&&t.roomspanel&&(t.roomspanel.model.destroy(),t.roomspanel.remove(),delete t.roomspanel)}),Vc.listen.on("controlBoxInitialized",e=>{Vc.settings.get("allow_muc")&&(yS(e),e.model.on("change:connected",()=>yS(e)))})}});var xS={className:"chatbox headlines hidden",events:{"click .close-chatbox-button":"close","click .toggle-chatbox-button":"minimize","keypress textarea.chat-textarea":"onKeyDown"},async initialize(){this.initDebounced(),this.model.disable_mam=!0,this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"show",this.show),this.render(),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.messages,"reset",this.renderChatHistory),await this.model.messages.fetched,this.insertIntoDOM(),this.model.maybeShow(),this.scrollDown(),Vc.trigger("headlinesBoxViewInitialized",this)},render(){this.el.setAttribute("id",this.model.get("box_id"));const e=Qv(Object.assign(this.model.toJSON(),{info_close:"",label_personal_message:"",show_send_button:!1,show_toolbar:!1,unread_msgs:""}));return Ya(e,this.el),this.content=this.el.querySelector(".chat-content"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.renderChatContent(),this.renderHeading(),this},getNotifications:()=>[],getHeadingButtons(){const e=[];return Vc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:zd("Close"),i18n_title:zd("Close these announcements"),icon_class:"fa-times",name:"close",standalone:"overlayed"===Vc.settings.get("view_mode")}),Uc.api.hook("getHeadingButtons",this,e)},renderMessageForm:function(){},afterShown:function(){}};function ES(){const e=CS(['\n <div class="list-container list-container--headline ','">\n <div class="items-list rooms-list headline-list">\n ',"\n </div>\n </div>\n"]);return ES=function(){return e},e}function AS(){const e=CS(['\n <div class="list-item controlbox-padded d-flex flex-row"\n data-headline-jid="','">\n <a class="list-item-link open-headline available-room w-100"\n data-headline-jid="','"\n title="','" href="#">',"</a>\n </div>\n"]);return AS=function(){return e},e}function CS(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var jS=e=>Za(ES(),e.headlineboxes.length?"":"hidden",e.headlineboxes.map(t=>(e=>Za(AS(),e.headlinebox.get("jid"),e.headlinebox.get("jid"),e.open_title,e.headlinebox.get("jid")))(Object.assign({headlinebox:t},e))));function TS(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="d-flex controlbox-padded ','">\n <span class="w-100 controlbox-heading controlbox-heading--headline">',"</span>\n </div>\n ","\n"]);return TS=function(){return e},e}const OS=rl.env.utils,kS=eh.extend({tagName:"div",className:"controlbox-section",id:"headline",events:{"click .open-headline":"openHeadline"},initialize(){this.listenTo(this.model,"add",this.renderIfHeadline),this.listenTo(this.model,"remove",this.renderIfHeadline),this.listenTo(this.model,"destroy",this.renderIfHeadline),this.render(),this.insertIntoDOM()},toHTML(){return e={heading_headline:zd("Announcements"),headlineboxes:this.model.filter(e=>e.get("type")===Uc.HEADLINES_TYPE),open_title:zd("Click to open this server message")},Za(TS(),e.headlineboxes.length?"":"hidden",e.heading_headline,jS(e));var e},renderIfHeadline(e){return e&&e.get("type")===Uc.HEADLINES_TYPE&&this.render()},openHeadline(e){e.preventDefault();const t=e.target.getAttribute("data-headline-jid");Uc.chatboxes.get(t).maybeShow(!0)},insertIntoDOM(){const e=Uc.chatboxviews.get("controlbox");e&&e.el.querySelector(".controlbox-pane").insertAdjacentElement("beforeEnd",this.el)}}),NS={renderHeadlinesPanel(){return this.headlinepanel&&OS.isInDOM(this.headlinepanel.el)||(this.headlinepanel=new Uc.HeadlinesPanel({model:Uc.chatboxes}),Vc.trigger("headlinesPanelRendered")),this.headlinepanel}}; /** * @module converse-headlines-view * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const Qy=Yc.env.utils,Yy=gv.extend({className:"chatbox headlines",events:{"click .close-chatbox-button":"close","click .toggle-chatbox-button":"minimize","keypress textarea.chat-textarea":"onKeyDown"},initialize(){this.initDebounced(),this.model.disable_mam=!0,this.listenTo(this.model.messages,"add",this.renderChatHistory),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"destroy",this.hide),this.listenTo(this.model,"change:minimized",this.onMinimizedChanged),this.render(),this.renderHeading(),this.updateAfterMessagesFetched(),this.insertIntoDOM().hide(),this.model.maybeShow(),qc.trigger("headlinesBoxViewInitialized",this)},render(){this.el.setAttribute("id",this.model.get("box_id"));const e=Lm(Object.assign(this.model.toJSON(),{info_close:"",label_personal_message:"",show_send_button:!1,show_toolbar:!1,unread_msgs:""}));return Wa(e,this.el),this.content=this.el.querySelector(".chat-content"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this},getNotifications:()=>[],getHeadingButtons(){const e=[];return qc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:dd("Close"),i18n_title:dd("Close these announcements"),icon_class:"fa-times",name:"close",standalone:"overlayed"===qc.settings.get("view_mode")}),Lc.api.hook("getHeadingButtons",this,e)},renderMessageForm:function(){},afterShown:function(){}}),Ky=jd.extend({tagName:"div",className:"controlbox-section",id:"headline",events:{"click .open-headline":"openHeadline"},initialize(){this.listenTo(this.model,"add",this.renderIfHeadline),this.listenTo(this.model,"remove",this.renderIfHeadline),this.listenTo(this.model,"destroy",this.renderIfHeadline),this.render(),this.insertIntoDOM()},toHTML(){return e={heading_headline:dd("Announcements"),headlineboxes:this.model.filter(e=>e.get("type")===Lc.HEADLINES_TYPE),open_title:dd("Click to open this server message")},Ga(Xy(),e.headlineboxes.length?"":"hidden",e.heading_headline,Jy(e));var e},renderIfHeadline(e){return e&&e.get("type")===Lc.HEADLINES_TYPE&&this.render()},openHeadline(e){e.preventDefault();const t=e.target.getAttribute("data-headline-jid");Lc.chatboxes.get(t).maybeShow(!0)},insertIntoDOM(){const e=Lc.chatboxviews.get("controlbox");e&&e.el.querySelector(".controlbox-pane").insertAdjacentElement("beforeEnd",this.el)}});Yc.plugins.add("converse-headlines-view",{dependencies:["converse-headlines","converse-chatview"],overrides:{ControlBoxView:{renderControlBoxPane(){this.__super__.renderControlBoxPane.apply(this,arguments),this.renderHeadlinesPanel()}}},initialize(){const e={renderHeadlinesPanel(){return this.headlinepanel&&Qy.isInDOM(this.headlinepanel.el)||(this.headlinepanel=new Lc.HeadlinesPanel({model:Lc.chatboxes}),qc.trigger("headlinesPanelRendered")),this.headlinepanel}};Lc.ControlBoxView&&Object.assign(Lc.ControlBoxView.prototype,e),Lc.HeadlinesBoxView=Yy,Lc.HeadlinesPanel=Ky,qc.listen.on("chatBoxViewsInitialized",()=>{const e=Lc.chatboxviews;Lc.chatboxes.on("add",t=>{e.get(t.get("id"))||t.get("type")!==Lc.HEADLINES_TYPE||e.add(t.get("id"),new Lc.HeadlinesBoxView({model:t}))})})}}); +function IS(){const e=Uc.chatboxviews;Uc.chatboxes.on("add",t=>{e.get(t.get("id"))||t.get("type")!==Uc.HEADLINES_TYPE||e.add(t.get("id"),new Uc.HeadlinesBoxView({model:t}))})}rl.plugins.add("converse-headlines-view",{dependencies:["converse-headlines","converse-chatview"],overrides:{ControlBoxView:{renderControlBoxPane(){this.__super__.renderControlBoxPane.apply(this,arguments),this.renderHeadlinesPanel()}}},initialize(){Uc.ControlBoxView&&Object.assign(Uc.ControlBoxView.prototype,NS),Uc.HeadlinesBoxView=Uc.ChatBoxView.extend(xS),Uc.HeadlinesPanel=kS,Vc.listen.on("chatBoxViewsInitialized",IS)}});var MS=n(180),RS=n.n(MS); /** * @module converse-notification * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:Zy}=Yc.env,ew=Yc.env.utils,tw="Notification"in window;function nw(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="suggestion-box suggestion-box__name">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <input type="text" name="','"\n autocomplete="off"\n @keydown=',"\n @keyup=",'\n class="form-control suggestion-box__input"\n placeholder="','"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n ']);return nw=function(){return e},e}Yc.plugins.add("converse-notification",{dependencies:["converse-chatboxes"],initialize(){qc.settings.extend({notify_all_room_messages:!1,show_desktop_notifications:!0,show_chat_state_notifications:!1,chatstate_notification_blacklist:[],play_sounds:!0,sounds_path:qc.settings.get("assets_path")+"/sounds/",notification_icon:"logo/conversejs-filled.svg",notification_delay:5e3,notify_nicknames_without_references:!1}),Lc.shouldNotifyOfGroupMessage=function(e){if(!(null==e?void 0:e.body))return!1;const t=e.from,n=e.from_muc,r=qc.settings.get("notify_all_room_messages"),i=Lc.chatboxes.get(n),s=Zy.getResourceFromJid(t),o=s&&Zy.unescapeNode(s)||"";let a=!1;const c=i.get("nick");qc.settings.get("notify_nicknames_without_references")&&(a=new RegExp("\\b".concat(c,"\\b")).test(e.body));const l=e.references.map(e=>e.value).includes(c),u=o!==c,d=!0===r||Array.isArray(r)&&r.includes(n)||l||a;return u&&!!d},Lc.isMessageToHiddenChat=function(e){var t,n;return null!==(t=null===(n=Lc.chatboxes.get(e.from))||void 0===n?void 0:n.isHidden())&&void 0!==t&&t},Lc.shouldNotifyOfMessage=function(e){const{attrs:t,stanza:n}=e;if(!t||null!==n.querySelector("forwarded"))return!1;if("groupchat"===t.type)return Lc.shouldNotifyOfGroupMessage(t);if(t.is_headline)return Lc.isMessageToHiddenChat(t);const r=Zy.getBareJidFromJid(t.from)===Lc.bare_jid;return!ew.isOnlyChatStateNotification(n)&&!ew.isOnlyMessageDeliveryReceipt(n)&&!r&&("all"===qc.settings.get("show_desktop_notifications")||Lc.isMessageToHiddenChat(t))},Lc.playSoundNotification=function(){if(qc.settings.get("play_sounds")&&void 0!==window.Audio){const e=new Audio(qc.settings.get("sounds_path")+"msg_received.ogg"),t=e.canPlayType("audio/ogg");if("probably"===t)return e.play();const n=new Audio(qc.settings.get("sounds_path")+"msg_received.mp3"),r=n.canPlayType("audio/mp3");"probably"===r?n.play():"maybe"===t?e.play():"maybe"===r&&n.play()}},Lc.areDesktopNotificationsEnabled=function(){return tw&&qc.settings.get("show_desktop_notifications")&&"granted"===Notification.permission},Lc.showMessageNotification=function(e){const{attrs:t}=e;if(t.is_error)return;if(!Lc.areDesktopNotificationsEnabled())return;let n,r;const i=t.from,s=Zy.getBareJidFromJid(i);if("headline"===t.type){if(s.includes("@")&&!qc.settings.get("allow_non_roster_messaging"))return;n=dd("Notification from %1$s",s)}else if(s.includes("@"))if("groupchat"===t.type)n=dd("%1$s says",Zy.getResourceFromJid(i));else{if(void 0===Lc.roster)return void Pn.error("Could not send notification, because roster is undefined");if(r=Lc.roster.get(s),void 0!==r)n=dd("%1$s says",r.getDisplayName());else{if(!qc.settings.get("allow_non_roster_messaging"))return;n=dd("%1$s says",s)}}else n=dd("Notification from %1$s",s);const o=t.is_encrypted?dd("Encrypted message received"):t.body;if(!o)return;const a=new Notification(n,{body:o,lang:Lc.locale,icon:qc.settings.get("notification_icon"),requireInteraction:!Lc.notification_delay});qc.settings.get("notification_delay")&&setTimeout(a.close.bind(a),qc.settings.get("notification_delay")),a.onclick=function(e){e.preventDefault(),window.focus(),Lc.chatboxes.get(s).maybeShow(!0)},a.onclick.bind(Lc)},Lc.showChatStateNotification=function(e){if(Lc.chatstate_notification_blacklist.includes(e.jid))return;const t=e.chat_status;let n=null;if("offline"===t?n=dd("has gone offline"):"away"===t?n=dd("has gone away"):"dnd"===t?n=dd("is busy"):"online"===t&&(n=dd("has come online")),null===n)return;const r=new Notification(e.getDisplayName(),{body:n,lang:Lc.locale,icon:Lc.notification_icon});setTimeout(r.close.bind(r),5e3)},Lc.showContactRequestNotification=function(e){const t=new Notification(e.getDisplayName(),{body:dd("wants to be your contact"),lang:Lc.locale,icon:Lc.notification_icon});setTimeout(t.close.bind(t),5e3)},Lc.showFeedbackNotification=function(e){if("error"===e.klass||"warn"===e.klass){const t=new Notification(e.subject,{body:e.message,lang:Lc.locale,icon:Lc.notification_icon});setTimeout(t.close.bind(t),5e3)}},Lc.handleChatStateNotification=function(e){Lc.areDesktopNotificationsEnabled()&&qc.settings.get("show_chat_state_notifications")&&Lc.showChatStateNotification(e)},Lc.handleMessageNotification=function(e){if(!Lc.shouldNotifyOfMessage(e))return!1;qc.trigger("messageNotification",e),Lc.playSoundNotification(),Lc.showMessageNotification(e)},Lc.handleContactRequestNotification=function(e){Lc.areDesktopNotificationsEnabled(!0)&&Lc.showContactRequestNotification(e)},Lc.handleFeedback=function(e){Lc.areDesktopNotificationsEnabled(!0)&&Lc.showFeedbackNotification(e)},Lc.requestPermission=function(){tw&&!["denied","granted"].includes(Notification.permission)&&Notification.requestPermission()},qc.listen.on("pluginsInitialized",(function(){qc.listen.on("contactRequest",Lc.handleContactRequestNotification),qc.listen.on("contactPresenceChanged",Lc.handleChatStateNotification),qc.listen.on("message",Lc.handleMessageNotification),qc.listen.on("feedback",Lc.handleFeedback),qc.listen.on("connected",Lc.requestPermission)}))}});function rw(){const e=lw(['\n <fieldset class="form-group">\n <ul class="list-group">\n <li class="list-group-item active">',":</li>\n ","\n </ul>\n </fieldset>"]);return rw=function(){return e},e}function iw(){const e=lw(['<div class="alert alert-','" role="alert">',"</div>"]);return iw=function(){return e},e}function sw(){const e=lw(["\n ",'\n <form class="converse-form" @submit=','>\n <fieldset class="form-group">\n <label>\n ','\n <p class="form-help">','</p>\n <converse-autocomplete\n .getAutoCompleteList="','"\n placeholder="','"\n name="jid"/>\n </label>\n </fieldset>\n <fieldset class="form-group">\n <input type="submit" class="btn btn-primary" value="','">\n </fieldset>\n ',"\n\n </form>\n "]);return sw=function(){return e},e}function ow(){const e=lw(['\n <li class="room-item list-group-item">\n <div class="available-chatroom d-flex flex-row">\n <a class="open-room available-room w-100"\n @click=','\n data-command-node="','"\n data-command-jid="','"\n data-command-name="','"\n title="','"\n href="#">',"</a>\n </div>\n ","\n </li>\n"]);return ow=function(){return e},e}function aw(){const e=lw(['<div class="alert alert-','" role="alert">',"</div>"]);return aw=function(){return e},e}function cw(){const e=lw(["\n <form @submit=",">\n ",'\n <fieldset class="form-group">\n <input type="hidden" name="command_node" value="','"/>\n <input type="hidden" name="command_jid" value="','"/>\n\n <p class="form-help">',"</p>\n \x3c!-- Fields are generated internally, with xForm2webForm --\x3e\n ",'\n </fieldset>\n <fieldset>\n <input type="submit" class="btn btn-primary" value="','">\n <input type="button" class="btn btn-secondary button-cancel" value="','" @click=',">\n </fieldset>\n </form>\n "]);return cw=function(){return e},e}function lw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-autocomplete",class extends uc{static get properties(){return{getAutoCompleteList:{type:Function},auto_evaluate:{type:Boolean},auto_first:{type:Boolean},filter:{type:String},include_triggers:{type:String},min_chars:{type:Number},name:{type:String},placeholder:{type:String},triggers:{type:String}}}constructor(){super(),this.auto_evaluate=!0,this.auto_first=!1,this.filter="contains",this.include_triggers="",this.match_current_word=!1,this.max_items=10,this.min_chars=1,this.triggers=""}render(){return Ga(nw(),this.name,this.onKeyDown,this.onKeyUp,this.placeholder)}firstUpdated(){this.auto_complete=new yd(this.firstElementChild,{ac_triggers:this.triggers.split(" "),auto_evaluate:this.auto_evaluate,auto_first:this.auto_first,filter:"contains"==this.filter?pd:gd,include_triggers:[],list:()=>this.getAutoCompleteList(),match_current_word:!0,max_items:this.max_items,min_chars:this.min_chars}),this.auto_complete.on("suggestion-box-selectcomplete",()=>this.auto_completing=!1)}onKeyDown(e){this.auto_complete.onKeyDown(e)}onKeyUp(e){this.auto_complete.evaluate(e)}});const{Strophe:uw,$iq:dw}=Yc.env,hw=Yc.env.utils,fw=(e,t)=>Ga(ow(),e.toggleCommandForm,t.node,t.jid,t.name,t.name,t.name||t.jid,t.node===e.showform?((e,t)=>{const n=dd("Hide"),r=dd("Execute");return Ga(cw(),e.runCommand,t.alert?Ga(aw(),t.alert_type,t.alert):"",t.node,t.jid,t.instructions,t.fields.map(e=>pp(e)),r,n,e.hideCommandForm)})(e,t):"");async function pw(){const e=[...await qc.rooms.get(),...await qc.contacts.get()];return[...new Set(e.map(e=>uw.getDomainFromJid(e.get("jid"))))]}function gw(){const e=vw(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="converse-modtools-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n ','\n\n <div class="tab-content">\n <div class="tab-pane tab-pane--columns ','"\n id="about-tabpanel" role="tabpanel" aria-labelledby="about-tab">\n\n <span class="modal-alert"></span>\n <br/>\n <div class="container">\n <h6 class="brand-heading">Converse</h6>\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle">','</p>\n </div>\n </div>\n\n <div class="tab-pane tab-pane--columns ','"\n id="commands-tabpanel"\n role="tabpanel"\n aria-labelledby="commands-tab">\n <converse-adhoc-commands/>\n </div>\n </div>\n </div>\n </div>\n </div>\n']);return gw=function(){return e},e}function mw(){const e=vw(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="about-tab" href="#about-tabpanel" aria-controls="about-tabpanel" role="tab" data-toggle="tab" @click=',">",'</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="commands-tab" href="#commands-tabpanel" aria-controls="commands-tabpanel" role="tab" data-toggle="tab" @click=',">","</a>\n </li>\n </ul>\n "]);return mw=function(){return e},e}function vw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-adhoc-commands",class extends uc{static get properties(){return{alert:{type:String},alert_type:{type:String},nonce:{type:String},showform:{type:String},view:{type:String}}}constructor(){super(),this.view="choose-service",this.showform="",this.commands=[]}render(){return(e=>{const t=dd("On which entity do you want to run commands?"),n=dd("Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them."),r=dd("Commands found"),i=dd("List available commands"),s=dd("XMPP Address"),o=dd("No commands found");return Ga(sw(),e.alert?Ga(iw(),e.alert_type,e.alert):"",e.fetchCommands,t,n,pw,s,i,"list-commands"===e.view?Ga(rw(),e.commands.length?r:o,e.commands.map(t=>fw(e,t))):"")})({alert:this.alert,alert_type:this.alert_type,commands:this.commands,fetchCommands:e=>this.fetchCommands(e),hideCommandForm:e=>this.hideCommandForm(e),runCommand:e=>this.runCommand(e),showform:this.showform,toggleCommandForm:e=>this.toggleCommandForm(e),view:this.view})}async fetchCommands(e){e.preventDefault(),delete this.alert_type,delete this.alert;const t=new FormData(e.target).get("jid").trim();let n;try{n=await qc.disco.supports(uw.NS.ADHOC,t)}catch(e){Pn.error(e)}if(n)try{this.commands=await qc.adhoc.getCommands(t),this.view="list-commands"}catch(e){return Pn.error(e),this.alert_type="danger",this.alert=dd("Sorry, an error occurred while looking for commands on that entity."),this.commands=[],void Pn.error(e)}else this.alert_type="danger",this.alert=dd("The specified entity doesn't support ad-hoc commands")}async toggleCommandForm(e){e.preventDefault();const t=e.target.getAttribute("data-command-node"),n=this.commands.filter(e=>e.node===t)[0];this.showform!==t&&await async function(e){const t=e.node,n=e.jid,r=dw({type:"set",to:n}).c("command",{xmlns:uw.NS.ADHOC,node:t,action:"execute"});try{var i;const t=await qc.sendIQ(r),n=ur()('command[xmlns="'.concat(uw.NS.ADHOC,'"]'),t).pop();e.sessionid=n.getAttribute("sessionid"),e.instructions=null===(i=ur()('x[type="form"][xmlns="jabber:x:data"] instructions',n).pop())||void 0===i?void 0:i.textContent,e.fields=ur()('x[type="form"][xmlns="jabber:x:data"] field',n).map(e=>hw.xForm2webForm(e,n))}catch(t){null===t?Pn.error("Error: timeout while trying to execute command for ".concat(n)):(Pn.error("Error while trying to execute command for ".concat(n)),Pn.error(t)),e.fields=[]}}(n),this.showform=t}hideCommandForm(e){e.preventDefault(),this.showform=""}async runCommand(e){e.preventDefault();const t=new FormData(e.target),n=t.get("command_jid").trim(),r=t.get("command_node").trim(),i=this.commands.filter(e=>e.node===r)[0],s=ur()(":input:not([type=button]):not([type=submit])",e.target).filter(e=>!["command_jid","command_node"].includes(e.getAttribute("name"))).map(hw.webForm2xForm).filter(e=>e),o=dw({to:n,type:"set"}).c("command",{sessionid:i.sessionid,node:i.node,xmlns:uw.NS.ADHOC}).c("x",{xmlns:uw.NS.XFORM,type:"submit"});let a;s.forEach(e=>o.cnode(e).up());try{a=await qc.sendIQ(o)}catch(e){i.alert_type="danger",i.alert=dd("Sorry, an error occurred while trying to execute the command. See the developer console for details"),Pn.error("Error while trying to execute an ad-hoc command"),Pn.error(e)}var c;a?i.alert=null===(c=a.querySelector("note"))||void 0===c?void 0:c.textContent:i.alert="Done";i.alert_type="primary",this.nonce=hw.getUniqueId()}});var _w=e=>{const t=dd("Settings"),n=dd("%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s",'<a target="_blank" rel="nofollow" href="https://conversejs.org">',"</a>",'<a target="_blank" rel="nofollow" href="https://opkode.com">'),r=dd("%1$s Translate %2$s it into your own language",'<a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">',"</a>"),i=qc.settings.get("show_client_info"),s=qc.settings.get("allow_adhoc_commands"),o=i&&s;return Ga(gw(),t,Bd,o?(e=>{const t=dd("About"),n=dd("Commands");return Ga(mw(),e.switchTab,t,e.switchTab,n)})(e):"",i?"active":"",e.version_name,pp(hp.a.filterXSS(n,{whiteList:{a:[]}})),pp(hp.a.filterXSS(r,{whiteList:{a:[]}})),!i&&s?"active":"")};let bw;var yw=Kd.extend({id:"converse-client-info-modal",initialize(e){bw=e._converse,Kd.prototype.initialize.apply(this,arguments)},toHTML(){return _w(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{version_name:bw.VERSION_NAME}))}});function ww(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="changeStatusModalLabel">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form set-xmpp-status" id="set-xmpp-status">\n <div class="form-group">\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-online" value="online" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-online">\n <span class="fa fa-circle chat-status chat-status--online"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-busy">\n <span class="fa fa-minus-circle chat-status chat-status--busy"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-away" value="away" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-away">\n <span class="fa fa-circle chat-status chat-status--away"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-xa" value="xa" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-xa">\n <span class="far fa-circle chat-status chat-status--xa"></span>','</label>\n </div>\n </div>\n <div class="form-group">\n <div class="btn-group w-100">\n <input name="status_message" type="text" class="form-control"\n value="','" placeholder="','"/>\n <span class="clear-input fa fa-times ','"></span>\n </div>\n </div>\n <button type="submit" class="btn btn-primary">',"</button>\n </form>\n </div>\n </div>\n </div>\n"]);return ww=function(){return e},e}function Sw(){const e=Aw(['<a class="controlbox-heading__btn logout fa fa-sign-out-alt align-self-center" title="','"></a>']);return Sw=function(){return e},e}function xw(){const e=Aw(['<a class="controlbox-heading__btn show-client-info fa fa-cog align-self-center" title="','" @click=',"></a>"]);return xw=function(){return e},e}function Ew(){const e=Aw(['\n <div class="userinfo controlbox-padded">\n <div class="controlbox-section profile d-flex">\n <a class="show-profile" href="#">\n <canvas class="avatar align-self-center" height="40" width="40"></canvas>\n </a>\n <span class="username w-100 align-self-center">',"</span>\n ","\n ",'\n </div>\n <div class="d-flex xmpp-status">\n <a class="change-status" title="','" data-toggle="modal" data-target="#changeStatusModal">\n <span class="',' w-100 align-self-center" data-value="','">\n <span class="\n ',"\n ","\n ","\n ","\n ",'"></span> ',"</span>\n </a>\n </div>\n </div>\n"]);return Ew=function(){return e},e}function Aw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Cw(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <a class="change-avatar" @click=',' title="','">\n ',"\n </a>\n <input @change=",' class="hidden" name="image" type="file"/>\n ']);return Cw=function(){return e},e}const jw=dd("Your avatar image");function Tw(){const e=Pw(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="user-profile-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n ','\n <div class="tab-content">\n <div class="tab-pane active" id="profile-tabpanel" role="tabpanel" aria-labelledby="profile-tab">\n <form class="converse-form converse-form--modal profile-form" action="#">\n <div class="row">\n <div class="col-auto">\n <converse-image-picker image="','" width="','" height="','"></converse-image-picker>\n </div>\n <div class="col">\n <div class="form-group">\n <label class="col-form-label">',":</label>\n <div>",'</div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <label for="vcard-fullname" class="col-form-label">',':</label>\n <input id="vcard-fullname" type="text" class="form-control" name="fn" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-nickname" class="col-form-label">',':</label>\n <input id="vcard-nickname" type="text" class="form-control" name="nickname" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-url" class="col-form-label">',':</label>\n <input id="vcard-url" type="url" class="form-control" name="url" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-email" class="col-form-label">',':</label>\n <input id="vcard-email" type="email" class="form-control" name="email" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-role" class="col-form-label">',':</label>\n <input id="vcard-role" type="text" class="form-control" name="role" value="','" aria-describedby="vcard-role-help"/>\n <small id="vcard-role-help" class="form-text text-muted">','</small>\n </div>\n <hr/>\n <div class="form-group">\n <button type="submit" class="save-form btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n ","\n </div>\n </div>\n </div>\n </div>\n "]);return Tw=function(){return e},e}function Ow(){const e=Pw(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="profile-tab" href="#profile-tabpanel" aria-controls="profile-tabpanel" role="tab" data-toggle="tab">','</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="omemo-tab" href="#omemo-tabpanel" aria-controls="omemo-tabpanel" role="tab" data-toggle="tab">',"</a>\n </li>\n </ul>"]);return Ow=function(){return e},e}function kw(){const e=Pw(['\n <div class="tab-pane" id="omemo-tabpanel" role="tabpanel" aria-labelledby="omemo-tab">\n <form class="converse-form fingerprint-removal">\n <ul class="list-group fingerprints">\n <li class="list-group-item active">','</li>\n <li class="list-group-item">\n ','\n </li>\n </ul>\n <div class="form-group">\n <button type="button" class="generate-bundle btn btn-danger">',"</button>\n </div>\n ","\n </form>\n </div>"]);return kw=function(){return e},e}function Nw(){const e=Pw(['\n <ul class="list-group fingerprints">\n <li class="list-group-item nopadding active">\n <label>\n <input type="checkbox" class="select-all" title="','" aria-label="','"/>\n ',"\n </label>\n </li>\n ",'\n </ul>\n <div class="form-group"><button type="submit" class="save-form btn btn-primary">',"</button></div>\n "]);return Nw=function(){return e},e}function Iw(){const e=Pw(["\n ","\n"]);return Iw=function(){return e},e}function Mw(){const e=Pw(['\n <li class="fingerprint-removal-item list-group-item nopadding">\n <label>\n <input type="checkbox" value="','"\n aria-label="','"/>\n <span>',"</span>\n </label>\n </li>\n "]);return Mw=function(){return e},e}function Rw(){const e=Pw(['\n <li class="fingerprint-removal-item list-group-item nopadding">\n <label>\n <input type="checkbox" value="','"\n aria-label="','"/>\n <span class="fingerprint">',"</span>\n </label>\n </li>\n "]);return Rw=function(){return e},e}function Dw(){const e=Pw(['\n <span class="fingerprint">',"</span>"]);return Dw=function(){return e},e}function Pw(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-image-picker",class extends uc{static get properties(){return{height:{type:Number},image:{type:String},width:{type:Number}}}render(){const e={height:this.height,image:this.image,width:this.width};return Ga(Cw(),this.openFileSelection,jw,yf(e),this.updateFilePreview)}openFileSelection(e){e.preventDefault(),this.querySelector('input[type="file"]').click()}updateFilePreview(e){const t=e.target.files[0],n=new FileReader;n.onloadend=()=>this.image=n.result,n.readAsDataURL(t)}});const Lw=Yc.env.utils,zw=e=>Ga(Iw(),e.device.get("bundle")&&e.device.get("bundle").fingerprint?(e=>{const t=dd("Checkbox for selecting the following fingerprint");return Ga(Rw(),e.device.get("id"),t,Lw.formatFingerprint(e.device.get("bundle").fingerprint))})(e):(e=>{const t=dd("Device without a fingerprint"),n=dd("Checkbox for selecting the following device");return Ga(Mw(),e.device.get("id"),n,t)})(e)),Fw=e=>{const t=dd("This device's OMEMO fingerprint"),n=dd("Generate new keys and fingerprint");return Ga(kw(),t,e.view.current_device&&e.view.current_device.get("bundle")&&e.view.current_device.get("bundle").fingerprint?(e=>Ga(Dw(),Lw.formatFingerprint(e.view.current_device.get("bundle").fingerprint)))(e):Tf(),n,e.view.other_devices.length?(e=>{const t=dd("Other OMEMO-enabled devices"),n=dd("Checkbox to select fingerprints of all other OMEMO devices"),r=dd("Remove checked devices and close"),i=dd("Select all");return Ga(Nw(),i,n,t,e.view.other_devices.map(t=>zw(Object.assign({device:t},e))),r)})(e):"")}; +const{Strophe:DS}=rl.env,PS=rl.env.utils,LS="Notification"in window;let zS;function FS(){if(Vc.settings.get("show_tab_notifications")){var e;zS=null!==(e=zS)&&void 0!==e?e:new rl.env.Favico({type:"circle",animation:"pop"});const t=Uc.chatboxes.models.reduce((e,t)=>e+(t.get("num_unread")||0),0);zS.badge(t)}}function BS(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="changeStatusModalLabel">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n <form class="converse-form set-xmpp-status" id="set-xmpp-status">\n <div class="form-group">\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-online" value="online" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-online">\n <span class="fa fa-circle chat-status chat-status--online"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-busy" value="dnd" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-busy">\n <span class="fa fa-minus-circle chat-status chat-status--busy"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-away" value="away" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-away">\n <span class="fa fa-circle chat-status chat-status--away"></span>','</label>\n </div>\n <div class="custom-control custom-radio">\n <input ?checked=','\n type="radio" id="radio-xa" value="xa" name="chat_status" class="custom-control-input"/>\n <label class="custom-control-label" for="radio-xa">\n <span class="far fa-circle chat-status chat-status--xa"></span>','</label>\n </div>\n </div>\n <div class="form-group">\n <div class="btn-group w-100">\n <input name="status_message" type="text" class="form-control"\n value="','" placeholder="','"/>\n <span class="clear-input fa fa-times ','"></span>\n </div>\n </div>\n <button type="submit" class="btn btn-primary">',"</button>\n </form>\n </div>\n </div>\n </div>\n"]);return BS=function(){return e},e}rl.env.Favico=RS.a,rl.plugins.add("converse-notification",{dependencies:["converse-chatboxes"],initialize(){Vc.settings.extend({chatstate_notification_blacklist:[],notification_delay:5e3,notification_icon:"logo/conversejs-filled.svg",notify_all_room_messages:!1,notify_nicknames_without_references:!1,play_sounds:!0,show_chat_state_notifications:!1,show_desktop_notifications:!0,show_tab_notifications:!0,sounds_path:Vc.settings.get("assets_path")+"/sounds/"}),Uc.shouldNotifyOfGroupMessage=function(e){if(!(null==e?void 0:e.body))return!1;const t=e.from,n=e.from_muc,r=Vc.settings.get("notify_all_room_messages"),i=Uc.chatboxes.get(n),o=DS.getResourceFromJid(t),s=o&&DS.unescapeNode(o)||"";let a=!1;const c=i.get("nick");Vc.settings.get("notify_nicknames_without_references")&&(a=new RegExp("\\b".concat(c,"\\b")).test(e.body));const l=e.references.map(e=>e.value).includes(c),u=s!==c,d=!0===r||Array.isArray(r)&&r.includes(n)||l||a;return u&&!!d},Uc.isMessageToHiddenChat=function(e){var t,n;return null!==(t=null===(n=Uc.chatboxes.get(e.from))||void 0===n?void 0:n.isHidden())&&void 0!==t&&t},Uc.shouldNotifyOfMessage=function(e){const{attrs:t,stanza:n}=e;if(!t||null!==n.querySelector("forwarded"))return!1;if("groupchat"===t.type)return Uc.shouldNotifyOfGroupMessage(t);if(t.is_headline)return Uc.isMessageToHiddenChat(t);const r=DS.getBareJidFromJid(t.from)===Uc.bare_jid;return!PS.isOnlyChatStateNotification(n)&&!PS.isOnlyMessageDeliveryReceipt(n)&&!r&&("all"===Vc.settings.get("show_desktop_notifications")||Uc.isMessageToHiddenChat(t))},Uc.playSoundNotification=function(){if(Vc.settings.get("play_sounds")&&void 0!==window.Audio){const e=new Audio(Vc.settings.get("sounds_path")+"msg_received.ogg"),t=e.canPlayType("audio/ogg");if("probably"===t)return e.play();const n=new Audio(Vc.settings.get("sounds_path")+"msg_received.mp3"),r=n.canPlayType("audio/mp3");"probably"===r?n.play():"maybe"===t?e.play():"maybe"===r&&n.play()}},Uc.areDesktopNotificationsEnabled=function(){return LS&&Vc.settings.get("show_desktop_notifications")&&"granted"===Notification.permission},Uc.showMessageNotification=function(e){const{attrs:t}=e;if(t.is_error)return;if(!Uc.areDesktopNotificationsEnabled())return;let n,r;const i=t.from,o=DS.getBareJidFromJid(i);if("headline"===t.type){if(o.includes("@")&&!Vc.settings.get("allow_non_roster_messaging"))return;n=zd("Notification from %1$s",o)}else if(o.includes("@"))if("groupchat"===t.type)n=zd("%1$s says",DS.getResourceFromJid(i));else{if(void 0===Uc.roster)return void zn.error("Could not send notification, because roster is undefined");if(r=Uc.roster.get(o),void 0!==r)n=zd("%1$s says",r.getDisplayName());else{if(!Vc.settings.get("allow_non_roster_messaging"))return;n=zd("%1$s says",o)}}else n=zd("Notification from %1$s",o);const s=t.is_encrypted?zd("Encrypted message received"):t.body;if(!s)return;const a=new Notification(n,{body:s,lang:Uc.locale,icon:Vc.settings.get("notification_icon"),requireInteraction:!Uc.notification_delay});Vc.settings.get("notification_delay")&&setTimeout(a.close.bind(a),Vc.settings.get("notification_delay")),a.onclick=function(e){e.preventDefault(),window.focus(),Uc.chatboxes.get(o).maybeShow(!0)},a.onclick.bind(Uc)},Uc.showChatStateNotification=function(e){if(Uc.chatstate_notification_blacklist.includes(e.jid))return;const t=e.chat_status;let n=null;if("offline"===t?n=zd("has gone offline"):"away"===t?n=zd("has gone away"):"dnd"===t?n=zd("is busy"):"online"===t&&(n=zd("has come online")),null===n)return;const r=new Notification(e.getDisplayName(),{body:n,lang:Uc.locale,icon:Uc.notification_icon});setTimeout(r.close.bind(r),5e3)},Uc.showContactRequestNotification=function(e){const t=new Notification(e.getDisplayName(),{body:zd("wants to be your contact"),lang:Uc.locale,icon:Uc.notification_icon});setTimeout(t.close.bind(t),5e3)},Uc.showFeedbackNotification=function(e){if("error"===e.klass||"warn"===e.klass){const t=new Notification(e.subject,{body:e.message,lang:Uc.locale,icon:Uc.notification_icon});setTimeout(t.close.bind(t),5e3)}},Uc.handleChatStateNotification=function(e){Uc.areDesktopNotificationsEnabled()&&Vc.settings.get("show_chat_state_notifications")&&Uc.showChatStateNotification(e)},Uc.handleMessageNotification=function(e){if(!Uc.shouldNotifyOfMessage(e))return!1;Vc.trigger("messageNotification",e),Uc.playSoundNotification(),Uc.showMessageNotification(e)},Uc.handleContactRequestNotification=function(e){Uc.areDesktopNotificationsEnabled(!0)&&Uc.showContactRequestNotification(e)},Uc.handleFeedback=function(e){Uc.areDesktopNotificationsEnabled(!0)&&Uc.showFeedbackNotification(e)},Uc.requestPermission=function(){LS&&!["denied","granted"].includes(Notification.permission)&&Notification.requestPermission()},Vc.listen.on("clearSession",()=>zS=null),Vc.waitUntil("chatBoxesInitialized").then(()=>Uc.chatboxes.on("change:num_unread",FS)),Vc.listen.on("pluginsInitialized",(function(){Vc.listen.on("contactRequest",Uc.handleContactRequestNotification),Vc.listen.on("contactPresenceChanged",Uc.handleChatStateNotification),Vc.listen.on("message",Uc.handleMessageNotification),Vc.listen.on("feedback",Uc.handleFeedback),Vc.listen.on("connected",Uc.requestPermission)}))}});const qS=rl.env.utils,HS=df.extend({id:"modal-status-change",events:{"submit form#set-xmpp-status":"onFormSubmitted","click .clear-input":"clearStatusMessage"},toHTML(){return e=Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{label_away:zd("Away"),label_busy:zd("Busy"),label_cancel:zd("Cancel"),label_close:zd("Close"),label_custom_status:zd("Custom status"),label_offline:zd("Offline"),label_online:zd("Online"),label_save:zd("Save"),label_xa:zd("Away for long"),modal_title:zd("Change chat status"),placeholder_status_message:zd("Personal status message")}),Za(BS(),e.modal_title,mf,"online"===e.status,e.label_online,"busy"===e.status,e.label_busy,"away"===e.status,e.label_away,"xa"===e.status,e.label_xa,e.status_message||"",e.placeholder_status_message,e.status_message?"":"hidden",e.label_save);var e},afterRender(){this.el.addEventListener("shown.bs.modal",()=>{this.el.querySelector('input[name="status_message"]').focus()},!1)},clearStatusMessage(e){e&&e.preventDefault&&(e.preventDefault(),qS.hideElement(this.el.querySelector(".clear-input"))),this.el.querySelector('input[name="status_message"]').value=""},onFormSubmitted(e){e.preventDefault();const t=new FormData(e.target);this.model.save({status_message:t.get("status_message"),status:t.get("chat_status")}),this.modal.hide()}});Uc.ChatStatusModal=HS;function US(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <a class="change-avatar" @click=',' title="','">\n ',"\n </a>\n <input @change=",' class="hidden" name="image" type="file"/>\n ']);return US=function(){return e},e}const $S=zd("Your avatar image");function WS(){const e=ZS(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="user-profile-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n <span class="modal-alert"></span>\n ','\n <div class="tab-content">\n <div class="tab-pane active" id="profile-tabpanel" role="tabpanel" aria-labelledby="profile-tab">\n <form class="converse-form converse-form--modal profile-form" action="#">\n <div class="row">\n <div class="col-auto">\n <converse-image-picker image="','" width="','" height="','"></converse-image-picker>\n </div>\n <div class="col">\n <div class="form-group">\n <label class="col-form-label">',":</label>\n <div>",'</div>\n </div>\n </div>\n </div>\n <div class="form-group">\n <label for="vcard-fullname" class="col-form-label">',':</label>\n <input id="vcard-fullname" type="text" class="form-control" name="fn" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-nickname" class="col-form-label">',':</label>\n <input id="vcard-nickname" type="text" class="form-control" name="nickname" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-url" class="col-form-label">',':</label>\n <input id="vcard-url" type="url" class="form-control" name="url" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-email" class="col-form-label">',':</label>\n <input id="vcard-email" type="email" class="form-control" name="email" value="','"/>\n </div>\n <div class="form-group">\n <label for="vcard-role" class="col-form-label">',':</label>\n <input id="vcard-role" type="text" class="form-control" name="role" value="','" aria-describedby="vcard-role-help"/>\n <small id="vcard-role-help" class="form-text text-muted">','</small>\n </div>\n <hr/>\n <div class="form-group">\n <button type="submit" class="save-form btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n ","\n </div>\n </div>\n </div>\n </div>\n "]);return WS=function(){return e},e}function GS(){const e=ZS(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="profile-tab" href="#profile-tabpanel" aria-controls="profile-tabpanel" role="tab" data-toggle="tab">','</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="omemo-tab" href="#omemo-tabpanel" aria-controls="omemo-tabpanel" role="tab" data-toggle="tab">',"</a>\n </li>\n </ul>"]);return GS=function(){return e},e}function VS(){const e=ZS(['\n <div class="tab-pane" id="omemo-tabpanel" role="tabpanel" aria-labelledby="omemo-tab">\n <form class="converse-form fingerprint-removal">\n <ul class="list-group fingerprints">\n <li class="list-group-item active">','</li>\n <li class="list-group-item">\n ','\n </li>\n </ul>\n <div class="form-group">\n <button type="button" class="generate-bundle btn btn-danger">',"</button>\n </div>\n ","\n </form>\n </div>"]);return VS=function(){return e},e}function JS(){const e=ZS(['\n <ul class="list-group fingerprints">\n <li class="list-group-item nopadding active">\n <label>\n <input type="checkbox" class="select-all" title="','" aria-label="','"/>\n ',"\n </label>\n </li>\n ",'\n </ul>\n <div class="form-group"><button type="submit" class="save-form btn btn-primary">',"</button></div>\n "]);return JS=function(){return e},e}function XS(){const e=ZS(["\n ","\n"]);return XS=function(){return e},e}function QS(){const e=ZS(['\n <li class="fingerprint-removal-item list-group-item nopadding">\n <label>\n <input type="checkbox" value="','"\n aria-label="','"/>\n <span>',"</span>\n </label>\n </li>\n "]);return QS=function(){return e},e}function YS(){const e=ZS(['\n <li class="fingerprint-removal-item list-group-item nopadding">\n <label>\n <input type="checkbox" value="','"\n aria-label="','"/>\n <span class="fingerprint">',"</span>\n </label>\n </li>\n "]);return YS=function(){return e},e}function KS(){const e=ZS(['\n <span class="fingerprint">',"</span>"]);return KS=function(){return e},e}function ZS(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-image-picker",class extends mc{static get properties(){return{height:{type:Number},image:{type:String},width:{type:Number}}}render(){const e={height:this.height,image:this.image,width:this.width};return Za(US(),this.openFileSelection,$S,op(e),this.updateFilePreview)}openFileSelection(e){e.preventDefault(),this.querySelector('input[type="file"]').click()}updateFilePreview(e){const t=e.target.files[0],n=new FileReader;n.onloadend=()=>this.image=n.result,n.readAsDataURL(t)}});const ex=rl.env.utils,tx=e=>Za(XS(),e.device.get("bundle")&&e.device.get("bundle").fingerprint?(e=>{const t=zd("Checkbox for selecting the following fingerprint");return Za(YS(),e.device.get("id"),t,ex.formatFingerprint(e.device.get("bundle").fingerprint))})(e):(e=>{const t=zd("Device without a fingerprint"),n=zd("Checkbox for selecting the following device");return Za(QS(),e.device.get("id"),n,t)})(e)),nx=e=>{const t=zd("This device's OMEMO fingerprint"),n=zd("Generate new keys and fingerprint");return Za(VS(),t,e.view.current_device&&e.view.current_device.get("bundle")&&e.view.current_device.get("bundle").fingerprint?(e=>Za(KS(),ex.formatFingerprint(e.view.current_device.get("bundle").fingerprint)))(e):fp(),n,e.view.other_devices.length?(e=>{const t=zd("Other OMEMO-enabled devices"),n=zd("Checkbox to select fingerprints of all other OMEMO devices"),r=zd("Remove checked devices and close"),i=zd("Select all");return Za(JS(),i,n,t,e.view.other_devices.map(t=>tx(Object.assign({device:t},e))),r)})(e):"")};const rx=df.extend({id:"user-profile-modal",events:{"submit .profile-form":"onFormSubmitted"},initialize(){this.listenTo(this.model,"change",this.render),df.prototype.initialize.apply(this,arguments),Vc.trigger("profileModalInitialized",this.model)},toHTML(){return(e=>{const t=zd("Your Profile"),n=zd("Email"),r=zd("Full Name"),i=zd("XMPP Address (JID)"),o=zd("Nickname"),s=zd("Role"),a=zd("Save and close"),c=zd("Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages."),l=zd("URL"),u=zd("OMEMO"),d=zd("Profile"),h=Za(GS(),d,u);return Za(WS(),t,mf,Uc.pluggable.plugins["converse-omemo"].enabled(Uc)&&h||"",e.image,e.width,e.height,i,e.jid,r,e.fullname||"",o,e.nickname||"",l,e.url||"",n,e.email||"",s,e.role||"",c,a,Uc.pluggable.plugins["converse-omemo"].enabled(Uc)&&nx(e)||"")})(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),this.getAvatarData(),{view:this}))},getAvatarData(){return{height:128,width:128,image:"data:"+this.model.vcard.get("image_type")+";base64,"+this.model.vcard.get("image")}},afterRender(){this.tabs=mr()(".nav-item .nav-link",this.el).map(e=>new af.a.Tab(e))},async setVCard(e){try{await Vc.vcard.set(Uc.bare_jid,e)}catch(e){return zn.fatal(e),void this.alert([zd("Sorry, an error happened while trying to save your profile data."),zd("You can check your browser's developer console for any error output.")].join(" "))}this.modal.hide()},onFormSubmitted(e){e.preventDefault();const t=new FileReader,n=new FormData(e.target),r=n.get("image"),i={fn:n.get("fn"),nickname:n.get("nickname"),role:n.get("role"),email:n.get("email"),url:n.get("url")};r.size?(t.onloadend=()=>{Object.assign(i,{image:btoa(t.result),image_type:r.type}),this.setVCard(i)},t.readAsBinaryString(r)):(Object.assign(i,{image:this.model.vcard.get("image"),image_type:this.model.vcard.get("image_type")}),this.setVCard(i))}});Uc.ProfileModal=rx;function ix(){const e=ux(['\n <fieldset class="form-group">\n <ul class="list-group">\n <li class="list-group-item active">',":</li>\n ","\n </ul>\n </fieldset>"]);return ix=function(){return e},e}function ox(){const e=ux(['<div class="alert alert-','" role="alert">',"</div>"]);return ox=function(){return e},e}function sx(){const e=ux(["\n ",'\n <form class="converse-form" @submit=','>\n <fieldset class="form-group">\n <label>\n ','\n <p class="form-help">','</p>\n <converse-autocomplete\n .getAutoCompleteList="','"\n placeholder="','"\n name="jid"/>\n </label>\n </fieldset>\n <fieldset class="form-group">\n <input type="submit" class="btn btn-primary" value="','">\n </fieldset>\n ',"\n\n </form>\n "]);return sx=function(){return e},e}function ax(){const e=ux(['\n <li class="room-item list-group-item">\n <div class="available-chatroom d-flex flex-row">\n <a class="open-room available-room w-100"\n @click=','\n data-command-node="','"\n data-command-jid="','"\n data-command-name="','"\n title="','"\n href="#">',"</a>\n </div>\n ","\n </li>\n"]);return ax=function(){return e},e}function cx(){const e=ux(['<div class="alert alert-','" role="alert">',"</div>"]);return cx=function(){return e},e}function lx(){const e=ux(["\n <form @submit=",">\n ",'\n <fieldset class="form-group">\n <input type="hidden" name="command_node" value="','"/>\n <input type="hidden" name="command_jid" value="','"/>\n\n <p class="form-help">',"</p>\n \x3c!-- Fields are generated internally, with xForm2webForm --\x3e\n ",'\n </fieldset>\n <fieldset>\n <input type="submit" class="btn btn-primary" value="','">\n <input type="button" class="btn btn-secondary button-cancel" value="','" @click=',">\n </fieldset>\n </form>\n "]);return lx=function(){return e},e}function ux(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const{Strophe:dx,$iq:hx}=rl.env,fx=rl.env.utils,px=(e,t)=>Za(ax(),e.toggleCommandForm,t.node,t.jid,t.name,t.name,t.name||t.jid,t.node===e.showform?((e,t)=>{const n=zd("Hide"),r=zd("Execute");return Za(lx(),e.runCommand,t.alert?Za(cx(),t.alert_type,t.alert):"",t.node,t.jid,t.instructions,t.fields.map(e=>Kp(e)),r,n,e.hideCommandForm)})(e,t):"");async function gx(){const e=[...await Vc.rooms.get(),...await Vc.contacts.get()];return[...new Set(e.map(e=>dx.getDomainFromJid(e.get("jid"))))]}function mx(){const e=_x(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="converse-modtools-modal-label">',"</h5>\n ",'\n </div>\n <div class="modal-body">\n ','\n\n <div class="tab-content">\n <div class="tab-pane tab-pane--columns ','"\n id="about-tabpanel" role="tabpanel" aria-labelledby="about-tab">\n\n <span class="modal-alert"></span>\n <br/>\n <div class="container">\n <h6 class="brand-heading">Converse</h6>\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle">','</p>\n <p class="brand-subtitle">','</p>\n </div>\n </div>\n\n <div class="tab-pane tab-pane--columns ','"\n id="commands-tabpanel"\n role="tabpanel"\n aria-labelledby="commands-tab">\n <converse-adhoc-commands/>\n </div>\n </div>\n </div>\n </div>\n </div>\n']);return mx=function(){return e},e}function vx(){const e=_x(['\n <ul class="nav nav-pills justify-content-center">\n <li role="presentation" class="nav-item">\n <a class="nav-link active" id="about-tab" href="#about-tabpanel" aria-controls="about-tabpanel" role="tab" data-toggle="tab" @click=',">",'</a>\n </li>\n <li role="presentation" class="nav-item">\n <a class="nav-link" id="commands-tab" href="#commands-tabpanel" aria-controls="commands-tabpanel" role="tab" data-toggle="tab" @click=',">","</a>\n </li>\n </ul>\n "]);return vx=function(){return e},e}function _x(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Vc.elements.define("converse-adhoc-commands",class extends mc{static get properties(){return{alert:{type:String},alert_type:{type:String},nonce:{type:String},showform:{type:String},view:{type:String}}}constructor(){super(),this.view="choose-service",this.showform="",this.commands=[]}render(){return(e=>{const t=zd("On which entity do you want to run commands?"),n=zd("Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them."),r=zd("Commands found"),i=zd("List available commands"),o=zd("XMPP Address"),s=zd("No commands found");return Za(sx(),e.alert?Za(ox(),e.alert_type,e.alert):"",e.fetchCommands,t,n,gx,o,i,"list-commands"===e.view?Za(ix(),e.commands.length?r:s,e.commands.map(t=>px(e,t))):"")})({alert:this.alert,alert_type:this.alert_type,commands:this.commands,fetchCommands:e=>this.fetchCommands(e),hideCommandForm:e=>this.hideCommandForm(e),runCommand:e=>this.runCommand(e),showform:this.showform,toggleCommandForm:e=>this.toggleCommandForm(e),view:this.view})}async fetchCommands(e){e.preventDefault(),delete this.alert_type,delete this.alert;const t=new FormData(e.target).get("jid").trim();let n;try{n=await Vc.disco.supports(dx.NS.ADHOC,t)}catch(e){zn.error(e)}if(n)try{this.commands=await Vc.adhoc.getCommands(t),this.view="list-commands"}catch(e){return zn.error(e),this.alert_type="danger",this.alert=zd("Sorry, an error occurred while looking for commands on that entity."),this.commands=[],void zn.error(e)}else this.alert_type="danger",this.alert=zd("The specified entity doesn't support ad-hoc commands")}async toggleCommandForm(e){e.preventDefault();const t=e.target.getAttribute("data-command-node"),n=this.commands.filter(e=>e.node===t)[0];this.showform!==t&&await async function(e){const t=e.node,n=e.jid,r=hx({type:"set",to:n}).c("command",{xmlns:dx.NS.ADHOC,node:t,action:"execute"});try{var i;const t=await Vc.sendIQ(r),n=mr()('command[xmlns="'.concat(dx.NS.ADHOC,'"]'),t).pop();e.sessionid=n.getAttribute("sessionid"),e.instructions=null===(i=mr()('x[type="form"][xmlns="jabber:x:data"] instructions',n).pop())||void 0===i?void 0:i.textContent,e.fields=mr()('x[type="form"][xmlns="jabber:x:data"] field',n).map(e=>fx.xForm2webForm(e,n))}catch(t){null===t?zn.error("Error: timeout while trying to execute command for ".concat(n)):(zn.error("Error while trying to execute command for ".concat(n)),zn.error(t)),e.fields=[]}}(n),this.showform=t}hideCommandForm(e){e.preventDefault(),this.showform=""}async runCommand(e){e.preventDefault();const t=new FormData(e.target),n=t.get("command_jid").trim(),r=t.get("command_node").trim(),i=this.commands.filter(e=>e.node===r)[0],o=mr()(":input:not([type=button]):not([type=submit])",e.target).filter(e=>!["command_jid","command_node"].includes(e.getAttribute("name"))).map(fx.webForm2xForm).filter(e=>e),s=hx({to:n,type:"set"}).c("command",{sessionid:i.sessionid,node:i.node,xmlns:dx.NS.ADHOC}).c("x",{xmlns:dx.NS.XFORM,type:"submit"});let a;o.forEach(e=>s.cnode(e).up());try{a=await Vc.sendIQ(s)}catch(e){i.alert_type="danger",i.alert=zd("Sorry, an error occurred while trying to execute the command. See the developer console for details"),zn.error("Error while trying to execute an ad-hoc command"),zn.error(e)}var c;a?i.alert=null===(c=a.querySelector("note"))||void 0===c?void 0:c.textContent:i.alert="Done";i.alert_type="primary",this.nonce=fx.getUniqueId()}});var bx=e=>{const t=zd("Settings"),n=zd("%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s",'<a target="_blank" rel="nofollow" href="https://conversejs.org">',"</a>",'<a target="_blank" rel="nofollow" href="https://opkode.com">'),r=zd("%1$s Translate %2$s it into your own language",'<a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">',"</a>"),i=Vc.settings.get("show_client_info"),o=Vc.settings.get("allow_adhoc_commands"),s=i&&o;return Za(mx(),t,mf,s?(e=>{const t=zd("About"),n=zd("Commands");return Za(vx(),e.switchTab,t,e.switchTab,n)})(e):"",i?"active":"",e.version_name,Kp(Qp.a.filterXSS(n,{whiteList:{a:[]}})),Kp(Qp.a.filterXSS(r,{whiteList:{a:[]}})),!i&&o?"active":"")};let yx;var wx=df.extend({id:"converse-client-info-modal",initialize(e){yx=e._converse,df.prototype.initialize.apply(this,arguments)},toHTML(){return bx(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{version_name:yx.VERSION_NAME}))}});function Sx(){const e=Ax(['<a class="controlbox-heading__btn logout fa fa-sign-out-alt align-self-center" title="','"></a>']);return Sx=function(){return e},e}function xx(){const e=Ax(['<a class="controlbox-heading__btn show-client-info fa fa-cog align-self-center" title="','" @click=',"></a>"]);return xx=function(){return e},e}function Ex(){const e=Ax(['\n <div class="userinfo controlbox-padded">\n <div class="controlbox-section profile d-flex">\n <a class="show-profile" href="#">\n <canvas class="avatar align-self-center" height="40" width="40"></canvas>\n </a>\n <span class="username w-100 align-self-center">',"</span>\n ","\n ",'\n </div>\n <div class="d-flex xmpp-status">\n <a class="change-status" title="','" data-toggle="modal" data-target="#changeStatusModal">\n <span class="',' w-100 align-self-center" data-value="','">\n <span class="\n ',"\n ","\n ","\n ","\n ",'"></span> ',"</span>\n </a>\n </div>\n </div>\n"]);return Ex=function(){return e},e}function Ax(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** * @module converse-profile * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const Bw=Yc.env.utils;Yc.plugins.add("converse-profile",{dependencies:["converse-status","converse-modal","converse-vcard","converse-chatboxviews"],initialize(){qc.settings.extend({allow_adhoc_commands:!0,show_client_info:!0}),Lc.ProfileModal=Kd.extend({id:"user-profile-modal",events:{"submit .profile-form":"onFormSubmitted"},initialize(){this.listenTo(this.model,"change",this.render),Kd.prototype.initialize.apply(this,arguments),qc.trigger("profileModalInitialized",this.model)},toHTML(){return(e=>{const t=dd("Your Profile"),n=dd("Email"),r=dd("Full Name"),i=dd("XMPP Address (JID)"),s=dd("Nickname"),o=dd("Role"),a=dd("Save and close"),c=dd("Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages."),l=dd("URL"),u=dd("OMEMO"),d=dd("Profile"),h=Ga(Ow(),d,u);return Ga(Tw(),t,Bd,Lc.pluggable.plugins["converse-omemo"].enabled(Lc)&&h,e.image,e.width,e.height,i,e.jid,r,e.fullname||"",s,e.nickname||"",l,e.url||"",n,e.email||"",o,e.role||"",c,a,Lc.pluggable.plugins["converse-omemo"].enabled(Lc)&&Fw(e))})(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),this.getAvatarData(),{view:this}))},getAvatarData(){return{height:128,width:128,image:"data:"+this.model.vcard.get("image_type")+";base64,"+this.model.vcard.get("image")}},afterRender(){this.tabs=ur()(".nav-item .nav-link",this.el).map(e=>new Rd.a.Tab(e))},async setVCard(e){try{await qc.vcard.set(Lc.bare_jid,e)}catch(e){return Pn.fatal(e),void this.alert([dd("Sorry, an error happened while trying to save your profile data."),dd("You can check your browser's developer console for any error output.")].join(" "))}this.modal.hide()},onFormSubmitted(e){e.preventDefault();const t=new FileReader,n=new FormData(e.target),r=n.get("image"),i={fn:n.get("fn"),nickname:n.get("nickname"),role:n.get("role"),email:n.get("email"),url:n.get("url")};r.size?(t.onloadend=()=>{Object.assign(i,{image:btoa(t.result),image_type:r.type}),this.setVCard(i)},t.readAsBinaryString(r)):(Object.assign(i,{image:this.model.vcard.get("image"),image_type:this.model.vcard.get("image_type")}),this.setVCard(i))}}),Lc.ChatStatusModal=Kd.extend({id:"modal-status-change",events:{"submit form#set-xmpp-status":"onFormSubmitted","click .clear-input":"clearStatusMessage"},toHTML(){return e=Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{label_away:dd("Away"),label_busy:dd("Busy"),label_cancel:dd("Cancel"),label_close:dd("Close"),label_custom_status:dd("Custom status"),label_offline:dd("Offline"),label_online:dd("Online"),label_save:dd("Save"),label_xa:dd("Away for long"),modal_title:dd("Change chat status"),placeholder_status_message:dd("Personal status message")}),Ga(ww(),e.modal_title,Bd,"online"===e.status,e.label_online,"busy"===e.status,e.label_busy,"away"===e.status,e.label_away,"xa"===e.status,e.label_xa,e.status_message||"",e.placeholder_status_message,e.status_message?"":"hidden",e.label_save);var e},afterRender(){this.el.addEventListener("shown.bs.modal",()=>{this.el.querySelector('input[name="status_message"]').focus()},!1)},clearStatusMessage(e){e&&e.preventDefault&&(e.preventDefault(),Bw.hideElement(this.el.querySelector(".clear-input"))),this.el.querySelector('input[name="status_message"]').value=""},onFormSubmitted(e){e.preventDefault();const t=new FormData(e.target);this.model.save({status_message:t.get("status_message"),status:t.get("chat_status")}),this.modal.hide()}}),Lc.XMPPStatusView=Lc.ViewWithAvatar.extend({tagName:"div",events:{"click a.show-profile":"showProfileModal","click a.change-status":"showStatusChangeModal","click .logout":"logOut"},initialize(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model.vcard,"change",this.render)},toHTML(){const e=this.model.get("status")||"offline";return(e=>{const t=dd("Log out"),n=dd("Click to change your chat status"),r=dd("Show details about this chat client"),i=qc.settings.get("show_client_info")||qc.settings.get("allow_adhoc_commands");return Ga(Ew(),e.fullname,i?Ga(xw(),r,e.showUserSettingsModal):"",qc.settings.get("allow_logout")?Ga(Sw(),t):"",n,e.chat_status,e.chat_status,"online"===e.chat_status&&"fa fa-circle chat-status chat-status--online","dnd"===e.chat_status&&"fa fa-minus-circle chat-status chat-status--busy","away"===e.chat_status&&"fa fa-circle chat-status chat-status--away","xa"===e.chat_status&&"far fa-circle chat-status chat-status--xa ","offline"===e.chat_status&&"fa fa-circle chat-status chat-status--offline",e.status_message)})(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{chat_status:e,fullname:this.model.vcard.get("fullname")||Lc.bare_jid,showUserSettingsModal:e=>this.showUserSettingsModal(e),status_message:this.model.get("status_message")||dd("I am %1$s",this.getPrettyStatus(e))}))},afterRender(){this.renderAvatar()},showProfileModal(e){e.preventDefault(),void 0===this.profile_modal&&(this.profile_modal=new Lc.ProfileModal({model:this.model})),this.profile_modal.show(e)},showStatusChangeModal(e){e.preventDefault(),void 0===this.status_modal&&(this.status_modal=new Lc.ChatStatusModal({model:this.model})),this.status_modal.show(e)},showUserSettingsModal(e){e.preventDefault(),void 0===this.user_settings_modal&&(this.user_settings_modal=new yw({model:this.model,_converse:Lc})),this.user_settings_modal.show(e)},logOut(e){e.preventDefault(),!0===confirm(dd("Are you sure you want to log out?"))&&qc.user.logout()},getPrettyStatus:e=>"chat"===e?dd("online"):"dnd"===e?dd("busy"):"xa"===e?dd("away for long"):"away"===e?dd("away"):"offline"===e?dd("offline"):dd(e)||dd("online")}),qc.listen.on("controlBoxPaneInitialized",async e=>{await qc.waitUntil("VCardsInitialized"),Lc.xmppstatusview=new Lc.XMPPStatusView({model:Lc.xmppstatus}),e.el.insertAdjacentElement("afterBegin",Lc.xmppstatusview.render().el)})}});var qw=function(){var e=arguments.length;if(!e)return[];for(var t=Array(e-1),n=arguments[0],r=e;r--;)t[r-1]=arguments[r];return dt(ke(n)?it(n):[n],Cs(t,1))},Hw=Math.ceil,Uw=Math.max;var $w=function(e,t,n,r){for(var i=-1,s=Uw(Hw((t-e)/(n||1)),0),o=Array(s);s--;)o[r?s:++i]=e,e+=n;return o};var Ww=function(e){return function(t,n,r){return r&&"number"!=typeof r&&Sr(t,n,r)&&(n=r=void 0),t=oi(t),void 0===n?(n=t,t=0):n=oi(n),r=void 0===r?t<n?1:-1:oi(r),$w(t,n,r,e)}}();function Vw(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} +rl.plugins.add("converse-profile",{dependencies:["converse-status","converse-modal","converse-vcard","converse-chatboxviews"],initialize(){Vc.settings.extend({allow_adhoc_commands:!0,show_client_info:!0}),Uc.XMPPStatusView=Uc.ViewWithAvatar.extend({tagName:"div",events:{"click a.show-profile":"showProfileModal","click a.change-status":"showStatusChangeModal","click .logout":"logOut"},initialize(){this.listenTo(this.model,"change",this.render),this.listenTo(this.model.vcard,"change",this.render)},toHTML(){const e=this.model.get("status")||"offline";return(e=>{const t=zd("Log out"),n=zd("Click to change your chat status"),r=zd("Show details about this chat client"),i=Vc.settings.get("show_client_info")||Vc.settings.get("allow_adhoc_commands");return Za(Ex(),e.fullname,i?Za(xx(),r,e.showUserSettingsModal):"",Vc.settings.get("allow_logout")?Za(Sx(),t):"",n,e.chat_status,e.chat_status,"online"===e.chat_status&&"fa fa-circle chat-status chat-status--online","dnd"===e.chat_status&&"fa fa-minus-circle chat-status chat-status--busy","away"===e.chat_status&&"fa fa-circle chat-status chat-status--away","xa"===e.chat_status&&"far fa-circle chat-status chat-status--xa ","offline"===e.chat_status&&"fa fa-circle chat-status chat-status--offline",e.status_message)})(Object.assign(this.model.toJSON(),this.model.vcard.toJSON(),{chat_status:e,fullname:this.model.vcard.get("fullname")||Uc.bare_jid,showUserSettingsModal:e=>this.showUserSettingsModal(e),status_message:this.model.get("status_message")||zd("I am %1$s",this.getPrettyStatus(e))}))},afterRender(){this.renderAvatar()},showProfileModal(e){e.preventDefault(),Vc.modal.show(Uc.ProfileModal,{model:this.model},e)},showStatusChangeModal(e){e.preventDefault(),Vc.modal.show(Uc.ChatStatusModal,{model:this.model},e)},showUserSettingsModal(e){e.preventDefault(),Vc.modal.show(wx,{model:this.model,_converse:Uc},e)},logOut(e){e.preventDefault(),!0===confirm(zd("Are you sure you want to log out?"))&&Vc.user.logout()},getPrettyStatus:e=>"chat"===e?zd("online"):"dnd"===e?zd("busy"):"xa"===e?zd("away for long"):"away"===e?zd("away"):"offline"===e?zd("offline"):zd(e)||zd("online")}),Vc.listen.on("controlBoxPaneInitialized",async e=>{await Vc.waitUntil("VCardsInitialized"),Uc.xmppstatusview=new Uc.XMPPStatusView({model:Uc.xmppstatus}),e.el.insertAdjacentElement("afterBegin",Uc.xmppstatusview.render().el)})}});var Cx=function(){var e=arguments.length;if(!e)return[];for(var t=Array(e-1),n=arguments[0],r=e;r--;)t[r-1]=arguments[r];return dt(ke(n)?it(n):[n],Mo(t,1))},jx=Math.ceil,Tx=Math.max;var Ox=function(e,t,n,r){for(var i=-1,o=Tx(jx((t-e)/(n||1)),0),s=Array(o);o--;)s[r?o:++i]=e,e+=n;return s};var kx=function(e){return function(t,n,r){return r&&"number"!=typeof r&&Tr(t,n,r)&&(n=r=void 0),t=hi(t),void 0===n?(n=t,t=0):n=hi(n),r=void 0===r?t<n?1:-1:hi(r),Ox(t,n,r,e)}}();function Nx(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))} /** * @module converse-omemo * @copyright The Converse.js contributors * @license Mozilla Public License (MPLv2) - */(['\n <button class="toggle-omemo"\n title="','"\n ?disabled=',"\n @click=",'>\n <converse-icon class="fa ','"\n path-prefix="','" size="1em"\n color="','"\n ></converse-icon>\n </button>']);return Vw=function(){return e},e}const{Strophe:Gw,sizzle:Jw,$build:Xw,$iq:Qw,$msg:Yw}=Yc.env,Kw=Yc.env.utils;Gw.addNamespace("OMEMO_DEVICELIST",Gw.NS.OMEMO+".devicelist"),Gw.addNamespace("OMEMO_VERIFICATION",Gw.NS.OMEMO+".verification"),Gw.addNamespace("OMEMO_WHITELISTED",Gw.NS.OMEMO+".whitelisted"),Gw.addNamespace("OMEMO_BUNDLES",Gw.NS.OMEMO+".bundles");const Zw={name:"AES-GCM",length:128};class eS extends Error{constructor(e,t){super(e,t),this.name="IQError",this.iq=t}}const tS=Yc.env.omemo={async encryptMessage(e){const t=crypto.getRandomValues(new window.Uint8Array(12)),n=await crypto.subtle.generateKey(Zw,!0,["encrypt","decrypt"]),r={name:"AES-GCM",iv:t,tagLength:128},i=await crypto.subtle.encrypt(r,n,Kw.stringToArrayBuffer(e)),s=i.byteLength-16,o=i.slice(0,s),a=i.slice(s),c=await crypto.subtle.exportKey("raw",n);return{key:c,tag:a,key_and_tag:Kw.appendArrayBuffer(c,a),payload:Kw.arrayBufferToBase64(o),iv:Kw.arrayBufferToBase64(t)}},async decryptMessage(e){const t=await crypto.subtle.importKey("raw",e.key,Zw,!0,["encrypt","decrypt"]),n=Kw.appendArrayBuffer(Kw.base64ToArrayBuffer(e.payload),e.tag),r={name:"AES-GCM",iv:Kw.base64ToArrayBuffer(e.iv),tagLength:128};return Kw.arrayBufferToString(await crypto.subtle.decrypt(r,t,n))}};function nS(e,t){const n=new libsignal.SignalProtocolAddress(e,t);return new window.libsignal.SessionCipher(Lc.omemo_store,n)}async function rS(e,t){const n=e.encrypted,r=Lc.devicelists.getDeviceList(e.from);await r._devices_promise;let i=r.get(n.device_id);if(i||(i=await r.devices.create({id:n.device_id,jid:e.from},{promise:!0})),n.payload){const e=t.slice(0,16),r=t.slice(16),s=await tS.decryptMessage(Object.assign(n,{key:e,tag:r}));return i.save("active",!0),s}}function iS(e){return"debug"===qc.settings.get("loglevel")?{error_text:dd("Sorry, could not decrypt a received OMEMO message due to an error.")+" ".concat(e.name," ").concat(e.message),error_type:"Decryption",is_ephemeral:!0,is_error:!0,type:"error"}:{}}function sS(e){const t=e.querySelector("signedPreKeyPublic"),n=e.querySelector("signedPreKeySignature"),r=Jw("prekeys > preKeyPublic",e).map(e=>({id:parseInt(e.getAttribute("preKeyId"),10),key:e.textContent}));return{identity_key:e.querySelector("identityKey").textContent.trim(),signed_prekey:{id:parseInt(t.getAttribute("signedPreKeyId"),10),public_key:t.textContent,signature:n.textContent},prekeys:r}}async function oS(e){var t;if(null===(t=e.get("bundle"))||void 0===t?void 0:t.fingerprint)return;const n=await e.getBundle();n.fingerprint=Kw.arrayBufferToHex(Kw.base64ToArrayBuffer(n.identity_key)),e.save("bundle",n),e.trigger("change:bundle")}async function aS(e){await qc.waitUntil("OMEMOInitialized");const t=Lc.devicelists.get(e)||Lc.devicelists.create({jid:e});return await t.fetchDevices(),t.devices}async function cS(e){if(!e.get("bundle"))return Pn.error("Could not build an OMEMO session for device ".concat(e.get("id")," because we don't have its bundle")),null;const t=new libsignal.SignalProtocolAddress(e.get("jid"),e.get("id")),n=await Lc.omemo_store.loadSession(t.toString());if(n)return n;try{return await async function(e){const t=new libsignal.SignalProtocolAddress(e.get("jid"),e.get("id")),n=new libsignal.SessionBuilder(Lc.omemo_store,t),r=e.getRandomPreKey(),i=await e.getBundle();return n.processPreKey({registrationId:parseInt(e.get("id"),10),identityKey:Kw.base64ToArrayBuffer(i.identity_key),signedPreKey:{keyId:i.signed_prekey.id,publicKey:Kw.base64ToArrayBuffer(i.signed_prekey.public_key),signature:Kw.base64ToArrayBuffer(i.signed_prekey.signature)},preKey:{keyId:r.id,publicKey:Kw.base64ToArrayBuffer(r.key)}})}(e)}catch(t){return Pn.error("Could not build an OMEMO session for device ".concat(e.get("id"))),Pn.error(t),null}}function lS(){Lc.connection.addHandler(e=>{try{Jw('event[xmlns="'.concat(Gw.NS.PUBSUB,'#event"]'),e).length&&(function(e){const t=Jw('items[node="'.concat(Gw.NS.OMEMO_DEVICELIST,'"]'),e).pop();if(!t)return;const n='item list[xmlns="'.concat(Gw.NS.OMEMO,'"] device'),r=Jw(n,t).map(e=>e.getAttribute("id")),i=e.getAttribute("from"),s=Lc.devicelists.getDeviceList(i),o=s.devices;Eo(o.pluck("id"),r).forEach(e=>{i===Lc.bare_jid&&e===Lc.omemo_store.get("device_id")||o.get(e).save("active",!1)}),r.forEach(e=>{const t=o.get(e);t?t.save("active",!0):o.create({id:e,jid:i})}),Kw.isSameBareJID(i,Lc.bare_jid)&&s.publishCurrentDevice(r)}(e),function(e){const t=Jw("items",e).pop();if(!t||!t.getAttribute("node").startsWith(Gw.NS.OMEMO_BUNDLES))return;const n=t.getAttribute("node").split(":")[1],r=e.getAttribute("from"),i=Jw("item > bundle",t).pop(),s=Lc.devicelists.getDeviceList(r);(s.devices.get(n)||s.devices.create({id:n,jid:r})).save({bundle:sS(i)})}(e))}catch(e){Pn.error(e.message)}return!0},null,"message","headline")}function uS(){if(void 0===Lc.omemo_store){const e="converse.omemosession-".concat(Lc.bare_jid);Lc.omemo_store=new Lc.OMEMOStore({id:e}),Lc.omemo_store.browserStorage=Lc.createStore(e)}return Lc.omemo_store.fetchSession()}async function dS(){await new Promise((e,t)=>Lc.devicelists.fetch({success:e,error:(e,n)=>t(n)}));let e=Lc.devicelists.get(Lc.bare_jid);return e?e.fetchDevices():e=await Lc.devicelists.create({jid:Lc.bare_jid},{promise:!0}),e._devices_promise}async function hS(){if(!Lc.config.get("trusted"))return;Lc.devicelists=new Lc.DeviceLists;const e="converse.devicelists-".concat(Lc.bare_jid);Lc.devicelists.browserStorage=Lc.createStore(e);try{await dS(),await uS(),await Lc.omemo_store.publishBundle()}catch(e){return Pn.error("Could not initialize OMEMO support"),void Pn.error(e)}qc.trigger("OMEMOInitialized")}async function fS(e){let t;e.get("type")===Lc.CHATROOMS_TYPE?(await qc.waitUntil("OMEMOInitialized"),t=e.features.get("nonanonymous")&&e.features.get("membersonly")):e.get("type")===Lc.PRIVATE_CHAT_TYPE&&(t=await Lc.contactHasOMEMOSupport(e.get("jid"))),e.set("omemo_supported",t),t&&qc.settings.get("omemo_default")&&e.set("omemo_active",!0)}function pS(e){e.stopPropagation(),e.preventDefault();const t=Kw.ancestor(e.target,"converse-chat-toolbar");if(!t.model.get("omemo_supported")){let e;return e=t.model.get("type")===Lc.CHATROOMS_TYPE?[dd("Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.")]:[dd("Cannot use end-to-end encryption because %1$s uses a client that doesn't support OMEMO.",t.model.contact.getDisplayName())],qc.alert("error",dd("Error"),e)}t.model.save({omemo_active:!t.model.get("omemo_active")})}function gS(e,t){const n=e.model;let r;if(n.get("type")===Lc.CHATROOMS_TYPE&&n.get("omemo_supported")){const e=dd("Messages are being sent in plaintext"),t=dd("Messages are sent encrypted");r=n.get("omemo_active")?t:e}else r=dd("This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages");return t.push(Ga(Vw(),r,!n.get("omemo_supported"),pS,n.get("omemo_active")?"fa-lock":"fa-unlock",qc.settings.get("assets_path"),n.get("omemo_active")?"var(--info-color)":"var(--error-color)")),t}Yc.plugins.add("converse-omemo",{enabled:e=>window.libsignal&&!e.api.settings.get("blacklisted_plugins").includes("converse-omemo")&&e.config.get("trusted"),dependencies:["converse-chatview","converse-pubsub","converse-profile"],overrides:{ProfileModal:{events:{"change input.select-all":"selectAll","click .generate-bundle":"generateOMEMODeviceBundle","submit .fingerprint-removal":"removeSelectedFingerprints"},initialize(){return this.debouncedRender=Tc(this.render,50),this.devicelist=Lc.devicelists.get(Lc.bare_jid),this.listenTo(this.devicelist.devices,"change:bundle",this.debouncedRender),this.listenTo(this.devicelist.devices,"reset",this.debouncedRender),this.listenTo(this.devicelist.devices,"reset",this.debouncedRender),this.listenTo(this.devicelist.devices,"remove",this.debouncedRender),this.listenTo(this.devicelist.devices,"add",this.debouncedRender),this.__super__.initialize.apply(this,arguments)},beforeRender(){const e=Lc.omemo_store.get("device_id");if(e&&(this.current_device=this.devicelist.devices.get(e)),this.other_devices=this.devicelist.devices.filter(t=>t.get("id")!==e),this.__super__.beforeRender)return this.__super__.beforeRender.apply(this,arguments)},selectAll(e){let t=Kw.ancestor(e.target,"li");for(;t;)t.querySelector('input[type="checkbox"]').checked=e.target.checked,t=t.nextElementSibling},removeSelectedFingerprints(e){e.preventDefault(),e.stopPropagation(),e.target.querySelector(".select-all").checked=!1;const t=Jw('.fingerprint-removal-item input[type="checkbox"]:checked',e.target).map(e=>e.value);this.devicelist.removeOwnDevices(t).then(this.modal.hide).catch(e=>{Pn.error(e),Lc.api.alert(Gw.LogLevel.ERROR,dd("Error"),[dd("Sorry, an error occurred while trying to remove the devices.")])})},generateOMEMODeviceBundle(e){e.preventDefault(),confirm(dd("Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device."))&&qc.omemo.bundle.generate()}},UserDetailsModal:{events:{"click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){const e=this.model.get("jid");return this.devicelist=Lc.devicelists.getDeviceList(e),this.listenTo(this.devicelist.devices,"change:bundle",this.render),this.listenTo(this.devicelist.devices,"change:trusted",this.render),this.listenTo(this.devicelist.devices,"remove",this.render),this.listenTo(this.devicelist.devices,"add",this.render),this.listenTo(this.devicelist.devices,"reset",this.render),this.__super__.initialize.apply(this,arguments)},toggleDeviceTrust(e){const t=e.target;this.devicelist.devices.get(t.getAttribute("name")).save("trusted",parseInt(t.value,10))}},ChatBox:{async sendMessage(e,t){if(this.get("omemo_active")&&e){const n=this.getOutgoingMessageAttributes(e,t);let r,i;n.is_encrypted=!0,n.plaintext=n.message;try{const e=await Lc.getBundlesAndBuildSessions(this);r=await this.createMessage(n),i=await Lc.createOMEMOMessageStanza(this,r,e)}catch(e){return this.handleMessageSendError(e),null}return Lc.api.send(i),r}return this.__super__.sendMessage.apply(this,arguments)}}},initialize(){qc.settings.extend({omemo_default:!1}),qc.promises.add(["OMEMOInitialized"]),Lc.NUM_PREKEYS=100;const e={encryptKey:(e,t)=>nS(t.get("jid"),t.get("id")).encrypt(e).then(e=>({payload:e,device:t})),handleMessageSendError(e){if("IQError"===e.name){this.save("omemo_supported",!1);const t=[];Jw('presence-subscription-required[xmlns="'.concat(Gw.NS.PUBSUB_ERROR,'"]'),e.iq).length?t.push(dd("Sorry, we're unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information",e.iq.getAttribute("from"))):Jw('remote-server-not-found[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]',e.iq).length?t.push(dd("Sorry, we're unable to send an encrypted message because the remote server for %1$s could not be found",e.iq.getAttribute("from"))):(t.push(dd("Unable to send an encrypted message due to an unexpected error.")),t.push(e.iq.outerHTML)),qc.alert("error",dd("Error"),t),Pn.error(e)}else{if(!e.user_facing)throw e;qc.alert("error",dd("Error"),[e.message]),Pn.error(e)}}};function t(e,t){return t.is_encrypted&&t.encrypted.key?!0===t.encrypted.prekey?async function(e){const t=nS(e.from,parseInt(e.encrypted.device_id,10)),n=Kw.base64ToArrayBuffer(e.encrypted.key);let r;try{r=await t.decryptPreKeyWhisperMessage(n,"binary")}catch(t){return Pn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,iS(t))}try{const t=await rS(e,r);return await Lc.omemo_store.generateMissingPreKeys(),await Lc.omemo_store.publishBundle(),t?Object.assign(e,{plaintext:t}):Object.assign(e,{is_only_key:!0})}catch(t){return Pn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,iS(t))}}(t):async function(e){const t=e.from_muc?e.from_real_jid:e.from;t||Object.assign(e,{error_text:dd("Sorry, could not decrypt a received OMEMO because we don't have the JID for that user."),error_type:"Decryption",is_ephemeral:!1,is_error:!0,type:"error"});const n=nS(t,parseInt(e.encrypted.device_id,10)),r=Kw.base64ToArrayBuffer(e.encrypted.key);try{const t=await n.decryptWhisperMessage(r,"binary"),i=await rS(e,t);return Object.assign(e,{plaintext:i})}catch(t){return Pn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,iS(t))}}(t):t}Object.assign(Lc.ChatBox.prototype,e),Lc.generateFingerprints=async function(e){const t=await aS(e);return Promise.all(t.map(e=>oS(e)))},Lc.getDeviceForContact=function(e,t){return aS(e).then(e=>e.get(t))},Lc.contactHasOMEMOSupport=async function(e){return(await aS(e)).length>0},Lc.getBundlesAndBuildSessions=async function(e){const t=dd("Sorry, no devices found to which we can send an OMEMO encrypted message.");let n;if(e.get("type")===Lc.CHATROOMS_TYPE){const t=await Promise.all(e.occupants.map(e=>aS(e.get("jid"))));n=t.reduce((e,t)=>qw(e,t.models),[])}else if(e.get("type")===Lc.PRIVATE_CHAT_TYPE){const r=await aS(e.get("jid"));if(0===r.length){const e=new Error(t);throw e.user_facing=!0,e}const i=Lc.devicelists.get(Lc.bare_jid).devices;n=[...i.models,...r.models]}const r=Lc.omemo_store.get("device_id");n=n.filter(e=>e.get("id")!==r),await Promise.all(n.map(e=>e.getBundle()));const i=n.filter(e=>e).map(e=>cS(e));if(await Promise.all(i),i.includes(null)&&(n=n.filter(e=>i[n.indexOf(e)]),0===n.length)){const e=new Error(t);throw e.user_facing=!0,e}return n},Lc.createOMEMOMessageStanza=function(e,t,n){const r=dd("This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo");if(!t.get("message"))throw new Error("No message body to encrypt!");const i=Yw({from:Lc.connection.jid,to:e.get("jid"),type:e.get("message_type"),id:t.get("msgid")}).c("body").t(r).up();return"chat"===t.get("type")&&i.c("request",{xmlns:Gw.NS.RECEIPTS}).up(),i.c("encrypted",{xmlns:Gw.NS.OMEMO}).c("header",{sid:Lc.omemo_store.get("device_id")}),tS.encryptMessage(t.get("message")).then(t=>{const r=n.filter(e=>-1!=e.get("trusted")&&e.get("active")).map(n=>e.encryptKey(t.key_and_tag,n));return Promise.all(r).then(e=>function(e,t,n){for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const i=t[r].payload,s=t[r].device,o=3==parseInt(i.type,10);e.c("key",{rid:s.get("id")}).t(btoa(i.body)),o&&e.attrs({prekey:o}),e.up(),r==t.length-1&&e.c("iv").t(n).up().up()}return Promise.resolve(e)}(i,e,t.iv)).then(e=>(e.c("payload").t(t.payload).up().up(),e.c("store",{xmlns:Gw.NS.HINTS}),e))})},Lc.OMEMOStore=Rs.extend({Direction:{SENDING:1,RECEIVING:2},getIdentityKeyPair(){const e=this.get("identity_keypair");return Promise.resolve({privKey:Kw.base64ToArrayBuffer(e.privKey),pubKey:Kw.base64ToArrayBuffer(e.pubKey)})},getLocalRegistrationId(){return Promise.resolve(parseInt(this.get("device_id"),10))},isTrustedIdentity(e,t,n){if(null==e)throw new Error("Can't check identity key for invalid key");if(!(t instanceof ArrayBuffer))throw new Error("Expected identity_key to be an ArrayBuffer");const r=this.get("identity_key"+e);return void 0===r?Promise.resolve(!0):Promise.resolve(Kw.arrayBufferToBase64(t)===r)},loadIdentityKey(e){if(null==e)throw new Error("Can't load identity_key for invalid identifier");return Promise.resolve(Kw.base64ToArrayBuffer(this.get("identity_key"+e)))},saveIdentity(e,t){if(null==e)throw new Error("Can't save identity_key for invalid identifier");const n=new libsignal.SignalProtocolAddress.fromString(e),r=this.get("identity_key"+n.getName()),i=Kw.arrayBufferToBase64(t);return this.save("identity_key"+n.getName(),i),r&&i!==r?Promise.resolve(!0):Promise.resolve(!1)},getPreKeys(){return this.get("prekeys")||{}},loadPreKey(e){const t=this.getPreKeys()[e];return t?Promise.resolve({privKey:Kw.base64ToArrayBuffer(t.privKey),pubKey:Kw.base64ToArrayBuffer(t.pubKey)}):Promise.resolve()},storePreKey(e,t){const n={};return n[e]={pubKey:Kw.arrayBufferToBase64(t.pubKey),privKey:Kw.arrayBufferToBase64(t.privKey)},this.save("prekeys",Object.assign(this.getPreKeys(),n)),Promise.resolve()},removePreKey(e){return this.save("prekeys",Os(this.getPreKeys(),e)),Promise.resolve()},loadSignedPreKey(e){const t=this.get("signed_prekey");return t?Promise.resolve({privKey:Kw.base64ToArrayBuffer(t.privKey),pubKey:Kw.base64ToArrayBuffer(t.pubKey)}):Promise.resolve()},storeSignedPreKey(e){if("object"!=typeof e)throw new Error("storeSignedPreKey: expected an object");return this.save("signed_prekey",{id:e.keyId,privKey:Kw.arrayBufferToBase64(e.keyPair.privKey),pubKey:Kw.arrayBufferToBase64(e.keyPair.pubKey),signature:Kw.arrayBufferToBase64(e.signature)}),Promise.resolve()},removeSignedPreKey(e){return this.get("signed_prekey").id===e&&(this.unset("signed_prekey"),this.save()),Promise.resolve()},loadSession(e){return Promise.resolve(this.get("session"+e))},storeSession(e,t){return Promise.resolve(this.save("session"+e,t))},removeSession(e){return Promise.resolve(this.unset("session"+e))},removeAllSessions(e){const t=Object.keys(this.attributes).filter(t=>!!t.startsWith("session"+e)&&t),n={};return t.forEach(e=>{n[e]=void 0}),this.save(n),Promise.resolve()},publishBundle(){const e=this.get("signed_prekey"),t="".concat(Gw.NS.OMEMO_BUNDLES,":").concat(this.get("device_id")),n=Xw("item").c("bundle",{xmlns:Gw.NS.OMEMO}).c("signedPreKeyPublic",{signedPreKeyId:e.id}).t(e.pubKey).up().c("signedPreKeySignature").t(e.signature).up().c("identityKey").t(this.get("identity_keypair").pubKey).up().c("prekeys");Object.values(this.get("prekeys")).forEach((e,t)=>n.c("preKeyPublic",{preKeyId:t}).t(e.pubKey).up());return qc.pubsub.publish(null,t,n,{"pubsub#access_model":"open"},!1)},async generateMissingPreKeys(){const e=Eo(kd(Ww(0,Lc.NUM_PREKEYS),Number.prototype.toString),Object.keys(this.getPreKeys()));if(e.length<1)return Pn.warn("No missing prekeys to generate for our own device"),Promise.resolve();(await Promise.all(e.map(e=>libsignal.KeyHelper.generatePreKey(parseInt(e,10))))).forEach(e=>this.storePreKey(e.keyId,e.keyPair));const t=Object.keys(this.getPreKeys()).map(e=>({id:e.keyId,key:Kw.arrayBufferToBase64(e.pubKey)})),n=Lc.devicelists.get(Lc.bare_jid).devices.get(this.get("device_id")),r=await n.getBundle();n.save("bundle",Object.assign(r,{prekeys:t}))},async generateBundle(){const e=await libsignal.KeyHelper.generateIdentityKeyPair(),t={},n=Kw.arrayBufferToBase64(e.pubKey),r=function(){const e=Lc.devicelists.get(Lc.bare_jid).devices.pluck("id");let t=libsignal.KeyHelper.generateRegistrationId(),n=0;for(;e.includes(t);)if(t=libsignal.KeyHelper.generateRegistrationId(),n++,10===n)throw new Error("Unable to generate a unique device ID");return t.toString()}();t.identity_key=n,t.device_id=r,this.save({device_id:r,identity_keypair:{privKey:Kw.arrayBufferToBase64(e.privKey),pubKey:n},identity_key:n});const i=await libsignal.KeyHelper.generateSignedPreKey(e,0);Lc.omemo_store.storeSignedPreKey(i),t.signed_prekey={id:i.keyId,public_key:Kw.arrayBufferToBase64(i.keyPair.privKey),signature:Kw.arrayBufferToBase64(i.signature)};const s=await Promise.all(Ww(0,Lc.NUM_PREKEYS).map(e=>libsignal.KeyHelper.generatePreKey(e)));s.forEach(e=>Lc.omemo_store.storePreKey(e.keyId,e.keyPair));const o=Lc.devicelists.get(Lc.bare_jid),a=await o.devices.create({id:t.device_id,jid:Lc.bare_jid},{promise:!0}),c=s.map(e=>({id:e.keyId,key:Kw.arrayBufferToBase64(e.keyPair.pubKey)}));t.prekeys=c,a.save("bundle",t)},fetchSession(){return void 0===this._setup_promise&&(this._setup_promise=new Promise((e,t)=>{this.fetch({success:()=>{Lc.omemo_store.get("device_id")?e():this.generateBundle().then(e).catch(t)},error:(n,r)=>{Pn.warn("Could not fetch OMEMO session from cache, we'll generate a new one."),Pn.warn(r),this.generateBundle().then(e).catch(t)}})})),this._setup_promise}}),Lc.Device=Rs.extend({defaults:{trusted:0,active:!0},getRandomPreKey(){const e=this.get("bundle");return e.prekeys[Kw.getRandomInt(e.prekeys.length)]},async fetchBundleFromServer(){const e=Qw({type:"get",from:Lc.bare_jid,to:this.get("jid")}).c("pubsub",{xmlns:Gw.NS.PUBSUB}).c("items",{node:"".concat(Gw.NS.OMEMO_BUNDLES,":").concat(this.get("id"))});let t;try{t=await qc.sendIQ(e)}catch(t){return Pn.error("Could not fetch bundle for device ".concat(this.get("id")," from ").concat(this.get("jid"))),Pn.error(t),null}if(t.querySelector("error"))throw new eS("Could not fetch bundle",t);const n=Jw('items[node="'.concat(Gw.NS.OMEMO_BUNDLES,":").concat(this.get("id"),'"]'),t).pop(),r=sS(Jw('bundle[xmlns="'.concat(Gw.NS.OMEMO,'"]'),n).pop());return this.save("bundle",r),r},getBundle(){return this.get("bundle")?Promise.resolve(this.get("bundle"),this):this.fetchBundleFromServer()}}),Lc.Devices=Yo.extend({model:Lc.Device}),Lc.DeviceList=Rs.extend({idAttribute:"jid",initialize(){this.devices=new Lc.Devices;const e="converse.devicelist-".concat(Lc.bare_jid,"-").concat(this.get("jid"));this.devices.browserStorage=Lc.createStore(e),this.fetchDevices()},async onDevicesFound(e){if(0===e.length){let e;try{e=await this.fetchDevicesFromServer()}catch(e){null===e?Pn.error("Timeout error while fetching devices for ".concat(this.get("jid"))):(Pn.error("Could not fetch devices for ".concat(this.get("jid"))),Pn.error(e)),this.destroy()}this.get("jid")===Lc.bare_jid&&await this.publishCurrentDevice(e)}},fetchDevices(){return void 0===this._devices_promise&&(this._devices_promise=new Promise(e=>{this.devices.fetch({success:t=>e(this.onDevicesFound(t)),error:(t,n)=>{Pn.error(n),e()}})})),this._devices_promise},async getOwnDeviceId(){let e=Lc.omemo_store.get("device_id");return this.devices.findWhere({id:e})||(await Lc.omemo_store.generateBundle(),e=Lc.omemo_store.get("device_id")),e},async publishCurrentDevice(e){if(this.get("jid")===Lc.bare_jid){if(await uS(),Lc.omemo_store)return e.includes(await this.getOwnDeviceId())?void 0:this.publishDevices();Pn.warn("publishCurrentDevice: omemo_store is not defined, likely a timing issue")}},async fetchDevicesFromServer(){const e=Qw({type:"get",from:Lc.bare_jid,to:this.get("jid")}).c("pubsub",{xmlns:Gw.NS.PUBSUB}).c("items",{node:Gw.NS.OMEMO_DEVICELIST});let t;try{t=await qc.sendIQ(e)}catch(e){return Pn.error(e),[]}const n='list[xmlns="'.concat(Gw.NS.OMEMO,'"] device'),r=Jw(n,t).map(e=>e.getAttribute("id"));return await Promise.all(r.map(e=>this.devices.create({id:e,jid:this.get("jid")},{promise:!0}))),r},publishDevices(){const e=Xw("item",{id:"current"}).c("list",{xmlns:Gw.NS.OMEMO});this.devices.filter(e=>e.get("active")).forEach(t=>e.c("device",{id:t.get("id")}).up());return qc.pubsub.publish(null,Gw.NS.OMEMO_DEVICELIST,e,{"pubsub#access_model":"open"},!1)},removeOwnDevices(e){if(this.get("jid")!==Lc.bare_jid)throw new Error("Cannot remove devices from someone else's device list");return e.forEach(e=>this.devices.get(e).destroy()),this.publishDevices()}}),Lc.DeviceLists=Yo.extend({model:Lc.DeviceList,getDeviceList(e){return this.get(e)||this.create({jid:e})}}),qc.listen.on("parseMessage",t),qc.listen.on("parseMUCMessage",t),qc.waitUntil("chatBoxesInitialized").then(()=>Lc.chatboxes.on("add",e=>{fS(e),e.get("type")===Lc.CHATROOMS_TYPE&&(e.occupants.on("add",t=>async function(e,t){if(!t.isSelf()&&e.features.get("nonanonymous")&&e.features.get("membersonly")&&e.get("omemo_active")){await Lc.contactHasOMEMOSupport(t.get("jid"))||(e.createMessage({message:dd("%1$s doesn't appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.",t.get("nick")),type:"error"}),e.save({omemo_active:!1,omemo_supported:!1}))}}(e,t)),e.features.on("change",()=>fS(e)))}));const n=e=>{e.listenTo(e.model.messages,"add",t=>{t.get("is_encrypted")&&!t.get("is_error")&&e.model.save("omemo_supported",!0)}),e.listenTo(e.model,"change:omemo_supported",()=>{var t;!e.model.get("omemo_supported")&&e.model.get("omemo_active")?e.model.set("omemo_active",!1):null===(t=e.el.querySelector("converse-chat-toolbar"))||void 0===t||t.requestUpdate()}),e.listenTo(e.model,"change:omemo_active",()=>{e.el.querySelector("converse-chat-toolbar").requestUpdate()})};qc.listen.on("chatBoxViewInitialized",n),qc.listen.on("chatRoomViewInitialized",n),qc.listen.on("connected",lS),qc.listen.on("getToolbarButtons",gS),qc.listen.on("statusInitialized",hS),qc.listen.on("addClientFeatures",()=>qc.disco.own.features.add("".concat(Gw.NS.OMEMO_DEVICELIST,"+notify"))),qc.listen.on("userDetailsModalInitialized",e=>{const t=e.get("jid");Lc.generateFingerprints(t).catch(e=>Pn.error(e))}),qc.listen.on("profileModalInitialized",()=>{Lc.generateFingerprints(Lc.bare_jid).catch(e=>Pn.error(e))}),qc.listen.on("afterTearDown",()=>delete Lc.omemo_store),qc.listen.on("clearSession",()=>{Lc.shouldClearCache()&&Lc.devicelists&&(Lc.devicelists.clearStore(),delete Lc.devicelists)}),Object.assign(Lc.api,{omemo:{bundle:{generate:async()=>{const e=Lc.devicelists.get(Lc.bare_jid),t=Lc.omemo_store.get("device_id");if(t){const n=e.devices.get(t);Lc.omemo_store.unset(t),n&&await new Promise(e=>n.destroy({success:e,error:e})),e.devices.trigger("remove")}await Lc.omemo_store.generateBundle(),await e.publishDevices();const n=oS(e.devices.get(Lc.omemo_store.get("device_id")));return await Lc.omemo_store.publishBundle(),n}}}})}}); + */(['\n <button class="toggle-omemo"\n title="','"\n ?disabled=',"\n @click=",'>\n <converse-icon class="fa ','"\n path-prefix="','" size="1em"\n color="','"\n ></converse-icon>\n </button>']);return Nx=function(){return e},e}const{Strophe:Ix,sizzle:Mx,$build:Rx,$iq:Dx,$msg:Px}=rl.env,Lx=rl.env.utils;Ix.addNamespace("OMEMO_DEVICELIST",Ix.NS.OMEMO+".devicelist"),Ix.addNamespace("OMEMO_VERIFICATION",Ix.NS.OMEMO+".verification"),Ix.addNamespace("OMEMO_WHITELISTED",Ix.NS.OMEMO+".whitelisted"),Ix.addNamespace("OMEMO_BUNDLES",Ix.NS.OMEMO+".bundles");const zx={name:"AES-GCM",length:128};class Fx extends Error{constructor(e,t){super(e,t),this.name="IQError",this.iq=t}}function Bx(e,t){return t.is_encrypted&&t.encrypted.key?!0===t.encrypted.prekey?async function(e){const t=$x(e.from,parseInt(e.encrypted.device_id,10)),n=Lx.base64ToArrayBuffer(e.encrypted.key);let r;try{r=await t.decryptPreKeyWhisperMessage(n,"binary")}catch(t){return zn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,Gx(t))}try{const t=await Wx(e,r);return await Uc.omemo_store.generateMissingPreKeys(),await Uc.omemo_store.publishBundle(),t?Object.assign(e,{plaintext:t}):Object.assign(e,{is_only_key:!0})}catch(t){return zn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,Gx(t))}}(t):async function(e){const t=e.from_muc?e.from_real_jid:e.from;t||Object.assign(e,{error_text:zd("Sorry, could not decrypt a received OMEMO because we don't have the JID for that user."),error_type:"Decryption",is_ephemeral:!1,is_error:!0,type:"error"});const n=$x(t,parseInt(e.encrypted.device_id,10)),r=Lx.base64ToArrayBuffer(e.encrypted.key);try{const t=await n.decryptWhisperMessage(r,"binary"),i=await Wx(e,t);return Object.assign(e,{plaintext:i})}catch(t){return zn.error("".concat(t.name," ").concat(t.message)),Object.assign(e,Gx(t))}}(t):t}function qx(){Uc.chatboxes.on("add",e=>{tE(e),e.get("type")===Uc.CHATROOMS_TYPE&&(e.occupants.on("add",t=>async function(e,t){if(t.isSelf()||!e.features.get("nonanonymous")||!e.features.get("membersonly"))return;if(e.get("omemo_active")){await Uc.contactHasOMEMOSupport(t.get("jid"))||(e.createMessage({message:zd("%1$s doesn't appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.",t.get("nick")),type:"error"}),e.save({omemo_active:!1,omemo_supported:!1}))}}(e,t)),e.features.on("change",()=>tE(e)))})}function Hx(e){e.listenTo(e.model.messages,"add",t=>{t.get("is_encrypted")&&!t.get("is_error")&&e.model.save("omemo_supported",!0)}),e.listenTo(e.model,"change:omemo_supported",()=>{var t;!e.model.get("omemo_supported")&&e.model.get("omemo_active")?e.model.set("omemo_active",!1):null===(t=e.el.querySelector("converse-chat-toolbar"))||void 0===t||t.requestUpdate()}),e.listenTo(e.model,"change:omemo_active",()=>{e.el.querySelector("converse-chat-toolbar").requestUpdate()})}const Ux=rl.env.omemo={async encryptMessage(e){const t=crypto.getRandomValues(new window.Uint8Array(12)),n=await crypto.subtle.generateKey(zx,!0,["encrypt","decrypt"]),r={name:"AES-GCM",iv:t,tagLength:128},i=await crypto.subtle.encrypt(r,n,Lx.stringToArrayBuffer(e)),o=i.byteLength-16,s=i.slice(0,o),a=i.slice(o),c=await crypto.subtle.exportKey("raw",n);return{key:c,tag:a,key_and_tag:Lx.appendArrayBuffer(c,a),payload:Lx.arrayBufferToBase64(s),iv:Lx.arrayBufferToBase64(t)}},async decryptMessage(e){const t=await crypto.subtle.importKey("raw",e.key,zx,!0,["encrypt","decrypt"]),n=Lx.appendArrayBuffer(Lx.base64ToArrayBuffer(e.payload),e.tag),r={name:"AES-GCM",iv:Lx.base64ToArrayBuffer(e.iv),tagLength:128};return Lx.arrayBufferToString(await crypto.subtle.decrypt(r,t,n))}};function $x(e,t){const n=new libsignal.SignalProtocolAddress(e,t);return new window.libsignal.SessionCipher(Uc.omemo_store,n)}async function Wx(e,t){const n=e.encrypted,r=Uc.devicelists.getDeviceList(e.from);await r._devices_promise;let i=r.get(n.device_id);if(i||(i=await r.devices.create({id:n.device_id,jid:e.from},{promise:!0})),n.payload){const e=t.slice(0,16),r=t.slice(16),o=await Ux.decryptMessage(Object.assign(n,{key:e,tag:r}));return i.save("active",!0),o}}function Gx(e){return"debug"===Vc.settings.get("loglevel")?{error_text:zd("Sorry, could not decrypt a received OMEMO message due to an error.")+" ".concat(e.name," ").concat(e.message),error_type:"Decryption",is_ephemeral:!0,is_error:!0,type:"error"}:{}}function Vx(e){const t=e.querySelector("signedPreKeyPublic"),n=e.querySelector("signedPreKeySignature"),r=Mx("prekeys > preKeyPublic",e).map(e=>({id:parseInt(e.getAttribute("preKeyId"),10),key:e.textContent}));return{identity_key:e.querySelector("identityKey").textContent.trim(),signed_prekey:{id:parseInt(t.getAttribute("signedPreKeyId"),10),public_key:t.textContent,signature:n.textContent},prekeys:r}}async function Jx(e){var t;if(null===(t=e.get("bundle"))||void 0===t?void 0:t.fingerprint)return;const n=await e.getBundle();n.fingerprint=Lx.arrayBufferToHex(Lx.base64ToArrayBuffer(n.identity_key)),e.save("bundle",n),e.trigger("change:bundle")}async function Xx(e){await Vc.waitUntil("OMEMOInitialized");const t=Uc.devicelists.get(e)||Uc.devicelists.create({jid:e});return await t.fetchDevices(),t.devices}async function Qx(e){if(!e.get("bundle"))return zn.error("Could not build an OMEMO session for device ".concat(e.get("id")," because we don't have its bundle")),null;const t=new libsignal.SignalProtocolAddress(e.get("jid"),e.get("id")),n=await Uc.omemo_store.loadSession(t.toString());if(n)return n;try{return await async function(e){const t=new libsignal.SignalProtocolAddress(e.get("jid"),e.get("id")),n=new libsignal.SessionBuilder(Uc.omemo_store,t),r=e.getRandomPreKey(),i=await e.getBundle();return n.processPreKey({registrationId:parseInt(e.get("id"),10),identityKey:Lx.base64ToArrayBuffer(i.identity_key),signedPreKey:{keyId:i.signed_prekey.id,publicKey:Lx.base64ToArrayBuffer(i.signed_prekey.public_key),signature:Lx.base64ToArrayBuffer(i.signed_prekey.signature)},preKey:{keyId:r.id,publicKey:Lx.base64ToArrayBuffer(r.key)}})}(e)}catch(t){return zn.error("Could not build an OMEMO session for device ".concat(e.get("id"))),zn.error(t),null}}function Yx(){Uc.connection.addHandler(e=>{try{Mx('event[xmlns="'.concat(Ix.NS.PUBSUB,'#event"]'),e).length&&(function(e){const t=Mx('items[node="'.concat(Ix.NS.OMEMO_DEVICELIST,'"]'),e).pop();if(!t)return;const n='item list[xmlns="'.concat(Ix.NS.OMEMO,'"] device'),r=Mx(n,t).map(e=>e.getAttribute("id")),i=e.getAttribute("from"),o=Uc.devicelists.getDeviceList(i),s=o.devices;ks(s.pluck("id"),r).forEach(e=>{i===Uc.bare_jid&&e===Uc.omemo_store.get("device_id")||s.get(e).save("active",!1)}),r.forEach(e=>{const t=s.get(e);t?t.save("active",!0):s.create({id:e,jid:i})}),Lx.isSameBareJID(i,Uc.bare_jid)&&o.publishCurrentDevice(r)}(e),function(e){const t=Mx("items",e).pop();if(!t||!t.getAttribute("node").startsWith(Ix.NS.OMEMO_BUNDLES))return;const n=t.getAttribute("node").split(":")[1],r=e.getAttribute("from"),i=Mx("item > bundle",t).pop(),o=Uc.devicelists.getDeviceList(r);(o.devices.get(n)||o.devices.create({id:n,jid:r})).save({bundle:Vx(i)})}(e))}catch(e){zn.error(e.message)}return!0},null,"message","headline")}function Kx(){if(void 0===Uc.omemo_store){const e="converse.omemosession-".concat(Uc.bare_jid);Uc.omemo_store=new Uc.OMEMOStore({id:e}),Uc.omemo_store.browserStorage=Uc.createStore(e)}return Uc.omemo_store.fetchSession()}async function Zx(){await new Promise((e,t)=>Uc.devicelists.fetch({success:e,error:(e,n)=>t(n)}));let e=Uc.devicelists.get(Uc.bare_jid);return e?e.fetchDevices():e=await Uc.devicelists.create({jid:Uc.bare_jid},{promise:!0}),e._devices_promise}async function eE(){if(!Uc.config.get("trusted")||Vc.settings.get("clear_cache_on_logout"))return void zn.warn("Not initializing OMEMO, since this browser is not trusted or clear_cache_on_logout is set to true");Uc.devicelists=new Uc.DeviceLists;const e="converse.devicelists-".concat(Uc.bare_jid);Uc.devicelists.browserStorage=Uc.createStore(e);try{await Zx(),await Kx(),await Uc.omemo_store.publishBundle()}catch(e){return zn.error("Could not initialize OMEMO support"),void zn.error(e)}Vc.trigger("OMEMOInitialized")}async function tE(e){let t;e.get("type")===Uc.CHATROOMS_TYPE?(await Vc.waitUntil("OMEMOInitialized"),t=e.features.get("nonanonymous")&&e.features.get("membersonly")):e.get("type")===Uc.PRIVATE_CHAT_TYPE&&(t=await Uc.contactHasOMEMOSupport(e.get("jid"))),e.set("omemo_supported",t),t&&Vc.settings.get("omemo_default")&&e.set("omemo_active",!0)}function nE(e){e.stopPropagation(),e.preventDefault();const t=Lx.ancestor(e.target,"converse-chat-toolbar");if(!t.model.get("omemo_supported")){let e;return e=t.model.get("type")===Uc.CHATROOMS_TYPE?[zd("Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.")]:[zd("Cannot use end-to-end encryption because %1$s uses a client that doesn't support OMEMO.",t.model.contact.getDisplayName())],Vc.alert("error",zd("Error"),e)}t.model.save({omemo_active:!t.model.get("omemo_active")})}function rE(e,t){const n=e.model;let r;if(n.get("type")===Uc.CHATROOMS_TYPE&&n.get("omemo_supported")){const e=zd("Messages are being sent in plaintext"),t=zd("Messages are sent encrypted");r=n.get("omemo_active")?t:e}else r=zd("This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages");return t.push(Za(Nx(),r,!n.get("omemo_supported"),nE,n.get("omemo_active")?"fa-lock":"fa-unlock",Vc.settings.get("assets_path"),n.get("omemo_active")?"var(--info-color)":"var(--error-color)")),t}const iE={encryptKey:(e,t)=>$x(t.get("jid"),t.get("id")).encrypt(e).then(e=>({payload:e,device:t})),handleMessageSendError(e){if("IQError"===e.name){this.save("omemo_supported",!1);const t=[];Mx('presence-subscription-required[xmlns="'.concat(Ix.NS.PUBSUB_ERROR,'"]'),e.iq).length?t.push(zd("Sorry, we're unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information",e.iq.getAttribute("from"))):Mx('remote-server-not-found[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]',e.iq).length?t.push(zd("Sorry, we're unable to send an encrypted message because the remote server for %1$s could not be found",e.iq.getAttribute("from"))):(t.push(zd("Unable to send an encrypted message due to an unexpected error.")),t.push(e.iq.outerHTML)),Vc.alert("error",zd("Error"),t),zn.error(e)}else{if(!e.user_facing)throw e;Vc.alert("error",zd("Error"),[e.message]),zn.error(e)}}};rl.plugins.add("converse-omemo",{enabled:e=>window.libsignal&&e.config.get("trusted")&&!Vc.settings.get("clear_cache_on_logout")&&!e.api.settings.get("blacklisted_plugins").includes("converse-omemo"),dependencies:["converse-chatview","converse-pubsub","converse-profile"],overrides:{ProfileModal:{events:{"change input.select-all":"selectAll","click .generate-bundle":"generateOMEMODeviceBundle","submit .fingerprint-removal":"removeSelectedFingerprints"},initialize(){return this.debouncedRender=Rc(this.render,50),this.devicelist=Uc.devicelists.get(Uc.bare_jid),this.listenTo(this.devicelist.devices,"change:bundle",this.debouncedRender),this.listenTo(this.devicelist.devices,"reset",this.debouncedRender),this.listenTo(this.devicelist.devices,"reset",this.debouncedRender),this.listenTo(this.devicelist.devices,"remove",this.debouncedRender),this.listenTo(this.devicelist.devices,"add",this.debouncedRender),this.__super__.initialize.apply(this,arguments)},beforeRender(){const e=Uc.omemo_store.get("device_id");if(e&&(this.current_device=this.devicelist.devices.get(e)),this.other_devices=this.devicelist.devices.filter(t=>t.get("id")!==e),this.__super__.beforeRender)return this.__super__.beforeRender.apply(this,arguments)},selectAll(e){let t=Lx.ancestor(e.target,"li");for(;t;)t.querySelector('input[type="checkbox"]').checked=e.target.checked,t=t.nextElementSibling},removeSelectedFingerprints(e){e.preventDefault(),e.stopPropagation(),e.target.querySelector(".select-all").checked=!1;const t=Mx('.fingerprint-removal-item input[type="checkbox"]:checked',e.target).map(e=>e.value);this.devicelist.removeOwnDevices(t).then(this.modal.hide).catch(e=>{zn.error(e),Uc.api.alert(Ix.LogLevel.ERROR,zd("Error"),[zd("Sorry, an error occurred while trying to remove the devices.")])})},generateOMEMODeviceBundle(e){e.preventDefault(),confirm(zd("Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device."))&&Vc.omemo.bundle.generate()}},UserDetailsModal:{events:{"click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){const e=this.model.get("jid");return this.devicelist=Uc.devicelists.getDeviceList(e),this.listenTo(this.devicelist.devices,"change:bundle",this.render),this.listenTo(this.devicelist.devices,"change:trusted",this.render),this.listenTo(this.devicelist.devices,"remove",this.render),this.listenTo(this.devicelist.devices,"add",this.render),this.listenTo(this.devicelist.devices,"reset",this.render),this.__super__.initialize.apply(this,arguments)},toggleDeviceTrust(e){const t=e.target;this.devicelist.devices.get(t.getAttribute("name")).save("trusted",parseInt(t.value,10))}},ChatBox:{async sendMessage(e,t){if(this.get("omemo_active")&&e){const n=this.getOutgoingMessageAttributes(e,t);let r,i;n.is_encrypted=!0,n.plaintext=n.message;try{const e=await Uc.getBundlesAndBuildSessions(this);r=await this.createMessage(n),i=await Uc.createOMEMOMessageStanza(this,r,e)}catch(e){return this.handleMessageSendError(e),null}return Uc.api.send(i),r}return this.__super__.sendMessage.apply(this,arguments)}}},initialize(){Vc.settings.extend({omemo_default:!1}),Vc.promises.add(["OMEMOInitialized"]),Uc.NUM_PREKEYS=100,Object.assign(Uc.ChatBox.prototype,iE),Uc.generateFingerprints=async function(e){const t=await Xx(e);return Promise.all(t.map(e=>Jx(e)))},Uc.getDeviceForContact=function(e,t){return Xx(e).then(e=>e.get(t))},Uc.contactHasOMEMOSupport=async function(e){return(await Xx(e)).length>0},Uc.getBundlesAndBuildSessions=async function(e){const t=zd("Sorry, no devices found to which we can send an OMEMO encrypted message.");let n;if(e.get("type")===Uc.CHATROOMS_TYPE){const t=await Promise.all(e.occupants.map(e=>Xx(e.get("jid"))));n=t.reduce((e,t)=>Cx(e,t.models),[])}else if(e.get("type")===Uc.PRIVATE_CHAT_TYPE){const r=await Xx(e.get("jid"));if(0===r.length){const e=new Error(t);throw e.user_facing=!0,e}const i=Uc.devicelists.get(Uc.bare_jid).devices;n=[...i.models,...r.models]}const r=Uc.omemo_store.get("device_id");n=n.filter(e=>e.get("id")!==r),await Promise.all(n.map(e=>e.getBundle()));const i=n.filter(e=>e).map(e=>Qx(e));if(await Promise.all(i),i.includes(null)&&(n=n.filter(e=>i[n.indexOf(e)]),0===n.length)){const e=new Error(t);throw e.user_facing=!0,e}return n},Uc.createOMEMOMessageStanza=function(e,t,n){const r=zd("This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo");if(!t.get("message"))throw new Error("No message body to encrypt!");const i=Px({from:Uc.connection.jid,to:e.get("jid"),type:e.get("message_type"),id:t.get("msgid")}).c("body").t(r).up();return"chat"===t.get("type")&&i.c("request",{xmlns:Ix.NS.RECEIPTS}).up(),i.c("encrypted",{xmlns:Ix.NS.OMEMO}).c("header",{sid:Uc.omemo_store.get("device_id")}),Ux.encryptMessage(t.get("message")).then(t=>{const r=n.filter(e=>-1!=e.get("trusted")&&e.get("active")).map(n=>e.encryptKey(t.key_and_tag,n));return Promise.all(r).then(e=>function(e,t,n){for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const i=t[r].payload,o=t[r].device,s=3==parseInt(i.type,10);e.c("key",{rid:o.get("id")}).t(btoa(i.body)),s&&e.attrs({prekey:s}),e.up(),r==t.length-1&&e.c("iv").t(n).up().up()}return Promise.resolve(e)}(i,e,t.iv)).then(e=>(e.c("payload").t(t.payload).up().up(),e.c("store",{xmlns:Ix.NS.HINTS}),e))})},Uc.OMEMOStore=qo.extend({Direction:{SENDING:1,RECEIVING:2},getIdentityKeyPair(){const e=this.get("identity_keypair");return Promise.resolve({privKey:Lx.base64ToArrayBuffer(e.privKey),pubKey:Lx.base64ToArrayBuffer(e.pubKey)})},getLocalRegistrationId(){return Promise.resolve(parseInt(this.get("device_id"),10))},isTrustedIdentity(e,t,n){if(null==e)throw new Error("Can't check identity key for invalid key");if(!(t instanceof ArrayBuffer))throw new Error("Expected identity_key to be an ArrayBuffer");const r=this.get("identity_key"+e);return void 0===r?Promise.resolve(!0):Promise.resolve(Lx.arrayBufferToBase64(t)===r)},loadIdentityKey(e){if(null==e)throw new Error("Can't load identity_key for invalid identifier");return Promise.resolve(Lx.base64ToArrayBuffer(this.get("identity_key"+e)))},saveIdentity(e,t){if(null==e)throw new Error("Can't save identity_key for invalid identifier");const n=new libsignal.SignalProtocolAddress.fromString(e),r=this.get("identity_key"+n.getName()),i=Lx.arrayBufferToBase64(t);return this.save("identity_key"+n.getName(),i),r&&i!==r?Promise.resolve(!0):Promise.resolve(!1)},getPreKeys(){return this.get("prekeys")||{}},loadPreKey(e){const t=this.getPreKeys()[e];return t?Promise.resolve({privKey:Lx.base64ToArrayBuffer(t.privKey),pubKey:Lx.base64ToArrayBuffer(t.pubKey)}):Promise.resolve()},storePreKey(e,t){const n={};return n[e]={pubKey:Lx.arrayBufferToBase64(t.pubKey),privKey:Lx.arrayBufferToBase64(t.privKey)},this.save("prekeys",Object.assign(this.getPreKeys(),n)),Promise.resolve()},removePreKey(e){return this.save("prekeys",Po(this.getPreKeys(),e)),Promise.resolve()},loadSignedPreKey(e){const t=this.get("signed_prekey");return t?Promise.resolve({privKey:Lx.base64ToArrayBuffer(t.privKey),pubKey:Lx.base64ToArrayBuffer(t.pubKey)}):Promise.resolve()},storeSignedPreKey(e){if("object"!=typeof e)throw new Error("storeSignedPreKey: expected an object");return this.save("signed_prekey",{id:e.keyId,privKey:Lx.arrayBufferToBase64(e.keyPair.privKey),pubKey:Lx.arrayBufferToBase64(e.keyPair.pubKey),signature:Lx.arrayBufferToBase64(e.signature)}),Promise.resolve()},removeSignedPreKey(e){return this.get("signed_prekey").id===e&&(this.unset("signed_prekey"),this.save()),Promise.resolve()},loadSession(e){return Promise.resolve(this.get("session"+e))},storeSession(e,t){return Promise.resolve(this.save("session"+e,t))},removeSession(e){return Promise.resolve(this.unset("session"+e))},removeAllSessions(e){const t=Object.keys(this.attributes).filter(t=>!!t.startsWith("session"+e)&&t),n={};return t.forEach(e=>{n[e]=void 0}),this.save(n),Promise.resolve()},publishBundle(){const e=this.get("signed_prekey"),t="".concat(Ix.NS.OMEMO_BUNDLES,":").concat(this.get("device_id")),n=Rx("item").c("bundle",{xmlns:Ix.NS.OMEMO}).c("signedPreKeyPublic",{signedPreKeyId:e.id}).t(e.pubKey).up().c("signedPreKeySignature").t(e.signature).up().c("identityKey").t(this.get("identity_keypair").pubKey).up().c("prekeys");Object.values(this.get("prekeys")).forEach((e,t)=>n.c("preKeyPublic",{preKeyId:t}).t(e.pubKey).up());return Vc.pubsub.publish(null,t,n,{"pubsub#access_model":"open"},!1)},async generateMissingPreKeys(){const e=ks(rh(kx(0,Uc.NUM_PREKEYS),Number.prototype.toString),Object.keys(this.getPreKeys()));if(e.length<1)return zn.warn("No missing prekeys to generate for our own device"),Promise.resolve();(await Promise.all(e.map(e=>libsignal.KeyHelper.generatePreKey(parseInt(e,10))))).forEach(e=>this.storePreKey(e.keyId,e.keyPair));const t=Object.keys(this.getPreKeys()).map(e=>({id:e.keyId,key:Lx.arrayBufferToBase64(e.pubKey)})),n=Uc.devicelists.get(Uc.bare_jid).devices.get(this.get("device_id")),r=await n.getBundle();n.save("bundle",Object.assign(r,{prekeys:t}))},async generateBundle(){const e=await libsignal.KeyHelper.generateIdentityKeyPair(),t={},n=Lx.arrayBufferToBase64(e.pubKey),r=function(){const e=Uc.devicelists.get(Uc.bare_jid).devices.pluck("id");let t=libsignal.KeyHelper.generateRegistrationId(),n=0;for(;e.includes(t);)if(t=libsignal.KeyHelper.generateRegistrationId(),n++,10===n)throw new Error("Unable to generate a unique device ID");return t.toString()}();t.identity_key=n,t.device_id=r,this.save({device_id:r,identity_keypair:{privKey:Lx.arrayBufferToBase64(e.privKey),pubKey:n},identity_key:n});const i=await libsignal.KeyHelper.generateSignedPreKey(e,0);Uc.omemo_store.storeSignedPreKey(i),t.signed_prekey={id:i.keyId,public_key:Lx.arrayBufferToBase64(i.keyPair.privKey),signature:Lx.arrayBufferToBase64(i.signature)};const o=await Promise.all(kx(0,Uc.NUM_PREKEYS).map(e=>libsignal.KeyHelper.generatePreKey(e)));o.forEach(e=>Uc.omemo_store.storePreKey(e.keyId,e.keyPair));const s=Uc.devicelists.get(Uc.bare_jid),a=await s.devices.create({id:t.device_id,jid:Uc.bare_jid},{promise:!0}),c=o.map(e=>({id:e.keyId,key:Lx.arrayBufferToBase64(e.keyPair.pubKey)}));t.prekeys=c,a.save("bundle",t)},fetchSession(){return void 0===this._setup_promise&&(this._setup_promise=new Promise((e,t)=>{this.fetch({success:()=>{Uc.omemo_store.get("device_id")?e():this.generateBundle().then(e).catch(t)},error:(n,r)=>{zn.warn("Could not fetch OMEMO session from cache, we'll generate a new one."),zn.warn(r),this.generateBundle().then(e).catch(t)}})})),this._setup_promise}}),Uc.Device=qo.extend({defaults:{trusted:0,active:!0},getRandomPreKey(){const e=this.get("bundle");return e.prekeys[Lx.getRandomInt(e.prekeys.length)]},async fetchBundleFromServer(){const e=Dx({type:"get",from:Uc.bare_jid,to:this.get("jid")}).c("pubsub",{xmlns:Ix.NS.PUBSUB}).c("items",{node:"".concat(Ix.NS.OMEMO_BUNDLES,":").concat(this.get("id"))});let t;try{t=await Vc.sendIQ(e)}catch(t){return zn.error("Could not fetch bundle for device ".concat(this.get("id")," from ").concat(this.get("jid"))),zn.error(t),null}if(t.querySelector("error"))throw new Fx("Could not fetch bundle",t);const n=Mx('items[node="'.concat(Ix.NS.OMEMO_BUNDLES,":").concat(this.get("id"),'"]'),t).pop(),r=Vx(Mx('bundle[xmlns="'.concat(Ix.NS.OMEMO,'"]'),n).pop());return this.save("bundle",r),r},getBundle(){return this.get("bundle")?Promise.resolve(this.get("bundle"),this):this.fetchBundleFromServer()}}),Uc.Devices=ra.extend({model:Uc.Device}),Uc.DeviceList=qo.extend({idAttribute:"jid",initialize(){this.devices=new Uc.Devices;const e="converse.devicelist-".concat(Uc.bare_jid,"-").concat(this.get("jid"));this.devices.browserStorage=Uc.createStore(e),this.fetchDevices()},async onDevicesFound(e){if(0===e.length){let e;try{e=await this.fetchDevicesFromServer()}catch(e){null===e?zn.error("Timeout error while fetching devices for ".concat(this.get("jid"))):(zn.error("Could not fetch devices for ".concat(this.get("jid"))),zn.error(e)),this.destroy()}this.get("jid")===Uc.bare_jid&&await this.publishCurrentDevice(e)}},fetchDevices(){return void 0===this._devices_promise&&(this._devices_promise=new Promise(e=>{this.devices.fetch({success:t=>e(this.onDevicesFound(t)),error:(t,n)=>{zn.error(n),e()}})})),this._devices_promise},async getOwnDeviceId(){let e=Uc.omemo_store.get("device_id");return this.devices.findWhere({id:e})||(await Uc.omemo_store.generateBundle(),e=Uc.omemo_store.get("device_id")),e},async publishCurrentDevice(e){if(this.get("jid")===Uc.bare_jid){if(await Kx(),Uc.omemo_store)return e.includes(await this.getOwnDeviceId())?void 0:this.publishDevices();zn.warn("publishCurrentDevice: omemo_store is not defined, likely a timing issue")}},async fetchDevicesFromServer(){const e=Dx({type:"get",from:Uc.bare_jid,to:this.get("jid")}).c("pubsub",{xmlns:Ix.NS.PUBSUB}).c("items",{node:Ix.NS.OMEMO_DEVICELIST});let t;try{t=await Vc.sendIQ(e)}catch(e){return zn.error(e),[]}const n='list[xmlns="'.concat(Ix.NS.OMEMO,'"] device'),r=Mx(n,t).map(e=>e.getAttribute("id"));return await Promise.all(r.map(e=>this.devices.create({id:e,jid:this.get("jid")},{promise:!0}))),r},publishDevices(){const e=Rx("item",{id:"current"}).c("list",{xmlns:Ix.NS.OMEMO});this.devices.filter(e=>e.get("active")).forEach(t=>e.c("device",{id:t.get("id")}).up());return Vc.pubsub.publish(null,Ix.NS.OMEMO_DEVICELIST,e,{"pubsub#access_model":"open"},!1)},removeOwnDevices(e){if(this.get("jid")!==Uc.bare_jid)throw new Error("Cannot remove devices from someone else's device list");return e.forEach(e=>this.devices.get(e).destroy()),this.publishDevices()}}),Uc.DeviceLists=ra.extend({model:Uc.DeviceList,getDeviceList(e){return this.get(e)||this.create({jid:e})}}),Vc.waitUntil("chatBoxesInitialized").then(qx),Vc.listen.on("parseMessage",Bx),Vc.listen.on("parseMUCMessage",Bx),Vc.listen.on("chatBoxViewInitialized",Hx),Vc.listen.on("chatRoomViewInitialized",Hx),Vc.listen.on("connected",Yx),Vc.listen.on("getToolbarButtons",rE),Vc.listen.on("statusInitialized",eE),Vc.listen.on("addClientFeatures",()=>Vc.disco.own.features.add("".concat(Ix.NS.OMEMO_DEVICELIST,"+notify"))),Vc.listen.on("userDetailsModalInitialized",e=>{const t=e.get("jid");Uc.generateFingerprints(t).catch(e=>zn.error(e))}),Vc.listen.on("profileModalInitialized",()=>{Uc.generateFingerprints(Uc.bare_jid).catch(e=>zn.error(e))}),Vc.listen.on("afterTearDown",()=>delete Uc.omemo_store),Vc.listen.on("clearSession",()=>{Uc.shouldClearCache()&&Uc.devicelists&&(Uc.devicelists.clearStore(),delete Uc.devicelists)}),Object.assign(Uc.api,{omemo:{bundle:{generate:async()=>{const e=Uc.devicelists.get(Uc.bare_jid),t=Uc.omemo_store.get("device_id");if(t){const n=e.devices.get(t);Uc.omemo_store.unset(t),n&&await new Promise(e=>n.destroy({success:e,error:e})),e.devices.trigger("remove")}await Uc.omemo_store.generateBundle(),await e.publishDevices();const n=Jx(e.devices.get(Uc.omemo_store.get("device_id")));return await Uc.omemo_store.publishBundle(),n}}}})}}); /** * @module converse-push * @description @@ -551,7 +559,7 @@ const Bw=Yc.env.utils;Yc.plugins.add("converse-profile",{dependencies:["converse * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:mS,$iq:vS}=Yc.env;mS.addNamespace("PUSH","urn:xmpp:push:0"),Yc.plugins.add("converse-push",{initialize(){async function e(e){e=e||Lc.bare_jid;const t=Lc.session.get("push_enabled")||[];if(t.includes(e))return;const n=qc.settings.get("push_app_servers").filter(e=>!e.disable),r=qc.settings.get("push_app_servers").filter(e=>e.disable),i=n.map(t=>async function(e,t){if(!t.jid||!t.node)return;if(!await qc.disco.getIdentity("pubsub","push",t.jid))return Pn.warn('Not enabling push the service "'.concat(t.jid,"\", it doesn't have the right disco identtiy."));const n=await Promise.all([qc.disco.supports(mS.NS.PUSH,t.jid),qc.disco.supports(mS.NS.PUSH,e)]);if(!n[0]&&!n[1])return void Pn.warn('Not enabling push app server "'.concat(t.jid,'", no disco support from your server.'));const r=vS({type:"set"});return e!==Lc.bare_jid&&r.attrs({to:e}),r.c("enable",{xmlns:mS.NS.PUSH,jid:t.jid,node:t.node}),t.secret&&r.c("x",{xmlns:mS.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE"}).c("value").t("".concat(mS.NS.PUBSUB,"#publish-options")).up().up().c("field",{var:"secret"}).c("value").t(t.secret),qc.sendIQ(r)}(e,t)),s=r.map(t=>async function(e,t){if(!t.jid)return;if(!await qc.disco.supports(mS.NS.PUSH,e||Lc.bare_jid))return void Pn.warn('Not disabling push app server "'.concat(t.jid,'", no disco support from your server.'));const n=vS({type:"set"});e!==Lc.bare_jid&&n.attrs({to:e}),n.c("disable",{xmlns:mS.NS.PUSH,jid:t.jid}),t.node&&n.attrs({node:t.node}),qc.sendIQ(n).catch(e=>{Pn.error("Could not disable push app server for ".concat(t.jid)),Pn.error(e)})}(e,t));try{await Promise.all(i.concat(s))}catch(e){Pn.error("Could not enable or disable push App Server"),e&&Pn.error(e)}finally{t.push(e)}Lc.session.save("push_enabled",t)}function t(t){t.get("type")==Lc.CHATROOMS_TYPE&&e(mS.getDomainFromJid(t.get("jid")))}qc.settings.extend({push_app_servers:[],enable_muc_push:!1}),qc.listen.on("statusInitialized",()=>e()),qc.settings.get("enable_muc_push")&&qc.listen.on("chatBoxesInitialized",()=>Lc.chatboxes.on("add",t))}});var _S=n(139),bS=n.n(_S),yS=n(140),wS=n.n(yS),SS=n(141),xS=n.n(SS); +const{Strophe:oE,$iq:sE}=rl.env;oE.addNamespace("PUSH","urn:xmpp:push:0"),rl.plugins.add("converse-push",{initialize(){async function e(e){e=e||Uc.bare_jid;const t=Uc.session.get("push_enabled")||[];if(t.includes(e))return;const n=Vc.settings.get("push_app_servers").filter(e=>!e.disable),r=Vc.settings.get("push_app_servers").filter(e=>e.disable),i=n.map(t=>async function(e,t){if(!t.jid||!t.node)return;if(!await Vc.disco.getIdentity("pubsub","push",t.jid))return zn.warn('Not enabling push the service "'.concat(t.jid,"\", it doesn't have the right disco identtiy."));const n=await Promise.all([Vc.disco.supports(oE.NS.PUSH,t.jid),Vc.disco.supports(oE.NS.PUSH,e)]);if(!n[0]&&!n[1])return void zn.warn('Not enabling push app server "'.concat(t.jid,'", no disco support from your server.'));const r=sE({type:"set"});return e!==Uc.bare_jid&&r.attrs({to:e}),r.c("enable",{xmlns:oE.NS.PUSH,jid:t.jid,node:t.node}),t.secret&&r.c("x",{xmlns:oE.NS.XFORM,type:"submit"}).c("field",{var:"FORM_TYPE"}).c("value").t("".concat(oE.NS.PUBSUB,"#publish-options")).up().up().c("field",{var:"secret"}).c("value").t(t.secret),Vc.sendIQ(r)}(e,t)),o=r.map(t=>async function(e,t){if(!t.jid)return;if(!await Vc.disco.supports(oE.NS.PUSH,e||Uc.bare_jid))return void zn.warn('Not disabling push app server "'.concat(t.jid,'", no disco support from your server.'));const n=sE({type:"set"});e!==Uc.bare_jid&&n.attrs({to:e}),n.c("disable",{xmlns:oE.NS.PUSH,jid:t.jid}),t.node&&n.attrs({node:t.node}),Vc.sendIQ(n).catch(e=>{zn.error("Could not disable push app server for ".concat(t.jid)),zn.error(e)})}(e,t));try{await Promise.all(i.concat(o))}catch(e){zn.error("Could not enable or disable push App Server"),e&&zn.error(e)}finally{t.push(e)}Uc.session.save("push_enabled",t)}function t(t){t.get("type")==Uc.CHATROOMS_TYPE&&e(oE.getDomainFromJid(t.get("jid")))}Vc.settings.extend({push_app_servers:[],enable_muc_push:!1}),Vc.listen.on("statusInitialized",()=>e()),Vc.settings.get("enable_muc_push")&&Vc.listen.on("chatBoxesInitialized",()=>Uc.chatboxes.on("add",t))}});var aE=n(181),cE=n.n(aE),lE=n(182),uE=n.n(lE),dE=n(183),hE=n.n(dE); /** * @module converse-register * @description @@ -560,7 +568,7 @@ const{Strophe:mS,$iq:vS}=Yc.env;mS.addNamespace("PUSH","urn:xmpp:push:0"),Yc.plu * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:ES,sizzle:AS,$iq:CS}=Yc.env,jS=Yc.env.utils;ES.addNamespace("REGISTER","jabber:iq:register");const TS=Object.keys(ES.Status).reduce((e,t)=>Math.max(e,ES.Status[t]),0);function OS(){const e=RS(['\n <div class="list-container list-container--openrooms ','">\n <a class="list-toggle open-rooms-toggle controlbox-padded" title="','" @click=','>\n <span class="fa ','"></span> ','</a>\n <div class="items-list rooms-list open-rooms-list ','">\n ',"\n </div>\n </div>"]);return OS=function(){return e},e}function kS(){const e=RS(['\n <div class="list-item controlbox-padded available-chatroom d-flex flex-row '," ",'"\n data-room-jid="','">\n\n ','\n <a class="list-item-link open-room available-room w-100"\n data-room-jid="','"\n title="','"\n @click=',">","</a>\n\n ",'\n\n <a class="list-item-action room-info fa fa-info-circle"\n data-room-jid="','"\n title="','"\n @click=','></a>\n\n <a class="list-item-action fa fa-sign-out-alt close-room"\n data-room-jid="','"\n data-room-name="','"\n title="','"\n @click=',"></a>\n </div>"]);return kS=function(){return e},e}function NS(){const e=RS(['<span class="list-item-badge badge badge--muc msgs-indicator">',"</span>"]);return NS=function(){return e},e}function IS(){const e=RS(['\n <a class="list-item-action fa fa-bookmark add-bookmark"\n data-room-jid="','"\n data-bookmark-name="','"\n @click=','\n title="','"></a>']);return IS=function(){return e},e}function MS(){const e=RS(['\n <a class="list-item-action fa fa-bookmark remove-bookmark button-on"\n data-room-jid="','"\n data-bookmark-name="','"\n @click=','\n title="','"></a>']);return MS=function(){return e},e}function RS(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}ES.Status.REGIFAIL=TS+1,ES.Status.REGISTERED=TS+2,ES.Status.CONFLICT=TS+3,ES.Status.NOTACCEPTABLE=TS+5,Yc.plugins.add("converse-register",{enabled:()=>!0,overrides:{ControlBoxView:{renderLoginPanel(){return this.__super__.renderLoginPanel.apply(this,arguments),this.renderRegistrationPanel(),this}}},initialize(){function e(e){qc.waitUntil("controlBoxInitialized").then(()=>{Lc.chatboxes.get("controlbox").set({"active-form":e})}).catch(e=>Pn.fatal(e))}Lc.CONNECTION_STATUS[ES.Status.REGIFAIL]="REGIFAIL",Lc.CONNECTION_STATUS[ES.Status.REGISTERED]="REGISTERED",Lc.CONNECTION_STATUS[ES.Status.CONFLICT]="CONFLICT",Lc.CONNECTION_STATUS[ES.Status.NOTACCEPTABLE]="NOTACCEPTABLE",qc.settings.extend({allow_registration:!0,domain_placeholder:dd(" e.g. conversejs.org"),providers_link:"https://compliance.conversations.im/",registration_domain:""}),Object.assign(Lc.ControlBoxView.prototype,{showLoginOrRegisterForm(){this.registerpanel&&("register"==this.model.get("active-form")?(this.loginpanel.el.classList.add("hidden"),this.registerpanel.el.classList.remove("hidden")):(this.loginpanel.el.classList.remove("hidden"),this.registerpanel.el.classList.add("hidden")))},renderRegistrationPanel(){if(qc.settings.get("allow_registration")){this.registerpanel=new Lc.RegisterPanel({model:this.model}),this.registerpanel.render(),this.registerpanel.el.classList.add("hidden");const e=this.el.querySelector("#converse-login-panel");e&&e.insertAdjacentElement("afterend",this.registerpanel.el),this.showLoginOrRegisterForm()}return this}}),Lc.router.route("converse/login",()=>e("login")),Lc.router.route("converse/register",()=>e("register")),Lc.RegisterPanel=jd.extend({tagName:"div",id:"converse-register-panel",className:"controlbox-pane fade-in",events:{"submit form#converse-register":"onFormSubmission","click .button-cancel":"renderProviderChoiceForm"},initialize(){this.reset(),qc.listen.on("connectionInitialized",()=>this.registerHooks())},render(){return this.model.set("registration_form_rendered",!1),this.el.innerHTML=bS()({__:dd,default_domain:qc.settings.get("registration_domain"),label_register:dd("Fetch registration form"),help_providers:dd("Tip: A list of public XMPP providers is available"),help_providers_link:dd("here"),href_providers:qc.settings.get("providers_link"),domain_placeholder:qc.settings.get("domain_placeholder")}),qc.settings.get("registration_domain")&&this.fetchRegistrationForm(qc.settings.get("registration_domain")),this},registerHooks(){const e=Lc.connection,t=e._connect_cb.bind(e);e._connect_cb=(e,n,r)=>{this._registering?this.getRegistrationFields(e,n)&&(this._registering=!1):t(e,n,r)}},getRegistrationFields(e,t){const n=Lc.connection;n.connected=!0;const r=n._proto._reqToData(e);if(!r)return;if(n._proto._connect_cb(r)===ES.Status.CONNFAIL)return this.showValidationError(dd("Sorry, we're unable to connect to your chosen provider.")),!1;const i=r.getElementsByTagName("register"),s=r.getElementsByTagName("mechanism");if(0===i.length&&0===s.length)return n._proto._no_auth_received(t),!1;if(0===i.length)return n._changeConnectStatus(ES.Status.REGIFAIL),this.showValidationError(dd("Sorry, the given provider does not support in band account registration. Please try with a different provider.")),!0;n._addSysHandler(this.onRegistrationFields.bind(this),null,"iq",null,null);const o=CS({type:"get"}).c("query",{xmlns:ES.NS.REGISTER}).tree();return o.setAttribute("id",n.getUniqueId("sendIQ")),n.send(o),n.connected=!1,!0},onRegistrationFields(e){return"error"===e.getAttribute("type")?(Lc.connection._changeConnectStatus(ES.Status.REGIFAIL,dd('Something went wrong while establishing a connection with "%1$s". Are you sure it exists?',this.domain)),!1):1!==e.getElementsByTagName("query").length?(Lc.connection._changeConnectStatus(ES.Status.REGIFAIL,"unknown"),!1):(this.setFields(e),this.model.get("registration_form_rendered")||this.renderRegistrationForm(e),!1)},reset(e){const t={fields:{},urls:[],title:"",instructions:"",registered:!1,_registering:!1,domain:null,form_type:null};Object.assign(this,t),e&&Object.assign(this,Ms(e,Object.keys(t)))},onFormSubmission(e){e&&e.preventDefault&&e.preventDefault(),null===e.target.querySelector("input[name=domain]")?this.submitRegistrationForm(e.target):this.onProviderChosen(e.target)},onProviderChosen(e){const t=e.querySelector("input[name=domain]"),n=null==t?void 0:t.value;n?(e.querySelector("input[type=submit]").classList.add("hidden"),this.fetchRegistrationForm(n.trim())):t.classList.add("error")},async fetchRegistrationForm(e){var t;return this.model.get("registration_form_rendered")||this.renderRegistrationRequest(),this.reset({domain:ES.getDomainFromJid(e),_registering:!0}),await Lc.initConnection(this.domain),null===(t=Lc.connection)||void 0===t||t.connect(this.domain,"",e=>this.onConnectStatusChanged(e)),!1},renderRegistrationRequest(){this.clearRegistrationForm().insertAdjacentHTML("beforeend",xS()({__:Lc.__,cancel:qc.settings.get("registration_domain")}))},giveFeedback(e,t){let n=this.el.querySelector(".reg-feedback");null!==n&&n.parentNode.removeChild(n);const r=this.el.querySelector("form");r.insertAdjacentHTML("afterbegin",'<span class="reg-feedback"></span>'),n=r.querySelector(".reg-feedback"),n.textContent=e,t&&n.classList.add(t)},clearRegistrationForm(){const e=this.el.querySelector("form");return e.innerHTML="",this.model.set("registration_form_rendered",!1),e},showSpinner(){const e=this.el.querySelector("form");return Wa(Tf(),e),this.model.set("registration_form_rendered",!1),this},onConnectStatusChanged(e){Pn.debug("converse-register: onConnectStatusChanged"),[ES.Status.DISCONNECTED,ES.Status.CONNFAIL,ES.Status.REGIFAIL,ES.Status.NOTACCEPTABLE,ES.Status.CONFLICT].includes(e)?(Pn.error("Problem during registration: Strophe.Status is ".concat(Lc.CONNECTION_STATUS[e])),this.abortRegistration()):e===ES.Status.REGISTERED&&(Pn.debug("Registered successfully."),Lc.connection.reset(),this.showSpinner(),["converse/login","converse/register"].includes(Lc.router.history.getFragment())&&Lc.router.navigate("",{replace:!0}),this.fields.password&&this.fields.username?(Lc.connection.connect(this.fields.username.toLowerCase()+"@"+this.domain.toLowerCase(),this.fields.password,Lc.onConnectStatusChanged),this.giveFeedback(dd("Now logging you in"),"info")):(Lc.chatboxviews.get("controlbox").renderLoginPanel(),Lc.giveFeedback(dd("Registered successfully"))),this.reset())},renderLegacyRegistrationForm(e){Object.keys(this.fields).forEach(t=>{"username"===t?e.insertAdjacentHTML("beforeend",Mh()({domain:" @".concat(this.domain),name:t,type:"text",label:t,value:"",required:!0})):e.insertAdjacentHTML("beforeend",Ah()({label:t,name:t,placeholder:t,required:!0,type:"password"===t||"email"===t?t:"text",value:""}))}),this.urls.forEach(t=>e.insertAdjacentHTML("afterend",'<a target="blank" rel="noopener" href="'+t+'">'+t+"</a>"))},renderRegistrationForm(e){const t=this.el.querySelector("form");t.innerHTML=wS()({__:dd,domain:this.domain,title:this.title,instructions:this.instructions,registration_domain:qc.settings.get("registration_domain")});const n=t.querySelector("fieldset.buttons");"xform"===this.form_type?e.querySelectorAll("field").forEach(t=>{n.insertAdjacentHTML("beforebegin",Fl.xForm2webForm(t,e,{domain:this.domain}))}):this.renderLegacyRegistrationForm(t),this.fields||t.querySelector(".button-primary").classList.add("hidden"),t.classList.remove("hidden"),this.model.set("registration_form_rendered",!0)},showValidationError(e){const t=this.el.querySelector("form");let n=t.querySelector(".form-errors");if(null===n){n='<div class="form-errors hidden"></div>';const e=t.querySelector("p.instructions");null===e?t.insertAdjacentHTML("afterbegin",n):e.insertAdjacentHTML("afterend",n),n=t.querySelector(".form-errors")}else n.innerHTML="";n.insertAdjacentHTML("beforeend",'<p class="form-help error">'+e+"</p>"),n.classList.remove("hidden")},reportErrors(e){const t=e.querySelectorAll("error");if(t.forEach(e=>this.showValidationError(e.textContent)),!t.length){const e=dd("The provider rejected your registration attempt. Please check the values you entered for correctness.");this.showValidationError(e)}},renderProviderChoiceForm(e){e&&e.preventDefault&&e.preventDefault(),Lc.connection._proto._abortAllRequests(),Lc.connection.reset(),this.render()},abortRegistration(){Lc.connection._proto._abortAllRequests(),Lc.connection.reset(),this.model.get("registration_form_rendered")?qc.settings.get("registration_domain")&&this.model.get("registration_form_rendered")&&this.fetchRegistrationForm(qc.settings.get("registration_domain")):this.render()},submitRegistrationForm(e){if(Array.from(this.el.querySelectorAll("input.required")).reduce((e,t)=>""===t.value?(t.classList.add("error"),e+1):e,0))return;const t=AS(":input:not([type=button]):not([type=submit])",e),n=CS({type:"set",id:jS.getUniqueId()}).c("query",{xmlns:ES.NS.REGISTER});if("xform"===this.form_type){n.c("x",{xmlns:ES.NS.XFORM,type:"submit"}),t.map(e=>Fl.webForm2xForm(e)).filter(e=>e).forEach(e=>n.cnode(e).up())}else t.forEach(e=>n.c(e.getAttribute("name"),{},e.value));Lc.connection._addSysHandler(this._onRegisterIQ.bind(this),null,"iq",null,null),Lc.connection.send(n),this.setFields(n.tree())},setFields(e){const t=e.querySelector("query"),n=AS('x[xmlns="'.concat(ES.NS.XFORM,'"]'),t);n.length>0?this._setFieldsFromXForm(n.pop()):this._setFieldsFromLegacy(t)},_setFieldsFromLegacy(e){[].forEach.call(e.children,e=>{"instructions"!==e.tagName.toLowerCase()?"x"!==e.tagName.toLowerCase()?this.fields[e.tagName.toLowerCase()]=ES.getText(e):"jabber:x:oob"===e.getAttribute("xmlns")&&this.urls.concat(AS("url",e).map(e=>e.textContent)):this.instructions=ES.getText(e)}),this.form_type="legacy"},_setFieldsFromXForm(e){var t,n;this.title=null===(t=e.querySelector("title"))||void 0===t?void 0:t.textContent,this.instructions=null===(n=e.querySelector("instructions"))||void 0===n?void 0:n.textContent,e.querySelectorAll("field").forEach(e=>{const t=e.getAttribute("var");var n,r;t?this.fields[t.toLowerCase()]=null!==(n=null===(r=e.querySelector("value"))||void 0===r?void 0:r.textContent)&&void 0!==n?n:"":Pn.warn("Found field we couldn't parse")}),this.form_type="xform"},_onRegisterIQ(e){if("error"===e.getAttribute("type")){Pn.error("Registration failed."),this.reportErrors(e);let t=e.getElementsByTagName("error");if(1!==t.length)return Lc.connection._changeConnectStatus(ES.Status.REGIFAIL,"unknown"),!1;t=t[0].firstElementChild.tagName.toLowerCase(),"conflict"===t?Lc.connection._changeConnectStatus(ES.Status.CONFLICT,t):"not-acceptable"===t?Lc.connection._changeConnectStatus(ES.Status.NOTACCEPTABLE,t):Lc.connection._changeConnectStatus(ES.Status.REGIFAIL,t)}else Lc.connection._changeConnectStatus(ES.Status.REGISTERED,null);return!1}}),qc.listen.on("controlBoxInitialized",e=>{e.model.on("change:active-form",e.showLoginOrRegisterForm,e)})}});const DS=e=>{const t=dd("Leave this groupchat");return Ga(kS(),e.currently_open(e.room)?"open":"",e.room.get("num_unread_general")?"unread-msgs":"",e.room.get("jid"),e.room.get("num_unread")?(e=>Ga(NS(),e.room.get("num_unread")))(e):"",e.room.get("jid"),dd("Click to open this groupchat"),e.openRoom,e.room.getDisplayName(),e.allow_bookmarks?(e=>{const t=dd("Bookmark this groupchat"),n=dd("Unbookmark this groupchat");return e.bookmarked?Ga(MS(),e.room.get("jid"),e.room.getDisplayName(),e.removeBookmark,e.bookmarked?n:t):Ga(IS(),e.room.get("jid"),e.room.getDisplayName(),e.addBookmark,e.bookmarked?n:t)})(e):"",e.room.get("jid"),dd("Show more information on this groupchat"),e.showRoomDetailsModal,e.room.get("jid"),e.room.getDisplayName(),t,e.closeRoom)}; +const{Strophe:fE,sizzle:pE,$iq:gE}=rl.env,mE=rl.env.utils;fE.addNamespace("REGISTER","jabber:iq:register");const vE=Object.keys(fE.Status).reduce((e,t)=>Math.max(e,fE.Status[t]),0);function _E(){const e=xE(['\n <div class="list-container list-container--openrooms ','">\n <a class="list-toggle open-rooms-toggle controlbox-padded" title="','" @click=','>\n <span class="fa ','"></span> ','</a>\n <div class="items-list rooms-list open-rooms-list ','">\n ',"\n </div>\n </div>"]);return _E=function(){return e},e}function bE(){const e=xE(['\n <div class="list-item controlbox-padded available-chatroom d-flex flex-row '," ",'"\n data-room-jid="','">\n\n ','\n <a class="list-item-link open-room available-room w-100"\n data-room-jid="','"\n title="','"\n @click=',">","</a>\n\n ",'\n\n <a class="list-item-action room-info fa fa-info-circle"\n data-room-jid="','"\n title="','"\n @click=','></a>\n\n <a class="list-item-action fa fa-sign-out-alt close-room"\n data-room-jid="','"\n data-room-name="','"\n title="','"\n @click=',"></a>\n </div>"]);return bE=function(){return e},e}function yE(){const e=xE(['<span class="list-item-badge badge badge--muc msgs-indicator">',"</span>"]);return yE=function(){return e},e}function wE(){const e=xE(['\n <a class="list-item-action fa fa-bookmark add-bookmark"\n data-room-jid="','"\n data-bookmark-name="','"\n @click=','\n title="','"></a>']);return wE=function(){return e},e}function SE(){const e=xE(['\n <a class="list-item-action fa fa-bookmark remove-bookmark button-on"\n data-room-jid="','"\n data-bookmark-name="','"\n @click=','\n title="','"></a>']);return SE=function(){return e},e}function xE(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}fE.Status.REGIFAIL=vE+1,fE.Status.REGISTERED=vE+2,fE.Status.CONFLICT=vE+3,fE.Status.NOTACCEPTABLE=vE+5,rl.plugins.add("converse-register",{enabled:()=>!0,overrides:{ControlBoxView:{renderLoginPanel(){return this.__super__.renderLoginPanel.apply(this,arguments),this.renderRegistrationPanel(),this}}},initialize(){function e(e){Vc.waitUntil("controlBoxInitialized").then(()=>{Uc.chatboxes.get("controlbox").set({"active-form":e})}).catch(e=>zn.fatal(e))}Uc.CONNECTION_STATUS[fE.Status.REGIFAIL]="REGIFAIL",Uc.CONNECTION_STATUS[fE.Status.REGISTERED]="REGISTERED",Uc.CONNECTION_STATUS[fE.Status.CONFLICT]="CONFLICT",Uc.CONNECTION_STATUS[fE.Status.NOTACCEPTABLE]="NOTACCEPTABLE",Vc.settings.extend({allow_registration:!0,domain_placeholder:zd(" e.g. conversejs.org"),providers_link:"https://compliance.conversations.im/",registration_domain:""}),Object.assign(Uc.ControlBoxView.prototype,{showLoginOrRegisterForm(){this.registerpanel&&("register"==this.model.get("active-form")?(this.loginpanel.el.classList.add("hidden"),this.registerpanel.el.classList.remove("hidden")):(this.loginpanel.el.classList.remove("hidden"),this.registerpanel.el.classList.add("hidden")))},renderRegistrationPanel(){if(Vc.settings.get("allow_registration")){this.registerpanel=new Uc.RegisterPanel({model:this.model}),this.registerpanel.render(),this.registerpanel.el.classList.add("hidden");const e=this.el.querySelector("#converse-login-panel");e&&e.insertAdjacentElement("afterend",this.registerpanel.el),this.showLoginOrRegisterForm()}return this}}),Uc.router.route("converse/login",()=>e("login")),Uc.router.route("converse/register",()=>e("register")),Uc.RegisterPanel=eh.extend({tagName:"div",id:"converse-register-panel",className:"controlbox-pane fade-in",events:{"submit form#converse-register":"onFormSubmission","click .button-cancel":"renderProviderChoiceForm"},initialize(){this.reset(),Vc.listen.on("connectionInitialized",()=>this.registerHooks())},render(){return this.model.set("registration_form_rendered",!1),this.el.innerHTML=cE()({__:zd,default_domain:Vc.settings.get("registration_domain"),label_register:zd("Fetch registration form"),help_providers:zd("Tip: A list of public XMPP providers is available"),help_providers_link:zd("here"),href_providers:Vc.settings.get("providers_link"),domain_placeholder:Vc.settings.get("domain_placeholder")}),Vc.settings.get("registration_domain")&&this.fetchRegistrationForm(Vc.settings.get("registration_domain")),this},registerHooks(){const e=Uc.connection,t=e._connect_cb.bind(e);e._connect_cb=(e,n,r)=>{this._registering?this.getRegistrationFields(e,n)&&(this._registering=!1):t(e,n,r)}},getRegistrationFields(e,t){const n=Uc.connection;n.connected=!0;const r=n._proto._reqToData(e);if(!r)return;if(n._proto._connect_cb(r)===fE.Status.CONNFAIL)return this.showValidationError(zd("Sorry, we're unable to connect to your chosen provider.")),!1;const i=r.getElementsByTagName("register"),o=r.getElementsByTagName("mechanism");if(0===i.length&&0===o.length)return n._proto._no_auth_received(t),!1;if(0===i.length)return n._changeConnectStatus(fE.Status.REGIFAIL),this.showValidationError(zd("Sorry, the given provider does not support in band account registration. Please try with a different provider.")),!0;n._addSysHandler(this.onRegistrationFields.bind(this),null,"iq",null,null);const s=gE({type:"get"}).c("query",{xmlns:fE.NS.REGISTER}).tree();return s.setAttribute("id",n.getUniqueId("sendIQ")),n.send(s),n.connected=!1,!0},onRegistrationFields(e){return"error"===e.getAttribute("type")?(Uc.connection._changeConnectStatus(fE.Status.REGIFAIL,zd('Something went wrong while establishing a connection with "%1$s". Are you sure it exists?',this.domain)),!1):1!==e.getElementsByTagName("query").length?(Uc.connection._changeConnectStatus(fE.Status.REGIFAIL,"unknown"),!1):(this.setFields(e),this.model.get("registration_form_rendered")||this.renderRegistrationForm(e),!1)},reset(e){const t={fields:{},urls:[],title:"",instructions:"",registered:!1,_registering:!1,domain:null,form_type:null};Object.assign(this,t),e&&Object.assign(this,Bo(e,Object.keys(t)))},onFormSubmission(e){e&&e.preventDefault&&e.preventDefault(),null===e.target.querySelector("input[name=domain]")?this.submitRegistrationForm(e.target):this.onProviderChosen(e.target)},onProviderChosen(e){const t=e.querySelector("input[name=domain]"),n=null==t?void 0:t.value;n?(e.querySelector("input[type=submit]").classList.add("hidden"),this.fetchRegistrationForm(n.trim())):t.classList.add("error")},async fetchRegistrationForm(e){var t;return this.model.get("registration_form_rendered")||this.renderRegistrationRequest(),this.reset({domain:fE.getDomainFromJid(e),_registering:!0}),await Uc.initConnection(this.domain),null===(t=Uc.connection)||void 0===t||t.connect(this.domain,"",e=>this.onConnectStatusChanged(e)),!1},renderRegistrationRequest(){this.clearRegistrationForm().insertAdjacentHTML("beforeend",hE()({__:Uc.__,cancel:Vc.settings.get("registration_domain")}))},giveFeedback(e,t){let n=this.el.querySelector(".reg-feedback");null!==n&&n.parentNode.removeChild(n);const r=this.el.querySelector("form");r.insertAdjacentHTML("afterbegin",'<span class="reg-feedback"></span>'),n=r.querySelector(".reg-feedback"),n.textContent=e,t&&n.classList.add(t)},clearRegistrationForm(){const e=this.el.querySelector("form");return e.innerHTML="",this.model.set("registration_form_rendered",!1),e},showSpinner(){const e=this.el.querySelector("form");return Ya(fp(),e),this.model.set("registration_form_rendered",!1),this},onConnectStatusChanged(e){zn.debug("converse-register: onConnectStatusChanged"),[fE.Status.DISCONNECTED,fE.Status.CONNFAIL,fE.Status.REGIFAIL,fE.Status.NOTACCEPTABLE,fE.Status.CONFLICT].includes(e)?(zn.error("Problem during registration: Strophe.Status is ".concat(Uc.CONNECTION_STATUS[e])),this.abortRegistration()):e===fE.Status.REGISTERED&&(zn.debug("Registered successfully."),Uc.connection.reset(),this.showSpinner(),["converse/login","converse/register"].includes(Uc.router.history.getFragment())&&Uc.router.navigate("",{replace:!0}),this.fields.password&&this.fields.username?(Uc.connection.connect(this.fields.username.toLowerCase()+"@"+this.domain.toLowerCase(),this.fields.password,Uc.onConnectStatusChanged),this.giveFeedback(zd("Now logging you in"),"info")):(Uc.chatboxviews.get("controlbox").renderLoginPanel(),Uc.giveFeedback(zd("Registered successfully"))),this.reset())},renderLegacyRegistrationForm(e){Object.keys(this.fields).forEach(t=>{"username"===t?e.insertAdjacentHTML("beforeend",Eh()({domain:" @".concat(this.domain),name:t,type:"text",label:t,value:"",required:!0})):e.insertAdjacentHTML("beforeend",mh()({label:t,name:t,placeholder:t,required:!0,type:"password"===t||"email"===t?t:"text",value:""}))}),this.urls.forEach(t=>e.insertAdjacentHTML("afterend",'<a target="blank" rel="noopener" href="'+t+'">'+t+"</a>"))},renderRegistrationForm(e){const t=this.el.querySelector("form");t.innerHTML=uE()({__:zd,domain:this.domain,title:this.title,instructions:this.instructions,registration_domain:Vc.settings.get("registration_domain")});const n=t.querySelector("fieldset.buttons");"xform"===this.form_type?e.querySelectorAll("field").forEach(t=>{n.insertAdjacentHTML("beforebegin",Kl.xForm2webForm(t,e,{domain:this.domain}))}):this.renderLegacyRegistrationForm(t),this.fields||t.querySelector(".button-primary").classList.add("hidden"),t.classList.remove("hidden"),this.model.set("registration_form_rendered",!0)},showValidationError(e){const t=this.el.querySelector("form");let n=t.querySelector(".form-errors");if(null===n){n='<div class="form-errors hidden"></div>';const e=t.querySelector("p.instructions");null===e?t.insertAdjacentHTML("afterbegin",n):e.insertAdjacentHTML("afterend",n),n=t.querySelector(".form-errors")}else n.innerHTML="";n.insertAdjacentHTML("beforeend",'<p class="form-help error">'+e+"</p>"),n.classList.remove("hidden")},reportErrors(e){const t=e.querySelectorAll("error");if(t.forEach(e=>this.showValidationError(e.textContent)),!t.length){const e=zd("The provider rejected your registration attempt. Please check the values you entered for correctness.");this.showValidationError(e)}},renderProviderChoiceForm(e){e&&e.preventDefault&&e.preventDefault(),Uc.connection._proto._abortAllRequests(),Uc.connection.reset(),this.render()},abortRegistration(){Uc.connection._proto._abortAllRequests(),Uc.connection.reset(),this.model.get("registration_form_rendered")?Vc.settings.get("registration_domain")&&this.model.get("registration_form_rendered")&&this.fetchRegistrationForm(Vc.settings.get("registration_domain")):this.render()},submitRegistrationForm(e){if(Array.from(this.el.querySelectorAll("input.required")).reduce((e,t)=>""===t.value?(t.classList.add("error"),e+1):e,0))return;const t=pE(":input:not([type=button]):not([type=submit])",e),n=gE({type:"set",id:mE.getUniqueId()}).c("query",{xmlns:fE.NS.REGISTER});if("xform"===this.form_type){n.c("x",{xmlns:fE.NS.XFORM,type:"submit"}),t.map(e=>Kl.webForm2xForm(e)).filter(e=>e).forEach(e=>n.cnode(e).up())}else t.forEach(e=>n.c(e.getAttribute("name"),{},e.value));Uc.connection._addSysHandler(this._onRegisterIQ.bind(this),null,"iq",null,null),Uc.connection.send(n),this.setFields(n.tree())},setFields(e){const t=e.querySelector("query"),n=pE('x[xmlns="'.concat(fE.NS.XFORM,'"]'),t);n.length>0?this._setFieldsFromXForm(n.pop()):this._setFieldsFromLegacy(t)},_setFieldsFromLegacy(e){[].forEach.call(e.children,e=>{"instructions"!==e.tagName.toLowerCase()?"x"!==e.tagName.toLowerCase()?this.fields[e.tagName.toLowerCase()]=fE.getText(e):"jabber:x:oob"===e.getAttribute("xmlns")&&this.urls.concat(pE("url",e).map(e=>e.textContent)):this.instructions=fE.getText(e)}),this.form_type="legacy"},_setFieldsFromXForm(e){var t,n;this.title=null===(t=e.querySelector("title"))||void 0===t?void 0:t.textContent,this.instructions=null===(n=e.querySelector("instructions"))||void 0===n?void 0:n.textContent,e.querySelectorAll("field").forEach(e=>{const t=e.getAttribute("var");var n,r;t?this.fields[t.toLowerCase()]=null!==(n=null===(r=e.querySelector("value"))||void 0===r?void 0:r.textContent)&&void 0!==n?n:"":zn.warn("Found field we couldn't parse")}),this.form_type="xform"},_onRegisterIQ(e){if("error"===e.getAttribute("type")){zn.error("Registration failed."),this.reportErrors(e);let t=e.getElementsByTagName("error");if(1!==t.length)return Uc.connection._changeConnectStatus(fE.Status.REGIFAIL,"unknown"),!1;t=t[0].firstElementChild.tagName.toLowerCase(),"conflict"===t?Uc.connection._changeConnectStatus(fE.Status.CONFLICT,t):"not-acceptable"===t?Uc.connection._changeConnectStatus(fE.Status.NOTACCEPTABLE,t):Uc.connection._changeConnectStatus(fE.Status.REGIFAIL,t)}else Uc.connection._changeConnectStatus(fE.Status.REGISTERED,null);return!1}}),Vc.listen.on("controlBoxInitialized",e=>{e.model.on("change:active-form",e.showLoginOrRegisterForm,e)})}});const EE=e=>{const t=zd("Leave this groupchat");return Za(bE(),e.currently_open(e.room)?"open":"",e.room.get("num_unread_general")?"unread-msgs":"",e.room.get("jid"),e.room.get("num_unread")?(e=>Za(yE(),e.room.get("num_unread")))(e):"",e.room.get("jid"),zd("Click to open this groupchat"),e.openRoom,e.room.getDisplayName(),e.allow_bookmarks?(e=>{const t=zd("Bookmark this groupchat"),n=zd("Unbookmark this groupchat");return e.bookmarked?Za(SE(),e.room.get("jid"),e.room.getDisplayName(),e.removeBookmark,e.bookmarked?n:t):Za(wE(),e.room.get("jid"),e.room.getDisplayName(),e.addBookmark,e.bookmarked?n:t)})(e):"",e.room.get("jid"),zd("Show more information on this groupchat"),e.showRoomDetailsModal,e.room.get("jid"),e.room.getDisplayName(),t,e.closeRoom)}; /** * @module converse-roomslist * @description @@ -569,16 +577,16 @@ const{Strophe:ES,sizzle:AS,$iq:CS}=Yc.env,jS=Yc.env.utils;ES.addNamespace("REGIS * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:PS}=Yc.env,LS=Yc.env.utils;function zS(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="addContactModalLabel">',"</h5>\n ",'\n </div>\n <form class="converse-form add-xmpp-contact">\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="form-group add-xmpp-contact__jid">\n <label class="clearfix" for="jid">',':</label>\n <div class="suggestion-box suggestion-box__jid">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <input type="text" name="jid" ?required=','\n value="','"\n class="form-control suggestion-box__input"\n placeholder="','"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </div>\n <div class="form-group add-xmpp-contact__name">\n <label class="clearfix" for="name">',':</label>\n <div class="suggestion-box suggestion-box__name">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <input type="text" name="name" value="','"\n class="form-control suggestion-box__input"\n placeholder="','"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </div>\n <div class="form-group">\n <div class="invalid-feedback">','</div>\n </div>\n <button type="submit" class="btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n </div>\n "]);return zS=function(){return e},e}Yc.plugins.add("converse-roomslist",{dependencies:["converse-singleton","converse-controlbox","converse-muc","converse-bookmarks"],initialize(){qc.promises.add("roomsListInitialized"),Lc.RoomsList=Rs.extend({defaults:{"toggle-state":Lc.OPENED}}),Lc.RoomsListView=jd.extend({tagName:"span",initialize(){this.listenTo(this.model,"add",this.renderIfChatRoom),this.listenTo(this.model,"remove",this.renderIfChatRoom),this.listenTo(this.model,"destroy",this.renderIfChatRoom),this.listenTo(this.model,"change",this.renderIfRelevantChange);const e="converse.roomslist".concat(Lc.bare_jid);this.list_model=new Lc.RoomsList({id:e}),this.list_model.browserStorage=Lc.createStore(e),this.list_model.fetch(),this.render(),this.insertIntoControlBox()},renderIfChatRoom(e){LS.isChatRoom(e)&&this.render()},renderIfRelevantChange(e){const t=["bookmarked","hidden","name","num_unread","num_unread_general"],n=e.changed||{};LS.isChatRoom(e)&&Object.keys(n).filter(e=>t.includes(e)).length&&this.render()},toHTML(){return(e=>{const t=dd("Click to toggle the list of open groupchats");return Ga(OS(),e.rooms.length?"":"hidden",t,e.toggleRoomsList,e.toggle_state===e._converse.OPENED?"fa-caret-down":"fa-caret-right",dd("Open Groupchats"),e.collapsed&&"collapsed",e.rooms.map(t=>DS(Object.assign({room:t},e))))})({_converse:Lc,addBookmark:e=>this.addBookmark(e),allow_bookmarks:Lc.allow_bookmarks&&Lc.bookmarks,closeRoom:e=>this.closeRoom(e),collapsed:this.list_model.get("toggle-state")!==Lc.OPENED,currently_open:e=>Lc.isUniView()&&!e.get("hidden"),openRoom:e=>this.openRoom(e),removeBookmark:e=>this.removeBookmark(e),rooms:this.model.filter(e=>e.get("type")===Lc.CHATROOMS_TYPE),showRoomDetailsModal:e=>this.showRoomDetailsModal(e),toggleRoomsList:e=>this.toggleRoomsList(e),toggle_state:this.list_model.get("toggle-state")})},insertIntoControlBox(){const e=Lc.chatboxviews.get("controlbox");if(void 0!==e&&!LS.rootContains(Lc.root,this.el)){const t=e.el.querySelector(".list-container--openrooms");t&&t.parentNode.replaceChild(this.el,t)}},showRoomDetailsModal(e){const t=e.target.getAttribute("data-room-jid"),n=Lc.chatboxes.get(t);e.preventDefault(),void 0===n.room_details_modal&&(n.room_details_modal=new Jb({model:n})),n.room_details_modal.show(e)},async openRoom(e){e.preventDefault();const t=e.target.textContent,n=e.target.getAttribute("data-room-jid"),r={name:t||PS.unescapeNode(PS.getNodeFromJid(n))||n};await qc.rooms.open(n,r,!0),qc.chatviews.get(n).maybeFocus()},closeRoom(e){e.preventDefault();const t=e.target.getAttribute("data-room-name"),n=e.target.getAttribute("data-room-jid");confirm(dd("Are you sure you want to leave the groupchat %1$s?",t))&&Lc.chatboxviews.get(n).close()},removeBookmark:Lc.removeBookmarkViaEvent,addBookmark:Lc.addBookmarkViaEvent,toggleRoomsList(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");t.classList.contains("fa-caret-down")?LS.slideIn(this.el.querySelector(".open-rooms-list")).then(()=>{this.list_model.save({"toggle-state":Lc.CLOSED}),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")}):LS.slideOut(this.el.querySelector(".open-rooms-list")).then(()=>{this.list_model.save({"toggle-state":Lc.OPENED}),t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down")})}});const e=function(){Lc.rooms_list_view=new Lc.RoomsListView({model:Lc.chatboxes}),qc.trigger("roomsListInitialized")};qc.listen.on("connected",async()=>{Lc.allow_bookmarks?await qc.waitUntil("bookmarksInitialized"):await Promise.all([qc.waitUntil("chatBoxesFetched"),qc.waitUntil("roomsPanelRendered")]),e()}),qc.listen.on("reconnected",e)}});var FS=n(142),BS=n.n(FS),qS=n(143),HS=n.n(qS),US=n(144),$S=n.n(US),WS=n(145),VS=n.n(WS);function GS(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="controlbox-padded roster-filter-form input-button-group ','"\n @submit=','>\n <div class="form-inline flex-nowrap">\n <div class="filter-by d-flex flex-nowrap">\n <span @click=',' class="fa fa-user ','" data-type="contacts" title="','"></span>\n <span @click=',' class="fa fa-users ','" data-type="groups" title="','"></span>\n <span @click=',' class="fa fa-circle ','" data-type="state" title="','"></span>\n </div>\n <div class="btn-group">\n <input .value="','"\n @keydown=','\n class="roster-filter form-control ','"\n placeholder="','"/>\n <span class="clear-input fa fa-times ','"\n @click=','>\n </span>\n </div>\n <select class="form-control state-type ','"\n @change=','>\n <option value="">',"</option>\n <option ?selected=",' value="unread_messages">',"</option>\n <option ?selected=",' value="online">',"</option>\n <option ?selected=",' value="chat">',"</option>\n <option ?selected=",' value="dnd">',"</option>\n <option ?selected=",' value="away">',"</option>\n <option ?selected=",' value="xa">',"</option>\n <option ?selected=",' value="offline">',"</option>\n </select>\n </div>\n </form>\n"]);return GS=function(){return e},e}var JS=n(146),XS=n.n(JS); +const{Strophe:AE}=rl.env,CE=rl.env.utils;function jE(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <div class="modal-dialog" role="document">\n <div class="modal-content">\n <div class="modal-header">\n <h5 class="modal-title" id="addContactModalLabel">',"</h5>\n ",'\n </div>\n <form class="converse-form add-xmpp-contact">\n <div class="modal-body">\n <span class="modal-alert"></span>\n <div class="form-group add-xmpp-contact__jid">\n <label class="clearfix" for="jid">',':</label>\n <div class="suggestion-box suggestion-box__jid">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <input type="text" name="jid" ?required=','\n value="','"\n class="form-control suggestion-box__input"\n placeholder="','"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </div>\n <div class="form-group add-xmpp-contact__name">\n <label class="clearfix" for="name">',':</label>\n <div class="suggestion-box suggestion-box__name">\n <ul class="suggestion-box__results suggestion-box__results--above" hidden=""></ul>\n <input type="text" name="name" value="','"\n class="form-control suggestion-box__input"\n placeholder="','"/>\n <span class="suggestion-box__additions visually-hidden" role="status" aria-live="assertive" aria-relevant="additions"></span>\n </div>\n </div>\n <div class="form-group">\n <div class="invalid-feedback">','</div>\n </div>\n <button type="submit" class="btn btn-primary">',"</button>\n </div>\n </form>\n </div>\n </div>\n "]);return jE=function(){return e},e}rl.plugins.add("converse-roomslist",{dependencies:["converse-singleton","converse-controlbox","converse-muc","converse-bookmarks"],initialize(){Vc.promises.add("roomsListInitialized"),Uc.RoomsList=qo.extend({defaults:{"toggle-state":Uc.OPENED}}),Uc.RoomsListView=eh.extend({tagName:"span",initialize(){this.listenTo(this.model,"add",this.renderIfChatRoom),this.listenTo(this.model,"remove",this.renderIfChatRoom),this.listenTo(this.model,"destroy",this.renderIfChatRoom),this.listenTo(this.model,"change",this.renderIfRelevantChange);const e="converse.roomslist".concat(Uc.bare_jid);this.list_model=new Uc.RoomsList({id:e}),this.list_model.browserStorage=Uc.createStore(e),this.list_model.fetch(),this.render(),this.insertIntoControlBox()},renderIfChatRoom(e){CE.isChatRoom(e)&&this.render()},renderIfRelevantChange(e){const t=["bookmarked","hidden","name","num_unread","num_unread_general"],n=e.changed||{};CE.isChatRoom(e)&&Object.keys(n).filter(e=>t.includes(e)).length&&this.render()},toHTML(){return(e=>{const t=zd("Click to toggle the list of open groupchats");return Za(_E(),e.rooms.length?"":"hidden",t,e.toggleRoomsList,e.toggle_state===e._converse.OPENED?"fa-caret-down":"fa-caret-right",zd("Open Groupchats"),e.collapsed&&"collapsed",e.rooms.map(t=>EE(Object.assign({room:t},e))))})({_converse:Uc,addBookmark:e=>this.addBookmark(e),allow_bookmarks:Uc.allow_bookmarks&&Uc.bookmarks,closeRoom:e=>this.closeRoom(e),collapsed:this.list_model.get("toggle-state")!==Uc.OPENED,currently_open:e=>Uc.isUniView()&&!e.get("hidden"),openRoom:e=>this.openRoom(e),removeBookmark:e=>this.removeBookmark(e),rooms:this.model.filter(e=>e.get("type")===Uc.CHATROOMS_TYPE),showRoomDetailsModal:e=>this.showRoomDetailsModal(e),toggleRoomsList:e=>this.toggleRoomsList(e),toggle_state:this.list_model.get("toggle-state")})},insertIntoControlBox(){const e=Uc.chatboxviews.get("controlbox");if(void 0!==e&&!CE.rootContains(Uc.root,this.el)){const t=e.el.querySelector(".list-container--openrooms");t&&t.parentNode.replaceChild(this.el,t)}},showRoomDetailsModal(e){const t=e.target.getAttribute("data-room-jid"),n=Uc.chatboxes.get(t);e.preventDefault(),Vc.modal.show(dw,{model:n},e)},async openRoom(e){e.preventDefault();const t=e.target.textContent,n=e.target.getAttribute("data-room-jid"),r={name:t||AE.unescapeNode(AE.getNodeFromJid(n))||n};await Vc.rooms.open(n,r,!0),Vc.chatviews.get(n).maybeFocus()},closeRoom(e){e.preventDefault();const t=e.target.getAttribute("data-room-name"),n=e.target.getAttribute("data-room-jid");confirm(zd("Are you sure you want to leave the groupchat %1$s?",t))&&Uc.chatboxviews.get(n).close()},removeBookmark:Uc.removeBookmarkViaEvent,addBookmark:Uc.addBookmarkViaEvent,toggleRoomsList(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");t.classList.contains("fa-caret-down")?CE.slideIn(this.el.querySelector(".open-rooms-list")).then(()=>{this.list_model.save({"toggle-state":Uc.CLOSED}),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")}):CE.slideOut(this.el.querySelector(".open-rooms-list")).then(()=>{this.list_model.save({"toggle-state":Uc.OPENED}),t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down")})}});const e=function(){Uc.rooms_list_view=new Uc.RoomsListView({model:Uc.chatboxes}),Vc.trigger("roomsListInitialized")};Vc.listen.on("connected",async()=>{Uc.allow_bookmarks?await Vc.waitUntil("bookmarksInitialized"):await Promise.all([Vc.waitUntil("chatBoxesFetched"),Vc.waitUntil("roomsPanelRendered")]),e()}),Vc.listen.on("reconnected",e)}});const{Strophe:TE}=rl.env,OE=rl.env.utils,kE=df.extend({id:"add-contact-modal",events:{"submit form":"addContactFromForm"},initialize(){df.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render)},toHTML(){const e=Vc.settings.get("xhr_user_search_url")?zd("Contact name"):zd("Optional nickname");return(e=>{const t=zd("name@example.org"),n=zd("Add"),r=zd("Please enter a valid XMPP address"),i=zd("Add a Contact"),o=zd("XMPP Address"),s=zd("Nickname");return Za(jE(),i,mf,o,!e._converse.xhr_user_search_url,e.jid||"",t,s,e.nickname||"",s,r,n)})(Object.assign(this.model.toJSON(),{_converse:Uc,label_nickname:e}))},afterRender(){"string"==typeof Vc.settings.get("xhr_user_search_url")?this.initXHRAutoComplete():this.initJIDAutoComplete();const e=this.el.querySelector('input[name="jid"]');this.el.addEventListener("shown.bs.modal",()=>e.focus(),!1)},initJIDAutoComplete(){if(!Vc.settings.get("autocomplete_add_contact"))return;const e=this.el.querySelector(".suggestion-box__jid").parentElement;this.jid_auto_complete=new Uc.AutoComplete(e,{data:(e,t)=>"".concat(t.slice(0,t.indexOf("@")),"@").concat(e),filter:Uc.FILTER_STARTSWITH,list:[...new Set(Uc.roster.map(e=>TE.getDomainFromJid(e.get("jid"))))]})},initXHRAutoComplete(){if(!Vc.settings.get("autocomplete_add_contact"))return this.initXHRFetch();const e=this.el.querySelector(".suggestion-box__name").parentElement;this.name_auto_complete=new Uc.AutoComplete(e,{auto_evaluate:!1,filter:Uc.FILTER_STARTSWITH,list:[]});const t=new window.XMLHttpRequest;t.onload=()=>{if(t.responseText){const e=t.responseText;this.name_auto_complete.list=JSON.parse(e).map(e=>({label:e.fullname||e.jid,value:e.jid})),this.name_auto_complete.auto_completing=!0,this.name_auto_complete.evaluate()}};const n=this.el.querySelector('input[name="name"]');n.addEventListener("input",Rc(()=>{t.open("GET","".concat(Vc.settings.get("xhr_user_search_url"),"q=").concat(encodeURIComponent(n.value)),!0),t.send()},300)),this.name_auto_complete.on("suggestion-box-selectcomplete",e=>{this.el.querySelector('input[name="name"]').value=e.text.label,this.el.querySelector('input[name="jid"]').value=e.text.value})},initXHRFetch(){this.xhr=new window.XMLHttpRequest,this.xhr.onload=()=>{if(this.xhr.responseText){const e=this.xhr.responseText,t=JSON.parse(e).map(e=>({label:e.fullname||e.jid,value:e.jid}));if(1!==t.length){const e=this.el.querySelector(".invalid-feedback");return e.textContent=zd("Sorry, could not find a contact with that name"),void OE.addClass("d-block",e)}const n=t[0].value;if(this.validateSubmission(n)){const e=this.el.querySelector("form"),r=t[0].label;this.afterSubmission(e,n,r)}}}},validateSubmission(e){const t=this.el.querySelector(".invalid-feedback");return!e||Ho(e.split("@")).length<2?(OE.addClass("is-invalid",this.el.querySelector('input[name="jid"]')),OE.addClass("d-block",t),!1):Uc.roster.get(TE.getBareJidFromJid(e))?(t.textContent=zd("This contact has already been added"),OE.addClass("d-block",t),!1):(OE.removeClass("d-block",t),!0)},afterSubmission(e,t,n){Uc.roster.addAndSubscribe(t,n),this.model.clear(),this.modal.hide()},addContactFromForm(e){e.preventDefault();const t=new FormData(e.target),n=(t.get("jid")||"").trim();if(!n&&"string"==typeof Vc.settings.get("xhr_user_search_url")){const e=this.el.querySelector('input[name="name"]');return this.xhr.open("GET","".concat(Vc.settings.get("xhr_user_search_url"),"q=").concat(encodeURIComponent(e.value)),!0),void this.xhr.send()}this.validateSubmission(n)&&this.afterSubmission(e.target,n,t.get("name"))}});Uc.AddContactModal=kE;var NE=n(184),IE=n.n(NE),ME=n(185),RE=n.n(ME),DE=n(186),PE=n.n(DE),LE=n(187),zE=n.n(LE);function FE(){const e=function(e,t){t||(t=e.slice(0));return Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}(['\n <form class="controlbox-padded roster-filter-form input-button-group ','"\n @submit=','>\n <div class="form-inline flex-nowrap">\n <div class="filter-by d-flex flex-nowrap">\n <span @click=',' class="fa fa-user ','" data-type="contacts" title="','"></span>\n <span @click=',' class="fa fa-users ','" data-type="groups" title="','"></span>\n <span @click=',' class="fa fa-circle ','" data-type="state" title="','"></span>\n </div>\n <div class="btn-group">\n <input .value="','"\n @keydown=','\n class="roster-filter form-control ','"\n placeholder="','"/>\n <span class="clear-input fa fa-times ','"\n @click=','>\n </span>\n </div>\n <select class="form-control state-type ','"\n @change=','>\n <option value="">',"</option>\n <option ?selected=",' value="unread_messages">',"</option>\n <option ?selected=",' value="online">',"</option>\n <option ?selected=",' value="chat">',"</option>\n <option ?selected=",' value="dnd">',"</option>\n <option ?selected=",' value="away">',"</option>\n <option ?selected=",' value="xa">',"</option>\n <option ?selected=",' value="offline">',"</option>\n </select>\n </div>\n </form>\n"]);return FE=function(){return e},e}var BE=n(188),qE=n.n(BE); /** * @module converse-rosterview * @copyright 2020, the Converse.js contributors * @license Mozilla Public License (MPLv2) */ -const{Strophe:QS}=Yc.env,YS=Yc.env.utils;Yc.plugins.add("converse-rosterview",{dependencies:["converse-roster","converse-modal","converse-chatboxviews"],initialize(){qc.settings.extend({autocomplete_add_contact:!0,allow_chat_pending_contacts:!0,allow_contact_removal:!0,hide_offline_users:!1,roster_groups:!0,xhr_user_search_url:null}),qc.promises.add("rosterViewInitialized");const e={dnd:dd("This contact is busy"),online:dd("This contact is online"),offline:dd("This contact is offline"),unavailable:dd("This contact is unavailable"),xa:dd("This contact is away for an extended period"),away:dd("This contact is away")};function t(){qc.settings.get("authentication")!==Lc.ANONYMOUS&&(Lc.rosterview=new Lc.RosterView({model:Lc.rostergroups}),Lc.rosterview.render(),qc.trigger("rosterViewInitialized"))}Lc.AddContactModal=Kd.extend({id:"add-contact-modal",events:{"submit form":"addContactFromForm"},initialize(){Kd.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change",this.render)},toHTML(){const e=qc.settings.get("xhr_user_search_url")?dd("Contact name"):dd("Optional nickname");return(e=>{const t=dd("name@example.org"),n=dd("Add"),r=dd("Please enter a valid XMPP address"),i=dd("Add a Contact"),s=dd("XMPP Address"),o=dd("Nickname");return Ga(zS(),i,Bd,s,!e._converse.xhr_user_search_url,e.jid||"",t,o,e.nickname||"",o,r,n)})(Object.assign(this.model.toJSON(),{_converse:Lc,label_nickname:e}))},afterRender(){"string"==typeof qc.settings.get("xhr_user_search_url")?this.initXHRAutoComplete():this.initJIDAutoComplete();const e=this.el.querySelector('input[name="jid"]');this.el.addEventListener("shown.bs.modal",()=>e.focus(),!1)},initJIDAutoComplete(){if(!qc.settings.get("autocomplete_add_contact"))return;const e=this.el.querySelector(".suggestion-box__jid").parentElement;this.jid_auto_complete=new Lc.AutoComplete(e,{data:(e,t)=>"".concat(t.slice(0,t.indexOf("@")),"@").concat(e),filter:Lc.FILTER_STARTSWITH,list:[...new Set(Lc.roster.map(e=>QS.getDomainFromJid(e.get("jid"))))]})},initXHRAutoComplete(){if(!qc.settings.get("autocomplete_add_contact"))return this.initXHRFetch();const e=this.el.querySelector(".suggestion-box__name").parentElement;this.name_auto_complete=new Lc.AutoComplete(e,{auto_evaluate:!1,filter:Lc.FILTER_STARTSWITH,list:[]});const t=new window.XMLHttpRequest;t.onload=()=>{if(t.responseText){const e=t.responseText;this.name_auto_complete.list=JSON.parse(e).map(e=>({label:e.fullname||e.jid,value:e.jid})),this.name_auto_complete.auto_completing=!0,this.name_auto_complete.evaluate()}};const n=this.el.querySelector('input[name="name"]');n.addEventListener("input",Tc(()=>{t.open("GET","".concat(qc.settings.get("xhr_user_search_url"),"q=").concat(encodeURIComponent(n.value)),!0),t.send()},300)),this.name_auto_complete.on("suggestion-box-selectcomplete",e=>{this.el.querySelector('input[name="name"]').value=e.text.label,this.el.querySelector('input[name="jid"]').value=e.text.value})},initXHRFetch(){this.xhr=new window.XMLHttpRequest,this.xhr.onload=()=>{if(this.xhr.responseText){const e=this.xhr.responseText,t=JSON.parse(e).map(e=>({label:e.fullname||e.jid,value:e.jid}));if(1!==t.length){const e=this.el.querySelector(".invalid-feedback");return e.textContent=dd("Sorry, could not find a contact with that name"),void YS.addClass("d-block",e)}const n=t[0].value;if(this.validateSubmission(n)){const e=this.el.querySelector("form"),r=t[0].label;this.afterSubmission(e,n,r)}}}},validateSubmission(e){const t=this.el.querySelector(".invalid-feedback");return!e||Ds(e.split("@")).length<2?(YS.addClass("is-invalid",this.el.querySelector('input[name="jid"]')),YS.addClass("d-block",t),!1):Lc.roster.get(QS.getBareJidFromJid(e))?(t.textContent=dd("This contact has already been added"),YS.addClass("d-block",t),!1):(YS.removeClass("d-block",t),!0)},afterSubmission(e,t,n){Lc.roster.addAndSubscribe(t,n),this.model.clear(),this.modal.hide()},addContactFromForm(e){e.preventDefault();const t=new FormData(e.target),n=(t.get("jid")||"").trim();if(!n&&"string"==typeof qc.settings.get("xhr_user_search_url")){const e=this.el.querySelector('input[name="name"]');return this.xhr.open("GET","".concat(qc.settings.get("xhr_user_search_url"),"q=").concat(encodeURIComponent(e.value)),!0),void this.xhr.send()}this.validateSubmission(n)&&this.afterSubmission(e.target,n,t.get("name"))}}),Lc.RosterFilter=Rs.extend({initialize(){this.set({filter_text:"",filter_type:"contacts",chat_state:"online"})}}),Lc.RosterFilterView=jd.extend({tagName:"span",initialize(){this.listenTo(this.model,"change:filter_type",this.render),this.listenTo(this.model,"change:filter_text",this.render)},toHTML(){return e=Object.assign(this.model.toJSON(),{visible:this.shouldBeVisible(),placeholder:dd("Filter"),title_contact_filter:dd("Filter by contact name"),title_group_filter:dd("Filter by group name"),title_status_filter:dd("Filter by status"),label_any:dd("Any"),label_unread_messages:dd("Unread"),label_online:dd("Online"),label_chatty:dd("Chatty"),label_busy:dd("Busy"),label_away:dd("Away"),label_xa:dd("Extended Away"),label_offline:dd("Offline"),changeChatStateFilter:e=>this.changeChatStateFilter(e),changeTypeFilter:e=>this.changeTypeFilter(e),clearFilter:e=>this.clearFilter(e),liveFilter:e=>this.liveFilter(e),submitFilter:e=>this.submitFilter(e)}),Ga(GS(),e.visible?"fade-in":"hidden",e.submitFilter,e.changeTypeFilter,"contacts"===e.filter_type?"selected":"",e.title_contact_filter,e.changeTypeFilter,"groups"===e.filter_type?"selected":"",e.title_group_filter,e.changeTypeFilter,"state"===e.filter_type?"selected":"",e.title_status_filter,e.filter_text||"",e.liveFilter,"state"===e.filter_type?"hidden":"",e.placeholder,e.filter_text&&"state"!==e.filter_type?"":"hidden",e.clearFilter,"state"!==e.filter_type?"hidden":"",e.changeChatStateFilter,e.label_any,"unread_messages"===e.chat_state,e.label_unread_messages,"online"===e.chat_state,e.label_online,"chat"===e.chat_state,e.label_chatty,"dnd"===e.chat_state,e.label_busy,"away"===e.chat_state,e.label_away,"xa"===e.chat_state,e.label_xa,"offline"===e.chat_state,e.label_offline);var e},changeChatStateFilter(e){e&&e.preventDefault(),this.model.save({chat_state:this.el.querySelector(".state-type").value})},changeTypeFilter(e){e&&e.preventDefault();const t=e.target.dataset.type;"state"===t?this.model.save({filter_type:t,chat_state:this.el.querySelector(".state-type").value}):this.model.save({filter_type:t,filter_text:this.el.querySelector(".roster-filter").value})},liveFilter:Tc((function(){this.model.save({filter_text:this.el.querySelector(".roster-filter").value})}),250),submitFilter(e){e&&e.preventDefault(),this.liveFilter()},isActive(){return"state"===this.model.get("filter_type")||this.model.get("filter_text")},shouldBeVisible(){return Lc.roster&&Lc.roster.length>=5||this.isActive()},clearFilter(e){e&&e.preventDefault(),this.model.save({filter_text:""})}}),Lc.RosterContactView=Lc.ViewWithAvatar.extend({tagName:"li",className:"list-item d-flex hidden controlbox-padded",events:{"click .accept-xmpp-request":"acceptRequest","click .decline-xmpp-request":"declineRequest","click .open-chat":"openChat","click .remove-xmpp-contact":"removeContact"},async initialize(){await this.model.initialized,this.debouncedRender=Tc(this.render,50),this.listenTo(this.model,"change",this.debouncedRender),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"highlight",this.highlight),this.listenTo(this.model,"remove",this.remove),this.listenTo(this.model,"vcard:change",this.debouncedRender),this.listenTo(this.model.presence,"change:show",this.debouncedRender),this.render()},render(){if(!this.mayBeShown())return YS.hideElement(this.el),this;const t=this.model.get("ask"),n=this.model.presence.get("show"),r=this.model.get("requesting"),i=this.model.get("subscription"),s=this.model.get("jid");if(["current-xmpp-contact","pending-xmpp-contact","requesting-xmpp-contact"].concat(Object.keys(e)).forEach(e=>YS.removeClass(e,this.el)),this.el.classList.add(n),this.el.setAttribute("data-status",n),this.highlight(),Lc.isUniView()){const e=Lc.chatboxes.get(this.model.get("jid"));e&&(e.get("hidden")?this.el.classList.remove("open"):this.el.classList.add("open"))}if("subscribe"===t||"from"===i){const e=this.model.getDisplayName();this.el.classList.add("pending-xmpp-contact"),this.el.innerHTML=HS()(Object.assign(this.model.toJSON(),{display_name:e,desc_remove:dd("Click to remove %1$s as a contact",e),allow_chat_pending_contacts:qc.settings.get("allow_chat_pending_contacts")}))}else if(!0===r){const e=this.model.getDisplayName();this.el.classList.add("requesting-xmpp-contact"),this.el.innerHTML=$S()(Object.assign(this.model.toJSON(),{display_name:e,desc_accept:dd("Click to accept the contact request from %1$s",e),desc_decline:dd("Click to decline the contact request from %1$s",e),allow_chat_pending_contacts:qc.settings.get("allow_chat_pending_contacts")}))}else("both"===i||"to"===i||Lc.rosterview.isSelf(s))&&(this.el.classList.add("current-xmpp-contact"),this.el.classList.remove(Am(["both","to"],i)[0]),this.el.classList.add(i),this.renderRosterItem(this.model));return this},highlight(){if(Lc.isUniView()){const e=Lc.chatboxes.get(this.model.get("jid"));e&&e.get("hidden")||!e?this.el.classList.remove("open"):this.el.classList.add("open")}},renderRosterItem(t){const n=t.presence.get("show")||"offline";let r;r="online"===n?"fa fa-circle chat-status chat-status--online":"away"===n?"fa fa-circle chat-status chat-status--away":"xa"===n?"far fa-circle chat-status chat-status-xa":"dnd"===n?"fa fa-minus-circle chat-status chat-status--busy":"fa fa-times-circle chat-status chat-status--offline";const i=t.getDisplayName();return this.el.innerHTML=XS()(Object.assign(t.toJSON(),{show:n,display_name:i,status_icon:r,desc_status:e[n],desc_chat:dd("Click to chat with %1$s (XMPP address: %2$s)",i,t.get("jid")),desc_remove:dd("Click to remove %1$s as a contact",i),allow_contact_removal:qc.settings.get("allow_contact_removal"),num_unread:t.get("num_unread")||0,classes:""})),this.renderAvatar(),this},mayBeShown(){const e=this.model.presence.get("show");return!qc.settings.get("hide_offline_users")||"offline"!==e||("subscribe"===this.model.get("ask")||"from"===this.model.get("subscription")||!0===this.model.get("requesting"))},openChat(e){e&&e.preventDefault&&e.preventDefault(),this.model.openChat()},async removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),qc.settings.get("allow_contact_removal")&&confirm(dd("Are you sure you want to remove this contact?")))try{await this.model.removeFromRoster(),this.remove(),this.model.collection&&this.model.destroy()}catch(e){Pn.error(e),qc.alert("error",dd("Error"),[dd("Sorry, there was an error while trying to remove %1$s as a contact.",this.model.getDisplayName())])}},async acceptRequest(e){e&&e.preventDefault&&e.preventDefault(),await Lc.roster.sendContactAddIQ(this.model.get("jid"),this.model.getFullname(),[]),this.model.authorize().subscribe()},declineRequest(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(dd("Are you sure you want to decline this contact request?"))&&this.model.unauthorize().destroy(),this}}),Lc.RosterGroupView=Tm.extend({tagName:"div",className:"roster-group hidden",events:{"click a.group-toggle":"toggle"},sortImmediatelyOnAdd:!0,ItemView:Lc.RosterContactView,listItems:"model.contacts",listSelector:".roster-group-contacts",sortEvent:"presenceChanged",initialize(){Tm.prototype.initialize.apply(this,arguments),this.model.get("name")===Lc.HEADER_UNREAD&&this.listenTo(this.model.contacts,"change:num_unread",e=>!this.model.get("unread_messages")&&this.removeContact(e)),this.model.get("name")===Lc.HEADER_REQUESTING_CONTACTS&&this.listenTo(this.model.contacts,"change:requesting",e=>!e.get("requesting")&&this.removeContact(e)),this.model.get("name")===Lc.HEADER_PENDING_CONTACTS&&this.listenTo(this.model.contacts,"change:subscription",e=>"from"!==e.get("subscription")&&this.removeContact(e)),this.listenTo(this.model.contacts,"remove",this.onRemove),this.listenTo(Lc.roster,"change:groups",this.onContactGroupChange),Lc.rosterview.on("rosterContactsFetchedAndProcessed",()=>this.sortAndPositionAllItems())},render(){return this.el.setAttribute("data-group",this.model.get("name")),this.el.innerHTML=BS()({label_group:this.model.get("name"),desc_group_toggle:this.model.get("description"),toggle_state:this.model.get("state"),_converse:Lc}),this.contacts_el=this.el.querySelector(".roster-group-contacts"),this},show(){return YS.showElement(this.el),this.model.get("state")===Lc.OPENED&&Object.values(this.getAll()).filter(e=>e.mayBeShown()).forEach(e=>YS.showElement(e.el)),this},collapse(){return YS.slideIn(this.contacts_el)},filterOutContacts(e=[]){let t=0;this.model.contacts.forEach(n=>{const r=this.get(n.get("id"));e.includes(n)?YS.hideElement(r.el):r.mayBeShown()&&(YS.showElement(r.el),t+=1)}),t?YS.showElement(this.el):YS.hideElement(this.el)},getFilterMatches(e,t){if(0===e.length)return[];e=e.toLowerCase();const n=this.model.contacts;if("state"===t){return[Lc.HEADER_REQUESTING_CONTACTS,Lc.HEADER_UNREAD].includes(this.model.get("name"))?[]:"unread_messages"===e?n.filter({num_unread:0}):"online"===e?n.filter(e=>["offline","unavailable"].includes(e.presence.get("show"))):n.filter(t=>!t.presence.get("show").includes(e))}return n.filter(t=>!t.getFilterCriteria().includes(e))},filter(e,t){null==e&&(e="state"===(t=t||Lc.rosterview.filter_view.model.get("filter_type"))?Lc.rosterview.filter_view.model.get("chat_state"):Lc.rosterview.filter_view.model.get("filter_text")),this.filterOutContacts(this.getFilterMatches(e,t))},async toggle(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");YS.hasClass("fa-caret-down",t)?(this.model.save({state:Lc.CLOSED}),await this.collapse(),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")):(t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down"),this.model.save({state:Lc.OPENED}),this.filter(),YS.showElement(this.el),YS.slideOut(this.contacts_el))},onContactGroupChange(e){const t=e.get("groups").includes(this.model.get("name")),n=e.get("id"),r=!this.get(n);t&&!r?this.items.trigger("add",e):t||this.removeContact(e)},removeContact(e){this.model.contacts.remove(e,{silent:!0}),this.onRemove(e)},onRemove(e){this.remove(e.get("jid")),0===this.model.contacts.length&&this.remove()}}),Lc.RosterView=Tm.extend({tagName:"div",id:"converse-roster",className:"controlbox-section",ItemView:Lc.RosterGroupView,listItems:"model",listSelector:".roster-contacts",sortEvent:null,subviewIndex:"name",sortImmediatelyOnAdd:!0,events:{"click a.controlbox-heading__btn.add-contact":"showAddContactModal","click a.controlbox-heading__btn.sync-contacts":"syncContacts"},initialize(){Tm.prototype.initialize.apply(this,arguments),this.listenTo(Lc.roster,"add",this.onContactAdded),this.listenTo(Lc.roster,"change:groups",this.onContactAdded),this.listenTo(Lc.roster,"change",this.onContactChange),this.listenTo(Lc.roster,"destroy",this.update),this.listenTo(Lc.roster,"remove",this.update),Lc.presences.on("change:show",()=>{this.update(),this.updateFilter()}),this.listenTo(this.model,"reset",this.reset),qc.listen.on("rosterGroupsFetched",this.sortAndPositionAllItems.bind(this)),qc.listen.on("rosterContactsFetched",()=>{Lc.roster.each(e=>this.addRosterContact(e,{silent:!0})),this.update(),this.updateFilter(),this.trigger("rosterContactsFetchedAndProcessed")}),this.createRosterFilter()},render(){this.el.innerHTML=VS()({allow_contact_requests:Lc.allow_contact_requests,heading_contacts:dd("Contacts"),title_add_contact:dd("Add a contact"),title_sync_contacts:dd("Re-sync your contacts")});const e=this.el.querySelector(".roster-filter-form");return this.el.replaceChild(this.filter_view.render().el,e),this.roster_el=this.el.querySelector(".roster-contacts"),this},showAddContactModal(e){void 0===this.add_contact_modal&&(this.add_contact_modal=new Lc.AddContactModal({model:new Rs})),this.add_contact_modal.show(e)},createRosterFilter(){const e=new Lc.RosterFilter;e.id="_converse.rosterfilter-".concat(Lc.bare_jid),e.browserStorage=Lc.createStore(e.id),this.filter_view=new Lc.RosterFilterView({model:e}),this.listenTo(this.filter_view.model,"change",this.updateFilter),this.filter_view.model.fetch()},updateFilter:Tc((function(){const e=this.filter_view.model.get("filter_type");"state"===e?this.filter(this.filter_view.model.get("chat_state"),e):this.filter(this.filter_view.model.get("filter_text"),e)}),100),update(){return YS.isVisible(this.roster_el)||YS.showElement(this.roster_el),this.filter_view.render(),this},filter(e,t){const n=Object.values(this.getAll());n.forEach(e=>e.model.contacts.length>0&&e.show().filter("")),e=e.toLowerCase(),"groups"===t?n.forEach(t=>{t.model.get("name").toLowerCase().includes(e)?t.model.contacts.length>0&&YS.slideOut(t.el):YS.slideIn(t.el)}):n.forEach(n=>n.filter(e,t))},async syncContacts(e){e.preventDefault(),YS.addClass("fa-spin",e.target),Lc.roster.data.save("version",null),await Lc.roster.fetchFromServer(),qc.user.presence.send(),YS.removeClass("fa-spin",e.target)},reset(){return this.removeAll(),this.render().update(),this},onContactAdded(e){this.addRosterContact(e),this.update(),this.updateFilter()},onContactChange(e){this.update(),Ur(e.changed,"subscription")&&("from"===e.changed.subscription?this.addContactToGroup(e,Lc.HEADER_PENDING_CONTACTS):["both","to"].includes(e.get("subscription"))&&this.addExistingContact(e)),Ur(e.changed,"num_unread")&&e.get("num_unread")&&this.addContactToGroup(e,Lc.HEADER_UNREAD),Ur(e.changed,"ask")&&"subscribe"===e.changed.ask&&this.addContactToGroup(e,Lc.HEADER_PENDING_CONTACTS),Ur(e.changed,"subscription")&&"true"===e.changed.requesting&&this.addContactToGroup(e,Lc.HEADER_REQUESTING_CONTACTS),this.updateFilter()},getGroup(e){const t=this.get(e);return t?t.model:this.model.create({name:e})},addContactToGroup(e,t,n){this.getGroup(t).contacts.add(e,n),this.sortAndPositionAllItems()},addExistingContact(e,t){let n;qc.settings.get("roster_groups")?(n=e.get("groups"),n=0===n.length?[Lc.HEADER_UNGROUPED]:n):n=[Lc.HEADER_CURRENT_CONTACTS],e.get("num_unread")&&n.push(Lc.HEADER_UNREAD),n.forEach(n=>this.addContactToGroup(e,n,t))},isSelf:e=>YS.isSameBareJID(e,Lc.connection.jid),addRosterContact(e,t){const n=e.get("jid");if("both"===e.get("subscription")||"to"===e.get("subscription")||this.isSelf(n))this.addExistingContact(e,t);else{if(!Lc.allow_contact_requests)return void Pn.debug("Not adding requesting or pending contact ".concat(n," ")+"because allow_contact_requests is false");"subscribe"===e.get("ask")||"from"===e.get("subscription")?this.addContactToGroup(e,Lc.HEADER_PENDING_CONTACTS,t):!0===e.get("requesting")&&this.addContactToGroup(e,Lc.HEADER_REQUESTING_CONTACTS,t)}return this}}),qc.listen.on("chatBoxesInitialized",()=>{function e(e){const t=Lc.roster&&Lc.roster.findWhere({jid:e.get("jid")});void 0!==t&&t.trigger("highlight")}Lc.chatboxes.on("destroy",t=>e(t)),Lc.chatboxes.on("change:hidden",t=>e(t))}),qc.listen.on("controlBoxInitialized",e=>{function t(){e.model.get("connected")&&qc.settings.get("authentication")!==Lc.ANONYMOUS&&qc.waitUntil("rosterViewInitialized").then(()=>e.controlbox_pane.el.insertAdjacentElement("beforeEnd",Lc.rosterview.el)).catch(e=>Pn.fatal(e))}t(),e.model.on("change:connected",t)}),qc.listen.on("rosterInitialized",t),qc.listen.on("rosterReadyAfterReconnection",t),qc.listen.on("afterTearDown",()=>{Yc.rosterview&&(Yc.rosterview.model.off().reset(),Yc.rosterview.each(e=>e.removeAll().remove()),Yc.rosterview.removeAll().remove(),delete Yc.rosterview)})}});n(413); +const HE=rl.env.utils;rl.plugins.add("converse-rosterview",{dependencies:["converse-roster","converse-modal","converse-chatboxviews"],initialize(){Vc.settings.extend({autocomplete_add_contact:!0,allow_chat_pending_contacts:!0,allow_contact_removal:!0,hide_offline_users:!1,roster_groups:!0,xhr_user_search_url:null}),Vc.promises.add("rosterViewInitialized");const e={dnd:zd("This contact is busy"),online:zd("This contact is online"),offline:zd("This contact is offline"),unavailable:zd("This contact is unavailable"),xa:zd("This contact is away for an extended period"),away:zd("This contact is away")};function t(){Vc.settings.get("authentication")!==Uc.ANONYMOUS&&(Uc.rosterview=new Uc.RosterView({model:Uc.rostergroups}),Uc.rosterview.render(),Vc.trigger("rosterViewInitialized"))}Uc.RosterFilter=qo.extend({initialize(){this.set({filter_text:"",filter_type:"contacts",chat_state:"online"})}}),Uc.RosterFilterView=eh.extend({tagName:"span",initialize(){this.listenTo(this.model,"change:filter_type",this.render),this.listenTo(this.model,"change:filter_text",this.render)},toHTML(){return e=Object.assign(this.model.toJSON(),{visible:this.shouldBeVisible(),placeholder:zd("Filter"),title_contact_filter:zd("Filter by contact name"),title_group_filter:zd("Filter by group name"),title_status_filter:zd("Filter by status"),label_any:zd("Any"),label_unread_messages:zd("Unread"),label_online:zd("Online"),label_chatty:zd("Chatty"),label_busy:zd("Busy"),label_away:zd("Away"),label_xa:zd("Extended Away"),label_offline:zd("Offline"),changeChatStateFilter:e=>this.changeChatStateFilter(e),changeTypeFilter:e=>this.changeTypeFilter(e),clearFilter:e=>this.clearFilter(e),liveFilter:e=>this.liveFilter(e),submitFilter:e=>this.submitFilter(e)}),Za(FE(),e.visible?"fade-in":"hidden",e.submitFilter,e.changeTypeFilter,"contacts"===e.filter_type?"selected":"",e.title_contact_filter,e.changeTypeFilter,"groups"===e.filter_type?"selected":"",e.title_group_filter,e.changeTypeFilter,"state"===e.filter_type?"selected":"",e.title_status_filter,e.filter_text||"",e.liveFilter,"state"===e.filter_type?"hidden":"",e.placeholder,e.filter_text&&"state"!==e.filter_type?"":"hidden",e.clearFilter,"state"!==e.filter_type?"hidden":"",e.changeChatStateFilter,e.label_any,"unread_messages"===e.chat_state,e.label_unread_messages,"online"===e.chat_state,e.label_online,"chat"===e.chat_state,e.label_chatty,"dnd"===e.chat_state,e.label_busy,"away"===e.chat_state,e.label_away,"xa"===e.chat_state,e.label_xa,"offline"===e.chat_state,e.label_offline);var e},changeChatStateFilter(e){e&&e.preventDefault(),this.model.save({chat_state:this.el.querySelector(".state-type").value})},changeTypeFilter(e){e&&e.preventDefault();const t=e.target.dataset.type;"state"===t?this.model.save({filter_type:t,chat_state:this.el.querySelector(".state-type").value}):this.model.save({filter_type:t,filter_text:this.el.querySelector(".roster-filter").value})},liveFilter:Rc((function(){this.model.save({filter_text:this.el.querySelector(".roster-filter").value})}),250),submitFilter(e){e&&e.preventDefault(),this.liveFilter()},isActive(){return"state"===this.model.get("filter_type")||this.model.get("filter_text")},shouldBeVisible(){return Uc.roster&&Uc.roster.length>=5||this.isActive()},clearFilter(e){e&&e.preventDefault(),this.model.save({filter_text:""})}}),Uc.RosterContactView=Uc.ViewWithAvatar.extend({tagName:"li",className:"list-item d-flex hidden controlbox-padded",events:{"click .accept-xmpp-request":"acceptRequest","click .decline-xmpp-request":"declineRequest","click .open-chat":"openChat","click .remove-xmpp-contact":"removeContact"},async initialize(){await this.model.initialized,this.debouncedRender=Rc(this.render,50),this.listenTo(this.model,"change",this.debouncedRender),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"highlight",this.highlight),this.listenTo(this.model,"remove",this.remove),this.listenTo(this.model,"vcard:change",this.debouncedRender),this.listenTo(this.model.presence,"change:show",this.debouncedRender),this.render()},render(){if(!this.mayBeShown())return HE.hideElement(this.el),this;const t=this.model.get("ask"),n=this.model.presence.get("show"),r=this.model.get("requesting"),i=this.model.get("subscription"),o=this.model.get("jid");if(["current-xmpp-contact","pending-xmpp-contact","requesting-xmpp-contact"].concat(Object.keys(e)).forEach(e=>HE.removeClass(e,this.el)),this.el.classList.add(n),this.el.setAttribute("data-status",n),this.highlight(),Uc.isUniView()){const e=Uc.chatboxes.get(this.model.get("jid"));e&&(e.get("hidden")?this.el.classList.remove("open"):this.el.classList.add("open"))}if("subscribe"===t||"from"===i){const e=this.model.getDisplayName();this.el.classList.add("pending-xmpp-contact"),this.el.innerHTML=RE()(Object.assign(this.model.toJSON(),{display_name:e,desc_remove:zd("Click to remove %1$s as a contact",e),allow_chat_pending_contacts:Vc.settings.get("allow_chat_pending_contacts")}))}else if(!0===r){const e=this.model.getDisplayName();this.el.classList.add("requesting-xmpp-contact"),this.el.innerHTML=PE()(Object.assign(this.model.toJSON(),{display_name:e,desc_accept:zd("Click to accept the contact request from %1$s",e),desc_decline:zd("Click to decline the contact request from %1$s",e),allow_chat_pending_contacts:Vc.settings.get("allow_chat_pending_contacts")}))}else("both"===i||"to"===i||Uc.rosterview.isSelf(o))&&(this.el.classList.add("current-xmpp-contact"),this.el.classList.remove(dv(["both","to"],i)[0]),this.el.classList.add(i),this.renderRosterItem(this.model));return this},highlight(){if(Uc.isUniView()){const e=Uc.chatboxes.get(this.model.get("jid"));e&&e.get("hidden")||!e?this.el.classList.remove("open"):this.el.classList.add("open")}},renderRosterItem(t){const n=t.presence.get("show")||"offline";let r;r="online"===n?"fa fa-circle chat-status chat-status--online":"away"===n?"fa fa-circle chat-status chat-status--away":"xa"===n?"far fa-circle chat-status chat-status-xa":"dnd"===n?"fa fa-minus-circle chat-status chat-status--busy":"fa fa-times-circle chat-status chat-status--offline";const i=t.getDisplayName();return this.el.innerHTML=qE()(Object.assign(t.toJSON(),{show:n,display_name:i,status_icon:r,desc_status:e[n],desc_chat:zd("Click to chat with %1$s (XMPP address: %2$s)",i,t.get("jid")),desc_remove:zd("Click to remove %1$s as a contact",i),allow_contact_removal:Vc.settings.get("allow_contact_removal"),num_unread:t.get("num_unread")||0,classes:""})),this.renderAvatar(),this},mayBeShown(){const e=this.model.presence.get("show");return!Vc.settings.get("hide_offline_users")||"offline"!==e||("subscribe"===this.model.get("ask")||"from"===this.model.get("subscription")||!0===this.model.get("requesting"))},openChat(e){e&&e.preventDefault&&e.preventDefault(),this.model.openChat()},async removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),Vc.settings.get("allow_contact_removal")&&confirm(zd("Are you sure you want to remove this contact?")))try{await this.model.removeFromRoster(),this.remove(),this.model.collection&&this.model.destroy()}catch(e){zn.error(e),Vc.alert("error",zd("Error"),[zd("Sorry, there was an error while trying to remove %1$s as a contact.",this.model.getDisplayName())])}},async acceptRequest(e){e&&e.preventDefault&&e.preventDefault(),await Uc.roster.sendContactAddIQ(this.model.get("jid"),this.model.getFullname(),[]),this.model.authorize().subscribe()},declineRequest(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(zd("Are you sure you want to decline this contact request?"))&&this.model.unauthorize().destroy(),this}}),Uc.RosterGroupView=pv.extend({tagName:"div",className:"roster-group hidden",events:{"click a.group-toggle":"toggle"},sortImmediatelyOnAdd:!0,ItemView:Uc.RosterContactView,listItems:"model.contacts",listSelector:".roster-group-contacts",sortEvent:"presenceChanged",initialize(){pv.prototype.initialize.apply(this,arguments),this.model.get("name")===Uc.HEADER_UNREAD&&this.listenTo(this.model.contacts,"change:num_unread",e=>!this.model.get("unread_messages")&&this.removeContact(e)),this.model.get("name")===Uc.HEADER_REQUESTING_CONTACTS&&this.listenTo(this.model.contacts,"change:requesting",e=>!e.get("requesting")&&this.removeContact(e)),this.model.get("name")===Uc.HEADER_PENDING_CONTACTS&&this.listenTo(this.model.contacts,"change:subscription",e=>"from"!==e.get("subscription")&&this.removeContact(e)),this.listenTo(this.model.contacts,"remove",this.onRemove),this.listenTo(Uc.roster,"change:groups",this.onContactGroupChange),Uc.rosterview.on("rosterContactsFetchedAndProcessed",()=>this.sortAndPositionAllItems())},render(){return this.el.setAttribute("data-group",this.model.get("name")),this.el.innerHTML=IE()({label_group:this.model.get("name"),desc_group_toggle:this.model.get("description"),toggle_state:this.model.get("state"),_converse:Uc}),this.contacts_el=this.el.querySelector(".roster-group-contacts"),this},show(){return HE.showElement(this.el),this.model.get("state")===Uc.OPENED&&Object.values(this.getAll()).filter(e=>e.mayBeShown()).forEach(e=>HE.showElement(e.el)),this},collapse(){return HE.slideIn(this.contacts_el)},filterOutContacts(e=[]){let t=0;this.model.contacts.forEach(n=>{const r=this.get(n.get("id"));e.includes(n)?HE.hideElement(r.el):r.mayBeShown()&&(HE.showElement(r.el),t+=1)}),t?HE.showElement(this.el):HE.hideElement(this.el)},getFilterMatches(e,t){if(0===e.length)return[];e=e.toLowerCase();const n=this.model.contacts;if("state"===t){return[Uc.HEADER_REQUESTING_CONTACTS,Uc.HEADER_UNREAD].includes(this.model.get("name"))?[]:"unread_messages"===e?n.filter({num_unread:0}):"online"===e?n.filter(e=>["offline","unavailable"].includes(e.presence.get("show"))):n.filter(t=>!t.presence.get("show").includes(e))}return n.filter(t=>!t.getFilterCriteria().includes(e))},filter(e,t){null==e&&(e="state"===(t=t||Uc.rosterview.filter_view.model.get("filter_type"))?Uc.rosterview.filter_view.model.get("chat_state"):Uc.rosterview.filter_view.model.get("filter_text")),this.filterOutContacts(this.getFilterMatches(e,t))},async toggle(e){e&&e.preventDefault&&e.preventDefault();const t=e.target.matches(".fa")?e.target:e.target.querySelector(".fa");HE.hasClass("fa-caret-down",t)?(this.model.save({state:Uc.CLOSED}),await this.collapse(),t.classList.remove("fa-caret-down"),t.classList.add("fa-caret-right")):(t.classList.remove("fa-caret-right"),t.classList.add("fa-caret-down"),this.model.save({state:Uc.OPENED}),this.filter(),HE.showElement(this.el),HE.slideOut(this.contacts_el))},onContactGroupChange(e){const t=e.get("groups").includes(this.model.get("name")),n=e.get("id"),r=!this.get(n);t&&!r?this.items.trigger("add",e):t||this.removeContact(e)},removeContact(e){this.model.contacts.remove(e,{silent:!0}),this.onRemove(e)},onRemove(e){this.remove(e.get("jid")),0===this.model.contacts.length&&this.remove()}}),Uc.RosterView=pv.extend({tagName:"div",id:"converse-roster",className:"controlbox-section",ItemView:Uc.RosterGroupView,listItems:"model",listSelector:".roster-contacts",sortEvent:null,subviewIndex:"name",sortImmediatelyOnAdd:!0,events:{"click a.controlbox-heading__btn.add-contact":"showAddContactModal","click a.controlbox-heading__btn.sync-contacts":"syncContacts"},initialize(){pv.prototype.initialize.apply(this,arguments),this.listenTo(Uc.roster,"add",this.onContactAdded),this.listenTo(Uc.roster,"change:groups",this.onContactAdded),this.listenTo(Uc.roster,"change",this.onContactChange),this.listenTo(Uc.roster,"destroy",this.update),this.listenTo(Uc.roster,"remove",this.update),Uc.presences.on("change:show",()=>{this.update(),this.updateFilter()}),this.listenTo(this.model,"reset",this.reset),Vc.listen.on("rosterGroupsFetched",this.sortAndPositionAllItems.bind(this)),Vc.listen.on("rosterContactsFetched",()=>{Uc.roster.each(e=>this.addRosterContact(e,{silent:!0})),this.update(),this.updateFilter(),this.trigger("rosterContactsFetchedAndProcessed")}),this.createRosterFilter()},render(){this.el.innerHTML=zE()({allow_contact_requests:Uc.allow_contact_requests,heading_contacts:zd("Contacts"),title_add_contact:zd("Add a contact"),title_sync_contacts:zd("Re-sync your contacts")});const e=this.el.querySelector(".roster-filter-form");return this.el.replaceChild(this.filter_view.render().el,e),this.roster_el=this.el.querySelector(".roster-contacts"),this},showAddContactModal(e){Vc.modal.show(Uc.AddContactModal,{model:new qo},e)},createRosterFilter(){const e=new Uc.RosterFilter;e.id="_converse.rosterfilter-".concat(Uc.bare_jid),e.browserStorage=Uc.createStore(e.id),this.filter_view=new Uc.RosterFilterView({model:e}),this.listenTo(this.filter_view.model,"change",this.updateFilter),this.filter_view.model.fetch()},updateFilter:Rc((function(){const e=this.filter_view.model.get("filter_type");"state"===e?this.filter(this.filter_view.model.get("chat_state"),e):this.filter(this.filter_view.model.get("filter_text"),e)}),100),update(){return HE.isVisible(this.roster_el)||HE.showElement(this.roster_el),this.filter_view.render(),this},filter(e,t){const n=Object.values(this.getAll());n.forEach(e=>e.model.contacts.length>0&&e.show().filter("")),e=e.toLowerCase(),"groups"===t?n.forEach(t=>{t.model.get("name").toLowerCase().includes(e)?t.model.contacts.length>0&&HE.slideOut(t.el):HE.slideIn(t.el)}):n.forEach(n=>n.filter(e,t))},async syncContacts(e){e.preventDefault(),HE.addClass("fa-spin",e.target),Uc.roster.data.save("version",null),await Uc.roster.fetchFromServer(),Vc.user.presence.send(),HE.removeClass("fa-spin",e.target)},reset(){return this.removeAll(),this.render().update(),this},onContactAdded(e){this.addRosterContact(e),this.update(),this.updateFilter()},onContactChange(e){this.update(),Xr(e.changed,"subscription")&&("from"===e.changed.subscription?this.addContactToGroup(e,Uc.HEADER_PENDING_CONTACTS):["both","to"].includes(e.get("subscription"))&&this.addExistingContact(e)),Xr(e.changed,"num_unread")&&e.get("num_unread")&&this.addContactToGroup(e,Uc.HEADER_UNREAD),Xr(e.changed,"ask")&&"subscribe"===e.changed.ask&&this.addContactToGroup(e,Uc.HEADER_PENDING_CONTACTS),Xr(e.changed,"subscription")&&"true"===e.changed.requesting&&this.addContactToGroup(e,Uc.HEADER_REQUESTING_CONTACTS),this.updateFilter()},getGroup(e){const t=this.get(e);return t?t.model:this.model.create({name:e})},addContactToGroup(e,t,n){this.getGroup(t).contacts.add(e,n),this.sortAndPositionAllItems()},addExistingContact(e,t){let n;Vc.settings.get("roster_groups")?(n=e.get("groups"),n=0===n.length?[Uc.HEADER_UNGROUPED]:n):n=[Uc.HEADER_CURRENT_CONTACTS],e.get("num_unread")&&n.push(Uc.HEADER_UNREAD),n.forEach(n=>this.addContactToGroup(e,n,t))},isSelf:e=>HE.isSameBareJID(e,Uc.connection.jid),addRosterContact(e,t){const n=e.get("jid");if("both"===e.get("subscription")||"to"===e.get("subscription")||this.isSelf(n))this.addExistingContact(e,t);else{if(!Uc.allow_contact_requests)return void zn.debug("Not adding requesting or pending contact ".concat(n," ")+"because allow_contact_requests is false");"subscribe"===e.get("ask")||"from"===e.get("subscription")?this.addContactToGroup(e,Uc.HEADER_PENDING_CONTACTS,t):!0===e.get("requesting")&&this.addContactToGroup(e,Uc.HEADER_REQUESTING_CONTACTS,t)}return this}}),Vc.listen.on("chatBoxesInitialized",()=>{function e(e){const t=Uc.roster&&Uc.roster.findWhere({jid:e.get("jid")});void 0!==t&&t.trigger("highlight")}Uc.chatboxes.on("destroy",t=>e(t)),Uc.chatboxes.on("change:hidden",t=>e(t))}),Vc.listen.on("controlBoxInitialized",e=>{function t(){e.model.get("connected")&&Vc.settings.get("authentication")!==Uc.ANONYMOUS&&Vc.waitUntil("rosterViewInitialized").then(()=>e.controlbox_pane.el.insertAdjacentElement("beforeEnd",Uc.rosterview.el)).catch(e=>zn.fatal(e))}t(),e.model.on("change:connected",t)}),Vc.listen.on("rosterInitialized",t),Vc.listen.on("rosterReadyAfterReconnection",t),Vc.listen.on("afterTearDown",()=>{rl.rosterview&&(rl.rosterview.model.off().reset(),rl.rosterview.each(e=>e.removeAll().remove()),rl.rosterview.removeAll().remove(),delete rl.rosterview)})}});n(501); /** * @description Converse.js (A browser based XMPP chat client) * @copyright 2020, The Converse developers * @license Mozilla Public License (MPLv2) - */const KS=["converse-autocomplete","converse-bookmark-views","converse-chatboxviews","converse-chatview","converse-controlbox","converse-dragresize","converse-fullscreen","converse-mam-views","converse-minimize","converse-modal","converse-muc-views","converse-headlines-view","converse-notification","converse-omemo","converse-profile","converse-push","converse-register","converse-roomslist","converse-rosterview","converse-singleton"];i.a.templateSettings={escape:/\{\{\{([\s\S]+?)\}\}\}/g,evaluate:/\{\[([\s\S]+?)\]\}/g,interpolate:/\{\{([\s\S]+?)\}\}/g,imports:{_:i.a}},Yc.env._=i.a;const ZS=Yc.initialize;Yc.initialize=function(e,t){return Array.isArray(e.whitelisted_plugins)?e.whitelisted_plugins=e.whitelisted_plugins.concat(KS):e.whitelisted_plugins=KS,ZS(e,t)};t.default=Yc}]); + */const UE=["converse-autocomplete","converse-bookmark-views","converse-chatboxviews","converse-chatview","converse-controlbox","converse-dragresize","converse-fullscreen","converse-mam-views","converse-minimize","converse-modal","converse-muc-views","converse-headlines-view","converse-notification","converse-omemo","converse-profile","converse-push","converse-register","converse-roomslist","converse-rosterview","converse-singleton"];i.a.templateSettings={escape:/\{\{\{([\s\S]+?)\}\}\}/g,evaluate:/\{\[([\s\S]+?)\]\}/g,interpolate:/\{\{([\s\S]+?)\}\}/g,imports:{_:i.a}},rl.env._=i.a;const $E=rl.initialize;rl.initialize=function(e,t){return Array.isArray(e.whitelisted_plugins)?e.whitelisted_plugins=e.whitelisted_plugins.concat(UE):e.whitelisted_plugins=UE,$E(e,t)};t.default=rl}]); //# sourceMappingURL=converse.min.js.map \ No newline at end of file diff --git a/src/conversejs/emojis.js b/src/conversejs/emojis.js index 212365c82bb04d82a1ffd5af1972b315c67d1a15..f6a0d30d7f8ba12e5d4b9e4433e831fb36bc77c6 100644 --- a/src/conversejs/emojis.js +++ b/src/conversejs/emojis.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{458:function(n){n.exports=JSON.parse('{"custom":{":converse:":{"sn":":converse:","url":"/dist/images/custom_emojis/converse.png","c":"custom"},":xmpp:":{"sn":":xmpp:","url":"/dist/images/custom_emojis/xmpp.png","c":"custom"}},"smileys":{":smiley:":{"sn":":smiley:","cp":"1f603","sns":[],"c":"smileys"},":smile:":{"sn":":smile:","cp":"1f604","sns":[],"c":"smileys"},":grin:":{"sn":":grin:","cp":"1f601","sns":[],"c":"smileys"},":grinning:":{"sn":":grinning:","cp":"1f600","sns":[],"c":"smileys"},":joy:":{"sn":":joy:","cp":"1f602","sns":[],"c":"smileys"},":confused:":{"sn":":confused:","cp":"1f615","sns":[],"c":"smileys"},":face_with_raised_eyebrow:":{"sn":":face_with_raised_eyebrow:","cp":"1f928","sns":[],"c":"smileys"},":angry:":{"sn":":angry:","cp":"1f620","sns":[],"c":"smileys"},":anguished:":{"sn":":anguished:","cp":"1f627","sns":[],"c":"smileys"},":astonished:":{"sn":":astonished:","cp":"1f632","sns":[],"c":"smileys"},":blush:":{"sn":":blush:","cp":"1f60a","sns":[],"c":"smileys"},":thinking:":{"sn":":thinking:","cp":"1f914","sns":[":thinking_face:"],"c":"smileys"},":cold_sweat:":{"sn":":cold_sweat:","cp":"1f630","sns":[],"c":"smileys"},":confounded:":{"sn":":confounded:","cp":"1f616","sns":[],"c":"smileys"},":crazy_face:":{"sn":":crazy_face:","cp":"1f92a","sns":[],"c":"smileys"},":cry:":{"sn":":cry:","cp":"1f622","sns":[],"c":"smileys"},":disappointed:":{"sn":":disappointed:","cp":"1f61e","sns":[],"c":"smileys"},":disappointed_relieved:":{"sn":":disappointed_relieved:","cp":"1f625","sns":[],"c":"smileys"},":dizzy_face:":{"sn":":dizzy_face:","cp":"1f635","sns":[],"c":"smileys"},":drooling_face:":{"sn":":drooling_face:","cp":"1f924","sns":[":drool:"],"c":"smileys"},":exploding_head:":{"sn":":exploding_head:","cp":"1f92f","sns":[],"c":"smileys"},":expressionless:":{"sn":":expressionless:","cp":"1f611","sns":[],"c":"smileys"},":face_vomiting:":{"sn":":face_vomiting:","cp":"1f92e","sns":[],"c":"smileys"},":face_with_hand_over_mouth:":{"sn":":face_with_hand_over_mouth:","cp":"1f92d","sns":[],"c":"smileys"},":face_with_monocle:":{"sn":":face_with_monocle:","cp":"1f9d0","sns":[],"c":"smileys"},":fearful:":{"sn":":fearful:","cp":"1f628","sns":[],"c":"smileys"},":flushed:":{"sn":":flushed:","cp":"1f633","sns":[],"c":"smileys"},":frowning:":{"sn":":frowning:","cp":"1f626","sns":[],"c":"smileys"},":grimacing:":{"sn":":grimacing:","cp":"1f62c","sns":[],"c":"smileys"},":head_bandage:":{"sn":":head_bandage:","cp":"1f915","sns":[":face_with_head_bandage:"],"c":"smileys"},":heart_eyes:":{"sn":":heart_eyes:","cp":"1f60d","sns":[],"c":"smileys"},":hugging:":{"sn":":hugging:","cp":"1f917","sns":[":hugging_face:"],"c":"smileys"},":hushed:":{"sn":":hushed:","cp":"1f62f","sns":[],"c":"smileys"},":innocent:":{"sn":":innocent:","cp":"1f607","sns":[],"c":"smileys"},":kissing:":{"sn":":kissing:","cp":"1f617","sns":[],"c":"smileys"},":kissing_closed_eyes:":{"sn":":kissing_closed_eyes:","cp":"1f61a","sns":[],"c":"smileys"},":kissing_heart:":{"sn":":kissing_heart:","cp":"1f618","sns":[],"c":"smileys"},":kissing_smiling_eyes:":{"sn":":kissing_smiling_eyes:","cp":"1f619","sns":[],"c":"smileys"},":laughing:":{"sn":":laughing:","cp":"1f606","sns":[":satisfied:"],"c":"smileys"},":lying_face:":{"sn":":lying_face:","cp":"1f925","sns":[":liar:"],"c":"smileys"},":mask:":{"sn":":mask:","cp":"1f637","sns":[],"c":"smileys"},":money_mouth:":{"sn":":money_mouth:","cp":"1f911","sns":[":money_mouth_face:"],"c":"smileys"},":nauseated_face:":{"sn":":nauseated_face:","cp":"1f922","sns":[":sick:"],"c":"smileys"},":nerd:":{"sn":":nerd:","cp":"1f913","sns":[":nerd_face:"],"c":"smileys"},":neutral_face:":{"sn":":neutral_face:","cp":"1f610","sns":[],"c":"smileys"},":no_mouth:":{"sn":":no_mouth:","cp":"1f636","sns":[],"c":"smileys"},":open_mouth:":{"sn":":open_mouth:","cp":"1f62e","sns":[],"c":"smileys"},":pensive:":{"sn":":pensive:","cp":"1f614","sns":[],"c":"smileys"},":persevere:":{"sn":":persevere:","cp":"1f623","sns":[],"c":"smileys"},":rage:":{"sn":":rage:","cp":"1f621","sns":[],"c":"smileys"},":face_with_symbols_over_mouth:":{"sn":":face_with_symbols_over_mouth:","cp":"1f92c","sns":[],"c":"smileys"},":relieved:":{"sn":":relieved:","cp":"1f60c","sns":[],"c":"smileys"},":rofl:":{"sn":":rofl:","cp":"1f923","sns":[":rolling_on_the_floor_laughing:"],"c":"smileys"},":rolling_eyes:":{"sn":":rolling_eyes:","cp":"1f644","sns":[":face_with_rolling_eyes:"],"c":"smileys"},":scream:":{"sn":":scream:","cp":"1f631","sns":[],"c":"smileys"},":shushing_face:":{"sn":":shushing_face:","cp":"1f92b","sns":[],"c":"smileys"},":sleeping:":{"sn":":sleeping:","cp":"1f634","sns":[],"c":"smileys"},":sleepy:":{"sn":":sleepy:","cp":"1f62a","sns":[],"c":"smileys"},":slight_frown:":{"sn":":slight_frown:","cp":"1f641","sns":[":slightly_frowning_face:"],"c":"smileys"},":slight_smile:":{"sn":":slight_smile:","cp":"1f642","sns":[":slightly_smiling_face:"],"c":"smileys"},":smirk:":{"sn":":smirk:","cp":"1f60f","sns":[],"c":"smileys"},":sneezing_face:":{"sn":":sneezing_face:","cp":"1f927","sns":[":sneeze:"],"c":"smileys"},":sob:":{"sn":":sob:","cp":"1f62d","sns":[],"c":"smileys"},":star_struck:":{"sn":":star_struck:","cp":"1f929","sns":[],"c":"smileys"},":stuck_out_tongue:":{"sn":":stuck_out_tongue:","cp":"1f61b","sns":[],"c":"smileys"},":stuck_out_tongue_closed_eyes:":{"sn":":stuck_out_tongue_closed_eyes:","cp":"1f61d","sns":[],"c":"smileys"},":stuck_out_tongue_winking_eye:":{"sn":":stuck_out_tongue_winking_eye:","cp":"1f61c","sns":[],"c":"smileys"},":sunglasses:":{"sn":":sunglasses:","cp":"1f60e","sns":[],"c":"smileys"},":sweat:":{"sn":":sweat:","cp":"1f613","sns":[],"c":"smileys"},":sweat_smile:":{"sn":":sweat_smile:","cp":"1f605","sns":[],"c":"smileys"},":thermometer_face:":{"sn":":thermometer_face:","cp":"1f912","sns":[":face_with_thermometer:"],"c":"smileys"},":tired_face:":{"sn":":tired_face:","cp":"1f62b","sns":[],"c":"smileys"},":triumph:":{"sn":":triumph:","cp":"1f624","sns":[],"c":"smileys"},":unamused:":{"sn":":unamused:","cp":"1f612","sns":[],"c":"smileys"},":upside_down:":{"sn":":upside_down:","cp":"1f643","sns":[":upside_down_face:"],"c":"smileys"},":weary:":{"sn":":weary:","cp":"1f629","sns":[],"c":"smileys"},":wink:":{"sn":":wink:","cp":"1f609","sns":[],"c":"smileys"},":worried:":{"sn":":worried:","cp":"1f61f","sns":[],"c":"smileys"},":yum:":{"sn":":yum:","cp":"1f60b","sns":[],"c":"smileys"},":zipper_mouth:":{"sn":":zipper_mouth:","cp":"1f910","sns":[":zipper_mouth_face:"],"c":"smileys"},":cowboy:":{"sn":":cowboy:","cp":"1f920","sns":[":face_with_cowboy_hat:"],"c":"smileys"},":joy_cat:":{"sn":":joy_cat:","cp":"1f639","sns":[],"c":"smileys"},":crying_cat_face:":{"sn":":crying_cat_face:","cp":"1f63f","sns":[],"c":"smileys"},":kissing_cat:":{"sn":":kissing_cat:","cp":"1f63d","sns":[],"c":"smileys"},":pouting_cat:":{"sn":":pouting_cat:","cp":"1f63e","sns":[],"c":"smileys"},":scream_cat:":{"sn":":scream_cat:","cp":"1f640","sns":[],"c":"smileys"},":smile_cat:":{"sn":":smile_cat:","cp":"1f638","sns":[],"c":"smileys"},":smiley_cat:":{"sn":":smiley_cat:","cp":"1f63a","sns":[],"c":"smileys"},":smirk_cat:":{"sn":":smirk_cat:","cp":"1f63c","sns":[],"c":"smileys"},":heart_eyes_cat:":{"sn":":heart_eyes_cat:","cp":"1f63b","sns":[],"c":"smileys"},":poop:":{"sn":":poop:","cp":"1f4a9","sns":[":shit:",":hankey:",":poo:"],"c":"smileys"},":robot:":{"sn":":robot:","cp":"1f916","sns":[":robot_face:"],"c":"smileys"},":skull:":{"sn":":skull:","cp":"1f480","sns":[":skeleton:"],"c":"smileys"},":jack_o_lantern:":{"sn":":jack_o_lantern:","cp":"1f383","sns":[],"c":"smileys"},":alien:":{"sn":":alien:","cp":"1f47d","sns":[],"c":"smileys"},":clown:":{"sn":":clown:","cp":"1f921","sns":[":clown_face:"],"c":"smileys"},":japanese_goblin:":{"sn":":japanese_goblin:","cp":"1f47a","sns":[],"c":"smileys"},":japanese_ogre:":{"sn":":japanese_ogre:","cp":"1f479","sns":[],"c":"smileys"},":imp:":{"sn":":imp:","cp":"1f47f","sns":[],"c":"smileys"},":smiling_imp:":{"sn":":smiling_imp:","cp":"1f608","sns":[],"c":"smileys"}},"people":{":ok_hand:":{"sn":":ok_hand:","cp":"1f44c","sns":[],"c":"people"},":ok_hand_tone1:":{"sn":":ok_hand_tone1:","cp":"1f44c-1f3fb","sns":[],"c":"people"},":ok_hand_tone2:":{"sn":":ok_hand_tone2:","cp":"1f44c-1f3fc","sns":[],"c":"people"},":ok_hand_tone3:":{"sn":":ok_hand_tone3:","cp":"1f44c-1f3fd","sns":[],"c":"people"},":ok_hand_tone4:":{"sn":":ok_hand_tone4:","cp":"1f44c-1f3fe","sns":[],"c":"people"},":ok_hand_tone5:":{"sn":":ok_hand_tone5:","cp":"1f44c-1f3ff","sns":[],"c":"people"},":thumbsdown:":{"sn":":thumbsdown:","cp":"1f44e","sns":[":-1:",":thumbdown:"],"c":"people"},":thumbsdown_tone1:":{"sn":":thumbsdown_tone1:","cp":"1f44e-1f3fb","sns":[":-1_tone1:",":thumbdown_tone1:"],"c":"people"},":thumbsdown_tone2:":{"sn":":thumbsdown_tone2:","cp":"1f44e-1f3fc","sns":[":-1_tone2:",":thumbdown_tone2:"],"c":"people"},":thumbsdown_tone3:":{"sn":":thumbsdown_tone3:","cp":"1f44e-1f3fd","sns":[":-1_tone3:",":thumbdown_tone3:"],"c":"people"},":thumbsdown_tone4:":{"sn":":thumbsdown_tone4:","cp":"1f44e-1f3fe","sns":[":-1_tone4:",":thumbdown_tone4:"],"c":"people"},":thumbsdown_tone5:":{"sn":":thumbsdown_tone5:","cp":"1f44e-1f3ff","sns":[":-1_tone5:",":thumbdown_tone5:"],"c":"people"},":thumbsup:":{"sn":":thumbsup:","cp":"1f44d","sns":[":+1:",":thumbup:"],"c":"people"},":thumbsup_tone1:":{"sn":":thumbsup_tone1:","cp":"1f44d-1f3fb","sns":[":+1_tone1:",":thumbup_tone1:"],"c":"people"},":thumbsup_tone2:":{"sn":":thumbsup_tone2:","cp":"1f44d-1f3fc","sns":[":+1_tone2:",":thumbup_tone2:"],"c":"people"},":thumbsup_tone3:":{"sn":":thumbsup_tone3:","cp":"1f44d-1f3fd","sns":[":+1_tone3:",":thumbup_tone3:"],"c":"people"},":thumbsup_tone4:":{"sn":":thumbsup_tone4:","cp":"1f44d-1f3fe","sns":[":+1_tone4:",":thumbup_tone4:"],"c":"people"},":thumbsup_tone5:":{"sn":":thumbsup_tone5:","cp":"1f44d-1f3ff","sns":[":+1_tone5:",":thumbup_tone5:"],"c":"people"},":wave:":{"sn":":wave:","cp":"1f44b","sns":[],"c":"people"},":wave_tone1:":{"sn":":wave_tone1:","cp":"1f44b-1f3fb","sns":[],"c":"people"},":wave_tone2:":{"sn":":wave_tone2:","cp":"1f44b-1f3fc","sns":[],"c":"people"},":wave_tone3:":{"sn":":wave_tone3:","cp":"1f44b-1f3fd","sns":[],"c":"people"},":wave_tone4:":{"sn":":wave_tone4:","cp":"1f44b-1f3fe","sns":[],"c":"people"},":wave_tone5:":{"sn":":wave_tone5:","cp":"1f44b-1f3ff","sns":[],"c":"people"},":call_me:":{"sn":":call_me:","cp":"1f919","sns":[":call_me_hand:"],"c":"people"},":call_me_tone1:":{"sn":":call_me_tone1:","cp":"1f919-1f3fb","sns":[":call_me_hand_tone1:"],"c":"people"},":call_me_tone2:":{"sn":":call_me_tone2:","cp":"1f919-1f3fc","sns":[":call_me_hand_tone2:"],"c":"people"},":call_me_tone3:":{"sn":":call_me_tone3:","cp":"1f919-1f3fd","sns":[":call_me_hand_tone3:"],"c":"people"},":call_me_tone4:":{"sn":":call_me_tone4:","cp":"1f919-1f3fe","sns":[":call_me_hand_tone4:"],"c":"people"},":call_me_tone5:":{"sn":":call_me_tone5:","cp":"1f919-1f3ff","sns":[":call_me_hand_tone5:"],"c":"people"},":clap:":{"sn":":clap:","cp":"1f44f","sns":[],"c":"people"},":clap_tone1:":{"sn":":clap_tone1:","cp":"1f44f-1f3fb","sns":[],"c":"people"},":clap_tone2:":{"sn":":clap_tone2:","cp":"1f44f-1f3fc","sns":[],"c":"people"},":clap_tone3:":{"sn":":clap_tone3:","cp":"1f44f-1f3fd","sns":[],"c":"people"},":clap_tone4:":{"sn":":clap_tone4:","cp":"1f44f-1f3fe","sns":[],"c":"people"},":clap_tone5:":{"sn":":clap_tone5:","cp":"1f44f-1f3ff","sns":[],"c":"people"},":hand_splayed:":{"sn":":hand_splayed:","cp":"1f590","sns":[":raised_hand_with_fingers_splayed:"],"c":"people"},":hand_splayed_tone1:":{"sn":":hand_splayed_tone1:","cp":"1f590-1f3fb","sns":[":raised_hand_with_fingers_splayed_tone1:"],"c":"people"},":hand_splayed_tone2:":{"sn":":hand_splayed_tone2:","cp":"1f590-1f3fc","sns":[":raised_hand_with_fingers_splayed_tone2:"],"c":"people"},":hand_splayed_tone3:":{"sn":":hand_splayed_tone3:","cp":"1f590-1f3fd","sns":[":raised_hand_with_fingers_splayed_tone3:"],"c":"people"},":hand_splayed_tone4:":{"sn":":hand_splayed_tone4:","cp":"1f590-1f3fe","sns":[":raised_hand_with_fingers_splayed_tone4:"],"c":"people"},":hand_splayed_tone5:":{"sn":":hand_splayed_tone5:","cp":"1f590-1f3ff","sns":[":raised_hand_with_fingers_splayed_tone5:"],"c":"people"},":love_you_gesture:":{"sn":":love_you_gesture:","cp":"1f91f","sns":[],"c":"people"},":love_you_gesture_tone1:":{"sn":":love_you_gesture_tone1:","cp":"1f91f-1f3fb","sns":[":love_you_gesture_light_skin_tone:"],"c":"people"},":love_you_gesture_tone2:":{"sn":":love_you_gesture_tone2:","cp":"1f91f-1f3fc","sns":[":love_you_gesture_medium_light_skin_tone:"],"c":"people"},":love_you_gesture_tone3:":{"sn":":love_you_gesture_tone3:","cp":"1f91f-1f3fd","sns":[":love_you_gesture_medium_skin_tone:"],"c":"people"},":love_you_gesture_tone4:":{"sn":":love_you_gesture_tone4:","cp":"1f91f-1f3fe","sns":[":love_you_gesture_medium_dark_skin_tone:"],"c":"people"},":love_you_gesture_tone5:":{"sn":":love_you_gesture_tone5:","cp":"1f91f-1f3ff","sns":[":love_you_gesture_dark_skin_tone:"],"c":"people"},":right_facing_fist:":{"sn":":right_facing_fist:","cp":"1f91c","sns":[":right_fist:"],"c":"people"},":right_facing_fist_tone1:":{"sn":":right_facing_fist_tone1:","cp":"1f91c-1f3fb","sns":[":right_fist_tone1:"],"c":"people"},":right_facing_fist_tone2:":{"sn":":right_facing_fist_tone2:","cp":"1f91c-1f3fc","sns":[":right_fist_tone2:"],"c":"people"},":right_facing_fist_tone3:":{"sn":":right_facing_fist_tone3:","cp":"1f91c-1f3fd","sns":[":right_fist_tone3:"],"c":"people"},":right_facing_fist_tone4:":{"sn":":right_facing_fist_tone4:","cp":"1f91c-1f3fe","sns":[":right_fist_tone4:"],"c":"people"},":right_facing_fist_tone5:":{"sn":":right_facing_fist_tone5:","cp":"1f91c-1f3ff","sns":[":right_fist_tone5:"],"c":"people"},":left_facing_fist:":{"sn":":left_facing_fist:","cp":"1f91b","sns":[":left_fist:"],"c":"people"},":left_facing_fist_tone1:":{"sn":":left_facing_fist_tone1:","cp":"1f91b-1f3fb","sns":[":left_fist_tone1:"],"c":"people"},":left_facing_fist_tone2:":{"sn":":left_facing_fist_tone2:","cp":"1f91b-1f3fc","sns":[":left_fist_tone2:"],"c":"people"},":left_facing_fist_tone3:":{"sn":":left_facing_fist_tone3:","cp":"1f91b-1f3fd","sns":[":left_fist_tone3:"],"c":"people"},":left_facing_fist_tone4:":{"sn":":left_facing_fist_tone4:","cp":"1f91b-1f3fe","sns":[":left_fist_tone4:"],"c":"people"},":left_facing_fist_tone5:":{"sn":":left_facing_fist_tone5:","cp":"1f91b-1f3ff","sns":[":left_fist_tone5:"],"c":"people"},":muscle:":{"sn":":muscle:","cp":"1f4aa","sns":[],"c":"people"},":muscle_tone1:":{"sn":":muscle_tone1:","cp":"1f4aa-1f3fb","sns":[],"c":"people"},":muscle_tone2:":{"sn":":muscle_tone2:","cp":"1f4aa-1f3fc","sns":[],"c":"people"},":muscle_tone3:":{"sn":":muscle_tone3:","cp":"1f4aa-1f3fd","sns":[],"c":"people"},":muscle_tone4:":{"sn":":muscle_tone4:","cp":"1f4aa-1f3fe","sns":[],"c":"people"},":muscle_tone5:":{"sn":":muscle_tone5:","cp":"1f4aa-1f3ff","sns":[],"c":"people"},":fingers_crossed:":{"sn":":fingers_crossed:","cp":"1f91e","sns":[":hand_with_index_and_middle_finger_crossed:"],"c":"people"},":fingers_crossed_tone1:":{"sn":":fingers_crossed_tone1:","cp":"1f91e-1f3fb","sns":[":hand_with_index_and_middle_fingers_crossed_tone1:"],"c":"people"},":fingers_crossed_tone2:":{"sn":":fingers_crossed_tone2:","cp":"1f91e-1f3fc","sns":[":hand_with_index_and_middle_fingers_crossed_tone2:"],"c":"people"},":fingers_crossed_tone3:":{"sn":":fingers_crossed_tone3:","cp":"1f91e-1f3fd","sns":[":hand_with_index_and_middle_fingers_crossed_tone3:"],"c":"people"},":fingers_crossed_tone4:":{"sn":":fingers_crossed_tone4:","cp":"1f91e-1f3fe","sns":[":hand_with_index_and_middle_fingers_crossed_tone4:"],"c":"people"},":fingers_crossed_tone5:":{"sn":":fingers_crossed_tone5:","cp":"1f91e-1f3ff","sns":[":hand_with_index_and_middle_fingers_crossed_tone5:"],"c":"people"},":fist:":{"sn":":fist:","cp":"270a","sns":[],"c":"people"},":fist_tone1:":{"sn":":fist_tone1:","cp":"270a-1f3fb","sns":[],"c":"people"},":fist_tone2:":{"sn":":fist_tone2:","cp":"270a-1f3fc","sns":[],"c":"people"},":fist_tone3:":{"sn":":fist_tone3:","cp":"270a-1f3fd","sns":[],"c":"people"},":fist_tone4:":{"sn":":fist_tone4:","cp":"270a-1f3fe","sns":[],"c":"people"},":fist_tone5:":{"sn":":fist_tone5:","cp":"270a-1f3ff","sns":[],"c":"people"},":punch:":{"sn":":punch:","cp":"1f44a","sns":[],"c":"people"},":punch_tone1:":{"sn":":punch_tone1:","cp":"1f44a-1f3fb","sns":[],"c":"people"},":punch_tone2:":{"sn":":punch_tone2:","cp":"1f44a-1f3fc","sns":[],"c":"people"},":punch_tone3:":{"sn":":punch_tone3:","cp":"1f44a-1f3fd","sns":[],"c":"people"},":punch_tone4:":{"sn":":punch_tone4:","cp":"1f44a-1f3fe","sns":[],"c":"people"},":punch_tone5:":{"sn":":punch_tone5:","cp":"1f44a-1f3ff","sns":[],"c":"people"},":raised_back_of_hand:":{"sn":":raised_back_of_hand:","cp":"1f91a","sns":[":back_of_hand:"],"c":"people"},":raised_back_of_hand_tone1:":{"sn":":raised_back_of_hand_tone1:","cp":"1f91a-1f3fb","sns":[":back_of_hand_tone1:"],"c":"people"},":raised_back_of_hand_tone2:":{"sn":":raised_back_of_hand_tone2:","cp":"1f91a-1f3fc","sns":[":back_of_hand_tone2:"],"c":"people"},":raised_back_of_hand_tone3:":{"sn":":raised_back_of_hand_tone3:","cp":"1f91a-1f3fd","sns":[":back_of_hand_tone3:"],"c":"people"},":raised_back_of_hand_tone4:":{"sn":":raised_back_of_hand_tone4:","cp":"1f91a-1f3fe","sns":[":back_of_hand_tone4:"],"c":"people"},":raised_back_of_hand_tone5:":{"sn":":raised_back_of_hand_tone5:","cp":"1f91a-1f3ff","sns":[":back_of_hand_tone5:"],"c":"people"},":raised_hand:":{"sn":":raised_hand:","cp":"270b","sns":[],"c":"people"},":raised_hand_tone1:":{"sn":":raised_hand_tone1:","cp":"270b-1f3fb","sns":[],"c":"people"},":raised_hand_tone2:":{"sn":":raised_hand_tone2:","cp":"270b-1f3fc","sns":[],"c":"people"},":raised_hand_tone3:":{"sn":":raised_hand_tone3:","cp":"270b-1f3fd","sns":[],"c":"people"},":raised_hand_tone4:":{"sn":":raised_hand_tone4:","cp":"270b-1f3fe","sns":[],"c":"people"},":raised_hand_tone5:":{"sn":":raised_hand_tone5:","cp":"270b-1f3ff","sns":[],"c":"people"},":raised_hands:":{"sn":":raised_hands:","cp":"1f64c","sns":[],"c":"people"},":raised_hands_tone1:":{"sn":":raised_hands_tone1:","cp":"1f64c-1f3fb","sns":[],"c":"people"},":raised_hands_tone2:":{"sn":":raised_hands_tone2:","cp":"1f64c-1f3fc","sns":[],"c":"people"},":raised_hands_tone3:":{"sn":":raised_hands_tone3:","cp":"1f64c-1f3fd","sns":[],"c":"people"},":raised_hands_tone4:":{"sn":":raised_hands_tone4:","cp":"1f64c-1f3fe","sns":[],"c":"people"},":raised_hands_tone5:":{"sn":":raised_hands_tone5:","cp":"1f64c-1f3ff","sns":[],"c":"people"},":open_hands:":{"sn":":open_hands:","cp":"1f450","sns":[],"c":"people"},":open_hands_tone1:":{"sn":":open_hands_tone1:","cp":"1f450-1f3fb","sns":[],"c":"people"},":open_hands_tone2:":{"sn":":open_hands_tone2:","cp":"1f450-1f3fc","sns":[],"c":"people"},":open_hands_tone3:":{"sn":":open_hands_tone3:","cp":"1f450-1f3fd","sns":[],"c":"people"},":open_hands_tone4:":{"sn":":open_hands_tone4:","cp":"1f450-1f3fe","sns":[],"c":"people"},":open_hands_tone5:":{"sn":":open_hands_tone5:","cp":"1f450-1f3ff","sns":[],"c":"people"},":palms_up_together:":{"sn":":palms_up_together:","cp":"1f932","sns":[],"c":"people"},":palms_up_together_tone1:":{"sn":":palms_up_together_tone1:","cp":"1f932-1f3fb","sns":[":palms_up_together_light_skin_tone:"],"c":"people"},":palms_up_together_tone2:":{"sn":":palms_up_together_tone2:","cp":"1f932-1f3fc","sns":[":palms_up_together_medium_light_skin_tone:"],"c":"people"},":palms_up_together_tone3:":{"sn":":palms_up_together_tone3:","cp":"1f932-1f3fd","sns":[":palms_up_together_medium_skin_tone:"],"c":"people"},":palms_up_together_tone4:":{"sn":":palms_up_together_tone4:","cp":"1f932-1f3fe","sns":[":palms_up_together_medium_dark_skin_tone:"],"c":"people"},":palms_up_together_tone5:":{"sn":":palms_up_together_tone5:","cp":"1f932-1f3ff","sns":[":palms_up_together_dark_skin_tone:"],"c":"people"},":point_down:":{"sn":":point_down:","cp":"1f447","sns":[],"c":"people"},":point_down_tone1:":{"sn":":point_down_tone1:","cp":"1f447-1f3fb","sns":[],"c":"people"},":point_down_tone2:":{"sn":":point_down_tone2:","cp":"1f447-1f3fc","sns":[],"c":"people"},":point_down_tone3:":{"sn":":point_down_tone3:","cp":"1f447-1f3fd","sns":[],"c":"people"},":point_down_tone4:":{"sn":":point_down_tone4:","cp":"1f447-1f3fe","sns":[],"c":"people"},":point_down_tone5:":{"sn":":point_down_tone5:","cp":"1f447-1f3ff","sns":[],"c":"people"},":point_left:":{"sn":":point_left:","cp":"1f448","sns":[],"c":"people"},":point_left_tone1:":{"sn":":point_left_tone1:","cp":"1f448-1f3fb","sns":[],"c":"people"},":point_left_tone2:":{"sn":":point_left_tone2:","cp":"1f448-1f3fc","sns":[],"c":"people"},":point_left_tone3:":{"sn":":point_left_tone3:","cp":"1f448-1f3fd","sns":[],"c":"people"},":point_left_tone4:":{"sn":":point_left_tone4:","cp":"1f448-1f3fe","sns":[],"c":"people"},":point_left_tone5:":{"sn":":point_left_tone5:","cp":"1f448-1f3ff","sns":[],"c":"people"},":point_right:":{"sn":":point_right:","cp":"1f449","sns":[],"c":"people"},":point_right_tone1:":{"sn":":point_right_tone1:","cp":"1f449-1f3fb","sns":[],"c":"people"},":point_right_tone2:":{"sn":":point_right_tone2:","cp":"1f449-1f3fc","sns":[],"c":"people"},":point_right_tone3:":{"sn":":point_right_tone3:","cp":"1f449-1f3fd","sns":[],"c":"people"},":point_right_tone4:":{"sn":":point_right_tone4:","cp":"1f449-1f3fe","sns":[],"c":"people"},":point_right_tone5:":{"sn":":point_right_tone5:","cp":"1f449-1f3ff","sns":[],"c":"people"},":point_up:":{"sn":":point_up:","cp":"261d","sns":[],"c":"people"},":point_up_2:":{"sn":":point_up_2:","cp":"1f446","sns":[],"c":"people"},":point_up_2_tone1:":{"sn":":point_up_2_tone1:","cp":"1f446-1f3fb","sns":[],"c":"people"},":point_up_2_tone2:":{"sn":":point_up_2_tone2:","cp":"1f446-1f3fc","sns":[],"c":"people"},":point_up_2_tone3:":{"sn":":point_up_2_tone3:","cp":"1f446-1f3fd","sns":[],"c":"people"},":point_up_2_tone4:":{"sn":":point_up_2_tone4:","cp":"1f446-1f3fe","sns":[],"c":"people"},":point_up_2_tone5:":{"sn":":point_up_2_tone5:","cp":"1f446-1f3ff","sns":[],"c":"people"},":point_up_tone1:":{"sn":":point_up_tone1:","cp":"261d-1f3fb","sns":[],"c":"people"},":point_up_tone2:":{"sn":":point_up_tone2:","cp":"261d-1f3fc","sns":[],"c":"people"},":point_up_tone3:":{"sn":":point_up_tone3:","cp":"261d-1f3fd","sns":[],"c":"people"},":point_up_tone4:":{"sn":":point_up_tone4:","cp":"261d-1f3fe","sns":[],"c":"people"},":point_up_tone5:":{"sn":":point_up_tone5:","cp":"261d-1f3ff","sns":[],"c":"people"},":v:":{"sn":":v:","cp":"270c","sns":[],"c":"people"},":v_tone1:":{"sn":":v_tone1:","cp":"270c-1f3fb","sns":[],"c":"people"},":v_tone2:":{"sn":":v_tone2:","cp":"270c-1f3fc","sns":[],"c":"people"},":v_tone3:":{"sn":":v_tone3:","cp":"270c-1f3fd","sns":[],"c":"people"},":v_tone4:":{"sn":":v_tone4:","cp":"270c-1f3fe","sns":[],"c":"people"},":v_tone5:":{"sn":":v_tone5:","cp":"270c-1f3ff","sns":[],"c":"people"},":vulcan:":{"sn":":vulcan:","cp":"1f596","sns":[":raised_hand_with_part_between_middle_and_ring_fingers:"],"c":"people"},":vulcan_tone1:":{"sn":":vulcan_tone1:","cp":"1f596-1f3fb","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"],"c":"people"},":vulcan_tone2:":{"sn":":vulcan_tone2:","cp":"1f596-1f3fc","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"],"c":"people"},":vulcan_tone3:":{"sn":":vulcan_tone3:","cp":"1f596-1f3fd","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"],"c":"people"},":vulcan_tone4:":{"sn":":vulcan_tone4:","cp":"1f596-1f3fe","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"],"c":"people"},":vulcan_tone5:":{"sn":":vulcan_tone5:","cp":"1f596-1f3ff","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"],"c":"people"},":metal:":{"sn":":metal:","cp":"1f918","sns":[":sign_of_the_horns:"],"c":"people"},":metal_tone1:":{"sn":":metal_tone1:","cp":"1f918-1f3fb","sns":[":sign_of_the_horns_tone1:"],"c":"people"},":metal_tone2:":{"sn":":metal_tone2:","cp":"1f918-1f3fc","sns":[":sign_of_the_horns_tone2:"],"c":"people"},":metal_tone3:":{"sn":":metal_tone3:","cp":"1f918-1f3fd","sns":[":sign_of_the_horns_tone3:"],"c":"people"},":metal_tone4:":{"sn":":metal_tone4:","cp":"1f918-1f3fe","sns":[":sign_of_the_horns_tone4:"],"c":"people"},":metal_tone5:":{"sn":":metal_tone5:","cp":"1f918-1f3ff","sns":[":sign_of_the_horns_tone5:"],"c":"people"},":middle_finger:":{"sn":":middle_finger:","cp":"1f595","sns":[":reversed_hand_with_middle_finger_extended:"],"c":"people"},":middle_finger_tone1:":{"sn":":middle_finger_tone1:","cp":"1f595-1f3fb","sns":[":reversed_hand_with_middle_finger_extended_tone1:"],"c":"people"},":middle_finger_tone2:":{"sn":":middle_finger_tone2:","cp":"1f595-1f3fc","sns":[":reversed_hand_with_middle_finger_extended_tone2:"],"c":"people"},":middle_finger_tone3:":{"sn":":middle_finger_tone3:","cp":"1f595-1f3fd","sns":[":reversed_hand_with_middle_finger_extended_tone3:"],"c":"people"},":middle_finger_tone4:":{"sn":":middle_finger_tone4:","cp":"1f595-1f3fe","sns":[":reversed_hand_with_middle_finger_extended_tone4:"],"c":"people"},":middle_finger_tone5:":{"sn":":middle_finger_tone5:","cp":"1f595-1f3ff","sns":[":reversed_hand_with_middle_finger_extended_tone5:"],"c":"people"},":pray:":{"sn":":pray:","cp":"1f64f","sns":[],"c":"people"},":pray_tone1:":{"sn":":pray_tone1:","cp":"1f64f-1f3fb","sns":[],"c":"people"},":pray_tone2:":{"sn":":pray_tone2:","cp":"1f64f-1f3fc","sns":[],"c":"people"},":pray_tone3:":{"sn":":pray_tone3:","cp":"1f64f-1f3fd","sns":[],"c":"people"},":pray_tone4:":{"sn":":pray_tone4:","cp":"1f64f-1f3fe","sns":[],"c":"people"},":pray_tone5:":{"sn":":pray_tone5:","cp":"1f64f-1f3ff","sns":[],"c":"people"},":handshake:":{"sn":":handshake:","cp":"1f91d","sns":[":shaking_hands:"],"c":"people"},":handshake_tone1:":{"sn":":handshake_tone1:","cp":"1f91d-1f3fb","sns":[],"c":"people"},":handshake_tone2:":{"sn":":handshake_tone2:","cp":"1f91d-1f3fc","sns":[],"c":"people"},":handshake_tone3:":{"sn":":handshake_tone3:","cp":"1f91d-1f3fd","sns":[],"c":"people"},":handshake_tone4:":{"sn":":handshake_tone4:","cp":"1f91d-1f3fe","sns":[],"c":"people"},":handshake_tone5:":{"sn":":handshake_tone5:","cp":"1f91d-1f3ff","sns":[],"c":"people"},":writing_hand:":{"sn":":writing_hand:","cp":"270d","sns":[],"c":"people"},":writing_hand_tone1:":{"sn":":writing_hand_tone1:","cp":"270d-1f3fb","sns":[],"c":"people"},":writing_hand_tone2:":{"sn":":writing_hand_tone2:","cp":"270d-1f3fc","sns":[],"c":"people"},":writing_hand_tone3:":{"sn":":writing_hand_tone3:","cp":"270d-1f3fd","sns":[],"c":"people"},":writing_hand_tone4:":{"sn":":writing_hand_tone4:","cp":"270d-1f3fe","sns":[],"c":"people"},":writing_hand_tone5:":{"sn":":writing_hand_tone5:","cp":"270d-1f3ff","sns":[],"c":"people"},":selfie:":{"sn":":selfie:","cp":"1f933","sns":[],"c":"people"},":selfie_tone1:":{"sn":":selfie_tone1:","cp":"1f933-1f3fb","sns":[],"c":"people"},":selfie_tone2:":{"sn":":selfie_tone2:","cp":"1f933-1f3fc","sns":[],"c":"people"},":selfie_tone3:":{"sn":":selfie_tone3:","cp":"1f933-1f3fd","sns":[],"c":"people"},":selfie_tone4:":{"sn":":selfie_tone4:","cp":"1f933-1f3fe","sns":[],"c":"people"},":selfie_tone5:":{"sn":":selfie_tone5:","cp":"1f933-1f3ff","sns":[],"c":"people"},":nail_care:":{"sn":":nail_care:","cp":"1f485","sns":[],"c":"people"},":nail_care_tone1:":{"sn":":nail_care_tone1:","cp":"1f485-1f3fb","sns":[],"c":"people"},":nail_care_tone2:":{"sn":":nail_care_tone2:","cp":"1f485-1f3fc","sns":[],"c":"people"},":nail_care_tone3:":{"sn":":nail_care_tone3:","cp":"1f485-1f3fd","sns":[],"c":"people"},":nail_care_tone4:":{"sn":":nail_care_tone4:","cp":"1f485-1f3fe","sns":[],"c":"people"},":nail_care_tone5:":{"sn":":nail_care_tone5:","cp":"1f485-1f3ff","sns":[],"c":"people"},":adult:":{"sn":":adult:","cp":"1f9d1","sns":[],"c":"people"},":adult_tone1:":{"sn":":adult_tone1:","cp":"1f9d1-1f3fb","sns":[":adult_light_skin_tone:"],"c":"people"},":adult_tone2:":{"sn":":adult_tone2:","cp":"1f9d1-1f3fc","sns":[":adult_medium_light_skin_tone:"],"c":"people"},":adult_tone3:":{"sn":":adult_tone3:","cp":"1f9d1-1f3fd","sns":[":adult_medium_skin_tone:"],"c":"people"},":adult_tone4:":{"sn":":adult_tone4:","cp":"1f9d1-1f3fe","sns":[":adult_medium_dark_skin_tone:"],"c":"people"},":adult_tone5:":{"sn":":adult_tone5:","cp":"1f9d1-1f3ff","sns":[":adult_dark_skin_tone:"],"c":"people"},":angel:":{"sn":":angel:","cp":"1f47c","sns":[],"c":"people"},":angel_tone1:":{"sn":":angel_tone1:","cp":"1f47c-1f3fb","sns":[],"c":"people"},":angel_tone2:":{"sn":":angel_tone2:","cp":"1f47c-1f3fc","sns":[],"c":"people"},":angel_tone3:":{"sn":":angel_tone3:","cp":"1f47c-1f3fd","sns":[],"c":"people"},":angel_tone4:":{"sn":":angel_tone4:","cp":"1f47c-1f3fe","sns":[],"c":"people"},":angel_tone5:":{"sn":":angel_tone5:","cp":"1f47c-1f3ff","sns":[],"c":"people"},":baby:":{"sn":":baby:","cp":"1f476","sns":[],"c":"people"},":baby_tone1:":{"sn":":baby_tone1:","cp":"1f476-1f3fb","sns":[],"c":"people"},":baby_tone2:":{"sn":":baby_tone2:","cp":"1f476-1f3fc","sns":[],"c":"people"},":baby_tone3:":{"sn":":baby_tone3:","cp":"1f476-1f3fd","sns":[],"c":"people"},":baby_tone4:":{"sn":":baby_tone4:","cp":"1f476-1f3fe","sns":[],"c":"people"},":baby_tone5:":{"sn":":baby_tone5:","cp":"1f476-1f3ff","sns":[],"c":"people"},":bearded_person:":{"sn":":bearded_person:","cp":"1f9d4","sns":[],"c":"people"},":bearded_person_tone1:":{"sn":":bearded_person_tone1:","cp":"1f9d4-1f3fb","sns":[":bearded_person_light_skin_tone:"],"c":"people"},":bearded_person_tone2:":{"sn":":bearded_person_tone2:","cp":"1f9d4-1f3fc","sns":[":bearded_person_medium_light_skin_tone:"],"c":"people"},":bearded_person_tone3:":{"sn":":bearded_person_tone3:","cp":"1f9d4-1f3fd","sns":[":bearded_person_medium_skin_tone:"],"c":"people"},":bearded_person_tone4:":{"sn":":bearded_person_tone4:","cp":"1f9d4-1f3fe","sns":[":bearded_person_medium_dark_skin_tone:"],"c":"people"},":bearded_person_tone5:":{"sn":":bearded_person_tone5:","cp":"1f9d4-1f3ff","sns":[":bearded_person_dark_skin_tone:"],"c":"people"},":blond-haired_man:":{"sn":":blond-haired_man:","cp":"1f471-200d-2642-fe0f","sns":[],"c":"people"},":blond-haired_man_tone1:":{"sn":":blond-haired_man_tone1:","cp":"1f471-1f3fb-200d-2642-fe0f","sns":[":blond-haired_man_light_skin_tone:"],"c":"people"},":blond-haired_man_tone2:":{"sn":":blond-haired_man_tone2:","cp":"1f471-1f3fc-200d-2642-fe0f","sns":[":blond-haired_man_medium_light_skin_tone:"],"c":"people"},":blond-haired_man_tone3:":{"sn":":blond-haired_man_tone3:","cp":"1f471-1f3fd-200d-2642-fe0f","sns":[":blond-haired_man_medium_skin_tone:"],"c":"people"},":blond-haired_man_tone4:":{"sn":":blond-haired_man_tone4:","cp":"1f471-1f3fe-200d-2642-fe0f","sns":[":blond-haired_man_medium_dark_skin_tone:"],"c":"people"},":blond-haired_man_tone5:":{"sn":":blond-haired_man_tone5:","cp":"1f471-1f3ff-200d-2642-fe0f","sns":[":blond-haired_man_dark_skin_tone:"],"c":"people"},":blond-haired_woman:":{"sn":":blond-haired_woman:","cp":"1f471-200d-2640-fe0f","sns":[],"c":"people"},":blond-haired_woman_tone1:":{"sn":":blond-haired_woman_tone1:","cp":"1f471-1f3fb-200d-2640-fe0f","sns":[":blond-haired_woman_light_skin_tone:"],"c":"people"},":blond-haired_woman_tone2:":{"sn":":blond-haired_woman_tone2:","cp":"1f471-1f3fc-200d-2640-fe0f","sns":[":blond-haired_woman_medium_light_skin_tone:"],"c":"people"},":blond-haired_woman_tone3:":{"sn":":blond-haired_woman_tone3:","cp":"1f471-1f3fd-200d-2640-fe0f","sns":[":blond-haired_woman_medium_skin_tone:"],"c":"people"},":blond-haired_woman_tone4:":{"sn":":blond-haired_woman_tone4:","cp":"1f471-1f3fe-200d-2640-fe0f","sns":[":blond-haired_woman_medium_dark_skin_tone:"],"c":"people"},":blond-haired_woman_tone5:":{"sn":":blond-haired_woman_tone5:","cp":"1f471-1f3ff-200d-2640-fe0f","sns":[":blond-haired_woman_dark_skin_tone:"],"c":"people"},":blond_haired_person:":{"sn":":blond_haired_person:","cp":"1f471","sns":[":person_with_blond_hair:"],"c":"people"},":blond_haired_person_tone1:":{"sn":":blond_haired_person_tone1:","cp":"1f471-1f3fb","sns":[":person_with_blond_hair_tone1:"],"c":"people"},":blond_haired_person_tone2:":{"sn":":blond_haired_person_tone2:","cp":"1f471-1f3fc","sns":[":person_with_blond_hair_tone2:"],"c":"people"},":blond_haired_person_tone3:":{"sn":":blond_haired_person_tone3:","cp":"1f471-1f3fd","sns":[":person_with_blond_hair_tone3:"],"c":"people"},":blond_haired_person_tone4:":{"sn":":blond_haired_person_tone4:","cp":"1f471-1f3fe","sns":[":person_with_blond_hair_tone4:"],"c":"people"},":blond_haired_person_tone5:":{"sn":":blond_haired_person_tone5:","cp":"1f471-1f3ff","sns":[":person_with_blond_hair_tone5:"],"c":"people"},":boy:":{"sn":":boy:","cp":"1f466","sns":[],"c":"people"},":boy_tone1:":{"sn":":boy_tone1:","cp":"1f466-1f3fb","sns":[],"c":"people"},":boy_tone2:":{"sn":":boy_tone2:","cp":"1f466-1f3fc","sns":[],"c":"people"},":boy_tone3:":{"sn":":boy_tone3:","cp":"1f466-1f3fd","sns":[],"c":"people"},":boy_tone4:":{"sn":":boy_tone4:","cp":"1f466-1f3fe","sns":[],"c":"people"},":boy_tone5:":{"sn":":boy_tone5:","cp":"1f466-1f3ff","sns":[],"c":"people"},":brain:":{"sn":":brain:","cp":"1f9e0","sns":[],"c":"people"},":breast_feeding:":{"sn":":breast_feeding:","cp":"1f931","sns":[],"c":"people"},":breast_feeding_tone1:":{"sn":":breast_feeding_tone1:","cp":"1f931-1f3fb","sns":[":breast_feeding_light_skin_tone:"],"c":"people"},":breast_feeding_tone2:":{"sn":":breast_feeding_tone2:","cp":"1f931-1f3fc","sns":[":breast_feeding_medium_light_skin_tone:"],"c":"people"},":breast_feeding_tone3:":{"sn":":breast_feeding_tone3:","cp":"1f931-1f3fd","sns":[":breast_feeding_medium_skin_tone:"],"c":"people"},":breast_feeding_tone4:":{"sn":":breast_feeding_tone4:","cp":"1f931-1f3fe","sns":[":breast_feeding_medium_dark_skin_tone:"],"c":"people"},":breast_feeding_tone5:":{"sn":":breast_feeding_tone5:","cp":"1f931-1f3ff","sns":[":breast_feeding_dark_skin_tone:"],"c":"people"},":bride_with_veil:":{"sn":":bride_with_veil:","cp":"1f470","sns":[],"c":"people"},":bride_with_veil_tone1:":{"sn":":bride_with_veil_tone1:","cp":"1f470-1f3fb","sns":[],"c":"people"},":bride_with_veil_tone2:":{"sn":":bride_with_veil_tone2:","cp":"1f470-1f3fc","sns":[],"c":"people"},":bride_with_veil_tone3:":{"sn":":bride_with_veil_tone3:","cp":"1f470-1f3fd","sns":[],"c":"people"},":bride_with_veil_tone4:":{"sn":":bride_with_veil_tone4:","cp":"1f470-1f3fe","sns":[],"c":"people"},":bride_with_veil_tone5:":{"sn":":bride_with_veil_tone5:","cp":"1f470-1f3ff","sns":[],"c":"people"},":bust_in_silhouette:":{"sn":":bust_in_silhouette:","cp":"1f464","sns":[],"c":"people"},":busts_in_silhouette:":{"sn":":busts_in_silhouette:","cp":"1f465","sns":[],"c":"people"},":child:":{"sn":":child:","cp":"1f9d2","sns":[],"c":"people"},":child_tone1:":{"sn":":child_tone1:","cp":"1f9d2-1f3fb","sns":[":child_light_skin_tone:"],"c":"people"},":child_tone2:":{"sn":":child_tone2:","cp":"1f9d2-1f3fc","sns":[":child_medium_light_skin_tone:"],"c":"people"},":child_tone3:":{"sn":":child_tone3:","cp":"1f9d2-1f3fd","sns":[":child_medium_skin_tone:"],"c":"people"},":child_tone4:":{"sn":":child_tone4:","cp":"1f9d2-1f3fe","sns":[":child_medium_dark_skin_tone:"],"c":"people"},":child_tone5:":{"sn":":child_tone5:","cp":"1f9d2-1f3ff","sns":[":child_dark_skin_tone:"],"c":"people"},":construction_worker:":{"sn":":construction_worker:","cp":"1f477","sns":[],"c":"people"},":construction_worker_tone1:":{"sn":":construction_worker_tone1:","cp":"1f477-1f3fb","sns":[],"c":"people"},":construction_worker_tone2:":{"sn":":construction_worker_tone2:","cp":"1f477-1f3fc","sns":[],"c":"people"},":construction_worker_tone3:":{"sn":":construction_worker_tone3:","cp":"1f477-1f3fd","sns":[],"c":"people"},":construction_worker_tone4:":{"sn":":construction_worker_tone4:","cp":"1f477-1f3fe","sns":[],"c":"people"},":construction_worker_tone5:":{"sn":":construction_worker_tone5:","cp":"1f477-1f3ff","sns":[],"c":"people"},":couple:":{"sn":":couple:","cp":"1f46b","sns":[],"c":"people"},":couple_mm:":{"sn":":couple_mm:","cp":"1f468-200d-2764-fe0f-200d-1f468","sns":[":couple_with_heart_mm:"],"c":"people"},":couple_with_heart:":{"sn":":couple_with_heart:","cp":"1f491","sns":[],"c":"people"},":couple_with_heart_woman_man:":{"sn":":couple_with_heart_woman_man:","cp":"1f469-200d-2764-fe0f-200d-1f468","sns":[],"c":"people"},":couple_ww:":{"sn":":couple_ww:","cp":"1f469-200d-2764-fe0f-200d-1f469","sns":[":couple_with_heart_ww:"],"c":"people"},":couplekiss:":{"sn":":couplekiss:","cp":"1f48f","sns":[],"c":"people"},":dancer:":{"sn":":dancer:","cp":"1f483","sns":[],"c":"people"},":dancer_tone1:":{"sn":":dancer_tone1:","cp":"1f483-1f3fb","sns":[],"c":"people"},":dancer_tone2:":{"sn":":dancer_tone2:","cp":"1f483-1f3fc","sns":[],"c":"people"},":dancer_tone3:":{"sn":":dancer_tone3:","cp":"1f483-1f3fd","sns":[],"c":"people"},":dancer_tone4:":{"sn":":dancer_tone4:","cp":"1f483-1f3fe","sns":[],"c":"people"},":dancer_tone5:":{"sn":":dancer_tone5:","cp":"1f483-1f3ff","sns":[],"c":"people"},":detective:":{"sn":":detective:","cp":"1f575","sns":[":spy:",":sleuth_or_spy:"],"c":"people"},":detective_tone1:":{"sn":":detective_tone1:","cp":"1f575-1f3fb","sns":[":spy_tone1:",":sleuth_or_spy_tone1:"],"c":"people"},":detective_tone2:":{"sn":":detective_tone2:","cp":"1f575-1f3fc","sns":[":spy_tone2:",":sleuth_or_spy_tone2:"],"c":"people"},":detective_tone3:":{"sn":":detective_tone3:","cp":"1f575-1f3fd","sns":[":spy_tone3:",":sleuth_or_spy_tone3:"],"c":"people"},":detective_tone4:":{"sn":":detective_tone4:","cp":"1f575-1f3fe","sns":[":spy_tone4:",":sleuth_or_spy_tone4:"],"c":"people"},":detective_tone5:":{"sn":":detective_tone5:","cp":"1f575-1f3ff","sns":[":spy_tone5:",":sleuth_or_spy_tone5:"],"c":"people"},":ear:":{"sn":":ear:","cp":"1f442","sns":[],"c":"people"},":ear_tone1:":{"sn":":ear_tone1:","cp":"1f442-1f3fb","sns":[],"c":"people"},":ear_tone2:":{"sn":":ear_tone2:","cp":"1f442-1f3fc","sns":[],"c":"people"},":ear_tone3:":{"sn":":ear_tone3:","cp":"1f442-1f3fd","sns":[],"c":"people"},":ear_tone4:":{"sn":":ear_tone4:","cp":"1f442-1f3fe","sns":[],"c":"people"},":ear_tone5:":{"sn":":ear_tone5:","cp":"1f442-1f3ff","sns":[],"c":"people"},":elf:":{"sn":":elf:","cp":"1f9dd","sns":[],"c":"people"},":elf_tone1:":{"sn":":elf_tone1:","cp":"1f9dd-1f3fb","sns":[":elf_light_skin_tone:"],"c":"people"},":elf_tone2:":{"sn":":elf_tone2:","cp":"1f9dd-1f3fc","sns":[":elf_medium_light_skin_tone:"],"c":"people"},":elf_tone3:":{"sn":":elf_tone3:","cp":"1f9dd-1f3fd","sns":[":elf_medium_skin_tone:"],"c":"people"},":elf_tone4:":{"sn":":elf_tone4:","cp":"1f9dd-1f3fe","sns":[":elf_medium_dark_skin_tone:"],"c":"people"},":elf_tone5:":{"sn":":elf_tone5:","cp":"1f9dd-1f3ff","sns":[":elf_dark_skin_tone:"],"c":"people"},":eye:":{"sn":":eye:","cp":"1f441-fe0f","sns":[],"c":"people"},":eyes:":{"sn":":eyes:","cp":"1f440","sns":[],"c":"people"},":fairy:":{"sn":":fairy:","cp":"1f9da","sns":[],"c":"people"},":fairy_tone1:":{"sn":":fairy_tone1:","cp":"1f9da-1f3fb","sns":[":fairy_light_skin_tone:"],"c":"people"},":fairy_tone2:":{"sn":":fairy_tone2:","cp":"1f9da-1f3fc","sns":[":fairy_medium_light_skin_tone:"],"c":"people"},":fairy_tone3:":{"sn":":fairy_tone3:","cp":"1f9da-1f3fd","sns":[":fairy_medium_skin_tone:"],"c":"people"},":fairy_tone4:":{"sn":":fairy_tone4:","cp":"1f9da-1f3fe","sns":[":fairy_medium_dark_skin_tone:"],"c":"people"},":fairy_tone5:":{"sn":":fairy_tone5:","cp":"1f9da-1f3ff","sns":[":fairy_dark_skin_tone:"],"c":"people"},":family:":{"sn":":family:","cp":"1f46a","sns":[],"c":"people"},":family_man_boy:":{"sn":":family_man_boy:","cp":"1f468-200d-1f466","sns":[],"c":"people"},":family_man_boy_boy:":{"sn":":family_man_boy_boy:","cp":"1f468-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_man_girl:":{"sn":":family_man_girl:","cp":"1f468-200d-1f467","sns":[],"c":"people"},":family_man_girl_boy:":{"sn":":family_man_girl_boy:","cp":"1f468-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_man_girl_girl:":{"sn":":family_man_girl_girl:","cp":"1f468-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_man_woman_boy:":{"sn":":family_man_woman_boy:","cp":"1f468-200d-1f469-200d-1f466","sns":[],"c":"people"},":family_mmb:":{"sn":":family_mmb:","cp":"1f468-200d-1f468-200d-1f466","sns":[],"c":"people"},":family_mmbb:":{"sn":":family_mmbb:","cp":"1f468-200d-1f468-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_mmg:":{"sn":":family_mmg:","cp":"1f468-200d-1f468-200d-1f467","sns":[],"c":"people"},":family_mmgb:":{"sn":":family_mmgb:","cp":"1f468-200d-1f468-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_mmgg:":{"sn":":family_mmgg:","cp":"1f468-200d-1f468-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_mwbb:":{"sn":":family_mwbb:","cp":"1f468-200d-1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_mwg:":{"sn":":family_mwg:","cp":"1f468-200d-1f469-200d-1f467","sns":[],"c":"people"},":family_mwgb:":{"sn":":family_mwgb:","cp":"1f468-200d-1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_mwgg:":{"sn":":family_mwgg:","cp":"1f468-200d-1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_woman_boy:":{"sn":":family_woman_boy:","cp":"1f469-200d-1f466","sns":[],"c":"people"},":family_woman_boy_boy:":{"sn":":family_woman_boy_boy:","cp":"1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_woman_girl:":{"sn":":family_woman_girl:","cp":"1f469-200d-1f467","sns":[],"c":"people"},":family_woman_girl_boy:":{"sn":":family_woman_girl_boy:","cp":"1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_woman_girl_girl:":{"sn":":family_woman_girl_girl:","cp":"1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_wwb:":{"sn":":family_wwb:","cp":"1f469-200d-1f469-200d-1f466","sns":[],"c":"people"},":family_wwbb:":{"sn":":family_wwbb:","cp":"1f469-200d-1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_wwg:":{"sn":":family_wwg:","cp":"1f469-200d-1f469-200d-1f467","sns":[],"c":"people"},":family_wwgb:":{"sn":":family_wwgb:","cp":"1f469-200d-1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_wwgg:":{"sn":":family_wwgg:","cp":"1f469-200d-1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":footprints:":{"sn":":footprints:","cp":"1f463","sns":[],"c":"people"},":frowning2:":{"sn":":frowning2:","cp":"2639","sns":[":white_frowning_face:"],"c":"people"},":genie:":{"sn":":genie:","cp":"1f9de","sns":[],"c":"people"},":ghost:":{"sn":":ghost:","cp":"1f47b","sns":[],"c":"people"},":girl:":{"sn":":girl:","cp":"1f467","sns":[],"c":"people"},":girl_tone1:":{"sn":":girl_tone1:","cp":"1f467-1f3fb","sns":[],"c":"people"},":girl_tone2:":{"sn":":girl_tone2:","cp":"1f467-1f3fc","sns":[],"c":"people"},":girl_tone3:":{"sn":":girl_tone3:","cp":"1f467-1f3fd","sns":[],"c":"people"},":girl_tone4:":{"sn":":girl_tone4:","cp":"1f467-1f3fe","sns":[],"c":"people"},":girl_tone5:":{"sn":":girl_tone5:","cp":"1f467-1f3ff","sns":[],"c":"people"},":guard:":{"sn":":guard:","cp":"1f482","sns":[":guardsman:"],"c":"people"},":guard_tone1:":{"sn":":guard_tone1:","cp":"1f482-1f3fb","sns":[":guardsman_tone1:"],"c":"people"},":guard_tone2:":{"sn":":guard_tone2:","cp":"1f482-1f3fc","sns":[":guardsman_tone2:"],"c":"people"},":guard_tone3:":{"sn":":guard_tone3:","cp":"1f482-1f3fd","sns":[":guardsman_tone3:"],"c":"people"},":guard_tone4:":{"sn":":guard_tone4:","cp":"1f482-1f3fe","sns":[":guardsman_tone4:"],"c":"people"},":guard_tone5:":{"sn":":guard_tone5:","cp":"1f482-1f3ff","sns":[":guardsman_tone5:"],"c":"people"},":helmet_with_cross:":{"sn":":helmet_with_cross:","cp":"26d1","sns":[":helmet_with_white_cross:"],"c":"people"},":kiss:":{"sn":":kiss:","cp":"1f48b","sns":[],"c":"people"},":kiss_mm:":{"sn":":kiss_mm:","cp":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","sns":[":couplekiss_mm:"],"c":"people"},":kiss_woman_man:":{"sn":":kiss_woman_man:","cp":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","sns":[],"c":"people"},":kiss_ww:":{"sn":":kiss_ww:","cp":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","sns":[":couplekiss_ww:"],"c":"people"},":levitate:":{"sn":":levitate:","cp":"1f574","sns":[":man_in_business_suit_levitating:"],"c":"people"},":levitate_tone1:":{"sn":":levitate_tone1:","cp":"1f574-1f3fb","sns":[":man_in_business_suit_levitating_tone1:",":man_in_business_suit_levitating_light_skin_tone:"],"c":"people"},":levitate_tone2:":{"sn":":levitate_tone2:","cp":"1f574-1f3fc","sns":[":man_in_business_suit_levitating_tone2:",":man_in_business_suit_levitating_medium_light_skin_tone:"],"c":"people"},":levitate_tone3:":{"sn":":levitate_tone3:","cp":"1f574-1f3fd","sns":[":man_in_business_suit_levitating_tone3:",":man_in_business_suit_levitating_medium_skin_tone:"],"c":"people"},":levitate_tone4:":{"sn":":levitate_tone4:","cp":"1f574-1f3fe","sns":[":man_in_business_suit_levitating_tone4:",":man_in_business_suit_levitating_medium_dark_skin_tone:"],"c":"people"},":levitate_tone5:":{"sn":":levitate_tone5:","cp":"1f574-1f3ff","sns":[":man_in_business_suit_levitating_tone5:",":man_in_business_suit_levitating_dark_skin_tone:"],"c":"people"},":lips:":{"sn":":lips:","cp":"1f444","sns":[],"c":"people"},":mage:":{"sn":":mage:","cp":"1f9d9","sns":[],"c":"people"},":mage_tone1:":{"sn":":mage_tone1:","cp":"1f9d9-1f3fb","sns":[":mage_light_skin_tone:"],"c":"people"},":mage_tone2:":{"sn":":mage_tone2:","cp":"1f9d9-1f3fc","sns":[":mage_medium_light_skin_tone:"],"c":"people"},":mage_tone3:":{"sn":":mage_tone3:","cp":"1f9d9-1f3fd","sns":[":mage_medium_skin_tone:"],"c":"people"},":mage_tone4:":{"sn":":mage_tone4:","cp":"1f9d9-1f3fe","sns":[":mage_medium_dark_skin_tone:"],"c":"people"},":mage_tone5:":{"sn":":mage_tone5:","cp":"1f9d9-1f3ff","sns":[":mage_dark_skin_tone:"],"c":"people"},":man:":{"sn":":man:","cp":"1f468","sns":[],"c":"people"},":man_artist:":{"sn":":man_artist:","cp":"1f468-200d-1f3a8","sns":[],"c":"people"},":man_artist_tone1:":{"sn":":man_artist_tone1:","cp":"1f468-1f3fb-200d-1f3a8","sns":[":man_artist_light_skin_tone:"],"c":"people"},":man_artist_tone2:":{"sn":":man_artist_tone2:","cp":"1f468-1f3fc-200d-1f3a8","sns":[":man_artist_medium_light_skin_tone:"],"c":"people"},":man_artist_tone3:":{"sn":":man_artist_tone3:","cp":"1f468-1f3fd-200d-1f3a8","sns":[":man_artist_medium_skin_tone:"],"c":"people"},":man_artist_tone4:":{"sn":":man_artist_tone4:","cp":"1f468-1f3fe-200d-1f3a8","sns":[":man_artist_medium_dark_skin_tone:"],"c":"people"},":man_artist_tone5:":{"sn":":man_artist_tone5:","cp":"1f468-1f3ff-200d-1f3a8","sns":[":man_artist_dark_skin_tone:"],"c":"people"},":man_astronaut:":{"sn":":man_astronaut:","cp":"1f468-200d-1f680","sns":[],"c":"people"},":man_astronaut_tone1:":{"sn":":man_astronaut_tone1:","cp":"1f468-1f3fb-200d-1f680","sns":[":man_astronaut_light_skin_tone:"],"c":"people"},":man_astronaut_tone2:":{"sn":":man_astronaut_tone2:","cp":"1f468-1f3fc-200d-1f680","sns":[":man_astronaut_medium_light_skin_tone:"],"c":"people"},":man_astronaut_tone3:":{"sn":":man_astronaut_tone3:","cp":"1f468-1f3fd-200d-1f680","sns":[":man_astronaut_medium_skin_tone:"],"c":"people"},":man_astronaut_tone4:":{"sn":":man_astronaut_tone4:","cp":"1f468-1f3fe-200d-1f680","sns":[":man_astronaut_medium_dark_skin_tone:"],"c":"people"},":man_astronaut_tone5:":{"sn":":man_astronaut_tone5:","cp":"1f468-1f3ff-200d-1f680","sns":[":man_astronaut_dark_skin_tone:"],"c":"people"},":man_bowing:":{"sn":":man_bowing:","cp":"1f647-200d-2642-fe0f","sns":[],"c":"people"},":man_bowing_tone1:":{"sn":":man_bowing_tone1:","cp":"1f647-1f3fb-200d-2642-fe0f","sns":[":man_bowing_light_skin_tone:"],"c":"people"},":man_bowing_tone2:":{"sn":":man_bowing_tone2:","cp":"1f647-1f3fc-200d-2642-fe0f","sns":[":man_bowing_medium_light_skin_tone:"],"c":"people"},":man_bowing_tone3:":{"sn":":man_bowing_tone3:","cp":"1f647-1f3fd-200d-2642-fe0f","sns":[":man_bowing_medium_skin_tone:"],"c":"people"},":man_bowing_tone4:":{"sn":":man_bowing_tone4:","cp":"1f647-1f3fe-200d-2642-fe0f","sns":[":man_bowing_medium_dark_skin_tone:"],"c":"people"},":man_bowing_tone5:":{"sn":":man_bowing_tone5:","cp":"1f647-1f3ff-200d-2642-fe0f","sns":[":man_bowing_dark_skin_tone:"],"c":"people"},":man_construction_worker:":{"sn":":man_construction_worker:","cp":"1f477-200d-2642-fe0f","sns":[],"c":"people"},":man_construction_worker_tone1:":{"sn":":man_construction_worker_tone1:","cp":"1f477-1f3fb-200d-2642-fe0f","sns":[":man_construction_worker_light_skin_tone:"],"c":"people"},":man_construction_worker_tone2:":{"sn":":man_construction_worker_tone2:","cp":"1f477-1f3fc-200d-2642-fe0f","sns":[":man_construction_worker_medium_light_skin_tone:"],"c":"people"},":man_construction_worker_tone3:":{"sn":":man_construction_worker_tone3:","cp":"1f477-1f3fd-200d-2642-fe0f","sns":[":man_construction_worker_medium_skin_tone:"],"c":"people"},":man_construction_worker_tone4:":{"sn":":man_construction_worker_tone4:","cp":"1f477-1f3fe-200d-2642-fe0f","sns":[":man_construction_worker_medium_dark_skin_tone:"],"c":"people"},":man_construction_worker_tone5:":{"sn":":man_construction_worker_tone5:","cp":"1f477-1f3ff-200d-2642-fe0f","sns":[":man_construction_worker_dark_skin_tone:"],"c":"people"},":man_cook:":{"sn":":man_cook:","cp":"1f468-200d-1f373","sns":[],"c":"people"},":man_cook_tone1:":{"sn":":man_cook_tone1:","cp":"1f468-1f3fb-200d-1f373","sns":[":man_cook_light_skin_tone:"],"c":"people"},":man_cook_tone2:":{"sn":":man_cook_tone2:","cp":"1f468-1f3fc-200d-1f373","sns":[":man_cook_medium_light_skin_tone:"],"c":"people"},":man_cook_tone3:":{"sn":":man_cook_tone3:","cp":"1f468-1f3fd-200d-1f373","sns":[":man_cook_medium_skin_tone:"],"c":"people"},":man_cook_tone4:":{"sn":":man_cook_tone4:","cp":"1f468-1f3fe-200d-1f373","sns":[":man_cook_medium_dark_skin_tone:"],"c":"people"},":man_cook_tone5:":{"sn":":man_cook_tone5:","cp":"1f468-1f3ff-200d-1f373","sns":[":man_cook_dark_skin_tone:"],"c":"people"},":man_dancing:":{"sn":":man_dancing:","cp":"1f57a","sns":[":male_dancer:"],"c":"people"},":man_dancing_tone1:":{"sn":":man_dancing_tone1:","cp":"1f57a-1f3fb","sns":[":male_dancer_tone1:"],"c":"people"},":man_dancing_tone2:":{"sn":":man_dancing_tone2:","cp":"1f57a-1f3fc","sns":[":male_dancer_tone2:"],"c":"people"},":man_dancing_tone3:":{"sn":":man_dancing_tone3:","cp":"1f57a-1f3fd","sns":[":male_dancer_tone3:"],"c":"people"},":man_dancing_tone4:":{"sn":":man_dancing_tone4:","cp":"1f57a-1f3fe","sns":[":male_dancer_tone4:"],"c":"people"},":man_dancing_tone5:":{"sn":":man_dancing_tone5:","cp":"1f57a-1f3ff","sns":[":male_dancer_tone5:"],"c":"people"},":man_detective:":{"sn":":man_detective:","cp":"1f575-fe0f-200d-2642-fe0f","sns":[],"c":"people"},":man_detective_tone1:":{"sn":":man_detective_tone1:","cp":"1f575-1f3fb-200d-2642-fe0f","sns":[":man_detective_light_skin_tone:"],"c":"people"},":man_detective_tone2:":{"sn":":man_detective_tone2:","cp":"1f575-1f3fc-200d-2642-fe0f","sns":[":man_detective_medium_light_skin_tone:"],"c":"people"},":man_detective_tone3:":{"sn":":man_detective_tone3:","cp":"1f575-1f3fd-200d-2642-fe0f","sns":[":man_detective_medium_skin_tone:"],"c":"people"},":man_detective_tone4:":{"sn":":man_detective_tone4:","cp":"1f575-1f3fe-200d-2642-fe0f","sns":[":man_detective_medium_dark_skin_tone:"],"c":"people"},":man_detective_tone5:":{"sn":":man_detective_tone5:","cp":"1f575-1f3ff-200d-2642-fe0f","sns":[":man_detective_dark_skin_tone:"],"c":"people"},":man_elf:":{"sn":":man_elf:","cp":"1f9dd-200d-2642-fe0f","sns":[],"c":"people"},":man_elf_tone1:":{"sn":":man_elf_tone1:","cp":"1f9dd-1f3fb-200d-2642-fe0f","sns":[":man_elf_light_skin_tone:"],"c":"people"},":man_elf_tone2:":{"sn":":man_elf_tone2:","cp":"1f9dd-1f3fc-200d-2642-fe0f","sns":[":man_elf_medium_light_skin_tone:"],"c":"people"},":man_elf_tone3:":{"sn":":man_elf_tone3:","cp":"1f9dd-1f3fd-200d-2642-fe0f","sns":[":man_elf_medium_skin_tone:"],"c":"people"},":man_elf_tone4:":{"sn":":man_elf_tone4:","cp":"1f9dd-1f3fe-200d-2642-fe0f","sns":[":man_elf_medium_dark_skin_tone:"],"c":"people"},":man_elf_tone5:":{"sn":":man_elf_tone5:","cp":"1f9dd-1f3ff-200d-2642-fe0f","sns":[":man_elf_dark_skin_tone:"],"c":"people"},":man_facepalming:":{"sn":":man_facepalming:","cp":"1f926-200d-2642-fe0f","sns":[],"c":"people"},":man_facepalming_tone1:":{"sn":":man_facepalming_tone1:","cp":"1f926-1f3fb-200d-2642-fe0f","sns":[":man_facepalming_light_skin_tone:"],"c":"people"},":man_facepalming_tone2:":{"sn":":man_facepalming_tone2:","cp":"1f926-1f3fc-200d-2642-fe0f","sns":[":man_facepalming_medium_light_skin_tone:"],"c":"people"},":man_facepalming_tone3:":{"sn":":man_facepalming_tone3:","cp":"1f926-1f3fd-200d-2642-fe0f","sns":[":man_facepalming_medium_skin_tone:"],"c":"people"},":man_facepalming_tone4:":{"sn":":man_facepalming_tone4:","cp":"1f926-1f3fe-200d-2642-fe0f","sns":[":man_facepalming_medium_dark_skin_tone:"],"c":"people"},":man_facepalming_tone5:":{"sn":":man_facepalming_tone5:","cp":"1f926-1f3ff-200d-2642-fe0f","sns":[":man_facepalming_dark_skin_tone:"],"c":"people"},":man_factory_worker:":{"sn":":man_factory_worker:","cp":"1f468-200d-1f3ed","sns":[],"c":"people"},":man_factory_worker_tone1:":{"sn":":man_factory_worker_tone1:","cp":"1f468-1f3fb-200d-1f3ed","sns":[":man_factory_worker_light_skin_tone:"],"c":"people"},":man_factory_worker_tone2:":{"sn":":man_factory_worker_tone2:","cp":"1f468-1f3fc-200d-1f3ed","sns":[":man_factory_worker_medium_light_skin_tone:"],"c":"people"},":man_factory_worker_tone3:":{"sn":":man_factory_worker_tone3:","cp":"1f468-1f3fd-200d-1f3ed","sns":[":man_factory_worker_medium_skin_tone:"],"c":"people"},":man_factory_worker_tone4:":{"sn":":man_factory_worker_tone4:","cp":"1f468-1f3fe-200d-1f3ed","sns":[":man_factory_worker_medium_dark_skin_tone:"],"c":"people"},":man_factory_worker_tone5:":{"sn":":man_factory_worker_tone5:","cp":"1f468-1f3ff-200d-1f3ed","sns":[":man_factory_worker_dark_skin_tone:"],"c":"people"},":man_fairy:":{"sn":":man_fairy:","cp":"1f9da-200d-2642-fe0f","sns":[],"c":"people"},":man_fairy_tone1:":{"sn":":man_fairy_tone1:","cp":"1f9da-1f3fb-200d-2642-fe0f","sns":[":man_fairy_light_skin_tone:"],"c":"people"},":man_fairy_tone2:":{"sn":":man_fairy_tone2:","cp":"1f9da-1f3fc-200d-2642-fe0f","sns":[":man_fairy_medium_light_skin_tone:"],"c":"people"},":man_fairy_tone3:":{"sn":":man_fairy_tone3:","cp":"1f9da-1f3fd-200d-2642-fe0f","sns":[":man_fairy_medium_skin_tone:"],"c":"people"},":man_fairy_tone4:":{"sn":":man_fairy_tone4:","cp":"1f9da-1f3fe-200d-2642-fe0f","sns":[":man_fairy_medium_dark_skin_tone:"],"c":"people"},":man_fairy_tone5:":{"sn":":man_fairy_tone5:","cp":"1f9da-1f3ff-200d-2642-fe0f","sns":[":man_fairy_dark_skin_tone:"],"c":"people"},":man_farmer:":{"sn":":man_farmer:","cp":"1f468-200d-1f33e","sns":[],"c":"people"},":man_farmer_tone1:":{"sn":":man_farmer_tone1:","cp":"1f468-1f3fb-200d-1f33e","sns":[":man_farmer_light_skin_tone:"],"c":"people"},":man_farmer_tone2:":{"sn":":man_farmer_tone2:","cp":"1f468-1f3fc-200d-1f33e","sns":[":man_farmer_medium_light_skin_tone:"],"c":"people"},":man_farmer_tone3:":{"sn":":man_farmer_tone3:","cp":"1f468-1f3fd-200d-1f33e","sns":[":man_farmer_medium_skin_tone:"],"c":"people"},":man_farmer_tone4:":{"sn":":man_farmer_tone4:","cp":"1f468-1f3fe-200d-1f33e","sns":[":man_farmer_medium_dark_skin_tone:"],"c":"people"},":man_farmer_tone5:":{"sn":":man_farmer_tone5:","cp":"1f468-1f3ff-200d-1f33e","sns":[":man_farmer_dark_skin_tone:"],"c":"people"},":man_firefighter:":{"sn":":man_firefighter:","cp":"1f468-200d-1f692","sns":[],"c":"people"},":man_firefighter_tone1:":{"sn":":man_firefighter_tone1:","cp":"1f468-1f3fb-200d-1f692","sns":[":man_firefighter_light_skin_tone:"],"c":"people"},":man_firefighter_tone2:":{"sn":":man_firefighter_tone2:","cp":"1f468-1f3fc-200d-1f692","sns":[":man_firefighter_medium_light_skin_tone:"],"c":"people"},":man_firefighter_tone3:":{"sn":":man_firefighter_tone3:","cp":"1f468-1f3fd-200d-1f692","sns":[":man_firefighter_medium_skin_tone:"],"c":"people"},":man_firefighter_tone4:":{"sn":":man_firefighter_tone4:","cp":"1f468-1f3fe-200d-1f692","sns":[":man_firefighter_medium_dark_skin_tone:"],"c":"people"},":man_firefighter_tone5:":{"sn":":man_firefighter_tone5:","cp":"1f468-1f3ff-200d-1f692","sns":[":man_firefighter_dark_skin_tone:"],"c":"people"},":man_frowning:":{"sn":":man_frowning:","cp":"1f64d-200d-2642-fe0f","sns":[],"c":"people"},":man_frowning_tone1:":{"sn":":man_frowning_tone1:","cp":"1f64d-1f3fb-200d-2642-fe0f","sns":[":man_frowning_light_skin_tone:"],"c":"people"},":man_frowning_tone2:":{"sn":":man_frowning_tone2:","cp":"1f64d-1f3fc-200d-2642-fe0f","sns":[":man_frowning_medium_light_skin_tone:"],"c":"people"},":man_frowning_tone3:":{"sn":":man_frowning_tone3:","cp":"1f64d-1f3fd-200d-2642-fe0f","sns":[":man_frowning_medium_skin_tone:"],"c":"people"},":man_frowning_tone4:":{"sn":":man_frowning_tone4:","cp":"1f64d-1f3fe-200d-2642-fe0f","sns":[":man_frowning_medium_dark_skin_tone:"],"c":"people"},":man_frowning_tone5:":{"sn":":man_frowning_tone5:","cp":"1f64d-1f3ff-200d-2642-fe0f","sns":[":man_frowning_dark_skin_tone:"],"c":"people"},":man_genie:":{"sn":":man_genie:","cp":"1f9de-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_no:":{"sn":":man_gesturing_no:","cp":"1f645-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_no_tone1:":{"sn":":man_gesturing_no_tone1:","cp":"1f645-1f3fb-200d-2642-fe0f","sns":[":man_gesturing_no_light_skin_tone:"],"c":"people"},":man_gesturing_no_tone2:":{"sn":":man_gesturing_no_tone2:","cp":"1f645-1f3fc-200d-2642-fe0f","sns":[":man_gesturing_no_medium_light_skin_tone:"],"c":"people"},":man_gesturing_no_tone3:":{"sn":":man_gesturing_no_tone3:","cp":"1f645-1f3fd-200d-2642-fe0f","sns":[":man_gesturing_no_medium_skin_tone:"],"c":"people"},":man_gesturing_no_tone4:":{"sn":":man_gesturing_no_tone4:","cp":"1f645-1f3fe-200d-2642-fe0f","sns":[":man_gesturing_no_medium_dark_skin_tone:"],"c":"people"},":man_gesturing_no_tone5:":{"sn":":man_gesturing_no_tone5:","cp":"1f645-1f3ff-200d-2642-fe0f","sns":[":man_gesturing_no_dark_skin_tone:"],"c":"people"},":man_gesturing_ok:":{"sn":":man_gesturing_ok:","cp":"1f646-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_ok_tone1:":{"sn":":man_gesturing_ok_tone1:","cp":"1f646-1f3fb-200d-2642-fe0f","sns":[":man_gesturing_ok_light_skin_tone:"],"c":"people"},":man_gesturing_ok_tone2:":{"sn":":man_gesturing_ok_tone2:","cp":"1f646-1f3fc-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_light_skin_tone:"],"c":"people"},":man_gesturing_ok_tone3:":{"sn":":man_gesturing_ok_tone3:","cp":"1f646-1f3fd-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_skin_tone:"],"c":"people"},":man_gesturing_ok_tone4:":{"sn":":man_gesturing_ok_tone4:","cp":"1f646-1f3fe-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_dark_skin_tone:"],"c":"people"},":man_gesturing_ok_tone5:":{"sn":":man_gesturing_ok_tone5:","cp":"1f646-1f3ff-200d-2642-fe0f","sns":[":man_gesturing_ok_dark_skin_tone:"],"c":"people"},":man_getting_face_massage:":{"sn":":man_getting_face_massage:","cp":"1f486-200d-2642-fe0f","sns":[],"c":"people"},":man_getting_face_massage_tone1:":{"sn":":man_getting_face_massage_tone1:","cp":"1f486-1f3fb-200d-2642-fe0f","sns":[":man_getting_face_massage_light_skin_tone:"],"c":"people"},":man_getting_face_massage_tone2:":{"sn":":man_getting_face_massage_tone2:","cp":"1f486-1f3fc-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_light_skin_tone:"],"c":"people"},":man_getting_face_massage_tone3:":{"sn":":man_getting_face_massage_tone3:","cp":"1f486-1f3fd-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_skin_tone:"],"c":"people"},":man_getting_face_massage_tone4:":{"sn":":man_getting_face_massage_tone4:","cp":"1f486-1f3fe-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_dark_skin_tone:"],"c":"people"},":man_getting_face_massage_tone5:":{"sn":":man_getting_face_massage_tone5:","cp":"1f486-1f3ff-200d-2642-fe0f","sns":[":man_getting_face_massage_dark_skin_tone:"],"c":"people"},":man_getting_haircut:":{"sn":":man_getting_haircut:","cp":"1f487-200d-2642-fe0f","sns":[],"c":"people"},":man_getting_haircut_tone1:":{"sn":":man_getting_haircut_tone1:","cp":"1f487-1f3fb-200d-2642-fe0f","sns":[":man_getting_haircut_light_skin_tone:"],"c":"people"},":man_getting_haircut_tone2:":{"sn":":man_getting_haircut_tone2:","cp":"1f487-1f3fc-200d-2642-fe0f","sns":[":man_getting_haircut_medium_light_skin_tone:"],"c":"people"},":man_getting_haircut_tone3:":{"sn":":man_getting_haircut_tone3:","cp":"1f487-1f3fd-200d-2642-fe0f","sns":[":man_getting_haircut_medium_skin_tone:"],"c":"people"},":man_getting_haircut_tone4:":{"sn":":man_getting_haircut_tone4:","cp":"1f487-1f3fe-200d-2642-fe0f","sns":[":man_getting_haircut_medium_dark_skin_tone:"],"c":"people"},":man_getting_haircut_tone5:":{"sn":":man_getting_haircut_tone5:","cp":"1f487-1f3ff-200d-2642-fe0f","sns":[":man_getting_haircut_dark_skin_tone:"],"c":"people"},":man_guard:":{"sn":":man_guard:","cp":"1f482-200d-2642-fe0f","sns":[],"c":"people"},":man_guard_tone1:":{"sn":":man_guard_tone1:","cp":"1f482-1f3fb-200d-2642-fe0f","sns":[":man_guard_light_skin_tone:"],"c":"people"},":man_guard_tone2:":{"sn":":man_guard_tone2:","cp":"1f482-1f3fc-200d-2642-fe0f","sns":[":man_guard_medium_light_skin_tone:"],"c":"people"},":man_guard_tone3:":{"sn":":man_guard_tone3:","cp":"1f482-1f3fd-200d-2642-fe0f","sns":[":man_guard_medium_skin_tone:"],"c":"people"},":man_guard_tone4:":{"sn":":man_guard_tone4:","cp":"1f482-1f3fe-200d-2642-fe0f","sns":[":man_guard_medium_dark_skin_tone:"],"c":"people"},":man_guard_tone5:":{"sn":":man_guard_tone5:","cp":"1f482-1f3ff-200d-2642-fe0f","sns":[":man_guard_dark_skin_tone:"],"c":"people"},":man_health_worker:":{"sn":":man_health_worker:","cp":"1f468-200d-2695-fe0f","sns":[],"c":"people"},":man_health_worker_tone1:":{"sn":":man_health_worker_tone1:","cp":"1f468-1f3fb-200d-2695-fe0f","sns":[":man_health_worker_light_skin_tone:"],"c":"people"},":man_health_worker_tone2:":{"sn":":man_health_worker_tone2:","cp":"1f468-1f3fc-200d-2695-fe0f","sns":[":man_health_worker_medium_light_skin_tone:"],"c":"people"},":man_health_worker_tone3:":{"sn":":man_health_worker_tone3:","cp":"1f468-1f3fd-200d-2695-fe0f","sns":[":man_health_worker_medium_skin_tone:"],"c":"people"},":man_health_worker_tone4:":{"sn":":man_health_worker_tone4:","cp":"1f468-1f3fe-200d-2695-fe0f","sns":[":man_health_worker_medium_dark_skin_tone:"],"c":"people"},":man_health_worker_tone5:":{"sn":":man_health_worker_tone5:","cp":"1f468-1f3ff-200d-2695-fe0f","sns":[":man_health_worker_dark_skin_tone:"],"c":"people"},":man_in_steamy_room:":{"sn":":man_in_steamy_room:","cp":"1f9d6-200d-2642-fe0f","sns":[],"c":"people"},":man_in_steamy_room_tone1:":{"sn":":man_in_steamy_room_tone1:","cp":"1f9d6-1f3fb-200d-2642-fe0f","sns":[":man_in_steamy_room_light_skin_tone:"],"c":"people"},":man_in_steamy_room_tone2:":{"sn":":man_in_steamy_room_tone2:","cp":"1f9d6-1f3fc-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":man_in_steamy_room_tone3:":{"sn":":man_in_steamy_room_tone3:","cp":"1f9d6-1f3fd-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_skin_tone:"],"c":"people"},":man_in_steamy_room_tone4:":{"sn":":man_in_steamy_room_tone4:","cp":"1f9d6-1f3fe-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":man_in_steamy_room_tone5:":{"sn":":man_in_steamy_room_tone5:","cp":"1f9d6-1f3ff-200d-2642-fe0f","sns":[":man_in_steamy_room_dark_skin_tone:"],"c":"people"},":man_in_tuxedo:":{"sn":":man_in_tuxedo:","cp":"1f935","sns":[],"c":"people"},":man_in_tuxedo_tone1:":{"sn":":man_in_tuxedo_tone1:","cp":"1f935-1f3fb","sns":[":tuxedo_tone1:"],"c":"people"},":man_in_tuxedo_tone2:":{"sn":":man_in_tuxedo_tone2:","cp":"1f935-1f3fc","sns":[":tuxedo_tone2:"],"c":"people"},":man_in_tuxedo_tone3:":{"sn":":man_in_tuxedo_tone3:","cp":"1f935-1f3fd","sns":[":tuxedo_tone3:"],"c":"people"},":man_in_tuxedo_tone4:":{"sn":":man_in_tuxedo_tone4:","cp":"1f935-1f3fe","sns":[":tuxedo_tone4:"],"c":"people"},":man_in_tuxedo_tone5:":{"sn":":man_in_tuxedo_tone5:","cp":"1f935-1f3ff","sns":[":tuxedo_tone5:"],"c":"people"},":man_judge:":{"sn":":man_judge:","cp":"1f468-200d-2696-fe0f","sns":[],"c":"people"},":man_judge_tone1:":{"sn":":man_judge_tone1:","cp":"1f468-1f3fb-200d-2696-fe0f","sns":[":man_judge_light_skin_tone:"],"c":"people"},":man_judge_tone2:":{"sn":":man_judge_tone2:","cp":"1f468-1f3fc-200d-2696-fe0f","sns":[":man_judge_medium_light_skin_tone:"],"c":"people"},":man_judge_tone3:":{"sn":":man_judge_tone3:","cp":"1f468-1f3fd-200d-2696-fe0f","sns":[":man_judge_medium_skin_tone:"],"c":"people"},":man_judge_tone4:":{"sn":":man_judge_tone4:","cp":"1f468-1f3fe-200d-2696-fe0f","sns":[":man_judge_medium_dark_skin_tone:"],"c":"people"},":man_judge_tone5:":{"sn":":man_judge_tone5:","cp":"1f468-1f3ff-200d-2696-fe0f","sns":[":man_judge_dark_skin_tone:"],"c":"people"},":man_mage:":{"sn":":man_mage:","cp":"1f9d9-200d-2642-fe0f","sns":[],"c":"people"},":man_mage_tone1:":{"sn":":man_mage_tone1:","cp":"1f9d9-1f3fb-200d-2642-fe0f","sns":[":man_mage_light_skin_tone:"],"c":"people"},":man_mage_tone2:":{"sn":":man_mage_tone2:","cp":"1f9d9-1f3fc-200d-2642-fe0f","sns":[":man_mage_medium_light_skin_tone:"],"c":"people"},":man_mage_tone3:":{"sn":":man_mage_tone3:","cp":"1f9d9-1f3fd-200d-2642-fe0f","sns":[":man_mage_medium_skin_tone:"],"c":"people"},":man_mage_tone4:":{"sn":":man_mage_tone4:","cp":"1f9d9-1f3fe-200d-2642-fe0f","sns":[":man_mage_medium_dark_skin_tone:"],"c":"people"},":man_mage_tone5:":{"sn":":man_mage_tone5:","cp":"1f9d9-1f3ff-200d-2642-fe0f","sns":[":man_mage_dark_skin_tone:"],"c":"people"},":man_mechanic:":{"sn":":man_mechanic:","cp":"1f468-200d-1f527","sns":[],"c":"people"},":man_mechanic_tone1:":{"sn":":man_mechanic_tone1:","cp":"1f468-1f3fb-200d-1f527","sns":[":man_mechanic_light_skin_tone:"],"c":"people"},":man_mechanic_tone2:":{"sn":":man_mechanic_tone2:","cp":"1f468-1f3fc-200d-1f527","sns":[":man_mechanic_medium_light_skin_tone:"],"c":"people"},":man_mechanic_tone3:":{"sn":":man_mechanic_tone3:","cp":"1f468-1f3fd-200d-1f527","sns":[":man_mechanic_medium_skin_tone:"],"c":"people"},":man_mechanic_tone4:":{"sn":":man_mechanic_tone4:","cp":"1f468-1f3fe-200d-1f527","sns":[":man_mechanic_medium_dark_skin_tone:"],"c":"people"},":man_mechanic_tone5:":{"sn":":man_mechanic_tone5:","cp":"1f468-1f3ff-200d-1f527","sns":[":man_mechanic_dark_skin_tone:"],"c":"people"},":man_office_worker:":{"sn":":man_office_worker:","cp":"1f468-200d-1f4bc","sns":[],"c":"people"},":man_office_worker_tone1:":{"sn":":man_office_worker_tone1:","cp":"1f468-1f3fb-200d-1f4bc","sns":[":man_office_worker_light_skin_tone:"],"c":"people"},":man_office_worker_tone2:":{"sn":":man_office_worker_tone2:","cp":"1f468-1f3fc-200d-1f4bc","sns":[":man_office_worker_medium_light_skin_tone:"],"c":"people"},":man_office_worker_tone3:":{"sn":":man_office_worker_tone3:","cp":"1f468-1f3fd-200d-1f4bc","sns":[":man_office_worker_medium_skin_tone:"],"c":"people"},":man_office_worker_tone4:":{"sn":":man_office_worker_tone4:","cp":"1f468-1f3fe-200d-1f4bc","sns":[":man_office_worker_medium_dark_skin_tone:"],"c":"people"},":man_office_worker_tone5:":{"sn":":man_office_worker_tone5:","cp":"1f468-1f3ff-200d-1f4bc","sns":[":man_office_worker_dark_skin_tone:"],"c":"people"},":man_pilot:":{"sn":":man_pilot:","cp":"1f468-200d-2708-fe0f","sns":[],"c":"people"},":man_pilot_tone1:":{"sn":":man_pilot_tone1:","cp":"1f468-1f3fb-200d-2708-fe0f","sns":[":man_pilot_light_skin_tone:"],"c":"people"},":man_pilot_tone2:":{"sn":":man_pilot_tone2:","cp":"1f468-1f3fc-200d-2708-fe0f","sns":[":man_pilot_medium_light_skin_tone:"],"c":"people"},":man_pilot_tone3:":{"sn":":man_pilot_tone3:","cp":"1f468-1f3fd-200d-2708-fe0f","sns":[":man_pilot_medium_skin_tone:"],"c":"people"},":man_pilot_tone4:":{"sn":":man_pilot_tone4:","cp":"1f468-1f3fe-200d-2708-fe0f","sns":[":man_pilot_medium_dark_skin_tone:"],"c":"people"},":man_pilot_tone5:":{"sn":":man_pilot_tone5:","cp":"1f468-1f3ff-200d-2708-fe0f","sns":[":man_pilot_dark_skin_tone:"],"c":"people"},":man_police_officer:":{"sn":":man_police_officer:","cp":"1f46e-200d-2642-fe0f","sns":[],"c":"people"},":man_police_officer_tone1:":{"sn":":man_police_officer_tone1:","cp":"1f46e-1f3fb-200d-2642-fe0f","sns":[":man_police_officer_light_skin_tone:"],"c":"people"},":man_police_officer_tone2:":{"sn":":man_police_officer_tone2:","cp":"1f46e-1f3fc-200d-2642-fe0f","sns":[":man_police_officer_medium_light_skin_tone:"],"c":"people"},":man_police_officer_tone3:":{"sn":":man_police_officer_tone3:","cp":"1f46e-1f3fd-200d-2642-fe0f","sns":[":man_police_officer_medium_skin_tone:"],"c":"people"},":man_police_officer_tone4:":{"sn":":man_police_officer_tone4:","cp":"1f46e-1f3fe-200d-2642-fe0f","sns":[":man_police_officer_medium_dark_skin_tone:"],"c":"people"},":man_police_officer_tone5:":{"sn":":man_police_officer_tone5:","cp":"1f46e-1f3ff-200d-2642-fe0f","sns":[":man_police_officer_dark_skin_tone:"],"c":"people"},":man_pouting:":{"sn":":man_pouting:","cp":"1f64e-200d-2642-fe0f","sns":[],"c":"people"},":man_pouting_tone1:":{"sn":":man_pouting_tone1:","cp":"1f64e-1f3fb-200d-2642-fe0f","sns":[":man_pouting_light_skin_tone:"],"c":"people"},":man_pouting_tone2:":{"sn":":man_pouting_tone2:","cp":"1f64e-1f3fc-200d-2642-fe0f","sns":[":man_pouting_medium_light_skin_tone:"],"c":"people"},":man_pouting_tone3:":{"sn":":man_pouting_tone3:","cp":"1f64e-1f3fd-200d-2642-fe0f","sns":[":man_pouting_medium_skin_tone:"],"c":"people"},":man_pouting_tone4:":{"sn":":man_pouting_tone4:","cp":"1f64e-1f3fe-200d-2642-fe0f","sns":[":man_pouting_medium_dark_skin_tone:"],"c":"people"},":man_pouting_tone5:":{"sn":":man_pouting_tone5:","cp":"1f64e-1f3ff-200d-2642-fe0f","sns":[":man_pouting_dark_skin_tone:"],"c":"people"},":man_raising_hand:":{"sn":":man_raising_hand:","cp":"1f64b-200d-2642-fe0f","sns":[],"c":"people"},":man_raising_hand_tone1:":{"sn":":man_raising_hand_tone1:","cp":"1f64b-1f3fb-200d-2642-fe0f","sns":[":man_raising_hand_light_skin_tone:"],"c":"people"},":man_raising_hand_tone2:":{"sn":":man_raising_hand_tone2:","cp":"1f64b-1f3fc-200d-2642-fe0f","sns":[":man_raising_hand_medium_light_skin_tone:"],"c":"people"},":man_raising_hand_tone3:":{"sn":":man_raising_hand_tone3:","cp":"1f64b-1f3fd-200d-2642-fe0f","sns":[":man_raising_hand_medium_skin_tone:"],"c":"people"},":man_raising_hand_tone4:":{"sn":":man_raising_hand_tone4:","cp":"1f64b-1f3fe-200d-2642-fe0f","sns":[":man_raising_hand_medium_dark_skin_tone:"],"c":"people"},":man_raising_hand_tone5:":{"sn":":man_raising_hand_tone5:","cp":"1f64b-1f3ff-200d-2642-fe0f","sns":[":man_raising_hand_dark_skin_tone:"],"c":"people"},":man_running:":{"sn":":man_running:","cp":"1f3c3-200d-2642-fe0f","sns":[],"c":"people"},":man_running_tone1:":{"sn":":man_running_tone1:","cp":"1f3c3-1f3fb-200d-2642-fe0f","sns":[":man_running_light_skin_tone:"],"c":"people"},":man_running_tone2:":{"sn":":man_running_tone2:","cp":"1f3c3-1f3fc-200d-2642-fe0f","sns":[":man_running_medium_light_skin_tone:"],"c":"people"},":man_running_tone3:":{"sn":":man_running_tone3:","cp":"1f3c3-1f3fd-200d-2642-fe0f","sns":[":man_running_medium_skin_tone:"],"c":"people"},":man_running_tone4:":{"sn":":man_running_tone4:","cp":"1f3c3-1f3fe-200d-2642-fe0f","sns":[":man_running_medium_dark_skin_tone:"],"c":"people"},":man_running_tone5:":{"sn":":man_running_tone5:","cp":"1f3c3-1f3ff-200d-2642-fe0f","sns":[":man_running_dark_skin_tone:"],"c":"people"},":man_scientist:":{"sn":":man_scientist:","cp":"1f468-200d-1f52c","sns":[],"c":"people"},":man_scientist_tone1:":{"sn":":man_scientist_tone1:","cp":"1f468-1f3fb-200d-1f52c","sns":[":man_scientist_light_skin_tone:"],"c":"people"},":man_scientist_tone2:":{"sn":":man_scientist_tone2:","cp":"1f468-1f3fc-200d-1f52c","sns":[":man_scientist_medium_light_skin_tone:"],"c":"people"},":man_scientist_tone3:":{"sn":":man_scientist_tone3:","cp":"1f468-1f3fd-200d-1f52c","sns":[":man_scientist_medium_skin_tone:"],"c":"people"},":man_scientist_tone4:":{"sn":":man_scientist_tone4:","cp":"1f468-1f3fe-200d-1f52c","sns":[":man_scientist_medium_dark_skin_tone:"],"c":"people"},":man_scientist_tone5:":{"sn":":man_scientist_tone5:","cp":"1f468-1f3ff-200d-1f52c","sns":[":man_scientist_dark_skin_tone:"],"c":"people"},":man_shrugging:":{"sn":":man_shrugging:","cp":"1f937-200d-2642-fe0f","sns":[],"c":"people"},":man_shrugging_tone1:":{"sn":":man_shrugging_tone1:","cp":"1f937-1f3fb-200d-2642-fe0f","sns":[":man_shrugging_light_skin_tone:"],"c":"people"},":man_shrugging_tone2:":{"sn":":man_shrugging_tone2:","cp":"1f937-1f3fc-200d-2642-fe0f","sns":[":man_shrugging_medium_light_skin_tone:"],"c":"people"},":man_shrugging_tone3:":{"sn":":man_shrugging_tone3:","cp":"1f937-1f3fd-200d-2642-fe0f","sns":[":man_shrugging_medium_skin_tone:"],"c":"people"},":man_shrugging_tone4:":{"sn":":man_shrugging_tone4:","cp":"1f937-1f3fe-200d-2642-fe0f","sns":[":man_shrugging_medium_dark_skin_tone:"],"c":"people"},":man_shrugging_tone5:":{"sn":":man_shrugging_tone5:","cp":"1f937-1f3ff-200d-2642-fe0f","sns":[":man_shrugging_dark_skin_tone:"],"c":"people"},":man_singer:":{"sn":":man_singer:","cp":"1f468-200d-1f3a4","sns":[],"c":"people"},":man_singer_tone1:":{"sn":":man_singer_tone1:","cp":"1f468-1f3fb-200d-1f3a4","sns":[":man_singer_light_skin_tone:"],"c":"people"},":man_singer_tone2:":{"sn":":man_singer_tone2:","cp":"1f468-1f3fc-200d-1f3a4","sns":[":man_singer_medium_light_skin_tone:"],"c":"people"},":man_singer_tone3:":{"sn":":man_singer_tone3:","cp":"1f468-1f3fd-200d-1f3a4","sns":[":man_singer_medium_skin_tone:"],"c":"people"},":man_singer_tone4:":{"sn":":man_singer_tone4:","cp":"1f468-1f3fe-200d-1f3a4","sns":[":man_singer_medium_dark_skin_tone:"],"c":"people"},":man_singer_tone5:":{"sn":":man_singer_tone5:","cp":"1f468-1f3ff-200d-1f3a4","sns":[":man_singer_dark_skin_tone:"],"c":"people"},":man_student:":{"sn":":man_student:","cp":"1f468-200d-1f393","sns":[],"c":"people"},":man_student_tone1:":{"sn":":man_student_tone1:","cp":"1f468-1f3fb-200d-1f393","sns":[":man_student_light_skin_tone:"],"c":"people"},":man_student_tone2:":{"sn":":man_student_tone2:","cp":"1f468-1f3fc-200d-1f393","sns":[":man_student_medium_light_skin_tone:"],"c":"people"},":man_student_tone3:":{"sn":":man_student_tone3:","cp":"1f468-1f3fd-200d-1f393","sns":[":man_student_medium_skin_tone:"],"c":"people"},":man_student_tone4:":{"sn":":man_student_tone4:","cp":"1f468-1f3fe-200d-1f393","sns":[":man_student_medium_dark_skin_tone:"],"c":"people"},":man_student_tone5:":{"sn":":man_student_tone5:","cp":"1f468-1f3ff-200d-1f393","sns":[":man_student_dark_skin_tone:"],"c":"people"},":man_teacher:":{"sn":":man_teacher:","cp":"1f468-200d-1f3eb","sns":[],"c":"people"},":man_teacher_tone1:":{"sn":":man_teacher_tone1:","cp":"1f468-1f3fb-200d-1f3eb","sns":[":man_teacher_light_skin_tone:"],"c":"people"},":man_teacher_tone2:":{"sn":":man_teacher_tone2:","cp":"1f468-1f3fc-200d-1f3eb","sns":[":man_teacher_medium_light_skin_tone:"],"c":"people"},":man_teacher_tone3:":{"sn":":man_teacher_tone3:","cp":"1f468-1f3fd-200d-1f3eb","sns":[":man_teacher_medium_skin_tone:"],"c":"people"},":man_teacher_tone4:":{"sn":":man_teacher_tone4:","cp":"1f468-1f3fe-200d-1f3eb","sns":[":man_teacher_medium_dark_skin_tone:"],"c":"people"},":man_teacher_tone5:":{"sn":":man_teacher_tone5:","cp":"1f468-1f3ff-200d-1f3eb","sns":[":man_teacher_dark_skin_tone:"],"c":"people"},":man_technologist:":{"sn":":man_technologist:","cp":"1f468-200d-1f4bb","sns":[],"c":"people"},":man_technologist_tone1:":{"sn":":man_technologist_tone1:","cp":"1f468-1f3fb-200d-1f4bb","sns":[":man_technologist_light_skin_tone:"],"c":"people"},":man_technologist_tone2:":{"sn":":man_technologist_tone2:","cp":"1f468-1f3fc-200d-1f4bb","sns":[":man_technologist_medium_light_skin_tone:"],"c":"people"},":man_technologist_tone3:":{"sn":":man_technologist_tone3:","cp":"1f468-1f3fd-200d-1f4bb","sns":[":man_technologist_medium_skin_tone:"],"c":"people"},":man_technologist_tone4:":{"sn":":man_technologist_tone4:","cp":"1f468-1f3fe-200d-1f4bb","sns":[":man_technologist_medium_dark_skin_tone:"],"c":"people"},":man_technologist_tone5:":{"sn":":man_technologist_tone5:","cp":"1f468-1f3ff-200d-1f4bb","sns":[":man_technologist_dark_skin_tone:"],"c":"people"},":man_tipping_hand:":{"sn":":man_tipping_hand:","cp":"1f481-200d-2642-fe0f","sns":[],"c":"people"},":man_tipping_hand_tone1:":{"sn":":man_tipping_hand_tone1:","cp":"1f481-1f3fb-200d-2642-fe0f","sns":[":man_tipping_hand_light_skin_tone:"],"c":"people"},":man_tipping_hand_tone2:":{"sn":":man_tipping_hand_tone2:","cp":"1f481-1f3fc-200d-2642-fe0f","sns":[":man_tipping_hand_medium_light_skin_tone:"],"c":"people"},":man_tipping_hand_tone3:":{"sn":":man_tipping_hand_tone3:","cp":"1f481-1f3fd-200d-2642-fe0f","sns":[":man_tipping_hand_medium_skin_tone:"],"c":"people"},":man_tipping_hand_tone4:":{"sn":":man_tipping_hand_tone4:","cp":"1f481-1f3fe-200d-2642-fe0f","sns":[":man_tipping_hand_medium_dark_skin_tone:"],"c":"people"},":man_tipping_hand_tone5:":{"sn":":man_tipping_hand_tone5:","cp":"1f481-1f3ff-200d-2642-fe0f","sns":[":man_tipping_hand_dark_skin_tone:"],"c":"people"},":man_tone1:":{"sn":":man_tone1:","cp":"1f468-1f3fb","sns":[],"c":"people"},":man_tone2:":{"sn":":man_tone2:","cp":"1f468-1f3fc","sns":[],"c":"people"},":man_tone3:":{"sn":":man_tone3:","cp":"1f468-1f3fd","sns":[],"c":"people"},":man_tone4:":{"sn":":man_tone4:","cp":"1f468-1f3fe","sns":[],"c":"people"},":man_tone5:":{"sn":":man_tone5:","cp":"1f468-1f3ff","sns":[],"c":"people"},":man_vampire:":{"sn":":man_vampire:","cp":"1f9db-200d-2642-fe0f","sns":[],"c":"people"},":man_vampire_tone1:":{"sn":":man_vampire_tone1:","cp":"1f9db-1f3fb-200d-2642-fe0f","sns":[":man_vampire_light_skin_tone:"],"c":"people"},":man_vampire_tone2:":{"sn":":man_vampire_tone2:","cp":"1f9db-1f3fc-200d-2642-fe0f","sns":[":man_vampire_medium_light_skin_tone:"],"c":"people"},":man_vampire_tone3:":{"sn":":man_vampire_tone3:","cp":"1f9db-1f3fd-200d-2642-fe0f","sns":[":man_vampire_medium_skin_tone:"],"c":"people"},":man_vampire_tone4:":{"sn":":man_vampire_tone4:","cp":"1f9db-1f3fe-200d-2642-fe0f","sns":[":man_vampire_medium_dark_skin_tone:"],"c":"people"},":man_vampire_tone5:":{"sn":":man_vampire_tone5:","cp":"1f9db-1f3ff-200d-2642-fe0f","sns":[":man_vampire_dark_skin_tone:"],"c":"people"},":man_walking:":{"sn":":man_walking:","cp":"1f6b6-200d-2642-fe0f","sns":[],"c":"people"},":man_walking_tone1:":{"sn":":man_walking_tone1:","cp":"1f6b6-1f3fb-200d-2642-fe0f","sns":[":man_walking_light_skin_tone:"],"c":"people"},":man_walking_tone2:":{"sn":":man_walking_tone2:","cp":"1f6b6-1f3fc-200d-2642-fe0f","sns":[":man_walking_medium_light_skin_tone:"],"c":"people"},":man_walking_tone3:":{"sn":":man_walking_tone3:","cp":"1f6b6-1f3fd-200d-2642-fe0f","sns":[":man_walking_medium_skin_tone:"],"c":"people"},":man_walking_tone4:":{"sn":":man_walking_tone4:","cp":"1f6b6-1f3fe-200d-2642-fe0f","sns":[":man_walking_medium_dark_skin_tone:"],"c":"people"},":man_walking_tone5:":{"sn":":man_walking_tone5:","cp":"1f6b6-1f3ff-200d-2642-fe0f","sns":[":man_walking_dark_skin_tone:"],"c":"people"},":man_wearing_turban:":{"sn":":man_wearing_turban:","cp":"1f473-200d-2642-fe0f","sns":[],"c":"people"},":man_wearing_turban_tone1:":{"sn":":man_wearing_turban_tone1:","cp":"1f473-1f3fb-200d-2642-fe0f","sns":[":man_wearing_turban_light_skin_tone:"],"c":"people"},":man_wearing_turban_tone2:":{"sn":":man_wearing_turban_tone2:","cp":"1f473-1f3fc-200d-2642-fe0f","sns":[":man_wearing_turban_medium_light_skin_tone:"],"c":"people"},":man_wearing_turban_tone3:":{"sn":":man_wearing_turban_tone3:","cp":"1f473-1f3fd-200d-2642-fe0f","sns":[":man_wearing_turban_medium_skin_tone:"],"c":"people"},":man_wearing_turban_tone4:":{"sn":":man_wearing_turban_tone4:","cp":"1f473-1f3fe-200d-2642-fe0f","sns":[":man_wearing_turban_medium_dark_skin_tone:"],"c":"people"},":man_wearing_turban_tone5:":{"sn":":man_wearing_turban_tone5:","cp":"1f473-1f3ff-200d-2642-fe0f","sns":[":man_wearing_turban_dark_skin_tone:"],"c":"people"},":man_with_chinese_cap:":{"sn":":man_with_chinese_cap:","cp":"1f472","sns":[":man_with_gua_pi_mao:"],"c":"people"},":man_with_chinese_cap_tone1:":{"sn":":man_with_chinese_cap_tone1:","cp":"1f472-1f3fb","sns":[":man_with_gua_pi_mao_tone1:"],"c":"people"},":man_with_chinese_cap_tone2:":{"sn":":man_with_chinese_cap_tone2:","cp":"1f472-1f3fc","sns":[":man_with_gua_pi_mao_tone2:"],"c":"people"},":man_with_chinese_cap_tone3:":{"sn":":man_with_chinese_cap_tone3:","cp":"1f472-1f3fd","sns":[":man_with_gua_pi_mao_tone3:"],"c":"people"},":man_with_chinese_cap_tone4:":{"sn":":man_with_chinese_cap_tone4:","cp":"1f472-1f3fe","sns":[":man_with_gua_pi_mao_tone4:"],"c":"people"},":man_with_chinese_cap_tone5:":{"sn":":man_with_chinese_cap_tone5:","cp":"1f472-1f3ff","sns":[":man_with_gua_pi_mao_tone5:"],"c":"people"},":man_zombie:":{"sn":":man_zombie:","cp":"1f9df-200d-2642-fe0f","sns":[],"c":"people"},":men_with_bunny_ears_partying:":{"sn":":men_with_bunny_ears_partying:","cp":"1f46f-200d-2642-fe0f","sns":[],"c":"people"},":mermaid:":{"sn":":mermaid:","cp":"1f9dc-200d-2640-fe0f","sns":[],"c":"people"},":mermaid_tone1:":{"sn":":mermaid_tone1:","cp":"1f9dc-1f3fb-200d-2640-fe0f","sns":[":mermaid_light_skin_tone:"],"c":"people"},":mermaid_tone2:":{"sn":":mermaid_tone2:","cp":"1f9dc-1f3fc-200d-2640-fe0f","sns":[":mermaid_medium_light_skin_tone:"],"c":"people"},":mermaid_tone3:":{"sn":":mermaid_tone3:","cp":"1f9dc-1f3fd-200d-2640-fe0f","sns":[":mermaid_medium_skin_tone:"],"c":"people"},":mermaid_tone4:":{"sn":":mermaid_tone4:","cp":"1f9dc-1f3fe-200d-2640-fe0f","sns":[":mermaid_medium_dark_skin_tone:"],"c":"people"},":mermaid_tone5:":{"sn":":mermaid_tone5:","cp":"1f9dc-1f3ff-200d-2640-fe0f","sns":[":mermaid_dark_skin_tone:"],"c":"people"},":merman:":{"sn":":merman:","cp":"1f9dc-200d-2642-fe0f","sns":[],"c":"people"},":merman_tone1:":{"sn":":merman_tone1:","cp":"1f9dc-1f3fb-200d-2642-fe0f","sns":[":merman_light_skin_tone:"],"c":"people"},":merman_tone2:":{"sn":":merman_tone2:","cp":"1f9dc-1f3fc-200d-2642-fe0f","sns":[":merman_medium_light_skin_tone:"],"c":"people"},":merman_tone3:":{"sn":":merman_tone3:","cp":"1f9dc-1f3fd-200d-2642-fe0f","sns":[":merman_medium_skin_tone:"],"c":"people"},":merman_tone4:":{"sn":":merman_tone4:","cp":"1f9dc-1f3fe-200d-2642-fe0f","sns":[":merman_medium_dark_skin_tone:"],"c":"people"},":merman_tone5:":{"sn":":merman_tone5:","cp":"1f9dc-1f3ff-200d-2642-fe0f","sns":[":merman_dark_skin_tone:"],"c":"people"},":merperson:":{"sn":":merperson:","cp":"1f9dc","sns":[],"c":"people"},":merperson_tone1:":{"sn":":merperson_tone1:","cp":"1f9dc-1f3fb","sns":[":merperson_light_skin_tone:"],"c":"people"},":merperson_tone2:":{"sn":":merperson_tone2:","cp":"1f9dc-1f3fc","sns":[":merperson_medium_light_skin_tone:"],"c":"people"},":merperson_tone3:":{"sn":":merperson_tone3:","cp":"1f9dc-1f3fd","sns":[":merperson_medium_skin_tone:"],"c":"people"},":merperson_tone4:":{"sn":":merperson_tone4:","cp":"1f9dc-1f3fe","sns":[":merperson_medium_dark_skin_tone:"],"c":"people"},":merperson_tone5:":{"sn":":merperson_tone5:","cp":"1f9dc-1f3ff","sns":[":merperson_dark_skin_tone:"],"c":"people"},":santa:":{"sn":":santa:","cp":"1f385","sns":[],"c":"people"},":santa_tone1:":{"sn":":santa_tone1:","cp":"1f385-1f3fb","sns":[],"c":"people"},":santa_tone2:":{"sn":":santa_tone2:","cp":"1f385-1f3fc","sns":[],"c":"people"},":santa_tone3:":{"sn":":santa_tone3:","cp":"1f385-1f3fd","sns":[],"c":"people"},":santa_tone4:":{"sn":":santa_tone4:","cp":"1f385-1f3fe","sns":[],"c":"people"},":santa_tone5:":{"sn":":santa_tone5:","cp":"1f385-1f3ff","sns":[],"c":"people"},":mrs_claus:":{"sn":":mrs_claus:","cp":"1f936","sns":[":mother_christmas:"],"c":"people"},":mrs_claus_tone1:":{"sn":":mrs_claus_tone1:","cp":"1f936-1f3fb","sns":[":mother_christmas_tone1:"],"c":"people"},":mrs_claus_tone2:":{"sn":":mrs_claus_tone2:","cp":"1f936-1f3fc","sns":[":mother_christmas_tone2:"],"c":"people"},":mrs_claus_tone3:":{"sn":":mrs_claus_tone3:","cp":"1f936-1f3fd","sns":[":mother_christmas_tone3:"],"c":"people"},":mrs_claus_tone4:":{"sn":":mrs_claus_tone4:","cp":"1f936-1f3fe","sns":[":mother_christmas_tone4:"],"c":"people"},":mrs_claus_tone5:":{"sn":":mrs_claus_tone5:","cp":"1f936-1f3ff","sns":[":mother_christmas_tone5:"],"c":"people"},":nose:":{"sn":":nose:","cp":"1f443","sns":[],"c":"people"},":nose_tone1:":{"sn":":nose_tone1:","cp":"1f443-1f3fb","sns":[],"c":"people"},":nose_tone2:":{"sn":":nose_tone2:","cp":"1f443-1f3fc","sns":[],"c":"people"},":nose_tone3:":{"sn":":nose_tone3:","cp":"1f443-1f3fd","sns":[],"c":"people"},":nose_tone4:":{"sn":":nose_tone4:","cp":"1f443-1f3fe","sns":[],"c":"people"},":nose_tone5:":{"sn":":nose_tone5:","cp":"1f443-1f3ff","sns":[],"c":"people"},":older_adult:":{"sn":":older_adult:","cp":"1f9d3","sns":[],"c":"people"},":older_adult_tone1:":{"sn":":older_adult_tone1:","cp":"1f9d3-1f3fb","sns":[":older_adult_light_skin_tone:"],"c":"people"},":older_adult_tone2:":{"sn":":older_adult_tone2:","cp":"1f9d3-1f3fc","sns":[":older_adult_medium_light_skin_tone:"],"c":"people"},":older_adult_tone3:":{"sn":":older_adult_tone3:","cp":"1f9d3-1f3fd","sns":[":older_adult_medium_skin_tone:"],"c":"people"},":older_adult_tone4:":{"sn":":older_adult_tone4:","cp":"1f9d3-1f3fe","sns":[":older_adult_medium_dark_skin_tone:"],"c":"people"},":older_adult_tone5:":{"sn":":older_adult_tone5:","cp":"1f9d3-1f3ff","sns":[":older_adult_dark_skin_tone:"],"c":"people"},":older_man:":{"sn":":older_man:","cp":"1f474","sns":[],"c":"people"},":older_man_tone1:":{"sn":":older_man_tone1:","cp":"1f474-1f3fb","sns":[],"c":"people"},":older_man_tone2:":{"sn":":older_man_tone2:","cp":"1f474-1f3fc","sns":[],"c":"people"},":older_man_tone3:":{"sn":":older_man_tone3:","cp":"1f474-1f3fd","sns":[],"c":"people"},":older_man_tone4:":{"sn":":older_man_tone4:","cp":"1f474-1f3fe","sns":[],"c":"people"},":older_man_tone5:":{"sn":":older_man_tone5:","cp":"1f474-1f3ff","sns":[],"c":"people"},":older_woman:":{"sn":":older_woman:","cp":"1f475","sns":[":grandma:"],"c":"people"},":older_woman_tone1:":{"sn":":older_woman_tone1:","cp":"1f475-1f3fb","sns":[":grandma_tone1:"],"c":"people"},":older_woman_tone2:":{"sn":":older_woman_tone2:","cp":"1f475-1f3fc","sns":[":grandma_tone2:"],"c":"people"},":older_woman_tone3:":{"sn":":older_woman_tone3:","cp":"1f475-1f3fd","sns":[":grandma_tone3:"],"c":"people"},":older_woman_tone4:":{"sn":":older_woman_tone4:","cp":"1f475-1f3fe","sns":[":grandma_tone4:"],"c":"people"},":older_woman_tone5:":{"sn":":older_woman_tone5:","cp":"1f475-1f3ff","sns":[":grandma_tone5:"],"c":"people"},":people_with_bunny_ears_partying:":{"sn":":people_with_bunny_ears_partying:","cp":"1f46f","sns":[":dancers:"],"c":"people"},":person_bowing:":{"sn":":person_bowing:","cp":"1f647","sns":[":bow:"],"c":"people"},":person_bowing_tone1:":{"sn":":person_bowing_tone1:","cp":"1f647-1f3fb","sns":[":bow_tone1:"],"c":"people"},":person_bowing_tone2:":{"sn":":person_bowing_tone2:","cp":"1f647-1f3fc","sns":[":bow_tone2:"],"c":"people"},":person_bowing_tone3:":{"sn":":person_bowing_tone3:","cp":"1f647-1f3fd","sns":[":bow_tone3:"],"c":"people"},":person_bowing_tone4:":{"sn":":person_bowing_tone4:","cp":"1f647-1f3fe","sns":[":bow_tone4:"],"c":"people"},":person_bowing_tone5:":{"sn":":person_bowing_tone5:","cp":"1f647-1f3ff","sns":[":bow_tone5:"],"c":"people"},":person_facepalming:":{"sn":":person_facepalming:","cp":"1f926","sns":[":face_palm:",":facepalm:"],"c":"people"},":person_facepalming_tone1:":{"sn":":person_facepalming_tone1:","cp":"1f926-1f3fb","sns":[":face_palm_tone1:",":facepalm_tone1:"],"c":"people"},":person_facepalming_tone2:":{"sn":":person_facepalming_tone2:","cp":"1f926-1f3fc","sns":[":face_palm_tone2:",":facepalm_tone2:"],"c":"people"},":person_facepalming_tone3:":{"sn":":person_facepalming_tone3:","cp":"1f926-1f3fd","sns":[":face_palm_tone3:",":facepalm_tone3:"],"c":"people"},":person_facepalming_tone4:":{"sn":":person_facepalming_tone4:","cp":"1f926-1f3fe","sns":[":face_palm_tone4:",":facepalm_tone4:"],"c":"people"},":person_facepalming_tone5:":{"sn":":person_facepalming_tone5:","cp":"1f926-1f3ff","sns":[":face_palm_tone5:",":facepalm_tone5:"],"c":"people"},":person_frowning:":{"sn":":person_frowning:","cp":"1f64d","sns":[],"c":"people"},":person_frowning_tone1:":{"sn":":person_frowning_tone1:","cp":"1f64d-1f3fb","sns":[],"c":"people"},":person_frowning_tone2:":{"sn":":person_frowning_tone2:","cp":"1f64d-1f3fc","sns":[],"c":"people"},":person_frowning_tone3:":{"sn":":person_frowning_tone3:","cp":"1f64d-1f3fd","sns":[],"c":"people"},":person_frowning_tone4:":{"sn":":person_frowning_tone4:","cp":"1f64d-1f3fe","sns":[],"c":"people"},":person_frowning_tone5:":{"sn":":person_frowning_tone5:","cp":"1f64d-1f3ff","sns":[],"c":"people"},":person_gesturing_no:":{"sn":":person_gesturing_no:","cp":"1f645","sns":[":no_good:"],"c":"people"},":person_gesturing_no_tone1:":{"sn":":person_gesturing_no_tone1:","cp":"1f645-1f3fb","sns":[":no_good_tone1:"],"c":"people"},":person_gesturing_no_tone2:":{"sn":":person_gesturing_no_tone2:","cp":"1f645-1f3fc","sns":[":no_good_tone2:"],"c":"people"},":person_gesturing_no_tone3:":{"sn":":person_gesturing_no_tone3:","cp":"1f645-1f3fd","sns":[":no_good_tone3:"],"c":"people"},":person_gesturing_no_tone4:":{"sn":":person_gesturing_no_tone4:","cp":"1f645-1f3fe","sns":[":no_good_tone4:"],"c":"people"},":person_gesturing_no_tone5:":{"sn":":person_gesturing_no_tone5:","cp":"1f645-1f3ff","sns":[":no_good_tone5:"],"c":"people"},":person_gesturing_ok:":{"sn":":person_gesturing_ok:","cp":"1f646","sns":[":ok_woman:"],"c":"people"},":person_gesturing_ok_tone1:":{"sn":":person_gesturing_ok_tone1:","cp":"1f646-1f3fb","sns":[":ok_woman_tone1:"],"c":"people"},":person_gesturing_ok_tone2:":{"sn":":person_gesturing_ok_tone2:","cp":"1f646-1f3fc","sns":[":ok_woman_tone2:"],"c":"people"},":person_gesturing_ok_tone3:":{"sn":":person_gesturing_ok_tone3:","cp":"1f646-1f3fd","sns":[":ok_woman_tone3:"],"c":"people"},":person_gesturing_ok_tone4:":{"sn":":person_gesturing_ok_tone4:","cp":"1f646-1f3fe","sns":[":ok_woman_tone4:"],"c":"people"},":person_gesturing_ok_tone5:":{"sn":":person_gesturing_ok_tone5:","cp":"1f646-1f3ff","sns":[":ok_woman_tone5:"],"c":"people"},":person_getting_haircut:":{"sn":":person_getting_haircut:","cp":"1f487","sns":[":haircut:"],"c":"people"},":person_getting_haircut_tone1:":{"sn":":person_getting_haircut_tone1:","cp":"1f487-1f3fb","sns":[":haircut_tone1:"],"c":"people"},":person_getting_haircut_tone2:":{"sn":":person_getting_haircut_tone2:","cp":"1f487-1f3fc","sns":[":haircut_tone2:"],"c":"people"},":person_getting_haircut_tone3:":{"sn":":person_getting_haircut_tone3:","cp":"1f487-1f3fd","sns":[":haircut_tone3:"],"c":"people"},":person_getting_haircut_tone4:":{"sn":":person_getting_haircut_tone4:","cp":"1f487-1f3fe","sns":[":haircut_tone4:"],"c":"people"},":person_getting_haircut_tone5:":{"sn":":person_getting_haircut_tone5:","cp":"1f487-1f3ff","sns":[":haircut_tone5:"],"c":"people"},":person_getting_massage:":{"sn":":person_getting_massage:","cp":"1f486","sns":[":massage:"],"c":"people"},":person_getting_massage_tone1:":{"sn":":person_getting_massage_tone1:","cp":"1f486-1f3fb","sns":[":massage_tone1:"],"c":"people"},":person_getting_massage_tone2:":{"sn":":person_getting_massage_tone2:","cp":"1f486-1f3fc","sns":[":massage_tone2:"],"c":"people"},":person_getting_massage_tone3:":{"sn":":person_getting_massage_tone3:","cp":"1f486-1f3fd","sns":[":massage_tone3:"],"c":"people"},":person_getting_massage_tone4:":{"sn":":person_getting_massage_tone4:","cp":"1f486-1f3fe","sns":[":massage_tone4:"],"c":"people"},":person_getting_massage_tone5:":{"sn":":person_getting_massage_tone5:","cp":"1f486-1f3ff","sns":[":massage_tone5:"],"c":"people"},":person_in_steamy_room:":{"sn":":person_in_steamy_room:","cp":"1f9d6","sns":[],"c":"people"},":person_in_steamy_room_tone1:":{"sn":":person_in_steamy_room_tone1:","cp":"1f9d6-1f3fb","sns":[":person_in_steamy_room_light_skin_tone:"],"c":"people"},":person_in_steamy_room_tone2:":{"sn":":person_in_steamy_room_tone2:","cp":"1f9d6-1f3fc","sns":[":person_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":person_in_steamy_room_tone3:":{"sn":":person_in_steamy_room_tone3:","cp":"1f9d6-1f3fd","sns":[":person_in_steamy_room_medium_skin_tone:"],"c":"people"},":person_in_steamy_room_tone4:":{"sn":":person_in_steamy_room_tone4:","cp":"1f9d6-1f3fe","sns":[":person_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":person_in_steamy_room_tone5:":{"sn":":person_in_steamy_room_tone5:","cp":"1f9d6-1f3ff","sns":[":person_in_steamy_room_dark_skin_tone:"],"c":"people"},":person_pouting:":{"sn":":person_pouting:","cp":"1f64e","sns":[":person_with_pouting_face:"],"c":"people"},":person_pouting_tone1:":{"sn":":person_pouting_tone1:","cp":"1f64e-1f3fb","sns":[":person_with_pouting_face_tone1:"],"c":"people"},":person_pouting_tone2:":{"sn":":person_pouting_tone2:","cp":"1f64e-1f3fc","sns":[":person_with_pouting_face_tone2:"],"c":"people"},":person_pouting_tone3:":{"sn":":person_pouting_tone3:","cp":"1f64e-1f3fd","sns":[":person_with_pouting_face_tone3:"],"c":"people"},":person_pouting_tone4:":{"sn":":person_pouting_tone4:","cp":"1f64e-1f3fe","sns":[":person_with_pouting_face_tone4:"],"c":"people"},":person_pouting_tone5:":{"sn":":person_pouting_tone5:","cp":"1f64e-1f3ff","sns":[":person_with_pouting_face_tone5:"],"c":"people"},":person_raising_hand:":{"sn":":person_raising_hand:","cp":"1f64b","sns":[":raising_hand:"],"c":"people"},":person_raising_hand_tone1:":{"sn":":person_raising_hand_tone1:","cp":"1f64b-1f3fb","sns":[":raising_hand_tone1:"],"c":"people"},":person_raising_hand_tone2:":{"sn":":person_raising_hand_tone2:","cp":"1f64b-1f3fc","sns":[":raising_hand_tone2:"],"c":"people"},":person_raising_hand_tone3:":{"sn":":person_raising_hand_tone3:","cp":"1f64b-1f3fd","sns":[":raising_hand_tone3:"],"c":"people"},":person_raising_hand_tone4:":{"sn":":person_raising_hand_tone4:","cp":"1f64b-1f3fe","sns":[":raising_hand_tone4:"],"c":"people"},":person_raising_hand_tone5:":{"sn":":person_raising_hand_tone5:","cp":"1f64b-1f3ff","sns":[":raising_hand_tone5:"],"c":"people"},":person_running:":{"sn":":person_running:","cp":"1f3c3","sns":[":runner:"],"c":"people"},":person_running_tone1:":{"sn":":person_running_tone1:","cp":"1f3c3-1f3fb","sns":[":runner_tone1:"],"c":"people"},":person_running_tone2:":{"sn":":person_running_tone2:","cp":"1f3c3-1f3fc","sns":[":runner_tone2:"],"c":"people"},":person_running_tone3:":{"sn":":person_running_tone3:","cp":"1f3c3-1f3fd","sns":[":runner_tone3:"],"c":"people"},":person_running_tone4:":{"sn":":person_running_tone4:","cp":"1f3c3-1f3fe","sns":[":runner_tone4:"],"c":"people"},":person_running_tone5:":{"sn":":person_running_tone5:","cp":"1f3c3-1f3ff","sns":[":runner_tone5:"],"c":"people"},":person_shrugging:":{"sn":":person_shrugging:","cp":"1f937","sns":[":shrug:"],"c":"people"},":person_shrugging_tone1:":{"sn":":person_shrugging_tone1:","cp":"1f937-1f3fb","sns":[":shrug_tone1:"],"c":"people"},":person_shrugging_tone2:":{"sn":":person_shrugging_tone2:","cp":"1f937-1f3fc","sns":[":shrug_tone2:"],"c":"people"},":person_shrugging_tone3:":{"sn":":person_shrugging_tone3:","cp":"1f937-1f3fd","sns":[":shrug_tone3:"],"c":"people"},":person_shrugging_tone4:":{"sn":":person_shrugging_tone4:","cp":"1f937-1f3fe","sns":[":shrug_tone4:"],"c":"people"},":person_shrugging_tone5:":{"sn":":person_shrugging_tone5:","cp":"1f937-1f3ff","sns":[":shrug_tone5:"],"c":"people"},":person_tipping_hand:":{"sn":":person_tipping_hand:","cp":"1f481","sns":[":information_desk_person:"],"c":"people"},":person_tipping_hand_tone1:":{"sn":":person_tipping_hand_tone1:","cp":"1f481-1f3fb","sns":[":information_desk_person_tone1:"],"c":"people"},":person_tipping_hand_tone2:":{"sn":":person_tipping_hand_tone2:","cp":"1f481-1f3fc","sns":[":information_desk_person_tone2:"],"c":"people"},":person_tipping_hand_tone3:":{"sn":":person_tipping_hand_tone3:","cp":"1f481-1f3fd","sns":[":information_desk_person_tone3:"],"c":"people"},":person_tipping_hand_tone4:":{"sn":":person_tipping_hand_tone4:","cp":"1f481-1f3fe","sns":[":information_desk_person_tone4:"],"c":"people"},":person_tipping_hand_tone5:":{"sn":":person_tipping_hand_tone5:","cp":"1f481-1f3ff","sns":[":information_desk_person_tone5:"],"c":"people"},":person_walking:":{"sn":":person_walking:","cp":"1f6b6","sns":[":walking:"],"c":"people"},":person_walking_tone1:":{"sn":":person_walking_tone1:","cp":"1f6b6-1f3fb","sns":[":walking_tone1:"],"c":"people"},":person_walking_tone2:":{"sn":":person_walking_tone2:","cp":"1f6b6-1f3fc","sns":[":walking_tone2:"],"c":"people"},":person_walking_tone3:":{"sn":":person_walking_tone3:","cp":"1f6b6-1f3fd","sns":[":walking_tone3:"],"c":"people"},":person_walking_tone4:":{"sn":":person_walking_tone4:","cp":"1f6b6-1f3fe","sns":[":walking_tone4:"],"c":"people"},":person_walking_tone5:":{"sn":":person_walking_tone5:","cp":"1f6b6-1f3ff","sns":[":walking_tone5:"],"c":"people"},":person_wearing_turban:":{"sn":":person_wearing_turban:","cp":"1f473","sns":[":man_with_turban:"],"c":"people"},":person_wearing_turban_tone1:":{"sn":":person_wearing_turban_tone1:","cp":"1f473-1f3fb","sns":[":man_with_turban_tone1:"],"c":"people"},":person_wearing_turban_tone2:":{"sn":":person_wearing_turban_tone2:","cp":"1f473-1f3fc","sns":[":man_with_turban_tone2:"],"c":"people"},":person_wearing_turban_tone3:":{"sn":":person_wearing_turban_tone3:","cp":"1f473-1f3fd","sns":[":man_with_turban_tone3:"],"c":"people"},":person_wearing_turban_tone4:":{"sn":":person_wearing_turban_tone4:","cp":"1f473-1f3fe","sns":[":man_with_turban_tone4:"],"c":"people"},":person_wearing_turban_tone5:":{"sn":":person_wearing_turban_tone5:","cp":"1f473-1f3ff","sns":[":man_with_turban_tone5:"],"c":"people"},":police_officer:":{"sn":":police_officer:","cp":"1f46e","sns":[":cop:"],"c":"people"},":police_officer_tone1:":{"sn":":police_officer_tone1:","cp":"1f46e-1f3fb","sns":[":cop_tone1:"],"c":"people"},":police_officer_tone2:":{"sn":":police_officer_tone2:","cp":"1f46e-1f3fc","sns":[":cop_tone2:"],"c":"people"},":police_officer_tone3:":{"sn":":police_officer_tone3:","cp":"1f46e-1f3fd","sns":[":cop_tone3:"],"c":"people"},":police_officer_tone4:":{"sn":":police_officer_tone4:","cp":"1f46e-1f3fe","sns":[":cop_tone4:"],"c":"people"},":police_officer_tone5:":{"sn":":police_officer_tone5:","cp":"1f46e-1f3ff","sns":[":cop_tone5:"],"c":"people"},":pregnant_woman:":{"sn":":pregnant_woman:","cp":"1f930","sns":[":expecting_woman:"],"c":"people"},":pregnant_woman_tone1:":{"sn":":pregnant_woman_tone1:","cp":"1f930-1f3fb","sns":[":expecting_woman_tone1:"],"c":"people"},":pregnant_woman_tone2:":{"sn":":pregnant_woman_tone2:","cp":"1f930-1f3fc","sns":[":expecting_woman_tone2:"],"c":"people"},":pregnant_woman_tone3:":{"sn":":pregnant_woman_tone3:","cp":"1f930-1f3fd","sns":[":expecting_woman_tone3:"],"c":"people"},":pregnant_woman_tone4:":{"sn":":pregnant_woman_tone4:","cp":"1f930-1f3fe","sns":[":expecting_woman_tone4:"],"c":"people"},":pregnant_woman_tone5:":{"sn":":pregnant_woman_tone5:","cp":"1f930-1f3ff","sns":[":expecting_woman_tone5:"],"c":"people"},":prince:":{"sn":":prince:","cp":"1f934","sns":[],"c":"people"},":prince_tone1:":{"sn":":prince_tone1:","cp":"1f934-1f3fb","sns":[],"c":"people"},":prince_tone2:":{"sn":":prince_tone2:","cp":"1f934-1f3fc","sns":[],"c":"people"},":prince_tone3:":{"sn":":prince_tone3:","cp":"1f934-1f3fd","sns":[],"c":"people"},":prince_tone4:":{"sn":":prince_tone4:","cp":"1f934-1f3fe","sns":[],"c":"people"},":prince_tone5:":{"sn":":prince_tone5:","cp":"1f934-1f3ff","sns":[],"c":"people"},":princess:":{"sn":":princess:","cp":"1f478","sns":[],"c":"people"},":princess_tone1:":{"sn":":princess_tone1:","cp":"1f478-1f3fb","sns":[],"c":"people"},":princess_tone2:":{"sn":":princess_tone2:","cp":"1f478-1f3fc","sns":[],"c":"people"},":princess_tone3:":{"sn":":princess_tone3:","cp":"1f478-1f3fd","sns":[],"c":"people"},":princess_tone4:":{"sn":":princess_tone4:","cp":"1f478-1f3fe","sns":[],"c":"people"},":princess_tone5:":{"sn":":princess_tone5:","cp":"1f478-1f3ff","sns":[],"c":"people"},":relaxed:":{"sn":":relaxed:","cp":"263a","sns":[],"c":"people"},":space_invader:":{"sn":":space_invader:","cp":"1f47e","sns":[],"c":"people"},":speaking_head:":{"sn":":speaking_head:","cp":"1f5e3","sns":[":speaking_head_in_silhouette:"],"c":"people"},":tongue:":{"sn":":tongue:","cp":"1f445","sns":[],"c":"people"},":two_men_holding_hands:":{"sn":":two_men_holding_hands:","cp":"1f46c","sns":[],"c":"people"},":two_women_holding_hands:":{"sn":":two_women_holding_hands:","cp":"1f46d","sns":[],"c":"people"},":vampire:":{"sn":":vampire:","cp":"1f9db","sns":[],"c":"people"},":vampire_tone1:":{"sn":":vampire_tone1:","cp":"1f9db-1f3fb","sns":[":vampire_light_skin_tone:"],"c":"people"},":vampire_tone2:":{"sn":":vampire_tone2:","cp":"1f9db-1f3fc","sns":[":vampire_medium_light_skin_tone:"],"c":"people"},":vampire_tone3:":{"sn":":vampire_tone3:","cp":"1f9db-1f3fd","sns":[":vampire_medium_skin_tone:"],"c":"people"},":vampire_tone4:":{"sn":":vampire_tone4:","cp":"1f9db-1f3fe","sns":[":vampire_medium_dark_skin_tone:"],"c":"people"},":vampire_tone5:":{"sn":":vampire_tone5:","cp":"1f9db-1f3ff","sns":[":vampire_dark_skin_tone:"],"c":"people"},":woman:":{"sn":":woman:","cp":"1f469","sns":[],"c":"people"},":woman_artist:":{"sn":":woman_artist:","cp":"1f469-200d-1f3a8","sns":[],"c":"people"},":woman_artist_tone1:":{"sn":":woman_artist_tone1:","cp":"1f469-1f3fb-200d-1f3a8","sns":[":woman_artist_light_skin_tone:"],"c":"people"},":woman_artist_tone2:":{"sn":":woman_artist_tone2:","cp":"1f469-1f3fc-200d-1f3a8","sns":[":woman_artist_medium_light_skin_tone:"],"c":"people"},":woman_artist_tone3:":{"sn":":woman_artist_tone3:","cp":"1f469-1f3fd-200d-1f3a8","sns":[":woman_artist_medium_skin_tone:"],"c":"people"},":woman_artist_tone4:":{"sn":":woman_artist_tone4:","cp":"1f469-1f3fe-200d-1f3a8","sns":[":woman_artist_medium_dark_skin_tone:"],"c":"people"},":woman_artist_tone5:":{"sn":":woman_artist_tone5:","cp":"1f469-1f3ff-200d-1f3a8","sns":[":woman_artist_dark_skin_tone:"],"c":"people"},":woman_astronaut:":{"sn":":woman_astronaut:","cp":"1f469-200d-1f680","sns":[],"c":"people"},":woman_astronaut_tone1:":{"sn":":woman_astronaut_tone1:","cp":"1f469-1f3fb-200d-1f680","sns":[":woman_astronaut_light_skin_tone:"],"c":"people"},":woman_astronaut_tone2:":{"sn":":woman_astronaut_tone2:","cp":"1f469-1f3fc-200d-1f680","sns":[":woman_astronaut_medium_light_skin_tone:"],"c":"people"},":woman_astronaut_tone3:":{"sn":":woman_astronaut_tone3:","cp":"1f469-1f3fd-200d-1f680","sns":[":woman_astronaut_medium_skin_tone:"],"c":"people"},":woman_astronaut_tone4:":{"sn":":woman_astronaut_tone4:","cp":"1f469-1f3fe-200d-1f680","sns":[":woman_astronaut_medium_dark_skin_tone:"],"c":"people"},":woman_astronaut_tone5:":{"sn":":woman_astronaut_tone5:","cp":"1f469-1f3ff-200d-1f680","sns":[":woman_astronaut_dark_skin_tone:"],"c":"people"},":woman_bowing:":{"sn":":woman_bowing:","cp":"1f647-200d-2640-fe0f","sns":[],"c":"people"},":woman_bowing_tone1:":{"sn":":woman_bowing_tone1:","cp":"1f647-1f3fb-200d-2640-fe0f","sns":[":woman_bowing_light_skin_tone:"],"c":"people"},":woman_bowing_tone2:":{"sn":":woman_bowing_tone2:","cp":"1f647-1f3fc-200d-2640-fe0f","sns":[":woman_bowing_medium_light_skin_tone:"],"c":"people"},":woman_bowing_tone3:":{"sn":":woman_bowing_tone3:","cp":"1f647-1f3fd-200d-2640-fe0f","sns":[":woman_bowing_medium_skin_tone:"],"c":"people"},":woman_bowing_tone4:":{"sn":":woman_bowing_tone4:","cp":"1f647-1f3fe-200d-2640-fe0f","sns":[":woman_bowing_medium_dark_skin_tone:"],"c":"people"},":woman_bowing_tone5:":{"sn":":woman_bowing_tone5:","cp":"1f647-1f3ff-200d-2640-fe0f","sns":[":woman_bowing_dark_skin_tone:"],"c":"people"},":woman_construction_worker:":{"sn":":woman_construction_worker:","cp":"1f477-200d-2640-fe0f","sns":[],"c":"people"},":woman_construction_worker_tone1:":{"sn":":woman_construction_worker_tone1:","cp":"1f477-1f3fb-200d-2640-fe0f","sns":[":woman_construction_worker_light_skin_tone:"],"c":"people"},":woman_construction_worker_tone2:":{"sn":":woman_construction_worker_tone2:","cp":"1f477-1f3fc-200d-2640-fe0f","sns":[":woman_construction_worker_medium_light_skin_tone:"],"c":"people"},":woman_construction_worker_tone3:":{"sn":":woman_construction_worker_tone3:","cp":"1f477-1f3fd-200d-2640-fe0f","sns":[":woman_construction_worker_medium_skin_tone:"],"c":"people"},":woman_construction_worker_tone4:":{"sn":":woman_construction_worker_tone4:","cp":"1f477-1f3fe-200d-2640-fe0f","sns":[":woman_construction_worker_medium_dark_skin_tone:"],"c":"people"},":woman_construction_worker_tone5:":{"sn":":woman_construction_worker_tone5:","cp":"1f477-1f3ff-200d-2640-fe0f","sns":[":woman_construction_worker_dark_skin_tone:"],"c":"people"},":woman_cook:":{"sn":":woman_cook:","cp":"1f469-200d-1f373","sns":[],"c":"people"},":woman_cook_tone1:":{"sn":":woman_cook_tone1:","cp":"1f469-1f3fb-200d-1f373","sns":[":woman_cook_light_skin_tone:"],"c":"people"},":woman_cook_tone2:":{"sn":":woman_cook_tone2:","cp":"1f469-1f3fc-200d-1f373","sns":[":woman_cook_medium_light_skin_tone:"],"c":"people"},":woman_cook_tone3:":{"sn":":woman_cook_tone3:","cp":"1f469-1f3fd-200d-1f373","sns":[":woman_cook_medium_skin_tone:"],"c":"people"},":woman_cook_tone4:":{"sn":":woman_cook_tone4:","cp":"1f469-1f3fe-200d-1f373","sns":[":woman_cook_medium_dark_skin_tone:"],"c":"people"},":woman_cook_tone5:":{"sn":":woman_cook_tone5:","cp":"1f469-1f3ff-200d-1f373","sns":[":woman_cook_dark_skin_tone:"],"c":"people"},":woman_detective:":{"sn":":woman_detective:","cp":"1f575-fe0f-200d-2640-fe0f","sns":[],"c":"people"},":woman_detective_tone1:":{"sn":":woman_detective_tone1:","cp":"1f575-1f3fb-200d-2640-fe0f","sns":[":woman_detective_light_skin_tone:"],"c":"people"},":woman_detective_tone2:":{"sn":":woman_detective_tone2:","cp":"1f575-1f3fc-200d-2640-fe0f","sns":[":woman_detective_medium_light_skin_tone:"],"c":"people"},":woman_detective_tone3:":{"sn":":woman_detective_tone3:","cp":"1f575-1f3fd-200d-2640-fe0f","sns":[":woman_detective_medium_skin_tone:"],"c":"people"},":woman_detective_tone4:":{"sn":":woman_detective_tone4:","cp":"1f575-1f3fe-200d-2640-fe0f","sns":[":woman_detective_medium_dark_skin_tone:"],"c":"people"},":woman_detective_tone5:":{"sn":":woman_detective_tone5:","cp":"1f575-1f3ff-200d-2640-fe0f","sns":[":woman_detective_dark_skin_tone:"],"c":"people"},":woman_elf:":{"sn":":woman_elf:","cp":"1f9dd-200d-2640-fe0f","sns":[],"c":"people"},":woman_elf_tone1:":{"sn":":woman_elf_tone1:","cp":"1f9dd-1f3fb-200d-2640-fe0f","sns":[":woman_elf_light_skin_tone:"],"c":"people"},":woman_elf_tone2:":{"sn":":woman_elf_tone2:","cp":"1f9dd-1f3fc-200d-2640-fe0f","sns":[":woman_elf_medium_light_skin_tone:"],"c":"people"},":woman_elf_tone3:":{"sn":":woman_elf_tone3:","cp":"1f9dd-1f3fd-200d-2640-fe0f","sns":[":woman_elf_medium_skin_tone:"],"c":"people"},":woman_elf_tone4:":{"sn":":woman_elf_tone4:","cp":"1f9dd-1f3fe-200d-2640-fe0f","sns":[":woman_elf_medium_dark_skin_tone:"],"c":"people"},":woman_elf_tone5:":{"sn":":woman_elf_tone5:","cp":"1f9dd-1f3ff-200d-2640-fe0f","sns":[":woman_elf_dark_skin_tone:"],"c":"people"},":woman_facepalming:":{"sn":":woman_facepalming:","cp":"1f926-200d-2640-fe0f","sns":[],"c":"people"},":woman_facepalming_tone1:":{"sn":":woman_facepalming_tone1:","cp":"1f926-1f3fb-200d-2640-fe0f","sns":[":woman_facepalming_light_skin_tone:"],"c":"people"},":woman_facepalming_tone2:":{"sn":":woman_facepalming_tone2:","cp":"1f926-1f3fc-200d-2640-fe0f","sns":[":woman_facepalming_medium_light_skin_tone:"],"c":"people"},":woman_facepalming_tone3:":{"sn":":woman_facepalming_tone3:","cp":"1f926-1f3fd-200d-2640-fe0f","sns":[":woman_facepalming_medium_skin_tone:"],"c":"people"},":woman_facepalming_tone4:":{"sn":":woman_facepalming_tone4:","cp":"1f926-1f3fe-200d-2640-fe0f","sns":[":woman_facepalming_medium_dark_skin_tone:"],"c":"people"},":woman_facepalming_tone5:":{"sn":":woman_facepalming_tone5:","cp":"1f926-1f3ff-200d-2640-fe0f","sns":[":woman_facepalming_dark_skin_tone:"],"c":"people"},":woman_factory_worker:":{"sn":":woman_factory_worker:","cp":"1f469-200d-1f3ed","sns":[],"c":"people"},":woman_factory_worker_tone1:":{"sn":":woman_factory_worker_tone1:","cp":"1f469-1f3fb-200d-1f3ed","sns":[":woman_factory_worker_light_skin_tone:"],"c":"people"},":woman_factory_worker_tone2:":{"sn":":woman_factory_worker_tone2:","cp":"1f469-1f3fc-200d-1f3ed","sns":[":woman_factory_worker_medium_light_skin_tone:"],"c":"people"},":woman_factory_worker_tone3:":{"sn":":woman_factory_worker_tone3:","cp":"1f469-1f3fd-200d-1f3ed","sns":[":woman_factory_worker_medium_skin_tone:"],"c":"people"},":woman_factory_worker_tone4:":{"sn":":woman_factory_worker_tone4:","cp":"1f469-1f3fe-200d-1f3ed","sns":[":woman_factory_worker_medium_dark_skin_tone:"],"c":"people"},":woman_factory_worker_tone5:":{"sn":":woman_factory_worker_tone5:","cp":"1f469-1f3ff-200d-1f3ed","sns":[":woman_factory_worker_dark_skin_tone:"],"c":"people"},":woman_fairy:":{"sn":":woman_fairy:","cp":"1f9da-200d-2640-fe0f","sns":[],"c":"people"},":woman_fairy_tone1:":{"sn":":woman_fairy_tone1:","cp":"1f9da-1f3fb-200d-2640-fe0f","sns":[":woman_fairy_light_skin_tone:"],"c":"people"},":woman_fairy_tone2:":{"sn":":woman_fairy_tone2:","cp":"1f9da-1f3fc-200d-2640-fe0f","sns":[":woman_fairy_medium_light_skin_tone:"],"c":"people"},":woman_fairy_tone3:":{"sn":":woman_fairy_tone3:","cp":"1f9da-1f3fd-200d-2640-fe0f","sns":[":woman_fairy_medium_skin_tone:"],"c":"people"},":woman_fairy_tone4:":{"sn":":woman_fairy_tone4:","cp":"1f9da-1f3fe-200d-2640-fe0f","sns":[":woman_fairy_medium_dark_skin_tone:"],"c":"people"},":woman_fairy_tone5:":{"sn":":woman_fairy_tone5:","cp":"1f9da-1f3ff-200d-2640-fe0f","sns":[":woman_fairy_dark_skin_tone:"],"c":"people"},":woman_farmer:":{"sn":":woman_farmer:","cp":"1f469-200d-1f33e","sns":[],"c":"people"},":woman_farmer_tone1:":{"sn":":woman_farmer_tone1:","cp":"1f469-1f3fb-200d-1f33e","sns":[":woman_farmer_light_skin_tone:"],"c":"people"},":woman_farmer_tone2:":{"sn":":woman_farmer_tone2:","cp":"1f469-1f3fc-200d-1f33e","sns":[":woman_farmer_medium_light_skin_tone:"],"c":"people"},":woman_farmer_tone3:":{"sn":":woman_farmer_tone3:","cp":"1f469-1f3fd-200d-1f33e","sns":[":woman_farmer_medium_skin_tone:"],"c":"people"},":woman_farmer_tone4:":{"sn":":woman_farmer_tone4:","cp":"1f469-1f3fe-200d-1f33e","sns":[":woman_farmer_medium_dark_skin_tone:"],"c":"people"},":woman_farmer_tone5:":{"sn":":woman_farmer_tone5:","cp":"1f469-1f3ff-200d-1f33e","sns":[":woman_farmer_dark_skin_tone:"],"c":"people"},":woman_firefighter:":{"sn":":woman_firefighter:","cp":"1f469-200d-1f692","sns":[],"c":"people"},":woman_firefighter_tone1:":{"sn":":woman_firefighter_tone1:","cp":"1f469-1f3fb-200d-1f692","sns":[":woman_firefighter_light_skin_tone:"],"c":"people"},":woman_firefighter_tone2:":{"sn":":woman_firefighter_tone2:","cp":"1f469-1f3fc-200d-1f692","sns":[":woman_firefighter_medium_light_skin_tone:"],"c":"people"},":woman_firefighter_tone3:":{"sn":":woman_firefighter_tone3:","cp":"1f469-1f3fd-200d-1f692","sns":[":woman_firefighter_medium_skin_tone:"],"c":"people"},":woman_firefighter_tone4:":{"sn":":woman_firefighter_tone4:","cp":"1f469-1f3fe-200d-1f692","sns":[":woman_firefighter_medium_dark_skin_tone:"],"c":"people"},":woman_firefighter_tone5:":{"sn":":woman_firefighter_tone5:","cp":"1f469-1f3ff-200d-1f692","sns":[":woman_firefighter_dark_skin_tone:"],"c":"people"},":woman_frowning:":{"sn":":woman_frowning:","cp":"1f64d-200d-2640-fe0f","sns":[],"c":"people"},":woman_frowning_tone1:":{"sn":":woman_frowning_tone1:","cp":"1f64d-1f3fb-200d-2640-fe0f","sns":[":woman_frowning_light_skin_tone:"],"c":"people"},":woman_frowning_tone2:":{"sn":":woman_frowning_tone2:","cp":"1f64d-1f3fc-200d-2640-fe0f","sns":[":woman_frowning_medium_light_skin_tone:"],"c":"people"},":woman_frowning_tone3:":{"sn":":woman_frowning_tone3:","cp":"1f64d-1f3fd-200d-2640-fe0f","sns":[":woman_frowning_medium_skin_tone:"],"c":"people"},":woman_frowning_tone4:":{"sn":":woman_frowning_tone4:","cp":"1f64d-1f3fe-200d-2640-fe0f","sns":[":woman_frowning_medium_dark_skin_tone:"],"c":"people"},":woman_frowning_tone5:":{"sn":":woman_frowning_tone5:","cp":"1f64d-1f3ff-200d-2640-fe0f","sns":[":woman_frowning_dark_skin_tone:"],"c":"people"},":woman_genie:":{"sn":":woman_genie:","cp":"1f9de-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_no:":{"sn":":woman_gesturing_no:","cp":"1f645-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_no_tone1:":{"sn":":woman_gesturing_no_tone1:","cp":"1f645-1f3fb-200d-2640-fe0f","sns":[":woman_gesturing_no_light_skin_tone:"],"c":"people"},":woman_gesturing_no_tone2:":{"sn":":woman_gesturing_no_tone2:","cp":"1f645-1f3fc-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_light_skin_tone:"],"c":"people"},":woman_gesturing_no_tone3:":{"sn":":woman_gesturing_no_tone3:","cp":"1f645-1f3fd-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_skin_tone:"],"c":"people"},":woman_gesturing_no_tone4:":{"sn":":woman_gesturing_no_tone4:","cp":"1f645-1f3fe-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_dark_skin_tone:"],"c":"people"},":woman_gesturing_no_tone5:":{"sn":":woman_gesturing_no_tone5:","cp":"1f645-1f3ff-200d-2640-fe0f","sns":[":woman_gesturing_no_dark_skin_tone:"],"c":"people"},":woman_gesturing_ok:":{"sn":":woman_gesturing_ok:","cp":"1f646-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_ok_tone1:":{"sn":":woman_gesturing_ok_tone1:","cp":"1f646-1f3fb-200d-2640-fe0f","sns":[":woman_gesturing_ok_light_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone2:":{"sn":":woman_gesturing_ok_tone2:","cp":"1f646-1f3fc-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_light_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone3:":{"sn":":woman_gesturing_ok_tone3:","cp":"1f646-1f3fd-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone4:":{"sn":":woman_gesturing_ok_tone4:","cp":"1f646-1f3fe-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_dark_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone5:":{"sn":":woman_gesturing_ok_tone5:","cp":"1f646-1f3ff-200d-2640-fe0f","sns":[":woman_gesturing_ok_dark_skin_tone:"],"c":"people"},":woman_getting_face_massage:":{"sn":":woman_getting_face_massage:","cp":"1f486-200d-2640-fe0f","sns":[],"c":"people"},":woman_getting_face_massage_tone1:":{"sn":":woman_getting_face_massage_tone1:","cp":"1f486-1f3fb-200d-2640-fe0f","sns":[":woman_getting_face_massage_light_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone2:":{"sn":":woman_getting_face_massage_tone2:","cp":"1f486-1f3fc-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_light_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone3:":{"sn":":woman_getting_face_massage_tone3:","cp":"1f486-1f3fd-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone4:":{"sn":":woman_getting_face_massage_tone4:","cp":"1f486-1f3fe-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_dark_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone5:":{"sn":":woman_getting_face_massage_tone5:","cp":"1f486-1f3ff-200d-2640-fe0f","sns":[":woman_getting_face_massage_dark_skin_tone:"],"c":"people"},":woman_getting_haircut:":{"sn":":woman_getting_haircut:","cp":"1f487-200d-2640-fe0f","sns":[],"c":"people"},":woman_getting_haircut_tone1:":{"sn":":woman_getting_haircut_tone1:","cp":"1f487-1f3fb-200d-2640-fe0f","sns":[":woman_getting_haircut_light_skin_tone:"],"c":"people"},":woman_getting_haircut_tone2:":{"sn":":woman_getting_haircut_tone2:","cp":"1f487-1f3fc-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_light_skin_tone:"],"c":"people"},":woman_getting_haircut_tone3:":{"sn":":woman_getting_haircut_tone3:","cp":"1f487-1f3fd-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_skin_tone:"],"c":"people"},":woman_getting_haircut_tone4:":{"sn":":woman_getting_haircut_tone4:","cp":"1f487-1f3fe-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_dark_skin_tone:"],"c":"people"},":woman_getting_haircut_tone5:":{"sn":":woman_getting_haircut_tone5:","cp":"1f487-1f3ff-200d-2640-fe0f","sns":[":woman_getting_haircut_dark_skin_tone:"],"c":"people"},":woman_guard:":{"sn":":woman_guard:","cp":"1f482-200d-2640-fe0f","sns":[],"c":"people"},":woman_guard_tone1:":{"sn":":woman_guard_tone1:","cp":"1f482-1f3fb-200d-2640-fe0f","sns":[":woman_guard_light_skin_tone:"],"c":"people"},":woman_guard_tone2:":{"sn":":woman_guard_tone2:","cp":"1f482-1f3fc-200d-2640-fe0f","sns":[":woman_guard_medium_light_skin_tone:"],"c":"people"},":woman_guard_tone3:":{"sn":":woman_guard_tone3:","cp":"1f482-1f3fd-200d-2640-fe0f","sns":[":woman_guard_medium_skin_tone:"],"c":"people"},":woman_guard_tone4:":{"sn":":woman_guard_tone4:","cp":"1f482-1f3fe-200d-2640-fe0f","sns":[":woman_guard_medium_dark_skin_tone:"],"c":"people"},":woman_guard_tone5:":{"sn":":woman_guard_tone5:","cp":"1f482-1f3ff-200d-2640-fe0f","sns":[":woman_guard_dark_skin_tone:"],"c":"people"},":woman_health_worker:":{"sn":":woman_health_worker:","cp":"1f469-200d-2695-fe0f","sns":[],"c":"people"},":woman_health_worker_tone1:":{"sn":":woman_health_worker_tone1:","cp":"1f469-1f3fb-200d-2695-fe0f","sns":[":woman_health_worker_light_skin_tone:"],"c":"people"},":woman_health_worker_tone2:":{"sn":":woman_health_worker_tone2:","cp":"1f469-1f3fc-200d-2695-fe0f","sns":[":woman_health_worker_medium_light_skin_tone:"],"c":"people"},":woman_health_worker_tone3:":{"sn":":woman_health_worker_tone3:","cp":"1f469-1f3fd-200d-2695-fe0f","sns":[":woman_health_worker_medium_skin_tone:"],"c":"people"},":woman_health_worker_tone4:":{"sn":":woman_health_worker_tone4:","cp":"1f469-1f3fe-200d-2695-fe0f","sns":[":woman_health_worker_medium_dark_skin_tone:"],"c":"people"},":woman_health_worker_tone5:":{"sn":":woman_health_worker_tone5:","cp":"1f469-1f3ff-200d-2695-fe0f","sns":[":woman_health_worker_dark_skin_tone:"],"c":"people"},":woman_in_steamy_room:":{"sn":":woman_in_steamy_room:","cp":"1f9d6-200d-2640-fe0f","sns":[],"c":"people"},":woman_in_steamy_room_tone1:":{"sn":":woman_in_steamy_room_tone1:","cp":"1f9d6-1f3fb-200d-2640-fe0f","sns":[":woman_in_steamy_room_light_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone2:":{"sn":":woman_in_steamy_room_tone2:","cp":"1f9d6-1f3fc-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone3:":{"sn":":woman_in_steamy_room_tone3:","cp":"1f9d6-1f3fd-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone4:":{"sn":":woman_in_steamy_room_tone4:","cp":"1f9d6-1f3fe-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone5:":{"sn":":woman_in_steamy_room_tone5:","cp":"1f9d6-1f3ff-200d-2640-fe0f","sns":[":woman_in_steamy_room_dark_skin_tone:"],"c":"people"},":woman_judge:":{"sn":":woman_judge:","cp":"1f469-200d-2696-fe0f","sns":[],"c":"people"},":woman_judge_tone1:":{"sn":":woman_judge_tone1:","cp":"1f469-1f3fb-200d-2696-fe0f","sns":[":woman_judge_light_skin_tone:"],"c":"people"},":woman_judge_tone2:":{"sn":":woman_judge_tone2:","cp":"1f469-1f3fc-200d-2696-fe0f","sns":[":woman_judge_medium_light_skin_tone:"],"c":"people"},":woman_judge_tone3:":{"sn":":woman_judge_tone3:","cp":"1f469-1f3fd-200d-2696-fe0f","sns":[":woman_judge_medium_skin_tone:"],"c":"people"},":woman_judge_tone4:":{"sn":":woman_judge_tone4:","cp":"1f469-1f3fe-200d-2696-fe0f","sns":[":woman_judge_medium_dark_skin_tone:"],"c":"people"},":woman_judge_tone5:":{"sn":":woman_judge_tone5:","cp":"1f469-1f3ff-200d-2696-fe0f","sns":[":woman_judge_dark_skin_tone:"],"c":"people"},":woman_mage:":{"sn":":woman_mage:","cp":"1f9d9-200d-2640-fe0f","sns":[],"c":"people"},":woman_mage_tone1:":{"sn":":woman_mage_tone1:","cp":"1f9d9-1f3fb-200d-2640-fe0f","sns":[":woman_mage_light_skin_tone:"],"c":"people"},":woman_mage_tone2:":{"sn":":woman_mage_tone2:","cp":"1f9d9-1f3fc-200d-2640-fe0f","sns":[":woman_mage_medium_light_skin_tone:"],"c":"people"},":woman_mage_tone3:":{"sn":":woman_mage_tone3:","cp":"1f9d9-1f3fd-200d-2640-fe0f","sns":[":woman_mage_medium_skin_tone:"],"c":"people"},":woman_mage_tone4:":{"sn":":woman_mage_tone4:","cp":"1f9d9-1f3fe-200d-2640-fe0f","sns":[":woman_mage_medium_dark_skin_tone:"],"c":"people"},":woman_mage_tone5:":{"sn":":woman_mage_tone5:","cp":"1f9d9-1f3ff-200d-2640-fe0f","sns":[":woman_mage_dark_skin_tone:"],"c":"people"},":woman_mechanic:":{"sn":":woman_mechanic:","cp":"1f469-200d-1f527","sns":[],"c":"people"},":woman_mechanic_tone1:":{"sn":":woman_mechanic_tone1:","cp":"1f469-1f3fb-200d-1f527","sns":[":woman_mechanic_light_skin_tone:"],"c":"people"},":woman_mechanic_tone2:":{"sn":":woman_mechanic_tone2:","cp":"1f469-1f3fc-200d-1f527","sns":[":woman_mechanic_medium_light_skin_tone:"],"c":"people"},":woman_mechanic_tone3:":{"sn":":woman_mechanic_tone3:","cp":"1f469-1f3fd-200d-1f527","sns":[":woman_mechanic_medium_skin_tone:"],"c":"people"},":woman_mechanic_tone4:":{"sn":":woman_mechanic_tone4:","cp":"1f469-1f3fe-200d-1f527","sns":[":woman_mechanic_medium_dark_skin_tone:"],"c":"people"},":woman_mechanic_tone5:":{"sn":":woman_mechanic_tone5:","cp":"1f469-1f3ff-200d-1f527","sns":[":woman_mechanic_dark_skin_tone:"],"c":"people"},":woman_office_worker:":{"sn":":woman_office_worker:","cp":"1f469-200d-1f4bc","sns":[],"c":"people"},":woman_office_worker_tone1:":{"sn":":woman_office_worker_tone1:","cp":"1f469-1f3fb-200d-1f4bc","sns":[":woman_office_worker_light_skin_tone:"],"c":"people"},":woman_office_worker_tone2:":{"sn":":woman_office_worker_tone2:","cp":"1f469-1f3fc-200d-1f4bc","sns":[":woman_office_worker_medium_light_skin_tone:"],"c":"people"},":woman_office_worker_tone3:":{"sn":":woman_office_worker_tone3:","cp":"1f469-1f3fd-200d-1f4bc","sns":[":woman_office_worker_medium_skin_tone:"],"c":"people"},":woman_office_worker_tone4:":{"sn":":woman_office_worker_tone4:","cp":"1f469-1f3fe-200d-1f4bc","sns":[":woman_office_worker_medium_dark_skin_tone:"],"c":"people"},":woman_office_worker_tone5:":{"sn":":woman_office_worker_tone5:","cp":"1f469-1f3ff-200d-1f4bc","sns":[":woman_office_worker_dark_skin_tone:"],"c":"people"},":woman_pilot:":{"sn":":woman_pilot:","cp":"1f469-200d-2708-fe0f","sns":[],"c":"people"},":woman_pilot_tone1:":{"sn":":woman_pilot_tone1:","cp":"1f469-1f3fb-200d-2708-fe0f","sns":[":woman_pilot_light_skin_tone:"],"c":"people"},":woman_pilot_tone2:":{"sn":":woman_pilot_tone2:","cp":"1f469-1f3fc-200d-2708-fe0f","sns":[":woman_pilot_medium_light_skin_tone:"],"c":"people"},":woman_pilot_tone3:":{"sn":":woman_pilot_tone3:","cp":"1f469-1f3fd-200d-2708-fe0f","sns":[":woman_pilot_medium_skin_tone:"],"c":"people"},":woman_pilot_tone4:":{"sn":":woman_pilot_tone4:","cp":"1f469-1f3fe-200d-2708-fe0f","sns":[":woman_pilot_medium_dark_skin_tone:"],"c":"people"},":woman_pilot_tone5:":{"sn":":woman_pilot_tone5:","cp":"1f469-1f3ff-200d-2708-fe0f","sns":[":woman_pilot_dark_skin_tone:"],"c":"people"},":woman_police_officer:":{"sn":":woman_police_officer:","cp":"1f46e-200d-2640-fe0f","sns":[],"c":"people"},":woman_police_officer_tone1:":{"sn":":woman_police_officer_tone1:","cp":"1f46e-1f3fb-200d-2640-fe0f","sns":[":woman_police_officer_light_skin_tone:"],"c":"people"},":woman_police_officer_tone2:":{"sn":":woman_police_officer_tone2:","cp":"1f46e-1f3fc-200d-2640-fe0f","sns":[":woman_police_officer_medium_light_skin_tone:"],"c":"people"},":woman_police_officer_tone3:":{"sn":":woman_police_officer_tone3:","cp":"1f46e-1f3fd-200d-2640-fe0f","sns":[":woman_police_officer_medium_skin_tone:"],"c":"people"},":woman_police_officer_tone4:":{"sn":":woman_police_officer_tone4:","cp":"1f46e-1f3fe-200d-2640-fe0f","sns":[":woman_police_officer_medium_dark_skin_tone:"],"c":"people"},":woman_police_officer_tone5:":{"sn":":woman_police_officer_tone5:","cp":"1f46e-1f3ff-200d-2640-fe0f","sns":[":woman_police_officer_dark_skin_tone:"],"c":"people"},":woman_pouting:":{"sn":":woman_pouting:","cp":"1f64e-200d-2640-fe0f","sns":[],"c":"people"},":woman_pouting_tone1:":{"sn":":woman_pouting_tone1:","cp":"1f64e-1f3fb-200d-2640-fe0f","sns":[":woman_pouting_light_skin_tone:"],"c":"people"},":woman_pouting_tone2:":{"sn":":woman_pouting_tone2:","cp":"1f64e-1f3fc-200d-2640-fe0f","sns":[":woman_pouting_medium_light_skin_tone:"],"c":"people"},":woman_pouting_tone3:":{"sn":":woman_pouting_tone3:","cp":"1f64e-1f3fd-200d-2640-fe0f","sns":[":woman_pouting_medium_skin_tone:"],"c":"people"},":woman_pouting_tone4:":{"sn":":woman_pouting_tone4:","cp":"1f64e-1f3fe-200d-2640-fe0f","sns":[":woman_pouting_medium_dark_skin_tone:"],"c":"people"},":woman_pouting_tone5:":{"sn":":woman_pouting_tone5:","cp":"1f64e-1f3ff-200d-2640-fe0f","sns":[":woman_pouting_dark_skin_tone:"],"c":"people"},":woman_raising_hand:":{"sn":":woman_raising_hand:","cp":"1f64b-200d-2640-fe0f","sns":[],"c":"people"},":woman_raising_hand_tone1:":{"sn":":woman_raising_hand_tone1:","cp":"1f64b-1f3fb-200d-2640-fe0f","sns":[":woman_raising_hand_light_skin_tone:"],"c":"people"},":woman_raising_hand_tone2:":{"sn":":woman_raising_hand_tone2:","cp":"1f64b-1f3fc-200d-2640-fe0f","sns":[":woman_raising_hand_medium_light_skin_tone:"],"c":"people"},":woman_raising_hand_tone3:":{"sn":":woman_raising_hand_tone3:","cp":"1f64b-1f3fd-200d-2640-fe0f","sns":[":woman_raising_hand_medium_skin_tone:"],"c":"people"},":woman_raising_hand_tone4:":{"sn":":woman_raising_hand_tone4:","cp":"1f64b-1f3fe-200d-2640-fe0f","sns":[":woman_raising_hand_medium_dark_skin_tone:"],"c":"people"},":woman_raising_hand_tone5:":{"sn":":woman_raising_hand_tone5:","cp":"1f64b-1f3ff-200d-2640-fe0f","sns":[":woman_raising_hand_dark_skin_tone:"],"c":"people"},":woman_running:":{"sn":":woman_running:","cp":"1f3c3-200d-2640-fe0f","sns":[],"c":"people"},":woman_running_tone1:":{"sn":":woman_running_tone1:","cp":"1f3c3-1f3fb-200d-2640-fe0f","sns":[":woman_running_light_skin_tone:"],"c":"people"},":woman_running_tone2:":{"sn":":woman_running_tone2:","cp":"1f3c3-1f3fc-200d-2640-fe0f","sns":[":woman_running_medium_light_skin_tone:"],"c":"people"},":woman_running_tone3:":{"sn":":woman_running_tone3:","cp":"1f3c3-1f3fd-200d-2640-fe0f","sns":[":woman_running_medium_skin_tone:"],"c":"people"},":woman_running_tone4:":{"sn":":woman_running_tone4:","cp":"1f3c3-1f3fe-200d-2640-fe0f","sns":[":woman_running_medium_dark_skin_tone:"],"c":"people"},":woman_running_tone5:":{"sn":":woman_running_tone5:","cp":"1f3c3-1f3ff-200d-2640-fe0f","sns":[":woman_running_dark_skin_tone:"],"c":"people"},":woman_scientist:":{"sn":":woman_scientist:","cp":"1f469-200d-1f52c","sns":[],"c":"people"},":woman_scientist_tone1:":{"sn":":woman_scientist_tone1:","cp":"1f469-1f3fb-200d-1f52c","sns":[":woman_scientist_light_skin_tone:"],"c":"people"},":woman_scientist_tone2:":{"sn":":woman_scientist_tone2:","cp":"1f469-1f3fc-200d-1f52c","sns":[":woman_scientist_medium_light_skin_tone:"],"c":"people"},":woman_scientist_tone3:":{"sn":":woman_scientist_tone3:","cp":"1f469-1f3fd-200d-1f52c","sns":[":woman_scientist_medium_skin_tone:"],"c":"people"},":woman_scientist_tone4:":{"sn":":woman_scientist_tone4:","cp":"1f469-1f3fe-200d-1f52c","sns":[":woman_scientist_medium_dark_skin_tone:"],"c":"people"},":woman_scientist_tone5:":{"sn":":woman_scientist_tone5:","cp":"1f469-1f3ff-200d-1f52c","sns":[":woman_scientist_dark_skin_tone:"],"c":"people"},":woman_shrugging:":{"sn":":woman_shrugging:","cp":"1f937-200d-2640-fe0f","sns":[],"c":"people"},":woman_shrugging_tone1:":{"sn":":woman_shrugging_tone1:","cp":"1f937-1f3fb-200d-2640-fe0f","sns":[":woman_shrugging_light_skin_tone:"],"c":"people"},":woman_shrugging_tone2:":{"sn":":woman_shrugging_tone2:","cp":"1f937-1f3fc-200d-2640-fe0f","sns":[":woman_shrugging_medium_light_skin_tone:"],"c":"people"},":woman_shrugging_tone3:":{"sn":":woman_shrugging_tone3:","cp":"1f937-1f3fd-200d-2640-fe0f","sns":[":woman_shrugging_medium_skin_tone:"],"c":"people"},":woman_shrugging_tone4:":{"sn":":woman_shrugging_tone4:","cp":"1f937-1f3fe-200d-2640-fe0f","sns":[":woman_shrugging_medium_dark_skin_tone:"],"c":"people"},":woman_shrugging_tone5:":{"sn":":woman_shrugging_tone5:","cp":"1f937-1f3ff-200d-2640-fe0f","sns":[":woman_shrugging_dark_skin_tone:"],"c":"people"},":woman_singer:":{"sn":":woman_singer:","cp":"1f469-200d-1f3a4","sns":[],"c":"people"},":woman_singer_tone1:":{"sn":":woman_singer_tone1:","cp":"1f469-1f3fb-200d-1f3a4","sns":[":woman_singer_light_skin_tone:"],"c":"people"},":woman_singer_tone2:":{"sn":":woman_singer_tone2:","cp":"1f469-1f3fc-200d-1f3a4","sns":[":woman_singer_medium_light_skin_tone:"],"c":"people"},":woman_singer_tone3:":{"sn":":woman_singer_tone3:","cp":"1f469-1f3fd-200d-1f3a4","sns":[":woman_singer_medium_skin_tone:"],"c":"people"},":woman_singer_tone4:":{"sn":":woman_singer_tone4:","cp":"1f469-1f3fe-200d-1f3a4","sns":[":woman_singer_medium_dark_skin_tone:"],"c":"people"},":woman_singer_tone5:":{"sn":":woman_singer_tone5:","cp":"1f469-1f3ff-200d-1f3a4","sns":[":woman_singer_dark_skin_tone:"],"c":"people"},":woman_student:":{"sn":":woman_student:","cp":"1f469-200d-1f393","sns":[],"c":"people"},":woman_student_tone1:":{"sn":":woman_student_tone1:","cp":"1f469-1f3fb-200d-1f393","sns":[":woman_student_light_skin_tone:"],"c":"people"},":woman_student_tone2:":{"sn":":woman_student_tone2:","cp":"1f469-1f3fc-200d-1f393","sns":[":woman_student_medium_light_skin_tone:"],"c":"people"},":woman_student_tone3:":{"sn":":woman_student_tone3:","cp":"1f469-1f3fd-200d-1f393","sns":[":woman_student_medium_skin_tone:"],"c":"people"},":woman_student_tone4:":{"sn":":woman_student_tone4:","cp":"1f469-1f3fe-200d-1f393","sns":[":woman_student_medium_dark_skin_tone:"],"c":"people"},":woman_student_tone5:":{"sn":":woman_student_tone5:","cp":"1f469-1f3ff-200d-1f393","sns":[":woman_student_dark_skin_tone:"],"c":"people"},":woman_teacher:":{"sn":":woman_teacher:","cp":"1f469-200d-1f3eb","sns":[],"c":"people"},":woman_teacher_tone1:":{"sn":":woman_teacher_tone1:","cp":"1f469-1f3fb-200d-1f3eb","sns":[":woman_teacher_light_skin_tone:"],"c":"people"},":woman_teacher_tone2:":{"sn":":woman_teacher_tone2:","cp":"1f469-1f3fc-200d-1f3eb","sns":[":woman_teacher_medium_light_skin_tone:"],"c":"people"},":woman_teacher_tone3:":{"sn":":woman_teacher_tone3:","cp":"1f469-1f3fd-200d-1f3eb","sns":[":woman_teacher_medium_skin_tone:"],"c":"people"},":woman_teacher_tone4:":{"sn":":woman_teacher_tone4:","cp":"1f469-1f3fe-200d-1f3eb","sns":[":woman_teacher_medium_dark_skin_tone:"],"c":"people"},":woman_teacher_tone5:":{"sn":":woman_teacher_tone5:","cp":"1f469-1f3ff-200d-1f3eb","sns":[":woman_teacher_dark_skin_tone:"],"c":"people"},":woman_technologist:":{"sn":":woman_technologist:","cp":"1f469-200d-1f4bb","sns":[],"c":"people"},":woman_technologist_tone1:":{"sn":":woman_technologist_tone1:","cp":"1f469-1f3fb-200d-1f4bb","sns":[":woman_technologist_light_skin_tone:"],"c":"people"},":woman_technologist_tone2:":{"sn":":woman_technologist_tone2:","cp":"1f469-1f3fc-200d-1f4bb","sns":[":woman_technologist_medium_light_skin_tone:"],"c":"people"},":woman_technologist_tone3:":{"sn":":woman_technologist_tone3:","cp":"1f469-1f3fd-200d-1f4bb","sns":[":woman_technologist_medium_skin_tone:"],"c":"people"},":woman_technologist_tone4:":{"sn":":woman_technologist_tone4:","cp":"1f469-1f3fe-200d-1f4bb","sns":[":woman_technologist_medium_dark_skin_tone:"],"c":"people"},":woman_technologist_tone5:":{"sn":":woman_technologist_tone5:","cp":"1f469-1f3ff-200d-1f4bb","sns":[":woman_technologist_dark_skin_tone:"],"c":"people"},":woman_tipping_hand:":{"sn":":woman_tipping_hand:","cp":"1f481-200d-2640-fe0f","sns":[],"c":"people"},":woman_tipping_hand_tone1:":{"sn":":woman_tipping_hand_tone1:","cp":"1f481-1f3fb-200d-2640-fe0f","sns":[":woman_tipping_hand_light_skin_tone:"],"c":"people"},":woman_tipping_hand_tone2:":{"sn":":woman_tipping_hand_tone2:","cp":"1f481-1f3fc-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_light_skin_tone:"],"c":"people"},":woman_tipping_hand_tone3:":{"sn":":woman_tipping_hand_tone3:","cp":"1f481-1f3fd-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_skin_tone:"],"c":"people"},":woman_tipping_hand_tone4:":{"sn":":woman_tipping_hand_tone4:","cp":"1f481-1f3fe-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_dark_skin_tone:"],"c":"people"},":woman_tipping_hand_tone5:":{"sn":":woman_tipping_hand_tone5:","cp":"1f481-1f3ff-200d-2640-fe0f","sns":[":woman_tipping_hand_dark_skin_tone:"],"c":"people"},":woman_tone1:":{"sn":":woman_tone1:","cp":"1f469-1f3fb","sns":[],"c":"people"},":woman_tone2:":{"sn":":woman_tone2:","cp":"1f469-1f3fc","sns":[],"c":"people"},":woman_tone3:":{"sn":":woman_tone3:","cp":"1f469-1f3fd","sns":[],"c":"people"},":woman_tone4:":{"sn":":woman_tone4:","cp":"1f469-1f3fe","sns":[],"c":"people"},":woman_tone5:":{"sn":":woman_tone5:","cp":"1f469-1f3ff","sns":[],"c":"people"},":woman_vampire:":{"sn":":woman_vampire:","cp":"1f9db-200d-2640-fe0f","sns":[],"c":"people"},":woman_vampire_tone1:":{"sn":":woman_vampire_tone1:","cp":"1f9db-1f3fb-200d-2640-fe0f","sns":[":woman_vampire_light_skin_tone:"],"c":"people"},":woman_vampire_tone2:":{"sn":":woman_vampire_tone2:","cp":"1f9db-1f3fc-200d-2640-fe0f","sns":[":woman_vampire_medium_light_skin_tone:"],"c":"people"},":woman_vampire_tone3:":{"sn":":woman_vampire_tone3:","cp":"1f9db-1f3fd-200d-2640-fe0f","sns":[":woman_vampire_medium_skin_tone:"],"c":"people"},":woman_vampire_tone4:":{"sn":":woman_vampire_tone4:","cp":"1f9db-1f3fe-200d-2640-fe0f","sns":[":woman_vampire_medium_dark_skin_tone:"],"c":"people"},":woman_vampire_tone5:":{"sn":":woman_vampire_tone5:","cp":"1f9db-1f3ff-200d-2640-fe0f","sns":[":woman_vampire_dark_skin_tone:"],"c":"people"},":woman_walking:":{"sn":":woman_walking:","cp":"1f6b6-200d-2640-fe0f","sns":[],"c":"people"},":woman_walking_tone1:":{"sn":":woman_walking_tone1:","cp":"1f6b6-1f3fb-200d-2640-fe0f","sns":[":woman_walking_light_skin_tone:"],"c":"people"},":woman_walking_tone2:":{"sn":":woman_walking_tone2:","cp":"1f6b6-1f3fc-200d-2640-fe0f","sns":[":woman_walking_medium_light_skin_tone:"],"c":"people"},":woman_walking_tone3:":{"sn":":woman_walking_tone3:","cp":"1f6b6-1f3fd-200d-2640-fe0f","sns":[":woman_walking_medium_skin_tone:"],"c":"people"},":woman_walking_tone4:":{"sn":":woman_walking_tone4:","cp":"1f6b6-1f3fe-200d-2640-fe0f","sns":[":woman_walking_medium_dark_skin_tone:"],"c":"people"},":woman_walking_tone5:":{"sn":":woman_walking_tone5:","cp":"1f6b6-1f3ff-200d-2640-fe0f","sns":[":woman_walking_dark_skin_tone:"],"c":"people"},":woman_wearing_turban:":{"sn":":woman_wearing_turban:","cp":"1f473-200d-2640-fe0f","sns":[],"c":"people"},":woman_wearing_turban_tone1:":{"sn":":woman_wearing_turban_tone1:","cp":"1f473-1f3fb-200d-2640-fe0f","sns":[":woman_wearing_turban_light_skin_tone:"],"c":"people"},":woman_wearing_turban_tone2:":{"sn":":woman_wearing_turban_tone2:","cp":"1f473-1f3fc-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_light_skin_tone:"],"c":"people"},":woman_wearing_turban_tone3:":{"sn":":woman_wearing_turban_tone3:","cp":"1f473-1f3fd-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_skin_tone:"],"c":"people"},":woman_wearing_turban_tone4:":{"sn":":woman_wearing_turban_tone4:","cp":"1f473-1f3fe-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_dark_skin_tone:"],"c":"people"},":woman_wearing_turban_tone5:":{"sn":":woman_wearing_turban_tone5:","cp":"1f473-1f3ff-200d-2640-fe0f","sns":[":woman_wearing_turban_dark_skin_tone:"],"c":"people"},":woman_with_headscarf:":{"sn":":woman_with_headscarf:","cp":"1f9d5","sns":[],"c":"people"},":woman_with_headscarf_tone1:":{"sn":":woman_with_headscarf_tone1:","cp":"1f9d5-1f3fb","sns":[":woman_with_headscarf_light_skin_tone:"],"c":"people"},":woman_with_headscarf_tone2:":{"sn":":woman_with_headscarf_tone2:","cp":"1f9d5-1f3fc","sns":[":woman_with_headscarf_medium_light_skin_tone:"],"c":"people"},":woman_with_headscarf_tone3:":{"sn":":woman_with_headscarf_tone3:","cp":"1f9d5-1f3fd","sns":[":woman_with_headscarf_medium_skin_tone:"],"c":"people"},":woman_with_headscarf_tone4:":{"sn":":woman_with_headscarf_tone4:","cp":"1f9d5-1f3fe","sns":[":woman_with_headscarf_medium_dark_skin_tone:"],"c":"people"},":woman_with_headscarf_tone5:":{"sn":":woman_with_headscarf_tone5:","cp":"1f9d5-1f3ff","sns":[":woman_with_headscarf_dark_skin_tone:"],"c":"people"},":woman_zombie:":{"sn":":woman_zombie:","cp":"1f9df-200d-2640-fe0f","sns":[],"c":"people"},":women_with_bunny_ears_partying:":{"sn":":women_with_bunny_ears_partying:","cp":"1f46f-200d-2640-fe0f","sns":[],"c":"people"},":zombie:":{"sn":":zombie:","cp":"1f9df","sns":[],"c":"people"}},"activity":{":8ball:":{"sn":":8ball:","cp":"1f3b1","sns":[],"c":"activity"},":art:":{"sn":":art:","cp":"1f3a8","sns":[],"c":"activity"},":badminton:":{"sn":":badminton:","cp":"1f3f8","sns":[],"c":"activity"},":baseball:":{"sn":":baseball:","cp":"26be","sns":[],"c":"activity"},":basketball:":{"sn":":basketball:","cp":"1f3c0","sns":[],"c":"activity"},":bikini:":{"sn":":bikini:","cp":"1f459","sns":[],"c":"activity"},":bow_and_arrow:":{"sn":":bow_and_arrow:","cp":"1f3f9","sns":[":archery:"],"c":"activity"},":bowling:":{"sn":":bowling:","cp":"1f3b3","sns":[],"c":"activity"},":boxing_glove:":{"sn":":boxing_glove:","cp":"1f94a","sns":[":boxing_gloves:"],"c":"activity"},":circus_tent:":{"sn":":circus_tent:","cp":"1f3aa","sns":[],"c":"activity"},":clapper:":{"sn":":clapper:","cp":"1f3ac","sns":[],"c":"activity"},":cricket_game:":{"sn":":cricket_game:","cp":"1f3cf","sns":[":cricket_bat_ball:"],"c":"activity"},":curling_stone:":{"sn":":curling_stone:","cp":"1f94c","sns":[],"c":"activity"},":dart:":{"sn":":dart:","cp":"1f3af","sns":[],"c":"activity"},":drum:":{"sn":":drum:","cp":"1f941","sns":[":drum_with_drumsticks:"],"c":"activity"},":field_hockey:":{"sn":":field_hockey:","cp":"1f3d1","sns":[],"c":"activity"},":first_place:":{"sn":":first_place:","cp":"1f947","sns":[":first_place_medal:"],"c":"activity"},":fishing_pole_and_fish:":{"sn":":fishing_pole_and_fish:","cp":"1f3a3","sns":[],"c":"activity"},":football:":{"sn":":football:","cp":"1f3c8","sns":[],"c":"activity"},":game_die:":{"sn":":game_die:","cp":"1f3b2","sns":[],"c":"activity"},":goal:":{"sn":":goal:","cp":"1f945","sns":[":goal_net:"],"c":"activity"},":golf:":{"sn":":golf:","cp":"26f3","sns":[],"c":"activity"},":guitar:":{"sn":":guitar:","cp":"1f3b8","sns":[],"c":"activity"},":headphones:":{"sn":":headphones:","cp":"1f3a7","sns":[],"c":"activity"},":hockey:":{"sn":":hockey:","cp":"1f3d2","sns":[],"c":"activity"},":horse_racing:":{"sn":":horse_racing:","cp":"1f3c7","sns":[],"c":"activity"},":horse_racing_tone1:":{"sn":":horse_racing_tone1:","cp":"1f3c7-1f3fb","sns":[],"c":"activity"},":horse_racing_tone2:":{"sn":":horse_racing_tone2:","cp":"1f3c7-1f3fc","sns":[],"c":"activity"},":horse_racing_tone3:":{"sn":":horse_racing_tone3:","cp":"1f3c7-1f3fd","sns":[],"c":"activity"},":horse_racing_tone4:":{"sn":":horse_racing_tone4:","cp":"1f3c7-1f3fe","sns":[],"c":"activity"},":horse_racing_tone5:":{"sn":":horse_racing_tone5:","cp":"1f3c7-1f3ff","sns":[],"c":"activity"},":ice_skate:":{"sn":":ice_skate:","cp":"26f8","sns":[],"c":"activity"},":man_biking:":{"sn":":man_biking:","cp":"1f6b4-200d-2642-fe0f","sns":[],"c":"activity"},":man_biking_tone1:":{"sn":":man_biking_tone1:","cp":"1f6b4-1f3fb-200d-2642-fe0f","sns":[":man_biking_light_skin_tone:"],"c":"activity"},":man_biking_tone2:":{"sn":":man_biking_tone2:","cp":"1f6b4-1f3fc-200d-2642-fe0f","sns":[":man_biking_medium_light_skin_tone:"],"c":"activity"},":man_biking_tone3:":{"sn":":man_biking_tone3:","cp":"1f6b4-1f3fd-200d-2642-fe0f","sns":[":man_biking_medium_skin_tone:"],"c":"activity"},":man_biking_tone4:":{"sn":":man_biking_tone4:","cp":"1f6b4-1f3fe-200d-2642-fe0f","sns":[":man_biking_medium_dark_skin_tone:"],"c":"activity"},":man_biking_tone5:":{"sn":":man_biking_tone5:","cp":"1f6b4-1f3ff-200d-2642-fe0f","sns":[":man_biking_dark_skin_tone:"],"c":"activity"},":man_bouncing_ball:":{"sn":":man_bouncing_ball:","cp":"26f9-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_bouncing_ball_tone1:":{"sn":":man_bouncing_ball_tone1:","cp":"26f9-1f3fb-200d-2642-fe0f","sns":[":man_bouncing_ball_light_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone2:":{"sn":":man_bouncing_ball_tone2:","cp":"26f9-1f3fc-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_light_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone3:":{"sn":":man_bouncing_ball_tone3:","cp":"26f9-1f3fd-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone4:":{"sn":":man_bouncing_ball_tone4:","cp":"26f9-1f3fe-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_dark_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone5:":{"sn":":man_bouncing_ball_tone5:","cp":"26f9-1f3ff-200d-2642-fe0f","sns":[":man_bouncing_ball_dark_skin_tone:"],"c":"activity"},":man_cartwheeling:":{"sn":":man_cartwheeling:","cp":"1f938-200d-2642-fe0f","sns":[],"c":"activity"},":man_cartwheeling_tone1:":{"sn":":man_cartwheeling_tone1:","cp":"1f938-1f3fb-200d-2642-fe0f","sns":[":man_cartwheeling_light_skin_tone:"],"c":"activity"},":man_cartwheeling_tone2:":{"sn":":man_cartwheeling_tone2:","cp":"1f938-1f3fc-200d-2642-fe0f","sns":[":man_cartwheeling_medium_light_skin_tone:"],"c":"activity"},":man_cartwheeling_tone3:":{"sn":":man_cartwheeling_tone3:","cp":"1f938-1f3fd-200d-2642-fe0f","sns":[":man_cartwheeling_medium_skin_tone:"],"c":"activity"},":man_cartwheeling_tone4:":{"sn":":man_cartwheeling_tone4:","cp":"1f938-1f3fe-200d-2642-fe0f","sns":[":man_cartwheeling_medium_dark_skin_tone:"],"c":"activity"},":man_cartwheeling_tone5:":{"sn":":man_cartwheeling_tone5:","cp":"1f938-1f3ff-200d-2642-fe0f","sns":[":man_cartwheeling_dark_skin_tone:"],"c":"activity"},":man_climbing:":{"sn":":man_climbing:","cp":"1f9d7-200d-2642-fe0f","sns":[],"c":"activity"},":man_climbing_tone1:":{"sn":":man_climbing_tone1:","cp":"1f9d7-1f3fb-200d-2642-fe0f","sns":[":man_climbing_light_skin_tone:"],"c":"activity"},":man_climbing_tone2:":{"sn":":man_climbing_tone2:","cp":"1f9d7-1f3fc-200d-2642-fe0f","sns":[":man_climbing_medium_light_skin_tone:"],"c":"activity"},":man_climbing_tone3:":{"sn":":man_climbing_tone3:","cp":"1f9d7-1f3fd-200d-2642-fe0f","sns":[":man_climbing_medium_skin_tone:"],"c":"activity"},":man_climbing_tone4:":{"sn":":man_climbing_tone4:","cp":"1f9d7-1f3fe-200d-2642-fe0f","sns":[":man_climbing_medium_dark_skin_tone:"],"c":"activity"},":man_climbing_tone5:":{"sn":":man_climbing_tone5:","cp":"1f9d7-1f3ff-200d-2642-fe0f","sns":[":man_climbing_dark_skin_tone:"],"c":"activity"},":man_golfing:":{"sn":":man_golfing:","cp":"1f3cc-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_golfing_tone1:":{"sn":":man_golfing_tone1:","cp":"1f3cc-1f3fb-200d-2642-fe0f","sns":[":man_golfing_light_skin_tone:"],"c":"activity"},":man_golfing_tone2:":{"sn":":man_golfing_tone2:","cp":"1f3cc-1f3fc-200d-2642-fe0f","sns":[":man_golfing_medium_light_skin_tone:"],"c":"activity"},":man_golfing_tone3:":{"sn":":man_golfing_tone3:","cp":"1f3cc-1f3fd-200d-2642-fe0f","sns":[":man_golfing_medium_skin_tone:"],"c":"activity"},":man_golfing_tone4:":{"sn":":man_golfing_tone4:","cp":"1f3cc-1f3fe-200d-2642-fe0f","sns":[":man_golfing_medium_dark_skin_tone:"],"c":"activity"},":man_golfing_tone5:":{"sn":":man_golfing_tone5:","cp":"1f3cc-1f3ff-200d-2642-fe0f","sns":[":man_golfing_dark_skin_tone:"],"c":"activity"},":man_in_lotus_position:":{"sn":":man_in_lotus_position:","cp":"1f9d8-200d-2642-fe0f","sns":[],"c":"activity"},":man_in_lotus_position_tone1:":{"sn":":man_in_lotus_position_tone1:","cp":"1f9d8-1f3fb-200d-2642-fe0f","sns":[":man_in_lotus_position_light_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone2:":{"sn":":man_in_lotus_position_tone2:","cp":"1f9d8-1f3fc-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone3:":{"sn":":man_in_lotus_position_tone3:","cp":"1f9d8-1f3fd-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone4:":{"sn":":man_in_lotus_position_tone4:","cp":"1f9d8-1f3fe-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone5:":{"sn":":man_in_lotus_position_tone5:","cp":"1f9d8-1f3ff-200d-2642-fe0f","sns":[":man_in_lotus_position_dark_skin_tone:"],"c":"activity"},":man_juggling:":{"sn":":man_juggling:","cp":"1f939-200d-2642-fe0f","sns":[],"c":"activity"},":man_juggling_tone1:":{"sn":":man_juggling_tone1:","cp":"1f939-1f3fb-200d-2642-fe0f","sns":[":man_juggling_light_skin_tone:"],"c":"activity"},":man_juggling_tone2:":{"sn":":man_juggling_tone2:","cp":"1f939-1f3fc-200d-2642-fe0f","sns":[":man_juggling_medium_light_skin_tone:"],"c":"activity"},":man_juggling_tone3:":{"sn":":man_juggling_tone3:","cp":"1f939-1f3fd-200d-2642-fe0f","sns":[":man_juggling_medium_skin_tone:"],"c":"activity"},":man_juggling_tone4:":{"sn":":man_juggling_tone4:","cp":"1f939-1f3fe-200d-2642-fe0f","sns":[":man_juggling_medium_dark_skin_tone:"],"c":"activity"},":man_juggling_tone5:":{"sn":":man_juggling_tone5:","cp":"1f939-1f3ff-200d-2642-fe0f","sns":[":man_juggling_dark_skin_tone:"],"c":"activity"},":man_lifting_weights:":{"sn":":man_lifting_weights:","cp":"1f3cb-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_lifting_weights_tone1:":{"sn":":man_lifting_weights_tone1:","cp":"1f3cb-1f3fb-200d-2642-fe0f","sns":[":man_lifting_weights_light_skin_tone:"],"c":"activity"},":man_lifting_weights_tone2:":{"sn":":man_lifting_weights_tone2:","cp":"1f3cb-1f3fc-200d-2642-fe0f","sns":[":man_lifting_weights_medium_light_skin_tone:"],"c":"activity"},":man_lifting_weights_tone3:":{"sn":":man_lifting_weights_tone3:","cp":"1f3cb-1f3fd-200d-2642-fe0f","sns":[":man_lifting_weights_medium_skin_tone:"],"c":"activity"},":man_lifting_weights_tone4:":{"sn":":man_lifting_weights_tone4:","cp":"1f3cb-1f3fe-200d-2642-fe0f","sns":[":man_lifting_weights_medium_dark_skin_tone:"],"c":"activity"},":man_lifting_weights_tone5:":{"sn":":man_lifting_weights_tone5:","cp":"1f3cb-1f3ff-200d-2642-fe0f","sns":[":man_lifting_weights_dark_skin_tone:"],"c":"activity"},":man_mountain_biking:":{"sn":":man_mountain_biking:","cp":"1f6b5-200d-2642-fe0f","sns":[],"c":"activity"},":man_mountain_biking_tone1:":{"sn":":man_mountain_biking_tone1:","cp":"1f6b5-1f3fb-200d-2642-fe0f","sns":[":man_mountain_biking_light_skin_tone:"],"c":"activity"},":man_mountain_biking_tone2:":{"sn":":man_mountain_biking_tone2:","cp":"1f6b5-1f3fc-200d-2642-fe0f","sns":[":man_mountain_biking_medium_light_skin_tone:"],"c":"activity"},":man_mountain_biking_tone3:":{"sn":":man_mountain_biking_tone3:","cp":"1f6b5-1f3fd-200d-2642-fe0f","sns":[":man_mountain_biking_medium_skin_tone:"],"c":"activity"},":man_mountain_biking_tone4:":{"sn":":man_mountain_biking_tone4:","cp":"1f6b5-1f3fe-200d-2642-fe0f","sns":[":man_mountain_biking_medium_dark_skin_tone:"],"c":"activity"},":man_mountain_biking_tone5:":{"sn":":man_mountain_biking_tone5:","cp":"1f6b5-1f3ff-200d-2642-fe0f","sns":[":man_mountain_biking_dark_skin_tone:"],"c":"activity"},":man_playing_handball:":{"sn":":man_playing_handball:","cp":"1f93e-200d-2642-fe0f","sns":[],"c":"activity"},":man_playing_handball_tone1:":{"sn":":man_playing_handball_tone1:","cp":"1f93e-1f3fb-200d-2642-fe0f","sns":[":man_playing_handball_light_skin_tone:"],"c":"activity"},":man_playing_handball_tone2:":{"sn":":man_playing_handball_tone2:","cp":"1f93e-1f3fc-200d-2642-fe0f","sns":[":man_playing_handball_medium_light_skin_tone:"],"c":"activity"},":man_playing_handball_tone3:":{"sn":":man_playing_handball_tone3:","cp":"1f93e-1f3fd-200d-2642-fe0f","sns":[":man_playing_handball_medium_skin_tone:"],"c":"activity"},":man_playing_handball_tone4:":{"sn":":man_playing_handball_tone4:","cp":"1f93e-1f3fe-200d-2642-fe0f","sns":[":man_playing_handball_medium_dark_skin_tone:"],"c":"activity"},":man_playing_handball_tone5:":{"sn":":man_playing_handball_tone5:","cp":"1f93e-1f3ff-200d-2642-fe0f","sns":[":man_playing_handball_dark_skin_tone:"],"c":"activity"},":man_playing_water_polo:":{"sn":":man_playing_water_polo:","cp":"1f93d-200d-2642-fe0f","sns":[],"c":"activity"},":man_playing_water_polo_tone1:":{"sn":":man_playing_water_polo_tone1:","cp":"1f93d-1f3fb-200d-2642-fe0f","sns":[":man_playing_water_polo_light_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone2:":{"sn":":man_playing_water_polo_tone2:","cp":"1f93d-1f3fc-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_light_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone3:":{"sn":":man_playing_water_polo_tone3:","cp":"1f93d-1f3fd-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone4:":{"sn":":man_playing_water_polo_tone4:","cp":"1f93d-1f3fe-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_dark_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone5:":{"sn":":man_playing_water_polo_tone5:","cp":"1f93d-1f3ff-200d-2642-fe0f","sns":[":man_playing_water_polo_dark_skin_tone:"],"c":"activity"},":man_rowing_boat:":{"sn":":man_rowing_boat:","cp":"1f6a3-200d-2642-fe0f","sns":[],"c":"activity"},":man_rowing_boat_tone1:":{"sn":":man_rowing_boat_tone1:","cp":"1f6a3-1f3fb-200d-2642-fe0f","sns":[":man_rowing_boat_light_skin_tone:"],"c":"activity"},":man_rowing_boat_tone2:":{"sn":":man_rowing_boat_tone2:","cp":"1f6a3-1f3fc-200d-2642-fe0f","sns":[":man_rowing_boat_medium_light_skin_tone:"],"c":"activity"},":man_rowing_boat_tone3:":{"sn":":man_rowing_boat_tone3:","cp":"1f6a3-1f3fd-200d-2642-fe0f","sns":[":man_rowing_boat_medium_skin_tone:"],"c":"activity"},":man_rowing_boat_tone4:":{"sn":":man_rowing_boat_tone4:","cp":"1f6a3-1f3fe-200d-2642-fe0f","sns":[":man_rowing_boat_medium_dark_skin_tone:"],"c":"activity"},":man_rowing_boat_tone5:":{"sn":":man_rowing_boat_tone5:","cp":"1f6a3-1f3ff-200d-2642-fe0f","sns":[":man_rowing_boat_dark_skin_tone:"],"c":"activity"},":man_surfing:":{"sn":":man_surfing:","cp":"1f3c4-200d-2642-fe0f","sns":[],"c":"activity"},":man_surfing_tone1:":{"sn":":man_surfing_tone1:","cp":"1f3c4-1f3fb-200d-2642-fe0f","sns":[":man_surfing_light_skin_tone:"],"c":"activity"},":man_surfing_tone2:":{"sn":":man_surfing_tone2:","cp":"1f3c4-1f3fc-200d-2642-fe0f","sns":[":man_surfing_medium_light_skin_tone:"],"c":"activity"},":man_surfing_tone3:":{"sn":":man_surfing_tone3:","cp":"1f3c4-1f3fd-200d-2642-fe0f","sns":[":man_surfing_medium_skin_tone:"],"c":"activity"},":man_surfing_tone4:":{"sn":":man_surfing_tone4:","cp":"1f3c4-1f3fe-200d-2642-fe0f","sns":[":man_surfing_medium_dark_skin_tone:"],"c":"activity"},":man_surfing_tone5:":{"sn":":man_surfing_tone5:","cp":"1f3c4-1f3ff-200d-2642-fe0f","sns":[":man_surfing_dark_skin_tone:"],"c":"activity"},":man_swimming:":{"sn":":man_swimming:","cp":"1f3ca-200d-2642-fe0f","sns":[],"c":"activity"},":man_swimming_tone1:":{"sn":":man_swimming_tone1:","cp":"1f3ca-1f3fb-200d-2642-fe0f","sns":[":man_swimming_light_skin_tone:"],"c":"activity"},":man_swimming_tone2:":{"sn":":man_swimming_tone2:","cp":"1f3ca-1f3fc-200d-2642-fe0f","sns":[":man_swimming_medium_light_skin_tone:"],"c":"activity"},":man_swimming_tone3:":{"sn":":man_swimming_tone3:","cp":"1f3ca-1f3fd-200d-2642-fe0f","sns":[":man_swimming_medium_skin_tone:"],"c":"activity"},":man_swimming_tone4:":{"sn":":man_swimming_tone4:","cp":"1f3ca-1f3fe-200d-2642-fe0f","sns":[":man_swimming_medium_dark_skin_tone:"],"c":"activity"},":man_swimming_tone5:":{"sn":":man_swimming_tone5:","cp":"1f3ca-1f3ff-200d-2642-fe0f","sns":[":man_swimming_dark_skin_tone:"],"c":"activity"},":martial_arts_uniform:":{"sn":":martial_arts_uniform:","cp":"1f94b","sns":[":karate_uniform:"],"c":"activity"},":medal:":{"sn":":medal:","cp":"1f3c5","sns":[":sports_medal:"],"c":"activity"},":men_wrestling:":{"sn":":men_wrestling:","cp":"1f93c-200d-2642-fe0f","sns":[],"c":"activity"},":microphone:":{"sn":":microphone:","cp":"1f3a4","sns":[],"c":"activity"},":military_medal:":{"sn":":military_medal:","cp":"1f396","sns":[],"c":"activity"},":musical_keyboard:":{"sn":":musical_keyboard:","cp":"1f3b9","sns":[],"c":"activity"},":musical_score:":{"sn":":musical_score:","cp":"1f3bc","sns":[],"c":"activity"},":people_wrestling:":{"sn":":people_wrestling:","cp":"1f93c","sns":[":wrestlers:",":wrestling:"],"c":"activity"},":performing_arts:":{"sn":":performing_arts:","cp":"1f3ad","sns":[],"c":"activity"},":person_biking:":{"sn":":person_biking:","cp":"1f6b4","sns":[":bicyclist:"],"c":"activity"},":person_biking_tone1:":{"sn":":person_biking_tone1:","cp":"1f6b4-1f3fb","sns":[":bicyclist_tone1:"],"c":"activity"},":person_biking_tone2:":{"sn":":person_biking_tone2:","cp":"1f6b4-1f3fc","sns":[":bicyclist_tone2:"],"c":"activity"},":person_biking_tone3:":{"sn":":person_biking_tone3:","cp":"1f6b4-1f3fd","sns":[":bicyclist_tone3:"],"c":"activity"},":person_biking_tone4:":{"sn":":person_biking_tone4:","cp":"1f6b4-1f3fe","sns":[":bicyclist_tone4:"],"c":"activity"},":person_biking_tone5:":{"sn":":person_biking_tone5:","cp":"1f6b4-1f3ff","sns":[":bicyclist_tone5:"],"c":"activity"},":person_bouncing_ball:":{"sn":":person_bouncing_ball:","cp":"26f9","sns":[":basketball_player:",":person_with_ball:"],"c":"activity"},":person_bouncing_ball_tone1:":{"sn":":person_bouncing_ball_tone1:","cp":"26f9-1f3fb","sns":[":basketball_player_tone1:",":person_with_ball_tone1:"],"c":"activity"},":person_bouncing_ball_tone2:":{"sn":":person_bouncing_ball_tone2:","cp":"26f9-1f3fc","sns":[":basketball_player_tone2:",":person_with_ball_tone2:"],"c":"activity"},":person_bouncing_ball_tone3:":{"sn":":person_bouncing_ball_tone3:","cp":"26f9-1f3fd","sns":[":basketball_player_tone3:",":person_with_ball_tone3:"],"c":"activity"},":person_bouncing_ball_tone4:":{"sn":":person_bouncing_ball_tone4:","cp":"26f9-1f3fe","sns":[":basketball_player_tone4:",":person_with_ball_tone4:"],"c":"activity"},":person_bouncing_ball_tone5:":{"sn":":person_bouncing_ball_tone5:","cp":"26f9-1f3ff","sns":[":basketball_player_tone5:",":person_with_ball_tone5:"],"c":"activity"},":person_climbing:":{"sn":":person_climbing:","cp":"1f9d7","sns":[],"c":"activity"},":person_climbing_tone1:":{"sn":":person_climbing_tone1:","cp":"1f9d7-1f3fb","sns":[":person_climbing_light_skin_tone:"],"c":"activity"},":person_climbing_tone2:":{"sn":":person_climbing_tone2:","cp":"1f9d7-1f3fc","sns":[":person_climbing_medium_light_skin_tone:"],"c":"activity"},":person_climbing_tone3:":{"sn":":person_climbing_tone3:","cp":"1f9d7-1f3fd","sns":[":person_climbing_medium_skin_tone:"],"c":"activity"},":person_climbing_tone4:":{"sn":":person_climbing_tone4:","cp":"1f9d7-1f3fe","sns":[":person_climbing_medium_dark_skin_tone:"],"c":"activity"},":person_climbing_tone5:":{"sn":":person_climbing_tone5:","cp":"1f9d7-1f3ff","sns":[":person_climbing_dark_skin_tone:"],"c":"activity"},":person_doing_cartwheel:":{"sn":":person_doing_cartwheel:","cp":"1f938","sns":[":cartwheel:"],"c":"activity"},":person_doing_cartwheel_tone1:":{"sn":":person_doing_cartwheel_tone1:","cp":"1f938-1f3fb","sns":[":cartwheel_tone1:"],"c":"activity"},":person_doing_cartwheel_tone2:":{"sn":":person_doing_cartwheel_tone2:","cp":"1f938-1f3fc","sns":[":cartwheel_tone2:"],"c":"activity"},":person_doing_cartwheel_tone3:":{"sn":":person_doing_cartwheel_tone3:","cp":"1f938-1f3fd","sns":[":cartwheel_tone3:"],"c":"activity"},":person_doing_cartwheel_tone4:":{"sn":":person_doing_cartwheel_tone4:","cp":"1f938-1f3fe","sns":[":cartwheel_tone4:"],"c":"activity"},":person_doing_cartwheel_tone5:":{"sn":":person_doing_cartwheel_tone5:","cp":"1f938-1f3ff","sns":[":cartwheel_tone5:"],"c":"activity"},":person_fencing:":{"sn":":person_fencing:","cp":"1f93a","sns":[":fencer:",":fencing:"],"c":"activity"},":person_golfing:":{"sn":":person_golfing:","cp":"1f3cc","sns":[":golfer:"],"c":"activity"},":person_golfing_tone1:":{"sn":":person_golfing_tone1:","cp":"1f3cc-1f3fb","sns":[":person_golfing_light_skin_tone:"],"c":"activity"},":person_golfing_tone2:":{"sn":":person_golfing_tone2:","cp":"1f3cc-1f3fc","sns":[":person_golfing_medium_light_skin_tone:"],"c":"activity"},":person_golfing_tone3:":{"sn":":person_golfing_tone3:","cp":"1f3cc-1f3fd","sns":[":person_golfing_medium_skin_tone:"],"c":"activity"},":person_golfing_tone4:":{"sn":":person_golfing_tone4:","cp":"1f3cc-1f3fe","sns":[":person_golfing_medium_dark_skin_tone:"],"c":"activity"},":person_golfing_tone5:":{"sn":":person_golfing_tone5:","cp":"1f3cc-1f3ff","sns":[":person_golfing_dark_skin_tone:"],"c":"activity"},":person_in_lotus_position:":{"sn":":person_in_lotus_position:","cp":"1f9d8","sns":[],"c":"activity"},":person_in_lotus_position_tone1:":{"sn":":person_in_lotus_position_tone1:","cp":"1f9d8-1f3fb","sns":[":person_in_lotus_position_light_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone2:":{"sn":":person_in_lotus_position_tone2:","cp":"1f9d8-1f3fc","sns":[":person_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone3:":{"sn":":person_in_lotus_position_tone3:","cp":"1f9d8-1f3fd","sns":[":person_in_lotus_position_medium_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone4:":{"sn":":person_in_lotus_position_tone4:","cp":"1f9d8-1f3fe","sns":[":person_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone5:":{"sn":":person_in_lotus_position_tone5:","cp":"1f9d8-1f3ff","sns":[":person_in_lotus_position_dark_skin_tone:"],"c":"activity"},":person_juggling:":{"sn":":person_juggling:","cp":"1f939","sns":[":juggling:",":juggler:"],"c":"activity"},":person_juggling_tone1:":{"sn":":person_juggling_tone1:","cp":"1f939-1f3fb","sns":[":juggling_tone1:",":juggler_tone1:"],"c":"activity"},":person_juggling_tone2:":{"sn":":person_juggling_tone2:","cp":"1f939-1f3fc","sns":[":juggling_tone2:",":juggler_tone2:"],"c":"activity"},":person_juggling_tone3:":{"sn":":person_juggling_tone3:","cp":"1f939-1f3fd","sns":[":juggling_tone3:",":juggler_tone3:"],"c":"activity"},":person_juggling_tone4:":{"sn":":person_juggling_tone4:","cp":"1f939-1f3fe","sns":[":juggling_tone4:",":juggler_tone4:"],"c":"activity"},":person_juggling_tone5:":{"sn":":person_juggling_tone5:","cp":"1f939-1f3ff","sns":[":juggling_tone5:",":juggler_tone5:"],"c":"activity"},":person_lifting_weights:":{"sn":":person_lifting_weights:","cp":"1f3cb","sns":[":lifter:",":weight_lifter:"],"c":"activity"},":person_lifting_weights_tone1:":{"sn":":person_lifting_weights_tone1:","cp":"1f3cb-1f3fb","sns":[":lifter_tone1:",":weight_lifter_tone1:"],"c":"activity"},":person_lifting_weights_tone2:":{"sn":":person_lifting_weights_tone2:","cp":"1f3cb-1f3fc","sns":[":lifter_tone2:",":weight_lifter_tone2:"],"c":"activity"},":person_lifting_weights_tone3:":{"sn":":person_lifting_weights_tone3:","cp":"1f3cb-1f3fd","sns":[":lifter_tone3:",":weight_lifter_tone3:"],"c":"activity"},":person_lifting_weights_tone4:":{"sn":":person_lifting_weights_tone4:","cp":"1f3cb-1f3fe","sns":[":lifter_tone4:",":weight_lifter_tone4:"],"c":"activity"},":person_lifting_weights_tone5:":{"sn":":person_lifting_weights_tone5:","cp":"1f3cb-1f3ff","sns":[":lifter_tone5:",":weight_lifter_tone5:"],"c":"activity"},":person_mountain_biking:":{"sn":":person_mountain_biking:","cp":"1f6b5","sns":[":mountain_bicyclist:"],"c":"activity"},":person_mountain_biking_tone1:":{"sn":":person_mountain_biking_tone1:","cp":"1f6b5-1f3fb","sns":[":mountain_bicyclist_tone1:"],"c":"activity"},":person_mountain_biking_tone2:":{"sn":":person_mountain_biking_tone2:","cp":"1f6b5-1f3fc","sns":[":mountain_bicyclist_tone2:"],"c":"activity"},":person_mountain_biking_tone3:":{"sn":":person_mountain_biking_tone3:","cp":"1f6b5-1f3fd","sns":[":mountain_bicyclist_tone3:"],"c":"activity"},":person_mountain_biking_tone4:":{"sn":":person_mountain_biking_tone4:","cp":"1f6b5-1f3fe","sns":[":mountain_bicyclist_tone4:"],"c":"activity"},":person_mountain_biking_tone5:":{"sn":":person_mountain_biking_tone5:","cp":"1f6b5-1f3ff","sns":[":mountain_bicyclist_tone5:"],"c":"activity"},":person_playing_handball:":{"sn":":person_playing_handball:","cp":"1f93e","sns":[":handball:"],"c":"activity"},":person_playing_handball_tone1:":{"sn":":person_playing_handball_tone1:","cp":"1f93e-1f3fb","sns":[":handball_tone1:"],"c":"activity"},":person_playing_handball_tone2:":{"sn":":person_playing_handball_tone2:","cp":"1f93e-1f3fc","sns":[":handball_tone2:"],"c":"activity"},":person_playing_handball_tone3:":{"sn":":person_playing_handball_tone3:","cp":"1f93e-1f3fd","sns":[":handball_tone3:"],"c":"activity"},":person_playing_handball_tone4:":{"sn":":person_playing_handball_tone4:","cp":"1f93e-1f3fe","sns":[":handball_tone4:"],"c":"activity"},":person_playing_handball_tone5:":{"sn":":person_playing_handball_tone5:","cp":"1f93e-1f3ff","sns":[":handball_tone5:"],"c":"activity"},":person_playing_water_polo:":{"sn":":person_playing_water_polo:","cp":"1f93d","sns":[":water_polo:"],"c":"activity"},":person_playing_water_polo_tone1:":{"sn":":person_playing_water_polo_tone1:","cp":"1f93d-1f3fb","sns":[":water_polo_tone1:"],"c":"activity"},":person_playing_water_polo_tone2:":{"sn":":person_playing_water_polo_tone2:","cp":"1f93d-1f3fc","sns":[":water_polo_tone2:"],"c":"activity"},":person_playing_water_polo_tone3:":{"sn":":person_playing_water_polo_tone3:","cp":"1f93d-1f3fd","sns":[":water_polo_tone3:"],"c":"activity"},":person_playing_water_polo_tone4:":{"sn":":person_playing_water_polo_tone4:","cp":"1f93d-1f3fe","sns":[":water_polo_tone4:"],"c":"activity"},":person_playing_water_polo_tone5:":{"sn":":person_playing_water_polo_tone5:","cp":"1f93d-1f3ff","sns":[":water_polo_tone5:"],"c":"activity"},":person_rowing_boat:":{"sn":":person_rowing_boat:","cp":"1f6a3","sns":[":rowboat:"],"c":"activity"},":person_rowing_boat_tone1:":{"sn":":person_rowing_boat_tone1:","cp":"1f6a3-1f3fb","sns":[":rowboat_tone1:"],"c":"activity"},":person_rowing_boat_tone2:":{"sn":":person_rowing_boat_tone2:","cp":"1f6a3-1f3fc","sns":[":rowboat_tone2:"],"c":"activity"},":person_rowing_boat_tone3:":{"sn":":person_rowing_boat_tone3:","cp":"1f6a3-1f3fd","sns":[":rowboat_tone3:"],"c":"activity"},":person_rowing_boat_tone4:":{"sn":":person_rowing_boat_tone4:","cp":"1f6a3-1f3fe","sns":[":rowboat_tone4:"],"c":"activity"},":person_rowing_boat_tone5:":{"sn":":person_rowing_boat_tone5:","cp":"1f6a3-1f3ff","sns":[":rowboat_tone5:"],"c":"activity"},":person_surfing:":{"sn":":person_surfing:","cp":"1f3c4","sns":[":surfer:"],"c":"activity"},":person_surfing_tone1:":{"sn":":person_surfing_tone1:","cp":"1f3c4-1f3fb","sns":[":surfer_tone1:"],"c":"activity"},":person_surfing_tone2:":{"sn":":person_surfing_tone2:","cp":"1f3c4-1f3fc","sns":[":surfer_tone2:"],"c":"activity"},":person_surfing_tone3:":{"sn":":person_surfing_tone3:","cp":"1f3c4-1f3fd","sns":[":surfer_tone3:"],"c":"activity"},":person_surfing_tone4:":{"sn":":person_surfing_tone4:","cp":"1f3c4-1f3fe","sns":[":surfer_tone4:"],"c":"activity"},":person_surfing_tone5:":{"sn":":person_surfing_tone5:","cp":"1f3c4-1f3ff","sns":[":surfer_tone5:"],"c":"activity"},":person_swimming:":{"sn":":person_swimming:","cp":"1f3ca","sns":[":swimmer:"],"c":"activity"},":person_swimming_tone1:":{"sn":":person_swimming_tone1:","cp":"1f3ca-1f3fb","sns":[":swimmer_tone1:"],"c":"activity"},":person_swimming_tone2:":{"sn":":person_swimming_tone2:","cp":"1f3ca-1f3fc","sns":[":swimmer_tone2:"],"c":"activity"},":person_swimming_tone3:":{"sn":":person_swimming_tone3:","cp":"1f3ca-1f3fd","sns":[":swimmer_tone3:"],"c":"activity"},":person_swimming_tone4:":{"sn":":person_swimming_tone4:","cp":"1f3ca-1f3fe","sns":[":swimmer_tone4:"],"c":"activity"},":person_swimming_tone5:":{"sn":":person_swimming_tone5:","cp":"1f3ca-1f3ff","sns":[":swimmer_tone5:"],"c":"activity"},":ping_pong:":{"sn":":ping_pong:","cp":"1f3d3","sns":[":table_tennis:"],"c":"activity"},":reminder_ribbon:":{"sn":":reminder_ribbon:","cp":"1f397","sns":[],"c":"activity"},":rosette:":{"sn":":rosette:","cp":"1f3f5","sns":[],"c":"activity"},":rugby_football:":{"sn":":rugby_football:","cp":"1f3c9","sns":[],"c":"activity"},":running_shirt_with_sash:":{"sn":":running_shirt_with_sash:","cp":"1f3bd","sns":[],"c":"activity"},":saxophone:":{"sn":":saxophone:","cp":"1f3b7","sns":[],"c":"activity"},":second_place:":{"sn":":second_place:","cp":"1f948","sns":[":second_place_medal:"],"c":"activity"},":ski:":{"sn":":ski:","cp":"1f3bf","sns":[],"c":"activity"},":skier:":{"sn":":skier:","cp":"26f7","sns":[],"c":"activity"},":sled:":{"sn":":sled:","cp":"1f6f7","sns":[],"c":"activity"},":slot_machine:":{"sn":":slot_machine:","cp":"1f3b0","sns":[],"c":"activity"},":snowboarder:":{"sn":":snowboarder:","cp":"1f3c2","sns":[],"c":"activity"},":snowboarder_tone1:":{"sn":":snowboarder_tone1:","cp":"1f3c2-1f3fb","sns":[":snowboarder_light_skin_tone:"],"c":"activity"},":snowboarder_tone2:":{"sn":":snowboarder_tone2:","cp":"1f3c2-1f3fc","sns":[":snowboarder_medium_light_skin_tone:"],"c":"activity"},":snowboarder_tone3:":{"sn":":snowboarder_tone3:","cp":"1f3c2-1f3fd","sns":[":snowboarder_medium_skin_tone:"],"c":"activity"},":snowboarder_tone4:":{"sn":":snowboarder_tone4:","cp":"1f3c2-1f3fe","sns":[":snowboarder_medium_dark_skin_tone:"],"c":"activity"},":snowboarder_tone5:":{"sn":":snowboarder_tone5:","cp":"1f3c2-1f3ff","sns":[":snowboarder_dark_skin_tone:"],"c":"activity"},":soccer:":{"sn":":soccer:","cp":"26bd","sns":[],"c":"activity"},":tennis:":{"sn":":tennis:","cp":"1f3be","sns":[],"c":"activity"},":third_place:":{"sn":":third_place:","cp":"1f949","sns":[":third_place_medal:"],"c":"activity"},":ticket:":{"sn":":ticket:","cp":"1f3ab","sns":[],"c":"activity"},":tickets:":{"sn":":tickets:","cp":"1f39f","sns":[":admission_tickets:"],"c":"activity"},":trophy:":{"sn":":trophy:","cp":"1f3c6","sns":[],"c":"activity"},":trumpet:":{"sn":":trumpet:","cp":"1f3ba","sns":[],"c":"activity"},":video_game:":{"sn":":video_game:","cp":"1f3ae","sns":[],"c":"activity"},":violin:":{"sn":":violin:","cp":"1f3bb","sns":[],"c":"activity"},":volleyball:":{"sn":":volleyball:","cp":"1f3d0","sns":[],"c":"activity"},":woman_biking:":{"sn":":woman_biking:","cp":"1f6b4-200d-2640-fe0f","sns":[],"c":"activity"},":woman_biking_tone1:":{"sn":":woman_biking_tone1:","cp":"1f6b4-1f3fb-200d-2640-fe0f","sns":[":woman_biking_light_skin_tone:"],"c":"activity"},":woman_biking_tone2:":{"sn":":woman_biking_tone2:","cp":"1f6b4-1f3fc-200d-2640-fe0f","sns":[":woman_biking_medium_light_skin_tone:"],"c":"activity"},":woman_biking_tone3:":{"sn":":woman_biking_tone3:","cp":"1f6b4-1f3fd-200d-2640-fe0f","sns":[":woman_biking_medium_skin_tone:"],"c":"activity"},":woman_biking_tone4:":{"sn":":woman_biking_tone4:","cp":"1f6b4-1f3fe-200d-2640-fe0f","sns":[":woman_biking_medium_dark_skin_tone:"],"c":"activity"},":woman_biking_tone5:":{"sn":":woman_biking_tone5:","cp":"1f6b4-1f3ff-200d-2640-fe0f","sns":[":woman_biking_dark_skin_tone:"],"c":"activity"},":woman_bouncing_ball:":{"sn":":woman_bouncing_ball:","cp":"26f9-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_bouncing_ball_tone1:":{"sn":":woman_bouncing_ball_tone1:","cp":"26f9-1f3fb-200d-2640-fe0f","sns":[":woman_bouncing_ball_light_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone2:":{"sn":":woman_bouncing_ball_tone2:","cp":"26f9-1f3fc-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_light_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone3:":{"sn":":woman_bouncing_ball_tone3:","cp":"26f9-1f3fd-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone4:":{"sn":":woman_bouncing_ball_tone4:","cp":"26f9-1f3fe-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_dark_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone5:":{"sn":":woman_bouncing_ball_tone5:","cp":"26f9-1f3ff-200d-2640-fe0f","sns":[":woman_bouncing_ball_dark_skin_tone:"],"c":"activity"},":woman_cartwheeling:":{"sn":":woman_cartwheeling:","cp":"1f938-200d-2640-fe0f","sns":[],"c":"activity"},":woman_cartwheeling_tone1:":{"sn":":woman_cartwheeling_tone1:","cp":"1f938-1f3fb-200d-2640-fe0f","sns":[":woman_cartwheeling_light_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone2:":{"sn":":woman_cartwheeling_tone2:","cp":"1f938-1f3fc-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_light_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone3:":{"sn":":woman_cartwheeling_tone3:","cp":"1f938-1f3fd-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone4:":{"sn":":woman_cartwheeling_tone4:","cp":"1f938-1f3fe-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_dark_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone5:":{"sn":":woman_cartwheeling_tone5:","cp":"1f938-1f3ff-200d-2640-fe0f","sns":[":woman_cartwheeling_dark_skin_tone:"],"c":"activity"},":woman_climbing:":{"sn":":woman_climbing:","cp":"1f9d7-200d-2640-fe0f","sns":[],"c":"activity"},":woman_climbing_tone1:":{"sn":":woman_climbing_tone1:","cp":"1f9d7-1f3fb-200d-2640-fe0f","sns":[":woman_climbing_light_skin_tone:"],"c":"activity"},":woman_climbing_tone2:":{"sn":":woman_climbing_tone2:","cp":"1f9d7-1f3fc-200d-2640-fe0f","sns":[":woman_climbing_medium_light_skin_tone:"],"c":"activity"},":woman_climbing_tone3:":{"sn":":woman_climbing_tone3:","cp":"1f9d7-1f3fd-200d-2640-fe0f","sns":[":woman_climbing_medium_skin_tone:"],"c":"activity"},":woman_climbing_tone4:":{"sn":":woman_climbing_tone4:","cp":"1f9d7-1f3fe-200d-2640-fe0f","sns":[":woman_climbing_medium_dark_skin_tone:"],"c":"activity"},":woman_climbing_tone5:":{"sn":":woman_climbing_tone5:","cp":"1f9d7-1f3ff-200d-2640-fe0f","sns":[":woman_climbing_dark_skin_tone:"],"c":"activity"},":woman_golfing:":{"sn":":woman_golfing:","cp":"1f3cc-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_golfing_tone1:":{"sn":":woman_golfing_tone1:","cp":"1f3cc-1f3fb-200d-2640-fe0f","sns":[":woman_golfing_light_skin_tone:"],"c":"activity"},":woman_golfing_tone2:":{"sn":":woman_golfing_tone2:","cp":"1f3cc-1f3fc-200d-2640-fe0f","sns":[":woman_golfing_medium_light_skin_tone:"],"c":"activity"},":woman_golfing_tone3:":{"sn":":woman_golfing_tone3:","cp":"1f3cc-1f3fd-200d-2640-fe0f","sns":[":woman_golfing_medium_skin_tone:"],"c":"activity"},":woman_golfing_tone4:":{"sn":":woman_golfing_tone4:","cp":"1f3cc-1f3fe-200d-2640-fe0f","sns":[":woman_golfing_medium_dark_skin_tone:"],"c":"activity"},":woman_golfing_tone5:":{"sn":":woman_golfing_tone5:","cp":"1f3cc-1f3ff-200d-2640-fe0f","sns":[":woman_golfing_dark_skin_tone:"],"c":"activity"},":woman_in_lotus_position:":{"sn":":woman_in_lotus_position:","cp":"1f9d8-200d-2640-fe0f","sns":[],"c":"activity"},":woman_in_lotus_position_tone1:":{"sn":":woman_in_lotus_position_tone1:","cp":"1f9d8-1f3fb-200d-2640-fe0f","sns":[":woman_in_lotus_position_light_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone2:":{"sn":":woman_in_lotus_position_tone2:","cp":"1f9d8-1f3fc-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone3:":{"sn":":woman_in_lotus_position_tone3:","cp":"1f9d8-1f3fd-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone4:":{"sn":":woman_in_lotus_position_tone4:","cp":"1f9d8-1f3fe-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone5:":{"sn":":woman_in_lotus_position_tone5:","cp":"1f9d8-1f3ff-200d-2640-fe0f","sns":[":woman_in_lotus_position_dark_skin_tone:"],"c":"activity"},":woman_juggling:":{"sn":":woman_juggling:","cp":"1f939-200d-2640-fe0f","sns":[],"c":"activity"},":woman_juggling_tone1:":{"sn":":woman_juggling_tone1:","cp":"1f939-1f3fb-200d-2640-fe0f","sns":[":woman_juggling_light_skin_tone:"],"c":"activity"},":woman_juggling_tone2:":{"sn":":woman_juggling_tone2:","cp":"1f939-1f3fc-200d-2640-fe0f","sns":[":woman_juggling_medium_light_skin_tone:"],"c":"activity"},":woman_juggling_tone3:":{"sn":":woman_juggling_tone3:","cp":"1f939-1f3fd-200d-2640-fe0f","sns":[":woman_juggling_medium_skin_tone:"],"c":"activity"},":woman_juggling_tone4:":{"sn":":woman_juggling_tone4:","cp":"1f939-1f3fe-200d-2640-fe0f","sns":[":woman_juggling_medium_dark_skin_tone:"],"c":"activity"},":woman_juggling_tone5:":{"sn":":woman_juggling_tone5:","cp":"1f939-1f3ff-200d-2640-fe0f","sns":[":woman_juggling_dark_skin_tone:"],"c":"activity"},":woman_lifting_weights:":{"sn":":woman_lifting_weights:","cp":"1f3cb-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_lifting_weights_tone1:":{"sn":":woman_lifting_weights_tone1:","cp":"1f3cb-1f3fb-200d-2640-fe0f","sns":[":woman_lifting_weights_light_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone2:":{"sn":":woman_lifting_weights_tone2:","cp":"1f3cb-1f3fc-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_light_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone3:":{"sn":":woman_lifting_weights_tone3:","cp":"1f3cb-1f3fd-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone4:":{"sn":":woman_lifting_weights_tone4:","cp":"1f3cb-1f3fe-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_dark_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone5:":{"sn":":woman_lifting_weights_tone5:","cp":"1f3cb-1f3ff-200d-2640-fe0f","sns":[":woman_lifting_weights_dark_skin_tone:"],"c":"activity"},":woman_mountain_biking:":{"sn":":woman_mountain_biking:","cp":"1f6b5-200d-2640-fe0f","sns":[],"c":"activity"},":woman_mountain_biking_tone1:":{"sn":":woman_mountain_biking_tone1:","cp":"1f6b5-1f3fb-200d-2640-fe0f","sns":[":woman_mountain_biking_light_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone2:":{"sn":":woman_mountain_biking_tone2:","cp":"1f6b5-1f3fc-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_light_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone3:":{"sn":":woman_mountain_biking_tone3:","cp":"1f6b5-1f3fd-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone4:":{"sn":":woman_mountain_biking_tone4:","cp":"1f6b5-1f3fe-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_dark_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone5:":{"sn":":woman_mountain_biking_tone5:","cp":"1f6b5-1f3ff-200d-2640-fe0f","sns":[":woman_mountain_biking_dark_skin_tone:"],"c":"activity"},":woman_playing_handball:":{"sn":":woman_playing_handball:","cp":"1f93e-200d-2640-fe0f","sns":[],"c":"activity"},":woman_playing_handball_tone1:":{"sn":":woman_playing_handball_tone1:","cp":"1f93e-1f3fb-200d-2640-fe0f","sns":[":woman_playing_handball_light_skin_tone:"],"c":"activity"},":woman_playing_handball_tone2:":{"sn":":woman_playing_handball_tone2:","cp":"1f93e-1f3fc-200d-2640-fe0f","sns":[":woman_playing_handball_medium_light_skin_tone:"],"c":"activity"},":woman_playing_handball_tone3:":{"sn":":woman_playing_handball_tone3:","cp":"1f93e-1f3fd-200d-2640-fe0f","sns":[":woman_playing_handball_medium_skin_tone:"],"c":"activity"},":woman_playing_handball_tone4:":{"sn":":woman_playing_handball_tone4:","cp":"1f93e-1f3fe-200d-2640-fe0f","sns":[":woman_playing_handball_medium_dark_skin_tone:"],"c":"activity"},":woman_playing_handball_tone5:":{"sn":":woman_playing_handball_tone5:","cp":"1f93e-1f3ff-200d-2640-fe0f","sns":[":woman_playing_handball_dark_skin_tone:"],"c":"activity"},":woman_playing_water_polo:":{"sn":":woman_playing_water_polo:","cp":"1f93d-200d-2640-fe0f","sns":[],"c":"activity"},":woman_playing_water_polo_tone1:":{"sn":":woman_playing_water_polo_tone1:","cp":"1f93d-1f3fb-200d-2640-fe0f","sns":[":woman_playing_water_polo_light_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone2:":{"sn":":woman_playing_water_polo_tone2:","cp":"1f93d-1f3fc-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_light_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone3:":{"sn":":woman_playing_water_polo_tone3:","cp":"1f93d-1f3fd-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone4:":{"sn":":woman_playing_water_polo_tone4:","cp":"1f93d-1f3fe-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_dark_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone5:":{"sn":":woman_playing_water_polo_tone5:","cp":"1f93d-1f3ff-200d-2640-fe0f","sns":[":woman_playing_water_polo_dark_skin_tone:"],"c":"activity"},":woman_rowing_boat:":{"sn":":woman_rowing_boat:","cp":"1f6a3-200d-2640-fe0f","sns":[],"c":"activity"},":woman_rowing_boat_tone1:":{"sn":":woman_rowing_boat_tone1:","cp":"1f6a3-1f3fb-200d-2640-fe0f","sns":[":woman_rowing_boat_light_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone2:":{"sn":":woman_rowing_boat_tone2:","cp":"1f6a3-1f3fc-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_light_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone3:":{"sn":":woman_rowing_boat_tone3:","cp":"1f6a3-1f3fd-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone4:":{"sn":":woman_rowing_boat_tone4:","cp":"1f6a3-1f3fe-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_dark_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone5:":{"sn":":woman_rowing_boat_tone5:","cp":"1f6a3-1f3ff-200d-2640-fe0f","sns":[":woman_rowing_boat_dark_skin_tone:"],"c":"activity"},":woman_surfing:":{"sn":":woman_surfing:","cp":"1f3c4-200d-2640-fe0f","sns":[],"c":"activity"},":woman_surfing_tone1:":{"sn":":woman_surfing_tone1:","cp":"1f3c4-1f3fb-200d-2640-fe0f","sns":[":woman_surfing_light_skin_tone:"],"c":"activity"},":woman_surfing_tone2:":{"sn":":woman_surfing_tone2:","cp":"1f3c4-1f3fc-200d-2640-fe0f","sns":[":woman_surfing_medium_light_skin_tone:"],"c":"activity"},":woman_surfing_tone3:":{"sn":":woman_surfing_tone3:","cp":"1f3c4-1f3fd-200d-2640-fe0f","sns":[":woman_surfing_medium_skin_tone:"],"c":"activity"},":woman_surfing_tone4:":{"sn":":woman_surfing_tone4:","cp":"1f3c4-1f3fe-200d-2640-fe0f","sns":[":woman_surfing_medium_dark_skin_tone:"],"c":"activity"},":woman_surfing_tone5:":{"sn":":woman_surfing_tone5:","cp":"1f3c4-1f3ff-200d-2640-fe0f","sns":[":woman_surfing_dark_skin_tone:"],"c":"activity"},":woman_swimming:":{"sn":":woman_swimming:","cp":"1f3ca-200d-2640-fe0f","sns":[],"c":"activity"},":woman_swimming_tone1:":{"sn":":woman_swimming_tone1:","cp":"1f3ca-1f3fb-200d-2640-fe0f","sns":[":woman_swimming_light_skin_tone:"],"c":"activity"},":woman_swimming_tone2:":{"sn":":woman_swimming_tone2:","cp":"1f3ca-1f3fc-200d-2640-fe0f","sns":[":woman_swimming_medium_light_skin_tone:"],"c":"activity"},":woman_swimming_tone3:":{"sn":":woman_swimming_tone3:","cp":"1f3ca-1f3fd-200d-2640-fe0f","sns":[":woman_swimming_medium_skin_tone:"],"c":"activity"},":woman_swimming_tone4:":{"sn":":woman_swimming_tone4:","cp":"1f3ca-1f3fe-200d-2640-fe0f","sns":[":woman_swimming_medium_dark_skin_tone:"],"c":"activity"},":woman_swimming_tone5:":{"sn":":woman_swimming_tone5:","cp":"1f3ca-1f3ff-200d-2640-fe0f","sns":[":woman_swimming_dark_skin_tone:"],"c":"activity"},":women_wrestling:":{"sn":":women_wrestling:","cp":"1f93c-200d-2640-fe0f","sns":[],"c":"activity"}},"travel":{":aerial_tramway:":{"sn":":aerial_tramway:","cp":"1f6a1","sns":[],"c":"travel"},":airplane:":{"sn":":airplane:","cp":"2708","sns":[],"c":"travel"},":airplane_arriving:":{"sn":":airplane_arriving:","cp":"1f6ec","sns":[],"c":"travel"},":airplane_departure:":{"sn":":airplane_departure:","cp":"1f6eb","sns":[],"c":"travel"},":airplane_small:":{"sn":":airplane_small:","cp":"1f6e9","sns":[":small_airplane:"],"c":"travel"},":ambulance:":{"sn":":ambulance:","cp":"1f691","sns":[],"c":"travel"},":anchor:":{"sn":":anchor:","cp":"2693","sns":[],"c":"travel"},":articulated_lorry:":{"sn":":articulated_lorry:","cp":"1f69b","sns":[],"c":"travel"},":bank:":{"sn":":bank:","cp":"1f3e6","sns":[],"c":"travel"},":beach:":{"sn":":beach:","cp":"1f3d6","sns":[":beach_with_umbrella:"],"c":"travel"},":beach_umbrella:":{"sn":":beach_umbrella:","cp":"26f1","sns":[":umbrella_on_ground:"],"c":"travel"},":bike:":{"sn":":bike:","cp":"1f6b2","sns":[],"c":"travel"},":blue_car:":{"sn":":blue_car:","cp":"1f699","sns":[],"c":"travel"},":bridge_at_night:":{"sn":":bridge_at_night:","cp":"1f309","sns":[],"c":"travel"},":bullettrain_front:":{"sn":":bullettrain_front:","cp":"1f685","sns":[],"c":"travel"},":bullettrain_side:":{"sn":":bullettrain_side:","cp":"1f684","sns":[],"c":"travel"},":bus:":{"sn":":bus:","cp":"1f68c","sns":[],"c":"travel"},":busstop:":{"sn":":busstop:","cp":"1f68f","sns":[],"c":"travel"},":camping:":{"sn":":camping:","cp":"1f3d5","sns":[],"c":"travel"},":canoe:":{"sn":":canoe:","cp":"1f6f6","sns":[":kayak:"],"c":"travel"},":carousel_horse:":{"sn":":carousel_horse:","cp":"1f3a0","sns":[],"c":"travel"},":church:":{"sn":":church:","cp":"26ea","sns":[],"c":"travel"},":city_dusk:":{"sn":":city_dusk:","cp":"1f306","sns":[],"c":"travel"},":city_sunset:":{"sn":":city_sunset:","cp":"1f307","sns":[":city_sunrise:"],"c":"travel"},":cityscape:":{"sn":":cityscape:","cp":"1f3d9","sns":[],"c":"travel"},":classical_building:":{"sn":":classical_building:","cp":"1f3db","sns":[],"c":"travel"},":construction:":{"sn":":construction:","cp":"1f6a7","sns":[],"c":"travel"},":construction_site:":{"sn":":construction_site:","cp":"1f3d7","sns":[":building_construction:"],"c":"travel"},":convenience_store:":{"sn":":convenience_store:","cp":"1f3ea","sns":[],"c":"travel"},":cruise_ship:":{"sn":":cruise_ship:","cp":"1f6f3","sns":[":passenger_ship:"],"c":"travel"},":department_store:":{"sn":":department_store:","cp":"1f3ec","sns":[],"c":"travel"},":desert:":{"sn":":desert:","cp":"1f3dc","sns":[],"c":"travel"},":european_castle:":{"sn":":european_castle:","cp":"1f3f0","sns":[],"c":"travel"},":european_post_office:":{"sn":":european_post_office:","cp":"1f3e4","sns":[],"c":"travel"},":factory:":{"sn":":factory:","cp":"1f3ed","sns":[],"c":"travel"},":ferris_wheel:":{"sn":":ferris_wheel:","cp":"1f3a1","sns":[],"c":"travel"},":ferry:":{"sn":":ferry:","cp":"26f4","sns":[],"c":"travel"},":fire_engine:":{"sn":":fire_engine:","cp":"1f692","sns":[],"c":"travel"},":fireworks:":{"sn":":fireworks:","cp":"1f386","sns":[],"c":"travel"},":flying_saucer:":{"sn":":flying_saucer:","cp":"1f6f8","sns":[],"c":"travel"},":foggy:":{"sn":":foggy:","cp":"1f301","sns":[],"c":"travel"},":fountain:":{"sn":":fountain:","cp":"26f2","sns":[],"c":"travel"},":fuelpump:":{"sn":":fuelpump:","cp":"26fd","sns":[],"c":"travel"},":helicopter:":{"sn":":helicopter:","cp":"1f681","sns":[],"c":"travel"},":homes:":{"sn":":homes:","cp":"1f3d8","sns":[":house_buildings:"],"c":"travel"},":hospital:":{"sn":":hospital:","cp":"1f3e5","sns":[],"c":"travel"},":hotel:":{"sn":":hotel:","cp":"1f3e8","sns":[],"c":"travel"},":house:":{"sn":":house:","cp":"1f3e0","sns":[],"c":"travel"},":house_abandoned:":{"sn":":house_abandoned:","cp":"1f3da","sns":[":derelict_house_building:"],"c":"travel"},":house_with_garden:":{"sn":":house_with_garden:","cp":"1f3e1","sns":[],"c":"travel"},":island:":{"sn":":island:","cp":"1f3dd","sns":[":desert_island:"],"c":"travel"},":japan:":{"sn":":japan:","cp":"1f5fe","sns":[],"c":"travel"},":japanese_castle:":{"sn":":japanese_castle:","cp":"1f3ef","sns":[],"c":"travel"},":kaaba:":{"sn":":kaaba:","cp":"1f54b","sns":[],"c":"travel"},":light_rail:":{"sn":":light_rail:","cp":"1f688","sns":[],"c":"travel"},":love_hotel:":{"sn":":love_hotel:","cp":"1f3e9","sns":[],"c":"travel"},":map:":{"sn":":map:","cp":"1f5fa","sns":[":world_map:"],"c":"travel"},":metro:":{"sn":":metro:","cp":"1f687","sns":[],"c":"travel"},":milky_way:":{"sn":":milky_way:","cp":"1f30c","sns":[],"c":"travel"},":minibus:":{"sn":":minibus:","cp":"1f690","sns":[],"c":"travel"},":monorail:":{"sn":":monorail:","cp":"1f69d","sns":[],"c":"travel"},":mosque:":{"sn":":mosque:","cp":"1f54c","sns":[],"c":"travel"},":motor_scooter:":{"sn":":motor_scooter:","cp":"1f6f5","sns":[":motorbike:"],"c":"travel"},":motorboat:":{"sn":":motorboat:","cp":"1f6e5","sns":[],"c":"travel"},":motorcycle:":{"sn":":motorcycle:","cp":"1f3cd","sns":[":racing_motorcycle:"],"c":"travel"},":motorway:":{"sn":":motorway:","cp":"1f6e3","sns":[],"c":"travel"},":mount_fuji:":{"sn":":mount_fuji:","cp":"1f5fb","sns":[],"c":"travel"},":mountain:":{"sn":":mountain:","cp":"26f0","sns":[],"c":"travel"},":mountain_cableway:":{"sn":":mountain_cableway:","cp":"1f6a0","sns":[],"c":"travel"},":mountain_railway:":{"sn":":mountain_railway:","cp":"1f69e","sns":[],"c":"travel"},":mountain_snow:":{"sn":":mountain_snow:","cp":"1f3d4","sns":[":snow_capped_mountain:"],"c":"travel"},":moyai:":{"sn":":moyai:","cp":"1f5ff","sns":[],"c":"travel"},":night_with_stars:":{"sn":":night_with_stars:","cp":"1f303","sns":[],"c":"travel"},":office:":{"sn":":office:","cp":"1f3e2","sns":[],"c":"travel"},":oncoming_automobile:":{"sn":":oncoming_automobile:","cp":"1f698","sns":[],"c":"travel"},":oncoming_bus:":{"sn":":oncoming_bus:","cp":"1f68d","sns":[],"c":"travel"},":oncoming_police_car:":{"sn":":oncoming_police_car:","cp":"1f694","sns":[],"c":"travel"},":oncoming_taxi:":{"sn":":oncoming_taxi:","cp":"1f696","sns":[],"c":"travel"},":park:":{"sn":":park:","cp":"1f3de","sns":[":national_park:"],"c":"travel"},":police_car:":{"sn":":police_car:","cp":"1f693","sns":[],"c":"travel"},":post_office:":{"sn":":post_office:","cp":"1f3e3","sns":[],"c":"travel"},":race_car:":{"sn":":race_car:","cp":"1f3ce","sns":[":racing_car:"],"c":"travel"},":railway_car:":{"sn":":railway_car:","cp":"1f683","sns":[],"c":"travel"},":railway_track:":{"sn":":railway_track:","cp":"1f6e4","sns":[":railroad_track:"],"c":"travel"},":red_car:":{"sn":":red_car:","cp":"1f697","sns":[],"c":"travel"},":rice_scene:":{"sn":":rice_scene:","cp":"1f391","sns":[],"c":"travel"},":rocket:":{"sn":":rocket:","cp":"1f680","sns":[],"c":"travel"},":roller_coaster:":{"sn":":roller_coaster:","cp":"1f3a2","sns":[],"c":"travel"},":rotating_light:":{"sn":":rotating_light:","cp":"1f6a8","sns":[],"c":"travel"},":sailboat:":{"sn":":sailboat:","cp":"26f5","sns":[],"c":"travel"},":satellite_orbital:":{"sn":":satellite_orbital:","cp":"1f6f0","sns":[],"c":"travel"},":school:":{"sn":":school:","cp":"1f3eb","sns":[],"c":"travel"},":scooter:":{"sn":":scooter:","cp":"1f6f4","sns":[],"c":"travel"},":seat:":{"sn":":seat:","cp":"1f4ba","sns":[],"c":"travel"},":shinto_shrine:":{"sn":":shinto_shrine:","cp":"26e9","sns":[],"c":"travel"},":ship:":{"sn":":ship:","cp":"1f6a2","sns":[],"c":"travel"},":sparkler:":{"sn":":sparkler:","cp":"1f387","sns":[],"c":"travel"},":speedboat:":{"sn":":speedboat:","cp":"1f6a4","sns":[],"c":"travel"},":stadium:":{"sn":":stadium:","cp":"1f3df","sns":[],"c":"travel"},":stars:":{"sn":":stars:","cp":"1f320","sns":[],"c":"travel"},":station:":{"sn":":station:","cp":"1f689","sns":[],"c":"travel"},":statue_of_liberty:":{"sn":":statue_of_liberty:","cp":"1f5fd","sns":[],"c":"travel"},":steam_locomotive:":{"sn":":steam_locomotive:","cp":"1f682","sns":[],"c":"travel"},":sunrise:":{"sn":":sunrise:","cp":"1f305","sns":[],"c":"travel"},":sunrise_over_mountains:":{"sn":":sunrise_over_mountains:","cp":"1f304","sns":[],"c":"travel"},":suspension_railway:":{"sn":":suspension_railway:","cp":"1f69f","sns":[],"c":"travel"},":synagogue:":{"sn":":synagogue:","cp":"1f54d","sns":[],"c":"travel"},":taxi:":{"sn":":taxi:","cp":"1f695","sns":[],"c":"travel"},":tent:":{"sn":":tent:","cp":"26fa","sns":[],"c":"travel"},":tokyo_tower:":{"sn":":tokyo_tower:","cp":"1f5fc","sns":[],"c":"travel"},":tractor:":{"sn":":tractor:","cp":"1f69c","sns":[],"c":"travel"},":traffic_light:":{"sn":":traffic_light:","cp":"1f6a5","sns":[],"c":"travel"},":train2:":{"sn":":train2:","cp":"1f686","sns":[],"c":"travel"},":train:":{"sn":":train:","cp":"1f68b","sns":[],"c":"travel"},":tram:":{"sn":":tram:","cp":"1f68a","sns":[],"c":"travel"},":trolleybus:":{"sn":":trolleybus:","cp":"1f68e","sns":[],"c":"travel"},":truck:":{"sn":":truck:","cp":"1f69a","sns":[],"c":"travel"},":vertical_traffic_light:":{"sn":":vertical_traffic_light:","cp":"1f6a6","sns":[],"c":"travel"},":volcano:":{"sn":":volcano:","cp":"1f30b","sns":[],"c":"travel"},":wedding:":{"sn":":wedding:","cp":"1f492","sns":[],"c":"travel"}},"objects":{":alarm_clock:":{"sn":":alarm_clock:","cp":"23f0","sns":[],"c":"objects"},":alembic:":{"sn":":alembic:","cp":"2697","sns":[],"c":"objects"},":amphora:":{"sn":":amphora:","cp":"1f3fa","sns":[],"c":"objects"},":athletic_shoe:":{"sn":":athletic_shoe:","cp":"1f45f","sns":[],"c":"objects"},":balloon:":{"sn":":balloon:","cp":"1f388","sns":[],"c":"objects"},":ballot_box:":{"sn":":ballot_box:","cp":"1f5f3","sns":[":ballot_box_with_ballot:"],"c":"objects"},":bar_chart:":{"sn":":bar_chart:","cp":"1f4ca","sns":[],"c":"objects"},":barber:":{"sn":":barber:","cp":"1f488","sns":[],"c":"objects"},":bath:":{"sn":":bath:","cp":"1f6c0","sns":[],"c":"objects"},":bath_tone1:":{"sn":":bath_tone1:","cp":"1f6c0-1f3fb","sns":[],"c":"objects"},":bath_tone2:":{"sn":":bath_tone2:","cp":"1f6c0-1f3fc","sns":[],"c":"objects"},":bath_tone3:":{"sn":":bath_tone3:","cp":"1f6c0-1f3fd","sns":[],"c":"objects"},":bath_tone4:":{"sn":":bath_tone4:","cp":"1f6c0-1f3fe","sns":[],"c":"objects"},":bath_tone5:":{"sn":":bath_tone5:","cp":"1f6c0-1f3ff","sns":[],"c":"objects"},":bathtub:":{"sn":":bathtub:","cp":"1f6c1","sns":[],"c":"objects"},":battery:":{"sn":":battery:","cp":"1f50b","sns":[],"c":"objects"},":bed:":{"sn":":bed:","cp":"1f6cf","sns":[],"c":"objects"},":bellhop:":{"sn":":bellhop:","cp":"1f6ce","sns":[":bellhop_bell:"],"c":"objects"},":billed_cap:":{"sn":":billed_cap:","cp":"1f9e2","sns":[],"c":"objects"},":black_nib:":{"sn":":black_nib:","cp":"2712","sns":[],"c":"objects"},":blue_book:":{"sn":":blue_book:","cp":"1f4d8","sns":[],"c":"objects"},":bomb:":{"sn":":bomb:","cp":"1f4a3","sns":[],"c":"objects"},":book:":{"sn":":book:","cp":"1f4d6","sns":[],"c":"objects"},":bookmark:":{"sn":":bookmark:","cp":"1f516","sns":[],"c":"objects"},":bookmark_tabs:":{"sn":":bookmark_tabs:","cp":"1f4d1","sns":[],"c":"objects"},":books:":{"sn":":books:","cp":"1f4da","sns":[],"c":"objects"},":boot:":{"sn":":boot:","cp":"1f462","sns":[],"c":"objects"},":briefcase:":{"sn":":briefcase:","cp":"1f4bc","sns":[],"c":"objects"},":bulb:":{"sn":":bulb:","cp":"1f4a1","sns":[],"c":"objects"},":calendar:":{"sn":":calendar:","cp":"1f4c6","sns":[],"c":"objects"},":calendar_spiral:":{"sn":":calendar_spiral:","cp":"1f5d3","sns":[":spiral_calendar_pad:"],"c":"objects"},":calling:":{"sn":":calling:","cp":"1f4f2","sns":[],"c":"objects"},":camera:":{"sn":":camera:","cp":"1f4f7","sns":[],"c":"objects"},":camera_with_flash:":{"sn":":camera_with_flash:","cp":"1f4f8","sns":[],"c":"objects"},":candle:":{"sn":":candle:","cp":"1f56f","sns":[],"c":"objects"},":card_box:":{"sn":":card_box:","cp":"1f5c3","sns":[":card_file_box:"],"c":"objects"},":card_index:":{"sn":":card_index:","cp":"1f4c7","sns":[],"c":"objects"},":cd:":{"sn":":cd:","cp":"1f4bf","sns":[],"c":"objects"},":chains:":{"sn":":chains:","cp":"26d3","sns":[],"c":"objects"},":chart_with_downwards_trend:":{"sn":":chart_with_downwards_trend:","cp":"1f4c9","sns":[],"c":"objects"},":chart_with_upwards_trend:":{"sn":":chart_with_upwards_trend:","cp":"1f4c8","sns":[],"c":"objects"},":clipboard:":{"sn":":clipboard:","cp":"1f4cb","sns":[],"c":"objects"},":clock:":{"sn":":clock:","cp":"1f570","sns":[":mantlepiece_clock:"],"c":"objects"},":closed_book:":{"sn":":closed_book:","cp":"1f4d5","sns":[],"c":"objects"},":closed_lock_with_key:":{"sn":":closed_lock_with_key:","cp":"1f510","sns":[],"c":"objects"},":closed_umbrella:":{"sn":":closed_umbrella:","cp":"1f302","sns":[],"c":"objects"},":coat:":{"sn":":coat:","cp":"1f9e5","sns":[],"c":"objects"},":coffin:":{"sn":":coffin:","cp":"26b0","sns":[],"c":"objects"},":compression:":{"sn":":compression:","cp":"1f5dc","sns":[],"c":"objects"},":computer:":{"sn":":computer:","cp":"1f4bb","sns":[],"c":"objects"},":confetti_ball:":{"sn":":confetti_ball:","cp":"1f38a","sns":[],"c":"objects"},":control_knobs:":{"sn":":control_knobs:","cp":"1f39b","sns":[],"c":"objects"},":couch:":{"sn":":couch:","cp":"1f6cb","sns":[":couch_and_lamp:"],"c":"objects"},":crayon:":{"sn":":crayon:","cp":"1f58d","sns":[":lower_left_crayon:"],"c":"objects"},":credit_card:":{"sn":":credit_card:","cp":"1f4b3","sns":[],"c":"objects"},":crossed_swords:":{"sn":":crossed_swords:","cp":"2694","sns":[],"c":"objects"},":crown:":{"sn":":crown:","cp":"1f451","sns":[],"c":"objects"},":crystal_ball:":{"sn":":crystal_ball:","cp":"1f52e","sns":[],"c":"objects"},":dagger:":{"sn":":dagger:","cp":"1f5e1","sns":[":dagger_knife:"],"c":"objects"},":dark_sunglasses:":{"sn":":dark_sunglasses:","cp":"1f576","sns":[],"c":"objects"},":date:":{"sn":":date:","cp":"1f4c5","sns":[],"c":"objects"},":desktop:":{"sn":":desktop:","cp":"1f5a5","sns":[":desktop_computer:"],"c":"objects"},":dividers:":{"sn":":dividers:","cp":"1f5c2","sns":[":card_index_dividers:"],"c":"objects"},":dollar:":{"sn":":dollar:","cp":"1f4b5","sns":[],"c":"objects"},":dolls:":{"sn":":dolls:","cp":"1f38e","sns":[],"c":"objects"},":door:":{"sn":":door:","cp":"1f6aa","sns":[],"c":"objects"},":dress:":{"sn":":dress:","cp":"1f457","sns":[],"c":"objects"},":dvd:":{"sn":":dvd:","cp":"1f4c0","sns":[],"c":"objects"},":e-mail:":{"sn":":e-mail:","cp":"1f4e7","sns":[":email:"],"c":"objects"},":electric_plug:":{"sn":":electric_plug:","cp":"1f50c","sns":[],"c":"objects"},":envelope:":{"sn":":envelope:","cp":"2709","sns":[],"c":"objects"},":envelope_with_arrow:":{"sn":":envelope_with_arrow:","cp":"1f4e9","sns":[],"c":"objects"},":euro:":{"sn":":euro:","cp":"1f4b6","sns":[],"c":"objects"},":eyeglasses:":{"sn":":eyeglasses:","cp":"1f453","sns":[],"c":"objects"},":fax:":{"sn":":fax:","cp":"1f4e0","sns":[],"c":"objects"},":file_cabinet:":{"sn":":file_cabinet:","cp":"1f5c4","sns":[],"c":"objects"},":file_folder:":{"sn":":file_folder:","cp":"1f4c1","sns":[],"c":"objects"},":film_frames:":{"sn":":film_frames:","cp":"1f39e","sns":[],"c":"objects"},":flags:":{"sn":":flags:","cp":"1f38f","sns":[],"c":"objects"},":flashlight:":{"sn":":flashlight:","cp":"1f526","sns":[],"c":"objects"},":floppy_disk:":{"sn":":floppy_disk:","cp":"1f4be","sns":[],"c":"objects"},":frame_photo:":{"sn":":frame_photo:","cp":"1f5bc","sns":[":frame_with_picture:"],"c":"objects"},":gear:":{"sn":":gear:","cp":"2699","sns":[],"c":"objects"},":gem:":{"sn":":gem:","cp":"1f48e","sns":[],"c":"objects"},":gift:":{"sn":":gift:","cp":"1f381","sns":[],"c":"objects"},":gloves:":{"sn":":gloves:","cp":"1f9e4","sns":[],"c":"objects"},":green_book:":{"sn":":green_book:","cp":"1f4d7","sns":[],"c":"objects"},":gun:":{"sn":":gun:","cp":"1f52b","sns":[],"c":"objects"},":hammer:":{"sn":":hammer:","cp":"1f528","sns":[],"c":"objects"},":hammer_pick:":{"sn":":hammer_pick:","cp":"2692","sns":[":hammer_and_pick:"],"c":"objects"},":handbag:":{"sn":":handbag:","cp":"1f45c","sns":[],"c":"objects"},":high_heel:":{"sn":":high_heel:","cp":"1f460","sns":[],"c":"objects"},":hole:":{"sn":":hole:","cp":"1f573","sns":[],"c":"objects"},":hourglass:":{"sn":":hourglass:","cp":"231b","sns":[],"c":"objects"},":hourglass_flowing_sand:":{"sn":":hourglass_flowing_sand:","cp":"23f3","sns":[],"c":"objects"},":inbox_tray:":{"sn":":inbox_tray:","cp":"1f4e5","sns":[],"c":"objects"},":incoming_envelope:":{"sn":":incoming_envelope:","cp":"1f4e8","sns":[],"c":"objects"},":iphone:":{"sn":":iphone:","cp":"1f4f1","sns":[],"c":"objects"},":izakaya_lantern:":{"sn":":izakaya_lantern:","cp":"1f3ee","sns":[],"c":"objects"},":jeans:":{"sn":":jeans:","cp":"1f456","sns":[],"c":"objects"},":joystick:":{"sn":":joystick:","cp":"1f579","sns":[],"c":"objects"},":key2:":{"sn":":key2:","cp":"1f5dd","sns":[":old_key:"],"c":"objects"},":key:":{"sn":":key:","cp":"1f511","sns":[],"c":"objects"},":keyboard:":{"sn":":keyboard:","cp":"2328","sns":[],"c":"objects"},":kimono:":{"sn":":kimono:","cp":"1f458","sns":[],"c":"objects"},":knife:":{"sn":":knife:","cp":"1f52a","sns":[],"c":"objects"},":label:":{"sn":":label:","cp":"1f3f7","sns":[],"c":"objects"},":ledger:":{"sn":":ledger:","cp":"1f4d2","sns":[],"c":"objects"},":level_slider:":{"sn":":level_slider:","cp":"1f39a","sns":[],"c":"objects"},":link:":{"sn":":link:","cp":"1f517","sns":[],"c":"objects"},":lipstick:":{"sn":":lipstick:","cp":"1f484","sns":[],"c":"objects"},":lock:":{"sn":":lock:","cp":"1f512","sns":[],"c":"objects"},":lock_with_ink_pen:":{"sn":":lock_with_ink_pen:","cp":"1f50f","sns":[],"c":"objects"},":love_letter:":{"sn":":love_letter:","cp":"1f48c","sns":[],"c":"objects"},":mag:":{"sn":":mag:","cp":"1f50d","sns":[],"c":"objects"},":mag_right:":{"sn":":mag_right:","cp":"1f50e","sns":[],"c":"objects"},":mailbox:":{"sn":":mailbox:","cp":"1f4eb","sns":[],"c":"objects"},":mailbox_closed:":{"sn":":mailbox_closed:","cp":"1f4ea","sns":[],"c":"objects"},":mailbox_with_mail:":{"sn":":mailbox_with_mail:","cp":"1f4ec","sns":[],"c":"objects"},":mailbox_with_no_mail:":{"sn":":mailbox_with_no_mail:","cp":"1f4ed","sns":[],"c":"objects"},":mans_shoe:":{"sn":":mans_shoe:","cp":"1f45e","sns":[],"c":"people"},":microphone2:":{"sn":":microphone2:","cp":"1f399","sns":[":studio_microphone:"],"c":"objects"},":microscope:":{"sn":":microscope:","cp":"1f52c","sns":[],"c":"objects"},":minidisc:":{"sn":":minidisc:","cp":"1f4bd","sns":[],"c":"objects"},":money_with_wings:":{"sn":":money_with_wings:","cp":"1f4b8","sns":[],"c":"objects"},":moneybag:":{"sn":":moneybag:","cp":"1f4b0","sns":[],"c":"objects"},":mortar_board:":{"sn":":mortar_board:","cp":"1f393","sns":[],"c":"objects"},":mouse_three_button:":{"sn":":mouse_three_button:","cp":"1f5b1","sns":[":three_button_mouse:"],"c":"objects"},":movie_camera:":{"sn":":movie_camera:","cp":"1f3a5","sns":[],"c":"objects"},":necktie:":{"sn":":necktie:","cp":"1f454","sns":[],"c":"objects"},":newspaper2:":{"sn":":newspaper2:","cp":"1f5de","sns":[":rolled_up_newspaper:"],"c":"objects"},":newspaper:":{"sn":":newspaper:","cp":"1f4f0","sns":[],"c":"objects"},":notebook:":{"sn":":notebook:","cp":"1f4d3","sns":[],"c":"objects"},":notebook_with_decorative_cover:":{"sn":":notebook_with_decorative_cover:","cp":"1f4d4","sns":[],"c":"objects"},":notepad_spiral:":{"sn":":notepad_spiral:","cp":"1f5d2","sns":[":spiral_note_pad:"],"c":"objects"},":nut_and_bolt:":{"sn":":nut_and_bolt:","cp":"1f529","sns":[],"c":"objects"},":oil:":{"sn":":oil:","cp":"1f6e2","sns":[":oil_drum:"],"c":"objects"},":open_file_folder:":{"sn":":open_file_folder:","cp":"1f4c2","sns":[],"c":"objects"},":orange_book:":{"sn":":orange_book:","cp":"1f4d9","sns":[],"c":"objects"},":outbox_tray:":{"sn":":outbox_tray:","cp":"1f4e4","sns":[],"c":"objects"},":package:":{"sn":":package:","cp":"1f4e6","sns":[],"c":"objects"},":page_facing_up:":{"sn":":page_facing_up:","cp":"1f4c4","sns":[],"c":"objects"},":page_with_curl:":{"sn":":page_with_curl:","cp":"1f4c3","sns":[],"c":"objects"},":pager:":{"sn":":pager:","cp":"1f4df","sns":[],"c":"objects"},":paintbrush:":{"sn":":paintbrush:","cp":"1f58c","sns":[":lower_left_paintbrush:"],"c":"objects"},":paperclip:":{"sn":":paperclip:","cp":"1f4ce","sns":[],"c":"objects"},":paperclips:":{"sn":":paperclips:","cp":"1f587","sns":[":linked_paperclips:"],"c":"objects"},":pen_ballpoint:":{"sn":":pen_ballpoint:","cp":"1f58a","sns":[":lower_left_ballpoint_pen:"],"c":"objects"},":pen_fountain:":{"sn":":pen_fountain:","cp":"1f58b","sns":[":lower_left_fountain_pen:"],"c":"objects"},":pencil2:":{"sn":":pencil2:","cp":"270f","sns":[],"c":"objects"},":pencil:":{"sn":":pencil:","cp":"1f4dd","sns":[":memo:"],"c":"objects"},":person_in_bed_tone1:":{"sn":":person_in_bed_tone1:","cp":"1f6cc-1f3fb","sns":[":person_in_bed_light_skin_tone:"],"c":"objects"},":person_in_bed_tone2:":{"sn":":person_in_bed_tone2:","cp":"1f6cc-1f3fc","sns":[":person_in_bed_medium_light_skin_tone:"],"c":"objects"},":person_in_bed_tone3:":{"sn":":person_in_bed_tone3:","cp":"1f6cc-1f3fd","sns":[":person_in_bed_medium_skin_tone:"],"c":"objects"},":person_in_bed_tone4:":{"sn":":person_in_bed_tone4:","cp":"1f6cc-1f3fe","sns":[":person_in_bed_medium_dark_skin_tone:"],"c":"objects"},":person_in_bed_tone5:":{"sn":":person_in_bed_tone5:","cp":"1f6cc-1f3ff","sns":[":person_in_bed_dark_skin_tone:"],"c":"objects"},":pick:":{"sn":":pick:","cp":"26cf","sns":[],"c":"objects"},":pill:":{"sn":":pill:","cp":"1f48a","sns":[],"c":"objects"},":postal_horn:":{"sn":":postal_horn:","cp":"1f4ef","sns":[],"c":"objects"},":postbox:":{"sn":":postbox:","cp":"1f4ee","sns":[],"c":"objects"},":potable_water:":{"sn":":potable_water:","cp":"1f6b0","sns":[],"c":"objects"},":pouch:":{"sn":":pouch:","cp":"1f45d","sns":[],"c":"objects"},":pound:":{"sn":":pound:","cp":"1f4b7","sns":[],"c":"objects"},":prayer_beads:":{"sn":":prayer_beads:","cp":"1f4ff","sns":[],"c":"objects"},":printer:":{"sn":":printer:","cp":"1f5a8","sns":[],"c":"objects"},":projector:":{"sn":":projector:","cp":"1f4fd","sns":[":film_projector:"],"c":"objects"},":purse:":{"sn":":purse:","cp":"1f45b","sns":[],"c":"objects"},":pushpin:":{"sn":":pushpin:","cp":"1f4cc","sns":[],"c":"objects"},":radio:":{"sn":":radio:","cp":"1f4fb","sns":[],"c":"objects"},":ribbon:":{"sn":":ribbon:","cp":"1f380","sns":[],"c":"objects"},":ring:":{"sn":":ring:","cp":"1f48d","sns":[],"c":"objects"},":round_pushpin:":{"sn":":round_pushpin:","cp":"1f4cd","sns":[],"c":"objects"},":sandal:":{"sn":":sandal:","cp":"1f461","sns":[],"c":"objects"},":satellite:":{"sn":":satellite:","cp":"1f4e1","sns":[],"c":"objects"},":scales:":{"sn":":scales:","cp":"2696","sns":[],"c":"objects"},":scarf:":{"sn":":scarf:","cp":"1f9e3","sns":[],"c":"objects"},":school_satchel:":{"sn":":school_satchel:","cp":"1f392","sns":[],"c":"objects"},":scissors:":{"sn":":scissors:","cp":"2702","sns":[],"c":"objects"},":scroll:":{"sn":":scroll:","cp":"1f4dc","sns":[],"c":"objects"},":shield:":{"sn":":shield:","cp":"1f6e1","sns":[],"c":"objects"},":shirt:":{"sn":":shirt:","cp":"1f455","sns":[],"c":"objects"},":shopping_bags:":{"sn":":shopping_bags:","cp":"1f6cd","sns":[],"c":"objects"},":shopping_cart:":{"sn":":shopping_cart:","cp":"1f6d2","sns":[":shopping_trolley:"],"c":"objects"},":shower:":{"sn":":shower:","cp":"1f6bf","sns":[],"c":"objects"},":sleeping_accommodation:":{"sn":":sleeping_accommodation:","cp":"1f6cc","sns":[],"c":"objects"},":smoking:":{"sn":":smoking:","cp":"1f6ac","sns":[],"c":"objects"},":socks:":{"sn":":socks:","cp":"1f9e6","sns":[],"c":"objects"},":stopwatch:":{"sn":":stopwatch:","cp":"23f1","sns":[],"c":"objects"},":straight_ruler:":{"sn":":straight_ruler:","cp":"1f4cf","sns":[],"c":"objects"},":syringe:":{"sn":":syringe:","cp":"1f489","sns":[],"c":"objects"},":tada:":{"sn":":tada:","cp":"1f389","sns":[],"c":"objects"},":telephone:":{"sn":":telephone:","cp":"260e","sns":[],"c":"objects"},":telephone_receiver:":{"sn":":telephone_receiver:","cp":"1f4de","sns":[],"c":"objects"},":telescope:":{"sn":":telescope:","cp":"1f52d","sns":[],"c":"objects"},":thermometer:":{"sn":":thermometer:","cp":"1f321","sns":[],"c":"objects"},":timer:":{"sn":":timer:","cp":"23f2","sns":[":timer_clock:"],"c":"objects"},":toilet:":{"sn":":toilet:","cp":"1f6bd","sns":[],"c":"objects"},":tools:":{"sn":":tools:","cp":"1f6e0","sns":[":hammer_and_wrench:"],"c":"objects"},":tophat:":{"sn":":tophat:","cp":"1f3a9","sns":[],"c":"objects"},":trackball:":{"sn":":trackball:","cp":"1f5b2","sns":[],"c":"objects"},":triangular_ruler:":{"sn":":triangular_ruler:","cp":"1f4d0","sns":[],"c":"objects"},":tv:":{"sn":":tv:","cp":"1f4fa","sns":[],"c":"objects"},":unlock:":{"sn":":unlock:","cp":"1f513","sns":[],"c":"objects"},":urn:":{"sn":":urn:","cp":"26b1","sns":[":funeral_urn:"],"c":"objects"},":vhs:":{"sn":":vhs:","cp":"1f4fc","sns":[],"c":"objects"},":video_camera:":{"sn":":video_camera:","cp":"1f4f9","sns":[],"c":"objects"},":wastebasket:":{"sn":":wastebasket:","cp":"1f5d1","sns":[],"c":"objects"},":watch:":{"sn":":watch:","cp":"231a","sns":[],"c":"objects"},":wind_chime:":{"sn":":wind_chime:","cp":"1f390","sns":[],"c":"objects"},":womans_clothes:":{"sn":":womans_clothes:","cp":"1f45a","sns":[],"c":"objects"},":womans_hat:":{"sn":":womans_hat:","cp":"1f452","sns":[],"c":"objects"},":wrench:":{"sn":":wrench:","cp":"1f527","sns":[],"c":"objects"},":yen:":{"sn":":yen:","cp":"1f4b4","sns":[],"c":"objects"}},"nature":{":ant:":{"sn":":ant:","cp":"1f41c","sns":[],"c":"nature"},":baby_chick:":{"sn":":baby_chick:","cp":"1f424","sns":[],"c":"nature"},":bamboo:":{"sn":":bamboo:","cp":"1f38d","sns":[],"c":"nature"},":bat:":{"sn":":bat:","cp":"1f987","sns":[],"c":"nature"},":bear:":{"sn":":bear:","cp":"1f43b","sns":[],"c":"nature"},":bee:":{"sn":":bee:","cp":"1f41d","sns":[],"c":"nature"},":beetle:":{"sn":":beetle:","cp":"1f41e","sns":[],"c":"nature"},":bird:":{"sn":":bird:","cp":"1f426","sns":[],"c":"nature"},":blossom:":{"sn":":blossom:","cp":"1f33c","sns":[],"c":"nature"},":blowfish:":{"sn":":blowfish:","cp":"1f421","sns":[],"c":"nature"},":boar:":{"sn":":boar:","cp":"1f417","sns":[],"c":"nature"},":boom:":{"sn":":boom:","cp":"1f4a5","sns":[],"c":"nature"},":bouquet:":{"sn":":bouquet:","cp":"1f490","sns":[],"c":"nature"},":bug:":{"sn":":bug:","cp":"1f41b","sns":[],"c":"nature"},":butterfly:":{"sn":":butterfly:","cp":"1f98b","sns":[],"c":"nature"},":cactus:":{"sn":":cactus:","cp":"1f335","sns":[],"c":"nature"},":camel:":{"sn":":camel:","cp":"1f42b","sns":[],"c":"nature"},":cat2:":{"sn":":cat2:","cp":"1f408","sns":[],"c":"nature"},":cat:":{"sn":":cat:","cp":"1f431","sns":[],"c":"nature"},":cherry_blossom:":{"sn":":cherry_blossom:","cp":"1f338","sns":[],"c":"nature"},":chicken:":{"sn":":chicken:","cp":"1f414","sns":[],"c":"nature"},":chipmunk:":{"sn":":chipmunk:","cp":"1f43f","sns":[],"c":"nature"},":christmas_tree:":{"sn":":christmas_tree:","cp":"1f384","sns":[],"c":"nature"},":cloud:":{"sn":":cloud:","cp":"2601","sns":[],"c":"nature"},":cloud_lightning:":{"sn":":cloud_lightning:","cp":"1f329","sns":[":cloud_with_lightning:"],"c":"nature"},":cloud_rain:":{"sn":":cloud_rain:","cp":"1f327","sns":[":cloud_with_rain:"],"c":"nature"},":cloud_snow:":{"sn":":cloud_snow:","cp":"1f328","sns":[":cloud_with_snow:"],"c":"nature"},":cloud_tornado:":{"sn":":cloud_tornado:","cp":"1f32a","sns":[":cloud_with_tornado:"],"c":"nature"},":comet:":{"sn":":comet:","cp":"2604","sns":[],"c":"nature"},":cow2:":{"sn":":cow2:","cp":"1f404","sns":[],"c":"nature"},":cow:":{"sn":":cow:","cp":"1f42e","sns":[],"c":"nature"},":crab:":{"sn":":crab:","cp":"1f980","sns":[],"c":"nature"},":crescent_moon:":{"sn":":crescent_moon:","cp":"1f319","sns":[],"c":"nature"},":cricket:":{"sn":":cricket:","cp":"1f997","sns":[],"c":"nature"},":crocodile:":{"sn":":crocodile:","cp":"1f40a","sns":[],"c":"nature"},":dash:":{"sn":":dash:","cp":"1f4a8","sns":[],"c":"nature"},":deciduous_tree:":{"sn":":deciduous_tree:","cp":"1f333","sns":[],"c":"nature"},":deer:":{"sn":":deer:","cp":"1f98c","sns":[],"c":"nature"},":dizzy:":{"sn":":dizzy:","cp":"1f4ab","sns":[],"c":"nature"},":dog2:":{"sn":":dog2:","cp":"1f415","sns":[],"c":"nature"},":dog:":{"sn":":dog:","cp":"1f436","sns":[],"c":"nature"},":dolphin:":{"sn":":dolphin:","cp":"1f42c","sns":[],"c":"nature"},":dove:":{"sn":":dove:","cp":"1f54a","sns":[":dove_of_peace:"],"c":"nature"},":dragon:":{"sn":":dragon:","cp":"1f409","sns":[],"c":"nature"},":dragon_face:":{"sn":":dragon_face:","cp":"1f432","sns":[],"c":"nature"},":dromedary_camel:":{"sn":":dromedary_camel:","cp":"1f42a","sns":[],"c":"nature"},":droplet:":{"sn":":droplet:","cp":"1f4a7","sns":[],"c":"nature"},":duck:":{"sn":":duck:","cp":"1f986","sns":[],"c":"nature"},":eagle:":{"sn":":eagle:","cp":"1f985","sns":[],"c":"nature"},":ear_of_rice:":{"sn":":ear_of_rice:","cp":"1f33e","sns":[],"c":"nature"},":earth_africa:":{"sn":":earth_africa:","cp":"1f30d","sns":[],"c":"nature"},":earth_americas:":{"sn":":earth_americas:","cp":"1f30e","sns":[],"c":"nature"},":earth_asia:":{"sn":":earth_asia:","cp":"1f30f","sns":[],"c":"nature"},":elephant:":{"sn":":elephant:","cp":"1f418","sns":[],"c":"nature"},":evergreen_tree:":{"sn":":evergreen_tree:","cp":"1f332","sns":[],"c":"nature"},":fallen_leaf:":{"sn":":fallen_leaf:","cp":"1f342","sns":[],"c":"nature"},":feet:":{"sn":":feet:","cp":"1f43e","sns":[":paw_prints:"],"c":"nature"},":fire:":{"sn":":fire:","cp":"1f525","sns":[":flame:"],"c":"nature"},":first_quarter_moon:":{"sn":":first_quarter_moon:","cp":"1f313","sns":[],"c":"nature"},":first_quarter_moon_with_face:":{"sn":":first_quarter_moon_with_face:","cp":"1f31b","sns":[],"c":"nature"},":fish:":{"sn":":fish:","cp":"1f41f","sns":[],"c":"nature"},":fog:":{"sn":":fog:","cp":"1f32b","sns":[],"c":"nature"},":four_leaf_clover:":{"sn":":four_leaf_clover:","cp":"1f340","sns":[],"c":"nature"},":fox:":{"sn":":fox:","cp":"1f98a","sns":[":fox_face:"],"c":"nature"},":frog:":{"sn":":frog:","cp":"1f438","sns":[],"c":"nature"},":full_moon:":{"sn":":full_moon:","cp":"1f315","sns":[],"c":"nature"},":full_moon_with_face:":{"sn":":full_moon_with_face:","cp":"1f31d","sns":[],"c":"nature"},":giraffe:":{"sn":":giraffe:","cp":"1f992","sns":[],"c":"nature"},":goat:":{"sn":":goat:","cp":"1f410","sns":[],"c":"nature"},":gorilla:":{"sn":":gorilla:","cp":"1f98d","sns":[],"c":"nature"},":hamster:":{"sn":":hamster:","cp":"1f439","sns":[],"c":"nature"},":hatched_chick:":{"sn":":hatched_chick:","cp":"1f425","sns":[],"c":"nature"},":hatching_chick:":{"sn":":hatching_chick:","cp":"1f423","sns":[],"c":"nature"},":hear_no_evil:":{"sn":":hear_no_evil:","cp":"1f649","sns":[],"c":"nature"},":hedgehog:":{"sn":":hedgehog:","cp":"1f994","sns":[],"c":"nature"},":herb:":{"sn":":herb:","cp":"1f33f","sns":[],"c":"nature"},":hibiscus:":{"sn":":hibiscus:","cp":"1f33a","sns":[],"c":"nature"},":horse:":{"sn":":horse:","cp":"1f434","sns":[],"c":"nature"},":koala:":{"sn":":koala:","cp":"1f428","sns":[],"c":"nature"},":last_quarter_moon:":{"sn":":last_quarter_moon:","cp":"1f317","sns":[],"c":"nature"},":last_quarter_moon_with_face:":{"sn":":last_quarter_moon_with_face:","cp":"1f31c","sns":[],"c":"nature"},":leaves:":{"sn":":leaves:","cp":"1f343","sns":[],"c":"nature"},":leopard:":{"sn":":leopard:","cp":"1f406","sns":[],"c":"nature"},":lion_face:":{"sn":":lion_face:","cp":"1f981","sns":[":lion:"],"c":"nature"},":lizard:":{"sn":":lizard:","cp":"1f98e","sns":[],"c":"nature"},":maple_leaf:":{"sn":":maple_leaf:","cp":"1f341","sns":[],"c":"nature"},":monkey:":{"sn":":monkey:","cp":"1f412","sns":[],"c":"nature"},":monkey_face:":{"sn":":monkey_face:","cp":"1f435","sns":[],"c":"nature"},":mouse2:":{"sn":":mouse2:","cp":"1f401","sns":[],"c":"nature"},":mouse:":{"sn":":mouse:","cp":"1f42d","sns":[],"c":"nature"},":mushroom:":{"sn":":mushroom:","cp":"1f344","sns":[],"c":"nature"},":new_moon:":{"sn":":new_moon:","cp":"1f311","sns":[],"c":"nature"},":new_moon_with_face:":{"sn":":new_moon_with_face:","cp":"1f31a","sns":[],"c":"nature"},":ocean:":{"sn":":ocean:","cp":"1f30a","sns":[],"c":"nature"},":octopus:":{"sn":":octopus:","cp":"1f419","sns":[],"c":"nature"},":owl:":{"sn":":owl:","cp":"1f989","sns":[],"c":"nature"},":ox:":{"sn":":ox:","cp":"1f402","sns":[],"c":"nature"},":palm_tree:":{"sn":":palm_tree:","cp":"1f334","sns":[],"c":"nature"},":panda_face:":{"sn":":panda_face:","cp":"1f43c","sns":[],"c":"nature"},":partly_sunny:":{"sn":":partly_sunny:","cp":"26c5","sns":[],"c":"nature"},":penguin:":{"sn":":penguin:","cp":"1f427","sns":[],"c":"nature"},":pig2:":{"sn":":pig2:","cp":"1f416","sns":[],"c":"nature"},":pig:":{"sn":":pig:","cp":"1f437","sns":[],"c":"nature"},":pig_nose:":{"sn":":pig_nose:","cp":"1f43d","sns":[],"c":"nature"},":poodle:":{"sn":":poodle:","cp":"1f429","sns":[],"c":"nature"},":rabbit2:":{"sn":":rabbit2:","cp":"1f407","sns":[],"c":"nature"},":rabbit:":{"sn":":rabbit:","cp":"1f430","sns":[],"c":"nature"},":racehorse:":{"sn":":racehorse:","cp":"1f40e","sns":[],"c":"nature"},":rainbow:":{"sn":":rainbow:","cp":"1f308","sns":[],"c":"nature"},":ram:":{"sn":":ram:","cp":"1f40f","sns":[],"c":"nature"},":rat:":{"sn":":rat:","cp":"1f400","sns":[],"c":"nature"},":rhino:":{"sn":":rhino:","cp":"1f98f","sns":[":rhinoceros:"],"c":"nature"},":rooster:":{"sn":":rooster:","cp":"1f413","sns":[],"c":"nature"},":rose:":{"sn":":rose:","cp":"1f339","sns":[],"c":"nature"},":sauropod:":{"sn":":sauropod:","cp":"1f995","sns":[],"c":"nature"},":scorpion:":{"sn":":scorpion:","cp":"1f982","sns":[],"c":"nature"},":see_no_evil:":{"sn":":see_no_evil:","cp":"1f648","sns":[],"c":"nature"},":seedling:":{"sn":":seedling:","cp":"1f331","sns":[],"c":"nature"},":shamrock:":{"sn":":shamrock:","cp":"2618","sns":[],"c":"nature"},":shark:":{"sn":":shark:","cp":"1f988","sns":[],"c":"nature"},":sheep:":{"sn":":sheep:","cp":"1f411","sns":[],"c":"nature"},":shell:":{"sn":":shell:","cp":"1f41a","sns":[],"c":"nature"},":shrimp:":{"sn":":shrimp:","cp":"1f990","sns":[],"c":"nature"},":snail:":{"sn":":snail:","cp":"1f40c","sns":[],"c":"nature"},":snake:":{"sn":":snake:","cp":"1f40d","sns":[],"c":"nature"},":snowflake:":{"sn":":snowflake:","cp":"2744","sns":[],"c":"nature"},":snowman2:":{"sn":":snowman2:","cp":"2603","sns":[],"c":"nature"},":snowman:":{"sn":":snowman:","cp":"26c4","sns":[],"c":"nature"},":sparkles:":{"sn":":sparkles:","cp":"2728","sns":[],"c":"nature"},":speak_no_evil:":{"sn":":speak_no_evil:","cp":"1f64a","sns":[],"c":"nature"},":spider:":{"sn":":spider:","cp":"1f577","sns":[],"c":"nature"},":spider_web:":{"sn":":spider_web:","cp":"1f578","sns":[],"c":"nature"},":squid:":{"sn":":squid:","cp":"1f991","sns":[],"c":"nature"},":star2:":{"sn":":star2:","cp":"1f31f","sns":[],"c":"nature"},":star:":{"sn":":star:","cp":"2b50","sns":[],"c":"nature"},":sun_with_face:":{"sn":":sun_with_face:","cp":"1f31e","sns":[],"c":"nature"},":sunflower:":{"sn":":sunflower:","cp":"1f33b","sns":[],"c":"nature"},":sunny:":{"sn":":sunny:","cp":"2600","sns":[],"c":"nature"},":sweat_drops:":{"sn":":sweat_drops:","cp":"1f4a6","sns":[],"c":"nature"},":t_rex:":{"sn":":t_rex:","cp":"1f996","sns":[],"c":"nature"},":tanabata_tree:":{"sn":":tanabata_tree:","cp":"1f38b","sns":[],"c":"nature"},":thunder_cloud_rain:":{"sn":":thunder_cloud_rain:","cp":"26c8","sns":[":thunder_cloud_and_rain:"],"c":"nature"},":tiger2:":{"sn":":tiger2:","cp":"1f405","sns":[],"c":"nature"},":tiger:":{"sn":":tiger:","cp":"1f42f","sns":[],"c":"nature"},":tropical_fish:":{"sn":":tropical_fish:","cp":"1f420","sns":[],"c":"nature"},":tulip:":{"sn":":tulip:","cp":"1f337","sns":[],"c":"nature"},":turkey:":{"sn":":turkey:","cp":"1f983","sns":[],"c":"nature"},":turtle:":{"sn":":turtle:","cp":"1f422","sns":[],"c":"nature"},":umbrella2:":{"sn":":umbrella2:","cp":"2602","sns":[],"c":"nature"},":umbrella:":{"sn":":umbrella:","cp":"2614","sns":[],"c":"nature"},":unicorn:":{"sn":":unicorn:","cp":"1f984","sns":[":unicorn_face:"],"c":"nature"},":waning_crescent_moon:":{"sn":":waning_crescent_moon:","cp":"1f318","sns":[],"c":"nature"},":waning_gibbous_moon:":{"sn":":waning_gibbous_moon:","cp":"1f316","sns":[],"c":"nature"},":water_buffalo:":{"sn":":water_buffalo:","cp":"1f403","sns":[],"c":"nature"},":waxing_crescent_moon:":{"sn":":waxing_crescent_moon:","cp":"1f312","sns":[],"c":"nature"},":waxing_gibbous_moon:":{"sn":":waxing_gibbous_moon:","cp":"1f314","sns":[],"c":"nature"},":whale2:":{"sn":":whale2:","cp":"1f40b","sns":[],"c":"nature"},":whale:":{"sn":":whale:","cp":"1f433","sns":[],"c":"nature"},":white_sun_cloud:":{"sn":":white_sun_cloud:","cp":"1f325","sns":[":white_sun_behind_cloud:"],"c":"nature"},":white_sun_rain_cloud:":{"sn":":white_sun_rain_cloud:","cp":"1f326","sns":[":white_sun_behind_cloud_with_rain:"],"c":"nature"},":white_sun_small_cloud:":{"sn":":white_sun_small_cloud:","cp":"1f324","sns":[":white_sun_with_small_cloud:"],"c":"nature"},":wilted_rose:":{"sn":":wilted_rose:","cp":"1f940","sns":[":wilted_flower:"],"c":"nature"},":wind_blowing_face:":{"sn":":wind_blowing_face:","cp":"1f32c","sns":[],"c":"nature"},":wolf:":{"sn":":wolf:","cp":"1f43a","sns":[],"c":"nature"},":zap:":{"sn":":zap:","cp":"26a1","sns":[],"c":"nature"},":zebra:":{"sn":":zebra:","cp":"1f993","sns":[],"c":"nature"}},"food":{":apple:":{"sn":":apple:","cp":"1f34e","sns":[],"c":"food"},":avocado:":{"sn":":avocado:","cp":"1f951","sns":[],"c":"food"},":baby_bottle:":{"sn":":baby_bottle:","cp":"1f37c","sns":[],"c":"food"},":bacon:":{"sn":":bacon:","cp":"1f953","sns":[],"c":"food"},":banana:":{"sn":":banana:","cp":"1f34c","sns":[],"c":"food"},":beer:":{"sn":":beer:","cp":"1f37a","sns":[],"c":"food"},":beers:":{"sn":":beers:","cp":"1f37b","sns":[],"c":"food"},":bento:":{"sn":":bento:","cp":"1f371","sns":[],"c":"food"},":birthday:":{"sn":":birthday:","cp":"1f382","sns":[],"c":"food"},":bowl_with_spoon:":{"sn":":bowl_with_spoon:","cp":"1f963","sns":[],"c":"food"},":bread:":{"sn":":bread:","cp":"1f35e","sns":[],"c":"food"},":broccoli:":{"sn":":broccoli:","cp":"1f966","sns":[],"c":"food"},":burrito:":{"sn":":burrito:","cp":"1f32f","sns":[],"c":"food"},":cake:":{"sn":":cake:","cp":"1f370","sns":[],"c":"food"},":candy:":{"sn":":candy:","cp":"1f36c","sns":[],"c":"food"},":canned_food:":{"sn":":canned_food:","cp":"1f96b","sns":[],"c":"food"},":carrot:":{"sn":":carrot:","cp":"1f955","sns":[],"c":"food"},":champagne:":{"sn":":champagne:","cp":"1f37e","sns":[":bottle_with_popping_cork:"],"c":"food"},":champagne_glass:":{"sn":":champagne_glass:","cp":"1f942","sns":[":clinking_glass:"],"c":"food"},":cheese:":{"sn":":cheese:","cp":"1f9c0","sns":[":cheese_wedge:"],"c":"food"},":cherries:":{"sn":":cherries:","cp":"1f352","sns":[],"c":"food"},":chestnut:":{"sn":":chestnut:","cp":"1f330","sns":[],"c":"food"},":chocolate_bar:":{"sn":":chocolate_bar:","cp":"1f36b","sns":[],"c":"food"},":chopsticks:":{"sn":":chopsticks:","cp":"1f962","sns":[],"c":"food"},":cocktail:":{"sn":":cocktail:","cp":"1f378","sns":[],"c":"food"},":coconut:":{"sn":":coconut:","cp":"1f965","sns":[],"c":"food"},":coffee:":{"sn":":coffee:","cp":"2615","sns":[],"c":"food"},":cookie:":{"sn":":cookie:","cp":"1f36a","sns":[],"c":"food"},":cooking:":{"sn":":cooking:","cp":"1f373","sns":[],"c":"food"},":corn:":{"sn":":corn:","cp":"1f33d","sns":[],"c":"food"},":croissant:":{"sn":":croissant:","cp":"1f950","sns":[],"c":"food"},":cucumber:":{"sn":":cucumber:","cp":"1f952","sns":[],"c":"food"},":cup_with_straw:":{"sn":":cup_with_straw:","cp":"1f964","sns":[],"c":"food"},":curry:":{"sn":":curry:","cp":"1f35b","sns":[],"c":"food"},":custard:":{"sn":":custard:","cp":"1f36e","sns":[":pudding:",":flan:"],"c":"food"},":cut_of_meat:":{"sn":":cut_of_meat:","cp":"1f969","sns":[],"c":"food"},":dango:":{"sn":":dango:","cp":"1f361","sns":[],"c":"food"},":doughnut:":{"sn":":doughnut:","cp":"1f369","sns":[],"c":"food"},":dumpling:":{"sn":":dumpling:","cp":"1f95f","sns":[],"c":"food"},":egg:":{"sn":":egg:","cp":"1f95a","sns":[],"c":"food"},":eggplant:":{"sn":":eggplant:","cp":"1f346","sns":[],"c":"food"},":fish_cake:":{"sn":":fish_cake:","cp":"1f365","sns":[],"c":"food"},":fork_and_knife:":{"sn":":fork_and_knife:","cp":"1f374","sns":[],"c":"food"},":fork_knife_plate:":{"sn":":fork_knife_plate:","cp":"1f37d","sns":[":fork_and_knife_with_plate:"],"c":"food"},":fortune_cookie:":{"sn":":fortune_cookie:","cp":"1f960","sns":[],"c":"food"},":french_bread:":{"sn":":french_bread:","cp":"1f956","sns":[":baguette_bread:"],"c":"food"},":fried_shrimp:":{"sn":":fried_shrimp:","cp":"1f364","sns":[],"c":"food"},":fries:":{"sn":":fries:","cp":"1f35f","sns":[],"c":"food"},":grapes:":{"sn":":grapes:","cp":"1f347","sns":[],"c":"food"},":green_apple:":{"sn":":green_apple:","cp":"1f34f","sns":[],"c":"food"},":hamburger:":{"sn":":hamburger:","cp":"1f354","sns":[],"c":"food"},":honey_pot:":{"sn":":honey_pot:","cp":"1f36f","sns":[],"c":"food"},":hot_pepper:":{"sn":":hot_pepper:","cp":"1f336","sns":[],"c":"food"},":hotdog:":{"sn":":hotdog:","cp":"1f32d","sns":[":hot_dog:"],"c":"food"},":ice_cream:":{"sn":":ice_cream:","cp":"1f368","sns":[],"c":"food"},":icecream:":{"sn":":icecream:","cp":"1f366","sns":[],"c":"food"},":kiwi:":{"sn":":kiwi:","cp":"1f95d","sns":[":kiwifruit:"],"c":"food"},":lemon:":{"sn":":lemon:","cp":"1f34b","sns":[],"c":"food"},":lollipop:":{"sn":":lollipop:","cp":"1f36d","sns":[],"c":"food"},":meat_on_bone:":{"sn":":meat_on_bone:","cp":"1f356","sns":[],"c":"food"},":melon:":{"sn":":melon:","cp":"1f348","sns":[],"c":"food"},":milk:":{"sn":":milk:","cp":"1f95b","sns":[":glass_of_milk:"],"c":"food"},":oden:":{"sn":":oden:","cp":"1f362","sns":[],"c":"food"},":pancakes:":{"sn":":pancakes:","cp":"1f95e","sns":[],"c":"food"},":peach:":{"sn":":peach:","cp":"1f351","sns":[],"c":"food"},":peanuts:":{"sn":":peanuts:","cp":"1f95c","sns":[":shelled_peanut:"],"c":"food"},":pear:":{"sn":":pear:","cp":"1f350","sns":[],"c":"food"},":pie:":{"sn":":pie:","cp":"1f967","sns":[],"c":"food"},":pineapple:":{"sn":":pineapple:","cp":"1f34d","sns":[],"c":"food"},":pizza:":{"sn":":pizza:","cp":"1f355","sns":[],"c":"food"},":popcorn:":{"sn":":popcorn:","cp":"1f37f","sns":[],"c":"food"},":potato:":{"sn":":potato:","cp":"1f954","sns":[],"c":"food"},":poultry_leg:":{"sn":":poultry_leg:","cp":"1f357","sns":[],"c":"food"},":pretzel:":{"sn":":pretzel:","cp":"1f968","sns":[],"c":"food"},":ramen:":{"sn":":ramen:","cp":"1f35c","sns":[],"c":"food"},":rice:":{"sn":":rice:","cp":"1f35a","sns":[],"c":"food"},":rice_ball:":{"sn":":rice_ball:","cp":"1f359","sns":[],"c":"food"},":rice_cracker:":{"sn":":rice_cracker:","cp":"1f358","sns":[],"c":"food"},":sake:":{"sn":":sake:","cp":"1f376","sns":[],"c":"food"},":salad:":{"sn":":salad:","cp":"1f957","sns":[":green_salad:"],"c":"food"},":sandwich:":{"sn":":sandwich:","cp":"1f96a","sns":[],"c":"food"},":shallow_pan_of_food:":{"sn":":shallow_pan_of_food:","cp":"1f958","sns":[":paella:"],"c":"food"},":shaved_ice:":{"sn":":shaved_ice:","cp":"1f367","sns":[],"c":"food"},":spaghetti:":{"sn":":spaghetti:","cp":"1f35d","sns":[],"c":"food"},":spoon:":{"sn":":spoon:","cp":"1f944","sns":[],"c":"food"},":stew:":{"sn":":stew:","cp":"1f372","sns":[],"c":"food"},":strawberry:":{"sn":":strawberry:","cp":"1f353","sns":[],"c":"food"},":stuffed_flatbread:":{"sn":":stuffed_flatbread:","cp":"1f959","sns":[":stuffed_pita:"],"c":"food"},":sushi:":{"sn":":sushi:","cp":"1f363","sns":[],"c":"food"},":sweet_potato:":{"sn":":sweet_potato:","cp":"1f360","sns":[],"c":"food"},":taco:":{"sn":":taco:","cp":"1f32e","sns":[],"c":"food"},":takeout_box:":{"sn":":takeout_box:","cp":"1f961","sns":[],"c":"food"},":tangerine:":{"sn":":tangerine:","cp":"1f34a","sns":[],"c":"food"},":tea:":{"sn":":tea:","cp":"1f375","sns":[],"c":"food"},":tomato:":{"sn":":tomato:","cp":"1f345","sns":[],"c":"food"},":tropical_drink:":{"sn":":tropical_drink:","cp":"1f379","sns":[],"c":"food"},":tumbler_glass:":{"sn":":tumbler_glass:","cp":"1f943","sns":[":whisky:"],"c":"food"},":watermelon:":{"sn":":watermelon:","cp":"1f349","sns":[],"c":"food"},":wine_glass:":{"sn":":wine_glass:","cp":"1f377","sns":[],"c":"food"}},"symbols":{":100:":{"sn":":100:","cp":"1f4af","sns":[],"c":"symbols"},":1234:":{"sn":":1234:","cp":"1f522","sns":[],"c":"symbols"},":a:":{"sn":":a:","cp":"1f170","sns":[],"c":"symbols"},":ab:":{"sn":":ab:","cp":"1f18e","sns":[],"c":"symbols"},":abc:":{"sn":":abc:","cp":"1f524","sns":[],"c":"symbols"},":abcd:":{"sn":":abcd:","cp":"1f521","sns":[],"c":"symbols"},":accept:":{"sn":":accept:","cp":"1f251","sns":[],"c":"symbols"},":anger:":{"sn":":anger:","cp":"1f4a2","sns":[],"c":"symbols"},":anger_right:":{"sn":":anger_right:","cp":"1f5ef","sns":[":right_anger_bubble:"],"c":"symbols"},":aquarius:":{"sn":":aquarius:","cp":"2652","sns":[],"c":"symbols"},":aries:":{"sn":":aries:","cp":"2648","sns":[],"c":"symbols"},":arrow_backward:":{"sn":":arrow_backward:","cp":"25c0","sns":[],"c":"symbols"},":arrow_double_down:":{"sn":":arrow_double_down:","cp":"23ec","sns":[],"c":"symbols"},":arrow_double_up:":{"sn":":arrow_double_up:","cp":"23eb","sns":[],"c":"symbols"},":arrow_down:":{"sn":":arrow_down:","cp":"2b07","sns":[],"c":"symbols"},":arrow_down_small:":{"sn":":arrow_down_small:","cp":"1f53d","sns":[],"c":"symbols"},":arrow_forward:":{"sn":":arrow_forward:","cp":"25b6","sns":[],"c":"symbols"},":arrow_heading_down:":{"sn":":arrow_heading_down:","cp":"2935","sns":[],"c":"symbols"},":arrow_heading_up:":{"sn":":arrow_heading_up:","cp":"2934","sns":[],"c":"symbols"},":arrow_left:":{"sn":":arrow_left:","cp":"2b05","sns":[],"c":"symbols"},":arrow_lower_left:":{"sn":":arrow_lower_left:","cp":"2199","sns":[],"c":"symbols"},":arrow_lower_right:":{"sn":":arrow_lower_right:","cp":"2198","sns":[],"c":"symbols"},":arrow_right:":{"sn":":arrow_right:","cp":"27a1","sns":[],"c":"symbols"},":arrow_right_hook:":{"sn":":arrow_right_hook:","cp":"21aa","sns":[],"c":"symbols"},":arrow_up:":{"sn":":arrow_up:","cp":"2b06","sns":[],"c":"symbols"},":arrow_up_down:":{"sn":":arrow_up_down:","cp":"2195","sns":[],"c":"symbols"},":arrow_up_small:":{"sn":":arrow_up_small:","cp":"1f53c","sns":[],"c":"symbols"},":arrow_upper_left:":{"sn":":arrow_upper_left:","cp":"2196","sns":[],"c":"symbols"},":arrow_upper_right:":{"sn":":arrow_upper_right:","cp":"2197","sns":[],"c":"symbols"},":arrows_clockwise:":{"sn":":arrows_clockwise:","cp":"1f503","sns":[],"c":"symbols"},":arrows_counterclockwise:":{"sn":":arrows_counterclockwise:","cp":"1f504","sns":[],"c":"symbols"},":asterisk:":{"sn":":asterisk:","cp":"2a-fe0f-20e3","sns":[":keycap_asterisk:"],"c":"symbols"},":atm:":{"sn":":atm:","cp":"1f3e7","sns":[],"c":"symbols"},":atom:":{"sn":":atom:","cp":"269b","sns":[":atom_symbol:"],"c":"symbols"},":b:":{"sn":":b:","cp":"1f171","sns":[],"c":"symbols"},":baby_symbol:":{"sn":":baby_symbol:","cp":"1f6bc","sns":[],"c":"symbols"},":back:":{"sn":":back:","cp":"1f519","sns":[],"c":"symbols"},":baggage_claim:":{"sn":":baggage_claim:","cp":"1f6c4","sns":[],"c":"symbols"},":ballot_box_with_check:":{"sn":":ballot_box_with_check:","cp":"2611","sns":[],"c":"symbols"},":bangbang:":{"sn":":bangbang:","cp":"203c","sns":[],"c":"symbols"},":beginner:":{"sn":":beginner:","cp":"1f530","sns":[],"c":"symbols"},":bell:":{"sn":":bell:","cp":"1f514","sns":[],"c":"symbols"},":biohazard:":{"sn":":biohazard:","cp":"2623","sns":[":biohazard_sign:"],"c":"symbols"},":black_circle:":{"sn":":black_circle:","cp":"26ab","sns":[],"c":"symbols"},":black_heart:":{"sn":":black_heart:","cp":"1f5a4","sns":[],"c":"symbols"},":black_joker:":{"sn":":black_joker:","cp":"1f0cf","sns":[],"c":"symbols"},":black_large_square:":{"sn":":black_large_square:","cp":"2b1b","sns":[],"c":"symbols"},":black_medium_small_square:":{"sn":":black_medium_small_square:","cp":"25fe","sns":[],"c":"symbols"},":black_medium_square:":{"sn":":black_medium_square:","cp":"25fc","sns":[],"c":"symbols"},":black_small_square:":{"sn":":black_small_square:","cp":"25aa","sns":[],"c":"symbols"},":black_square_button:":{"sn":":black_square_button:","cp":"1f532","sns":[],"c":"symbols"},":blue_circle:":{"sn":":blue_circle:","cp":"1f535","sns":[],"c":"symbols"},":blue_heart:":{"sn":":blue_heart:","cp":"1f499","sns":[],"c":"symbols"},":broken_heart:":{"sn":":broken_heart:","cp":"1f494","sns":[],"c":"symbols"},":cancer:":{"sn":":cancer:","cp":"264b","sns":[],"c":"symbols"},":capital_abcd:":{"sn":":capital_abcd:","cp":"1f520","sns":[],"c":"symbols"},":capricorn:":{"sn":":capricorn:","cp":"2651","sns":[],"c":"symbols"},":chart:":{"sn":":chart:","cp":"1f4b9","sns":[],"c":"symbols"},":children_crossing:":{"sn":":children_crossing:","cp":"1f6b8","sns":[],"c":"symbols"},":cinema:":{"sn":":cinema:","cp":"1f3a6","sns":[],"c":"symbols"},":cl:":{"sn":":cl:","cp":"1f191","sns":[],"c":"symbols"},":clock1030:":{"sn":":clock1030:","cp":"1f565","sns":[],"c":"symbols"},":clock10:":{"sn":":clock10:","cp":"1f559","sns":[],"c":"symbols"},":clock1130:":{"sn":":clock1130:","cp":"1f566","sns":[],"c":"symbols"},":clock11:":{"sn":":clock11:","cp":"1f55a","sns":[],"c":"symbols"},":clock1230:":{"sn":":clock1230:","cp":"1f567","sns":[],"c":"symbols"},":clock12:":{"sn":":clock12:","cp":"1f55b","sns":[],"c":"symbols"},":clock130:":{"sn":":clock130:","cp":"1f55c","sns":[],"c":"symbols"},":clock1:":{"sn":":clock1:","cp":"1f550","sns":[],"c":"symbols"},":clock230:":{"sn":":clock230:","cp":"1f55d","sns":[],"c":"symbols"},":clock2:":{"sn":":clock2:","cp":"1f551","sns":[],"c":"symbols"},":clock330:":{"sn":":clock330:","cp":"1f55e","sns":[],"c":"symbols"},":clock3:":{"sn":":clock3:","cp":"1f552","sns":[],"c":"symbols"},":clock430:":{"sn":":clock430:","cp":"1f55f","sns":[],"c":"symbols"},":clock4:":{"sn":":clock4:","cp":"1f553","sns":[],"c":"symbols"},":clock530:":{"sn":":clock530:","cp":"1f560","sns":[],"c":"symbols"},":clock5:":{"sn":":clock5:","cp":"1f554","sns":[],"c":"symbols"},":clock630:":{"sn":":clock630:","cp":"1f561","sns":[],"c":"symbols"},":clock6:":{"sn":":clock6:","cp":"1f555","sns":[],"c":"symbols"},":clock730:":{"sn":":clock730:","cp":"1f562","sns":[],"c":"symbols"},":clock7:":{"sn":":clock7:","cp":"1f556","sns":[],"c":"symbols"},":clock830:":{"sn":":clock830:","cp":"1f563","sns":[],"c":"symbols"},":clock8:":{"sn":":clock8:","cp":"1f557","sns":[],"c":"symbols"},":clock930:":{"sn":":clock930:","cp":"1f564","sns":[],"c":"symbols"},":clock9:":{"sn":":clock9:","cp":"1f558","sns":[],"c":"symbols"},":clubs:":{"sn":":clubs:","cp":"2663","sns":[],"c":"symbols"},":congratulations:":{"sn":":congratulations:","cp":"3297","sns":[],"c":"symbols"},":cool:":{"sn":":cool:","cp":"1f192","sns":[],"c":"symbols"},":copyright:":{"sn":":copyright:","cp":"a9","sns":[],"c":"symbols"},":cross:":{"sn":":cross:","cp":"271d","sns":[":latin_cross:"],"c":"symbols"},":cupid:":{"sn":":cupid:","cp":"1f498","sns":[],"c":"symbols"},":curly_loop:":{"sn":":curly_loop:","cp":"27b0","sns":[],"c":"symbols"},":currency_exchange:":{"sn":":currency_exchange:","cp":"1f4b1","sns":[],"c":"symbols"},":customs:":{"sn":":customs:","cp":"1f6c3","sns":[],"c":"symbols"},":cyclone:":{"sn":":cyclone:","cp":"1f300","sns":[],"c":"symbols"},":diamond_shape_with_a_dot_inside:":{"sn":":diamond_shape_with_a_dot_inside:","cp":"1f4a0","sns":[],"c":"symbols"},":diamonds:":{"sn":":diamonds:","cp":"2666","sns":[],"c":"symbols"},":do_not_litter:":{"sn":":do_not_litter:","cp":"1f6af","sns":[],"c":"symbols"},":eight:":{"sn":":eight:","cp":"38-fe0f-20e3","sns":[],"c":"symbols"},":eight_pointed_black_star:":{"sn":":eight_pointed_black_star:","cp":"2734","sns":[],"c":"symbols"},":eight_spoked_asterisk:":{"sn":":eight_spoked_asterisk:","cp":"2733","sns":[],"c":"symbols"},":eject:":{"sn":":eject:","cp":"23cf","sns":[":eject_symbol:"],"c":"symbols"},":end:":{"sn":":end:","cp":"1f51a","sns":[],"c":"symbols"},":exclamation:":{"sn":":exclamation:","cp":"2757","sns":[],"c":"symbols"},":eye_in_speech_bubble:":{"sn":":eye_in_speech_bubble:","cp":"1f441-fe0f-200d-1f5e8-fe0f","sns":[],"c":"symbols"},":fast_forward:":{"sn":":fast_forward:","cp":"23e9","sns":[],"c":"symbols"},":female_sign:":{"sn":":female_sign:","cp":"2640","sns":[],"c":"symbols"},":five:":{"sn":":five:","cp":"35-fe0f-20e3","sns":[],"c":"symbols"},":fleur-de-lis:":{"sn":":fleur-de-lis:","cp":"269c","sns":[],"c":"symbols"},":flower_playing_cards:":{"sn":":flower_playing_cards:","cp":"1f3b4","sns":[],"c":"symbols"},":four:":{"sn":":four:","cp":"34-fe0f-20e3","sns":[],"c":"symbols"},":free:":{"sn":":free:","cp":"1f193","sns":[],"c":"symbols"},":gemini:":{"sn":":gemini:","cp":"264a","sns":[],"c":"symbols"},":gift_heart:":{"sn":":gift_heart:","cp":"1f49d","sns":[],"c":"symbols"},":globe_with_meridians:":{"sn":":globe_with_meridians:","cp":"1f310","sns":[],"c":"symbols"},":green_heart:":{"sn":":green_heart:","cp":"1f49a","sns":[],"c":"symbols"},":grey_exclamation:":{"sn":":grey_exclamation:","cp":"2755","sns":[],"c":"symbols"},":grey_question:":{"sn":":grey_question:","cp":"2754","sns":[],"c":"symbols"},":hash:":{"sn":":hash:","cp":"23-fe0f-20e3","sns":[],"c":"symbols"},":heart:":{"sn":":heart:","cp":"2764","sns":[],"c":"symbols"},":heart_decoration:":{"sn":":heart_decoration:","cp":"1f49f","sns":[],"c":"symbols"},":heart_exclamation:":{"sn":":heart_exclamation:","cp":"2763","sns":[":heavy_heart_exclamation_mark_ornament:"],"c":"symbols"},":heartbeat:":{"sn":":heartbeat:","cp":"1f493","sns":[],"c":"symbols"},":heartpulse:":{"sn":":heartpulse:","cp":"1f497","sns":[],"c":"symbols"},":hearts:":{"sn":":hearts:","cp":"2665","sns":[],"c":"symbols"},":heavy_check_mark:":{"sn":":heavy_check_mark:","cp":"2714","sns":[],"c":"symbols"},":heavy_division_sign:":{"sn":":heavy_division_sign:","cp":"2797","sns":[],"c":"symbols"},":heavy_dollar_sign:":{"sn":":heavy_dollar_sign:","cp":"1f4b2","sns":[],"c":"symbols"},":heavy_minus_sign:":{"sn":":heavy_minus_sign:","cp":"2796","sns":[],"c":"symbols"},":heavy_multiplication_x:":{"sn":":heavy_multiplication_x:","cp":"2716","sns":[],"c":"symbols"},":heavy_plus_sign:":{"sn":":heavy_plus_sign:","cp":"2795","sns":[],"c":"symbols"},":high_brightness:":{"sn":":high_brightness:","cp":"1f506","sns":[],"c":"symbols"},":hotsprings:":{"sn":":hotsprings:","cp":"2668","sns":[],"c":"symbols"},":id:":{"sn":":id:","cp":"1f194","sns":[],"c":"symbols"},":ideograph_advantage:":{"sn":":ideograph_advantage:","cp":"1f250","sns":[],"c":"symbols"},":information_source:":{"sn":":information_source:","cp":"2139","sns":[],"c":"symbols"},":interrobang:":{"sn":":interrobang:","cp":"2049","sns":[],"c":"symbols"},":keycap_ten:":{"sn":":keycap_ten:","cp":"1f51f","sns":[],"c":"symbols"},":koko:":{"sn":":koko:","cp":"1f201","sns":[],"c":"symbols"},":large_blue_diamond:":{"sn":":large_blue_diamond:","cp":"1f537","sns":[],"c":"symbols"},":large_orange_diamond:":{"sn":":large_orange_diamond:","cp":"1f536","sns":[],"c":"symbols"},":left_luggage:":{"sn":":left_luggage:","cp":"1f6c5","sns":[],"c":"symbols"},":left_right_arrow:":{"sn":":left_right_arrow:","cp":"2194","sns":[],"c":"symbols"},":leftwards_arrow_with_hook:":{"sn":":leftwards_arrow_with_hook:","cp":"21a9","sns":[],"c":"symbols"},":leo:":{"sn":":leo:","cp":"264c","sns":[],"c":"symbols"},":libra:":{"sn":":libra:","cp":"264e","sns":[],"c":"symbols"},":loop:":{"sn":":loop:","cp":"27bf","sns":[],"c":"symbols"},":loud_sound:":{"sn":":loud_sound:","cp":"1f50a","sns":[],"c":"symbols"},":loudspeaker:":{"sn":":loudspeaker:","cp":"1f4e2","sns":[],"c":"symbols"},":low_brightness:":{"sn":":low_brightness:","cp":"1f505","sns":[],"c":"symbols"},":m:":{"sn":":m:","cp":"24c2","sns":[],"c":"symbols"},":mahjong:":{"sn":":mahjong:","cp":"1f004","sns":[],"c":"symbols"},":male_sign:":{"sn":":male_sign:","cp":"2642","sns":[],"c":"symbols"},":medical_symbol:":{"sn":":medical_symbol:","cp":"2695","sns":[],"c":"symbols"},":mega:":{"sn":":mega:","cp":"1f4e3","sns":[],"c":"symbols"},":menorah:":{"sn":":menorah:","cp":"1f54e","sns":[],"c":"symbols"},":mens:":{"sn":":mens:","cp":"1f6b9","sns":[],"c":"symbols"},":mobile_phone_off:":{"sn":":mobile_phone_off:","cp":"1f4f4","sns":[],"c":"symbols"},":musical_note:":{"sn":":musical_note:","cp":"1f3b5","sns":[],"c":"symbols"},":mute:":{"sn":":mute:","cp":"1f507","sns":[],"c":"symbols"},":name_badge:":{"sn":":name_badge:","cp":"1f4db","sns":[],"c":"symbols"},":negative_squared_cross_mark:":{"sn":":negative_squared_cross_mark:","cp":"274e","sns":[],"c":"symbols"},":new:":{"sn":":new:","cp":"1f195","sns":[],"c":"symbols"},":ng:":{"sn":":ng:","cp":"1f196","sns":[],"c":"symbols"},":nine:":{"sn":":nine:","cp":"39-fe0f-20e3","sns":[],"c":"symbols"},":no_bell:":{"sn":":no_bell:","cp":"1f515","sns":[],"c":"symbols"},":no_bicycles:":{"sn":":no_bicycles:","cp":"1f6b3","sns":[],"c":"symbols"},":no_entry:":{"sn":":no_entry:","cp":"26d4","sns":[],"c":"symbols"},":no_entry_sign:":{"sn":":no_entry_sign:","cp":"1f6ab","sns":[],"c":"symbols"},":no_mobile_phones:":{"sn":":no_mobile_phones:","cp":"1f4f5","sns":[],"c":"symbols"},":no_pedestrians:":{"sn":":no_pedestrians:","cp":"1f6b7","sns":[],"c":"symbols"},":no_smoking:":{"sn":":no_smoking:","cp":"1f6ad","sns":[],"c":"symbols"},":non-potable_water:":{"sn":":non-potable_water:","cp":"1f6b1","sns":[],"c":"symbols"},":notes:":{"sn":":notes:","cp":"1f3b6","sns":[],"c":"symbols"},":o2:":{"sn":":o2:","cp":"1f17e","sns":[],"c":"symbols"},":o:":{"sn":":o:","cp":"2b55","sns":[],"c":"symbols"},":octagonal_sign:":{"sn":":octagonal_sign:","cp":"1f6d1","sns":[":stop_sign:"],"c":"symbols"},":ok:":{"sn":":ok:","cp":"1f197","sns":[],"c":"symbols"},":om_symbol:":{"sn":":om_symbol:","cp":"1f549","sns":[],"c":"symbols"},":on:":{"sn":":on:","cp":"1f51b","sns":[],"c":"symbols"},":one:":{"sn":":one:","cp":"31-fe0f-20e3","sns":[],"c":"symbols"},":ophiuchus:":{"sn":":ophiuchus:","cp":"26ce","sns":[],"c":"symbols"},":orange_heart:":{"sn":":orange_heart:","cp":"1f9e1","sns":[],"c":"symbols"},":orthodox_cross:":{"sn":":orthodox_cross:","cp":"2626","sns":[],"c":"symbols"},":parking:":{"sn":":parking:","cp":"1f17f","sns":[],"c":"symbols"},":part_alternation_mark:":{"sn":":part_alternation_mark:","cp":"303d","sns":[],"c":"symbols"},":passport_control:":{"sn":":passport_control:","cp":"1f6c2","sns":[],"c":"symbols"},":pause_button:":{"sn":":pause_button:","cp":"23f8","sns":[":double_vertical_bar:"],"c":"symbols"},":peace:":{"sn":":peace:","cp":"262e","sns":[":peace_symbol:"],"c":"symbols"},":pisces:":{"sn":":pisces:","cp":"2653","sns":[],"c":"symbols"},":place_of_worship:":{"sn":":place_of_worship:","cp":"1f6d0","sns":[":worship_symbol:"],"c":"symbols"},":play_pause:":{"sn":":play_pause:","cp":"23ef","sns":[],"c":"symbols"},":purple_heart:":{"sn":":purple_heart:","cp":"1f49c","sns":[],"c":"symbols"},":put_litter_in_its_place:":{"sn":":put_litter_in_its_place:","cp":"1f6ae","sns":[],"c":"symbols"},":question:":{"sn":":question:","cp":"2753","sns":[],"c":"symbols"},":radio_button:":{"sn":":radio_button:","cp":"1f518","sns":[],"c":"symbols"},":radioactive:":{"sn":":radioactive:","cp":"2622","sns":[":radioactive_sign:"],"c":"symbols"},":record_button:":{"sn":":record_button:","cp":"23fa","sns":[],"c":"symbols"},":recycle:":{"sn":":recycle:","cp":"267b","sns":[],"c":"symbols"},":red_circle:":{"sn":":red_circle:","cp":"1f534","sns":[],"c":"symbols"},":regional_indicator_a:":{"sn":":regional_indicator_a:","cp":"1f1e6","sns":[],"c":"symbols"},":regional_indicator_b:":{"sn":":regional_indicator_b:","cp":"1f1e7","sns":[],"c":"symbols"},":regional_indicator_c:":{"sn":":regional_indicator_c:","cp":"1f1e8","sns":[],"c":"symbols"},":regional_indicator_d:":{"sn":":regional_indicator_d:","cp":"1f1e9","sns":[],"c":"symbols"},":regional_indicator_e:":{"sn":":regional_indicator_e:","cp":"1f1ea","sns":[],"c":"symbols"},":regional_indicator_f:":{"sn":":regional_indicator_f:","cp":"1f1eb","sns":[],"c":"symbols"},":regional_indicator_g:":{"sn":":regional_indicator_g:","cp":"1f1ec","sns":[],"c":"symbols"},":regional_indicator_h:":{"sn":":regional_indicator_h:","cp":"1f1ed","sns":[],"c":"symbols"},":regional_indicator_i:":{"sn":":regional_indicator_i:","cp":"1f1ee","sns":[],"c":"symbols"},":regional_indicator_j:":{"sn":":regional_indicator_j:","cp":"1f1ef","sns":[],"c":"symbols"},":regional_indicator_k:":{"sn":":regional_indicator_k:","cp":"1f1f0","sns":[],"c":"symbols"},":regional_indicator_l:":{"sn":":regional_indicator_l:","cp":"1f1f1","sns":[],"c":"symbols"},":regional_indicator_m:":{"sn":":regional_indicator_m:","cp":"1f1f2","sns":[],"c":"symbols"},":regional_indicator_n:":{"sn":":regional_indicator_n:","cp":"1f1f3","sns":[],"c":"symbols"},":regional_indicator_o:":{"sn":":regional_indicator_o:","cp":"1f1f4","sns":[],"c":"symbols"},":regional_indicator_p:":{"sn":":regional_indicator_p:","cp":"1f1f5","sns":[],"c":"symbols"},":regional_indicator_q:":{"sn":":regional_indicator_q:","cp":"1f1f6","sns":[],"c":"symbols"},":regional_indicator_r:":{"sn":":regional_indicator_r:","cp":"1f1f7","sns":[],"c":"symbols"},":regional_indicator_s:":{"sn":":regional_indicator_s:","cp":"1f1f8","sns":[],"c":"symbols"},":regional_indicator_t:":{"sn":":regional_indicator_t:","cp":"1f1f9","sns":[],"c":"symbols"},":regional_indicator_u:":{"sn":":regional_indicator_u:","cp":"1f1fa","sns":[],"c":"symbols"},":regional_indicator_v:":{"sn":":regional_indicator_v:","cp":"1f1fb","sns":[],"c":"symbols"},":regional_indicator_w:":{"sn":":regional_indicator_w:","cp":"1f1fc","sns":[],"c":"symbols"},":regional_indicator_x:":{"sn":":regional_indicator_x:","cp":"1f1fd","sns":[],"c":"symbols"},":regional_indicator_y:":{"sn":":regional_indicator_y:","cp":"1f1fe","sns":[],"c":"symbols"},":regional_indicator_z:":{"sn":":regional_indicator_z:","cp":"1f1ff","sns":[],"c":"symbols"},":registered:":{"sn":":registered:","cp":"ae","sns":[],"c":"symbols"},":repeat:":{"sn":":repeat:","cp":"1f501","sns":[],"c":"symbols"},":repeat_one:":{"sn":":repeat_one:","cp":"1f502","sns":[],"c":"symbols"},":restroom:":{"sn":":restroom:","cp":"1f6bb","sns":[],"c":"symbols"},":revolving_hearts:":{"sn":":revolving_hearts:","cp":"1f49e","sns":[],"c":"symbols"},":rewind:":{"sn":":rewind:","cp":"23ea","sns":[],"c":"symbols"},":sa:":{"sn":":sa:","cp":"1f202","sns":[],"c":"symbols"},":sagittarius:":{"sn":":sagittarius:","cp":"2650","sns":[],"c":"symbols"},":scorpius:":{"sn":":scorpius:","cp":"264f","sns":[],"c":"symbols"},":secret:":{"sn":":secret:","cp":"3299","sns":[],"c":"symbols"},":seven:":{"sn":":seven:","cp":"37-fe0f-20e3","sns":[],"c":"symbols"},":signal_strength:":{"sn":":signal_strength:","cp":"1f4f6","sns":[],"c":"symbols"},":six:":{"sn":":six:","cp":"36-fe0f-20e3","sns":[],"c":"symbols"},":six_pointed_star:":{"sn":":six_pointed_star:","cp":"1f52f","sns":[],"c":"symbols"},":skull_crossbones:":{"sn":":skull_crossbones:","cp":"2620","sns":[":skull_and_crossbones:"],"c":"symbols"},":small_blue_diamond:":{"sn":":small_blue_diamond:","cp":"1f539","sns":[],"c":"symbols"},":small_orange_diamond:":{"sn":":small_orange_diamond:","cp":"1f538","sns":[],"c":"symbols"},":small_red_triangle:":{"sn":":small_red_triangle:","cp":"1f53a","sns":[],"c":"symbols"},":small_red_triangle_down:":{"sn":":small_red_triangle_down:","cp":"1f53b","sns":[],"c":"symbols"},":soon:":{"sn":":soon:","cp":"1f51c","sns":[],"c":"symbols"},":sos:":{"sn":":sos:","cp":"1f198","sns":[],"c":"symbols"},":sound:":{"sn":":sound:","cp":"1f509","sns":[],"c":"symbols"},":spades:":{"sn":":spades:","cp":"2660","sns":[],"c":"symbols"},":sparkle:":{"sn":":sparkle:","cp":"2747","sns":[],"c":"symbols"},":sparkling_heart:":{"sn":":sparkling_heart:","cp":"1f496","sns":[],"c":"symbols"},":speaker:":{"sn":":speaker:","cp":"1f508","sns":[],"c":"symbols"},":speech_balloon:":{"sn":":speech_balloon:","cp":"1f4ac","sns":[],"c":"symbols"},":speech_left:":{"sn":":speech_left:","cp":"1f5e8-fe0f","sns":[":left_speech_bubble:"],"c":"symbols"},":star_and_crescent:":{"sn":":star_and_crescent:","cp":"262a","sns":[],"c":"symbols"},":star_of_david:":{"sn":":star_of_david:","cp":"2721","sns":[],"c":"symbols"},":stop_button:":{"sn":":stop_button:","cp":"23f9","sns":[],"c":"symbols"},":symbols:":{"sn":":symbols:","cp":"1f523","sns":[],"c":"symbols"},":taurus:":{"sn":":taurus:","cp":"2649","sns":[],"c":"symbols"},":thought_balloon:":{"sn":":thought_balloon:","cp":"1f4ad","sns":[],"c":"symbols"},":three:":{"sn":":three:","cp":"33-fe0f-20e3","sns":[],"c":"symbols"},":tm:":{"sn":":tm:","cp":"2122","sns":[],"c":"symbols"},":top:":{"sn":":top:","cp":"1f51d","sns":[],"c":"symbols"},":track_next:":{"sn":":track_next:","cp":"23ed","sns":[":next_track:"],"c":"symbols"},":track_previous:":{"sn":":track_previous:","cp":"23ee","sns":[":previous_track:"],"c":"symbols"},":trident:":{"sn":":trident:","cp":"1f531","sns":[],"c":"symbols"},":twisted_rightwards_arrows:":{"sn":":twisted_rightwards_arrows:","cp":"1f500","sns":[],"c":"symbols"},":two:":{"sn":":two:","cp":"32-fe0f-20e3","sns":[],"c":"symbols"},":two_hearts:":{"sn":":two_hearts:","cp":"1f495","sns":[],"c":"symbols"},":u5272:":{"sn":":u5272:","cp":"1f239","sns":[],"c":"symbols"},":u5408:":{"sn":":u5408:","cp":"1f234","sns":[],"c":"symbols"},":u55b6:":{"sn":":u55b6:","cp":"1f23a","sns":[],"c":"symbols"},":u6307:":{"sn":":u6307:","cp":"1f22f","sns":[],"c":"symbols"},":u6708:":{"sn":":u6708:","cp":"1f237","sns":[],"c":"symbols"},":u6709:":{"sn":":u6709:","cp":"1f236","sns":[],"c":"symbols"},":u6e80:":{"sn":":u6e80:","cp":"1f235","sns":[],"c":"symbols"},":u7121:":{"sn":":u7121:","cp":"1f21a","sns":[],"c":"symbols"},":u7533:":{"sn":":u7533:","cp":"1f238","sns":[],"c":"symbols"},":u7981:":{"sn":":u7981:","cp":"1f232","sns":[],"c":"symbols"},":u7a7a:":{"sn":":u7a7a:","cp":"1f233","sns":[],"c":"symbols"},":underage:":{"sn":":underage:","cp":"1f51e","sns":[],"c":"symbols"},":up:":{"sn":":up:","cp":"1f199","sns":[],"c":"symbols"},":vibration_mode:":{"sn":":vibration_mode:","cp":"1f4f3","sns":[],"c":"symbols"},":virgo:":{"sn":":virgo:","cp":"264d","sns":[],"c":"symbols"},":vs:":{"sn":":vs:","cp":"1f19a","sns":[],"c":"symbols"},":warning:":{"sn":":warning:","cp":"26a0","sns":[],"c":"symbols"},":wavy_dash:":{"sn":":wavy_dash:","cp":"3030","sns":[],"c":"symbols"},":wc:":{"sn":":wc:","cp":"1f6be","sns":[],"c":"symbols"},":wheel_of_dharma:":{"sn":":wheel_of_dharma:","cp":"2638","sns":[],"c":"symbols"},":wheelchair:":{"sn":":wheelchair:","cp":"267f","sns":[],"c":"symbols"},":white_check_mark:":{"sn":":white_check_mark:","cp":"2705","sns":[],"c":"symbols"},":white_circle:":{"sn":":white_circle:","cp":"26aa","sns":[],"c":"symbols"},":white_flower:":{"sn":":white_flower:","cp":"1f4ae","sns":[],"c":"symbols"},":white_large_square:":{"sn":":white_large_square:","cp":"2b1c","sns":[],"c":"symbols"},":white_medium_small_square:":{"sn":":white_medium_small_square:","cp":"25fd","sns":[],"c":"symbols"},":white_medium_square:":{"sn":":white_medium_square:","cp":"25fb","sns":[],"c":"symbols"},":white_small_square:":{"sn":":white_small_square:","cp":"25ab","sns":[],"c":"symbols"},":white_square_button:":{"sn":":white_square_button:","cp":"1f533","sns":[],"c":"symbols"},":womens:":{"sn":":womens:","cp":"1f6ba","sns":[],"c":"symbols"},":x:":{"sn":":x:","cp":"274c","sns":[],"c":"symbols"},":yellow_heart:":{"sn":":yellow_heart:","cp":"1f49b","sns":[],"c":"symbols"},":yin_yang:":{"sn":":yin_yang:","cp":"262f","sns":[],"c":"symbols"},":zero:":{"sn":":zero:","cp":"30-fe0f-20e3","sns":[],"c":"symbols"},":zzz:":{"sn":":zzz:","cp":"1f4a4","sns":[],"c":"symbols"}},"flags":{":checkered_flag:":{"sn":":checkered_flag:","cp":"1f3c1","sns":[],"c":"flags"},":crossed_flags:":{"sn":":crossed_flags:","cp":"1f38c","sns":[],"c":"flags"},":england:":{"sn":":england:","cp":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","sns":[],"c":"flags"},":flag_ac:":{"sn":":flag_ac:","cp":"1f1e6-1f1e8","sns":[":ac:"],"c":"flags"},":flag_ad:":{"sn":":flag_ad:","cp":"1f1e6-1f1e9","sns":[":ad:"],"c":"flags"},":flag_ae:":{"sn":":flag_ae:","cp":"1f1e6-1f1ea","sns":[":ae:"],"c":"flags"},":flag_af:":{"sn":":flag_af:","cp":"1f1e6-1f1eb","sns":[":af:"],"c":"flags"},":flag_ag:":{"sn":":flag_ag:","cp":"1f1e6-1f1ec","sns":[":ag:"],"c":"flags"},":flag_ai:":{"sn":":flag_ai:","cp":"1f1e6-1f1ee","sns":[":ai:"],"c":"flags"},":flag_al:":{"sn":":flag_al:","cp":"1f1e6-1f1f1","sns":[":al:"],"c":"flags"},":flag_am:":{"sn":":flag_am:","cp":"1f1e6-1f1f2","sns":[":am:"],"c":"flags"},":flag_ao:":{"sn":":flag_ao:","cp":"1f1e6-1f1f4","sns":[":ao:"],"c":"flags"},":flag_aq:":{"sn":":flag_aq:","cp":"1f1e6-1f1f6","sns":[":aq:"],"c":"flags"},":flag_ar:":{"sn":":flag_ar:","cp":"1f1e6-1f1f7","sns":[":ar:"],"c":"flags"},":flag_as:":{"sn":":flag_as:","cp":"1f1e6-1f1f8","sns":[":as:"],"c":"flags"},":flag_at:":{"sn":":flag_at:","cp":"1f1e6-1f1f9","sns":[":at:"],"c":"flags"},":flag_au:":{"sn":":flag_au:","cp":"1f1e6-1f1fa","sns":[":au:"],"c":"flags"},":flag_aw:":{"sn":":flag_aw:","cp":"1f1e6-1f1fc","sns":[":aw:"],"c":"flags"},":flag_ax:":{"sn":":flag_ax:","cp":"1f1e6-1f1fd","sns":[":ax:"],"c":"flags"},":flag_az:":{"sn":":flag_az:","cp":"1f1e6-1f1ff","sns":[":az:"],"c":"flags"},":flag_ba:":{"sn":":flag_ba:","cp":"1f1e7-1f1e6","sns":[":ba:"],"c":"flags"},":flag_bb:":{"sn":":flag_bb:","cp":"1f1e7-1f1e7","sns":[":bb:"],"c":"flags"},":flag_bd:":{"sn":":flag_bd:","cp":"1f1e7-1f1e9","sns":[":bd:"],"c":"flags"},":flag_be:":{"sn":":flag_be:","cp":"1f1e7-1f1ea","sns":[":be:"],"c":"flags"},":flag_bf:":{"sn":":flag_bf:","cp":"1f1e7-1f1eb","sns":[":bf:"],"c":"flags"},":flag_bg:":{"sn":":flag_bg:","cp":"1f1e7-1f1ec","sns":[":bg:"],"c":"flags"},":flag_bh:":{"sn":":flag_bh:","cp":"1f1e7-1f1ed","sns":[":bh:"],"c":"flags"},":flag_bi:":{"sn":":flag_bi:","cp":"1f1e7-1f1ee","sns":[":bi:"],"c":"flags"},":flag_bj:":{"sn":":flag_bj:","cp":"1f1e7-1f1ef","sns":[":bj:"],"c":"flags"},":flag_bl:":{"sn":":flag_bl:","cp":"1f1e7-1f1f1","sns":[":bl:"],"c":"flags"},":flag_black:":{"sn":":flag_black:","cp":"1f3f4","sns":[":waving_black_flag:"],"c":"flags"},":flag_bm:":{"sn":":flag_bm:","cp":"1f1e7-1f1f2","sns":[":bm:"],"c":"flags"},":flag_bn:":{"sn":":flag_bn:","cp":"1f1e7-1f1f3","sns":[":bn:"],"c":"flags"},":flag_bo:":{"sn":":flag_bo:","cp":"1f1e7-1f1f4","sns":[":bo:"],"c":"flags"},":flag_bq:":{"sn":":flag_bq:","cp":"1f1e7-1f1f6","sns":[":bq:"],"c":"flags"},":flag_br:":{"sn":":flag_br:","cp":"1f1e7-1f1f7","sns":[":br:"],"c":"flags"},":flag_bs:":{"sn":":flag_bs:","cp":"1f1e7-1f1f8","sns":[":bs:"],"c":"flags"},":flag_bt:":{"sn":":flag_bt:","cp":"1f1e7-1f1f9","sns":[":bt:"],"c":"flags"},":flag_bv:":{"sn":":flag_bv:","cp":"1f1e7-1f1fb","sns":[":bv:"],"c":"flags"},":flag_bw:":{"sn":":flag_bw:","cp":"1f1e7-1f1fc","sns":[":bw:"],"c":"flags"},":flag_by:":{"sn":":flag_by:","cp":"1f1e7-1f1fe","sns":[":by:"],"c":"flags"},":flag_bz:":{"sn":":flag_bz:","cp":"1f1e7-1f1ff","sns":[":bz:"],"c":"flags"},":flag_ca:":{"sn":":flag_ca:","cp":"1f1e8-1f1e6","sns":[":ca:"],"c":"flags"},":flag_cc:":{"sn":":flag_cc:","cp":"1f1e8-1f1e8","sns":[":cc:"],"c":"flags"},":flag_cd:":{"sn":":flag_cd:","cp":"1f1e8-1f1e9","sns":[":congo:"],"c":"flags"},":flag_cf:":{"sn":":flag_cf:","cp":"1f1e8-1f1eb","sns":[":cf:"],"c":"flags"},":flag_cg:":{"sn":":flag_cg:","cp":"1f1e8-1f1ec","sns":[":cg:"],"c":"flags"},":flag_ch:":{"sn":":flag_ch:","cp":"1f1e8-1f1ed","sns":[":ch:"],"c":"flags"},":flag_ci:":{"sn":":flag_ci:","cp":"1f1e8-1f1ee","sns":[":ci:"],"c":"flags"},":flag_ck:":{"sn":":flag_ck:","cp":"1f1e8-1f1f0","sns":[":ck:"],"c":"flags"},":flag_cl:":{"sn":":flag_cl:","cp":"1f1e8-1f1f1","sns":[":chile:"],"c":"flags"},":flag_cm:":{"sn":":flag_cm:","cp":"1f1e8-1f1f2","sns":[":cm:"],"c":"flags"},":flag_cn:":{"sn":":flag_cn:","cp":"1f1e8-1f1f3","sns":[":cn:"],"c":"flags"},":flag_co:":{"sn":":flag_co:","cp":"1f1e8-1f1f4","sns":[":co:"],"c":"flags"},":flag_cp:":{"sn":":flag_cp:","cp":"1f1e8-1f1f5","sns":[":cp:"],"c":"flags"},":flag_cr:":{"sn":":flag_cr:","cp":"1f1e8-1f1f7","sns":[":cr:"],"c":"flags"},":flag_cu:":{"sn":":flag_cu:","cp":"1f1e8-1f1fa","sns":[":cu:"],"c":"flags"},":flag_cv:":{"sn":":flag_cv:","cp":"1f1e8-1f1fb","sns":[":cv:"],"c":"flags"},":flag_cw:":{"sn":":flag_cw:","cp":"1f1e8-1f1fc","sns":[":cw:"],"c":"flags"},":flag_cx:":{"sn":":flag_cx:","cp":"1f1e8-1f1fd","sns":[":cx:"],"c":"flags"},":flag_cy:":{"sn":":flag_cy:","cp":"1f1e8-1f1fe","sns":[":cy:"],"c":"flags"},":flag_cz:":{"sn":":flag_cz:","cp":"1f1e8-1f1ff","sns":[":cz:"],"c":"flags"},":flag_de:":{"sn":":flag_de:","cp":"1f1e9-1f1ea","sns":[":de:"],"c":"flags"},":flag_dg:":{"sn":":flag_dg:","cp":"1f1e9-1f1ec","sns":[":dg:"],"c":"flags"},":flag_dj:":{"sn":":flag_dj:","cp":"1f1e9-1f1ef","sns":[":dj:"],"c":"flags"},":flag_dk:":{"sn":":flag_dk:","cp":"1f1e9-1f1f0","sns":[":dk:"],"c":"flags"},":flag_dm:":{"sn":":flag_dm:","cp":"1f1e9-1f1f2","sns":[":dm:"],"c":"flags"},":flag_do:":{"sn":":flag_do:","cp":"1f1e9-1f1f4","sns":[":do:"],"c":"flags"},":flag_dz:":{"sn":":flag_dz:","cp":"1f1e9-1f1ff","sns":[":dz:"],"c":"flags"},":flag_ea:":{"sn":":flag_ea:","cp":"1f1ea-1f1e6","sns":[":ea:"],"c":"flags"},":flag_ec:":{"sn":":flag_ec:","cp":"1f1ea-1f1e8","sns":[":ec:"],"c":"flags"},":flag_ee:":{"sn":":flag_ee:","cp":"1f1ea-1f1ea","sns":[":ee:"],"c":"flags"},":flag_eg:":{"sn":":flag_eg:","cp":"1f1ea-1f1ec","sns":[":eg:"],"c":"flags"},":flag_eh:":{"sn":":flag_eh:","cp":"1f1ea-1f1ed","sns":[":eh:"],"c":"flags"},":flag_er:":{"sn":":flag_er:","cp":"1f1ea-1f1f7","sns":[":er:"],"c":"flags"},":flag_es:":{"sn":":flag_es:","cp":"1f1ea-1f1f8","sns":[":es:"],"c":"flags"},":flag_et:":{"sn":":flag_et:","cp":"1f1ea-1f1f9","sns":[":et:"],"c":"flags"},":flag_eu:":{"sn":":flag_eu:","cp":"1f1ea-1f1fa","sns":[":eu:"],"c":"flags"},":flag_fi:":{"sn":":flag_fi:","cp":"1f1eb-1f1ee","sns":[":fi:"],"c":"flags"},":flag_fj:":{"sn":":flag_fj:","cp":"1f1eb-1f1ef","sns":[":fj:"],"c":"flags"},":flag_fk:":{"sn":":flag_fk:","cp":"1f1eb-1f1f0","sns":[":fk:"],"c":"flags"},":flag_fm:":{"sn":":flag_fm:","cp":"1f1eb-1f1f2","sns":[":fm:"],"c":"flags"},":flag_fo:":{"sn":":flag_fo:","cp":"1f1eb-1f1f4","sns":[":fo:"],"c":"flags"},":flag_fr:":{"sn":":flag_fr:","cp":"1f1eb-1f1f7","sns":[":fr:"],"c":"flags"},":flag_ga:":{"sn":":flag_ga:","cp":"1f1ec-1f1e6","sns":[":ga:"],"c":"flags"},":flag_gb:":{"sn":":flag_gb:","cp":"1f1ec-1f1e7","sns":[":gb:"],"c":"flags"},":flag_gd:":{"sn":":flag_gd:","cp":"1f1ec-1f1e9","sns":[":gd:"],"c":"flags"},":flag_ge:":{"sn":":flag_ge:","cp":"1f1ec-1f1ea","sns":[":ge:"],"c":"flags"},":flag_gf:":{"sn":":flag_gf:","cp":"1f1ec-1f1eb","sns":[":gf:"],"c":"flags"},":flag_gg:":{"sn":":flag_gg:","cp":"1f1ec-1f1ec","sns":[":gg:"],"c":"flags"},":flag_gh:":{"sn":":flag_gh:","cp":"1f1ec-1f1ed","sns":[":gh:"],"c":"flags"},":flag_gi:":{"sn":":flag_gi:","cp":"1f1ec-1f1ee","sns":[":gi:"],"c":"flags"},":flag_gl:":{"sn":":flag_gl:","cp":"1f1ec-1f1f1","sns":[":gl:"],"c":"flags"},":flag_gm:":{"sn":":flag_gm:","cp":"1f1ec-1f1f2","sns":[":gm:"],"c":"flags"},":flag_gn:":{"sn":":flag_gn:","cp":"1f1ec-1f1f3","sns":[":gn:"],"c":"flags"},":flag_gp:":{"sn":":flag_gp:","cp":"1f1ec-1f1f5","sns":[":gp:"],"c":"flags"},":flag_gq:":{"sn":":flag_gq:","cp":"1f1ec-1f1f6","sns":[":gq:"],"c":"flags"},":flag_gr:":{"sn":":flag_gr:","cp":"1f1ec-1f1f7","sns":[":gr:"],"c":"flags"},":flag_gs:":{"sn":":flag_gs:","cp":"1f1ec-1f1f8","sns":[":gs:"],"c":"flags"},":flag_gt:":{"sn":":flag_gt:","cp":"1f1ec-1f1f9","sns":[":gt:"],"c":"flags"},":flag_gu:":{"sn":":flag_gu:","cp":"1f1ec-1f1fa","sns":[":gu:"],"c":"flags"},":flag_gw:":{"sn":":flag_gw:","cp":"1f1ec-1f1fc","sns":[":gw:"],"c":"flags"},":flag_gy:":{"sn":":flag_gy:","cp":"1f1ec-1f1fe","sns":[":gy:"],"c":"flags"},":flag_hk:":{"sn":":flag_hk:","cp":"1f1ed-1f1f0","sns":[":hk:"],"c":"flags"},":flag_hm:":{"sn":":flag_hm:","cp":"1f1ed-1f1f2","sns":[":hm:"],"c":"flags"},":flag_hn:":{"sn":":flag_hn:","cp":"1f1ed-1f1f3","sns":[":hn:"],"c":"flags"},":flag_hr:":{"sn":":flag_hr:","cp":"1f1ed-1f1f7","sns":[":hr:"],"c":"flags"},":flag_ht:":{"sn":":flag_ht:","cp":"1f1ed-1f1f9","sns":[":ht:"],"c":"flags"},":flag_hu:":{"sn":":flag_hu:","cp":"1f1ed-1f1fa","sns":[":hu:"],"c":"flags"},":flag_ic:":{"sn":":flag_ic:","cp":"1f1ee-1f1e8","sns":[":ic:"],"c":"flags"},":flag_id:":{"sn":":flag_id:","cp":"1f1ee-1f1e9","sns":[":indonesia:"],"c":"flags"},":flag_ie:":{"sn":":flag_ie:","cp":"1f1ee-1f1ea","sns":[":ie:"],"c":"flags"},":flag_il:":{"sn":":flag_il:","cp":"1f1ee-1f1f1","sns":[":il:"],"c":"flags"},":flag_im:":{"sn":":flag_im:","cp":"1f1ee-1f1f2","sns":[":im:"],"c":"flags"},":flag_in:":{"sn":":flag_in:","cp":"1f1ee-1f1f3","sns":[":in:"],"c":"flags"},":flag_io:":{"sn":":flag_io:","cp":"1f1ee-1f1f4","sns":[":io:"],"c":"flags"},":flag_iq:":{"sn":":flag_iq:","cp":"1f1ee-1f1f6","sns":[":iq:"],"c":"flags"},":flag_ir:":{"sn":":flag_ir:","cp":"1f1ee-1f1f7","sns":[":ir:"],"c":"flags"},":flag_is:":{"sn":":flag_is:","cp":"1f1ee-1f1f8","sns":[":is:"],"c":"flags"},":flag_it:":{"sn":":flag_it:","cp":"1f1ee-1f1f9","sns":[":it:"],"c":"flags"},":flag_je:":{"sn":":flag_je:","cp":"1f1ef-1f1ea","sns":[":je:"],"c":"flags"},":flag_jm:":{"sn":":flag_jm:","cp":"1f1ef-1f1f2","sns":[":jm:"],"c":"flags"},":flag_jo:":{"sn":":flag_jo:","cp":"1f1ef-1f1f4","sns":[":jo:"],"c":"flags"},":flag_jp:":{"sn":":flag_jp:","cp":"1f1ef-1f1f5","sns":[":jp:"],"c":"flags"},":flag_ke:":{"sn":":flag_ke:","cp":"1f1f0-1f1ea","sns":[":ke:"],"c":"flags"},":flag_kg:":{"sn":":flag_kg:","cp":"1f1f0-1f1ec","sns":[":kg:"],"c":"flags"},":flag_kh:":{"sn":":flag_kh:","cp":"1f1f0-1f1ed","sns":[":kh:"],"c":"flags"},":flag_ki:":{"sn":":flag_ki:","cp":"1f1f0-1f1ee","sns":[":ki:"],"c":"flags"},":flag_km:":{"sn":":flag_km:","cp":"1f1f0-1f1f2","sns":[":km:"],"c":"flags"},":flag_kn:":{"sn":":flag_kn:","cp":"1f1f0-1f1f3","sns":[":kn:"],"c":"flags"},":flag_kp:":{"sn":":flag_kp:","cp":"1f1f0-1f1f5","sns":[":kp:"],"c":"flags"},":flag_kr:":{"sn":":flag_kr:","cp":"1f1f0-1f1f7","sns":[":kr:"],"c":"flags"},":flag_kw:":{"sn":":flag_kw:","cp":"1f1f0-1f1fc","sns":[":kw:"],"c":"flags"},":flag_ky:":{"sn":":flag_ky:","cp":"1f1f0-1f1fe","sns":[":ky:"],"c":"flags"},":flag_kz:":{"sn":":flag_kz:","cp":"1f1f0-1f1ff","sns":[":kz:"],"c":"flags"},":flag_la:":{"sn":":flag_la:","cp":"1f1f1-1f1e6","sns":[":la:"],"c":"flags"},":flag_lb:":{"sn":":flag_lb:","cp":"1f1f1-1f1e7","sns":[":lb:"],"c":"flags"},":flag_lc:":{"sn":":flag_lc:","cp":"1f1f1-1f1e8","sns":[":lc:"],"c":"flags"},":flag_li:":{"sn":":flag_li:","cp":"1f1f1-1f1ee","sns":[":li:"],"c":"flags"},":flag_lk:":{"sn":":flag_lk:","cp":"1f1f1-1f1f0","sns":[":lk:"],"c":"flags"},":flag_lr:":{"sn":":flag_lr:","cp":"1f1f1-1f1f7","sns":[":lr:"],"c":"flags"},":flag_ls:":{"sn":":flag_ls:","cp":"1f1f1-1f1f8","sns":[":ls:"],"c":"flags"},":flag_lt:":{"sn":":flag_lt:","cp":"1f1f1-1f1f9","sns":[":lt:"],"c":"flags"},":flag_lu:":{"sn":":flag_lu:","cp":"1f1f1-1f1fa","sns":[":lu:"],"c":"flags"},":flag_lv:":{"sn":":flag_lv:","cp":"1f1f1-1f1fb","sns":[":lv:"],"c":"flags"},":flag_ly:":{"sn":":flag_ly:","cp":"1f1f1-1f1fe","sns":[":ly:"],"c":"flags"},":flag_ma:":{"sn":":flag_ma:","cp":"1f1f2-1f1e6","sns":[":ma:"],"c":"flags"},":flag_mc:":{"sn":":flag_mc:","cp":"1f1f2-1f1e8","sns":[":mc:"],"c":"flags"},":flag_md:":{"sn":":flag_md:","cp":"1f1f2-1f1e9","sns":[":md:"],"c":"flags"},":flag_me:":{"sn":":flag_me:","cp":"1f1f2-1f1ea","sns":[":me:"],"c":"flags"},":flag_mf:":{"sn":":flag_mf:","cp":"1f1f2-1f1eb","sns":[":mf:"],"c":"flags"},":flag_mg:":{"sn":":flag_mg:","cp":"1f1f2-1f1ec","sns":[":mg:"],"c":"flags"},":flag_mh:":{"sn":":flag_mh:","cp":"1f1f2-1f1ed","sns":[":mh:"],"c":"flags"},":flag_mk:":{"sn":":flag_mk:","cp":"1f1f2-1f1f0","sns":[":mk:"],"c":"flags"},":flag_ml:":{"sn":":flag_ml:","cp":"1f1f2-1f1f1","sns":[":ml:"],"c":"flags"},":flag_mm:":{"sn":":flag_mm:","cp":"1f1f2-1f1f2","sns":[":mm:"],"c":"flags"},":flag_mn:":{"sn":":flag_mn:","cp":"1f1f2-1f1f3","sns":[":mn:"],"c":"flags"},":flag_mo:":{"sn":":flag_mo:","cp":"1f1f2-1f1f4","sns":[":mo:"],"c":"flags"},":flag_mp:":{"sn":":flag_mp:","cp":"1f1f2-1f1f5","sns":[":mp:"],"c":"flags"},":flag_mq:":{"sn":":flag_mq:","cp":"1f1f2-1f1f6","sns":[":mq:"],"c":"flags"},":flag_mr:":{"sn":":flag_mr:","cp":"1f1f2-1f1f7","sns":[":mr:"],"c":"flags"},":flag_ms:":{"sn":":flag_ms:","cp":"1f1f2-1f1f8","sns":[":ms:"],"c":"flags"},":flag_mt:":{"sn":":flag_mt:","cp":"1f1f2-1f1f9","sns":[":mt:"],"c":"flags"},":flag_mu:":{"sn":":flag_mu:","cp":"1f1f2-1f1fa","sns":[":mu:"],"c":"flags"},":flag_mv:":{"sn":":flag_mv:","cp":"1f1f2-1f1fb","sns":[":mv:"],"c":"flags"},":flag_mw:":{"sn":":flag_mw:","cp":"1f1f2-1f1fc","sns":[":mw:"],"c":"flags"},":flag_mx:":{"sn":":flag_mx:","cp":"1f1f2-1f1fd","sns":[":mx:"],"c":"flags"},":flag_my:":{"sn":":flag_my:","cp":"1f1f2-1f1fe","sns":[":my:"],"c":"flags"},":flag_mz:":{"sn":":flag_mz:","cp":"1f1f2-1f1ff","sns":[":mz:"],"c":"flags"},":flag_na:":{"sn":":flag_na:","cp":"1f1f3-1f1e6","sns":[":na:"],"c":"flags"},":flag_nc:":{"sn":":flag_nc:","cp":"1f1f3-1f1e8","sns":[":nc:"],"c":"flags"},":flag_ne:":{"sn":":flag_ne:","cp":"1f1f3-1f1ea","sns":[":ne:"],"c":"flags"},":flag_nf:":{"sn":":flag_nf:","cp":"1f1f3-1f1eb","sns":[":nf:"],"c":"flags"},":flag_ng:":{"sn":":flag_ng:","cp":"1f1f3-1f1ec","sns":[":nigeria:"],"c":"flags"},":flag_ni:":{"sn":":flag_ni:","cp":"1f1f3-1f1ee","sns":[":ni:"],"c":"flags"},":flag_nl:":{"sn":":flag_nl:","cp":"1f1f3-1f1f1","sns":[":nl:"],"c":"flags"},":flag_no:":{"sn":":flag_no:","cp":"1f1f3-1f1f4","sns":[":no:"],"c":"flags"},":flag_np:":{"sn":":flag_np:","cp":"1f1f3-1f1f5","sns":[":np:"],"c":"flags"},":flag_nr:":{"sn":":flag_nr:","cp":"1f1f3-1f1f7","sns":[":nr:"],"c":"flags"},":flag_nu:":{"sn":":flag_nu:","cp":"1f1f3-1f1fa","sns":[":nu:"],"c":"flags"},":flag_nz:":{"sn":":flag_nz:","cp":"1f1f3-1f1ff","sns":[":nz:"],"c":"flags"},":flag_om:":{"sn":":flag_om:","cp":"1f1f4-1f1f2","sns":[":om:"],"c":"flags"},":flag_pa:":{"sn":":flag_pa:","cp":"1f1f5-1f1e6","sns":[":pa:"],"c":"flags"},":flag_pe:":{"sn":":flag_pe:","cp":"1f1f5-1f1ea","sns":[":pe:"],"c":"flags"},":flag_pf:":{"sn":":flag_pf:","cp":"1f1f5-1f1eb","sns":[":pf:"],"c":"flags"},":flag_pg:":{"sn":":flag_pg:","cp":"1f1f5-1f1ec","sns":[":pg:"],"c":"flags"},":flag_ph:":{"sn":":flag_ph:","cp":"1f1f5-1f1ed","sns":[":ph:"],"c":"flags"},":flag_pk:":{"sn":":flag_pk:","cp":"1f1f5-1f1f0","sns":[":pk:"],"c":"flags"},":flag_pl:":{"sn":":flag_pl:","cp":"1f1f5-1f1f1","sns":[":pl:"],"c":"flags"},":flag_pm:":{"sn":":flag_pm:","cp":"1f1f5-1f1f2","sns":[":pm:"],"c":"flags"},":flag_pn:":{"sn":":flag_pn:","cp":"1f1f5-1f1f3","sns":[":pn:"],"c":"flags"},":flag_pr:":{"sn":":flag_pr:","cp":"1f1f5-1f1f7","sns":[":pr:"],"c":"flags"},":flag_ps:":{"sn":":flag_ps:","cp":"1f1f5-1f1f8","sns":[":ps:"],"c":"flags"},":flag_pt:":{"sn":":flag_pt:","cp":"1f1f5-1f1f9","sns":[":pt:"],"c":"flags"},":flag_pw:":{"sn":":flag_pw:","cp":"1f1f5-1f1fc","sns":[":pw:"],"c":"flags"},":flag_py:":{"sn":":flag_py:","cp":"1f1f5-1f1fe","sns":[":py:"],"c":"flags"},":flag_qa:":{"sn":":flag_qa:","cp":"1f1f6-1f1e6","sns":[":qa:"],"c":"flags"},":flag_re:":{"sn":":flag_re:","cp":"1f1f7-1f1ea","sns":[":re:"],"c":"flags"},":flag_ro:":{"sn":":flag_ro:","cp":"1f1f7-1f1f4","sns":[":ro:"],"c":"flags"},":flag_rs:":{"sn":":flag_rs:","cp":"1f1f7-1f1f8","sns":[":rs:"],"c":"flags"},":flag_ru:":{"sn":":flag_ru:","cp":"1f1f7-1f1fa","sns":[":ru:"],"c":"flags"},":flag_rw:":{"sn":":flag_rw:","cp":"1f1f7-1f1fc","sns":[":rw:"],"c":"flags"},":flag_sa:":{"sn":":flag_sa:","cp":"1f1f8-1f1e6","sns":[":saudiarabia:",":saudi:"],"c":"flags"},":flag_sb:":{"sn":":flag_sb:","cp":"1f1f8-1f1e7","sns":[":sb:"],"c":"flags"},":flag_sc:":{"sn":":flag_sc:","cp":"1f1f8-1f1e8","sns":[":sc:"],"c":"flags"},":flag_sd:":{"sn":":flag_sd:","cp":"1f1f8-1f1e9","sns":[":sd:"],"c":"flags"},":flag_se:":{"sn":":flag_se:","cp":"1f1f8-1f1ea","sns":[":se:"],"c":"flags"},":flag_sg:":{"sn":":flag_sg:","cp":"1f1f8-1f1ec","sns":[":sg:"],"c":"flags"},":flag_sh:":{"sn":":flag_sh:","cp":"1f1f8-1f1ed","sns":[":sh:"],"c":"flags"},":flag_si:":{"sn":":flag_si:","cp":"1f1f8-1f1ee","sns":[":si:"],"c":"flags"},":flag_sj:":{"sn":":flag_sj:","cp":"1f1f8-1f1ef","sns":[":sj:"],"c":"flags"},":flag_sk:":{"sn":":flag_sk:","cp":"1f1f8-1f1f0","sns":[":sk:"],"c":"flags"},":flag_sl:":{"sn":":flag_sl:","cp":"1f1f8-1f1f1","sns":[":sl:"],"c":"flags"},":flag_sm:":{"sn":":flag_sm:","cp":"1f1f8-1f1f2","sns":[":sm:"],"c":"flags"},":flag_sn:":{"sn":":flag_sn:","cp":"1f1f8-1f1f3","sns":[":sn:"],"c":"flags"},":flag_so:":{"sn":":flag_so:","cp":"1f1f8-1f1f4","sns":[":so:"],"c":"flags"},":flag_sr:":{"sn":":flag_sr:","cp":"1f1f8-1f1f7","sns":[":sr:"],"c":"flags"},":flag_ss:":{"sn":":flag_ss:","cp":"1f1f8-1f1f8","sns":[":ss:"],"c":"flags"},":flag_st:":{"sn":":flag_st:","cp":"1f1f8-1f1f9","sns":[":st:"],"c":"flags"},":flag_sv:":{"sn":":flag_sv:","cp":"1f1f8-1f1fb","sns":[":sv:"],"c":"flags"},":flag_sx:":{"sn":":flag_sx:","cp":"1f1f8-1f1fd","sns":[":sx:"],"c":"flags"},":flag_sy:":{"sn":":flag_sy:","cp":"1f1f8-1f1fe","sns":[":sy:"],"c":"flags"},":flag_sz:":{"sn":":flag_sz:","cp":"1f1f8-1f1ff","sns":[":sz:"],"c":"flags"},":flag_ta:":{"sn":":flag_ta:","cp":"1f1f9-1f1e6","sns":[":ta:"],"c":"flags"},":flag_tc:":{"sn":":flag_tc:","cp":"1f1f9-1f1e8","sns":[":tc:"],"c":"flags"},":flag_td:":{"sn":":flag_td:","cp":"1f1f9-1f1e9","sns":[":td:"],"c":"flags"},":flag_tf:":{"sn":":flag_tf:","cp":"1f1f9-1f1eb","sns":[":tf:"],"c":"flags"},":flag_tg:":{"sn":":flag_tg:","cp":"1f1f9-1f1ec","sns":[":tg:"],"c":"flags"},":flag_th:":{"sn":":flag_th:","cp":"1f1f9-1f1ed","sns":[":th:"],"c":"flags"},":flag_tj:":{"sn":":flag_tj:","cp":"1f1f9-1f1ef","sns":[":tj:"],"c":"flags"},":flag_tk:":{"sn":":flag_tk:","cp":"1f1f9-1f1f0","sns":[":tk:"],"c":"flags"},":flag_tl:":{"sn":":flag_tl:","cp":"1f1f9-1f1f1","sns":[":tl:"],"c":"flags"},":flag_tm:":{"sn":":flag_tm:","cp":"1f1f9-1f1f2","sns":[":turkmenistan:"],"c":"flags"},":flag_tn:":{"sn":":flag_tn:","cp":"1f1f9-1f1f3","sns":[":tn:"],"c":"flags"},":flag_to:":{"sn":":flag_to:","cp":"1f1f9-1f1f4","sns":[":to:"],"c":"flags"},":flag_tr:":{"sn":":flag_tr:","cp":"1f1f9-1f1f7","sns":[":tr:"],"c":"flags"},":flag_tt:":{"sn":":flag_tt:","cp":"1f1f9-1f1f9","sns":[":tt:"],"c":"flags"},":flag_tv:":{"sn":":flag_tv:","cp":"1f1f9-1f1fb","sns":[":tuvalu:"],"c":"flags"},":flag_tw:":{"sn":":flag_tw:","cp":"1f1f9-1f1fc","sns":[":tw:"],"c":"flags"},":flag_tz:":{"sn":":flag_tz:","cp":"1f1f9-1f1ff","sns":[":tz:"],"c":"flags"},":flag_ua:":{"sn":":flag_ua:","cp":"1f1fa-1f1e6","sns":[":ua:"],"c":"flags"},":flag_ug:":{"sn":":flag_ug:","cp":"1f1fa-1f1ec","sns":[":ug:"],"c":"flags"},":flag_um:":{"sn":":flag_um:","cp":"1f1fa-1f1f2","sns":[":um:"],"c":"flags"},":flag_us:":{"sn":":flag_us:","cp":"1f1fa-1f1f8","sns":[":us:"],"c":"flags"},":flag_uy:":{"sn":":flag_uy:","cp":"1f1fa-1f1fe","sns":[":uy:"],"c":"flags"},":flag_uz:":{"sn":":flag_uz:","cp":"1f1fa-1f1ff","sns":[":uz:"],"c":"flags"},":flag_va:":{"sn":":flag_va:","cp":"1f1fb-1f1e6","sns":[":va:"],"c":"flags"},":flag_vc:":{"sn":":flag_vc:","cp":"1f1fb-1f1e8","sns":[":vc:"],"c":"flags"},":flag_ve:":{"sn":":flag_ve:","cp":"1f1fb-1f1ea","sns":[":ve:"],"c":"flags"},":flag_vg:":{"sn":":flag_vg:","cp":"1f1fb-1f1ec","sns":[":vg:"],"c":"flags"},":flag_vi:":{"sn":":flag_vi:","cp":"1f1fb-1f1ee","sns":[":vi:"],"c":"flags"},":flag_vn:":{"sn":":flag_vn:","cp":"1f1fb-1f1f3","sns":[":vn:"],"c":"flags"},":flag_vu:":{"sn":":flag_vu:","cp":"1f1fb-1f1fa","sns":[":vu:"],"c":"flags"},":flag_wf:":{"sn":":flag_wf:","cp":"1f1fc-1f1eb","sns":[":wf:"],"c":"flags"},":flag_white:":{"sn":":flag_white:","cp":"1f3f3","sns":[":waving_white_flag:"],"c":"flags"},":flag_ws:":{"sn":":flag_ws:","cp":"1f1fc-1f1f8","sns":[":ws:"],"c":"flags"},":flag_xk:":{"sn":":flag_xk:","cp":"1f1fd-1f1f0","sns":[":xk:"],"c":"flags"},":flag_ye:":{"sn":":flag_ye:","cp":"1f1fe-1f1ea","sns":[":ye:"],"c":"flags"},":flag_yt:":{"sn":":flag_yt:","cp":"1f1fe-1f1f9","sns":[":yt:"],"c":"flags"},":flag_za:":{"sn":":flag_za:","cp":"1f1ff-1f1e6","sns":[":za:"],"c":"flags"},":flag_zm:":{"sn":":flag_zm:","cp":"1f1ff-1f1f2","sns":[":zm:"],"c":"flags"},":flag_zw:":{"sn":":flag_zw:","cp":"1f1ff-1f1fc","sns":[":zw:"],"c":"flags"},":rainbow_flag:":{"sn":":rainbow_flag:","cp":"1f3f3-fe0f-200d-1f308","sns":[":gay_pride_flag:"],"c":"flags"},":scotland:":{"sn":":scotland:","cp":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","sns":[],"c":"flags"},":triangular_flag_on_post:":{"sn":":triangular_flag_on_post:","cp":"1f6a9","sns":[],"c":"flags"},":united_nations:":{"sn":":united_nations:","cp":"1f1fa-1f1f3","sns":[],"c":"flags"},":wales:":{"sn":":wales:","cp":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","sns":[],"c":"flags"}},"modifiers":{":tone1:":{"sn":":tone1:","cp":"1f3fb","sns":[],"c":"modifier"},":tone2:":{"sn":":tone2:","cp":"1f3fc","sns":[],"c":"modifier"},":tone3:":{"sn":":tone3:","cp":"1f3fd","sns":[],"c":"modifier"},":tone4:":{"sn":":tone4:","cp":"1f3fe","sns":[],"c":"modifier"},":tone5:":{"sn":":tone5:","cp":"1f3ff","sns":[],"c":"modifier"}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[137],{547:function(n){n.exports=JSON.parse('{"custom":{":converse:":{"sn":":converse:","url":"/dist/images/custom_emojis/converse.png","c":"custom"},":xmpp:":{"sn":":xmpp:","url":"/dist/images/custom_emojis/xmpp.png","c":"custom"}},"smileys":{":smiley:":{"sn":":smiley:","cp":"1f603","sns":[],"c":"smileys"},":smile:":{"sn":":smile:","cp":"1f604","sns":[],"c":"smileys"},":grin:":{"sn":":grin:","cp":"1f601","sns":[],"c":"smileys"},":grinning:":{"sn":":grinning:","cp":"1f600","sns":[],"c":"smileys"},":joy:":{"sn":":joy:","cp":"1f602","sns":[],"c":"smileys"},":confused:":{"sn":":confused:","cp":"1f615","sns":[],"c":"smileys"},":face_with_raised_eyebrow:":{"sn":":face_with_raised_eyebrow:","cp":"1f928","sns":[],"c":"smileys"},":angry:":{"sn":":angry:","cp":"1f620","sns":[],"c":"smileys"},":anguished:":{"sn":":anguished:","cp":"1f627","sns":[],"c":"smileys"},":astonished:":{"sn":":astonished:","cp":"1f632","sns":[],"c":"smileys"},":blush:":{"sn":":blush:","cp":"1f60a","sns":[],"c":"smileys"},":thinking:":{"sn":":thinking:","cp":"1f914","sns":[":thinking_face:"],"c":"smileys"},":cold_sweat:":{"sn":":cold_sweat:","cp":"1f630","sns":[],"c":"smileys"},":confounded:":{"sn":":confounded:","cp":"1f616","sns":[],"c":"smileys"},":crazy_face:":{"sn":":crazy_face:","cp":"1f92a","sns":[],"c":"smileys"},":cry:":{"sn":":cry:","cp":"1f622","sns":[],"c":"smileys"},":disappointed:":{"sn":":disappointed:","cp":"1f61e","sns":[],"c":"smileys"},":disappointed_relieved:":{"sn":":disappointed_relieved:","cp":"1f625","sns":[],"c":"smileys"},":dizzy_face:":{"sn":":dizzy_face:","cp":"1f635","sns":[],"c":"smileys"},":drooling_face:":{"sn":":drooling_face:","cp":"1f924","sns":[":drool:"],"c":"smileys"},":exploding_head:":{"sn":":exploding_head:","cp":"1f92f","sns":[],"c":"smileys"},":expressionless:":{"sn":":expressionless:","cp":"1f611","sns":[],"c":"smileys"},":face_vomiting:":{"sn":":face_vomiting:","cp":"1f92e","sns":[],"c":"smileys"},":face_with_hand_over_mouth:":{"sn":":face_with_hand_over_mouth:","cp":"1f92d","sns":[],"c":"smileys"},":face_with_monocle:":{"sn":":face_with_monocle:","cp":"1f9d0","sns":[],"c":"smileys"},":fearful:":{"sn":":fearful:","cp":"1f628","sns":[],"c":"smileys"},":flushed:":{"sn":":flushed:","cp":"1f633","sns":[],"c":"smileys"},":frowning:":{"sn":":frowning:","cp":"1f626","sns":[],"c":"smileys"},":grimacing:":{"sn":":grimacing:","cp":"1f62c","sns":[],"c":"smileys"},":head_bandage:":{"sn":":head_bandage:","cp":"1f915","sns":[":face_with_head_bandage:"],"c":"smileys"},":heart_eyes:":{"sn":":heart_eyes:","cp":"1f60d","sns":[],"c":"smileys"},":hugging:":{"sn":":hugging:","cp":"1f917","sns":[":hugging_face:"],"c":"smileys"},":hushed:":{"sn":":hushed:","cp":"1f62f","sns":[],"c":"smileys"},":innocent:":{"sn":":innocent:","cp":"1f607","sns":[],"c":"smileys"},":kissing:":{"sn":":kissing:","cp":"1f617","sns":[],"c":"smileys"},":kissing_closed_eyes:":{"sn":":kissing_closed_eyes:","cp":"1f61a","sns":[],"c":"smileys"},":kissing_heart:":{"sn":":kissing_heart:","cp":"1f618","sns":[],"c":"smileys"},":kissing_smiling_eyes:":{"sn":":kissing_smiling_eyes:","cp":"1f619","sns":[],"c":"smileys"},":laughing:":{"sn":":laughing:","cp":"1f606","sns":[":satisfied:"],"c":"smileys"},":lying_face:":{"sn":":lying_face:","cp":"1f925","sns":[":liar:"],"c":"smileys"},":mask:":{"sn":":mask:","cp":"1f637","sns":[],"c":"smileys"},":money_mouth:":{"sn":":money_mouth:","cp":"1f911","sns":[":money_mouth_face:"],"c":"smileys"},":nauseated_face:":{"sn":":nauseated_face:","cp":"1f922","sns":[":sick:"],"c":"smileys"},":nerd:":{"sn":":nerd:","cp":"1f913","sns":[":nerd_face:"],"c":"smileys"},":neutral_face:":{"sn":":neutral_face:","cp":"1f610","sns":[],"c":"smileys"},":no_mouth:":{"sn":":no_mouth:","cp":"1f636","sns":[],"c":"smileys"},":open_mouth:":{"sn":":open_mouth:","cp":"1f62e","sns":[],"c":"smileys"},":pensive:":{"sn":":pensive:","cp":"1f614","sns":[],"c":"smileys"},":persevere:":{"sn":":persevere:","cp":"1f623","sns":[],"c":"smileys"},":rage:":{"sn":":rage:","cp":"1f621","sns":[],"c":"smileys"},":face_with_symbols_over_mouth:":{"sn":":face_with_symbols_over_mouth:","cp":"1f92c","sns":[],"c":"smileys"},":relieved:":{"sn":":relieved:","cp":"1f60c","sns":[],"c":"smileys"},":rofl:":{"sn":":rofl:","cp":"1f923","sns":[":rolling_on_the_floor_laughing:"],"c":"smileys"},":rolling_eyes:":{"sn":":rolling_eyes:","cp":"1f644","sns":[":face_with_rolling_eyes:"],"c":"smileys"},":scream:":{"sn":":scream:","cp":"1f631","sns":[],"c":"smileys"},":shushing_face:":{"sn":":shushing_face:","cp":"1f92b","sns":[],"c":"smileys"},":sleeping:":{"sn":":sleeping:","cp":"1f634","sns":[],"c":"smileys"},":sleepy:":{"sn":":sleepy:","cp":"1f62a","sns":[],"c":"smileys"},":slight_frown:":{"sn":":slight_frown:","cp":"1f641","sns":[":slightly_frowning_face:"],"c":"smileys"},":slight_smile:":{"sn":":slight_smile:","cp":"1f642","sns":[":slightly_smiling_face:"],"c":"smileys"},":smirk:":{"sn":":smirk:","cp":"1f60f","sns":[],"c":"smileys"},":sneezing_face:":{"sn":":sneezing_face:","cp":"1f927","sns":[":sneeze:"],"c":"smileys"},":sob:":{"sn":":sob:","cp":"1f62d","sns":[],"c":"smileys"},":star_struck:":{"sn":":star_struck:","cp":"1f929","sns":[],"c":"smileys"},":stuck_out_tongue:":{"sn":":stuck_out_tongue:","cp":"1f61b","sns":[],"c":"smileys"},":stuck_out_tongue_closed_eyes:":{"sn":":stuck_out_tongue_closed_eyes:","cp":"1f61d","sns":[],"c":"smileys"},":stuck_out_tongue_winking_eye:":{"sn":":stuck_out_tongue_winking_eye:","cp":"1f61c","sns":[],"c":"smileys"},":sunglasses:":{"sn":":sunglasses:","cp":"1f60e","sns":[],"c":"smileys"},":sweat:":{"sn":":sweat:","cp":"1f613","sns":[],"c":"smileys"},":sweat_smile:":{"sn":":sweat_smile:","cp":"1f605","sns":[],"c":"smileys"},":thermometer_face:":{"sn":":thermometer_face:","cp":"1f912","sns":[":face_with_thermometer:"],"c":"smileys"},":tired_face:":{"sn":":tired_face:","cp":"1f62b","sns":[],"c":"smileys"},":triumph:":{"sn":":triumph:","cp":"1f624","sns":[],"c":"smileys"},":unamused:":{"sn":":unamused:","cp":"1f612","sns":[],"c":"smileys"},":upside_down:":{"sn":":upside_down:","cp":"1f643","sns":[":upside_down_face:"],"c":"smileys"},":weary:":{"sn":":weary:","cp":"1f629","sns":[],"c":"smileys"},":wink:":{"sn":":wink:","cp":"1f609","sns":[],"c":"smileys"},":worried:":{"sn":":worried:","cp":"1f61f","sns":[],"c":"smileys"},":yum:":{"sn":":yum:","cp":"1f60b","sns":[],"c":"smileys"},":zipper_mouth:":{"sn":":zipper_mouth:","cp":"1f910","sns":[":zipper_mouth_face:"],"c":"smileys"},":cowboy:":{"sn":":cowboy:","cp":"1f920","sns":[":face_with_cowboy_hat:"],"c":"smileys"},":joy_cat:":{"sn":":joy_cat:","cp":"1f639","sns":[],"c":"smileys"},":crying_cat_face:":{"sn":":crying_cat_face:","cp":"1f63f","sns":[],"c":"smileys"},":kissing_cat:":{"sn":":kissing_cat:","cp":"1f63d","sns":[],"c":"smileys"},":pouting_cat:":{"sn":":pouting_cat:","cp":"1f63e","sns":[],"c":"smileys"},":scream_cat:":{"sn":":scream_cat:","cp":"1f640","sns":[],"c":"smileys"},":smile_cat:":{"sn":":smile_cat:","cp":"1f638","sns":[],"c":"smileys"},":smiley_cat:":{"sn":":smiley_cat:","cp":"1f63a","sns":[],"c":"smileys"},":smirk_cat:":{"sn":":smirk_cat:","cp":"1f63c","sns":[],"c":"smileys"},":heart_eyes_cat:":{"sn":":heart_eyes_cat:","cp":"1f63b","sns":[],"c":"smileys"},":poop:":{"sn":":poop:","cp":"1f4a9","sns":[":shit:",":hankey:",":poo:"],"c":"smileys"},":robot:":{"sn":":robot:","cp":"1f916","sns":[":robot_face:"],"c":"smileys"},":skull:":{"sn":":skull:","cp":"1f480","sns":[":skeleton:"],"c":"smileys"},":jack_o_lantern:":{"sn":":jack_o_lantern:","cp":"1f383","sns":[],"c":"smileys"},":alien:":{"sn":":alien:","cp":"1f47d","sns":[],"c":"smileys"},":clown:":{"sn":":clown:","cp":"1f921","sns":[":clown_face:"],"c":"smileys"},":japanese_goblin:":{"sn":":japanese_goblin:","cp":"1f47a","sns":[],"c":"smileys"},":japanese_ogre:":{"sn":":japanese_ogre:","cp":"1f479","sns":[],"c":"smileys"},":imp:":{"sn":":imp:","cp":"1f47f","sns":[],"c":"smileys"},":smiling_imp:":{"sn":":smiling_imp:","cp":"1f608","sns":[],"c":"smileys"}},"people":{":ok_hand:":{"sn":":ok_hand:","cp":"1f44c","sns":[],"c":"people"},":ok_hand_tone1:":{"sn":":ok_hand_tone1:","cp":"1f44c-1f3fb","sns":[],"c":"people"},":ok_hand_tone2:":{"sn":":ok_hand_tone2:","cp":"1f44c-1f3fc","sns":[],"c":"people"},":ok_hand_tone3:":{"sn":":ok_hand_tone3:","cp":"1f44c-1f3fd","sns":[],"c":"people"},":ok_hand_tone4:":{"sn":":ok_hand_tone4:","cp":"1f44c-1f3fe","sns":[],"c":"people"},":ok_hand_tone5:":{"sn":":ok_hand_tone5:","cp":"1f44c-1f3ff","sns":[],"c":"people"},":thumbsdown:":{"sn":":thumbsdown:","cp":"1f44e","sns":[":-1:",":thumbdown:"],"c":"people"},":thumbsdown_tone1:":{"sn":":thumbsdown_tone1:","cp":"1f44e-1f3fb","sns":[":-1_tone1:",":thumbdown_tone1:"],"c":"people"},":thumbsdown_tone2:":{"sn":":thumbsdown_tone2:","cp":"1f44e-1f3fc","sns":[":-1_tone2:",":thumbdown_tone2:"],"c":"people"},":thumbsdown_tone3:":{"sn":":thumbsdown_tone3:","cp":"1f44e-1f3fd","sns":[":-1_tone3:",":thumbdown_tone3:"],"c":"people"},":thumbsdown_tone4:":{"sn":":thumbsdown_tone4:","cp":"1f44e-1f3fe","sns":[":-1_tone4:",":thumbdown_tone4:"],"c":"people"},":thumbsdown_tone5:":{"sn":":thumbsdown_tone5:","cp":"1f44e-1f3ff","sns":[":-1_tone5:",":thumbdown_tone5:"],"c":"people"},":thumbsup:":{"sn":":thumbsup:","cp":"1f44d","sns":[":+1:",":thumbup:"],"c":"people"},":thumbsup_tone1:":{"sn":":thumbsup_tone1:","cp":"1f44d-1f3fb","sns":[":+1_tone1:",":thumbup_tone1:"],"c":"people"},":thumbsup_tone2:":{"sn":":thumbsup_tone2:","cp":"1f44d-1f3fc","sns":[":+1_tone2:",":thumbup_tone2:"],"c":"people"},":thumbsup_tone3:":{"sn":":thumbsup_tone3:","cp":"1f44d-1f3fd","sns":[":+1_tone3:",":thumbup_tone3:"],"c":"people"},":thumbsup_tone4:":{"sn":":thumbsup_tone4:","cp":"1f44d-1f3fe","sns":[":+1_tone4:",":thumbup_tone4:"],"c":"people"},":thumbsup_tone5:":{"sn":":thumbsup_tone5:","cp":"1f44d-1f3ff","sns":[":+1_tone5:",":thumbup_tone5:"],"c":"people"},":wave:":{"sn":":wave:","cp":"1f44b","sns":[],"c":"people"},":wave_tone1:":{"sn":":wave_tone1:","cp":"1f44b-1f3fb","sns":[],"c":"people"},":wave_tone2:":{"sn":":wave_tone2:","cp":"1f44b-1f3fc","sns":[],"c":"people"},":wave_tone3:":{"sn":":wave_tone3:","cp":"1f44b-1f3fd","sns":[],"c":"people"},":wave_tone4:":{"sn":":wave_tone4:","cp":"1f44b-1f3fe","sns":[],"c":"people"},":wave_tone5:":{"sn":":wave_tone5:","cp":"1f44b-1f3ff","sns":[],"c":"people"},":call_me:":{"sn":":call_me:","cp":"1f919","sns":[":call_me_hand:"],"c":"people"},":call_me_tone1:":{"sn":":call_me_tone1:","cp":"1f919-1f3fb","sns":[":call_me_hand_tone1:"],"c":"people"},":call_me_tone2:":{"sn":":call_me_tone2:","cp":"1f919-1f3fc","sns":[":call_me_hand_tone2:"],"c":"people"},":call_me_tone3:":{"sn":":call_me_tone3:","cp":"1f919-1f3fd","sns":[":call_me_hand_tone3:"],"c":"people"},":call_me_tone4:":{"sn":":call_me_tone4:","cp":"1f919-1f3fe","sns":[":call_me_hand_tone4:"],"c":"people"},":call_me_tone5:":{"sn":":call_me_tone5:","cp":"1f919-1f3ff","sns":[":call_me_hand_tone5:"],"c":"people"},":clap:":{"sn":":clap:","cp":"1f44f","sns":[],"c":"people"},":clap_tone1:":{"sn":":clap_tone1:","cp":"1f44f-1f3fb","sns":[],"c":"people"},":clap_tone2:":{"sn":":clap_tone2:","cp":"1f44f-1f3fc","sns":[],"c":"people"},":clap_tone3:":{"sn":":clap_tone3:","cp":"1f44f-1f3fd","sns":[],"c":"people"},":clap_tone4:":{"sn":":clap_tone4:","cp":"1f44f-1f3fe","sns":[],"c":"people"},":clap_tone5:":{"sn":":clap_tone5:","cp":"1f44f-1f3ff","sns":[],"c":"people"},":hand_splayed:":{"sn":":hand_splayed:","cp":"1f590","sns":[":raised_hand_with_fingers_splayed:"],"c":"people"},":hand_splayed_tone1:":{"sn":":hand_splayed_tone1:","cp":"1f590-1f3fb","sns":[":raised_hand_with_fingers_splayed_tone1:"],"c":"people"},":hand_splayed_tone2:":{"sn":":hand_splayed_tone2:","cp":"1f590-1f3fc","sns":[":raised_hand_with_fingers_splayed_tone2:"],"c":"people"},":hand_splayed_tone3:":{"sn":":hand_splayed_tone3:","cp":"1f590-1f3fd","sns":[":raised_hand_with_fingers_splayed_tone3:"],"c":"people"},":hand_splayed_tone4:":{"sn":":hand_splayed_tone4:","cp":"1f590-1f3fe","sns":[":raised_hand_with_fingers_splayed_tone4:"],"c":"people"},":hand_splayed_tone5:":{"sn":":hand_splayed_tone5:","cp":"1f590-1f3ff","sns":[":raised_hand_with_fingers_splayed_tone5:"],"c":"people"},":love_you_gesture:":{"sn":":love_you_gesture:","cp":"1f91f","sns":[],"c":"people"},":love_you_gesture_tone1:":{"sn":":love_you_gesture_tone1:","cp":"1f91f-1f3fb","sns":[":love_you_gesture_light_skin_tone:"],"c":"people"},":love_you_gesture_tone2:":{"sn":":love_you_gesture_tone2:","cp":"1f91f-1f3fc","sns":[":love_you_gesture_medium_light_skin_tone:"],"c":"people"},":love_you_gesture_tone3:":{"sn":":love_you_gesture_tone3:","cp":"1f91f-1f3fd","sns":[":love_you_gesture_medium_skin_tone:"],"c":"people"},":love_you_gesture_tone4:":{"sn":":love_you_gesture_tone4:","cp":"1f91f-1f3fe","sns":[":love_you_gesture_medium_dark_skin_tone:"],"c":"people"},":love_you_gesture_tone5:":{"sn":":love_you_gesture_tone5:","cp":"1f91f-1f3ff","sns":[":love_you_gesture_dark_skin_tone:"],"c":"people"},":right_facing_fist:":{"sn":":right_facing_fist:","cp":"1f91c","sns":[":right_fist:"],"c":"people"},":right_facing_fist_tone1:":{"sn":":right_facing_fist_tone1:","cp":"1f91c-1f3fb","sns":[":right_fist_tone1:"],"c":"people"},":right_facing_fist_tone2:":{"sn":":right_facing_fist_tone2:","cp":"1f91c-1f3fc","sns":[":right_fist_tone2:"],"c":"people"},":right_facing_fist_tone3:":{"sn":":right_facing_fist_tone3:","cp":"1f91c-1f3fd","sns":[":right_fist_tone3:"],"c":"people"},":right_facing_fist_tone4:":{"sn":":right_facing_fist_tone4:","cp":"1f91c-1f3fe","sns":[":right_fist_tone4:"],"c":"people"},":right_facing_fist_tone5:":{"sn":":right_facing_fist_tone5:","cp":"1f91c-1f3ff","sns":[":right_fist_tone5:"],"c":"people"},":left_facing_fist:":{"sn":":left_facing_fist:","cp":"1f91b","sns":[":left_fist:"],"c":"people"},":left_facing_fist_tone1:":{"sn":":left_facing_fist_tone1:","cp":"1f91b-1f3fb","sns":[":left_fist_tone1:"],"c":"people"},":left_facing_fist_tone2:":{"sn":":left_facing_fist_tone2:","cp":"1f91b-1f3fc","sns":[":left_fist_tone2:"],"c":"people"},":left_facing_fist_tone3:":{"sn":":left_facing_fist_tone3:","cp":"1f91b-1f3fd","sns":[":left_fist_tone3:"],"c":"people"},":left_facing_fist_tone4:":{"sn":":left_facing_fist_tone4:","cp":"1f91b-1f3fe","sns":[":left_fist_tone4:"],"c":"people"},":left_facing_fist_tone5:":{"sn":":left_facing_fist_tone5:","cp":"1f91b-1f3ff","sns":[":left_fist_tone5:"],"c":"people"},":muscle:":{"sn":":muscle:","cp":"1f4aa","sns":[],"c":"people"},":muscle_tone1:":{"sn":":muscle_tone1:","cp":"1f4aa-1f3fb","sns":[],"c":"people"},":muscle_tone2:":{"sn":":muscle_tone2:","cp":"1f4aa-1f3fc","sns":[],"c":"people"},":muscle_tone3:":{"sn":":muscle_tone3:","cp":"1f4aa-1f3fd","sns":[],"c":"people"},":muscle_tone4:":{"sn":":muscle_tone4:","cp":"1f4aa-1f3fe","sns":[],"c":"people"},":muscle_tone5:":{"sn":":muscle_tone5:","cp":"1f4aa-1f3ff","sns":[],"c":"people"},":fingers_crossed:":{"sn":":fingers_crossed:","cp":"1f91e","sns":[":hand_with_index_and_middle_finger_crossed:"],"c":"people"},":fingers_crossed_tone1:":{"sn":":fingers_crossed_tone1:","cp":"1f91e-1f3fb","sns":[":hand_with_index_and_middle_fingers_crossed_tone1:"],"c":"people"},":fingers_crossed_tone2:":{"sn":":fingers_crossed_tone2:","cp":"1f91e-1f3fc","sns":[":hand_with_index_and_middle_fingers_crossed_tone2:"],"c":"people"},":fingers_crossed_tone3:":{"sn":":fingers_crossed_tone3:","cp":"1f91e-1f3fd","sns":[":hand_with_index_and_middle_fingers_crossed_tone3:"],"c":"people"},":fingers_crossed_tone4:":{"sn":":fingers_crossed_tone4:","cp":"1f91e-1f3fe","sns":[":hand_with_index_and_middle_fingers_crossed_tone4:"],"c":"people"},":fingers_crossed_tone5:":{"sn":":fingers_crossed_tone5:","cp":"1f91e-1f3ff","sns":[":hand_with_index_and_middle_fingers_crossed_tone5:"],"c":"people"},":fist:":{"sn":":fist:","cp":"270a","sns":[],"c":"people"},":fist_tone1:":{"sn":":fist_tone1:","cp":"270a-1f3fb","sns":[],"c":"people"},":fist_tone2:":{"sn":":fist_tone2:","cp":"270a-1f3fc","sns":[],"c":"people"},":fist_tone3:":{"sn":":fist_tone3:","cp":"270a-1f3fd","sns":[],"c":"people"},":fist_tone4:":{"sn":":fist_tone4:","cp":"270a-1f3fe","sns":[],"c":"people"},":fist_tone5:":{"sn":":fist_tone5:","cp":"270a-1f3ff","sns":[],"c":"people"},":punch:":{"sn":":punch:","cp":"1f44a","sns":[],"c":"people"},":punch_tone1:":{"sn":":punch_tone1:","cp":"1f44a-1f3fb","sns":[],"c":"people"},":punch_tone2:":{"sn":":punch_tone2:","cp":"1f44a-1f3fc","sns":[],"c":"people"},":punch_tone3:":{"sn":":punch_tone3:","cp":"1f44a-1f3fd","sns":[],"c":"people"},":punch_tone4:":{"sn":":punch_tone4:","cp":"1f44a-1f3fe","sns":[],"c":"people"},":punch_tone5:":{"sn":":punch_tone5:","cp":"1f44a-1f3ff","sns":[],"c":"people"},":raised_back_of_hand:":{"sn":":raised_back_of_hand:","cp":"1f91a","sns":[":back_of_hand:"],"c":"people"},":raised_back_of_hand_tone1:":{"sn":":raised_back_of_hand_tone1:","cp":"1f91a-1f3fb","sns":[":back_of_hand_tone1:"],"c":"people"},":raised_back_of_hand_tone2:":{"sn":":raised_back_of_hand_tone2:","cp":"1f91a-1f3fc","sns":[":back_of_hand_tone2:"],"c":"people"},":raised_back_of_hand_tone3:":{"sn":":raised_back_of_hand_tone3:","cp":"1f91a-1f3fd","sns":[":back_of_hand_tone3:"],"c":"people"},":raised_back_of_hand_tone4:":{"sn":":raised_back_of_hand_tone4:","cp":"1f91a-1f3fe","sns":[":back_of_hand_tone4:"],"c":"people"},":raised_back_of_hand_tone5:":{"sn":":raised_back_of_hand_tone5:","cp":"1f91a-1f3ff","sns":[":back_of_hand_tone5:"],"c":"people"},":raised_hand:":{"sn":":raised_hand:","cp":"270b","sns":[],"c":"people"},":raised_hand_tone1:":{"sn":":raised_hand_tone1:","cp":"270b-1f3fb","sns":[],"c":"people"},":raised_hand_tone2:":{"sn":":raised_hand_tone2:","cp":"270b-1f3fc","sns":[],"c":"people"},":raised_hand_tone3:":{"sn":":raised_hand_tone3:","cp":"270b-1f3fd","sns":[],"c":"people"},":raised_hand_tone4:":{"sn":":raised_hand_tone4:","cp":"270b-1f3fe","sns":[],"c":"people"},":raised_hand_tone5:":{"sn":":raised_hand_tone5:","cp":"270b-1f3ff","sns":[],"c":"people"},":raised_hands:":{"sn":":raised_hands:","cp":"1f64c","sns":[],"c":"people"},":raised_hands_tone1:":{"sn":":raised_hands_tone1:","cp":"1f64c-1f3fb","sns":[],"c":"people"},":raised_hands_tone2:":{"sn":":raised_hands_tone2:","cp":"1f64c-1f3fc","sns":[],"c":"people"},":raised_hands_tone3:":{"sn":":raised_hands_tone3:","cp":"1f64c-1f3fd","sns":[],"c":"people"},":raised_hands_tone4:":{"sn":":raised_hands_tone4:","cp":"1f64c-1f3fe","sns":[],"c":"people"},":raised_hands_tone5:":{"sn":":raised_hands_tone5:","cp":"1f64c-1f3ff","sns":[],"c":"people"},":open_hands:":{"sn":":open_hands:","cp":"1f450","sns":[],"c":"people"},":open_hands_tone1:":{"sn":":open_hands_tone1:","cp":"1f450-1f3fb","sns":[],"c":"people"},":open_hands_tone2:":{"sn":":open_hands_tone2:","cp":"1f450-1f3fc","sns":[],"c":"people"},":open_hands_tone3:":{"sn":":open_hands_tone3:","cp":"1f450-1f3fd","sns":[],"c":"people"},":open_hands_tone4:":{"sn":":open_hands_tone4:","cp":"1f450-1f3fe","sns":[],"c":"people"},":open_hands_tone5:":{"sn":":open_hands_tone5:","cp":"1f450-1f3ff","sns":[],"c":"people"},":palms_up_together:":{"sn":":palms_up_together:","cp":"1f932","sns":[],"c":"people"},":palms_up_together_tone1:":{"sn":":palms_up_together_tone1:","cp":"1f932-1f3fb","sns":[":palms_up_together_light_skin_tone:"],"c":"people"},":palms_up_together_tone2:":{"sn":":palms_up_together_tone2:","cp":"1f932-1f3fc","sns":[":palms_up_together_medium_light_skin_tone:"],"c":"people"},":palms_up_together_tone3:":{"sn":":palms_up_together_tone3:","cp":"1f932-1f3fd","sns":[":palms_up_together_medium_skin_tone:"],"c":"people"},":palms_up_together_tone4:":{"sn":":palms_up_together_tone4:","cp":"1f932-1f3fe","sns":[":palms_up_together_medium_dark_skin_tone:"],"c":"people"},":palms_up_together_tone5:":{"sn":":palms_up_together_tone5:","cp":"1f932-1f3ff","sns":[":palms_up_together_dark_skin_tone:"],"c":"people"},":point_down:":{"sn":":point_down:","cp":"1f447","sns":[],"c":"people"},":point_down_tone1:":{"sn":":point_down_tone1:","cp":"1f447-1f3fb","sns":[],"c":"people"},":point_down_tone2:":{"sn":":point_down_tone2:","cp":"1f447-1f3fc","sns":[],"c":"people"},":point_down_tone3:":{"sn":":point_down_tone3:","cp":"1f447-1f3fd","sns":[],"c":"people"},":point_down_tone4:":{"sn":":point_down_tone4:","cp":"1f447-1f3fe","sns":[],"c":"people"},":point_down_tone5:":{"sn":":point_down_tone5:","cp":"1f447-1f3ff","sns":[],"c":"people"},":point_left:":{"sn":":point_left:","cp":"1f448","sns":[],"c":"people"},":point_left_tone1:":{"sn":":point_left_tone1:","cp":"1f448-1f3fb","sns":[],"c":"people"},":point_left_tone2:":{"sn":":point_left_tone2:","cp":"1f448-1f3fc","sns":[],"c":"people"},":point_left_tone3:":{"sn":":point_left_tone3:","cp":"1f448-1f3fd","sns":[],"c":"people"},":point_left_tone4:":{"sn":":point_left_tone4:","cp":"1f448-1f3fe","sns":[],"c":"people"},":point_left_tone5:":{"sn":":point_left_tone5:","cp":"1f448-1f3ff","sns":[],"c":"people"},":point_right:":{"sn":":point_right:","cp":"1f449","sns":[],"c":"people"},":point_right_tone1:":{"sn":":point_right_tone1:","cp":"1f449-1f3fb","sns":[],"c":"people"},":point_right_tone2:":{"sn":":point_right_tone2:","cp":"1f449-1f3fc","sns":[],"c":"people"},":point_right_tone3:":{"sn":":point_right_tone3:","cp":"1f449-1f3fd","sns":[],"c":"people"},":point_right_tone4:":{"sn":":point_right_tone4:","cp":"1f449-1f3fe","sns":[],"c":"people"},":point_right_tone5:":{"sn":":point_right_tone5:","cp":"1f449-1f3ff","sns":[],"c":"people"},":point_up:":{"sn":":point_up:","cp":"261d","sns":[],"c":"people"},":point_up_2:":{"sn":":point_up_2:","cp":"1f446","sns":[],"c":"people"},":point_up_2_tone1:":{"sn":":point_up_2_tone1:","cp":"1f446-1f3fb","sns":[],"c":"people"},":point_up_2_tone2:":{"sn":":point_up_2_tone2:","cp":"1f446-1f3fc","sns":[],"c":"people"},":point_up_2_tone3:":{"sn":":point_up_2_tone3:","cp":"1f446-1f3fd","sns":[],"c":"people"},":point_up_2_tone4:":{"sn":":point_up_2_tone4:","cp":"1f446-1f3fe","sns":[],"c":"people"},":point_up_2_tone5:":{"sn":":point_up_2_tone5:","cp":"1f446-1f3ff","sns":[],"c":"people"},":point_up_tone1:":{"sn":":point_up_tone1:","cp":"261d-1f3fb","sns":[],"c":"people"},":point_up_tone2:":{"sn":":point_up_tone2:","cp":"261d-1f3fc","sns":[],"c":"people"},":point_up_tone3:":{"sn":":point_up_tone3:","cp":"261d-1f3fd","sns":[],"c":"people"},":point_up_tone4:":{"sn":":point_up_tone4:","cp":"261d-1f3fe","sns":[],"c":"people"},":point_up_tone5:":{"sn":":point_up_tone5:","cp":"261d-1f3ff","sns":[],"c":"people"},":v:":{"sn":":v:","cp":"270c","sns":[],"c":"people"},":v_tone1:":{"sn":":v_tone1:","cp":"270c-1f3fb","sns":[],"c":"people"},":v_tone2:":{"sn":":v_tone2:","cp":"270c-1f3fc","sns":[],"c":"people"},":v_tone3:":{"sn":":v_tone3:","cp":"270c-1f3fd","sns":[],"c":"people"},":v_tone4:":{"sn":":v_tone4:","cp":"270c-1f3fe","sns":[],"c":"people"},":v_tone5:":{"sn":":v_tone5:","cp":"270c-1f3ff","sns":[],"c":"people"},":vulcan:":{"sn":":vulcan:","cp":"1f596","sns":[":raised_hand_with_part_between_middle_and_ring_fingers:"],"c":"people"},":vulcan_tone1:":{"sn":":vulcan_tone1:","cp":"1f596-1f3fb","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"],"c":"people"},":vulcan_tone2:":{"sn":":vulcan_tone2:","cp":"1f596-1f3fc","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"],"c":"people"},":vulcan_tone3:":{"sn":":vulcan_tone3:","cp":"1f596-1f3fd","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"],"c":"people"},":vulcan_tone4:":{"sn":":vulcan_tone4:","cp":"1f596-1f3fe","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"],"c":"people"},":vulcan_tone5:":{"sn":":vulcan_tone5:","cp":"1f596-1f3ff","sns":[":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"],"c":"people"},":metal:":{"sn":":metal:","cp":"1f918","sns":[":sign_of_the_horns:"],"c":"people"},":metal_tone1:":{"sn":":metal_tone1:","cp":"1f918-1f3fb","sns":[":sign_of_the_horns_tone1:"],"c":"people"},":metal_tone2:":{"sn":":metal_tone2:","cp":"1f918-1f3fc","sns":[":sign_of_the_horns_tone2:"],"c":"people"},":metal_tone3:":{"sn":":metal_tone3:","cp":"1f918-1f3fd","sns":[":sign_of_the_horns_tone3:"],"c":"people"},":metal_tone4:":{"sn":":metal_tone4:","cp":"1f918-1f3fe","sns":[":sign_of_the_horns_tone4:"],"c":"people"},":metal_tone5:":{"sn":":metal_tone5:","cp":"1f918-1f3ff","sns":[":sign_of_the_horns_tone5:"],"c":"people"},":middle_finger:":{"sn":":middle_finger:","cp":"1f595","sns":[":reversed_hand_with_middle_finger_extended:"],"c":"people"},":middle_finger_tone1:":{"sn":":middle_finger_tone1:","cp":"1f595-1f3fb","sns":[":reversed_hand_with_middle_finger_extended_tone1:"],"c":"people"},":middle_finger_tone2:":{"sn":":middle_finger_tone2:","cp":"1f595-1f3fc","sns":[":reversed_hand_with_middle_finger_extended_tone2:"],"c":"people"},":middle_finger_tone3:":{"sn":":middle_finger_tone3:","cp":"1f595-1f3fd","sns":[":reversed_hand_with_middle_finger_extended_tone3:"],"c":"people"},":middle_finger_tone4:":{"sn":":middle_finger_tone4:","cp":"1f595-1f3fe","sns":[":reversed_hand_with_middle_finger_extended_tone4:"],"c":"people"},":middle_finger_tone5:":{"sn":":middle_finger_tone5:","cp":"1f595-1f3ff","sns":[":reversed_hand_with_middle_finger_extended_tone5:"],"c":"people"},":pray:":{"sn":":pray:","cp":"1f64f","sns":[],"c":"people"},":pray_tone1:":{"sn":":pray_tone1:","cp":"1f64f-1f3fb","sns":[],"c":"people"},":pray_tone2:":{"sn":":pray_tone2:","cp":"1f64f-1f3fc","sns":[],"c":"people"},":pray_tone3:":{"sn":":pray_tone3:","cp":"1f64f-1f3fd","sns":[],"c":"people"},":pray_tone4:":{"sn":":pray_tone4:","cp":"1f64f-1f3fe","sns":[],"c":"people"},":pray_tone5:":{"sn":":pray_tone5:","cp":"1f64f-1f3ff","sns":[],"c":"people"},":handshake:":{"sn":":handshake:","cp":"1f91d","sns":[":shaking_hands:"],"c":"people"},":handshake_tone1:":{"sn":":handshake_tone1:","cp":"1f91d-1f3fb","sns":[],"c":"people"},":handshake_tone2:":{"sn":":handshake_tone2:","cp":"1f91d-1f3fc","sns":[],"c":"people"},":handshake_tone3:":{"sn":":handshake_tone3:","cp":"1f91d-1f3fd","sns":[],"c":"people"},":handshake_tone4:":{"sn":":handshake_tone4:","cp":"1f91d-1f3fe","sns":[],"c":"people"},":handshake_tone5:":{"sn":":handshake_tone5:","cp":"1f91d-1f3ff","sns":[],"c":"people"},":writing_hand:":{"sn":":writing_hand:","cp":"270d","sns":[],"c":"people"},":writing_hand_tone1:":{"sn":":writing_hand_tone1:","cp":"270d-1f3fb","sns":[],"c":"people"},":writing_hand_tone2:":{"sn":":writing_hand_tone2:","cp":"270d-1f3fc","sns":[],"c":"people"},":writing_hand_tone3:":{"sn":":writing_hand_tone3:","cp":"270d-1f3fd","sns":[],"c":"people"},":writing_hand_tone4:":{"sn":":writing_hand_tone4:","cp":"270d-1f3fe","sns":[],"c":"people"},":writing_hand_tone5:":{"sn":":writing_hand_tone5:","cp":"270d-1f3ff","sns":[],"c":"people"},":selfie:":{"sn":":selfie:","cp":"1f933","sns":[],"c":"people"},":selfie_tone1:":{"sn":":selfie_tone1:","cp":"1f933-1f3fb","sns":[],"c":"people"},":selfie_tone2:":{"sn":":selfie_tone2:","cp":"1f933-1f3fc","sns":[],"c":"people"},":selfie_tone3:":{"sn":":selfie_tone3:","cp":"1f933-1f3fd","sns":[],"c":"people"},":selfie_tone4:":{"sn":":selfie_tone4:","cp":"1f933-1f3fe","sns":[],"c":"people"},":selfie_tone5:":{"sn":":selfie_tone5:","cp":"1f933-1f3ff","sns":[],"c":"people"},":nail_care:":{"sn":":nail_care:","cp":"1f485","sns":[],"c":"people"},":nail_care_tone1:":{"sn":":nail_care_tone1:","cp":"1f485-1f3fb","sns":[],"c":"people"},":nail_care_tone2:":{"sn":":nail_care_tone2:","cp":"1f485-1f3fc","sns":[],"c":"people"},":nail_care_tone3:":{"sn":":nail_care_tone3:","cp":"1f485-1f3fd","sns":[],"c":"people"},":nail_care_tone4:":{"sn":":nail_care_tone4:","cp":"1f485-1f3fe","sns":[],"c":"people"},":nail_care_tone5:":{"sn":":nail_care_tone5:","cp":"1f485-1f3ff","sns":[],"c":"people"},":adult:":{"sn":":adult:","cp":"1f9d1","sns":[],"c":"people"},":adult_tone1:":{"sn":":adult_tone1:","cp":"1f9d1-1f3fb","sns":[":adult_light_skin_tone:"],"c":"people"},":adult_tone2:":{"sn":":adult_tone2:","cp":"1f9d1-1f3fc","sns":[":adult_medium_light_skin_tone:"],"c":"people"},":adult_tone3:":{"sn":":adult_tone3:","cp":"1f9d1-1f3fd","sns":[":adult_medium_skin_tone:"],"c":"people"},":adult_tone4:":{"sn":":adult_tone4:","cp":"1f9d1-1f3fe","sns":[":adult_medium_dark_skin_tone:"],"c":"people"},":adult_tone5:":{"sn":":adult_tone5:","cp":"1f9d1-1f3ff","sns":[":adult_dark_skin_tone:"],"c":"people"},":angel:":{"sn":":angel:","cp":"1f47c","sns":[],"c":"people"},":angel_tone1:":{"sn":":angel_tone1:","cp":"1f47c-1f3fb","sns":[],"c":"people"},":angel_tone2:":{"sn":":angel_tone2:","cp":"1f47c-1f3fc","sns":[],"c":"people"},":angel_tone3:":{"sn":":angel_tone3:","cp":"1f47c-1f3fd","sns":[],"c":"people"},":angel_tone4:":{"sn":":angel_tone4:","cp":"1f47c-1f3fe","sns":[],"c":"people"},":angel_tone5:":{"sn":":angel_tone5:","cp":"1f47c-1f3ff","sns":[],"c":"people"},":baby:":{"sn":":baby:","cp":"1f476","sns":[],"c":"people"},":baby_tone1:":{"sn":":baby_tone1:","cp":"1f476-1f3fb","sns":[],"c":"people"},":baby_tone2:":{"sn":":baby_tone2:","cp":"1f476-1f3fc","sns":[],"c":"people"},":baby_tone3:":{"sn":":baby_tone3:","cp":"1f476-1f3fd","sns":[],"c":"people"},":baby_tone4:":{"sn":":baby_tone4:","cp":"1f476-1f3fe","sns":[],"c":"people"},":baby_tone5:":{"sn":":baby_tone5:","cp":"1f476-1f3ff","sns":[],"c":"people"},":bearded_person:":{"sn":":bearded_person:","cp":"1f9d4","sns":[],"c":"people"},":bearded_person_tone1:":{"sn":":bearded_person_tone1:","cp":"1f9d4-1f3fb","sns":[":bearded_person_light_skin_tone:"],"c":"people"},":bearded_person_tone2:":{"sn":":bearded_person_tone2:","cp":"1f9d4-1f3fc","sns":[":bearded_person_medium_light_skin_tone:"],"c":"people"},":bearded_person_tone3:":{"sn":":bearded_person_tone3:","cp":"1f9d4-1f3fd","sns":[":bearded_person_medium_skin_tone:"],"c":"people"},":bearded_person_tone4:":{"sn":":bearded_person_tone4:","cp":"1f9d4-1f3fe","sns":[":bearded_person_medium_dark_skin_tone:"],"c":"people"},":bearded_person_tone5:":{"sn":":bearded_person_tone5:","cp":"1f9d4-1f3ff","sns":[":bearded_person_dark_skin_tone:"],"c":"people"},":blond-haired_man:":{"sn":":blond-haired_man:","cp":"1f471-200d-2642-fe0f","sns":[],"c":"people"},":blond-haired_man_tone1:":{"sn":":blond-haired_man_tone1:","cp":"1f471-1f3fb-200d-2642-fe0f","sns":[":blond-haired_man_light_skin_tone:"],"c":"people"},":blond-haired_man_tone2:":{"sn":":blond-haired_man_tone2:","cp":"1f471-1f3fc-200d-2642-fe0f","sns":[":blond-haired_man_medium_light_skin_tone:"],"c":"people"},":blond-haired_man_tone3:":{"sn":":blond-haired_man_tone3:","cp":"1f471-1f3fd-200d-2642-fe0f","sns":[":blond-haired_man_medium_skin_tone:"],"c":"people"},":blond-haired_man_tone4:":{"sn":":blond-haired_man_tone4:","cp":"1f471-1f3fe-200d-2642-fe0f","sns":[":blond-haired_man_medium_dark_skin_tone:"],"c":"people"},":blond-haired_man_tone5:":{"sn":":blond-haired_man_tone5:","cp":"1f471-1f3ff-200d-2642-fe0f","sns":[":blond-haired_man_dark_skin_tone:"],"c":"people"},":blond-haired_woman:":{"sn":":blond-haired_woman:","cp":"1f471-200d-2640-fe0f","sns":[],"c":"people"},":blond-haired_woman_tone1:":{"sn":":blond-haired_woman_tone1:","cp":"1f471-1f3fb-200d-2640-fe0f","sns":[":blond-haired_woman_light_skin_tone:"],"c":"people"},":blond-haired_woman_tone2:":{"sn":":blond-haired_woman_tone2:","cp":"1f471-1f3fc-200d-2640-fe0f","sns":[":blond-haired_woman_medium_light_skin_tone:"],"c":"people"},":blond-haired_woman_tone3:":{"sn":":blond-haired_woman_tone3:","cp":"1f471-1f3fd-200d-2640-fe0f","sns":[":blond-haired_woman_medium_skin_tone:"],"c":"people"},":blond-haired_woman_tone4:":{"sn":":blond-haired_woman_tone4:","cp":"1f471-1f3fe-200d-2640-fe0f","sns":[":blond-haired_woman_medium_dark_skin_tone:"],"c":"people"},":blond-haired_woman_tone5:":{"sn":":blond-haired_woman_tone5:","cp":"1f471-1f3ff-200d-2640-fe0f","sns":[":blond-haired_woman_dark_skin_tone:"],"c":"people"},":blond_haired_person:":{"sn":":blond_haired_person:","cp":"1f471","sns":[":person_with_blond_hair:"],"c":"people"},":blond_haired_person_tone1:":{"sn":":blond_haired_person_tone1:","cp":"1f471-1f3fb","sns":[":person_with_blond_hair_tone1:"],"c":"people"},":blond_haired_person_tone2:":{"sn":":blond_haired_person_tone2:","cp":"1f471-1f3fc","sns":[":person_with_blond_hair_tone2:"],"c":"people"},":blond_haired_person_tone3:":{"sn":":blond_haired_person_tone3:","cp":"1f471-1f3fd","sns":[":person_with_blond_hair_tone3:"],"c":"people"},":blond_haired_person_tone4:":{"sn":":blond_haired_person_tone4:","cp":"1f471-1f3fe","sns":[":person_with_blond_hair_tone4:"],"c":"people"},":blond_haired_person_tone5:":{"sn":":blond_haired_person_tone5:","cp":"1f471-1f3ff","sns":[":person_with_blond_hair_tone5:"],"c":"people"},":boy:":{"sn":":boy:","cp":"1f466","sns":[],"c":"people"},":boy_tone1:":{"sn":":boy_tone1:","cp":"1f466-1f3fb","sns":[],"c":"people"},":boy_tone2:":{"sn":":boy_tone2:","cp":"1f466-1f3fc","sns":[],"c":"people"},":boy_tone3:":{"sn":":boy_tone3:","cp":"1f466-1f3fd","sns":[],"c":"people"},":boy_tone4:":{"sn":":boy_tone4:","cp":"1f466-1f3fe","sns":[],"c":"people"},":boy_tone5:":{"sn":":boy_tone5:","cp":"1f466-1f3ff","sns":[],"c":"people"},":brain:":{"sn":":brain:","cp":"1f9e0","sns":[],"c":"people"},":breast_feeding:":{"sn":":breast_feeding:","cp":"1f931","sns":[],"c":"people"},":breast_feeding_tone1:":{"sn":":breast_feeding_tone1:","cp":"1f931-1f3fb","sns":[":breast_feeding_light_skin_tone:"],"c":"people"},":breast_feeding_tone2:":{"sn":":breast_feeding_tone2:","cp":"1f931-1f3fc","sns":[":breast_feeding_medium_light_skin_tone:"],"c":"people"},":breast_feeding_tone3:":{"sn":":breast_feeding_tone3:","cp":"1f931-1f3fd","sns":[":breast_feeding_medium_skin_tone:"],"c":"people"},":breast_feeding_tone4:":{"sn":":breast_feeding_tone4:","cp":"1f931-1f3fe","sns":[":breast_feeding_medium_dark_skin_tone:"],"c":"people"},":breast_feeding_tone5:":{"sn":":breast_feeding_tone5:","cp":"1f931-1f3ff","sns":[":breast_feeding_dark_skin_tone:"],"c":"people"},":bride_with_veil:":{"sn":":bride_with_veil:","cp":"1f470","sns":[],"c":"people"},":bride_with_veil_tone1:":{"sn":":bride_with_veil_tone1:","cp":"1f470-1f3fb","sns":[],"c":"people"},":bride_with_veil_tone2:":{"sn":":bride_with_veil_tone2:","cp":"1f470-1f3fc","sns":[],"c":"people"},":bride_with_veil_tone3:":{"sn":":bride_with_veil_tone3:","cp":"1f470-1f3fd","sns":[],"c":"people"},":bride_with_veil_tone4:":{"sn":":bride_with_veil_tone4:","cp":"1f470-1f3fe","sns":[],"c":"people"},":bride_with_veil_tone5:":{"sn":":bride_with_veil_tone5:","cp":"1f470-1f3ff","sns":[],"c":"people"},":bust_in_silhouette:":{"sn":":bust_in_silhouette:","cp":"1f464","sns":[],"c":"people"},":busts_in_silhouette:":{"sn":":busts_in_silhouette:","cp":"1f465","sns":[],"c":"people"},":child:":{"sn":":child:","cp":"1f9d2","sns":[],"c":"people"},":child_tone1:":{"sn":":child_tone1:","cp":"1f9d2-1f3fb","sns":[":child_light_skin_tone:"],"c":"people"},":child_tone2:":{"sn":":child_tone2:","cp":"1f9d2-1f3fc","sns":[":child_medium_light_skin_tone:"],"c":"people"},":child_tone3:":{"sn":":child_tone3:","cp":"1f9d2-1f3fd","sns":[":child_medium_skin_tone:"],"c":"people"},":child_tone4:":{"sn":":child_tone4:","cp":"1f9d2-1f3fe","sns":[":child_medium_dark_skin_tone:"],"c":"people"},":child_tone5:":{"sn":":child_tone5:","cp":"1f9d2-1f3ff","sns":[":child_dark_skin_tone:"],"c":"people"},":construction_worker:":{"sn":":construction_worker:","cp":"1f477","sns":[],"c":"people"},":construction_worker_tone1:":{"sn":":construction_worker_tone1:","cp":"1f477-1f3fb","sns":[],"c":"people"},":construction_worker_tone2:":{"sn":":construction_worker_tone2:","cp":"1f477-1f3fc","sns":[],"c":"people"},":construction_worker_tone3:":{"sn":":construction_worker_tone3:","cp":"1f477-1f3fd","sns":[],"c":"people"},":construction_worker_tone4:":{"sn":":construction_worker_tone4:","cp":"1f477-1f3fe","sns":[],"c":"people"},":construction_worker_tone5:":{"sn":":construction_worker_tone5:","cp":"1f477-1f3ff","sns":[],"c":"people"},":couple:":{"sn":":couple:","cp":"1f46b","sns":[],"c":"people"},":couple_mm:":{"sn":":couple_mm:","cp":"1f468-200d-2764-fe0f-200d-1f468","sns":[":couple_with_heart_mm:"],"c":"people"},":couple_with_heart:":{"sn":":couple_with_heart:","cp":"1f491","sns":[],"c":"people"},":couple_with_heart_woman_man:":{"sn":":couple_with_heart_woman_man:","cp":"1f469-200d-2764-fe0f-200d-1f468","sns":[],"c":"people"},":couple_ww:":{"sn":":couple_ww:","cp":"1f469-200d-2764-fe0f-200d-1f469","sns":[":couple_with_heart_ww:"],"c":"people"},":couplekiss:":{"sn":":couplekiss:","cp":"1f48f","sns":[],"c":"people"},":dancer:":{"sn":":dancer:","cp":"1f483","sns":[],"c":"people"},":dancer_tone1:":{"sn":":dancer_tone1:","cp":"1f483-1f3fb","sns":[],"c":"people"},":dancer_tone2:":{"sn":":dancer_tone2:","cp":"1f483-1f3fc","sns":[],"c":"people"},":dancer_tone3:":{"sn":":dancer_tone3:","cp":"1f483-1f3fd","sns":[],"c":"people"},":dancer_tone4:":{"sn":":dancer_tone4:","cp":"1f483-1f3fe","sns":[],"c":"people"},":dancer_tone5:":{"sn":":dancer_tone5:","cp":"1f483-1f3ff","sns":[],"c":"people"},":detective:":{"sn":":detective:","cp":"1f575","sns":[":spy:",":sleuth_or_spy:"],"c":"people"},":detective_tone1:":{"sn":":detective_tone1:","cp":"1f575-1f3fb","sns":[":spy_tone1:",":sleuth_or_spy_tone1:"],"c":"people"},":detective_tone2:":{"sn":":detective_tone2:","cp":"1f575-1f3fc","sns":[":spy_tone2:",":sleuth_or_spy_tone2:"],"c":"people"},":detective_tone3:":{"sn":":detective_tone3:","cp":"1f575-1f3fd","sns":[":spy_tone3:",":sleuth_or_spy_tone3:"],"c":"people"},":detective_tone4:":{"sn":":detective_tone4:","cp":"1f575-1f3fe","sns":[":spy_tone4:",":sleuth_or_spy_tone4:"],"c":"people"},":detective_tone5:":{"sn":":detective_tone5:","cp":"1f575-1f3ff","sns":[":spy_tone5:",":sleuth_or_spy_tone5:"],"c":"people"},":ear:":{"sn":":ear:","cp":"1f442","sns":[],"c":"people"},":ear_tone1:":{"sn":":ear_tone1:","cp":"1f442-1f3fb","sns":[],"c":"people"},":ear_tone2:":{"sn":":ear_tone2:","cp":"1f442-1f3fc","sns":[],"c":"people"},":ear_tone3:":{"sn":":ear_tone3:","cp":"1f442-1f3fd","sns":[],"c":"people"},":ear_tone4:":{"sn":":ear_tone4:","cp":"1f442-1f3fe","sns":[],"c":"people"},":ear_tone5:":{"sn":":ear_tone5:","cp":"1f442-1f3ff","sns":[],"c":"people"},":elf:":{"sn":":elf:","cp":"1f9dd","sns":[],"c":"people"},":elf_tone1:":{"sn":":elf_tone1:","cp":"1f9dd-1f3fb","sns":[":elf_light_skin_tone:"],"c":"people"},":elf_tone2:":{"sn":":elf_tone2:","cp":"1f9dd-1f3fc","sns":[":elf_medium_light_skin_tone:"],"c":"people"},":elf_tone3:":{"sn":":elf_tone3:","cp":"1f9dd-1f3fd","sns":[":elf_medium_skin_tone:"],"c":"people"},":elf_tone4:":{"sn":":elf_tone4:","cp":"1f9dd-1f3fe","sns":[":elf_medium_dark_skin_tone:"],"c":"people"},":elf_tone5:":{"sn":":elf_tone5:","cp":"1f9dd-1f3ff","sns":[":elf_dark_skin_tone:"],"c":"people"},":eye:":{"sn":":eye:","cp":"1f441-fe0f","sns":[],"c":"people"},":eyes:":{"sn":":eyes:","cp":"1f440","sns":[],"c":"people"},":fairy:":{"sn":":fairy:","cp":"1f9da","sns":[],"c":"people"},":fairy_tone1:":{"sn":":fairy_tone1:","cp":"1f9da-1f3fb","sns":[":fairy_light_skin_tone:"],"c":"people"},":fairy_tone2:":{"sn":":fairy_tone2:","cp":"1f9da-1f3fc","sns":[":fairy_medium_light_skin_tone:"],"c":"people"},":fairy_tone3:":{"sn":":fairy_tone3:","cp":"1f9da-1f3fd","sns":[":fairy_medium_skin_tone:"],"c":"people"},":fairy_tone4:":{"sn":":fairy_tone4:","cp":"1f9da-1f3fe","sns":[":fairy_medium_dark_skin_tone:"],"c":"people"},":fairy_tone5:":{"sn":":fairy_tone5:","cp":"1f9da-1f3ff","sns":[":fairy_dark_skin_tone:"],"c":"people"},":family:":{"sn":":family:","cp":"1f46a","sns":[],"c":"people"},":family_man_boy:":{"sn":":family_man_boy:","cp":"1f468-200d-1f466","sns":[],"c":"people"},":family_man_boy_boy:":{"sn":":family_man_boy_boy:","cp":"1f468-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_man_girl:":{"sn":":family_man_girl:","cp":"1f468-200d-1f467","sns":[],"c":"people"},":family_man_girl_boy:":{"sn":":family_man_girl_boy:","cp":"1f468-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_man_girl_girl:":{"sn":":family_man_girl_girl:","cp":"1f468-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_man_woman_boy:":{"sn":":family_man_woman_boy:","cp":"1f468-200d-1f469-200d-1f466","sns":[],"c":"people"},":family_mmb:":{"sn":":family_mmb:","cp":"1f468-200d-1f468-200d-1f466","sns":[],"c":"people"},":family_mmbb:":{"sn":":family_mmbb:","cp":"1f468-200d-1f468-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_mmg:":{"sn":":family_mmg:","cp":"1f468-200d-1f468-200d-1f467","sns":[],"c":"people"},":family_mmgb:":{"sn":":family_mmgb:","cp":"1f468-200d-1f468-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_mmgg:":{"sn":":family_mmgg:","cp":"1f468-200d-1f468-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_mwbb:":{"sn":":family_mwbb:","cp":"1f468-200d-1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_mwg:":{"sn":":family_mwg:","cp":"1f468-200d-1f469-200d-1f467","sns":[],"c":"people"},":family_mwgb:":{"sn":":family_mwgb:","cp":"1f468-200d-1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_mwgg:":{"sn":":family_mwgg:","cp":"1f468-200d-1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_woman_boy:":{"sn":":family_woman_boy:","cp":"1f469-200d-1f466","sns":[],"c":"people"},":family_woman_boy_boy:":{"sn":":family_woman_boy_boy:","cp":"1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_woman_girl:":{"sn":":family_woman_girl:","cp":"1f469-200d-1f467","sns":[],"c":"people"},":family_woman_girl_boy:":{"sn":":family_woman_girl_boy:","cp":"1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_woman_girl_girl:":{"sn":":family_woman_girl_girl:","cp":"1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":family_wwb:":{"sn":":family_wwb:","cp":"1f469-200d-1f469-200d-1f466","sns":[],"c":"people"},":family_wwbb:":{"sn":":family_wwbb:","cp":"1f469-200d-1f469-200d-1f466-200d-1f466","sns":[],"c":"people"},":family_wwg:":{"sn":":family_wwg:","cp":"1f469-200d-1f469-200d-1f467","sns":[],"c":"people"},":family_wwgb:":{"sn":":family_wwgb:","cp":"1f469-200d-1f469-200d-1f467-200d-1f466","sns":[],"c":"people"},":family_wwgg:":{"sn":":family_wwgg:","cp":"1f469-200d-1f469-200d-1f467-200d-1f467","sns":[],"c":"people"},":footprints:":{"sn":":footprints:","cp":"1f463","sns":[],"c":"people"},":frowning2:":{"sn":":frowning2:","cp":"2639","sns":[":white_frowning_face:"],"c":"people"},":genie:":{"sn":":genie:","cp":"1f9de","sns":[],"c":"people"},":ghost:":{"sn":":ghost:","cp":"1f47b","sns":[],"c":"people"},":girl:":{"sn":":girl:","cp":"1f467","sns":[],"c":"people"},":girl_tone1:":{"sn":":girl_tone1:","cp":"1f467-1f3fb","sns":[],"c":"people"},":girl_tone2:":{"sn":":girl_tone2:","cp":"1f467-1f3fc","sns":[],"c":"people"},":girl_tone3:":{"sn":":girl_tone3:","cp":"1f467-1f3fd","sns":[],"c":"people"},":girl_tone4:":{"sn":":girl_tone4:","cp":"1f467-1f3fe","sns":[],"c":"people"},":girl_tone5:":{"sn":":girl_tone5:","cp":"1f467-1f3ff","sns":[],"c":"people"},":guard:":{"sn":":guard:","cp":"1f482","sns":[":guardsman:"],"c":"people"},":guard_tone1:":{"sn":":guard_tone1:","cp":"1f482-1f3fb","sns":[":guardsman_tone1:"],"c":"people"},":guard_tone2:":{"sn":":guard_tone2:","cp":"1f482-1f3fc","sns":[":guardsman_tone2:"],"c":"people"},":guard_tone3:":{"sn":":guard_tone3:","cp":"1f482-1f3fd","sns":[":guardsman_tone3:"],"c":"people"},":guard_tone4:":{"sn":":guard_tone4:","cp":"1f482-1f3fe","sns":[":guardsman_tone4:"],"c":"people"},":guard_tone5:":{"sn":":guard_tone5:","cp":"1f482-1f3ff","sns":[":guardsman_tone5:"],"c":"people"},":helmet_with_cross:":{"sn":":helmet_with_cross:","cp":"26d1","sns":[":helmet_with_white_cross:"],"c":"people"},":kiss:":{"sn":":kiss:","cp":"1f48b","sns":[],"c":"people"},":kiss_mm:":{"sn":":kiss_mm:","cp":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","sns":[":couplekiss_mm:"],"c":"people"},":kiss_woman_man:":{"sn":":kiss_woman_man:","cp":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","sns":[],"c":"people"},":kiss_ww:":{"sn":":kiss_ww:","cp":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","sns":[":couplekiss_ww:"],"c":"people"},":levitate:":{"sn":":levitate:","cp":"1f574","sns":[":man_in_business_suit_levitating:"],"c":"people"},":levitate_tone1:":{"sn":":levitate_tone1:","cp":"1f574-1f3fb","sns":[":man_in_business_suit_levitating_tone1:",":man_in_business_suit_levitating_light_skin_tone:"],"c":"people"},":levitate_tone2:":{"sn":":levitate_tone2:","cp":"1f574-1f3fc","sns":[":man_in_business_suit_levitating_tone2:",":man_in_business_suit_levitating_medium_light_skin_tone:"],"c":"people"},":levitate_tone3:":{"sn":":levitate_tone3:","cp":"1f574-1f3fd","sns":[":man_in_business_suit_levitating_tone3:",":man_in_business_suit_levitating_medium_skin_tone:"],"c":"people"},":levitate_tone4:":{"sn":":levitate_tone4:","cp":"1f574-1f3fe","sns":[":man_in_business_suit_levitating_tone4:",":man_in_business_suit_levitating_medium_dark_skin_tone:"],"c":"people"},":levitate_tone5:":{"sn":":levitate_tone5:","cp":"1f574-1f3ff","sns":[":man_in_business_suit_levitating_tone5:",":man_in_business_suit_levitating_dark_skin_tone:"],"c":"people"},":lips:":{"sn":":lips:","cp":"1f444","sns":[],"c":"people"},":mage:":{"sn":":mage:","cp":"1f9d9","sns":[],"c":"people"},":mage_tone1:":{"sn":":mage_tone1:","cp":"1f9d9-1f3fb","sns":[":mage_light_skin_tone:"],"c":"people"},":mage_tone2:":{"sn":":mage_tone2:","cp":"1f9d9-1f3fc","sns":[":mage_medium_light_skin_tone:"],"c":"people"},":mage_tone3:":{"sn":":mage_tone3:","cp":"1f9d9-1f3fd","sns":[":mage_medium_skin_tone:"],"c":"people"},":mage_tone4:":{"sn":":mage_tone4:","cp":"1f9d9-1f3fe","sns":[":mage_medium_dark_skin_tone:"],"c":"people"},":mage_tone5:":{"sn":":mage_tone5:","cp":"1f9d9-1f3ff","sns":[":mage_dark_skin_tone:"],"c":"people"},":man:":{"sn":":man:","cp":"1f468","sns":[],"c":"people"},":man_artist:":{"sn":":man_artist:","cp":"1f468-200d-1f3a8","sns":[],"c":"people"},":man_artist_tone1:":{"sn":":man_artist_tone1:","cp":"1f468-1f3fb-200d-1f3a8","sns":[":man_artist_light_skin_tone:"],"c":"people"},":man_artist_tone2:":{"sn":":man_artist_tone2:","cp":"1f468-1f3fc-200d-1f3a8","sns":[":man_artist_medium_light_skin_tone:"],"c":"people"},":man_artist_tone3:":{"sn":":man_artist_tone3:","cp":"1f468-1f3fd-200d-1f3a8","sns":[":man_artist_medium_skin_tone:"],"c":"people"},":man_artist_tone4:":{"sn":":man_artist_tone4:","cp":"1f468-1f3fe-200d-1f3a8","sns":[":man_artist_medium_dark_skin_tone:"],"c":"people"},":man_artist_tone5:":{"sn":":man_artist_tone5:","cp":"1f468-1f3ff-200d-1f3a8","sns":[":man_artist_dark_skin_tone:"],"c":"people"},":man_astronaut:":{"sn":":man_astronaut:","cp":"1f468-200d-1f680","sns":[],"c":"people"},":man_astronaut_tone1:":{"sn":":man_astronaut_tone1:","cp":"1f468-1f3fb-200d-1f680","sns":[":man_astronaut_light_skin_tone:"],"c":"people"},":man_astronaut_tone2:":{"sn":":man_astronaut_tone2:","cp":"1f468-1f3fc-200d-1f680","sns":[":man_astronaut_medium_light_skin_tone:"],"c":"people"},":man_astronaut_tone3:":{"sn":":man_astronaut_tone3:","cp":"1f468-1f3fd-200d-1f680","sns":[":man_astronaut_medium_skin_tone:"],"c":"people"},":man_astronaut_tone4:":{"sn":":man_astronaut_tone4:","cp":"1f468-1f3fe-200d-1f680","sns":[":man_astronaut_medium_dark_skin_tone:"],"c":"people"},":man_astronaut_tone5:":{"sn":":man_astronaut_tone5:","cp":"1f468-1f3ff-200d-1f680","sns":[":man_astronaut_dark_skin_tone:"],"c":"people"},":man_bowing:":{"sn":":man_bowing:","cp":"1f647-200d-2642-fe0f","sns":[],"c":"people"},":man_bowing_tone1:":{"sn":":man_bowing_tone1:","cp":"1f647-1f3fb-200d-2642-fe0f","sns":[":man_bowing_light_skin_tone:"],"c":"people"},":man_bowing_tone2:":{"sn":":man_bowing_tone2:","cp":"1f647-1f3fc-200d-2642-fe0f","sns":[":man_bowing_medium_light_skin_tone:"],"c":"people"},":man_bowing_tone3:":{"sn":":man_bowing_tone3:","cp":"1f647-1f3fd-200d-2642-fe0f","sns":[":man_bowing_medium_skin_tone:"],"c":"people"},":man_bowing_tone4:":{"sn":":man_bowing_tone4:","cp":"1f647-1f3fe-200d-2642-fe0f","sns":[":man_bowing_medium_dark_skin_tone:"],"c":"people"},":man_bowing_tone5:":{"sn":":man_bowing_tone5:","cp":"1f647-1f3ff-200d-2642-fe0f","sns":[":man_bowing_dark_skin_tone:"],"c":"people"},":man_construction_worker:":{"sn":":man_construction_worker:","cp":"1f477-200d-2642-fe0f","sns":[],"c":"people"},":man_construction_worker_tone1:":{"sn":":man_construction_worker_tone1:","cp":"1f477-1f3fb-200d-2642-fe0f","sns":[":man_construction_worker_light_skin_tone:"],"c":"people"},":man_construction_worker_tone2:":{"sn":":man_construction_worker_tone2:","cp":"1f477-1f3fc-200d-2642-fe0f","sns":[":man_construction_worker_medium_light_skin_tone:"],"c":"people"},":man_construction_worker_tone3:":{"sn":":man_construction_worker_tone3:","cp":"1f477-1f3fd-200d-2642-fe0f","sns":[":man_construction_worker_medium_skin_tone:"],"c":"people"},":man_construction_worker_tone4:":{"sn":":man_construction_worker_tone4:","cp":"1f477-1f3fe-200d-2642-fe0f","sns":[":man_construction_worker_medium_dark_skin_tone:"],"c":"people"},":man_construction_worker_tone5:":{"sn":":man_construction_worker_tone5:","cp":"1f477-1f3ff-200d-2642-fe0f","sns":[":man_construction_worker_dark_skin_tone:"],"c":"people"},":man_cook:":{"sn":":man_cook:","cp":"1f468-200d-1f373","sns":[],"c":"people"},":man_cook_tone1:":{"sn":":man_cook_tone1:","cp":"1f468-1f3fb-200d-1f373","sns":[":man_cook_light_skin_tone:"],"c":"people"},":man_cook_tone2:":{"sn":":man_cook_tone2:","cp":"1f468-1f3fc-200d-1f373","sns":[":man_cook_medium_light_skin_tone:"],"c":"people"},":man_cook_tone3:":{"sn":":man_cook_tone3:","cp":"1f468-1f3fd-200d-1f373","sns":[":man_cook_medium_skin_tone:"],"c":"people"},":man_cook_tone4:":{"sn":":man_cook_tone4:","cp":"1f468-1f3fe-200d-1f373","sns":[":man_cook_medium_dark_skin_tone:"],"c":"people"},":man_cook_tone5:":{"sn":":man_cook_tone5:","cp":"1f468-1f3ff-200d-1f373","sns":[":man_cook_dark_skin_tone:"],"c":"people"},":man_dancing:":{"sn":":man_dancing:","cp":"1f57a","sns":[":male_dancer:"],"c":"people"},":man_dancing_tone1:":{"sn":":man_dancing_tone1:","cp":"1f57a-1f3fb","sns":[":male_dancer_tone1:"],"c":"people"},":man_dancing_tone2:":{"sn":":man_dancing_tone2:","cp":"1f57a-1f3fc","sns":[":male_dancer_tone2:"],"c":"people"},":man_dancing_tone3:":{"sn":":man_dancing_tone3:","cp":"1f57a-1f3fd","sns":[":male_dancer_tone3:"],"c":"people"},":man_dancing_tone4:":{"sn":":man_dancing_tone4:","cp":"1f57a-1f3fe","sns":[":male_dancer_tone4:"],"c":"people"},":man_dancing_tone5:":{"sn":":man_dancing_tone5:","cp":"1f57a-1f3ff","sns":[":male_dancer_tone5:"],"c":"people"},":man_detective:":{"sn":":man_detective:","cp":"1f575-fe0f-200d-2642-fe0f","sns":[],"c":"people"},":man_detective_tone1:":{"sn":":man_detective_tone1:","cp":"1f575-1f3fb-200d-2642-fe0f","sns":[":man_detective_light_skin_tone:"],"c":"people"},":man_detective_tone2:":{"sn":":man_detective_tone2:","cp":"1f575-1f3fc-200d-2642-fe0f","sns":[":man_detective_medium_light_skin_tone:"],"c":"people"},":man_detective_tone3:":{"sn":":man_detective_tone3:","cp":"1f575-1f3fd-200d-2642-fe0f","sns":[":man_detective_medium_skin_tone:"],"c":"people"},":man_detective_tone4:":{"sn":":man_detective_tone4:","cp":"1f575-1f3fe-200d-2642-fe0f","sns":[":man_detective_medium_dark_skin_tone:"],"c":"people"},":man_detective_tone5:":{"sn":":man_detective_tone5:","cp":"1f575-1f3ff-200d-2642-fe0f","sns":[":man_detective_dark_skin_tone:"],"c":"people"},":man_elf:":{"sn":":man_elf:","cp":"1f9dd-200d-2642-fe0f","sns":[],"c":"people"},":man_elf_tone1:":{"sn":":man_elf_tone1:","cp":"1f9dd-1f3fb-200d-2642-fe0f","sns":[":man_elf_light_skin_tone:"],"c":"people"},":man_elf_tone2:":{"sn":":man_elf_tone2:","cp":"1f9dd-1f3fc-200d-2642-fe0f","sns":[":man_elf_medium_light_skin_tone:"],"c":"people"},":man_elf_tone3:":{"sn":":man_elf_tone3:","cp":"1f9dd-1f3fd-200d-2642-fe0f","sns":[":man_elf_medium_skin_tone:"],"c":"people"},":man_elf_tone4:":{"sn":":man_elf_tone4:","cp":"1f9dd-1f3fe-200d-2642-fe0f","sns":[":man_elf_medium_dark_skin_tone:"],"c":"people"},":man_elf_tone5:":{"sn":":man_elf_tone5:","cp":"1f9dd-1f3ff-200d-2642-fe0f","sns":[":man_elf_dark_skin_tone:"],"c":"people"},":man_facepalming:":{"sn":":man_facepalming:","cp":"1f926-200d-2642-fe0f","sns":[],"c":"people"},":man_facepalming_tone1:":{"sn":":man_facepalming_tone1:","cp":"1f926-1f3fb-200d-2642-fe0f","sns":[":man_facepalming_light_skin_tone:"],"c":"people"},":man_facepalming_tone2:":{"sn":":man_facepalming_tone2:","cp":"1f926-1f3fc-200d-2642-fe0f","sns":[":man_facepalming_medium_light_skin_tone:"],"c":"people"},":man_facepalming_tone3:":{"sn":":man_facepalming_tone3:","cp":"1f926-1f3fd-200d-2642-fe0f","sns":[":man_facepalming_medium_skin_tone:"],"c":"people"},":man_facepalming_tone4:":{"sn":":man_facepalming_tone4:","cp":"1f926-1f3fe-200d-2642-fe0f","sns":[":man_facepalming_medium_dark_skin_tone:"],"c":"people"},":man_facepalming_tone5:":{"sn":":man_facepalming_tone5:","cp":"1f926-1f3ff-200d-2642-fe0f","sns":[":man_facepalming_dark_skin_tone:"],"c":"people"},":man_factory_worker:":{"sn":":man_factory_worker:","cp":"1f468-200d-1f3ed","sns":[],"c":"people"},":man_factory_worker_tone1:":{"sn":":man_factory_worker_tone1:","cp":"1f468-1f3fb-200d-1f3ed","sns":[":man_factory_worker_light_skin_tone:"],"c":"people"},":man_factory_worker_tone2:":{"sn":":man_factory_worker_tone2:","cp":"1f468-1f3fc-200d-1f3ed","sns":[":man_factory_worker_medium_light_skin_tone:"],"c":"people"},":man_factory_worker_tone3:":{"sn":":man_factory_worker_tone3:","cp":"1f468-1f3fd-200d-1f3ed","sns":[":man_factory_worker_medium_skin_tone:"],"c":"people"},":man_factory_worker_tone4:":{"sn":":man_factory_worker_tone4:","cp":"1f468-1f3fe-200d-1f3ed","sns":[":man_factory_worker_medium_dark_skin_tone:"],"c":"people"},":man_factory_worker_tone5:":{"sn":":man_factory_worker_tone5:","cp":"1f468-1f3ff-200d-1f3ed","sns":[":man_factory_worker_dark_skin_tone:"],"c":"people"},":man_fairy:":{"sn":":man_fairy:","cp":"1f9da-200d-2642-fe0f","sns":[],"c":"people"},":man_fairy_tone1:":{"sn":":man_fairy_tone1:","cp":"1f9da-1f3fb-200d-2642-fe0f","sns":[":man_fairy_light_skin_tone:"],"c":"people"},":man_fairy_tone2:":{"sn":":man_fairy_tone2:","cp":"1f9da-1f3fc-200d-2642-fe0f","sns":[":man_fairy_medium_light_skin_tone:"],"c":"people"},":man_fairy_tone3:":{"sn":":man_fairy_tone3:","cp":"1f9da-1f3fd-200d-2642-fe0f","sns":[":man_fairy_medium_skin_tone:"],"c":"people"},":man_fairy_tone4:":{"sn":":man_fairy_tone4:","cp":"1f9da-1f3fe-200d-2642-fe0f","sns":[":man_fairy_medium_dark_skin_tone:"],"c":"people"},":man_fairy_tone5:":{"sn":":man_fairy_tone5:","cp":"1f9da-1f3ff-200d-2642-fe0f","sns":[":man_fairy_dark_skin_tone:"],"c":"people"},":man_farmer:":{"sn":":man_farmer:","cp":"1f468-200d-1f33e","sns":[],"c":"people"},":man_farmer_tone1:":{"sn":":man_farmer_tone1:","cp":"1f468-1f3fb-200d-1f33e","sns":[":man_farmer_light_skin_tone:"],"c":"people"},":man_farmer_tone2:":{"sn":":man_farmer_tone2:","cp":"1f468-1f3fc-200d-1f33e","sns":[":man_farmer_medium_light_skin_tone:"],"c":"people"},":man_farmer_tone3:":{"sn":":man_farmer_tone3:","cp":"1f468-1f3fd-200d-1f33e","sns":[":man_farmer_medium_skin_tone:"],"c":"people"},":man_farmer_tone4:":{"sn":":man_farmer_tone4:","cp":"1f468-1f3fe-200d-1f33e","sns":[":man_farmer_medium_dark_skin_tone:"],"c":"people"},":man_farmer_tone5:":{"sn":":man_farmer_tone5:","cp":"1f468-1f3ff-200d-1f33e","sns":[":man_farmer_dark_skin_tone:"],"c":"people"},":man_firefighter:":{"sn":":man_firefighter:","cp":"1f468-200d-1f692","sns":[],"c":"people"},":man_firefighter_tone1:":{"sn":":man_firefighter_tone1:","cp":"1f468-1f3fb-200d-1f692","sns":[":man_firefighter_light_skin_tone:"],"c":"people"},":man_firefighter_tone2:":{"sn":":man_firefighter_tone2:","cp":"1f468-1f3fc-200d-1f692","sns":[":man_firefighter_medium_light_skin_tone:"],"c":"people"},":man_firefighter_tone3:":{"sn":":man_firefighter_tone3:","cp":"1f468-1f3fd-200d-1f692","sns":[":man_firefighter_medium_skin_tone:"],"c":"people"},":man_firefighter_tone4:":{"sn":":man_firefighter_tone4:","cp":"1f468-1f3fe-200d-1f692","sns":[":man_firefighter_medium_dark_skin_tone:"],"c":"people"},":man_firefighter_tone5:":{"sn":":man_firefighter_tone5:","cp":"1f468-1f3ff-200d-1f692","sns":[":man_firefighter_dark_skin_tone:"],"c":"people"},":man_frowning:":{"sn":":man_frowning:","cp":"1f64d-200d-2642-fe0f","sns":[],"c":"people"},":man_frowning_tone1:":{"sn":":man_frowning_tone1:","cp":"1f64d-1f3fb-200d-2642-fe0f","sns":[":man_frowning_light_skin_tone:"],"c":"people"},":man_frowning_tone2:":{"sn":":man_frowning_tone2:","cp":"1f64d-1f3fc-200d-2642-fe0f","sns":[":man_frowning_medium_light_skin_tone:"],"c":"people"},":man_frowning_tone3:":{"sn":":man_frowning_tone3:","cp":"1f64d-1f3fd-200d-2642-fe0f","sns":[":man_frowning_medium_skin_tone:"],"c":"people"},":man_frowning_tone4:":{"sn":":man_frowning_tone4:","cp":"1f64d-1f3fe-200d-2642-fe0f","sns":[":man_frowning_medium_dark_skin_tone:"],"c":"people"},":man_frowning_tone5:":{"sn":":man_frowning_tone5:","cp":"1f64d-1f3ff-200d-2642-fe0f","sns":[":man_frowning_dark_skin_tone:"],"c":"people"},":man_genie:":{"sn":":man_genie:","cp":"1f9de-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_no:":{"sn":":man_gesturing_no:","cp":"1f645-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_no_tone1:":{"sn":":man_gesturing_no_tone1:","cp":"1f645-1f3fb-200d-2642-fe0f","sns":[":man_gesturing_no_light_skin_tone:"],"c":"people"},":man_gesturing_no_tone2:":{"sn":":man_gesturing_no_tone2:","cp":"1f645-1f3fc-200d-2642-fe0f","sns":[":man_gesturing_no_medium_light_skin_tone:"],"c":"people"},":man_gesturing_no_tone3:":{"sn":":man_gesturing_no_tone3:","cp":"1f645-1f3fd-200d-2642-fe0f","sns":[":man_gesturing_no_medium_skin_tone:"],"c":"people"},":man_gesturing_no_tone4:":{"sn":":man_gesturing_no_tone4:","cp":"1f645-1f3fe-200d-2642-fe0f","sns":[":man_gesturing_no_medium_dark_skin_tone:"],"c":"people"},":man_gesturing_no_tone5:":{"sn":":man_gesturing_no_tone5:","cp":"1f645-1f3ff-200d-2642-fe0f","sns":[":man_gesturing_no_dark_skin_tone:"],"c":"people"},":man_gesturing_ok:":{"sn":":man_gesturing_ok:","cp":"1f646-200d-2642-fe0f","sns":[],"c":"people"},":man_gesturing_ok_tone1:":{"sn":":man_gesturing_ok_tone1:","cp":"1f646-1f3fb-200d-2642-fe0f","sns":[":man_gesturing_ok_light_skin_tone:"],"c":"people"},":man_gesturing_ok_tone2:":{"sn":":man_gesturing_ok_tone2:","cp":"1f646-1f3fc-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_light_skin_tone:"],"c":"people"},":man_gesturing_ok_tone3:":{"sn":":man_gesturing_ok_tone3:","cp":"1f646-1f3fd-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_skin_tone:"],"c":"people"},":man_gesturing_ok_tone4:":{"sn":":man_gesturing_ok_tone4:","cp":"1f646-1f3fe-200d-2642-fe0f","sns":[":man_gesturing_ok_medium_dark_skin_tone:"],"c":"people"},":man_gesturing_ok_tone5:":{"sn":":man_gesturing_ok_tone5:","cp":"1f646-1f3ff-200d-2642-fe0f","sns":[":man_gesturing_ok_dark_skin_tone:"],"c":"people"},":man_getting_face_massage:":{"sn":":man_getting_face_massage:","cp":"1f486-200d-2642-fe0f","sns":[],"c":"people"},":man_getting_face_massage_tone1:":{"sn":":man_getting_face_massage_tone1:","cp":"1f486-1f3fb-200d-2642-fe0f","sns":[":man_getting_face_massage_light_skin_tone:"],"c":"people"},":man_getting_face_massage_tone2:":{"sn":":man_getting_face_massage_tone2:","cp":"1f486-1f3fc-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_light_skin_tone:"],"c":"people"},":man_getting_face_massage_tone3:":{"sn":":man_getting_face_massage_tone3:","cp":"1f486-1f3fd-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_skin_tone:"],"c":"people"},":man_getting_face_massage_tone4:":{"sn":":man_getting_face_massage_tone4:","cp":"1f486-1f3fe-200d-2642-fe0f","sns":[":man_getting_face_massage_medium_dark_skin_tone:"],"c":"people"},":man_getting_face_massage_tone5:":{"sn":":man_getting_face_massage_tone5:","cp":"1f486-1f3ff-200d-2642-fe0f","sns":[":man_getting_face_massage_dark_skin_tone:"],"c":"people"},":man_getting_haircut:":{"sn":":man_getting_haircut:","cp":"1f487-200d-2642-fe0f","sns":[],"c":"people"},":man_getting_haircut_tone1:":{"sn":":man_getting_haircut_tone1:","cp":"1f487-1f3fb-200d-2642-fe0f","sns":[":man_getting_haircut_light_skin_tone:"],"c":"people"},":man_getting_haircut_tone2:":{"sn":":man_getting_haircut_tone2:","cp":"1f487-1f3fc-200d-2642-fe0f","sns":[":man_getting_haircut_medium_light_skin_tone:"],"c":"people"},":man_getting_haircut_tone3:":{"sn":":man_getting_haircut_tone3:","cp":"1f487-1f3fd-200d-2642-fe0f","sns":[":man_getting_haircut_medium_skin_tone:"],"c":"people"},":man_getting_haircut_tone4:":{"sn":":man_getting_haircut_tone4:","cp":"1f487-1f3fe-200d-2642-fe0f","sns":[":man_getting_haircut_medium_dark_skin_tone:"],"c":"people"},":man_getting_haircut_tone5:":{"sn":":man_getting_haircut_tone5:","cp":"1f487-1f3ff-200d-2642-fe0f","sns":[":man_getting_haircut_dark_skin_tone:"],"c":"people"},":man_guard:":{"sn":":man_guard:","cp":"1f482-200d-2642-fe0f","sns":[],"c":"people"},":man_guard_tone1:":{"sn":":man_guard_tone1:","cp":"1f482-1f3fb-200d-2642-fe0f","sns":[":man_guard_light_skin_tone:"],"c":"people"},":man_guard_tone2:":{"sn":":man_guard_tone2:","cp":"1f482-1f3fc-200d-2642-fe0f","sns":[":man_guard_medium_light_skin_tone:"],"c":"people"},":man_guard_tone3:":{"sn":":man_guard_tone3:","cp":"1f482-1f3fd-200d-2642-fe0f","sns":[":man_guard_medium_skin_tone:"],"c":"people"},":man_guard_tone4:":{"sn":":man_guard_tone4:","cp":"1f482-1f3fe-200d-2642-fe0f","sns":[":man_guard_medium_dark_skin_tone:"],"c":"people"},":man_guard_tone5:":{"sn":":man_guard_tone5:","cp":"1f482-1f3ff-200d-2642-fe0f","sns":[":man_guard_dark_skin_tone:"],"c":"people"},":man_health_worker:":{"sn":":man_health_worker:","cp":"1f468-200d-2695-fe0f","sns":[],"c":"people"},":man_health_worker_tone1:":{"sn":":man_health_worker_tone1:","cp":"1f468-1f3fb-200d-2695-fe0f","sns":[":man_health_worker_light_skin_tone:"],"c":"people"},":man_health_worker_tone2:":{"sn":":man_health_worker_tone2:","cp":"1f468-1f3fc-200d-2695-fe0f","sns":[":man_health_worker_medium_light_skin_tone:"],"c":"people"},":man_health_worker_tone3:":{"sn":":man_health_worker_tone3:","cp":"1f468-1f3fd-200d-2695-fe0f","sns":[":man_health_worker_medium_skin_tone:"],"c":"people"},":man_health_worker_tone4:":{"sn":":man_health_worker_tone4:","cp":"1f468-1f3fe-200d-2695-fe0f","sns":[":man_health_worker_medium_dark_skin_tone:"],"c":"people"},":man_health_worker_tone5:":{"sn":":man_health_worker_tone5:","cp":"1f468-1f3ff-200d-2695-fe0f","sns":[":man_health_worker_dark_skin_tone:"],"c":"people"},":man_in_steamy_room:":{"sn":":man_in_steamy_room:","cp":"1f9d6-200d-2642-fe0f","sns":[],"c":"people"},":man_in_steamy_room_tone1:":{"sn":":man_in_steamy_room_tone1:","cp":"1f9d6-1f3fb-200d-2642-fe0f","sns":[":man_in_steamy_room_light_skin_tone:"],"c":"people"},":man_in_steamy_room_tone2:":{"sn":":man_in_steamy_room_tone2:","cp":"1f9d6-1f3fc-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":man_in_steamy_room_tone3:":{"sn":":man_in_steamy_room_tone3:","cp":"1f9d6-1f3fd-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_skin_tone:"],"c":"people"},":man_in_steamy_room_tone4:":{"sn":":man_in_steamy_room_tone4:","cp":"1f9d6-1f3fe-200d-2642-fe0f","sns":[":man_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":man_in_steamy_room_tone5:":{"sn":":man_in_steamy_room_tone5:","cp":"1f9d6-1f3ff-200d-2642-fe0f","sns":[":man_in_steamy_room_dark_skin_tone:"],"c":"people"},":man_in_tuxedo:":{"sn":":man_in_tuxedo:","cp":"1f935","sns":[],"c":"people"},":man_in_tuxedo_tone1:":{"sn":":man_in_tuxedo_tone1:","cp":"1f935-1f3fb","sns":[":tuxedo_tone1:"],"c":"people"},":man_in_tuxedo_tone2:":{"sn":":man_in_tuxedo_tone2:","cp":"1f935-1f3fc","sns":[":tuxedo_tone2:"],"c":"people"},":man_in_tuxedo_tone3:":{"sn":":man_in_tuxedo_tone3:","cp":"1f935-1f3fd","sns":[":tuxedo_tone3:"],"c":"people"},":man_in_tuxedo_tone4:":{"sn":":man_in_tuxedo_tone4:","cp":"1f935-1f3fe","sns":[":tuxedo_tone4:"],"c":"people"},":man_in_tuxedo_tone5:":{"sn":":man_in_tuxedo_tone5:","cp":"1f935-1f3ff","sns":[":tuxedo_tone5:"],"c":"people"},":man_judge:":{"sn":":man_judge:","cp":"1f468-200d-2696-fe0f","sns":[],"c":"people"},":man_judge_tone1:":{"sn":":man_judge_tone1:","cp":"1f468-1f3fb-200d-2696-fe0f","sns":[":man_judge_light_skin_tone:"],"c":"people"},":man_judge_tone2:":{"sn":":man_judge_tone2:","cp":"1f468-1f3fc-200d-2696-fe0f","sns":[":man_judge_medium_light_skin_tone:"],"c":"people"},":man_judge_tone3:":{"sn":":man_judge_tone3:","cp":"1f468-1f3fd-200d-2696-fe0f","sns":[":man_judge_medium_skin_tone:"],"c":"people"},":man_judge_tone4:":{"sn":":man_judge_tone4:","cp":"1f468-1f3fe-200d-2696-fe0f","sns":[":man_judge_medium_dark_skin_tone:"],"c":"people"},":man_judge_tone5:":{"sn":":man_judge_tone5:","cp":"1f468-1f3ff-200d-2696-fe0f","sns":[":man_judge_dark_skin_tone:"],"c":"people"},":man_mage:":{"sn":":man_mage:","cp":"1f9d9-200d-2642-fe0f","sns":[],"c":"people"},":man_mage_tone1:":{"sn":":man_mage_tone1:","cp":"1f9d9-1f3fb-200d-2642-fe0f","sns":[":man_mage_light_skin_tone:"],"c":"people"},":man_mage_tone2:":{"sn":":man_mage_tone2:","cp":"1f9d9-1f3fc-200d-2642-fe0f","sns":[":man_mage_medium_light_skin_tone:"],"c":"people"},":man_mage_tone3:":{"sn":":man_mage_tone3:","cp":"1f9d9-1f3fd-200d-2642-fe0f","sns":[":man_mage_medium_skin_tone:"],"c":"people"},":man_mage_tone4:":{"sn":":man_mage_tone4:","cp":"1f9d9-1f3fe-200d-2642-fe0f","sns":[":man_mage_medium_dark_skin_tone:"],"c":"people"},":man_mage_tone5:":{"sn":":man_mage_tone5:","cp":"1f9d9-1f3ff-200d-2642-fe0f","sns":[":man_mage_dark_skin_tone:"],"c":"people"},":man_mechanic:":{"sn":":man_mechanic:","cp":"1f468-200d-1f527","sns":[],"c":"people"},":man_mechanic_tone1:":{"sn":":man_mechanic_tone1:","cp":"1f468-1f3fb-200d-1f527","sns":[":man_mechanic_light_skin_tone:"],"c":"people"},":man_mechanic_tone2:":{"sn":":man_mechanic_tone2:","cp":"1f468-1f3fc-200d-1f527","sns":[":man_mechanic_medium_light_skin_tone:"],"c":"people"},":man_mechanic_tone3:":{"sn":":man_mechanic_tone3:","cp":"1f468-1f3fd-200d-1f527","sns":[":man_mechanic_medium_skin_tone:"],"c":"people"},":man_mechanic_tone4:":{"sn":":man_mechanic_tone4:","cp":"1f468-1f3fe-200d-1f527","sns":[":man_mechanic_medium_dark_skin_tone:"],"c":"people"},":man_mechanic_tone5:":{"sn":":man_mechanic_tone5:","cp":"1f468-1f3ff-200d-1f527","sns":[":man_mechanic_dark_skin_tone:"],"c":"people"},":man_office_worker:":{"sn":":man_office_worker:","cp":"1f468-200d-1f4bc","sns":[],"c":"people"},":man_office_worker_tone1:":{"sn":":man_office_worker_tone1:","cp":"1f468-1f3fb-200d-1f4bc","sns":[":man_office_worker_light_skin_tone:"],"c":"people"},":man_office_worker_tone2:":{"sn":":man_office_worker_tone2:","cp":"1f468-1f3fc-200d-1f4bc","sns":[":man_office_worker_medium_light_skin_tone:"],"c":"people"},":man_office_worker_tone3:":{"sn":":man_office_worker_tone3:","cp":"1f468-1f3fd-200d-1f4bc","sns":[":man_office_worker_medium_skin_tone:"],"c":"people"},":man_office_worker_tone4:":{"sn":":man_office_worker_tone4:","cp":"1f468-1f3fe-200d-1f4bc","sns":[":man_office_worker_medium_dark_skin_tone:"],"c":"people"},":man_office_worker_tone5:":{"sn":":man_office_worker_tone5:","cp":"1f468-1f3ff-200d-1f4bc","sns":[":man_office_worker_dark_skin_tone:"],"c":"people"},":man_pilot:":{"sn":":man_pilot:","cp":"1f468-200d-2708-fe0f","sns":[],"c":"people"},":man_pilot_tone1:":{"sn":":man_pilot_tone1:","cp":"1f468-1f3fb-200d-2708-fe0f","sns":[":man_pilot_light_skin_tone:"],"c":"people"},":man_pilot_tone2:":{"sn":":man_pilot_tone2:","cp":"1f468-1f3fc-200d-2708-fe0f","sns":[":man_pilot_medium_light_skin_tone:"],"c":"people"},":man_pilot_tone3:":{"sn":":man_pilot_tone3:","cp":"1f468-1f3fd-200d-2708-fe0f","sns":[":man_pilot_medium_skin_tone:"],"c":"people"},":man_pilot_tone4:":{"sn":":man_pilot_tone4:","cp":"1f468-1f3fe-200d-2708-fe0f","sns":[":man_pilot_medium_dark_skin_tone:"],"c":"people"},":man_pilot_tone5:":{"sn":":man_pilot_tone5:","cp":"1f468-1f3ff-200d-2708-fe0f","sns":[":man_pilot_dark_skin_tone:"],"c":"people"},":man_police_officer:":{"sn":":man_police_officer:","cp":"1f46e-200d-2642-fe0f","sns":[],"c":"people"},":man_police_officer_tone1:":{"sn":":man_police_officer_tone1:","cp":"1f46e-1f3fb-200d-2642-fe0f","sns":[":man_police_officer_light_skin_tone:"],"c":"people"},":man_police_officer_tone2:":{"sn":":man_police_officer_tone2:","cp":"1f46e-1f3fc-200d-2642-fe0f","sns":[":man_police_officer_medium_light_skin_tone:"],"c":"people"},":man_police_officer_tone3:":{"sn":":man_police_officer_tone3:","cp":"1f46e-1f3fd-200d-2642-fe0f","sns":[":man_police_officer_medium_skin_tone:"],"c":"people"},":man_police_officer_tone4:":{"sn":":man_police_officer_tone4:","cp":"1f46e-1f3fe-200d-2642-fe0f","sns":[":man_police_officer_medium_dark_skin_tone:"],"c":"people"},":man_police_officer_tone5:":{"sn":":man_police_officer_tone5:","cp":"1f46e-1f3ff-200d-2642-fe0f","sns":[":man_police_officer_dark_skin_tone:"],"c":"people"},":man_pouting:":{"sn":":man_pouting:","cp":"1f64e-200d-2642-fe0f","sns":[],"c":"people"},":man_pouting_tone1:":{"sn":":man_pouting_tone1:","cp":"1f64e-1f3fb-200d-2642-fe0f","sns":[":man_pouting_light_skin_tone:"],"c":"people"},":man_pouting_tone2:":{"sn":":man_pouting_tone2:","cp":"1f64e-1f3fc-200d-2642-fe0f","sns":[":man_pouting_medium_light_skin_tone:"],"c":"people"},":man_pouting_tone3:":{"sn":":man_pouting_tone3:","cp":"1f64e-1f3fd-200d-2642-fe0f","sns":[":man_pouting_medium_skin_tone:"],"c":"people"},":man_pouting_tone4:":{"sn":":man_pouting_tone4:","cp":"1f64e-1f3fe-200d-2642-fe0f","sns":[":man_pouting_medium_dark_skin_tone:"],"c":"people"},":man_pouting_tone5:":{"sn":":man_pouting_tone5:","cp":"1f64e-1f3ff-200d-2642-fe0f","sns":[":man_pouting_dark_skin_tone:"],"c":"people"},":man_raising_hand:":{"sn":":man_raising_hand:","cp":"1f64b-200d-2642-fe0f","sns":[],"c":"people"},":man_raising_hand_tone1:":{"sn":":man_raising_hand_tone1:","cp":"1f64b-1f3fb-200d-2642-fe0f","sns":[":man_raising_hand_light_skin_tone:"],"c":"people"},":man_raising_hand_tone2:":{"sn":":man_raising_hand_tone2:","cp":"1f64b-1f3fc-200d-2642-fe0f","sns":[":man_raising_hand_medium_light_skin_tone:"],"c":"people"},":man_raising_hand_tone3:":{"sn":":man_raising_hand_tone3:","cp":"1f64b-1f3fd-200d-2642-fe0f","sns":[":man_raising_hand_medium_skin_tone:"],"c":"people"},":man_raising_hand_tone4:":{"sn":":man_raising_hand_tone4:","cp":"1f64b-1f3fe-200d-2642-fe0f","sns":[":man_raising_hand_medium_dark_skin_tone:"],"c":"people"},":man_raising_hand_tone5:":{"sn":":man_raising_hand_tone5:","cp":"1f64b-1f3ff-200d-2642-fe0f","sns":[":man_raising_hand_dark_skin_tone:"],"c":"people"},":man_running:":{"sn":":man_running:","cp":"1f3c3-200d-2642-fe0f","sns":[],"c":"people"},":man_running_tone1:":{"sn":":man_running_tone1:","cp":"1f3c3-1f3fb-200d-2642-fe0f","sns":[":man_running_light_skin_tone:"],"c":"people"},":man_running_tone2:":{"sn":":man_running_tone2:","cp":"1f3c3-1f3fc-200d-2642-fe0f","sns":[":man_running_medium_light_skin_tone:"],"c":"people"},":man_running_tone3:":{"sn":":man_running_tone3:","cp":"1f3c3-1f3fd-200d-2642-fe0f","sns":[":man_running_medium_skin_tone:"],"c":"people"},":man_running_tone4:":{"sn":":man_running_tone4:","cp":"1f3c3-1f3fe-200d-2642-fe0f","sns":[":man_running_medium_dark_skin_tone:"],"c":"people"},":man_running_tone5:":{"sn":":man_running_tone5:","cp":"1f3c3-1f3ff-200d-2642-fe0f","sns":[":man_running_dark_skin_tone:"],"c":"people"},":man_scientist:":{"sn":":man_scientist:","cp":"1f468-200d-1f52c","sns":[],"c":"people"},":man_scientist_tone1:":{"sn":":man_scientist_tone1:","cp":"1f468-1f3fb-200d-1f52c","sns":[":man_scientist_light_skin_tone:"],"c":"people"},":man_scientist_tone2:":{"sn":":man_scientist_tone2:","cp":"1f468-1f3fc-200d-1f52c","sns":[":man_scientist_medium_light_skin_tone:"],"c":"people"},":man_scientist_tone3:":{"sn":":man_scientist_tone3:","cp":"1f468-1f3fd-200d-1f52c","sns":[":man_scientist_medium_skin_tone:"],"c":"people"},":man_scientist_tone4:":{"sn":":man_scientist_tone4:","cp":"1f468-1f3fe-200d-1f52c","sns":[":man_scientist_medium_dark_skin_tone:"],"c":"people"},":man_scientist_tone5:":{"sn":":man_scientist_tone5:","cp":"1f468-1f3ff-200d-1f52c","sns":[":man_scientist_dark_skin_tone:"],"c":"people"},":man_shrugging:":{"sn":":man_shrugging:","cp":"1f937-200d-2642-fe0f","sns":[],"c":"people"},":man_shrugging_tone1:":{"sn":":man_shrugging_tone1:","cp":"1f937-1f3fb-200d-2642-fe0f","sns":[":man_shrugging_light_skin_tone:"],"c":"people"},":man_shrugging_tone2:":{"sn":":man_shrugging_tone2:","cp":"1f937-1f3fc-200d-2642-fe0f","sns":[":man_shrugging_medium_light_skin_tone:"],"c":"people"},":man_shrugging_tone3:":{"sn":":man_shrugging_tone3:","cp":"1f937-1f3fd-200d-2642-fe0f","sns":[":man_shrugging_medium_skin_tone:"],"c":"people"},":man_shrugging_tone4:":{"sn":":man_shrugging_tone4:","cp":"1f937-1f3fe-200d-2642-fe0f","sns":[":man_shrugging_medium_dark_skin_tone:"],"c":"people"},":man_shrugging_tone5:":{"sn":":man_shrugging_tone5:","cp":"1f937-1f3ff-200d-2642-fe0f","sns":[":man_shrugging_dark_skin_tone:"],"c":"people"},":man_singer:":{"sn":":man_singer:","cp":"1f468-200d-1f3a4","sns":[],"c":"people"},":man_singer_tone1:":{"sn":":man_singer_tone1:","cp":"1f468-1f3fb-200d-1f3a4","sns":[":man_singer_light_skin_tone:"],"c":"people"},":man_singer_tone2:":{"sn":":man_singer_tone2:","cp":"1f468-1f3fc-200d-1f3a4","sns":[":man_singer_medium_light_skin_tone:"],"c":"people"},":man_singer_tone3:":{"sn":":man_singer_tone3:","cp":"1f468-1f3fd-200d-1f3a4","sns":[":man_singer_medium_skin_tone:"],"c":"people"},":man_singer_tone4:":{"sn":":man_singer_tone4:","cp":"1f468-1f3fe-200d-1f3a4","sns":[":man_singer_medium_dark_skin_tone:"],"c":"people"},":man_singer_tone5:":{"sn":":man_singer_tone5:","cp":"1f468-1f3ff-200d-1f3a4","sns":[":man_singer_dark_skin_tone:"],"c":"people"},":man_student:":{"sn":":man_student:","cp":"1f468-200d-1f393","sns":[],"c":"people"},":man_student_tone1:":{"sn":":man_student_tone1:","cp":"1f468-1f3fb-200d-1f393","sns":[":man_student_light_skin_tone:"],"c":"people"},":man_student_tone2:":{"sn":":man_student_tone2:","cp":"1f468-1f3fc-200d-1f393","sns":[":man_student_medium_light_skin_tone:"],"c":"people"},":man_student_tone3:":{"sn":":man_student_tone3:","cp":"1f468-1f3fd-200d-1f393","sns":[":man_student_medium_skin_tone:"],"c":"people"},":man_student_tone4:":{"sn":":man_student_tone4:","cp":"1f468-1f3fe-200d-1f393","sns":[":man_student_medium_dark_skin_tone:"],"c":"people"},":man_student_tone5:":{"sn":":man_student_tone5:","cp":"1f468-1f3ff-200d-1f393","sns":[":man_student_dark_skin_tone:"],"c":"people"},":man_teacher:":{"sn":":man_teacher:","cp":"1f468-200d-1f3eb","sns":[],"c":"people"},":man_teacher_tone1:":{"sn":":man_teacher_tone1:","cp":"1f468-1f3fb-200d-1f3eb","sns":[":man_teacher_light_skin_tone:"],"c":"people"},":man_teacher_tone2:":{"sn":":man_teacher_tone2:","cp":"1f468-1f3fc-200d-1f3eb","sns":[":man_teacher_medium_light_skin_tone:"],"c":"people"},":man_teacher_tone3:":{"sn":":man_teacher_tone3:","cp":"1f468-1f3fd-200d-1f3eb","sns":[":man_teacher_medium_skin_tone:"],"c":"people"},":man_teacher_tone4:":{"sn":":man_teacher_tone4:","cp":"1f468-1f3fe-200d-1f3eb","sns":[":man_teacher_medium_dark_skin_tone:"],"c":"people"},":man_teacher_tone5:":{"sn":":man_teacher_tone5:","cp":"1f468-1f3ff-200d-1f3eb","sns":[":man_teacher_dark_skin_tone:"],"c":"people"},":man_technologist:":{"sn":":man_technologist:","cp":"1f468-200d-1f4bb","sns":[],"c":"people"},":man_technologist_tone1:":{"sn":":man_technologist_tone1:","cp":"1f468-1f3fb-200d-1f4bb","sns":[":man_technologist_light_skin_tone:"],"c":"people"},":man_technologist_tone2:":{"sn":":man_technologist_tone2:","cp":"1f468-1f3fc-200d-1f4bb","sns":[":man_technologist_medium_light_skin_tone:"],"c":"people"},":man_technologist_tone3:":{"sn":":man_technologist_tone3:","cp":"1f468-1f3fd-200d-1f4bb","sns":[":man_technologist_medium_skin_tone:"],"c":"people"},":man_technologist_tone4:":{"sn":":man_technologist_tone4:","cp":"1f468-1f3fe-200d-1f4bb","sns":[":man_technologist_medium_dark_skin_tone:"],"c":"people"},":man_technologist_tone5:":{"sn":":man_technologist_tone5:","cp":"1f468-1f3ff-200d-1f4bb","sns":[":man_technologist_dark_skin_tone:"],"c":"people"},":man_tipping_hand:":{"sn":":man_tipping_hand:","cp":"1f481-200d-2642-fe0f","sns":[],"c":"people"},":man_tipping_hand_tone1:":{"sn":":man_tipping_hand_tone1:","cp":"1f481-1f3fb-200d-2642-fe0f","sns":[":man_tipping_hand_light_skin_tone:"],"c":"people"},":man_tipping_hand_tone2:":{"sn":":man_tipping_hand_tone2:","cp":"1f481-1f3fc-200d-2642-fe0f","sns":[":man_tipping_hand_medium_light_skin_tone:"],"c":"people"},":man_tipping_hand_tone3:":{"sn":":man_tipping_hand_tone3:","cp":"1f481-1f3fd-200d-2642-fe0f","sns":[":man_tipping_hand_medium_skin_tone:"],"c":"people"},":man_tipping_hand_tone4:":{"sn":":man_tipping_hand_tone4:","cp":"1f481-1f3fe-200d-2642-fe0f","sns":[":man_tipping_hand_medium_dark_skin_tone:"],"c":"people"},":man_tipping_hand_tone5:":{"sn":":man_tipping_hand_tone5:","cp":"1f481-1f3ff-200d-2642-fe0f","sns":[":man_tipping_hand_dark_skin_tone:"],"c":"people"},":man_tone1:":{"sn":":man_tone1:","cp":"1f468-1f3fb","sns":[],"c":"people"},":man_tone2:":{"sn":":man_tone2:","cp":"1f468-1f3fc","sns":[],"c":"people"},":man_tone3:":{"sn":":man_tone3:","cp":"1f468-1f3fd","sns":[],"c":"people"},":man_tone4:":{"sn":":man_tone4:","cp":"1f468-1f3fe","sns":[],"c":"people"},":man_tone5:":{"sn":":man_tone5:","cp":"1f468-1f3ff","sns":[],"c":"people"},":man_vampire:":{"sn":":man_vampire:","cp":"1f9db-200d-2642-fe0f","sns":[],"c":"people"},":man_vampire_tone1:":{"sn":":man_vampire_tone1:","cp":"1f9db-1f3fb-200d-2642-fe0f","sns":[":man_vampire_light_skin_tone:"],"c":"people"},":man_vampire_tone2:":{"sn":":man_vampire_tone2:","cp":"1f9db-1f3fc-200d-2642-fe0f","sns":[":man_vampire_medium_light_skin_tone:"],"c":"people"},":man_vampire_tone3:":{"sn":":man_vampire_tone3:","cp":"1f9db-1f3fd-200d-2642-fe0f","sns":[":man_vampire_medium_skin_tone:"],"c":"people"},":man_vampire_tone4:":{"sn":":man_vampire_tone4:","cp":"1f9db-1f3fe-200d-2642-fe0f","sns":[":man_vampire_medium_dark_skin_tone:"],"c":"people"},":man_vampire_tone5:":{"sn":":man_vampire_tone5:","cp":"1f9db-1f3ff-200d-2642-fe0f","sns":[":man_vampire_dark_skin_tone:"],"c":"people"},":man_walking:":{"sn":":man_walking:","cp":"1f6b6-200d-2642-fe0f","sns":[],"c":"people"},":man_walking_tone1:":{"sn":":man_walking_tone1:","cp":"1f6b6-1f3fb-200d-2642-fe0f","sns":[":man_walking_light_skin_tone:"],"c":"people"},":man_walking_tone2:":{"sn":":man_walking_tone2:","cp":"1f6b6-1f3fc-200d-2642-fe0f","sns":[":man_walking_medium_light_skin_tone:"],"c":"people"},":man_walking_tone3:":{"sn":":man_walking_tone3:","cp":"1f6b6-1f3fd-200d-2642-fe0f","sns":[":man_walking_medium_skin_tone:"],"c":"people"},":man_walking_tone4:":{"sn":":man_walking_tone4:","cp":"1f6b6-1f3fe-200d-2642-fe0f","sns":[":man_walking_medium_dark_skin_tone:"],"c":"people"},":man_walking_tone5:":{"sn":":man_walking_tone5:","cp":"1f6b6-1f3ff-200d-2642-fe0f","sns":[":man_walking_dark_skin_tone:"],"c":"people"},":man_wearing_turban:":{"sn":":man_wearing_turban:","cp":"1f473-200d-2642-fe0f","sns":[],"c":"people"},":man_wearing_turban_tone1:":{"sn":":man_wearing_turban_tone1:","cp":"1f473-1f3fb-200d-2642-fe0f","sns":[":man_wearing_turban_light_skin_tone:"],"c":"people"},":man_wearing_turban_tone2:":{"sn":":man_wearing_turban_tone2:","cp":"1f473-1f3fc-200d-2642-fe0f","sns":[":man_wearing_turban_medium_light_skin_tone:"],"c":"people"},":man_wearing_turban_tone3:":{"sn":":man_wearing_turban_tone3:","cp":"1f473-1f3fd-200d-2642-fe0f","sns":[":man_wearing_turban_medium_skin_tone:"],"c":"people"},":man_wearing_turban_tone4:":{"sn":":man_wearing_turban_tone4:","cp":"1f473-1f3fe-200d-2642-fe0f","sns":[":man_wearing_turban_medium_dark_skin_tone:"],"c":"people"},":man_wearing_turban_tone5:":{"sn":":man_wearing_turban_tone5:","cp":"1f473-1f3ff-200d-2642-fe0f","sns":[":man_wearing_turban_dark_skin_tone:"],"c":"people"},":man_with_chinese_cap:":{"sn":":man_with_chinese_cap:","cp":"1f472","sns":[":man_with_gua_pi_mao:"],"c":"people"},":man_with_chinese_cap_tone1:":{"sn":":man_with_chinese_cap_tone1:","cp":"1f472-1f3fb","sns":[":man_with_gua_pi_mao_tone1:"],"c":"people"},":man_with_chinese_cap_tone2:":{"sn":":man_with_chinese_cap_tone2:","cp":"1f472-1f3fc","sns":[":man_with_gua_pi_mao_tone2:"],"c":"people"},":man_with_chinese_cap_tone3:":{"sn":":man_with_chinese_cap_tone3:","cp":"1f472-1f3fd","sns":[":man_with_gua_pi_mao_tone3:"],"c":"people"},":man_with_chinese_cap_tone4:":{"sn":":man_with_chinese_cap_tone4:","cp":"1f472-1f3fe","sns":[":man_with_gua_pi_mao_tone4:"],"c":"people"},":man_with_chinese_cap_tone5:":{"sn":":man_with_chinese_cap_tone5:","cp":"1f472-1f3ff","sns":[":man_with_gua_pi_mao_tone5:"],"c":"people"},":man_zombie:":{"sn":":man_zombie:","cp":"1f9df-200d-2642-fe0f","sns":[],"c":"people"},":men_with_bunny_ears_partying:":{"sn":":men_with_bunny_ears_partying:","cp":"1f46f-200d-2642-fe0f","sns":[],"c":"people"},":mermaid:":{"sn":":mermaid:","cp":"1f9dc-200d-2640-fe0f","sns":[],"c":"people"},":mermaid_tone1:":{"sn":":mermaid_tone1:","cp":"1f9dc-1f3fb-200d-2640-fe0f","sns":[":mermaid_light_skin_tone:"],"c":"people"},":mermaid_tone2:":{"sn":":mermaid_tone2:","cp":"1f9dc-1f3fc-200d-2640-fe0f","sns":[":mermaid_medium_light_skin_tone:"],"c":"people"},":mermaid_tone3:":{"sn":":mermaid_tone3:","cp":"1f9dc-1f3fd-200d-2640-fe0f","sns":[":mermaid_medium_skin_tone:"],"c":"people"},":mermaid_tone4:":{"sn":":mermaid_tone4:","cp":"1f9dc-1f3fe-200d-2640-fe0f","sns":[":mermaid_medium_dark_skin_tone:"],"c":"people"},":mermaid_tone5:":{"sn":":mermaid_tone5:","cp":"1f9dc-1f3ff-200d-2640-fe0f","sns":[":mermaid_dark_skin_tone:"],"c":"people"},":merman:":{"sn":":merman:","cp":"1f9dc-200d-2642-fe0f","sns":[],"c":"people"},":merman_tone1:":{"sn":":merman_tone1:","cp":"1f9dc-1f3fb-200d-2642-fe0f","sns":[":merman_light_skin_tone:"],"c":"people"},":merman_tone2:":{"sn":":merman_tone2:","cp":"1f9dc-1f3fc-200d-2642-fe0f","sns":[":merman_medium_light_skin_tone:"],"c":"people"},":merman_tone3:":{"sn":":merman_tone3:","cp":"1f9dc-1f3fd-200d-2642-fe0f","sns":[":merman_medium_skin_tone:"],"c":"people"},":merman_tone4:":{"sn":":merman_tone4:","cp":"1f9dc-1f3fe-200d-2642-fe0f","sns":[":merman_medium_dark_skin_tone:"],"c":"people"},":merman_tone5:":{"sn":":merman_tone5:","cp":"1f9dc-1f3ff-200d-2642-fe0f","sns":[":merman_dark_skin_tone:"],"c":"people"},":merperson:":{"sn":":merperson:","cp":"1f9dc","sns":[],"c":"people"},":merperson_tone1:":{"sn":":merperson_tone1:","cp":"1f9dc-1f3fb","sns":[":merperson_light_skin_tone:"],"c":"people"},":merperson_tone2:":{"sn":":merperson_tone2:","cp":"1f9dc-1f3fc","sns":[":merperson_medium_light_skin_tone:"],"c":"people"},":merperson_tone3:":{"sn":":merperson_tone3:","cp":"1f9dc-1f3fd","sns":[":merperson_medium_skin_tone:"],"c":"people"},":merperson_tone4:":{"sn":":merperson_tone4:","cp":"1f9dc-1f3fe","sns":[":merperson_medium_dark_skin_tone:"],"c":"people"},":merperson_tone5:":{"sn":":merperson_tone5:","cp":"1f9dc-1f3ff","sns":[":merperson_dark_skin_tone:"],"c":"people"},":santa:":{"sn":":santa:","cp":"1f385","sns":[],"c":"people"},":santa_tone1:":{"sn":":santa_tone1:","cp":"1f385-1f3fb","sns":[],"c":"people"},":santa_tone2:":{"sn":":santa_tone2:","cp":"1f385-1f3fc","sns":[],"c":"people"},":santa_tone3:":{"sn":":santa_tone3:","cp":"1f385-1f3fd","sns":[],"c":"people"},":santa_tone4:":{"sn":":santa_tone4:","cp":"1f385-1f3fe","sns":[],"c":"people"},":santa_tone5:":{"sn":":santa_tone5:","cp":"1f385-1f3ff","sns":[],"c":"people"},":mrs_claus:":{"sn":":mrs_claus:","cp":"1f936","sns":[":mother_christmas:"],"c":"people"},":mrs_claus_tone1:":{"sn":":mrs_claus_tone1:","cp":"1f936-1f3fb","sns":[":mother_christmas_tone1:"],"c":"people"},":mrs_claus_tone2:":{"sn":":mrs_claus_tone2:","cp":"1f936-1f3fc","sns":[":mother_christmas_tone2:"],"c":"people"},":mrs_claus_tone3:":{"sn":":mrs_claus_tone3:","cp":"1f936-1f3fd","sns":[":mother_christmas_tone3:"],"c":"people"},":mrs_claus_tone4:":{"sn":":mrs_claus_tone4:","cp":"1f936-1f3fe","sns":[":mother_christmas_tone4:"],"c":"people"},":mrs_claus_tone5:":{"sn":":mrs_claus_tone5:","cp":"1f936-1f3ff","sns":[":mother_christmas_tone5:"],"c":"people"},":nose:":{"sn":":nose:","cp":"1f443","sns":[],"c":"people"},":nose_tone1:":{"sn":":nose_tone1:","cp":"1f443-1f3fb","sns":[],"c":"people"},":nose_tone2:":{"sn":":nose_tone2:","cp":"1f443-1f3fc","sns":[],"c":"people"},":nose_tone3:":{"sn":":nose_tone3:","cp":"1f443-1f3fd","sns":[],"c":"people"},":nose_tone4:":{"sn":":nose_tone4:","cp":"1f443-1f3fe","sns":[],"c":"people"},":nose_tone5:":{"sn":":nose_tone5:","cp":"1f443-1f3ff","sns":[],"c":"people"},":older_adult:":{"sn":":older_adult:","cp":"1f9d3","sns":[],"c":"people"},":older_adult_tone1:":{"sn":":older_adult_tone1:","cp":"1f9d3-1f3fb","sns":[":older_adult_light_skin_tone:"],"c":"people"},":older_adult_tone2:":{"sn":":older_adult_tone2:","cp":"1f9d3-1f3fc","sns":[":older_adult_medium_light_skin_tone:"],"c":"people"},":older_adult_tone3:":{"sn":":older_adult_tone3:","cp":"1f9d3-1f3fd","sns":[":older_adult_medium_skin_tone:"],"c":"people"},":older_adult_tone4:":{"sn":":older_adult_tone4:","cp":"1f9d3-1f3fe","sns":[":older_adult_medium_dark_skin_tone:"],"c":"people"},":older_adult_tone5:":{"sn":":older_adult_tone5:","cp":"1f9d3-1f3ff","sns":[":older_adult_dark_skin_tone:"],"c":"people"},":older_man:":{"sn":":older_man:","cp":"1f474","sns":[],"c":"people"},":older_man_tone1:":{"sn":":older_man_tone1:","cp":"1f474-1f3fb","sns":[],"c":"people"},":older_man_tone2:":{"sn":":older_man_tone2:","cp":"1f474-1f3fc","sns":[],"c":"people"},":older_man_tone3:":{"sn":":older_man_tone3:","cp":"1f474-1f3fd","sns":[],"c":"people"},":older_man_tone4:":{"sn":":older_man_tone4:","cp":"1f474-1f3fe","sns":[],"c":"people"},":older_man_tone5:":{"sn":":older_man_tone5:","cp":"1f474-1f3ff","sns":[],"c":"people"},":older_woman:":{"sn":":older_woman:","cp":"1f475","sns":[":grandma:"],"c":"people"},":older_woman_tone1:":{"sn":":older_woman_tone1:","cp":"1f475-1f3fb","sns":[":grandma_tone1:"],"c":"people"},":older_woman_tone2:":{"sn":":older_woman_tone2:","cp":"1f475-1f3fc","sns":[":grandma_tone2:"],"c":"people"},":older_woman_tone3:":{"sn":":older_woman_tone3:","cp":"1f475-1f3fd","sns":[":grandma_tone3:"],"c":"people"},":older_woman_tone4:":{"sn":":older_woman_tone4:","cp":"1f475-1f3fe","sns":[":grandma_tone4:"],"c":"people"},":older_woman_tone5:":{"sn":":older_woman_tone5:","cp":"1f475-1f3ff","sns":[":grandma_tone5:"],"c":"people"},":people_with_bunny_ears_partying:":{"sn":":people_with_bunny_ears_partying:","cp":"1f46f","sns":[":dancers:"],"c":"people"},":person_bowing:":{"sn":":person_bowing:","cp":"1f647","sns":[":bow:"],"c":"people"},":person_bowing_tone1:":{"sn":":person_bowing_tone1:","cp":"1f647-1f3fb","sns":[":bow_tone1:"],"c":"people"},":person_bowing_tone2:":{"sn":":person_bowing_tone2:","cp":"1f647-1f3fc","sns":[":bow_tone2:"],"c":"people"},":person_bowing_tone3:":{"sn":":person_bowing_tone3:","cp":"1f647-1f3fd","sns":[":bow_tone3:"],"c":"people"},":person_bowing_tone4:":{"sn":":person_bowing_tone4:","cp":"1f647-1f3fe","sns":[":bow_tone4:"],"c":"people"},":person_bowing_tone5:":{"sn":":person_bowing_tone5:","cp":"1f647-1f3ff","sns":[":bow_tone5:"],"c":"people"},":person_facepalming:":{"sn":":person_facepalming:","cp":"1f926","sns":[":face_palm:",":facepalm:"],"c":"people"},":person_facepalming_tone1:":{"sn":":person_facepalming_tone1:","cp":"1f926-1f3fb","sns":[":face_palm_tone1:",":facepalm_tone1:"],"c":"people"},":person_facepalming_tone2:":{"sn":":person_facepalming_tone2:","cp":"1f926-1f3fc","sns":[":face_palm_tone2:",":facepalm_tone2:"],"c":"people"},":person_facepalming_tone3:":{"sn":":person_facepalming_tone3:","cp":"1f926-1f3fd","sns":[":face_palm_tone3:",":facepalm_tone3:"],"c":"people"},":person_facepalming_tone4:":{"sn":":person_facepalming_tone4:","cp":"1f926-1f3fe","sns":[":face_palm_tone4:",":facepalm_tone4:"],"c":"people"},":person_facepalming_tone5:":{"sn":":person_facepalming_tone5:","cp":"1f926-1f3ff","sns":[":face_palm_tone5:",":facepalm_tone5:"],"c":"people"},":person_frowning:":{"sn":":person_frowning:","cp":"1f64d","sns":[],"c":"people"},":person_frowning_tone1:":{"sn":":person_frowning_tone1:","cp":"1f64d-1f3fb","sns":[],"c":"people"},":person_frowning_tone2:":{"sn":":person_frowning_tone2:","cp":"1f64d-1f3fc","sns":[],"c":"people"},":person_frowning_tone3:":{"sn":":person_frowning_tone3:","cp":"1f64d-1f3fd","sns":[],"c":"people"},":person_frowning_tone4:":{"sn":":person_frowning_tone4:","cp":"1f64d-1f3fe","sns":[],"c":"people"},":person_frowning_tone5:":{"sn":":person_frowning_tone5:","cp":"1f64d-1f3ff","sns":[],"c":"people"},":person_gesturing_no:":{"sn":":person_gesturing_no:","cp":"1f645","sns":[":no_good:"],"c":"people"},":person_gesturing_no_tone1:":{"sn":":person_gesturing_no_tone1:","cp":"1f645-1f3fb","sns":[":no_good_tone1:"],"c":"people"},":person_gesturing_no_tone2:":{"sn":":person_gesturing_no_tone2:","cp":"1f645-1f3fc","sns":[":no_good_tone2:"],"c":"people"},":person_gesturing_no_tone3:":{"sn":":person_gesturing_no_tone3:","cp":"1f645-1f3fd","sns":[":no_good_tone3:"],"c":"people"},":person_gesturing_no_tone4:":{"sn":":person_gesturing_no_tone4:","cp":"1f645-1f3fe","sns":[":no_good_tone4:"],"c":"people"},":person_gesturing_no_tone5:":{"sn":":person_gesturing_no_tone5:","cp":"1f645-1f3ff","sns":[":no_good_tone5:"],"c":"people"},":person_gesturing_ok:":{"sn":":person_gesturing_ok:","cp":"1f646","sns":[":ok_woman:"],"c":"people"},":person_gesturing_ok_tone1:":{"sn":":person_gesturing_ok_tone1:","cp":"1f646-1f3fb","sns":[":ok_woman_tone1:"],"c":"people"},":person_gesturing_ok_tone2:":{"sn":":person_gesturing_ok_tone2:","cp":"1f646-1f3fc","sns":[":ok_woman_tone2:"],"c":"people"},":person_gesturing_ok_tone3:":{"sn":":person_gesturing_ok_tone3:","cp":"1f646-1f3fd","sns":[":ok_woman_tone3:"],"c":"people"},":person_gesturing_ok_tone4:":{"sn":":person_gesturing_ok_tone4:","cp":"1f646-1f3fe","sns":[":ok_woman_tone4:"],"c":"people"},":person_gesturing_ok_tone5:":{"sn":":person_gesturing_ok_tone5:","cp":"1f646-1f3ff","sns":[":ok_woman_tone5:"],"c":"people"},":person_getting_haircut:":{"sn":":person_getting_haircut:","cp":"1f487","sns":[":haircut:"],"c":"people"},":person_getting_haircut_tone1:":{"sn":":person_getting_haircut_tone1:","cp":"1f487-1f3fb","sns":[":haircut_tone1:"],"c":"people"},":person_getting_haircut_tone2:":{"sn":":person_getting_haircut_tone2:","cp":"1f487-1f3fc","sns":[":haircut_tone2:"],"c":"people"},":person_getting_haircut_tone3:":{"sn":":person_getting_haircut_tone3:","cp":"1f487-1f3fd","sns":[":haircut_tone3:"],"c":"people"},":person_getting_haircut_tone4:":{"sn":":person_getting_haircut_tone4:","cp":"1f487-1f3fe","sns":[":haircut_tone4:"],"c":"people"},":person_getting_haircut_tone5:":{"sn":":person_getting_haircut_tone5:","cp":"1f487-1f3ff","sns":[":haircut_tone5:"],"c":"people"},":person_getting_massage:":{"sn":":person_getting_massage:","cp":"1f486","sns":[":massage:"],"c":"people"},":person_getting_massage_tone1:":{"sn":":person_getting_massage_tone1:","cp":"1f486-1f3fb","sns":[":massage_tone1:"],"c":"people"},":person_getting_massage_tone2:":{"sn":":person_getting_massage_tone2:","cp":"1f486-1f3fc","sns":[":massage_tone2:"],"c":"people"},":person_getting_massage_tone3:":{"sn":":person_getting_massage_tone3:","cp":"1f486-1f3fd","sns":[":massage_tone3:"],"c":"people"},":person_getting_massage_tone4:":{"sn":":person_getting_massage_tone4:","cp":"1f486-1f3fe","sns":[":massage_tone4:"],"c":"people"},":person_getting_massage_tone5:":{"sn":":person_getting_massage_tone5:","cp":"1f486-1f3ff","sns":[":massage_tone5:"],"c":"people"},":person_in_steamy_room:":{"sn":":person_in_steamy_room:","cp":"1f9d6","sns":[],"c":"people"},":person_in_steamy_room_tone1:":{"sn":":person_in_steamy_room_tone1:","cp":"1f9d6-1f3fb","sns":[":person_in_steamy_room_light_skin_tone:"],"c":"people"},":person_in_steamy_room_tone2:":{"sn":":person_in_steamy_room_tone2:","cp":"1f9d6-1f3fc","sns":[":person_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":person_in_steamy_room_tone3:":{"sn":":person_in_steamy_room_tone3:","cp":"1f9d6-1f3fd","sns":[":person_in_steamy_room_medium_skin_tone:"],"c":"people"},":person_in_steamy_room_tone4:":{"sn":":person_in_steamy_room_tone4:","cp":"1f9d6-1f3fe","sns":[":person_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":person_in_steamy_room_tone5:":{"sn":":person_in_steamy_room_tone5:","cp":"1f9d6-1f3ff","sns":[":person_in_steamy_room_dark_skin_tone:"],"c":"people"},":person_pouting:":{"sn":":person_pouting:","cp":"1f64e","sns":[":person_with_pouting_face:"],"c":"people"},":person_pouting_tone1:":{"sn":":person_pouting_tone1:","cp":"1f64e-1f3fb","sns":[":person_with_pouting_face_tone1:"],"c":"people"},":person_pouting_tone2:":{"sn":":person_pouting_tone2:","cp":"1f64e-1f3fc","sns":[":person_with_pouting_face_tone2:"],"c":"people"},":person_pouting_tone3:":{"sn":":person_pouting_tone3:","cp":"1f64e-1f3fd","sns":[":person_with_pouting_face_tone3:"],"c":"people"},":person_pouting_tone4:":{"sn":":person_pouting_tone4:","cp":"1f64e-1f3fe","sns":[":person_with_pouting_face_tone4:"],"c":"people"},":person_pouting_tone5:":{"sn":":person_pouting_tone5:","cp":"1f64e-1f3ff","sns":[":person_with_pouting_face_tone5:"],"c":"people"},":person_raising_hand:":{"sn":":person_raising_hand:","cp":"1f64b","sns":[":raising_hand:"],"c":"people"},":person_raising_hand_tone1:":{"sn":":person_raising_hand_tone1:","cp":"1f64b-1f3fb","sns":[":raising_hand_tone1:"],"c":"people"},":person_raising_hand_tone2:":{"sn":":person_raising_hand_tone2:","cp":"1f64b-1f3fc","sns":[":raising_hand_tone2:"],"c":"people"},":person_raising_hand_tone3:":{"sn":":person_raising_hand_tone3:","cp":"1f64b-1f3fd","sns":[":raising_hand_tone3:"],"c":"people"},":person_raising_hand_tone4:":{"sn":":person_raising_hand_tone4:","cp":"1f64b-1f3fe","sns":[":raising_hand_tone4:"],"c":"people"},":person_raising_hand_tone5:":{"sn":":person_raising_hand_tone5:","cp":"1f64b-1f3ff","sns":[":raising_hand_tone5:"],"c":"people"},":person_running:":{"sn":":person_running:","cp":"1f3c3","sns":[":runner:"],"c":"people"},":person_running_tone1:":{"sn":":person_running_tone1:","cp":"1f3c3-1f3fb","sns":[":runner_tone1:"],"c":"people"},":person_running_tone2:":{"sn":":person_running_tone2:","cp":"1f3c3-1f3fc","sns":[":runner_tone2:"],"c":"people"},":person_running_tone3:":{"sn":":person_running_tone3:","cp":"1f3c3-1f3fd","sns":[":runner_tone3:"],"c":"people"},":person_running_tone4:":{"sn":":person_running_tone4:","cp":"1f3c3-1f3fe","sns":[":runner_tone4:"],"c":"people"},":person_running_tone5:":{"sn":":person_running_tone5:","cp":"1f3c3-1f3ff","sns":[":runner_tone5:"],"c":"people"},":person_shrugging:":{"sn":":person_shrugging:","cp":"1f937","sns":[":shrug:"],"c":"people"},":person_shrugging_tone1:":{"sn":":person_shrugging_tone1:","cp":"1f937-1f3fb","sns":[":shrug_tone1:"],"c":"people"},":person_shrugging_tone2:":{"sn":":person_shrugging_tone2:","cp":"1f937-1f3fc","sns":[":shrug_tone2:"],"c":"people"},":person_shrugging_tone3:":{"sn":":person_shrugging_tone3:","cp":"1f937-1f3fd","sns":[":shrug_tone3:"],"c":"people"},":person_shrugging_tone4:":{"sn":":person_shrugging_tone4:","cp":"1f937-1f3fe","sns":[":shrug_tone4:"],"c":"people"},":person_shrugging_tone5:":{"sn":":person_shrugging_tone5:","cp":"1f937-1f3ff","sns":[":shrug_tone5:"],"c":"people"},":person_tipping_hand:":{"sn":":person_tipping_hand:","cp":"1f481","sns":[":information_desk_person:"],"c":"people"},":person_tipping_hand_tone1:":{"sn":":person_tipping_hand_tone1:","cp":"1f481-1f3fb","sns":[":information_desk_person_tone1:"],"c":"people"},":person_tipping_hand_tone2:":{"sn":":person_tipping_hand_tone2:","cp":"1f481-1f3fc","sns":[":information_desk_person_tone2:"],"c":"people"},":person_tipping_hand_tone3:":{"sn":":person_tipping_hand_tone3:","cp":"1f481-1f3fd","sns":[":information_desk_person_tone3:"],"c":"people"},":person_tipping_hand_tone4:":{"sn":":person_tipping_hand_tone4:","cp":"1f481-1f3fe","sns":[":information_desk_person_tone4:"],"c":"people"},":person_tipping_hand_tone5:":{"sn":":person_tipping_hand_tone5:","cp":"1f481-1f3ff","sns":[":information_desk_person_tone5:"],"c":"people"},":person_walking:":{"sn":":person_walking:","cp":"1f6b6","sns":[":walking:"],"c":"people"},":person_walking_tone1:":{"sn":":person_walking_tone1:","cp":"1f6b6-1f3fb","sns":[":walking_tone1:"],"c":"people"},":person_walking_tone2:":{"sn":":person_walking_tone2:","cp":"1f6b6-1f3fc","sns":[":walking_tone2:"],"c":"people"},":person_walking_tone3:":{"sn":":person_walking_tone3:","cp":"1f6b6-1f3fd","sns":[":walking_tone3:"],"c":"people"},":person_walking_tone4:":{"sn":":person_walking_tone4:","cp":"1f6b6-1f3fe","sns":[":walking_tone4:"],"c":"people"},":person_walking_tone5:":{"sn":":person_walking_tone5:","cp":"1f6b6-1f3ff","sns":[":walking_tone5:"],"c":"people"},":person_wearing_turban:":{"sn":":person_wearing_turban:","cp":"1f473","sns":[":man_with_turban:"],"c":"people"},":person_wearing_turban_tone1:":{"sn":":person_wearing_turban_tone1:","cp":"1f473-1f3fb","sns":[":man_with_turban_tone1:"],"c":"people"},":person_wearing_turban_tone2:":{"sn":":person_wearing_turban_tone2:","cp":"1f473-1f3fc","sns":[":man_with_turban_tone2:"],"c":"people"},":person_wearing_turban_tone3:":{"sn":":person_wearing_turban_tone3:","cp":"1f473-1f3fd","sns":[":man_with_turban_tone3:"],"c":"people"},":person_wearing_turban_tone4:":{"sn":":person_wearing_turban_tone4:","cp":"1f473-1f3fe","sns":[":man_with_turban_tone4:"],"c":"people"},":person_wearing_turban_tone5:":{"sn":":person_wearing_turban_tone5:","cp":"1f473-1f3ff","sns":[":man_with_turban_tone5:"],"c":"people"},":police_officer:":{"sn":":police_officer:","cp":"1f46e","sns":[":cop:"],"c":"people"},":police_officer_tone1:":{"sn":":police_officer_tone1:","cp":"1f46e-1f3fb","sns":[":cop_tone1:"],"c":"people"},":police_officer_tone2:":{"sn":":police_officer_tone2:","cp":"1f46e-1f3fc","sns":[":cop_tone2:"],"c":"people"},":police_officer_tone3:":{"sn":":police_officer_tone3:","cp":"1f46e-1f3fd","sns":[":cop_tone3:"],"c":"people"},":police_officer_tone4:":{"sn":":police_officer_tone4:","cp":"1f46e-1f3fe","sns":[":cop_tone4:"],"c":"people"},":police_officer_tone5:":{"sn":":police_officer_tone5:","cp":"1f46e-1f3ff","sns":[":cop_tone5:"],"c":"people"},":pregnant_woman:":{"sn":":pregnant_woman:","cp":"1f930","sns":[":expecting_woman:"],"c":"people"},":pregnant_woman_tone1:":{"sn":":pregnant_woman_tone1:","cp":"1f930-1f3fb","sns":[":expecting_woman_tone1:"],"c":"people"},":pregnant_woman_tone2:":{"sn":":pregnant_woman_tone2:","cp":"1f930-1f3fc","sns":[":expecting_woman_tone2:"],"c":"people"},":pregnant_woman_tone3:":{"sn":":pregnant_woman_tone3:","cp":"1f930-1f3fd","sns":[":expecting_woman_tone3:"],"c":"people"},":pregnant_woman_tone4:":{"sn":":pregnant_woman_tone4:","cp":"1f930-1f3fe","sns":[":expecting_woman_tone4:"],"c":"people"},":pregnant_woman_tone5:":{"sn":":pregnant_woman_tone5:","cp":"1f930-1f3ff","sns":[":expecting_woman_tone5:"],"c":"people"},":prince:":{"sn":":prince:","cp":"1f934","sns":[],"c":"people"},":prince_tone1:":{"sn":":prince_tone1:","cp":"1f934-1f3fb","sns":[],"c":"people"},":prince_tone2:":{"sn":":prince_tone2:","cp":"1f934-1f3fc","sns":[],"c":"people"},":prince_tone3:":{"sn":":prince_tone3:","cp":"1f934-1f3fd","sns":[],"c":"people"},":prince_tone4:":{"sn":":prince_tone4:","cp":"1f934-1f3fe","sns":[],"c":"people"},":prince_tone5:":{"sn":":prince_tone5:","cp":"1f934-1f3ff","sns":[],"c":"people"},":princess:":{"sn":":princess:","cp":"1f478","sns":[],"c":"people"},":princess_tone1:":{"sn":":princess_tone1:","cp":"1f478-1f3fb","sns":[],"c":"people"},":princess_tone2:":{"sn":":princess_tone2:","cp":"1f478-1f3fc","sns":[],"c":"people"},":princess_tone3:":{"sn":":princess_tone3:","cp":"1f478-1f3fd","sns":[],"c":"people"},":princess_tone4:":{"sn":":princess_tone4:","cp":"1f478-1f3fe","sns":[],"c":"people"},":princess_tone5:":{"sn":":princess_tone5:","cp":"1f478-1f3ff","sns":[],"c":"people"},":relaxed:":{"sn":":relaxed:","cp":"263a","sns":[],"c":"people"},":space_invader:":{"sn":":space_invader:","cp":"1f47e","sns":[],"c":"people"},":speaking_head:":{"sn":":speaking_head:","cp":"1f5e3","sns":[":speaking_head_in_silhouette:"],"c":"people"},":tongue:":{"sn":":tongue:","cp":"1f445","sns":[],"c":"people"},":two_men_holding_hands:":{"sn":":two_men_holding_hands:","cp":"1f46c","sns":[],"c":"people"},":two_women_holding_hands:":{"sn":":two_women_holding_hands:","cp":"1f46d","sns":[],"c":"people"},":vampire:":{"sn":":vampire:","cp":"1f9db","sns":[],"c":"people"},":vampire_tone1:":{"sn":":vampire_tone1:","cp":"1f9db-1f3fb","sns":[":vampire_light_skin_tone:"],"c":"people"},":vampire_tone2:":{"sn":":vampire_tone2:","cp":"1f9db-1f3fc","sns":[":vampire_medium_light_skin_tone:"],"c":"people"},":vampire_tone3:":{"sn":":vampire_tone3:","cp":"1f9db-1f3fd","sns":[":vampire_medium_skin_tone:"],"c":"people"},":vampire_tone4:":{"sn":":vampire_tone4:","cp":"1f9db-1f3fe","sns":[":vampire_medium_dark_skin_tone:"],"c":"people"},":vampire_tone5:":{"sn":":vampire_tone5:","cp":"1f9db-1f3ff","sns":[":vampire_dark_skin_tone:"],"c":"people"},":woman:":{"sn":":woman:","cp":"1f469","sns":[],"c":"people"},":woman_artist:":{"sn":":woman_artist:","cp":"1f469-200d-1f3a8","sns":[],"c":"people"},":woman_artist_tone1:":{"sn":":woman_artist_tone1:","cp":"1f469-1f3fb-200d-1f3a8","sns":[":woman_artist_light_skin_tone:"],"c":"people"},":woman_artist_tone2:":{"sn":":woman_artist_tone2:","cp":"1f469-1f3fc-200d-1f3a8","sns":[":woman_artist_medium_light_skin_tone:"],"c":"people"},":woman_artist_tone3:":{"sn":":woman_artist_tone3:","cp":"1f469-1f3fd-200d-1f3a8","sns":[":woman_artist_medium_skin_tone:"],"c":"people"},":woman_artist_tone4:":{"sn":":woman_artist_tone4:","cp":"1f469-1f3fe-200d-1f3a8","sns":[":woman_artist_medium_dark_skin_tone:"],"c":"people"},":woman_artist_tone5:":{"sn":":woman_artist_tone5:","cp":"1f469-1f3ff-200d-1f3a8","sns":[":woman_artist_dark_skin_tone:"],"c":"people"},":woman_astronaut:":{"sn":":woman_astronaut:","cp":"1f469-200d-1f680","sns":[],"c":"people"},":woman_astronaut_tone1:":{"sn":":woman_astronaut_tone1:","cp":"1f469-1f3fb-200d-1f680","sns":[":woman_astronaut_light_skin_tone:"],"c":"people"},":woman_astronaut_tone2:":{"sn":":woman_astronaut_tone2:","cp":"1f469-1f3fc-200d-1f680","sns":[":woman_astronaut_medium_light_skin_tone:"],"c":"people"},":woman_astronaut_tone3:":{"sn":":woman_astronaut_tone3:","cp":"1f469-1f3fd-200d-1f680","sns":[":woman_astronaut_medium_skin_tone:"],"c":"people"},":woman_astronaut_tone4:":{"sn":":woman_astronaut_tone4:","cp":"1f469-1f3fe-200d-1f680","sns":[":woman_astronaut_medium_dark_skin_tone:"],"c":"people"},":woman_astronaut_tone5:":{"sn":":woman_astronaut_tone5:","cp":"1f469-1f3ff-200d-1f680","sns":[":woman_astronaut_dark_skin_tone:"],"c":"people"},":woman_bowing:":{"sn":":woman_bowing:","cp":"1f647-200d-2640-fe0f","sns":[],"c":"people"},":woman_bowing_tone1:":{"sn":":woman_bowing_tone1:","cp":"1f647-1f3fb-200d-2640-fe0f","sns":[":woman_bowing_light_skin_tone:"],"c":"people"},":woman_bowing_tone2:":{"sn":":woman_bowing_tone2:","cp":"1f647-1f3fc-200d-2640-fe0f","sns":[":woman_bowing_medium_light_skin_tone:"],"c":"people"},":woman_bowing_tone3:":{"sn":":woman_bowing_tone3:","cp":"1f647-1f3fd-200d-2640-fe0f","sns":[":woman_bowing_medium_skin_tone:"],"c":"people"},":woman_bowing_tone4:":{"sn":":woman_bowing_tone4:","cp":"1f647-1f3fe-200d-2640-fe0f","sns":[":woman_bowing_medium_dark_skin_tone:"],"c":"people"},":woman_bowing_tone5:":{"sn":":woman_bowing_tone5:","cp":"1f647-1f3ff-200d-2640-fe0f","sns":[":woman_bowing_dark_skin_tone:"],"c":"people"},":woman_construction_worker:":{"sn":":woman_construction_worker:","cp":"1f477-200d-2640-fe0f","sns":[],"c":"people"},":woman_construction_worker_tone1:":{"sn":":woman_construction_worker_tone1:","cp":"1f477-1f3fb-200d-2640-fe0f","sns":[":woman_construction_worker_light_skin_tone:"],"c":"people"},":woman_construction_worker_tone2:":{"sn":":woman_construction_worker_tone2:","cp":"1f477-1f3fc-200d-2640-fe0f","sns":[":woman_construction_worker_medium_light_skin_tone:"],"c":"people"},":woman_construction_worker_tone3:":{"sn":":woman_construction_worker_tone3:","cp":"1f477-1f3fd-200d-2640-fe0f","sns":[":woman_construction_worker_medium_skin_tone:"],"c":"people"},":woman_construction_worker_tone4:":{"sn":":woman_construction_worker_tone4:","cp":"1f477-1f3fe-200d-2640-fe0f","sns":[":woman_construction_worker_medium_dark_skin_tone:"],"c":"people"},":woman_construction_worker_tone5:":{"sn":":woman_construction_worker_tone5:","cp":"1f477-1f3ff-200d-2640-fe0f","sns":[":woman_construction_worker_dark_skin_tone:"],"c":"people"},":woman_cook:":{"sn":":woman_cook:","cp":"1f469-200d-1f373","sns":[],"c":"people"},":woman_cook_tone1:":{"sn":":woman_cook_tone1:","cp":"1f469-1f3fb-200d-1f373","sns":[":woman_cook_light_skin_tone:"],"c":"people"},":woman_cook_tone2:":{"sn":":woman_cook_tone2:","cp":"1f469-1f3fc-200d-1f373","sns":[":woman_cook_medium_light_skin_tone:"],"c":"people"},":woman_cook_tone3:":{"sn":":woman_cook_tone3:","cp":"1f469-1f3fd-200d-1f373","sns":[":woman_cook_medium_skin_tone:"],"c":"people"},":woman_cook_tone4:":{"sn":":woman_cook_tone4:","cp":"1f469-1f3fe-200d-1f373","sns":[":woman_cook_medium_dark_skin_tone:"],"c":"people"},":woman_cook_tone5:":{"sn":":woman_cook_tone5:","cp":"1f469-1f3ff-200d-1f373","sns":[":woman_cook_dark_skin_tone:"],"c":"people"},":woman_detective:":{"sn":":woman_detective:","cp":"1f575-fe0f-200d-2640-fe0f","sns":[],"c":"people"},":woman_detective_tone1:":{"sn":":woman_detective_tone1:","cp":"1f575-1f3fb-200d-2640-fe0f","sns":[":woman_detective_light_skin_tone:"],"c":"people"},":woman_detective_tone2:":{"sn":":woman_detective_tone2:","cp":"1f575-1f3fc-200d-2640-fe0f","sns":[":woman_detective_medium_light_skin_tone:"],"c":"people"},":woman_detective_tone3:":{"sn":":woman_detective_tone3:","cp":"1f575-1f3fd-200d-2640-fe0f","sns":[":woman_detective_medium_skin_tone:"],"c":"people"},":woman_detective_tone4:":{"sn":":woman_detective_tone4:","cp":"1f575-1f3fe-200d-2640-fe0f","sns":[":woman_detective_medium_dark_skin_tone:"],"c":"people"},":woman_detective_tone5:":{"sn":":woman_detective_tone5:","cp":"1f575-1f3ff-200d-2640-fe0f","sns":[":woman_detective_dark_skin_tone:"],"c":"people"},":woman_elf:":{"sn":":woman_elf:","cp":"1f9dd-200d-2640-fe0f","sns":[],"c":"people"},":woman_elf_tone1:":{"sn":":woman_elf_tone1:","cp":"1f9dd-1f3fb-200d-2640-fe0f","sns":[":woman_elf_light_skin_tone:"],"c":"people"},":woman_elf_tone2:":{"sn":":woman_elf_tone2:","cp":"1f9dd-1f3fc-200d-2640-fe0f","sns":[":woman_elf_medium_light_skin_tone:"],"c":"people"},":woman_elf_tone3:":{"sn":":woman_elf_tone3:","cp":"1f9dd-1f3fd-200d-2640-fe0f","sns":[":woman_elf_medium_skin_tone:"],"c":"people"},":woman_elf_tone4:":{"sn":":woman_elf_tone4:","cp":"1f9dd-1f3fe-200d-2640-fe0f","sns":[":woman_elf_medium_dark_skin_tone:"],"c":"people"},":woman_elf_tone5:":{"sn":":woman_elf_tone5:","cp":"1f9dd-1f3ff-200d-2640-fe0f","sns":[":woman_elf_dark_skin_tone:"],"c":"people"},":woman_facepalming:":{"sn":":woman_facepalming:","cp":"1f926-200d-2640-fe0f","sns":[],"c":"people"},":woman_facepalming_tone1:":{"sn":":woman_facepalming_tone1:","cp":"1f926-1f3fb-200d-2640-fe0f","sns":[":woman_facepalming_light_skin_tone:"],"c":"people"},":woman_facepalming_tone2:":{"sn":":woman_facepalming_tone2:","cp":"1f926-1f3fc-200d-2640-fe0f","sns":[":woman_facepalming_medium_light_skin_tone:"],"c":"people"},":woman_facepalming_tone3:":{"sn":":woman_facepalming_tone3:","cp":"1f926-1f3fd-200d-2640-fe0f","sns":[":woman_facepalming_medium_skin_tone:"],"c":"people"},":woman_facepalming_tone4:":{"sn":":woman_facepalming_tone4:","cp":"1f926-1f3fe-200d-2640-fe0f","sns":[":woman_facepalming_medium_dark_skin_tone:"],"c":"people"},":woman_facepalming_tone5:":{"sn":":woman_facepalming_tone5:","cp":"1f926-1f3ff-200d-2640-fe0f","sns":[":woman_facepalming_dark_skin_tone:"],"c":"people"},":woman_factory_worker:":{"sn":":woman_factory_worker:","cp":"1f469-200d-1f3ed","sns":[],"c":"people"},":woman_factory_worker_tone1:":{"sn":":woman_factory_worker_tone1:","cp":"1f469-1f3fb-200d-1f3ed","sns":[":woman_factory_worker_light_skin_tone:"],"c":"people"},":woman_factory_worker_tone2:":{"sn":":woman_factory_worker_tone2:","cp":"1f469-1f3fc-200d-1f3ed","sns":[":woman_factory_worker_medium_light_skin_tone:"],"c":"people"},":woman_factory_worker_tone3:":{"sn":":woman_factory_worker_tone3:","cp":"1f469-1f3fd-200d-1f3ed","sns":[":woman_factory_worker_medium_skin_tone:"],"c":"people"},":woman_factory_worker_tone4:":{"sn":":woman_factory_worker_tone4:","cp":"1f469-1f3fe-200d-1f3ed","sns":[":woman_factory_worker_medium_dark_skin_tone:"],"c":"people"},":woman_factory_worker_tone5:":{"sn":":woman_factory_worker_tone5:","cp":"1f469-1f3ff-200d-1f3ed","sns":[":woman_factory_worker_dark_skin_tone:"],"c":"people"},":woman_fairy:":{"sn":":woman_fairy:","cp":"1f9da-200d-2640-fe0f","sns":[],"c":"people"},":woman_fairy_tone1:":{"sn":":woman_fairy_tone1:","cp":"1f9da-1f3fb-200d-2640-fe0f","sns":[":woman_fairy_light_skin_tone:"],"c":"people"},":woman_fairy_tone2:":{"sn":":woman_fairy_tone2:","cp":"1f9da-1f3fc-200d-2640-fe0f","sns":[":woman_fairy_medium_light_skin_tone:"],"c":"people"},":woman_fairy_tone3:":{"sn":":woman_fairy_tone3:","cp":"1f9da-1f3fd-200d-2640-fe0f","sns":[":woman_fairy_medium_skin_tone:"],"c":"people"},":woman_fairy_tone4:":{"sn":":woman_fairy_tone4:","cp":"1f9da-1f3fe-200d-2640-fe0f","sns":[":woman_fairy_medium_dark_skin_tone:"],"c":"people"},":woman_fairy_tone5:":{"sn":":woman_fairy_tone5:","cp":"1f9da-1f3ff-200d-2640-fe0f","sns":[":woman_fairy_dark_skin_tone:"],"c":"people"},":woman_farmer:":{"sn":":woman_farmer:","cp":"1f469-200d-1f33e","sns":[],"c":"people"},":woman_farmer_tone1:":{"sn":":woman_farmer_tone1:","cp":"1f469-1f3fb-200d-1f33e","sns":[":woman_farmer_light_skin_tone:"],"c":"people"},":woman_farmer_tone2:":{"sn":":woman_farmer_tone2:","cp":"1f469-1f3fc-200d-1f33e","sns":[":woman_farmer_medium_light_skin_tone:"],"c":"people"},":woman_farmer_tone3:":{"sn":":woman_farmer_tone3:","cp":"1f469-1f3fd-200d-1f33e","sns":[":woman_farmer_medium_skin_tone:"],"c":"people"},":woman_farmer_tone4:":{"sn":":woman_farmer_tone4:","cp":"1f469-1f3fe-200d-1f33e","sns":[":woman_farmer_medium_dark_skin_tone:"],"c":"people"},":woman_farmer_tone5:":{"sn":":woman_farmer_tone5:","cp":"1f469-1f3ff-200d-1f33e","sns":[":woman_farmer_dark_skin_tone:"],"c":"people"},":woman_firefighter:":{"sn":":woman_firefighter:","cp":"1f469-200d-1f692","sns":[],"c":"people"},":woman_firefighter_tone1:":{"sn":":woman_firefighter_tone1:","cp":"1f469-1f3fb-200d-1f692","sns":[":woman_firefighter_light_skin_tone:"],"c":"people"},":woman_firefighter_tone2:":{"sn":":woman_firefighter_tone2:","cp":"1f469-1f3fc-200d-1f692","sns":[":woman_firefighter_medium_light_skin_tone:"],"c":"people"},":woman_firefighter_tone3:":{"sn":":woman_firefighter_tone3:","cp":"1f469-1f3fd-200d-1f692","sns":[":woman_firefighter_medium_skin_tone:"],"c":"people"},":woman_firefighter_tone4:":{"sn":":woman_firefighter_tone4:","cp":"1f469-1f3fe-200d-1f692","sns":[":woman_firefighter_medium_dark_skin_tone:"],"c":"people"},":woman_firefighter_tone5:":{"sn":":woman_firefighter_tone5:","cp":"1f469-1f3ff-200d-1f692","sns":[":woman_firefighter_dark_skin_tone:"],"c":"people"},":woman_frowning:":{"sn":":woman_frowning:","cp":"1f64d-200d-2640-fe0f","sns":[],"c":"people"},":woman_frowning_tone1:":{"sn":":woman_frowning_tone1:","cp":"1f64d-1f3fb-200d-2640-fe0f","sns":[":woman_frowning_light_skin_tone:"],"c":"people"},":woman_frowning_tone2:":{"sn":":woman_frowning_tone2:","cp":"1f64d-1f3fc-200d-2640-fe0f","sns":[":woman_frowning_medium_light_skin_tone:"],"c":"people"},":woman_frowning_tone3:":{"sn":":woman_frowning_tone3:","cp":"1f64d-1f3fd-200d-2640-fe0f","sns":[":woman_frowning_medium_skin_tone:"],"c":"people"},":woman_frowning_tone4:":{"sn":":woman_frowning_tone4:","cp":"1f64d-1f3fe-200d-2640-fe0f","sns":[":woman_frowning_medium_dark_skin_tone:"],"c":"people"},":woman_frowning_tone5:":{"sn":":woman_frowning_tone5:","cp":"1f64d-1f3ff-200d-2640-fe0f","sns":[":woman_frowning_dark_skin_tone:"],"c":"people"},":woman_genie:":{"sn":":woman_genie:","cp":"1f9de-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_no:":{"sn":":woman_gesturing_no:","cp":"1f645-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_no_tone1:":{"sn":":woman_gesturing_no_tone1:","cp":"1f645-1f3fb-200d-2640-fe0f","sns":[":woman_gesturing_no_light_skin_tone:"],"c":"people"},":woman_gesturing_no_tone2:":{"sn":":woman_gesturing_no_tone2:","cp":"1f645-1f3fc-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_light_skin_tone:"],"c":"people"},":woman_gesturing_no_tone3:":{"sn":":woman_gesturing_no_tone3:","cp":"1f645-1f3fd-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_skin_tone:"],"c":"people"},":woman_gesturing_no_tone4:":{"sn":":woman_gesturing_no_tone4:","cp":"1f645-1f3fe-200d-2640-fe0f","sns":[":woman_gesturing_no_medium_dark_skin_tone:"],"c":"people"},":woman_gesturing_no_tone5:":{"sn":":woman_gesturing_no_tone5:","cp":"1f645-1f3ff-200d-2640-fe0f","sns":[":woman_gesturing_no_dark_skin_tone:"],"c":"people"},":woman_gesturing_ok:":{"sn":":woman_gesturing_ok:","cp":"1f646-200d-2640-fe0f","sns":[],"c":"people"},":woman_gesturing_ok_tone1:":{"sn":":woman_gesturing_ok_tone1:","cp":"1f646-1f3fb-200d-2640-fe0f","sns":[":woman_gesturing_ok_light_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone2:":{"sn":":woman_gesturing_ok_tone2:","cp":"1f646-1f3fc-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_light_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone3:":{"sn":":woman_gesturing_ok_tone3:","cp":"1f646-1f3fd-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone4:":{"sn":":woman_gesturing_ok_tone4:","cp":"1f646-1f3fe-200d-2640-fe0f","sns":[":woman_gesturing_ok_medium_dark_skin_tone:"],"c":"people"},":woman_gesturing_ok_tone5:":{"sn":":woman_gesturing_ok_tone5:","cp":"1f646-1f3ff-200d-2640-fe0f","sns":[":woman_gesturing_ok_dark_skin_tone:"],"c":"people"},":woman_getting_face_massage:":{"sn":":woman_getting_face_massage:","cp":"1f486-200d-2640-fe0f","sns":[],"c":"people"},":woman_getting_face_massage_tone1:":{"sn":":woman_getting_face_massage_tone1:","cp":"1f486-1f3fb-200d-2640-fe0f","sns":[":woman_getting_face_massage_light_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone2:":{"sn":":woman_getting_face_massage_tone2:","cp":"1f486-1f3fc-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_light_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone3:":{"sn":":woman_getting_face_massage_tone3:","cp":"1f486-1f3fd-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone4:":{"sn":":woman_getting_face_massage_tone4:","cp":"1f486-1f3fe-200d-2640-fe0f","sns":[":woman_getting_face_massage_medium_dark_skin_tone:"],"c":"people"},":woman_getting_face_massage_tone5:":{"sn":":woman_getting_face_massage_tone5:","cp":"1f486-1f3ff-200d-2640-fe0f","sns":[":woman_getting_face_massage_dark_skin_tone:"],"c":"people"},":woman_getting_haircut:":{"sn":":woman_getting_haircut:","cp":"1f487-200d-2640-fe0f","sns":[],"c":"people"},":woman_getting_haircut_tone1:":{"sn":":woman_getting_haircut_tone1:","cp":"1f487-1f3fb-200d-2640-fe0f","sns":[":woman_getting_haircut_light_skin_tone:"],"c":"people"},":woman_getting_haircut_tone2:":{"sn":":woman_getting_haircut_tone2:","cp":"1f487-1f3fc-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_light_skin_tone:"],"c":"people"},":woman_getting_haircut_tone3:":{"sn":":woman_getting_haircut_tone3:","cp":"1f487-1f3fd-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_skin_tone:"],"c":"people"},":woman_getting_haircut_tone4:":{"sn":":woman_getting_haircut_tone4:","cp":"1f487-1f3fe-200d-2640-fe0f","sns":[":woman_getting_haircut_medium_dark_skin_tone:"],"c":"people"},":woman_getting_haircut_tone5:":{"sn":":woman_getting_haircut_tone5:","cp":"1f487-1f3ff-200d-2640-fe0f","sns":[":woman_getting_haircut_dark_skin_tone:"],"c":"people"},":woman_guard:":{"sn":":woman_guard:","cp":"1f482-200d-2640-fe0f","sns":[],"c":"people"},":woman_guard_tone1:":{"sn":":woman_guard_tone1:","cp":"1f482-1f3fb-200d-2640-fe0f","sns":[":woman_guard_light_skin_tone:"],"c":"people"},":woman_guard_tone2:":{"sn":":woman_guard_tone2:","cp":"1f482-1f3fc-200d-2640-fe0f","sns":[":woman_guard_medium_light_skin_tone:"],"c":"people"},":woman_guard_tone3:":{"sn":":woman_guard_tone3:","cp":"1f482-1f3fd-200d-2640-fe0f","sns":[":woman_guard_medium_skin_tone:"],"c":"people"},":woman_guard_tone4:":{"sn":":woman_guard_tone4:","cp":"1f482-1f3fe-200d-2640-fe0f","sns":[":woman_guard_medium_dark_skin_tone:"],"c":"people"},":woman_guard_tone5:":{"sn":":woman_guard_tone5:","cp":"1f482-1f3ff-200d-2640-fe0f","sns":[":woman_guard_dark_skin_tone:"],"c":"people"},":woman_health_worker:":{"sn":":woman_health_worker:","cp":"1f469-200d-2695-fe0f","sns":[],"c":"people"},":woman_health_worker_tone1:":{"sn":":woman_health_worker_tone1:","cp":"1f469-1f3fb-200d-2695-fe0f","sns":[":woman_health_worker_light_skin_tone:"],"c":"people"},":woman_health_worker_tone2:":{"sn":":woman_health_worker_tone2:","cp":"1f469-1f3fc-200d-2695-fe0f","sns":[":woman_health_worker_medium_light_skin_tone:"],"c":"people"},":woman_health_worker_tone3:":{"sn":":woman_health_worker_tone3:","cp":"1f469-1f3fd-200d-2695-fe0f","sns":[":woman_health_worker_medium_skin_tone:"],"c":"people"},":woman_health_worker_tone4:":{"sn":":woman_health_worker_tone4:","cp":"1f469-1f3fe-200d-2695-fe0f","sns":[":woman_health_worker_medium_dark_skin_tone:"],"c":"people"},":woman_health_worker_tone5:":{"sn":":woman_health_worker_tone5:","cp":"1f469-1f3ff-200d-2695-fe0f","sns":[":woman_health_worker_dark_skin_tone:"],"c":"people"},":woman_in_steamy_room:":{"sn":":woman_in_steamy_room:","cp":"1f9d6-200d-2640-fe0f","sns":[],"c":"people"},":woman_in_steamy_room_tone1:":{"sn":":woman_in_steamy_room_tone1:","cp":"1f9d6-1f3fb-200d-2640-fe0f","sns":[":woman_in_steamy_room_light_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone2:":{"sn":":woman_in_steamy_room_tone2:","cp":"1f9d6-1f3fc-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_light_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone3:":{"sn":":woman_in_steamy_room_tone3:","cp":"1f9d6-1f3fd-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone4:":{"sn":":woman_in_steamy_room_tone4:","cp":"1f9d6-1f3fe-200d-2640-fe0f","sns":[":woman_in_steamy_room_medium_dark_skin_tone:"],"c":"people"},":woman_in_steamy_room_tone5:":{"sn":":woman_in_steamy_room_tone5:","cp":"1f9d6-1f3ff-200d-2640-fe0f","sns":[":woman_in_steamy_room_dark_skin_tone:"],"c":"people"},":woman_judge:":{"sn":":woman_judge:","cp":"1f469-200d-2696-fe0f","sns":[],"c":"people"},":woman_judge_tone1:":{"sn":":woman_judge_tone1:","cp":"1f469-1f3fb-200d-2696-fe0f","sns":[":woman_judge_light_skin_tone:"],"c":"people"},":woman_judge_tone2:":{"sn":":woman_judge_tone2:","cp":"1f469-1f3fc-200d-2696-fe0f","sns":[":woman_judge_medium_light_skin_tone:"],"c":"people"},":woman_judge_tone3:":{"sn":":woman_judge_tone3:","cp":"1f469-1f3fd-200d-2696-fe0f","sns":[":woman_judge_medium_skin_tone:"],"c":"people"},":woman_judge_tone4:":{"sn":":woman_judge_tone4:","cp":"1f469-1f3fe-200d-2696-fe0f","sns":[":woman_judge_medium_dark_skin_tone:"],"c":"people"},":woman_judge_tone5:":{"sn":":woman_judge_tone5:","cp":"1f469-1f3ff-200d-2696-fe0f","sns":[":woman_judge_dark_skin_tone:"],"c":"people"},":woman_mage:":{"sn":":woman_mage:","cp":"1f9d9-200d-2640-fe0f","sns":[],"c":"people"},":woman_mage_tone1:":{"sn":":woman_mage_tone1:","cp":"1f9d9-1f3fb-200d-2640-fe0f","sns":[":woman_mage_light_skin_tone:"],"c":"people"},":woman_mage_tone2:":{"sn":":woman_mage_tone2:","cp":"1f9d9-1f3fc-200d-2640-fe0f","sns":[":woman_mage_medium_light_skin_tone:"],"c":"people"},":woman_mage_tone3:":{"sn":":woman_mage_tone3:","cp":"1f9d9-1f3fd-200d-2640-fe0f","sns":[":woman_mage_medium_skin_tone:"],"c":"people"},":woman_mage_tone4:":{"sn":":woman_mage_tone4:","cp":"1f9d9-1f3fe-200d-2640-fe0f","sns":[":woman_mage_medium_dark_skin_tone:"],"c":"people"},":woman_mage_tone5:":{"sn":":woman_mage_tone5:","cp":"1f9d9-1f3ff-200d-2640-fe0f","sns":[":woman_mage_dark_skin_tone:"],"c":"people"},":woman_mechanic:":{"sn":":woman_mechanic:","cp":"1f469-200d-1f527","sns":[],"c":"people"},":woman_mechanic_tone1:":{"sn":":woman_mechanic_tone1:","cp":"1f469-1f3fb-200d-1f527","sns":[":woman_mechanic_light_skin_tone:"],"c":"people"},":woman_mechanic_tone2:":{"sn":":woman_mechanic_tone2:","cp":"1f469-1f3fc-200d-1f527","sns":[":woman_mechanic_medium_light_skin_tone:"],"c":"people"},":woman_mechanic_tone3:":{"sn":":woman_mechanic_tone3:","cp":"1f469-1f3fd-200d-1f527","sns":[":woman_mechanic_medium_skin_tone:"],"c":"people"},":woman_mechanic_tone4:":{"sn":":woman_mechanic_tone4:","cp":"1f469-1f3fe-200d-1f527","sns":[":woman_mechanic_medium_dark_skin_tone:"],"c":"people"},":woman_mechanic_tone5:":{"sn":":woman_mechanic_tone5:","cp":"1f469-1f3ff-200d-1f527","sns":[":woman_mechanic_dark_skin_tone:"],"c":"people"},":woman_office_worker:":{"sn":":woman_office_worker:","cp":"1f469-200d-1f4bc","sns":[],"c":"people"},":woman_office_worker_tone1:":{"sn":":woman_office_worker_tone1:","cp":"1f469-1f3fb-200d-1f4bc","sns":[":woman_office_worker_light_skin_tone:"],"c":"people"},":woman_office_worker_tone2:":{"sn":":woman_office_worker_tone2:","cp":"1f469-1f3fc-200d-1f4bc","sns":[":woman_office_worker_medium_light_skin_tone:"],"c":"people"},":woman_office_worker_tone3:":{"sn":":woman_office_worker_tone3:","cp":"1f469-1f3fd-200d-1f4bc","sns":[":woman_office_worker_medium_skin_tone:"],"c":"people"},":woman_office_worker_tone4:":{"sn":":woman_office_worker_tone4:","cp":"1f469-1f3fe-200d-1f4bc","sns":[":woman_office_worker_medium_dark_skin_tone:"],"c":"people"},":woman_office_worker_tone5:":{"sn":":woman_office_worker_tone5:","cp":"1f469-1f3ff-200d-1f4bc","sns":[":woman_office_worker_dark_skin_tone:"],"c":"people"},":woman_pilot:":{"sn":":woman_pilot:","cp":"1f469-200d-2708-fe0f","sns":[],"c":"people"},":woman_pilot_tone1:":{"sn":":woman_pilot_tone1:","cp":"1f469-1f3fb-200d-2708-fe0f","sns":[":woman_pilot_light_skin_tone:"],"c":"people"},":woman_pilot_tone2:":{"sn":":woman_pilot_tone2:","cp":"1f469-1f3fc-200d-2708-fe0f","sns":[":woman_pilot_medium_light_skin_tone:"],"c":"people"},":woman_pilot_tone3:":{"sn":":woman_pilot_tone3:","cp":"1f469-1f3fd-200d-2708-fe0f","sns":[":woman_pilot_medium_skin_tone:"],"c":"people"},":woman_pilot_tone4:":{"sn":":woman_pilot_tone4:","cp":"1f469-1f3fe-200d-2708-fe0f","sns":[":woman_pilot_medium_dark_skin_tone:"],"c":"people"},":woman_pilot_tone5:":{"sn":":woman_pilot_tone5:","cp":"1f469-1f3ff-200d-2708-fe0f","sns":[":woman_pilot_dark_skin_tone:"],"c":"people"},":woman_police_officer:":{"sn":":woman_police_officer:","cp":"1f46e-200d-2640-fe0f","sns":[],"c":"people"},":woman_police_officer_tone1:":{"sn":":woman_police_officer_tone1:","cp":"1f46e-1f3fb-200d-2640-fe0f","sns":[":woman_police_officer_light_skin_tone:"],"c":"people"},":woman_police_officer_tone2:":{"sn":":woman_police_officer_tone2:","cp":"1f46e-1f3fc-200d-2640-fe0f","sns":[":woman_police_officer_medium_light_skin_tone:"],"c":"people"},":woman_police_officer_tone3:":{"sn":":woman_police_officer_tone3:","cp":"1f46e-1f3fd-200d-2640-fe0f","sns":[":woman_police_officer_medium_skin_tone:"],"c":"people"},":woman_police_officer_tone4:":{"sn":":woman_police_officer_tone4:","cp":"1f46e-1f3fe-200d-2640-fe0f","sns":[":woman_police_officer_medium_dark_skin_tone:"],"c":"people"},":woman_police_officer_tone5:":{"sn":":woman_police_officer_tone5:","cp":"1f46e-1f3ff-200d-2640-fe0f","sns":[":woman_police_officer_dark_skin_tone:"],"c":"people"},":woman_pouting:":{"sn":":woman_pouting:","cp":"1f64e-200d-2640-fe0f","sns":[],"c":"people"},":woman_pouting_tone1:":{"sn":":woman_pouting_tone1:","cp":"1f64e-1f3fb-200d-2640-fe0f","sns":[":woman_pouting_light_skin_tone:"],"c":"people"},":woman_pouting_tone2:":{"sn":":woman_pouting_tone2:","cp":"1f64e-1f3fc-200d-2640-fe0f","sns":[":woman_pouting_medium_light_skin_tone:"],"c":"people"},":woman_pouting_tone3:":{"sn":":woman_pouting_tone3:","cp":"1f64e-1f3fd-200d-2640-fe0f","sns":[":woman_pouting_medium_skin_tone:"],"c":"people"},":woman_pouting_tone4:":{"sn":":woman_pouting_tone4:","cp":"1f64e-1f3fe-200d-2640-fe0f","sns":[":woman_pouting_medium_dark_skin_tone:"],"c":"people"},":woman_pouting_tone5:":{"sn":":woman_pouting_tone5:","cp":"1f64e-1f3ff-200d-2640-fe0f","sns":[":woman_pouting_dark_skin_tone:"],"c":"people"},":woman_raising_hand:":{"sn":":woman_raising_hand:","cp":"1f64b-200d-2640-fe0f","sns":[],"c":"people"},":woman_raising_hand_tone1:":{"sn":":woman_raising_hand_tone1:","cp":"1f64b-1f3fb-200d-2640-fe0f","sns":[":woman_raising_hand_light_skin_tone:"],"c":"people"},":woman_raising_hand_tone2:":{"sn":":woman_raising_hand_tone2:","cp":"1f64b-1f3fc-200d-2640-fe0f","sns":[":woman_raising_hand_medium_light_skin_tone:"],"c":"people"},":woman_raising_hand_tone3:":{"sn":":woman_raising_hand_tone3:","cp":"1f64b-1f3fd-200d-2640-fe0f","sns":[":woman_raising_hand_medium_skin_tone:"],"c":"people"},":woman_raising_hand_tone4:":{"sn":":woman_raising_hand_tone4:","cp":"1f64b-1f3fe-200d-2640-fe0f","sns":[":woman_raising_hand_medium_dark_skin_tone:"],"c":"people"},":woman_raising_hand_tone5:":{"sn":":woman_raising_hand_tone5:","cp":"1f64b-1f3ff-200d-2640-fe0f","sns":[":woman_raising_hand_dark_skin_tone:"],"c":"people"},":woman_running:":{"sn":":woman_running:","cp":"1f3c3-200d-2640-fe0f","sns":[],"c":"people"},":woman_running_tone1:":{"sn":":woman_running_tone1:","cp":"1f3c3-1f3fb-200d-2640-fe0f","sns":[":woman_running_light_skin_tone:"],"c":"people"},":woman_running_tone2:":{"sn":":woman_running_tone2:","cp":"1f3c3-1f3fc-200d-2640-fe0f","sns":[":woman_running_medium_light_skin_tone:"],"c":"people"},":woman_running_tone3:":{"sn":":woman_running_tone3:","cp":"1f3c3-1f3fd-200d-2640-fe0f","sns":[":woman_running_medium_skin_tone:"],"c":"people"},":woman_running_tone4:":{"sn":":woman_running_tone4:","cp":"1f3c3-1f3fe-200d-2640-fe0f","sns":[":woman_running_medium_dark_skin_tone:"],"c":"people"},":woman_running_tone5:":{"sn":":woman_running_tone5:","cp":"1f3c3-1f3ff-200d-2640-fe0f","sns":[":woman_running_dark_skin_tone:"],"c":"people"},":woman_scientist:":{"sn":":woman_scientist:","cp":"1f469-200d-1f52c","sns":[],"c":"people"},":woman_scientist_tone1:":{"sn":":woman_scientist_tone1:","cp":"1f469-1f3fb-200d-1f52c","sns":[":woman_scientist_light_skin_tone:"],"c":"people"},":woman_scientist_tone2:":{"sn":":woman_scientist_tone2:","cp":"1f469-1f3fc-200d-1f52c","sns":[":woman_scientist_medium_light_skin_tone:"],"c":"people"},":woman_scientist_tone3:":{"sn":":woman_scientist_tone3:","cp":"1f469-1f3fd-200d-1f52c","sns":[":woman_scientist_medium_skin_tone:"],"c":"people"},":woman_scientist_tone4:":{"sn":":woman_scientist_tone4:","cp":"1f469-1f3fe-200d-1f52c","sns":[":woman_scientist_medium_dark_skin_tone:"],"c":"people"},":woman_scientist_tone5:":{"sn":":woman_scientist_tone5:","cp":"1f469-1f3ff-200d-1f52c","sns":[":woman_scientist_dark_skin_tone:"],"c":"people"},":woman_shrugging:":{"sn":":woman_shrugging:","cp":"1f937-200d-2640-fe0f","sns":[],"c":"people"},":woman_shrugging_tone1:":{"sn":":woman_shrugging_tone1:","cp":"1f937-1f3fb-200d-2640-fe0f","sns":[":woman_shrugging_light_skin_tone:"],"c":"people"},":woman_shrugging_tone2:":{"sn":":woman_shrugging_tone2:","cp":"1f937-1f3fc-200d-2640-fe0f","sns":[":woman_shrugging_medium_light_skin_tone:"],"c":"people"},":woman_shrugging_tone3:":{"sn":":woman_shrugging_tone3:","cp":"1f937-1f3fd-200d-2640-fe0f","sns":[":woman_shrugging_medium_skin_tone:"],"c":"people"},":woman_shrugging_tone4:":{"sn":":woman_shrugging_tone4:","cp":"1f937-1f3fe-200d-2640-fe0f","sns":[":woman_shrugging_medium_dark_skin_tone:"],"c":"people"},":woman_shrugging_tone5:":{"sn":":woman_shrugging_tone5:","cp":"1f937-1f3ff-200d-2640-fe0f","sns":[":woman_shrugging_dark_skin_tone:"],"c":"people"},":woman_singer:":{"sn":":woman_singer:","cp":"1f469-200d-1f3a4","sns":[],"c":"people"},":woman_singer_tone1:":{"sn":":woman_singer_tone1:","cp":"1f469-1f3fb-200d-1f3a4","sns":[":woman_singer_light_skin_tone:"],"c":"people"},":woman_singer_tone2:":{"sn":":woman_singer_tone2:","cp":"1f469-1f3fc-200d-1f3a4","sns":[":woman_singer_medium_light_skin_tone:"],"c":"people"},":woman_singer_tone3:":{"sn":":woman_singer_tone3:","cp":"1f469-1f3fd-200d-1f3a4","sns":[":woman_singer_medium_skin_tone:"],"c":"people"},":woman_singer_tone4:":{"sn":":woman_singer_tone4:","cp":"1f469-1f3fe-200d-1f3a4","sns":[":woman_singer_medium_dark_skin_tone:"],"c":"people"},":woman_singer_tone5:":{"sn":":woman_singer_tone5:","cp":"1f469-1f3ff-200d-1f3a4","sns":[":woman_singer_dark_skin_tone:"],"c":"people"},":woman_student:":{"sn":":woman_student:","cp":"1f469-200d-1f393","sns":[],"c":"people"},":woman_student_tone1:":{"sn":":woman_student_tone1:","cp":"1f469-1f3fb-200d-1f393","sns":[":woman_student_light_skin_tone:"],"c":"people"},":woman_student_tone2:":{"sn":":woman_student_tone2:","cp":"1f469-1f3fc-200d-1f393","sns":[":woman_student_medium_light_skin_tone:"],"c":"people"},":woman_student_tone3:":{"sn":":woman_student_tone3:","cp":"1f469-1f3fd-200d-1f393","sns":[":woman_student_medium_skin_tone:"],"c":"people"},":woman_student_tone4:":{"sn":":woman_student_tone4:","cp":"1f469-1f3fe-200d-1f393","sns":[":woman_student_medium_dark_skin_tone:"],"c":"people"},":woman_student_tone5:":{"sn":":woman_student_tone5:","cp":"1f469-1f3ff-200d-1f393","sns":[":woman_student_dark_skin_tone:"],"c":"people"},":woman_teacher:":{"sn":":woman_teacher:","cp":"1f469-200d-1f3eb","sns":[],"c":"people"},":woman_teacher_tone1:":{"sn":":woman_teacher_tone1:","cp":"1f469-1f3fb-200d-1f3eb","sns":[":woman_teacher_light_skin_tone:"],"c":"people"},":woman_teacher_tone2:":{"sn":":woman_teacher_tone2:","cp":"1f469-1f3fc-200d-1f3eb","sns":[":woman_teacher_medium_light_skin_tone:"],"c":"people"},":woman_teacher_tone3:":{"sn":":woman_teacher_tone3:","cp":"1f469-1f3fd-200d-1f3eb","sns":[":woman_teacher_medium_skin_tone:"],"c":"people"},":woman_teacher_tone4:":{"sn":":woman_teacher_tone4:","cp":"1f469-1f3fe-200d-1f3eb","sns":[":woman_teacher_medium_dark_skin_tone:"],"c":"people"},":woman_teacher_tone5:":{"sn":":woman_teacher_tone5:","cp":"1f469-1f3ff-200d-1f3eb","sns":[":woman_teacher_dark_skin_tone:"],"c":"people"},":woman_technologist:":{"sn":":woman_technologist:","cp":"1f469-200d-1f4bb","sns":[],"c":"people"},":woman_technologist_tone1:":{"sn":":woman_technologist_tone1:","cp":"1f469-1f3fb-200d-1f4bb","sns":[":woman_technologist_light_skin_tone:"],"c":"people"},":woman_technologist_tone2:":{"sn":":woman_technologist_tone2:","cp":"1f469-1f3fc-200d-1f4bb","sns":[":woman_technologist_medium_light_skin_tone:"],"c":"people"},":woman_technologist_tone3:":{"sn":":woman_technologist_tone3:","cp":"1f469-1f3fd-200d-1f4bb","sns":[":woman_technologist_medium_skin_tone:"],"c":"people"},":woman_technologist_tone4:":{"sn":":woman_technologist_tone4:","cp":"1f469-1f3fe-200d-1f4bb","sns":[":woman_technologist_medium_dark_skin_tone:"],"c":"people"},":woman_technologist_tone5:":{"sn":":woman_technologist_tone5:","cp":"1f469-1f3ff-200d-1f4bb","sns":[":woman_technologist_dark_skin_tone:"],"c":"people"},":woman_tipping_hand:":{"sn":":woman_tipping_hand:","cp":"1f481-200d-2640-fe0f","sns":[],"c":"people"},":woman_tipping_hand_tone1:":{"sn":":woman_tipping_hand_tone1:","cp":"1f481-1f3fb-200d-2640-fe0f","sns":[":woman_tipping_hand_light_skin_tone:"],"c":"people"},":woman_tipping_hand_tone2:":{"sn":":woman_tipping_hand_tone2:","cp":"1f481-1f3fc-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_light_skin_tone:"],"c":"people"},":woman_tipping_hand_tone3:":{"sn":":woman_tipping_hand_tone3:","cp":"1f481-1f3fd-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_skin_tone:"],"c":"people"},":woman_tipping_hand_tone4:":{"sn":":woman_tipping_hand_tone4:","cp":"1f481-1f3fe-200d-2640-fe0f","sns":[":woman_tipping_hand_medium_dark_skin_tone:"],"c":"people"},":woman_tipping_hand_tone5:":{"sn":":woman_tipping_hand_tone5:","cp":"1f481-1f3ff-200d-2640-fe0f","sns":[":woman_tipping_hand_dark_skin_tone:"],"c":"people"},":woman_tone1:":{"sn":":woman_tone1:","cp":"1f469-1f3fb","sns":[],"c":"people"},":woman_tone2:":{"sn":":woman_tone2:","cp":"1f469-1f3fc","sns":[],"c":"people"},":woman_tone3:":{"sn":":woman_tone3:","cp":"1f469-1f3fd","sns":[],"c":"people"},":woman_tone4:":{"sn":":woman_tone4:","cp":"1f469-1f3fe","sns":[],"c":"people"},":woman_tone5:":{"sn":":woman_tone5:","cp":"1f469-1f3ff","sns":[],"c":"people"},":woman_vampire:":{"sn":":woman_vampire:","cp":"1f9db-200d-2640-fe0f","sns":[],"c":"people"},":woman_vampire_tone1:":{"sn":":woman_vampire_tone1:","cp":"1f9db-1f3fb-200d-2640-fe0f","sns":[":woman_vampire_light_skin_tone:"],"c":"people"},":woman_vampire_tone2:":{"sn":":woman_vampire_tone2:","cp":"1f9db-1f3fc-200d-2640-fe0f","sns":[":woman_vampire_medium_light_skin_tone:"],"c":"people"},":woman_vampire_tone3:":{"sn":":woman_vampire_tone3:","cp":"1f9db-1f3fd-200d-2640-fe0f","sns":[":woman_vampire_medium_skin_tone:"],"c":"people"},":woman_vampire_tone4:":{"sn":":woman_vampire_tone4:","cp":"1f9db-1f3fe-200d-2640-fe0f","sns":[":woman_vampire_medium_dark_skin_tone:"],"c":"people"},":woman_vampire_tone5:":{"sn":":woman_vampire_tone5:","cp":"1f9db-1f3ff-200d-2640-fe0f","sns":[":woman_vampire_dark_skin_tone:"],"c":"people"},":woman_walking:":{"sn":":woman_walking:","cp":"1f6b6-200d-2640-fe0f","sns":[],"c":"people"},":woman_walking_tone1:":{"sn":":woman_walking_tone1:","cp":"1f6b6-1f3fb-200d-2640-fe0f","sns":[":woman_walking_light_skin_tone:"],"c":"people"},":woman_walking_tone2:":{"sn":":woman_walking_tone2:","cp":"1f6b6-1f3fc-200d-2640-fe0f","sns":[":woman_walking_medium_light_skin_tone:"],"c":"people"},":woman_walking_tone3:":{"sn":":woman_walking_tone3:","cp":"1f6b6-1f3fd-200d-2640-fe0f","sns":[":woman_walking_medium_skin_tone:"],"c":"people"},":woman_walking_tone4:":{"sn":":woman_walking_tone4:","cp":"1f6b6-1f3fe-200d-2640-fe0f","sns":[":woman_walking_medium_dark_skin_tone:"],"c":"people"},":woman_walking_tone5:":{"sn":":woman_walking_tone5:","cp":"1f6b6-1f3ff-200d-2640-fe0f","sns":[":woman_walking_dark_skin_tone:"],"c":"people"},":woman_wearing_turban:":{"sn":":woman_wearing_turban:","cp":"1f473-200d-2640-fe0f","sns":[],"c":"people"},":woman_wearing_turban_tone1:":{"sn":":woman_wearing_turban_tone1:","cp":"1f473-1f3fb-200d-2640-fe0f","sns":[":woman_wearing_turban_light_skin_tone:"],"c":"people"},":woman_wearing_turban_tone2:":{"sn":":woman_wearing_turban_tone2:","cp":"1f473-1f3fc-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_light_skin_tone:"],"c":"people"},":woman_wearing_turban_tone3:":{"sn":":woman_wearing_turban_tone3:","cp":"1f473-1f3fd-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_skin_tone:"],"c":"people"},":woman_wearing_turban_tone4:":{"sn":":woman_wearing_turban_tone4:","cp":"1f473-1f3fe-200d-2640-fe0f","sns":[":woman_wearing_turban_medium_dark_skin_tone:"],"c":"people"},":woman_wearing_turban_tone5:":{"sn":":woman_wearing_turban_tone5:","cp":"1f473-1f3ff-200d-2640-fe0f","sns":[":woman_wearing_turban_dark_skin_tone:"],"c":"people"},":woman_with_headscarf:":{"sn":":woman_with_headscarf:","cp":"1f9d5","sns":[],"c":"people"},":woman_with_headscarf_tone1:":{"sn":":woman_with_headscarf_tone1:","cp":"1f9d5-1f3fb","sns":[":woman_with_headscarf_light_skin_tone:"],"c":"people"},":woman_with_headscarf_tone2:":{"sn":":woman_with_headscarf_tone2:","cp":"1f9d5-1f3fc","sns":[":woman_with_headscarf_medium_light_skin_tone:"],"c":"people"},":woman_with_headscarf_tone3:":{"sn":":woman_with_headscarf_tone3:","cp":"1f9d5-1f3fd","sns":[":woman_with_headscarf_medium_skin_tone:"],"c":"people"},":woman_with_headscarf_tone4:":{"sn":":woman_with_headscarf_tone4:","cp":"1f9d5-1f3fe","sns":[":woman_with_headscarf_medium_dark_skin_tone:"],"c":"people"},":woman_with_headscarf_tone5:":{"sn":":woman_with_headscarf_tone5:","cp":"1f9d5-1f3ff","sns":[":woman_with_headscarf_dark_skin_tone:"],"c":"people"},":woman_zombie:":{"sn":":woman_zombie:","cp":"1f9df-200d-2640-fe0f","sns":[],"c":"people"},":women_with_bunny_ears_partying:":{"sn":":women_with_bunny_ears_partying:","cp":"1f46f-200d-2640-fe0f","sns":[],"c":"people"},":zombie:":{"sn":":zombie:","cp":"1f9df","sns":[],"c":"people"}},"activity":{":8ball:":{"sn":":8ball:","cp":"1f3b1","sns":[],"c":"activity"},":art:":{"sn":":art:","cp":"1f3a8","sns":[],"c":"activity"},":badminton:":{"sn":":badminton:","cp":"1f3f8","sns":[],"c":"activity"},":baseball:":{"sn":":baseball:","cp":"26be","sns":[],"c":"activity"},":basketball:":{"sn":":basketball:","cp":"1f3c0","sns":[],"c":"activity"},":bikini:":{"sn":":bikini:","cp":"1f459","sns":[],"c":"activity"},":bow_and_arrow:":{"sn":":bow_and_arrow:","cp":"1f3f9","sns":[":archery:"],"c":"activity"},":bowling:":{"sn":":bowling:","cp":"1f3b3","sns":[],"c":"activity"},":boxing_glove:":{"sn":":boxing_glove:","cp":"1f94a","sns":[":boxing_gloves:"],"c":"activity"},":circus_tent:":{"sn":":circus_tent:","cp":"1f3aa","sns":[],"c":"activity"},":clapper:":{"sn":":clapper:","cp":"1f3ac","sns":[],"c":"activity"},":cricket_game:":{"sn":":cricket_game:","cp":"1f3cf","sns":[":cricket_bat_ball:"],"c":"activity"},":curling_stone:":{"sn":":curling_stone:","cp":"1f94c","sns":[],"c":"activity"},":dart:":{"sn":":dart:","cp":"1f3af","sns":[],"c":"activity"},":drum:":{"sn":":drum:","cp":"1f941","sns":[":drum_with_drumsticks:"],"c":"activity"},":field_hockey:":{"sn":":field_hockey:","cp":"1f3d1","sns":[],"c":"activity"},":first_place:":{"sn":":first_place:","cp":"1f947","sns":[":first_place_medal:"],"c":"activity"},":fishing_pole_and_fish:":{"sn":":fishing_pole_and_fish:","cp":"1f3a3","sns":[],"c":"activity"},":football:":{"sn":":football:","cp":"1f3c8","sns":[],"c":"activity"},":game_die:":{"sn":":game_die:","cp":"1f3b2","sns":[],"c":"activity"},":goal:":{"sn":":goal:","cp":"1f945","sns":[":goal_net:"],"c":"activity"},":golf:":{"sn":":golf:","cp":"26f3","sns":[],"c":"activity"},":guitar:":{"sn":":guitar:","cp":"1f3b8","sns":[],"c":"activity"},":headphones:":{"sn":":headphones:","cp":"1f3a7","sns":[],"c":"activity"},":hockey:":{"sn":":hockey:","cp":"1f3d2","sns":[],"c":"activity"},":horse_racing:":{"sn":":horse_racing:","cp":"1f3c7","sns":[],"c":"activity"},":horse_racing_tone1:":{"sn":":horse_racing_tone1:","cp":"1f3c7-1f3fb","sns":[],"c":"activity"},":horse_racing_tone2:":{"sn":":horse_racing_tone2:","cp":"1f3c7-1f3fc","sns":[],"c":"activity"},":horse_racing_tone3:":{"sn":":horse_racing_tone3:","cp":"1f3c7-1f3fd","sns":[],"c":"activity"},":horse_racing_tone4:":{"sn":":horse_racing_tone4:","cp":"1f3c7-1f3fe","sns":[],"c":"activity"},":horse_racing_tone5:":{"sn":":horse_racing_tone5:","cp":"1f3c7-1f3ff","sns":[],"c":"activity"},":ice_skate:":{"sn":":ice_skate:","cp":"26f8","sns":[],"c":"activity"},":man_biking:":{"sn":":man_biking:","cp":"1f6b4-200d-2642-fe0f","sns":[],"c":"activity"},":man_biking_tone1:":{"sn":":man_biking_tone1:","cp":"1f6b4-1f3fb-200d-2642-fe0f","sns":[":man_biking_light_skin_tone:"],"c":"activity"},":man_biking_tone2:":{"sn":":man_biking_tone2:","cp":"1f6b4-1f3fc-200d-2642-fe0f","sns":[":man_biking_medium_light_skin_tone:"],"c":"activity"},":man_biking_tone3:":{"sn":":man_biking_tone3:","cp":"1f6b4-1f3fd-200d-2642-fe0f","sns":[":man_biking_medium_skin_tone:"],"c":"activity"},":man_biking_tone4:":{"sn":":man_biking_tone4:","cp":"1f6b4-1f3fe-200d-2642-fe0f","sns":[":man_biking_medium_dark_skin_tone:"],"c":"activity"},":man_biking_tone5:":{"sn":":man_biking_tone5:","cp":"1f6b4-1f3ff-200d-2642-fe0f","sns":[":man_biking_dark_skin_tone:"],"c":"activity"},":man_bouncing_ball:":{"sn":":man_bouncing_ball:","cp":"26f9-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_bouncing_ball_tone1:":{"sn":":man_bouncing_ball_tone1:","cp":"26f9-1f3fb-200d-2642-fe0f","sns":[":man_bouncing_ball_light_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone2:":{"sn":":man_bouncing_ball_tone2:","cp":"26f9-1f3fc-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_light_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone3:":{"sn":":man_bouncing_ball_tone3:","cp":"26f9-1f3fd-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone4:":{"sn":":man_bouncing_ball_tone4:","cp":"26f9-1f3fe-200d-2642-fe0f","sns":[":man_bouncing_ball_medium_dark_skin_tone:"],"c":"activity"},":man_bouncing_ball_tone5:":{"sn":":man_bouncing_ball_tone5:","cp":"26f9-1f3ff-200d-2642-fe0f","sns":[":man_bouncing_ball_dark_skin_tone:"],"c":"activity"},":man_cartwheeling:":{"sn":":man_cartwheeling:","cp":"1f938-200d-2642-fe0f","sns":[],"c":"activity"},":man_cartwheeling_tone1:":{"sn":":man_cartwheeling_tone1:","cp":"1f938-1f3fb-200d-2642-fe0f","sns":[":man_cartwheeling_light_skin_tone:"],"c":"activity"},":man_cartwheeling_tone2:":{"sn":":man_cartwheeling_tone2:","cp":"1f938-1f3fc-200d-2642-fe0f","sns":[":man_cartwheeling_medium_light_skin_tone:"],"c":"activity"},":man_cartwheeling_tone3:":{"sn":":man_cartwheeling_tone3:","cp":"1f938-1f3fd-200d-2642-fe0f","sns":[":man_cartwheeling_medium_skin_tone:"],"c":"activity"},":man_cartwheeling_tone4:":{"sn":":man_cartwheeling_tone4:","cp":"1f938-1f3fe-200d-2642-fe0f","sns":[":man_cartwheeling_medium_dark_skin_tone:"],"c":"activity"},":man_cartwheeling_tone5:":{"sn":":man_cartwheeling_tone5:","cp":"1f938-1f3ff-200d-2642-fe0f","sns":[":man_cartwheeling_dark_skin_tone:"],"c":"activity"},":man_climbing:":{"sn":":man_climbing:","cp":"1f9d7-200d-2642-fe0f","sns":[],"c":"activity"},":man_climbing_tone1:":{"sn":":man_climbing_tone1:","cp":"1f9d7-1f3fb-200d-2642-fe0f","sns":[":man_climbing_light_skin_tone:"],"c":"activity"},":man_climbing_tone2:":{"sn":":man_climbing_tone2:","cp":"1f9d7-1f3fc-200d-2642-fe0f","sns":[":man_climbing_medium_light_skin_tone:"],"c":"activity"},":man_climbing_tone3:":{"sn":":man_climbing_tone3:","cp":"1f9d7-1f3fd-200d-2642-fe0f","sns":[":man_climbing_medium_skin_tone:"],"c":"activity"},":man_climbing_tone4:":{"sn":":man_climbing_tone4:","cp":"1f9d7-1f3fe-200d-2642-fe0f","sns":[":man_climbing_medium_dark_skin_tone:"],"c":"activity"},":man_climbing_tone5:":{"sn":":man_climbing_tone5:","cp":"1f9d7-1f3ff-200d-2642-fe0f","sns":[":man_climbing_dark_skin_tone:"],"c":"activity"},":man_golfing:":{"sn":":man_golfing:","cp":"1f3cc-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_golfing_tone1:":{"sn":":man_golfing_tone1:","cp":"1f3cc-1f3fb-200d-2642-fe0f","sns":[":man_golfing_light_skin_tone:"],"c":"activity"},":man_golfing_tone2:":{"sn":":man_golfing_tone2:","cp":"1f3cc-1f3fc-200d-2642-fe0f","sns":[":man_golfing_medium_light_skin_tone:"],"c":"activity"},":man_golfing_tone3:":{"sn":":man_golfing_tone3:","cp":"1f3cc-1f3fd-200d-2642-fe0f","sns":[":man_golfing_medium_skin_tone:"],"c":"activity"},":man_golfing_tone4:":{"sn":":man_golfing_tone4:","cp":"1f3cc-1f3fe-200d-2642-fe0f","sns":[":man_golfing_medium_dark_skin_tone:"],"c":"activity"},":man_golfing_tone5:":{"sn":":man_golfing_tone5:","cp":"1f3cc-1f3ff-200d-2642-fe0f","sns":[":man_golfing_dark_skin_tone:"],"c":"activity"},":man_in_lotus_position:":{"sn":":man_in_lotus_position:","cp":"1f9d8-200d-2642-fe0f","sns":[],"c":"activity"},":man_in_lotus_position_tone1:":{"sn":":man_in_lotus_position_tone1:","cp":"1f9d8-1f3fb-200d-2642-fe0f","sns":[":man_in_lotus_position_light_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone2:":{"sn":":man_in_lotus_position_tone2:","cp":"1f9d8-1f3fc-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone3:":{"sn":":man_in_lotus_position_tone3:","cp":"1f9d8-1f3fd-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone4:":{"sn":":man_in_lotus_position_tone4:","cp":"1f9d8-1f3fe-200d-2642-fe0f","sns":[":man_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":man_in_lotus_position_tone5:":{"sn":":man_in_lotus_position_tone5:","cp":"1f9d8-1f3ff-200d-2642-fe0f","sns":[":man_in_lotus_position_dark_skin_tone:"],"c":"activity"},":man_juggling:":{"sn":":man_juggling:","cp":"1f939-200d-2642-fe0f","sns":[],"c":"activity"},":man_juggling_tone1:":{"sn":":man_juggling_tone1:","cp":"1f939-1f3fb-200d-2642-fe0f","sns":[":man_juggling_light_skin_tone:"],"c":"activity"},":man_juggling_tone2:":{"sn":":man_juggling_tone2:","cp":"1f939-1f3fc-200d-2642-fe0f","sns":[":man_juggling_medium_light_skin_tone:"],"c":"activity"},":man_juggling_tone3:":{"sn":":man_juggling_tone3:","cp":"1f939-1f3fd-200d-2642-fe0f","sns":[":man_juggling_medium_skin_tone:"],"c":"activity"},":man_juggling_tone4:":{"sn":":man_juggling_tone4:","cp":"1f939-1f3fe-200d-2642-fe0f","sns":[":man_juggling_medium_dark_skin_tone:"],"c":"activity"},":man_juggling_tone5:":{"sn":":man_juggling_tone5:","cp":"1f939-1f3ff-200d-2642-fe0f","sns":[":man_juggling_dark_skin_tone:"],"c":"activity"},":man_lifting_weights:":{"sn":":man_lifting_weights:","cp":"1f3cb-fe0f-200d-2642-fe0f","sns":[],"c":"activity"},":man_lifting_weights_tone1:":{"sn":":man_lifting_weights_tone1:","cp":"1f3cb-1f3fb-200d-2642-fe0f","sns":[":man_lifting_weights_light_skin_tone:"],"c":"activity"},":man_lifting_weights_tone2:":{"sn":":man_lifting_weights_tone2:","cp":"1f3cb-1f3fc-200d-2642-fe0f","sns":[":man_lifting_weights_medium_light_skin_tone:"],"c":"activity"},":man_lifting_weights_tone3:":{"sn":":man_lifting_weights_tone3:","cp":"1f3cb-1f3fd-200d-2642-fe0f","sns":[":man_lifting_weights_medium_skin_tone:"],"c":"activity"},":man_lifting_weights_tone4:":{"sn":":man_lifting_weights_tone4:","cp":"1f3cb-1f3fe-200d-2642-fe0f","sns":[":man_lifting_weights_medium_dark_skin_tone:"],"c":"activity"},":man_lifting_weights_tone5:":{"sn":":man_lifting_weights_tone5:","cp":"1f3cb-1f3ff-200d-2642-fe0f","sns":[":man_lifting_weights_dark_skin_tone:"],"c":"activity"},":man_mountain_biking:":{"sn":":man_mountain_biking:","cp":"1f6b5-200d-2642-fe0f","sns":[],"c":"activity"},":man_mountain_biking_tone1:":{"sn":":man_mountain_biking_tone1:","cp":"1f6b5-1f3fb-200d-2642-fe0f","sns":[":man_mountain_biking_light_skin_tone:"],"c":"activity"},":man_mountain_biking_tone2:":{"sn":":man_mountain_biking_tone2:","cp":"1f6b5-1f3fc-200d-2642-fe0f","sns":[":man_mountain_biking_medium_light_skin_tone:"],"c":"activity"},":man_mountain_biking_tone3:":{"sn":":man_mountain_biking_tone3:","cp":"1f6b5-1f3fd-200d-2642-fe0f","sns":[":man_mountain_biking_medium_skin_tone:"],"c":"activity"},":man_mountain_biking_tone4:":{"sn":":man_mountain_biking_tone4:","cp":"1f6b5-1f3fe-200d-2642-fe0f","sns":[":man_mountain_biking_medium_dark_skin_tone:"],"c":"activity"},":man_mountain_biking_tone5:":{"sn":":man_mountain_biking_tone5:","cp":"1f6b5-1f3ff-200d-2642-fe0f","sns":[":man_mountain_biking_dark_skin_tone:"],"c":"activity"},":man_playing_handball:":{"sn":":man_playing_handball:","cp":"1f93e-200d-2642-fe0f","sns":[],"c":"activity"},":man_playing_handball_tone1:":{"sn":":man_playing_handball_tone1:","cp":"1f93e-1f3fb-200d-2642-fe0f","sns":[":man_playing_handball_light_skin_tone:"],"c":"activity"},":man_playing_handball_tone2:":{"sn":":man_playing_handball_tone2:","cp":"1f93e-1f3fc-200d-2642-fe0f","sns":[":man_playing_handball_medium_light_skin_tone:"],"c":"activity"},":man_playing_handball_tone3:":{"sn":":man_playing_handball_tone3:","cp":"1f93e-1f3fd-200d-2642-fe0f","sns":[":man_playing_handball_medium_skin_tone:"],"c":"activity"},":man_playing_handball_tone4:":{"sn":":man_playing_handball_tone4:","cp":"1f93e-1f3fe-200d-2642-fe0f","sns":[":man_playing_handball_medium_dark_skin_tone:"],"c":"activity"},":man_playing_handball_tone5:":{"sn":":man_playing_handball_tone5:","cp":"1f93e-1f3ff-200d-2642-fe0f","sns":[":man_playing_handball_dark_skin_tone:"],"c":"activity"},":man_playing_water_polo:":{"sn":":man_playing_water_polo:","cp":"1f93d-200d-2642-fe0f","sns":[],"c":"activity"},":man_playing_water_polo_tone1:":{"sn":":man_playing_water_polo_tone1:","cp":"1f93d-1f3fb-200d-2642-fe0f","sns":[":man_playing_water_polo_light_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone2:":{"sn":":man_playing_water_polo_tone2:","cp":"1f93d-1f3fc-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_light_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone3:":{"sn":":man_playing_water_polo_tone3:","cp":"1f93d-1f3fd-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone4:":{"sn":":man_playing_water_polo_tone4:","cp":"1f93d-1f3fe-200d-2642-fe0f","sns":[":man_playing_water_polo_medium_dark_skin_tone:"],"c":"activity"},":man_playing_water_polo_tone5:":{"sn":":man_playing_water_polo_tone5:","cp":"1f93d-1f3ff-200d-2642-fe0f","sns":[":man_playing_water_polo_dark_skin_tone:"],"c":"activity"},":man_rowing_boat:":{"sn":":man_rowing_boat:","cp":"1f6a3-200d-2642-fe0f","sns":[],"c":"activity"},":man_rowing_boat_tone1:":{"sn":":man_rowing_boat_tone1:","cp":"1f6a3-1f3fb-200d-2642-fe0f","sns":[":man_rowing_boat_light_skin_tone:"],"c":"activity"},":man_rowing_boat_tone2:":{"sn":":man_rowing_boat_tone2:","cp":"1f6a3-1f3fc-200d-2642-fe0f","sns":[":man_rowing_boat_medium_light_skin_tone:"],"c":"activity"},":man_rowing_boat_tone3:":{"sn":":man_rowing_boat_tone3:","cp":"1f6a3-1f3fd-200d-2642-fe0f","sns":[":man_rowing_boat_medium_skin_tone:"],"c":"activity"},":man_rowing_boat_tone4:":{"sn":":man_rowing_boat_tone4:","cp":"1f6a3-1f3fe-200d-2642-fe0f","sns":[":man_rowing_boat_medium_dark_skin_tone:"],"c":"activity"},":man_rowing_boat_tone5:":{"sn":":man_rowing_boat_tone5:","cp":"1f6a3-1f3ff-200d-2642-fe0f","sns":[":man_rowing_boat_dark_skin_tone:"],"c":"activity"},":man_surfing:":{"sn":":man_surfing:","cp":"1f3c4-200d-2642-fe0f","sns":[],"c":"activity"},":man_surfing_tone1:":{"sn":":man_surfing_tone1:","cp":"1f3c4-1f3fb-200d-2642-fe0f","sns":[":man_surfing_light_skin_tone:"],"c":"activity"},":man_surfing_tone2:":{"sn":":man_surfing_tone2:","cp":"1f3c4-1f3fc-200d-2642-fe0f","sns":[":man_surfing_medium_light_skin_tone:"],"c":"activity"},":man_surfing_tone3:":{"sn":":man_surfing_tone3:","cp":"1f3c4-1f3fd-200d-2642-fe0f","sns":[":man_surfing_medium_skin_tone:"],"c":"activity"},":man_surfing_tone4:":{"sn":":man_surfing_tone4:","cp":"1f3c4-1f3fe-200d-2642-fe0f","sns":[":man_surfing_medium_dark_skin_tone:"],"c":"activity"},":man_surfing_tone5:":{"sn":":man_surfing_tone5:","cp":"1f3c4-1f3ff-200d-2642-fe0f","sns":[":man_surfing_dark_skin_tone:"],"c":"activity"},":man_swimming:":{"sn":":man_swimming:","cp":"1f3ca-200d-2642-fe0f","sns":[],"c":"activity"},":man_swimming_tone1:":{"sn":":man_swimming_tone1:","cp":"1f3ca-1f3fb-200d-2642-fe0f","sns":[":man_swimming_light_skin_tone:"],"c":"activity"},":man_swimming_tone2:":{"sn":":man_swimming_tone2:","cp":"1f3ca-1f3fc-200d-2642-fe0f","sns":[":man_swimming_medium_light_skin_tone:"],"c":"activity"},":man_swimming_tone3:":{"sn":":man_swimming_tone3:","cp":"1f3ca-1f3fd-200d-2642-fe0f","sns":[":man_swimming_medium_skin_tone:"],"c":"activity"},":man_swimming_tone4:":{"sn":":man_swimming_tone4:","cp":"1f3ca-1f3fe-200d-2642-fe0f","sns":[":man_swimming_medium_dark_skin_tone:"],"c":"activity"},":man_swimming_tone5:":{"sn":":man_swimming_tone5:","cp":"1f3ca-1f3ff-200d-2642-fe0f","sns":[":man_swimming_dark_skin_tone:"],"c":"activity"},":martial_arts_uniform:":{"sn":":martial_arts_uniform:","cp":"1f94b","sns":[":karate_uniform:"],"c":"activity"},":medal:":{"sn":":medal:","cp":"1f3c5","sns":[":sports_medal:"],"c":"activity"},":men_wrestling:":{"sn":":men_wrestling:","cp":"1f93c-200d-2642-fe0f","sns":[],"c":"activity"},":microphone:":{"sn":":microphone:","cp":"1f3a4","sns":[],"c":"activity"},":military_medal:":{"sn":":military_medal:","cp":"1f396","sns":[],"c":"activity"},":musical_keyboard:":{"sn":":musical_keyboard:","cp":"1f3b9","sns":[],"c":"activity"},":musical_score:":{"sn":":musical_score:","cp":"1f3bc","sns":[],"c":"activity"},":people_wrestling:":{"sn":":people_wrestling:","cp":"1f93c","sns":[":wrestlers:",":wrestling:"],"c":"activity"},":performing_arts:":{"sn":":performing_arts:","cp":"1f3ad","sns":[],"c":"activity"},":person_biking:":{"sn":":person_biking:","cp":"1f6b4","sns":[":bicyclist:"],"c":"activity"},":person_biking_tone1:":{"sn":":person_biking_tone1:","cp":"1f6b4-1f3fb","sns":[":bicyclist_tone1:"],"c":"activity"},":person_biking_tone2:":{"sn":":person_biking_tone2:","cp":"1f6b4-1f3fc","sns":[":bicyclist_tone2:"],"c":"activity"},":person_biking_tone3:":{"sn":":person_biking_tone3:","cp":"1f6b4-1f3fd","sns":[":bicyclist_tone3:"],"c":"activity"},":person_biking_tone4:":{"sn":":person_biking_tone4:","cp":"1f6b4-1f3fe","sns":[":bicyclist_tone4:"],"c":"activity"},":person_biking_tone5:":{"sn":":person_biking_tone5:","cp":"1f6b4-1f3ff","sns":[":bicyclist_tone5:"],"c":"activity"},":person_bouncing_ball:":{"sn":":person_bouncing_ball:","cp":"26f9","sns":[":basketball_player:",":person_with_ball:"],"c":"activity"},":person_bouncing_ball_tone1:":{"sn":":person_bouncing_ball_tone1:","cp":"26f9-1f3fb","sns":[":basketball_player_tone1:",":person_with_ball_tone1:"],"c":"activity"},":person_bouncing_ball_tone2:":{"sn":":person_bouncing_ball_tone2:","cp":"26f9-1f3fc","sns":[":basketball_player_tone2:",":person_with_ball_tone2:"],"c":"activity"},":person_bouncing_ball_tone3:":{"sn":":person_bouncing_ball_tone3:","cp":"26f9-1f3fd","sns":[":basketball_player_tone3:",":person_with_ball_tone3:"],"c":"activity"},":person_bouncing_ball_tone4:":{"sn":":person_bouncing_ball_tone4:","cp":"26f9-1f3fe","sns":[":basketball_player_tone4:",":person_with_ball_tone4:"],"c":"activity"},":person_bouncing_ball_tone5:":{"sn":":person_bouncing_ball_tone5:","cp":"26f9-1f3ff","sns":[":basketball_player_tone5:",":person_with_ball_tone5:"],"c":"activity"},":person_climbing:":{"sn":":person_climbing:","cp":"1f9d7","sns":[],"c":"activity"},":person_climbing_tone1:":{"sn":":person_climbing_tone1:","cp":"1f9d7-1f3fb","sns":[":person_climbing_light_skin_tone:"],"c":"activity"},":person_climbing_tone2:":{"sn":":person_climbing_tone2:","cp":"1f9d7-1f3fc","sns":[":person_climbing_medium_light_skin_tone:"],"c":"activity"},":person_climbing_tone3:":{"sn":":person_climbing_tone3:","cp":"1f9d7-1f3fd","sns":[":person_climbing_medium_skin_tone:"],"c":"activity"},":person_climbing_tone4:":{"sn":":person_climbing_tone4:","cp":"1f9d7-1f3fe","sns":[":person_climbing_medium_dark_skin_tone:"],"c":"activity"},":person_climbing_tone5:":{"sn":":person_climbing_tone5:","cp":"1f9d7-1f3ff","sns":[":person_climbing_dark_skin_tone:"],"c":"activity"},":person_doing_cartwheel:":{"sn":":person_doing_cartwheel:","cp":"1f938","sns":[":cartwheel:"],"c":"activity"},":person_doing_cartwheel_tone1:":{"sn":":person_doing_cartwheel_tone1:","cp":"1f938-1f3fb","sns":[":cartwheel_tone1:"],"c":"activity"},":person_doing_cartwheel_tone2:":{"sn":":person_doing_cartwheel_tone2:","cp":"1f938-1f3fc","sns":[":cartwheel_tone2:"],"c":"activity"},":person_doing_cartwheel_tone3:":{"sn":":person_doing_cartwheel_tone3:","cp":"1f938-1f3fd","sns":[":cartwheel_tone3:"],"c":"activity"},":person_doing_cartwheel_tone4:":{"sn":":person_doing_cartwheel_tone4:","cp":"1f938-1f3fe","sns":[":cartwheel_tone4:"],"c":"activity"},":person_doing_cartwheel_tone5:":{"sn":":person_doing_cartwheel_tone5:","cp":"1f938-1f3ff","sns":[":cartwheel_tone5:"],"c":"activity"},":person_fencing:":{"sn":":person_fencing:","cp":"1f93a","sns":[":fencer:",":fencing:"],"c":"activity"},":person_golfing:":{"sn":":person_golfing:","cp":"1f3cc","sns":[":golfer:"],"c":"activity"},":person_golfing_tone1:":{"sn":":person_golfing_tone1:","cp":"1f3cc-1f3fb","sns":[":person_golfing_light_skin_tone:"],"c":"activity"},":person_golfing_tone2:":{"sn":":person_golfing_tone2:","cp":"1f3cc-1f3fc","sns":[":person_golfing_medium_light_skin_tone:"],"c":"activity"},":person_golfing_tone3:":{"sn":":person_golfing_tone3:","cp":"1f3cc-1f3fd","sns":[":person_golfing_medium_skin_tone:"],"c":"activity"},":person_golfing_tone4:":{"sn":":person_golfing_tone4:","cp":"1f3cc-1f3fe","sns":[":person_golfing_medium_dark_skin_tone:"],"c":"activity"},":person_golfing_tone5:":{"sn":":person_golfing_tone5:","cp":"1f3cc-1f3ff","sns":[":person_golfing_dark_skin_tone:"],"c":"activity"},":person_in_lotus_position:":{"sn":":person_in_lotus_position:","cp":"1f9d8","sns":[],"c":"activity"},":person_in_lotus_position_tone1:":{"sn":":person_in_lotus_position_tone1:","cp":"1f9d8-1f3fb","sns":[":person_in_lotus_position_light_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone2:":{"sn":":person_in_lotus_position_tone2:","cp":"1f9d8-1f3fc","sns":[":person_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone3:":{"sn":":person_in_lotus_position_tone3:","cp":"1f9d8-1f3fd","sns":[":person_in_lotus_position_medium_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone4:":{"sn":":person_in_lotus_position_tone4:","cp":"1f9d8-1f3fe","sns":[":person_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":person_in_lotus_position_tone5:":{"sn":":person_in_lotus_position_tone5:","cp":"1f9d8-1f3ff","sns":[":person_in_lotus_position_dark_skin_tone:"],"c":"activity"},":person_juggling:":{"sn":":person_juggling:","cp":"1f939","sns":[":juggling:",":juggler:"],"c":"activity"},":person_juggling_tone1:":{"sn":":person_juggling_tone1:","cp":"1f939-1f3fb","sns":[":juggling_tone1:",":juggler_tone1:"],"c":"activity"},":person_juggling_tone2:":{"sn":":person_juggling_tone2:","cp":"1f939-1f3fc","sns":[":juggling_tone2:",":juggler_tone2:"],"c":"activity"},":person_juggling_tone3:":{"sn":":person_juggling_tone3:","cp":"1f939-1f3fd","sns":[":juggling_tone3:",":juggler_tone3:"],"c":"activity"},":person_juggling_tone4:":{"sn":":person_juggling_tone4:","cp":"1f939-1f3fe","sns":[":juggling_tone4:",":juggler_tone4:"],"c":"activity"},":person_juggling_tone5:":{"sn":":person_juggling_tone5:","cp":"1f939-1f3ff","sns":[":juggling_tone5:",":juggler_tone5:"],"c":"activity"},":person_lifting_weights:":{"sn":":person_lifting_weights:","cp":"1f3cb","sns":[":lifter:",":weight_lifter:"],"c":"activity"},":person_lifting_weights_tone1:":{"sn":":person_lifting_weights_tone1:","cp":"1f3cb-1f3fb","sns":[":lifter_tone1:",":weight_lifter_tone1:"],"c":"activity"},":person_lifting_weights_tone2:":{"sn":":person_lifting_weights_tone2:","cp":"1f3cb-1f3fc","sns":[":lifter_tone2:",":weight_lifter_tone2:"],"c":"activity"},":person_lifting_weights_tone3:":{"sn":":person_lifting_weights_tone3:","cp":"1f3cb-1f3fd","sns":[":lifter_tone3:",":weight_lifter_tone3:"],"c":"activity"},":person_lifting_weights_tone4:":{"sn":":person_lifting_weights_tone4:","cp":"1f3cb-1f3fe","sns":[":lifter_tone4:",":weight_lifter_tone4:"],"c":"activity"},":person_lifting_weights_tone5:":{"sn":":person_lifting_weights_tone5:","cp":"1f3cb-1f3ff","sns":[":lifter_tone5:",":weight_lifter_tone5:"],"c":"activity"},":person_mountain_biking:":{"sn":":person_mountain_biking:","cp":"1f6b5","sns":[":mountain_bicyclist:"],"c":"activity"},":person_mountain_biking_tone1:":{"sn":":person_mountain_biking_tone1:","cp":"1f6b5-1f3fb","sns":[":mountain_bicyclist_tone1:"],"c":"activity"},":person_mountain_biking_tone2:":{"sn":":person_mountain_biking_tone2:","cp":"1f6b5-1f3fc","sns":[":mountain_bicyclist_tone2:"],"c":"activity"},":person_mountain_biking_tone3:":{"sn":":person_mountain_biking_tone3:","cp":"1f6b5-1f3fd","sns":[":mountain_bicyclist_tone3:"],"c":"activity"},":person_mountain_biking_tone4:":{"sn":":person_mountain_biking_tone4:","cp":"1f6b5-1f3fe","sns":[":mountain_bicyclist_tone4:"],"c":"activity"},":person_mountain_biking_tone5:":{"sn":":person_mountain_biking_tone5:","cp":"1f6b5-1f3ff","sns":[":mountain_bicyclist_tone5:"],"c":"activity"},":person_playing_handball:":{"sn":":person_playing_handball:","cp":"1f93e","sns":[":handball:"],"c":"activity"},":person_playing_handball_tone1:":{"sn":":person_playing_handball_tone1:","cp":"1f93e-1f3fb","sns":[":handball_tone1:"],"c":"activity"},":person_playing_handball_tone2:":{"sn":":person_playing_handball_tone2:","cp":"1f93e-1f3fc","sns":[":handball_tone2:"],"c":"activity"},":person_playing_handball_tone3:":{"sn":":person_playing_handball_tone3:","cp":"1f93e-1f3fd","sns":[":handball_tone3:"],"c":"activity"},":person_playing_handball_tone4:":{"sn":":person_playing_handball_tone4:","cp":"1f93e-1f3fe","sns":[":handball_tone4:"],"c":"activity"},":person_playing_handball_tone5:":{"sn":":person_playing_handball_tone5:","cp":"1f93e-1f3ff","sns":[":handball_tone5:"],"c":"activity"},":person_playing_water_polo:":{"sn":":person_playing_water_polo:","cp":"1f93d","sns":[":water_polo:"],"c":"activity"},":person_playing_water_polo_tone1:":{"sn":":person_playing_water_polo_tone1:","cp":"1f93d-1f3fb","sns":[":water_polo_tone1:"],"c":"activity"},":person_playing_water_polo_tone2:":{"sn":":person_playing_water_polo_tone2:","cp":"1f93d-1f3fc","sns":[":water_polo_tone2:"],"c":"activity"},":person_playing_water_polo_tone3:":{"sn":":person_playing_water_polo_tone3:","cp":"1f93d-1f3fd","sns":[":water_polo_tone3:"],"c":"activity"},":person_playing_water_polo_tone4:":{"sn":":person_playing_water_polo_tone4:","cp":"1f93d-1f3fe","sns":[":water_polo_tone4:"],"c":"activity"},":person_playing_water_polo_tone5:":{"sn":":person_playing_water_polo_tone5:","cp":"1f93d-1f3ff","sns":[":water_polo_tone5:"],"c":"activity"},":person_rowing_boat:":{"sn":":person_rowing_boat:","cp":"1f6a3","sns":[":rowboat:"],"c":"activity"},":person_rowing_boat_tone1:":{"sn":":person_rowing_boat_tone1:","cp":"1f6a3-1f3fb","sns":[":rowboat_tone1:"],"c":"activity"},":person_rowing_boat_tone2:":{"sn":":person_rowing_boat_tone2:","cp":"1f6a3-1f3fc","sns":[":rowboat_tone2:"],"c":"activity"},":person_rowing_boat_tone3:":{"sn":":person_rowing_boat_tone3:","cp":"1f6a3-1f3fd","sns":[":rowboat_tone3:"],"c":"activity"},":person_rowing_boat_tone4:":{"sn":":person_rowing_boat_tone4:","cp":"1f6a3-1f3fe","sns":[":rowboat_tone4:"],"c":"activity"},":person_rowing_boat_tone5:":{"sn":":person_rowing_boat_tone5:","cp":"1f6a3-1f3ff","sns":[":rowboat_tone5:"],"c":"activity"},":person_surfing:":{"sn":":person_surfing:","cp":"1f3c4","sns":[":surfer:"],"c":"activity"},":person_surfing_tone1:":{"sn":":person_surfing_tone1:","cp":"1f3c4-1f3fb","sns":[":surfer_tone1:"],"c":"activity"},":person_surfing_tone2:":{"sn":":person_surfing_tone2:","cp":"1f3c4-1f3fc","sns":[":surfer_tone2:"],"c":"activity"},":person_surfing_tone3:":{"sn":":person_surfing_tone3:","cp":"1f3c4-1f3fd","sns":[":surfer_tone3:"],"c":"activity"},":person_surfing_tone4:":{"sn":":person_surfing_tone4:","cp":"1f3c4-1f3fe","sns":[":surfer_tone4:"],"c":"activity"},":person_surfing_tone5:":{"sn":":person_surfing_tone5:","cp":"1f3c4-1f3ff","sns":[":surfer_tone5:"],"c":"activity"},":person_swimming:":{"sn":":person_swimming:","cp":"1f3ca","sns":[":swimmer:"],"c":"activity"},":person_swimming_tone1:":{"sn":":person_swimming_tone1:","cp":"1f3ca-1f3fb","sns":[":swimmer_tone1:"],"c":"activity"},":person_swimming_tone2:":{"sn":":person_swimming_tone2:","cp":"1f3ca-1f3fc","sns":[":swimmer_tone2:"],"c":"activity"},":person_swimming_tone3:":{"sn":":person_swimming_tone3:","cp":"1f3ca-1f3fd","sns":[":swimmer_tone3:"],"c":"activity"},":person_swimming_tone4:":{"sn":":person_swimming_tone4:","cp":"1f3ca-1f3fe","sns":[":swimmer_tone4:"],"c":"activity"},":person_swimming_tone5:":{"sn":":person_swimming_tone5:","cp":"1f3ca-1f3ff","sns":[":swimmer_tone5:"],"c":"activity"},":ping_pong:":{"sn":":ping_pong:","cp":"1f3d3","sns":[":table_tennis:"],"c":"activity"},":reminder_ribbon:":{"sn":":reminder_ribbon:","cp":"1f397","sns":[],"c":"activity"},":rosette:":{"sn":":rosette:","cp":"1f3f5","sns":[],"c":"activity"},":rugby_football:":{"sn":":rugby_football:","cp":"1f3c9","sns":[],"c":"activity"},":running_shirt_with_sash:":{"sn":":running_shirt_with_sash:","cp":"1f3bd","sns":[],"c":"activity"},":saxophone:":{"sn":":saxophone:","cp":"1f3b7","sns":[],"c":"activity"},":second_place:":{"sn":":second_place:","cp":"1f948","sns":[":second_place_medal:"],"c":"activity"},":ski:":{"sn":":ski:","cp":"1f3bf","sns":[],"c":"activity"},":skier:":{"sn":":skier:","cp":"26f7","sns":[],"c":"activity"},":sled:":{"sn":":sled:","cp":"1f6f7","sns":[],"c":"activity"},":slot_machine:":{"sn":":slot_machine:","cp":"1f3b0","sns":[],"c":"activity"},":snowboarder:":{"sn":":snowboarder:","cp":"1f3c2","sns":[],"c":"activity"},":snowboarder_tone1:":{"sn":":snowboarder_tone1:","cp":"1f3c2-1f3fb","sns":[":snowboarder_light_skin_tone:"],"c":"activity"},":snowboarder_tone2:":{"sn":":snowboarder_tone2:","cp":"1f3c2-1f3fc","sns":[":snowboarder_medium_light_skin_tone:"],"c":"activity"},":snowboarder_tone3:":{"sn":":snowboarder_tone3:","cp":"1f3c2-1f3fd","sns":[":snowboarder_medium_skin_tone:"],"c":"activity"},":snowboarder_tone4:":{"sn":":snowboarder_tone4:","cp":"1f3c2-1f3fe","sns":[":snowboarder_medium_dark_skin_tone:"],"c":"activity"},":snowboarder_tone5:":{"sn":":snowboarder_tone5:","cp":"1f3c2-1f3ff","sns":[":snowboarder_dark_skin_tone:"],"c":"activity"},":soccer:":{"sn":":soccer:","cp":"26bd","sns":[],"c":"activity"},":tennis:":{"sn":":tennis:","cp":"1f3be","sns":[],"c":"activity"},":third_place:":{"sn":":third_place:","cp":"1f949","sns":[":third_place_medal:"],"c":"activity"},":ticket:":{"sn":":ticket:","cp":"1f3ab","sns":[],"c":"activity"},":tickets:":{"sn":":tickets:","cp":"1f39f","sns":[":admission_tickets:"],"c":"activity"},":trophy:":{"sn":":trophy:","cp":"1f3c6","sns":[],"c":"activity"},":trumpet:":{"sn":":trumpet:","cp":"1f3ba","sns":[],"c":"activity"},":video_game:":{"sn":":video_game:","cp":"1f3ae","sns":[],"c":"activity"},":violin:":{"sn":":violin:","cp":"1f3bb","sns":[],"c":"activity"},":volleyball:":{"sn":":volleyball:","cp":"1f3d0","sns":[],"c":"activity"},":woman_biking:":{"sn":":woman_biking:","cp":"1f6b4-200d-2640-fe0f","sns":[],"c":"activity"},":woman_biking_tone1:":{"sn":":woman_biking_tone1:","cp":"1f6b4-1f3fb-200d-2640-fe0f","sns":[":woman_biking_light_skin_tone:"],"c":"activity"},":woman_biking_tone2:":{"sn":":woman_biking_tone2:","cp":"1f6b4-1f3fc-200d-2640-fe0f","sns":[":woman_biking_medium_light_skin_tone:"],"c":"activity"},":woman_biking_tone3:":{"sn":":woman_biking_tone3:","cp":"1f6b4-1f3fd-200d-2640-fe0f","sns":[":woman_biking_medium_skin_tone:"],"c":"activity"},":woman_biking_tone4:":{"sn":":woman_biking_tone4:","cp":"1f6b4-1f3fe-200d-2640-fe0f","sns":[":woman_biking_medium_dark_skin_tone:"],"c":"activity"},":woman_biking_tone5:":{"sn":":woman_biking_tone5:","cp":"1f6b4-1f3ff-200d-2640-fe0f","sns":[":woman_biking_dark_skin_tone:"],"c":"activity"},":woman_bouncing_ball:":{"sn":":woman_bouncing_ball:","cp":"26f9-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_bouncing_ball_tone1:":{"sn":":woman_bouncing_ball_tone1:","cp":"26f9-1f3fb-200d-2640-fe0f","sns":[":woman_bouncing_ball_light_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone2:":{"sn":":woman_bouncing_ball_tone2:","cp":"26f9-1f3fc-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_light_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone3:":{"sn":":woman_bouncing_ball_tone3:","cp":"26f9-1f3fd-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone4:":{"sn":":woman_bouncing_ball_tone4:","cp":"26f9-1f3fe-200d-2640-fe0f","sns":[":woman_bouncing_ball_medium_dark_skin_tone:"],"c":"activity"},":woman_bouncing_ball_tone5:":{"sn":":woman_bouncing_ball_tone5:","cp":"26f9-1f3ff-200d-2640-fe0f","sns":[":woman_bouncing_ball_dark_skin_tone:"],"c":"activity"},":woman_cartwheeling:":{"sn":":woman_cartwheeling:","cp":"1f938-200d-2640-fe0f","sns":[],"c":"activity"},":woman_cartwheeling_tone1:":{"sn":":woman_cartwheeling_tone1:","cp":"1f938-1f3fb-200d-2640-fe0f","sns":[":woman_cartwheeling_light_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone2:":{"sn":":woman_cartwheeling_tone2:","cp":"1f938-1f3fc-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_light_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone3:":{"sn":":woman_cartwheeling_tone3:","cp":"1f938-1f3fd-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone4:":{"sn":":woman_cartwheeling_tone4:","cp":"1f938-1f3fe-200d-2640-fe0f","sns":[":woman_cartwheeling_medium_dark_skin_tone:"],"c":"activity"},":woman_cartwheeling_tone5:":{"sn":":woman_cartwheeling_tone5:","cp":"1f938-1f3ff-200d-2640-fe0f","sns":[":woman_cartwheeling_dark_skin_tone:"],"c":"activity"},":woman_climbing:":{"sn":":woman_climbing:","cp":"1f9d7-200d-2640-fe0f","sns":[],"c":"activity"},":woman_climbing_tone1:":{"sn":":woman_climbing_tone1:","cp":"1f9d7-1f3fb-200d-2640-fe0f","sns":[":woman_climbing_light_skin_tone:"],"c":"activity"},":woman_climbing_tone2:":{"sn":":woman_climbing_tone2:","cp":"1f9d7-1f3fc-200d-2640-fe0f","sns":[":woman_climbing_medium_light_skin_tone:"],"c":"activity"},":woman_climbing_tone3:":{"sn":":woman_climbing_tone3:","cp":"1f9d7-1f3fd-200d-2640-fe0f","sns":[":woman_climbing_medium_skin_tone:"],"c":"activity"},":woman_climbing_tone4:":{"sn":":woman_climbing_tone4:","cp":"1f9d7-1f3fe-200d-2640-fe0f","sns":[":woman_climbing_medium_dark_skin_tone:"],"c":"activity"},":woman_climbing_tone5:":{"sn":":woman_climbing_tone5:","cp":"1f9d7-1f3ff-200d-2640-fe0f","sns":[":woman_climbing_dark_skin_tone:"],"c":"activity"},":woman_golfing:":{"sn":":woman_golfing:","cp":"1f3cc-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_golfing_tone1:":{"sn":":woman_golfing_tone1:","cp":"1f3cc-1f3fb-200d-2640-fe0f","sns":[":woman_golfing_light_skin_tone:"],"c":"activity"},":woman_golfing_tone2:":{"sn":":woman_golfing_tone2:","cp":"1f3cc-1f3fc-200d-2640-fe0f","sns":[":woman_golfing_medium_light_skin_tone:"],"c":"activity"},":woman_golfing_tone3:":{"sn":":woman_golfing_tone3:","cp":"1f3cc-1f3fd-200d-2640-fe0f","sns":[":woman_golfing_medium_skin_tone:"],"c":"activity"},":woman_golfing_tone4:":{"sn":":woman_golfing_tone4:","cp":"1f3cc-1f3fe-200d-2640-fe0f","sns":[":woman_golfing_medium_dark_skin_tone:"],"c":"activity"},":woman_golfing_tone5:":{"sn":":woman_golfing_tone5:","cp":"1f3cc-1f3ff-200d-2640-fe0f","sns":[":woman_golfing_dark_skin_tone:"],"c":"activity"},":woman_in_lotus_position:":{"sn":":woman_in_lotus_position:","cp":"1f9d8-200d-2640-fe0f","sns":[],"c":"activity"},":woman_in_lotus_position_tone1:":{"sn":":woman_in_lotus_position_tone1:","cp":"1f9d8-1f3fb-200d-2640-fe0f","sns":[":woman_in_lotus_position_light_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone2:":{"sn":":woman_in_lotus_position_tone2:","cp":"1f9d8-1f3fc-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_light_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone3:":{"sn":":woman_in_lotus_position_tone3:","cp":"1f9d8-1f3fd-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone4:":{"sn":":woman_in_lotus_position_tone4:","cp":"1f9d8-1f3fe-200d-2640-fe0f","sns":[":woman_in_lotus_position_medium_dark_skin_tone:"],"c":"activity"},":woman_in_lotus_position_tone5:":{"sn":":woman_in_lotus_position_tone5:","cp":"1f9d8-1f3ff-200d-2640-fe0f","sns":[":woman_in_lotus_position_dark_skin_tone:"],"c":"activity"},":woman_juggling:":{"sn":":woman_juggling:","cp":"1f939-200d-2640-fe0f","sns":[],"c":"activity"},":woman_juggling_tone1:":{"sn":":woman_juggling_tone1:","cp":"1f939-1f3fb-200d-2640-fe0f","sns":[":woman_juggling_light_skin_tone:"],"c":"activity"},":woman_juggling_tone2:":{"sn":":woman_juggling_tone2:","cp":"1f939-1f3fc-200d-2640-fe0f","sns":[":woman_juggling_medium_light_skin_tone:"],"c":"activity"},":woman_juggling_tone3:":{"sn":":woman_juggling_tone3:","cp":"1f939-1f3fd-200d-2640-fe0f","sns":[":woman_juggling_medium_skin_tone:"],"c":"activity"},":woman_juggling_tone4:":{"sn":":woman_juggling_tone4:","cp":"1f939-1f3fe-200d-2640-fe0f","sns":[":woman_juggling_medium_dark_skin_tone:"],"c":"activity"},":woman_juggling_tone5:":{"sn":":woman_juggling_tone5:","cp":"1f939-1f3ff-200d-2640-fe0f","sns":[":woman_juggling_dark_skin_tone:"],"c":"activity"},":woman_lifting_weights:":{"sn":":woman_lifting_weights:","cp":"1f3cb-fe0f-200d-2640-fe0f","sns":[],"c":"activity"},":woman_lifting_weights_tone1:":{"sn":":woman_lifting_weights_tone1:","cp":"1f3cb-1f3fb-200d-2640-fe0f","sns":[":woman_lifting_weights_light_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone2:":{"sn":":woman_lifting_weights_tone2:","cp":"1f3cb-1f3fc-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_light_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone3:":{"sn":":woman_lifting_weights_tone3:","cp":"1f3cb-1f3fd-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone4:":{"sn":":woman_lifting_weights_tone4:","cp":"1f3cb-1f3fe-200d-2640-fe0f","sns":[":woman_lifting_weights_medium_dark_skin_tone:"],"c":"activity"},":woman_lifting_weights_tone5:":{"sn":":woman_lifting_weights_tone5:","cp":"1f3cb-1f3ff-200d-2640-fe0f","sns":[":woman_lifting_weights_dark_skin_tone:"],"c":"activity"},":woman_mountain_biking:":{"sn":":woman_mountain_biking:","cp":"1f6b5-200d-2640-fe0f","sns":[],"c":"activity"},":woman_mountain_biking_tone1:":{"sn":":woman_mountain_biking_tone1:","cp":"1f6b5-1f3fb-200d-2640-fe0f","sns":[":woman_mountain_biking_light_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone2:":{"sn":":woman_mountain_biking_tone2:","cp":"1f6b5-1f3fc-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_light_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone3:":{"sn":":woman_mountain_biking_tone3:","cp":"1f6b5-1f3fd-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone4:":{"sn":":woman_mountain_biking_tone4:","cp":"1f6b5-1f3fe-200d-2640-fe0f","sns":[":woman_mountain_biking_medium_dark_skin_tone:"],"c":"activity"},":woman_mountain_biking_tone5:":{"sn":":woman_mountain_biking_tone5:","cp":"1f6b5-1f3ff-200d-2640-fe0f","sns":[":woman_mountain_biking_dark_skin_tone:"],"c":"activity"},":woman_playing_handball:":{"sn":":woman_playing_handball:","cp":"1f93e-200d-2640-fe0f","sns":[],"c":"activity"},":woman_playing_handball_tone1:":{"sn":":woman_playing_handball_tone1:","cp":"1f93e-1f3fb-200d-2640-fe0f","sns":[":woman_playing_handball_light_skin_tone:"],"c":"activity"},":woman_playing_handball_tone2:":{"sn":":woman_playing_handball_tone2:","cp":"1f93e-1f3fc-200d-2640-fe0f","sns":[":woman_playing_handball_medium_light_skin_tone:"],"c":"activity"},":woman_playing_handball_tone3:":{"sn":":woman_playing_handball_tone3:","cp":"1f93e-1f3fd-200d-2640-fe0f","sns":[":woman_playing_handball_medium_skin_tone:"],"c":"activity"},":woman_playing_handball_tone4:":{"sn":":woman_playing_handball_tone4:","cp":"1f93e-1f3fe-200d-2640-fe0f","sns":[":woman_playing_handball_medium_dark_skin_tone:"],"c":"activity"},":woman_playing_handball_tone5:":{"sn":":woman_playing_handball_tone5:","cp":"1f93e-1f3ff-200d-2640-fe0f","sns":[":woman_playing_handball_dark_skin_tone:"],"c":"activity"},":woman_playing_water_polo:":{"sn":":woman_playing_water_polo:","cp":"1f93d-200d-2640-fe0f","sns":[],"c":"activity"},":woman_playing_water_polo_tone1:":{"sn":":woman_playing_water_polo_tone1:","cp":"1f93d-1f3fb-200d-2640-fe0f","sns":[":woman_playing_water_polo_light_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone2:":{"sn":":woman_playing_water_polo_tone2:","cp":"1f93d-1f3fc-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_light_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone3:":{"sn":":woman_playing_water_polo_tone3:","cp":"1f93d-1f3fd-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone4:":{"sn":":woman_playing_water_polo_tone4:","cp":"1f93d-1f3fe-200d-2640-fe0f","sns":[":woman_playing_water_polo_medium_dark_skin_tone:"],"c":"activity"},":woman_playing_water_polo_tone5:":{"sn":":woman_playing_water_polo_tone5:","cp":"1f93d-1f3ff-200d-2640-fe0f","sns":[":woman_playing_water_polo_dark_skin_tone:"],"c":"activity"},":woman_rowing_boat:":{"sn":":woman_rowing_boat:","cp":"1f6a3-200d-2640-fe0f","sns":[],"c":"activity"},":woman_rowing_boat_tone1:":{"sn":":woman_rowing_boat_tone1:","cp":"1f6a3-1f3fb-200d-2640-fe0f","sns":[":woman_rowing_boat_light_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone2:":{"sn":":woman_rowing_boat_tone2:","cp":"1f6a3-1f3fc-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_light_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone3:":{"sn":":woman_rowing_boat_tone3:","cp":"1f6a3-1f3fd-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone4:":{"sn":":woman_rowing_boat_tone4:","cp":"1f6a3-1f3fe-200d-2640-fe0f","sns":[":woman_rowing_boat_medium_dark_skin_tone:"],"c":"activity"},":woman_rowing_boat_tone5:":{"sn":":woman_rowing_boat_tone5:","cp":"1f6a3-1f3ff-200d-2640-fe0f","sns":[":woman_rowing_boat_dark_skin_tone:"],"c":"activity"},":woman_surfing:":{"sn":":woman_surfing:","cp":"1f3c4-200d-2640-fe0f","sns":[],"c":"activity"},":woman_surfing_tone1:":{"sn":":woman_surfing_tone1:","cp":"1f3c4-1f3fb-200d-2640-fe0f","sns":[":woman_surfing_light_skin_tone:"],"c":"activity"},":woman_surfing_tone2:":{"sn":":woman_surfing_tone2:","cp":"1f3c4-1f3fc-200d-2640-fe0f","sns":[":woman_surfing_medium_light_skin_tone:"],"c":"activity"},":woman_surfing_tone3:":{"sn":":woman_surfing_tone3:","cp":"1f3c4-1f3fd-200d-2640-fe0f","sns":[":woman_surfing_medium_skin_tone:"],"c":"activity"},":woman_surfing_tone4:":{"sn":":woman_surfing_tone4:","cp":"1f3c4-1f3fe-200d-2640-fe0f","sns":[":woman_surfing_medium_dark_skin_tone:"],"c":"activity"},":woman_surfing_tone5:":{"sn":":woman_surfing_tone5:","cp":"1f3c4-1f3ff-200d-2640-fe0f","sns":[":woman_surfing_dark_skin_tone:"],"c":"activity"},":woman_swimming:":{"sn":":woman_swimming:","cp":"1f3ca-200d-2640-fe0f","sns":[],"c":"activity"},":woman_swimming_tone1:":{"sn":":woman_swimming_tone1:","cp":"1f3ca-1f3fb-200d-2640-fe0f","sns":[":woman_swimming_light_skin_tone:"],"c":"activity"},":woman_swimming_tone2:":{"sn":":woman_swimming_tone2:","cp":"1f3ca-1f3fc-200d-2640-fe0f","sns":[":woman_swimming_medium_light_skin_tone:"],"c":"activity"},":woman_swimming_tone3:":{"sn":":woman_swimming_tone3:","cp":"1f3ca-1f3fd-200d-2640-fe0f","sns":[":woman_swimming_medium_skin_tone:"],"c":"activity"},":woman_swimming_tone4:":{"sn":":woman_swimming_tone4:","cp":"1f3ca-1f3fe-200d-2640-fe0f","sns":[":woman_swimming_medium_dark_skin_tone:"],"c":"activity"},":woman_swimming_tone5:":{"sn":":woman_swimming_tone5:","cp":"1f3ca-1f3ff-200d-2640-fe0f","sns":[":woman_swimming_dark_skin_tone:"],"c":"activity"},":women_wrestling:":{"sn":":women_wrestling:","cp":"1f93c-200d-2640-fe0f","sns":[],"c":"activity"}},"travel":{":aerial_tramway:":{"sn":":aerial_tramway:","cp":"1f6a1","sns":[],"c":"travel"},":airplane:":{"sn":":airplane:","cp":"2708","sns":[],"c":"travel"},":airplane_arriving:":{"sn":":airplane_arriving:","cp":"1f6ec","sns":[],"c":"travel"},":airplane_departure:":{"sn":":airplane_departure:","cp":"1f6eb","sns":[],"c":"travel"},":airplane_small:":{"sn":":airplane_small:","cp":"1f6e9","sns":[":small_airplane:"],"c":"travel"},":ambulance:":{"sn":":ambulance:","cp":"1f691","sns":[],"c":"travel"},":anchor:":{"sn":":anchor:","cp":"2693","sns":[],"c":"travel"},":articulated_lorry:":{"sn":":articulated_lorry:","cp":"1f69b","sns":[],"c":"travel"},":bank:":{"sn":":bank:","cp":"1f3e6","sns":[],"c":"travel"},":beach:":{"sn":":beach:","cp":"1f3d6","sns":[":beach_with_umbrella:"],"c":"travel"},":beach_umbrella:":{"sn":":beach_umbrella:","cp":"26f1","sns":[":umbrella_on_ground:"],"c":"travel"},":bike:":{"sn":":bike:","cp":"1f6b2","sns":[],"c":"travel"},":blue_car:":{"sn":":blue_car:","cp":"1f699","sns":[],"c":"travel"},":bridge_at_night:":{"sn":":bridge_at_night:","cp":"1f309","sns":[],"c":"travel"},":bullettrain_front:":{"sn":":bullettrain_front:","cp":"1f685","sns":[],"c":"travel"},":bullettrain_side:":{"sn":":bullettrain_side:","cp":"1f684","sns":[],"c":"travel"},":bus:":{"sn":":bus:","cp":"1f68c","sns":[],"c":"travel"},":busstop:":{"sn":":busstop:","cp":"1f68f","sns":[],"c":"travel"},":camping:":{"sn":":camping:","cp":"1f3d5","sns":[],"c":"travel"},":canoe:":{"sn":":canoe:","cp":"1f6f6","sns":[":kayak:"],"c":"travel"},":carousel_horse:":{"sn":":carousel_horse:","cp":"1f3a0","sns":[],"c":"travel"},":church:":{"sn":":church:","cp":"26ea","sns":[],"c":"travel"},":city_dusk:":{"sn":":city_dusk:","cp":"1f306","sns":[],"c":"travel"},":city_sunset:":{"sn":":city_sunset:","cp":"1f307","sns":[":city_sunrise:"],"c":"travel"},":cityscape:":{"sn":":cityscape:","cp":"1f3d9","sns":[],"c":"travel"},":classical_building:":{"sn":":classical_building:","cp":"1f3db","sns":[],"c":"travel"},":construction:":{"sn":":construction:","cp":"1f6a7","sns":[],"c":"travel"},":construction_site:":{"sn":":construction_site:","cp":"1f3d7","sns":[":building_construction:"],"c":"travel"},":convenience_store:":{"sn":":convenience_store:","cp":"1f3ea","sns":[],"c":"travel"},":cruise_ship:":{"sn":":cruise_ship:","cp":"1f6f3","sns":[":passenger_ship:"],"c":"travel"},":department_store:":{"sn":":department_store:","cp":"1f3ec","sns":[],"c":"travel"},":desert:":{"sn":":desert:","cp":"1f3dc","sns":[],"c":"travel"},":european_castle:":{"sn":":european_castle:","cp":"1f3f0","sns":[],"c":"travel"},":european_post_office:":{"sn":":european_post_office:","cp":"1f3e4","sns":[],"c":"travel"},":factory:":{"sn":":factory:","cp":"1f3ed","sns":[],"c":"travel"},":ferris_wheel:":{"sn":":ferris_wheel:","cp":"1f3a1","sns":[],"c":"travel"},":ferry:":{"sn":":ferry:","cp":"26f4","sns":[],"c":"travel"},":fire_engine:":{"sn":":fire_engine:","cp":"1f692","sns":[],"c":"travel"},":fireworks:":{"sn":":fireworks:","cp":"1f386","sns":[],"c":"travel"},":flying_saucer:":{"sn":":flying_saucer:","cp":"1f6f8","sns":[],"c":"travel"},":foggy:":{"sn":":foggy:","cp":"1f301","sns":[],"c":"travel"},":fountain:":{"sn":":fountain:","cp":"26f2","sns":[],"c":"travel"},":fuelpump:":{"sn":":fuelpump:","cp":"26fd","sns":[],"c":"travel"},":helicopter:":{"sn":":helicopter:","cp":"1f681","sns":[],"c":"travel"},":homes:":{"sn":":homes:","cp":"1f3d8","sns":[":house_buildings:"],"c":"travel"},":hospital:":{"sn":":hospital:","cp":"1f3e5","sns":[],"c":"travel"},":hotel:":{"sn":":hotel:","cp":"1f3e8","sns":[],"c":"travel"},":house:":{"sn":":house:","cp":"1f3e0","sns":[],"c":"travel"},":house_abandoned:":{"sn":":house_abandoned:","cp":"1f3da","sns":[":derelict_house_building:"],"c":"travel"},":house_with_garden:":{"sn":":house_with_garden:","cp":"1f3e1","sns":[],"c":"travel"},":island:":{"sn":":island:","cp":"1f3dd","sns":[":desert_island:"],"c":"travel"},":japan:":{"sn":":japan:","cp":"1f5fe","sns":[],"c":"travel"},":japanese_castle:":{"sn":":japanese_castle:","cp":"1f3ef","sns":[],"c":"travel"},":kaaba:":{"sn":":kaaba:","cp":"1f54b","sns":[],"c":"travel"},":light_rail:":{"sn":":light_rail:","cp":"1f688","sns":[],"c":"travel"},":love_hotel:":{"sn":":love_hotel:","cp":"1f3e9","sns":[],"c":"travel"},":map:":{"sn":":map:","cp":"1f5fa","sns":[":world_map:"],"c":"travel"},":metro:":{"sn":":metro:","cp":"1f687","sns":[],"c":"travel"},":milky_way:":{"sn":":milky_way:","cp":"1f30c","sns":[],"c":"travel"},":minibus:":{"sn":":minibus:","cp":"1f690","sns":[],"c":"travel"},":monorail:":{"sn":":monorail:","cp":"1f69d","sns":[],"c":"travel"},":mosque:":{"sn":":mosque:","cp":"1f54c","sns":[],"c":"travel"},":motor_scooter:":{"sn":":motor_scooter:","cp":"1f6f5","sns":[":motorbike:"],"c":"travel"},":motorboat:":{"sn":":motorboat:","cp":"1f6e5","sns":[],"c":"travel"},":motorcycle:":{"sn":":motorcycle:","cp":"1f3cd","sns":[":racing_motorcycle:"],"c":"travel"},":motorway:":{"sn":":motorway:","cp":"1f6e3","sns":[],"c":"travel"},":mount_fuji:":{"sn":":mount_fuji:","cp":"1f5fb","sns":[],"c":"travel"},":mountain:":{"sn":":mountain:","cp":"26f0","sns":[],"c":"travel"},":mountain_cableway:":{"sn":":mountain_cableway:","cp":"1f6a0","sns":[],"c":"travel"},":mountain_railway:":{"sn":":mountain_railway:","cp":"1f69e","sns":[],"c":"travel"},":mountain_snow:":{"sn":":mountain_snow:","cp":"1f3d4","sns":[":snow_capped_mountain:"],"c":"travel"},":moyai:":{"sn":":moyai:","cp":"1f5ff","sns":[],"c":"travel"},":night_with_stars:":{"sn":":night_with_stars:","cp":"1f303","sns":[],"c":"travel"},":office:":{"sn":":office:","cp":"1f3e2","sns":[],"c":"travel"},":oncoming_automobile:":{"sn":":oncoming_automobile:","cp":"1f698","sns":[],"c":"travel"},":oncoming_bus:":{"sn":":oncoming_bus:","cp":"1f68d","sns":[],"c":"travel"},":oncoming_police_car:":{"sn":":oncoming_police_car:","cp":"1f694","sns":[],"c":"travel"},":oncoming_taxi:":{"sn":":oncoming_taxi:","cp":"1f696","sns":[],"c":"travel"},":park:":{"sn":":park:","cp":"1f3de","sns":[":national_park:"],"c":"travel"},":police_car:":{"sn":":police_car:","cp":"1f693","sns":[],"c":"travel"},":post_office:":{"sn":":post_office:","cp":"1f3e3","sns":[],"c":"travel"},":race_car:":{"sn":":race_car:","cp":"1f3ce","sns":[":racing_car:"],"c":"travel"},":railway_car:":{"sn":":railway_car:","cp":"1f683","sns":[],"c":"travel"},":railway_track:":{"sn":":railway_track:","cp":"1f6e4","sns":[":railroad_track:"],"c":"travel"},":red_car:":{"sn":":red_car:","cp":"1f697","sns":[],"c":"travel"},":rice_scene:":{"sn":":rice_scene:","cp":"1f391","sns":[],"c":"travel"},":rocket:":{"sn":":rocket:","cp":"1f680","sns":[],"c":"travel"},":roller_coaster:":{"sn":":roller_coaster:","cp":"1f3a2","sns":[],"c":"travel"},":rotating_light:":{"sn":":rotating_light:","cp":"1f6a8","sns":[],"c":"travel"},":sailboat:":{"sn":":sailboat:","cp":"26f5","sns":[],"c":"travel"},":satellite_orbital:":{"sn":":satellite_orbital:","cp":"1f6f0","sns":[],"c":"travel"},":school:":{"sn":":school:","cp":"1f3eb","sns":[],"c":"travel"},":scooter:":{"sn":":scooter:","cp":"1f6f4","sns":[],"c":"travel"},":seat:":{"sn":":seat:","cp":"1f4ba","sns":[],"c":"travel"},":shinto_shrine:":{"sn":":shinto_shrine:","cp":"26e9","sns":[],"c":"travel"},":ship:":{"sn":":ship:","cp":"1f6a2","sns":[],"c":"travel"},":sparkler:":{"sn":":sparkler:","cp":"1f387","sns":[],"c":"travel"},":speedboat:":{"sn":":speedboat:","cp":"1f6a4","sns":[],"c":"travel"},":stadium:":{"sn":":stadium:","cp":"1f3df","sns":[],"c":"travel"},":stars:":{"sn":":stars:","cp":"1f320","sns":[],"c":"travel"},":station:":{"sn":":station:","cp":"1f689","sns":[],"c":"travel"},":statue_of_liberty:":{"sn":":statue_of_liberty:","cp":"1f5fd","sns":[],"c":"travel"},":steam_locomotive:":{"sn":":steam_locomotive:","cp":"1f682","sns":[],"c":"travel"},":sunrise:":{"sn":":sunrise:","cp":"1f305","sns":[],"c":"travel"},":sunrise_over_mountains:":{"sn":":sunrise_over_mountains:","cp":"1f304","sns":[],"c":"travel"},":suspension_railway:":{"sn":":suspension_railway:","cp":"1f69f","sns":[],"c":"travel"},":synagogue:":{"sn":":synagogue:","cp":"1f54d","sns":[],"c":"travel"},":taxi:":{"sn":":taxi:","cp":"1f695","sns":[],"c":"travel"},":tent:":{"sn":":tent:","cp":"26fa","sns":[],"c":"travel"},":tokyo_tower:":{"sn":":tokyo_tower:","cp":"1f5fc","sns":[],"c":"travel"},":tractor:":{"sn":":tractor:","cp":"1f69c","sns":[],"c":"travel"},":traffic_light:":{"sn":":traffic_light:","cp":"1f6a5","sns":[],"c":"travel"},":train2:":{"sn":":train2:","cp":"1f686","sns":[],"c":"travel"},":train:":{"sn":":train:","cp":"1f68b","sns":[],"c":"travel"},":tram:":{"sn":":tram:","cp":"1f68a","sns":[],"c":"travel"},":trolleybus:":{"sn":":trolleybus:","cp":"1f68e","sns":[],"c":"travel"},":truck:":{"sn":":truck:","cp":"1f69a","sns":[],"c":"travel"},":vertical_traffic_light:":{"sn":":vertical_traffic_light:","cp":"1f6a6","sns":[],"c":"travel"},":volcano:":{"sn":":volcano:","cp":"1f30b","sns":[],"c":"travel"},":wedding:":{"sn":":wedding:","cp":"1f492","sns":[],"c":"travel"}},"objects":{":alarm_clock:":{"sn":":alarm_clock:","cp":"23f0","sns":[],"c":"objects"},":alembic:":{"sn":":alembic:","cp":"2697","sns":[],"c":"objects"},":amphora:":{"sn":":amphora:","cp":"1f3fa","sns":[],"c":"objects"},":athletic_shoe:":{"sn":":athletic_shoe:","cp":"1f45f","sns":[],"c":"objects"},":balloon:":{"sn":":balloon:","cp":"1f388","sns":[],"c":"objects"},":ballot_box:":{"sn":":ballot_box:","cp":"1f5f3","sns":[":ballot_box_with_ballot:"],"c":"objects"},":bar_chart:":{"sn":":bar_chart:","cp":"1f4ca","sns":[],"c":"objects"},":barber:":{"sn":":barber:","cp":"1f488","sns":[],"c":"objects"},":bath:":{"sn":":bath:","cp":"1f6c0","sns":[],"c":"objects"},":bath_tone1:":{"sn":":bath_tone1:","cp":"1f6c0-1f3fb","sns":[],"c":"objects"},":bath_tone2:":{"sn":":bath_tone2:","cp":"1f6c0-1f3fc","sns":[],"c":"objects"},":bath_tone3:":{"sn":":bath_tone3:","cp":"1f6c0-1f3fd","sns":[],"c":"objects"},":bath_tone4:":{"sn":":bath_tone4:","cp":"1f6c0-1f3fe","sns":[],"c":"objects"},":bath_tone5:":{"sn":":bath_tone5:","cp":"1f6c0-1f3ff","sns":[],"c":"objects"},":bathtub:":{"sn":":bathtub:","cp":"1f6c1","sns":[],"c":"objects"},":battery:":{"sn":":battery:","cp":"1f50b","sns":[],"c":"objects"},":bed:":{"sn":":bed:","cp":"1f6cf","sns":[],"c":"objects"},":bellhop:":{"sn":":bellhop:","cp":"1f6ce","sns":[":bellhop_bell:"],"c":"objects"},":billed_cap:":{"sn":":billed_cap:","cp":"1f9e2","sns":[],"c":"objects"},":black_nib:":{"sn":":black_nib:","cp":"2712","sns":[],"c":"objects"},":blue_book:":{"sn":":blue_book:","cp":"1f4d8","sns":[],"c":"objects"},":bomb:":{"sn":":bomb:","cp":"1f4a3","sns":[],"c":"objects"},":book:":{"sn":":book:","cp":"1f4d6","sns":[],"c":"objects"},":bookmark:":{"sn":":bookmark:","cp":"1f516","sns":[],"c":"objects"},":bookmark_tabs:":{"sn":":bookmark_tabs:","cp":"1f4d1","sns":[],"c":"objects"},":books:":{"sn":":books:","cp":"1f4da","sns":[],"c":"objects"},":boot:":{"sn":":boot:","cp":"1f462","sns":[],"c":"objects"},":briefcase:":{"sn":":briefcase:","cp":"1f4bc","sns":[],"c":"objects"},":bulb:":{"sn":":bulb:","cp":"1f4a1","sns":[],"c":"objects"},":calendar:":{"sn":":calendar:","cp":"1f4c6","sns":[],"c":"objects"},":calendar_spiral:":{"sn":":calendar_spiral:","cp":"1f5d3","sns":[":spiral_calendar_pad:"],"c":"objects"},":calling:":{"sn":":calling:","cp":"1f4f2","sns":[],"c":"objects"},":camera:":{"sn":":camera:","cp":"1f4f7","sns":[],"c":"objects"},":camera_with_flash:":{"sn":":camera_with_flash:","cp":"1f4f8","sns":[],"c":"objects"},":candle:":{"sn":":candle:","cp":"1f56f","sns":[],"c":"objects"},":card_box:":{"sn":":card_box:","cp":"1f5c3","sns":[":card_file_box:"],"c":"objects"},":card_index:":{"sn":":card_index:","cp":"1f4c7","sns":[],"c":"objects"},":cd:":{"sn":":cd:","cp":"1f4bf","sns":[],"c":"objects"},":chains:":{"sn":":chains:","cp":"26d3","sns":[],"c":"objects"},":chart_with_downwards_trend:":{"sn":":chart_with_downwards_trend:","cp":"1f4c9","sns":[],"c":"objects"},":chart_with_upwards_trend:":{"sn":":chart_with_upwards_trend:","cp":"1f4c8","sns":[],"c":"objects"},":clipboard:":{"sn":":clipboard:","cp":"1f4cb","sns":[],"c":"objects"},":clock:":{"sn":":clock:","cp":"1f570","sns":[":mantlepiece_clock:"],"c":"objects"},":closed_book:":{"sn":":closed_book:","cp":"1f4d5","sns":[],"c":"objects"},":closed_lock_with_key:":{"sn":":closed_lock_with_key:","cp":"1f510","sns":[],"c":"objects"},":closed_umbrella:":{"sn":":closed_umbrella:","cp":"1f302","sns":[],"c":"objects"},":coat:":{"sn":":coat:","cp":"1f9e5","sns":[],"c":"objects"},":coffin:":{"sn":":coffin:","cp":"26b0","sns":[],"c":"objects"},":compression:":{"sn":":compression:","cp":"1f5dc","sns":[],"c":"objects"},":computer:":{"sn":":computer:","cp":"1f4bb","sns":[],"c":"objects"},":confetti_ball:":{"sn":":confetti_ball:","cp":"1f38a","sns":[],"c":"objects"},":control_knobs:":{"sn":":control_knobs:","cp":"1f39b","sns":[],"c":"objects"},":couch:":{"sn":":couch:","cp":"1f6cb","sns":[":couch_and_lamp:"],"c":"objects"},":crayon:":{"sn":":crayon:","cp":"1f58d","sns":[":lower_left_crayon:"],"c":"objects"},":credit_card:":{"sn":":credit_card:","cp":"1f4b3","sns":[],"c":"objects"},":crossed_swords:":{"sn":":crossed_swords:","cp":"2694","sns":[],"c":"objects"},":crown:":{"sn":":crown:","cp":"1f451","sns":[],"c":"objects"},":crystal_ball:":{"sn":":crystal_ball:","cp":"1f52e","sns":[],"c":"objects"},":dagger:":{"sn":":dagger:","cp":"1f5e1","sns":[":dagger_knife:"],"c":"objects"},":dark_sunglasses:":{"sn":":dark_sunglasses:","cp":"1f576","sns":[],"c":"objects"},":date:":{"sn":":date:","cp":"1f4c5","sns":[],"c":"objects"},":desktop:":{"sn":":desktop:","cp":"1f5a5","sns":[":desktop_computer:"],"c":"objects"},":dividers:":{"sn":":dividers:","cp":"1f5c2","sns":[":card_index_dividers:"],"c":"objects"},":dollar:":{"sn":":dollar:","cp":"1f4b5","sns":[],"c":"objects"},":dolls:":{"sn":":dolls:","cp":"1f38e","sns":[],"c":"objects"},":door:":{"sn":":door:","cp":"1f6aa","sns":[],"c":"objects"},":dress:":{"sn":":dress:","cp":"1f457","sns":[],"c":"objects"},":dvd:":{"sn":":dvd:","cp":"1f4c0","sns":[],"c":"objects"},":e-mail:":{"sn":":e-mail:","cp":"1f4e7","sns":[":email:"],"c":"objects"},":electric_plug:":{"sn":":electric_plug:","cp":"1f50c","sns":[],"c":"objects"},":envelope:":{"sn":":envelope:","cp":"2709","sns":[],"c":"objects"},":envelope_with_arrow:":{"sn":":envelope_with_arrow:","cp":"1f4e9","sns":[],"c":"objects"},":euro:":{"sn":":euro:","cp":"1f4b6","sns":[],"c":"objects"},":eyeglasses:":{"sn":":eyeglasses:","cp":"1f453","sns":[],"c":"objects"},":fax:":{"sn":":fax:","cp":"1f4e0","sns":[],"c":"objects"},":file_cabinet:":{"sn":":file_cabinet:","cp":"1f5c4","sns":[],"c":"objects"},":file_folder:":{"sn":":file_folder:","cp":"1f4c1","sns":[],"c":"objects"},":film_frames:":{"sn":":film_frames:","cp":"1f39e","sns":[],"c":"objects"},":flags:":{"sn":":flags:","cp":"1f38f","sns":[],"c":"objects"},":flashlight:":{"sn":":flashlight:","cp":"1f526","sns":[],"c":"objects"},":floppy_disk:":{"sn":":floppy_disk:","cp":"1f4be","sns":[],"c":"objects"},":frame_photo:":{"sn":":frame_photo:","cp":"1f5bc","sns":[":frame_with_picture:"],"c":"objects"},":gear:":{"sn":":gear:","cp":"2699","sns":[],"c":"objects"},":gem:":{"sn":":gem:","cp":"1f48e","sns":[],"c":"objects"},":gift:":{"sn":":gift:","cp":"1f381","sns":[],"c":"objects"},":gloves:":{"sn":":gloves:","cp":"1f9e4","sns":[],"c":"objects"},":green_book:":{"sn":":green_book:","cp":"1f4d7","sns":[],"c":"objects"},":gun:":{"sn":":gun:","cp":"1f52b","sns":[],"c":"objects"},":hammer:":{"sn":":hammer:","cp":"1f528","sns":[],"c":"objects"},":hammer_pick:":{"sn":":hammer_pick:","cp":"2692","sns":[":hammer_and_pick:"],"c":"objects"},":handbag:":{"sn":":handbag:","cp":"1f45c","sns":[],"c":"objects"},":high_heel:":{"sn":":high_heel:","cp":"1f460","sns":[],"c":"objects"},":hole:":{"sn":":hole:","cp":"1f573","sns":[],"c":"objects"},":hourglass:":{"sn":":hourglass:","cp":"231b","sns":[],"c":"objects"},":hourglass_flowing_sand:":{"sn":":hourglass_flowing_sand:","cp":"23f3","sns":[],"c":"objects"},":inbox_tray:":{"sn":":inbox_tray:","cp":"1f4e5","sns":[],"c":"objects"},":incoming_envelope:":{"sn":":incoming_envelope:","cp":"1f4e8","sns":[],"c":"objects"},":iphone:":{"sn":":iphone:","cp":"1f4f1","sns":[],"c":"objects"},":izakaya_lantern:":{"sn":":izakaya_lantern:","cp":"1f3ee","sns":[],"c":"objects"},":jeans:":{"sn":":jeans:","cp":"1f456","sns":[],"c":"objects"},":joystick:":{"sn":":joystick:","cp":"1f579","sns":[],"c":"objects"},":key2:":{"sn":":key2:","cp":"1f5dd","sns":[":old_key:"],"c":"objects"},":key:":{"sn":":key:","cp":"1f511","sns":[],"c":"objects"},":keyboard:":{"sn":":keyboard:","cp":"2328","sns":[],"c":"objects"},":kimono:":{"sn":":kimono:","cp":"1f458","sns":[],"c":"objects"},":knife:":{"sn":":knife:","cp":"1f52a","sns":[],"c":"objects"},":label:":{"sn":":label:","cp":"1f3f7","sns":[],"c":"objects"},":ledger:":{"sn":":ledger:","cp":"1f4d2","sns":[],"c":"objects"},":level_slider:":{"sn":":level_slider:","cp":"1f39a","sns":[],"c":"objects"},":link:":{"sn":":link:","cp":"1f517","sns":[],"c":"objects"},":lipstick:":{"sn":":lipstick:","cp":"1f484","sns":[],"c":"objects"},":lock:":{"sn":":lock:","cp":"1f512","sns":[],"c":"objects"},":lock_with_ink_pen:":{"sn":":lock_with_ink_pen:","cp":"1f50f","sns":[],"c":"objects"},":love_letter:":{"sn":":love_letter:","cp":"1f48c","sns":[],"c":"objects"},":mag:":{"sn":":mag:","cp":"1f50d","sns":[],"c":"objects"},":mag_right:":{"sn":":mag_right:","cp":"1f50e","sns":[],"c":"objects"},":mailbox:":{"sn":":mailbox:","cp":"1f4eb","sns":[],"c":"objects"},":mailbox_closed:":{"sn":":mailbox_closed:","cp":"1f4ea","sns":[],"c":"objects"},":mailbox_with_mail:":{"sn":":mailbox_with_mail:","cp":"1f4ec","sns":[],"c":"objects"},":mailbox_with_no_mail:":{"sn":":mailbox_with_no_mail:","cp":"1f4ed","sns":[],"c":"objects"},":mans_shoe:":{"sn":":mans_shoe:","cp":"1f45e","sns":[],"c":"people"},":microphone2:":{"sn":":microphone2:","cp":"1f399","sns":[":studio_microphone:"],"c":"objects"},":microscope:":{"sn":":microscope:","cp":"1f52c","sns":[],"c":"objects"},":minidisc:":{"sn":":minidisc:","cp":"1f4bd","sns":[],"c":"objects"},":money_with_wings:":{"sn":":money_with_wings:","cp":"1f4b8","sns":[],"c":"objects"},":moneybag:":{"sn":":moneybag:","cp":"1f4b0","sns":[],"c":"objects"},":mortar_board:":{"sn":":mortar_board:","cp":"1f393","sns":[],"c":"objects"},":mouse_three_button:":{"sn":":mouse_three_button:","cp":"1f5b1","sns":[":three_button_mouse:"],"c":"objects"},":movie_camera:":{"sn":":movie_camera:","cp":"1f3a5","sns":[],"c":"objects"},":necktie:":{"sn":":necktie:","cp":"1f454","sns":[],"c":"objects"},":newspaper2:":{"sn":":newspaper2:","cp":"1f5de","sns":[":rolled_up_newspaper:"],"c":"objects"},":newspaper:":{"sn":":newspaper:","cp":"1f4f0","sns":[],"c":"objects"},":notebook:":{"sn":":notebook:","cp":"1f4d3","sns":[],"c":"objects"},":notebook_with_decorative_cover:":{"sn":":notebook_with_decorative_cover:","cp":"1f4d4","sns":[],"c":"objects"},":notepad_spiral:":{"sn":":notepad_spiral:","cp":"1f5d2","sns":[":spiral_note_pad:"],"c":"objects"},":nut_and_bolt:":{"sn":":nut_and_bolt:","cp":"1f529","sns":[],"c":"objects"},":oil:":{"sn":":oil:","cp":"1f6e2","sns":[":oil_drum:"],"c":"objects"},":open_file_folder:":{"sn":":open_file_folder:","cp":"1f4c2","sns":[],"c":"objects"},":orange_book:":{"sn":":orange_book:","cp":"1f4d9","sns":[],"c":"objects"},":outbox_tray:":{"sn":":outbox_tray:","cp":"1f4e4","sns":[],"c":"objects"},":package:":{"sn":":package:","cp":"1f4e6","sns":[],"c":"objects"},":page_facing_up:":{"sn":":page_facing_up:","cp":"1f4c4","sns":[],"c":"objects"},":page_with_curl:":{"sn":":page_with_curl:","cp":"1f4c3","sns":[],"c":"objects"},":pager:":{"sn":":pager:","cp":"1f4df","sns":[],"c":"objects"},":paintbrush:":{"sn":":paintbrush:","cp":"1f58c","sns":[":lower_left_paintbrush:"],"c":"objects"},":paperclip:":{"sn":":paperclip:","cp":"1f4ce","sns":[],"c":"objects"},":paperclips:":{"sn":":paperclips:","cp":"1f587","sns":[":linked_paperclips:"],"c":"objects"},":pen_ballpoint:":{"sn":":pen_ballpoint:","cp":"1f58a","sns":[":lower_left_ballpoint_pen:"],"c":"objects"},":pen_fountain:":{"sn":":pen_fountain:","cp":"1f58b","sns":[":lower_left_fountain_pen:"],"c":"objects"},":pencil2:":{"sn":":pencil2:","cp":"270f","sns":[],"c":"objects"},":pencil:":{"sn":":pencil:","cp":"1f4dd","sns":[":memo:"],"c":"objects"},":person_in_bed_tone1:":{"sn":":person_in_bed_tone1:","cp":"1f6cc-1f3fb","sns":[":person_in_bed_light_skin_tone:"],"c":"objects"},":person_in_bed_tone2:":{"sn":":person_in_bed_tone2:","cp":"1f6cc-1f3fc","sns":[":person_in_bed_medium_light_skin_tone:"],"c":"objects"},":person_in_bed_tone3:":{"sn":":person_in_bed_tone3:","cp":"1f6cc-1f3fd","sns":[":person_in_bed_medium_skin_tone:"],"c":"objects"},":person_in_bed_tone4:":{"sn":":person_in_bed_tone4:","cp":"1f6cc-1f3fe","sns":[":person_in_bed_medium_dark_skin_tone:"],"c":"objects"},":person_in_bed_tone5:":{"sn":":person_in_bed_tone5:","cp":"1f6cc-1f3ff","sns":[":person_in_bed_dark_skin_tone:"],"c":"objects"},":pick:":{"sn":":pick:","cp":"26cf","sns":[],"c":"objects"},":pill:":{"sn":":pill:","cp":"1f48a","sns":[],"c":"objects"},":postal_horn:":{"sn":":postal_horn:","cp":"1f4ef","sns":[],"c":"objects"},":postbox:":{"sn":":postbox:","cp":"1f4ee","sns":[],"c":"objects"},":potable_water:":{"sn":":potable_water:","cp":"1f6b0","sns":[],"c":"objects"},":pouch:":{"sn":":pouch:","cp":"1f45d","sns":[],"c":"objects"},":pound:":{"sn":":pound:","cp":"1f4b7","sns":[],"c":"objects"},":prayer_beads:":{"sn":":prayer_beads:","cp":"1f4ff","sns":[],"c":"objects"},":printer:":{"sn":":printer:","cp":"1f5a8","sns":[],"c":"objects"},":projector:":{"sn":":projector:","cp":"1f4fd","sns":[":film_projector:"],"c":"objects"},":purse:":{"sn":":purse:","cp":"1f45b","sns":[],"c":"objects"},":pushpin:":{"sn":":pushpin:","cp":"1f4cc","sns":[],"c":"objects"},":radio:":{"sn":":radio:","cp":"1f4fb","sns":[],"c":"objects"},":ribbon:":{"sn":":ribbon:","cp":"1f380","sns":[],"c":"objects"},":ring:":{"sn":":ring:","cp":"1f48d","sns":[],"c":"objects"},":round_pushpin:":{"sn":":round_pushpin:","cp":"1f4cd","sns":[],"c":"objects"},":sandal:":{"sn":":sandal:","cp":"1f461","sns":[],"c":"objects"},":satellite:":{"sn":":satellite:","cp":"1f4e1","sns":[],"c":"objects"},":scales:":{"sn":":scales:","cp":"2696","sns":[],"c":"objects"},":scarf:":{"sn":":scarf:","cp":"1f9e3","sns":[],"c":"objects"},":school_satchel:":{"sn":":school_satchel:","cp":"1f392","sns":[],"c":"objects"},":scissors:":{"sn":":scissors:","cp":"2702","sns":[],"c":"objects"},":scroll:":{"sn":":scroll:","cp":"1f4dc","sns":[],"c":"objects"},":shield:":{"sn":":shield:","cp":"1f6e1","sns":[],"c":"objects"},":shirt:":{"sn":":shirt:","cp":"1f455","sns":[],"c":"objects"},":shopping_bags:":{"sn":":shopping_bags:","cp":"1f6cd","sns":[],"c":"objects"},":shopping_cart:":{"sn":":shopping_cart:","cp":"1f6d2","sns":[":shopping_trolley:"],"c":"objects"},":shower:":{"sn":":shower:","cp":"1f6bf","sns":[],"c":"objects"},":sleeping_accommodation:":{"sn":":sleeping_accommodation:","cp":"1f6cc","sns":[],"c":"objects"},":smoking:":{"sn":":smoking:","cp":"1f6ac","sns":[],"c":"objects"},":socks:":{"sn":":socks:","cp":"1f9e6","sns":[],"c":"objects"},":stopwatch:":{"sn":":stopwatch:","cp":"23f1","sns":[],"c":"objects"},":straight_ruler:":{"sn":":straight_ruler:","cp":"1f4cf","sns":[],"c":"objects"},":syringe:":{"sn":":syringe:","cp":"1f489","sns":[],"c":"objects"},":tada:":{"sn":":tada:","cp":"1f389","sns":[],"c":"objects"},":telephone:":{"sn":":telephone:","cp":"260e","sns":[],"c":"objects"},":telephone_receiver:":{"sn":":telephone_receiver:","cp":"1f4de","sns":[],"c":"objects"},":telescope:":{"sn":":telescope:","cp":"1f52d","sns":[],"c":"objects"},":thermometer:":{"sn":":thermometer:","cp":"1f321","sns":[],"c":"objects"},":timer:":{"sn":":timer:","cp":"23f2","sns":[":timer_clock:"],"c":"objects"},":toilet:":{"sn":":toilet:","cp":"1f6bd","sns":[],"c":"objects"},":tools:":{"sn":":tools:","cp":"1f6e0","sns":[":hammer_and_wrench:"],"c":"objects"},":tophat:":{"sn":":tophat:","cp":"1f3a9","sns":[],"c":"objects"},":trackball:":{"sn":":trackball:","cp":"1f5b2","sns":[],"c":"objects"},":triangular_ruler:":{"sn":":triangular_ruler:","cp":"1f4d0","sns":[],"c":"objects"},":tv:":{"sn":":tv:","cp":"1f4fa","sns":[],"c":"objects"},":unlock:":{"sn":":unlock:","cp":"1f513","sns":[],"c":"objects"},":urn:":{"sn":":urn:","cp":"26b1","sns":[":funeral_urn:"],"c":"objects"},":vhs:":{"sn":":vhs:","cp":"1f4fc","sns":[],"c":"objects"},":video_camera:":{"sn":":video_camera:","cp":"1f4f9","sns":[],"c":"objects"},":wastebasket:":{"sn":":wastebasket:","cp":"1f5d1","sns":[],"c":"objects"},":watch:":{"sn":":watch:","cp":"231a","sns":[],"c":"objects"},":wind_chime:":{"sn":":wind_chime:","cp":"1f390","sns":[],"c":"objects"},":womans_clothes:":{"sn":":womans_clothes:","cp":"1f45a","sns":[],"c":"objects"},":womans_hat:":{"sn":":womans_hat:","cp":"1f452","sns":[],"c":"objects"},":wrench:":{"sn":":wrench:","cp":"1f527","sns":[],"c":"objects"},":yen:":{"sn":":yen:","cp":"1f4b4","sns":[],"c":"objects"}},"nature":{":ant:":{"sn":":ant:","cp":"1f41c","sns":[],"c":"nature"},":baby_chick:":{"sn":":baby_chick:","cp":"1f424","sns":[],"c":"nature"},":bamboo:":{"sn":":bamboo:","cp":"1f38d","sns":[],"c":"nature"},":bat:":{"sn":":bat:","cp":"1f987","sns":[],"c":"nature"},":bear:":{"sn":":bear:","cp":"1f43b","sns":[],"c":"nature"},":bee:":{"sn":":bee:","cp":"1f41d","sns":[],"c":"nature"},":beetle:":{"sn":":beetle:","cp":"1f41e","sns":[],"c":"nature"},":bird:":{"sn":":bird:","cp":"1f426","sns":[],"c":"nature"},":blossom:":{"sn":":blossom:","cp":"1f33c","sns":[],"c":"nature"},":blowfish:":{"sn":":blowfish:","cp":"1f421","sns":[],"c":"nature"},":boar:":{"sn":":boar:","cp":"1f417","sns":[],"c":"nature"},":boom:":{"sn":":boom:","cp":"1f4a5","sns":[],"c":"nature"},":bouquet:":{"sn":":bouquet:","cp":"1f490","sns":[],"c":"nature"},":bug:":{"sn":":bug:","cp":"1f41b","sns":[],"c":"nature"},":butterfly:":{"sn":":butterfly:","cp":"1f98b","sns":[],"c":"nature"},":cactus:":{"sn":":cactus:","cp":"1f335","sns":[],"c":"nature"},":camel:":{"sn":":camel:","cp":"1f42b","sns":[],"c":"nature"},":cat2:":{"sn":":cat2:","cp":"1f408","sns":[],"c":"nature"},":cat:":{"sn":":cat:","cp":"1f431","sns":[],"c":"nature"},":cherry_blossom:":{"sn":":cherry_blossom:","cp":"1f338","sns":[],"c":"nature"},":chicken:":{"sn":":chicken:","cp":"1f414","sns":[],"c":"nature"},":chipmunk:":{"sn":":chipmunk:","cp":"1f43f","sns":[],"c":"nature"},":christmas_tree:":{"sn":":christmas_tree:","cp":"1f384","sns":[],"c":"nature"},":cloud:":{"sn":":cloud:","cp":"2601","sns":[],"c":"nature"},":cloud_lightning:":{"sn":":cloud_lightning:","cp":"1f329","sns":[":cloud_with_lightning:"],"c":"nature"},":cloud_rain:":{"sn":":cloud_rain:","cp":"1f327","sns":[":cloud_with_rain:"],"c":"nature"},":cloud_snow:":{"sn":":cloud_snow:","cp":"1f328","sns":[":cloud_with_snow:"],"c":"nature"},":cloud_tornado:":{"sn":":cloud_tornado:","cp":"1f32a","sns":[":cloud_with_tornado:"],"c":"nature"},":comet:":{"sn":":comet:","cp":"2604","sns":[],"c":"nature"},":cow2:":{"sn":":cow2:","cp":"1f404","sns":[],"c":"nature"},":cow:":{"sn":":cow:","cp":"1f42e","sns":[],"c":"nature"},":crab:":{"sn":":crab:","cp":"1f980","sns":[],"c":"nature"},":crescent_moon:":{"sn":":crescent_moon:","cp":"1f319","sns":[],"c":"nature"},":cricket:":{"sn":":cricket:","cp":"1f997","sns":[],"c":"nature"},":crocodile:":{"sn":":crocodile:","cp":"1f40a","sns":[],"c":"nature"},":dash:":{"sn":":dash:","cp":"1f4a8","sns":[],"c":"nature"},":deciduous_tree:":{"sn":":deciduous_tree:","cp":"1f333","sns":[],"c":"nature"},":deer:":{"sn":":deer:","cp":"1f98c","sns":[],"c":"nature"},":dizzy:":{"sn":":dizzy:","cp":"1f4ab","sns":[],"c":"nature"},":dog2:":{"sn":":dog2:","cp":"1f415","sns":[],"c":"nature"},":dog:":{"sn":":dog:","cp":"1f436","sns":[],"c":"nature"},":dolphin:":{"sn":":dolphin:","cp":"1f42c","sns":[],"c":"nature"},":dove:":{"sn":":dove:","cp":"1f54a","sns":[":dove_of_peace:"],"c":"nature"},":dragon:":{"sn":":dragon:","cp":"1f409","sns":[],"c":"nature"},":dragon_face:":{"sn":":dragon_face:","cp":"1f432","sns":[],"c":"nature"},":dromedary_camel:":{"sn":":dromedary_camel:","cp":"1f42a","sns":[],"c":"nature"},":droplet:":{"sn":":droplet:","cp":"1f4a7","sns":[],"c":"nature"},":duck:":{"sn":":duck:","cp":"1f986","sns":[],"c":"nature"},":eagle:":{"sn":":eagle:","cp":"1f985","sns":[],"c":"nature"},":ear_of_rice:":{"sn":":ear_of_rice:","cp":"1f33e","sns":[],"c":"nature"},":earth_africa:":{"sn":":earth_africa:","cp":"1f30d","sns":[],"c":"nature"},":earth_americas:":{"sn":":earth_americas:","cp":"1f30e","sns":[],"c":"nature"},":earth_asia:":{"sn":":earth_asia:","cp":"1f30f","sns":[],"c":"nature"},":elephant:":{"sn":":elephant:","cp":"1f418","sns":[],"c":"nature"},":evergreen_tree:":{"sn":":evergreen_tree:","cp":"1f332","sns":[],"c":"nature"},":fallen_leaf:":{"sn":":fallen_leaf:","cp":"1f342","sns":[],"c":"nature"},":feet:":{"sn":":feet:","cp":"1f43e","sns":[":paw_prints:"],"c":"nature"},":fire:":{"sn":":fire:","cp":"1f525","sns":[":flame:"],"c":"nature"},":first_quarter_moon:":{"sn":":first_quarter_moon:","cp":"1f313","sns":[],"c":"nature"},":first_quarter_moon_with_face:":{"sn":":first_quarter_moon_with_face:","cp":"1f31b","sns":[],"c":"nature"},":fish:":{"sn":":fish:","cp":"1f41f","sns":[],"c":"nature"},":fog:":{"sn":":fog:","cp":"1f32b","sns":[],"c":"nature"},":four_leaf_clover:":{"sn":":four_leaf_clover:","cp":"1f340","sns":[],"c":"nature"},":fox:":{"sn":":fox:","cp":"1f98a","sns":[":fox_face:"],"c":"nature"},":frog:":{"sn":":frog:","cp":"1f438","sns":[],"c":"nature"},":full_moon:":{"sn":":full_moon:","cp":"1f315","sns":[],"c":"nature"},":full_moon_with_face:":{"sn":":full_moon_with_face:","cp":"1f31d","sns":[],"c":"nature"},":giraffe:":{"sn":":giraffe:","cp":"1f992","sns":[],"c":"nature"},":goat:":{"sn":":goat:","cp":"1f410","sns":[],"c":"nature"},":gorilla:":{"sn":":gorilla:","cp":"1f98d","sns":[],"c":"nature"},":hamster:":{"sn":":hamster:","cp":"1f439","sns":[],"c":"nature"},":hatched_chick:":{"sn":":hatched_chick:","cp":"1f425","sns":[],"c":"nature"},":hatching_chick:":{"sn":":hatching_chick:","cp":"1f423","sns":[],"c":"nature"},":hear_no_evil:":{"sn":":hear_no_evil:","cp":"1f649","sns":[],"c":"nature"},":hedgehog:":{"sn":":hedgehog:","cp":"1f994","sns":[],"c":"nature"},":herb:":{"sn":":herb:","cp":"1f33f","sns":[],"c":"nature"},":hibiscus:":{"sn":":hibiscus:","cp":"1f33a","sns":[],"c":"nature"},":horse:":{"sn":":horse:","cp":"1f434","sns":[],"c":"nature"},":koala:":{"sn":":koala:","cp":"1f428","sns":[],"c":"nature"},":last_quarter_moon:":{"sn":":last_quarter_moon:","cp":"1f317","sns":[],"c":"nature"},":last_quarter_moon_with_face:":{"sn":":last_quarter_moon_with_face:","cp":"1f31c","sns":[],"c":"nature"},":leaves:":{"sn":":leaves:","cp":"1f343","sns":[],"c":"nature"},":leopard:":{"sn":":leopard:","cp":"1f406","sns":[],"c":"nature"},":lion_face:":{"sn":":lion_face:","cp":"1f981","sns":[":lion:"],"c":"nature"},":lizard:":{"sn":":lizard:","cp":"1f98e","sns":[],"c":"nature"},":maple_leaf:":{"sn":":maple_leaf:","cp":"1f341","sns":[],"c":"nature"},":monkey:":{"sn":":monkey:","cp":"1f412","sns":[],"c":"nature"},":monkey_face:":{"sn":":monkey_face:","cp":"1f435","sns":[],"c":"nature"},":mouse2:":{"sn":":mouse2:","cp":"1f401","sns":[],"c":"nature"},":mouse:":{"sn":":mouse:","cp":"1f42d","sns":[],"c":"nature"},":mushroom:":{"sn":":mushroom:","cp":"1f344","sns":[],"c":"nature"},":new_moon:":{"sn":":new_moon:","cp":"1f311","sns":[],"c":"nature"},":new_moon_with_face:":{"sn":":new_moon_with_face:","cp":"1f31a","sns":[],"c":"nature"},":ocean:":{"sn":":ocean:","cp":"1f30a","sns":[],"c":"nature"},":octopus:":{"sn":":octopus:","cp":"1f419","sns":[],"c":"nature"},":owl:":{"sn":":owl:","cp":"1f989","sns":[],"c":"nature"},":ox:":{"sn":":ox:","cp":"1f402","sns":[],"c":"nature"},":palm_tree:":{"sn":":palm_tree:","cp":"1f334","sns":[],"c":"nature"},":panda_face:":{"sn":":panda_face:","cp":"1f43c","sns":[],"c":"nature"},":partly_sunny:":{"sn":":partly_sunny:","cp":"26c5","sns":[],"c":"nature"},":penguin:":{"sn":":penguin:","cp":"1f427","sns":[],"c":"nature"},":pig2:":{"sn":":pig2:","cp":"1f416","sns":[],"c":"nature"},":pig:":{"sn":":pig:","cp":"1f437","sns":[],"c":"nature"},":pig_nose:":{"sn":":pig_nose:","cp":"1f43d","sns":[],"c":"nature"},":poodle:":{"sn":":poodle:","cp":"1f429","sns":[],"c":"nature"},":rabbit2:":{"sn":":rabbit2:","cp":"1f407","sns":[],"c":"nature"},":rabbit:":{"sn":":rabbit:","cp":"1f430","sns":[],"c":"nature"},":racehorse:":{"sn":":racehorse:","cp":"1f40e","sns":[],"c":"nature"},":rainbow:":{"sn":":rainbow:","cp":"1f308","sns":[],"c":"nature"},":ram:":{"sn":":ram:","cp":"1f40f","sns":[],"c":"nature"},":rat:":{"sn":":rat:","cp":"1f400","sns":[],"c":"nature"},":rhino:":{"sn":":rhino:","cp":"1f98f","sns":[":rhinoceros:"],"c":"nature"},":rooster:":{"sn":":rooster:","cp":"1f413","sns":[],"c":"nature"},":rose:":{"sn":":rose:","cp":"1f339","sns":[],"c":"nature"},":sauropod:":{"sn":":sauropod:","cp":"1f995","sns":[],"c":"nature"},":scorpion:":{"sn":":scorpion:","cp":"1f982","sns":[],"c":"nature"},":see_no_evil:":{"sn":":see_no_evil:","cp":"1f648","sns":[],"c":"nature"},":seedling:":{"sn":":seedling:","cp":"1f331","sns":[],"c":"nature"},":shamrock:":{"sn":":shamrock:","cp":"2618","sns":[],"c":"nature"},":shark:":{"sn":":shark:","cp":"1f988","sns":[],"c":"nature"},":sheep:":{"sn":":sheep:","cp":"1f411","sns":[],"c":"nature"},":shell:":{"sn":":shell:","cp":"1f41a","sns":[],"c":"nature"},":shrimp:":{"sn":":shrimp:","cp":"1f990","sns":[],"c":"nature"},":snail:":{"sn":":snail:","cp":"1f40c","sns":[],"c":"nature"},":snake:":{"sn":":snake:","cp":"1f40d","sns":[],"c":"nature"},":snowflake:":{"sn":":snowflake:","cp":"2744","sns":[],"c":"nature"},":snowman2:":{"sn":":snowman2:","cp":"2603","sns":[],"c":"nature"},":snowman:":{"sn":":snowman:","cp":"26c4","sns":[],"c":"nature"},":sparkles:":{"sn":":sparkles:","cp":"2728","sns":[],"c":"nature"},":speak_no_evil:":{"sn":":speak_no_evil:","cp":"1f64a","sns":[],"c":"nature"},":spider:":{"sn":":spider:","cp":"1f577","sns":[],"c":"nature"},":spider_web:":{"sn":":spider_web:","cp":"1f578","sns":[],"c":"nature"},":squid:":{"sn":":squid:","cp":"1f991","sns":[],"c":"nature"},":star2:":{"sn":":star2:","cp":"1f31f","sns":[],"c":"nature"},":star:":{"sn":":star:","cp":"2b50","sns":[],"c":"nature"},":sun_with_face:":{"sn":":sun_with_face:","cp":"1f31e","sns":[],"c":"nature"},":sunflower:":{"sn":":sunflower:","cp":"1f33b","sns":[],"c":"nature"},":sunny:":{"sn":":sunny:","cp":"2600","sns":[],"c":"nature"},":sweat_drops:":{"sn":":sweat_drops:","cp":"1f4a6","sns":[],"c":"nature"},":t_rex:":{"sn":":t_rex:","cp":"1f996","sns":[],"c":"nature"},":tanabata_tree:":{"sn":":tanabata_tree:","cp":"1f38b","sns":[],"c":"nature"},":thunder_cloud_rain:":{"sn":":thunder_cloud_rain:","cp":"26c8","sns":[":thunder_cloud_and_rain:"],"c":"nature"},":tiger2:":{"sn":":tiger2:","cp":"1f405","sns":[],"c":"nature"},":tiger:":{"sn":":tiger:","cp":"1f42f","sns":[],"c":"nature"},":tropical_fish:":{"sn":":tropical_fish:","cp":"1f420","sns":[],"c":"nature"},":tulip:":{"sn":":tulip:","cp":"1f337","sns":[],"c":"nature"},":turkey:":{"sn":":turkey:","cp":"1f983","sns":[],"c":"nature"},":turtle:":{"sn":":turtle:","cp":"1f422","sns":[],"c":"nature"},":umbrella2:":{"sn":":umbrella2:","cp":"2602","sns":[],"c":"nature"},":umbrella:":{"sn":":umbrella:","cp":"2614","sns":[],"c":"nature"},":unicorn:":{"sn":":unicorn:","cp":"1f984","sns":[":unicorn_face:"],"c":"nature"},":waning_crescent_moon:":{"sn":":waning_crescent_moon:","cp":"1f318","sns":[],"c":"nature"},":waning_gibbous_moon:":{"sn":":waning_gibbous_moon:","cp":"1f316","sns":[],"c":"nature"},":water_buffalo:":{"sn":":water_buffalo:","cp":"1f403","sns":[],"c":"nature"},":waxing_crescent_moon:":{"sn":":waxing_crescent_moon:","cp":"1f312","sns":[],"c":"nature"},":waxing_gibbous_moon:":{"sn":":waxing_gibbous_moon:","cp":"1f314","sns":[],"c":"nature"},":whale2:":{"sn":":whale2:","cp":"1f40b","sns":[],"c":"nature"},":whale:":{"sn":":whale:","cp":"1f433","sns":[],"c":"nature"},":white_sun_cloud:":{"sn":":white_sun_cloud:","cp":"1f325","sns":[":white_sun_behind_cloud:"],"c":"nature"},":white_sun_rain_cloud:":{"sn":":white_sun_rain_cloud:","cp":"1f326","sns":[":white_sun_behind_cloud_with_rain:"],"c":"nature"},":white_sun_small_cloud:":{"sn":":white_sun_small_cloud:","cp":"1f324","sns":[":white_sun_with_small_cloud:"],"c":"nature"},":wilted_rose:":{"sn":":wilted_rose:","cp":"1f940","sns":[":wilted_flower:"],"c":"nature"},":wind_blowing_face:":{"sn":":wind_blowing_face:","cp":"1f32c","sns":[],"c":"nature"},":wolf:":{"sn":":wolf:","cp":"1f43a","sns":[],"c":"nature"},":zap:":{"sn":":zap:","cp":"26a1","sns":[],"c":"nature"},":zebra:":{"sn":":zebra:","cp":"1f993","sns":[],"c":"nature"}},"food":{":apple:":{"sn":":apple:","cp":"1f34e","sns":[],"c":"food"},":avocado:":{"sn":":avocado:","cp":"1f951","sns":[],"c":"food"},":baby_bottle:":{"sn":":baby_bottle:","cp":"1f37c","sns":[],"c":"food"},":bacon:":{"sn":":bacon:","cp":"1f953","sns":[],"c":"food"},":banana:":{"sn":":banana:","cp":"1f34c","sns":[],"c":"food"},":beer:":{"sn":":beer:","cp":"1f37a","sns":[],"c":"food"},":beers:":{"sn":":beers:","cp":"1f37b","sns":[],"c":"food"},":bento:":{"sn":":bento:","cp":"1f371","sns":[],"c":"food"},":birthday:":{"sn":":birthday:","cp":"1f382","sns":[],"c":"food"},":bowl_with_spoon:":{"sn":":bowl_with_spoon:","cp":"1f963","sns":[],"c":"food"},":bread:":{"sn":":bread:","cp":"1f35e","sns":[],"c":"food"},":broccoli:":{"sn":":broccoli:","cp":"1f966","sns":[],"c":"food"},":burrito:":{"sn":":burrito:","cp":"1f32f","sns":[],"c":"food"},":cake:":{"sn":":cake:","cp":"1f370","sns":[],"c":"food"},":candy:":{"sn":":candy:","cp":"1f36c","sns":[],"c":"food"},":canned_food:":{"sn":":canned_food:","cp":"1f96b","sns":[],"c":"food"},":carrot:":{"sn":":carrot:","cp":"1f955","sns":[],"c":"food"},":champagne:":{"sn":":champagne:","cp":"1f37e","sns":[":bottle_with_popping_cork:"],"c":"food"},":champagne_glass:":{"sn":":champagne_glass:","cp":"1f942","sns":[":clinking_glass:"],"c":"food"},":cheese:":{"sn":":cheese:","cp":"1f9c0","sns":[":cheese_wedge:"],"c":"food"},":cherries:":{"sn":":cherries:","cp":"1f352","sns":[],"c":"food"},":chestnut:":{"sn":":chestnut:","cp":"1f330","sns":[],"c":"food"},":chocolate_bar:":{"sn":":chocolate_bar:","cp":"1f36b","sns":[],"c":"food"},":chopsticks:":{"sn":":chopsticks:","cp":"1f962","sns":[],"c":"food"},":cocktail:":{"sn":":cocktail:","cp":"1f378","sns":[],"c":"food"},":coconut:":{"sn":":coconut:","cp":"1f965","sns":[],"c":"food"},":coffee:":{"sn":":coffee:","cp":"2615","sns":[],"c":"food"},":cookie:":{"sn":":cookie:","cp":"1f36a","sns":[],"c":"food"},":cooking:":{"sn":":cooking:","cp":"1f373","sns":[],"c":"food"},":corn:":{"sn":":corn:","cp":"1f33d","sns":[],"c":"food"},":croissant:":{"sn":":croissant:","cp":"1f950","sns":[],"c":"food"},":cucumber:":{"sn":":cucumber:","cp":"1f952","sns":[],"c":"food"},":cup_with_straw:":{"sn":":cup_with_straw:","cp":"1f964","sns":[],"c":"food"},":curry:":{"sn":":curry:","cp":"1f35b","sns":[],"c":"food"},":custard:":{"sn":":custard:","cp":"1f36e","sns":[":pudding:",":flan:"],"c":"food"},":cut_of_meat:":{"sn":":cut_of_meat:","cp":"1f969","sns":[],"c":"food"},":dango:":{"sn":":dango:","cp":"1f361","sns":[],"c":"food"},":doughnut:":{"sn":":doughnut:","cp":"1f369","sns":[],"c":"food"},":dumpling:":{"sn":":dumpling:","cp":"1f95f","sns":[],"c":"food"},":egg:":{"sn":":egg:","cp":"1f95a","sns":[],"c":"food"},":eggplant:":{"sn":":eggplant:","cp":"1f346","sns":[],"c":"food"},":fish_cake:":{"sn":":fish_cake:","cp":"1f365","sns":[],"c":"food"},":fork_and_knife:":{"sn":":fork_and_knife:","cp":"1f374","sns":[],"c":"food"},":fork_knife_plate:":{"sn":":fork_knife_plate:","cp":"1f37d","sns":[":fork_and_knife_with_plate:"],"c":"food"},":fortune_cookie:":{"sn":":fortune_cookie:","cp":"1f960","sns":[],"c":"food"},":french_bread:":{"sn":":french_bread:","cp":"1f956","sns":[":baguette_bread:"],"c":"food"},":fried_shrimp:":{"sn":":fried_shrimp:","cp":"1f364","sns":[],"c":"food"},":fries:":{"sn":":fries:","cp":"1f35f","sns":[],"c":"food"},":grapes:":{"sn":":grapes:","cp":"1f347","sns":[],"c":"food"},":green_apple:":{"sn":":green_apple:","cp":"1f34f","sns":[],"c":"food"},":hamburger:":{"sn":":hamburger:","cp":"1f354","sns":[],"c":"food"},":honey_pot:":{"sn":":honey_pot:","cp":"1f36f","sns":[],"c":"food"},":hot_pepper:":{"sn":":hot_pepper:","cp":"1f336","sns":[],"c":"food"},":hotdog:":{"sn":":hotdog:","cp":"1f32d","sns":[":hot_dog:"],"c":"food"},":ice_cream:":{"sn":":ice_cream:","cp":"1f368","sns":[],"c":"food"},":icecream:":{"sn":":icecream:","cp":"1f366","sns":[],"c":"food"},":kiwi:":{"sn":":kiwi:","cp":"1f95d","sns":[":kiwifruit:"],"c":"food"},":lemon:":{"sn":":lemon:","cp":"1f34b","sns":[],"c":"food"},":lollipop:":{"sn":":lollipop:","cp":"1f36d","sns":[],"c":"food"},":meat_on_bone:":{"sn":":meat_on_bone:","cp":"1f356","sns":[],"c":"food"},":melon:":{"sn":":melon:","cp":"1f348","sns":[],"c":"food"},":milk:":{"sn":":milk:","cp":"1f95b","sns":[":glass_of_milk:"],"c":"food"},":oden:":{"sn":":oden:","cp":"1f362","sns":[],"c":"food"},":pancakes:":{"sn":":pancakes:","cp":"1f95e","sns":[],"c":"food"},":peach:":{"sn":":peach:","cp":"1f351","sns":[],"c":"food"},":peanuts:":{"sn":":peanuts:","cp":"1f95c","sns":[":shelled_peanut:"],"c":"food"},":pear:":{"sn":":pear:","cp":"1f350","sns":[],"c":"food"},":pie:":{"sn":":pie:","cp":"1f967","sns":[],"c":"food"},":pineapple:":{"sn":":pineapple:","cp":"1f34d","sns":[],"c":"food"},":pizza:":{"sn":":pizza:","cp":"1f355","sns":[],"c":"food"},":popcorn:":{"sn":":popcorn:","cp":"1f37f","sns":[],"c":"food"},":potato:":{"sn":":potato:","cp":"1f954","sns":[],"c":"food"},":poultry_leg:":{"sn":":poultry_leg:","cp":"1f357","sns":[],"c":"food"},":pretzel:":{"sn":":pretzel:","cp":"1f968","sns":[],"c":"food"},":ramen:":{"sn":":ramen:","cp":"1f35c","sns":[],"c":"food"},":rice:":{"sn":":rice:","cp":"1f35a","sns":[],"c":"food"},":rice_ball:":{"sn":":rice_ball:","cp":"1f359","sns":[],"c":"food"},":rice_cracker:":{"sn":":rice_cracker:","cp":"1f358","sns":[],"c":"food"},":sake:":{"sn":":sake:","cp":"1f376","sns":[],"c":"food"},":salad:":{"sn":":salad:","cp":"1f957","sns":[":green_salad:"],"c":"food"},":sandwich:":{"sn":":sandwich:","cp":"1f96a","sns":[],"c":"food"},":shallow_pan_of_food:":{"sn":":shallow_pan_of_food:","cp":"1f958","sns":[":paella:"],"c":"food"},":shaved_ice:":{"sn":":shaved_ice:","cp":"1f367","sns":[],"c":"food"},":spaghetti:":{"sn":":spaghetti:","cp":"1f35d","sns":[],"c":"food"},":spoon:":{"sn":":spoon:","cp":"1f944","sns":[],"c":"food"},":stew:":{"sn":":stew:","cp":"1f372","sns":[],"c":"food"},":strawberry:":{"sn":":strawberry:","cp":"1f353","sns":[],"c":"food"},":stuffed_flatbread:":{"sn":":stuffed_flatbread:","cp":"1f959","sns":[":stuffed_pita:"],"c":"food"},":sushi:":{"sn":":sushi:","cp":"1f363","sns":[],"c":"food"},":sweet_potato:":{"sn":":sweet_potato:","cp":"1f360","sns":[],"c":"food"},":taco:":{"sn":":taco:","cp":"1f32e","sns":[],"c":"food"},":takeout_box:":{"sn":":takeout_box:","cp":"1f961","sns":[],"c":"food"},":tangerine:":{"sn":":tangerine:","cp":"1f34a","sns":[],"c":"food"},":tea:":{"sn":":tea:","cp":"1f375","sns":[],"c":"food"},":tomato:":{"sn":":tomato:","cp":"1f345","sns":[],"c":"food"},":tropical_drink:":{"sn":":tropical_drink:","cp":"1f379","sns":[],"c":"food"},":tumbler_glass:":{"sn":":tumbler_glass:","cp":"1f943","sns":[":whisky:"],"c":"food"},":watermelon:":{"sn":":watermelon:","cp":"1f349","sns":[],"c":"food"},":wine_glass:":{"sn":":wine_glass:","cp":"1f377","sns":[],"c":"food"}},"symbols":{":100:":{"sn":":100:","cp":"1f4af","sns":[],"c":"symbols"},":1234:":{"sn":":1234:","cp":"1f522","sns":[],"c":"symbols"},":a:":{"sn":":a:","cp":"1f170","sns":[],"c":"symbols"},":ab:":{"sn":":ab:","cp":"1f18e","sns":[],"c":"symbols"},":abc:":{"sn":":abc:","cp":"1f524","sns":[],"c":"symbols"},":abcd:":{"sn":":abcd:","cp":"1f521","sns":[],"c":"symbols"},":accept:":{"sn":":accept:","cp":"1f251","sns":[],"c":"symbols"},":anger:":{"sn":":anger:","cp":"1f4a2","sns":[],"c":"symbols"},":anger_right:":{"sn":":anger_right:","cp":"1f5ef","sns":[":right_anger_bubble:"],"c":"symbols"},":aquarius:":{"sn":":aquarius:","cp":"2652","sns":[],"c":"symbols"},":aries:":{"sn":":aries:","cp":"2648","sns":[],"c":"symbols"},":arrow_backward:":{"sn":":arrow_backward:","cp":"25c0","sns":[],"c":"symbols"},":arrow_double_down:":{"sn":":arrow_double_down:","cp":"23ec","sns":[],"c":"symbols"},":arrow_double_up:":{"sn":":arrow_double_up:","cp":"23eb","sns":[],"c":"symbols"},":arrow_down:":{"sn":":arrow_down:","cp":"2b07","sns":[],"c":"symbols"},":arrow_down_small:":{"sn":":arrow_down_small:","cp":"1f53d","sns":[],"c":"symbols"},":arrow_forward:":{"sn":":arrow_forward:","cp":"25b6","sns":[],"c":"symbols"},":arrow_heading_down:":{"sn":":arrow_heading_down:","cp":"2935","sns":[],"c":"symbols"},":arrow_heading_up:":{"sn":":arrow_heading_up:","cp":"2934","sns":[],"c":"symbols"},":arrow_left:":{"sn":":arrow_left:","cp":"2b05","sns":[],"c":"symbols"},":arrow_lower_left:":{"sn":":arrow_lower_left:","cp":"2199","sns":[],"c":"symbols"},":arrow_lower_right:":{"sn":":arrow_lower_right:","cp":"2198","sns":[],"c":"symbols"},":arrow_right:":{"sn":":arrow_right:","cp":"27a1","sns":[],"c":"symbols"},":arrow_right_hook:":{"sn":":arrow_right_hook:","cp":"21aa","sns":[],"c":"symbols"},":arrow_up:":{"sn":":arrow_up:","cp":"2b06","sns":[],"c":"symbols"},":arrow_up_down:":{"sn":":arrow_up_down:","cp":"2195","sns":[],"c":"symbols"},":arrow_up_small:":{"sn":":arrow_up_small:","cp":"1f53c","sns":[],"c":"symbols"},":arrow_upper_left:":{"sn":":arrow_upper_left:","cp":"2196","sns":[],"c":"symbols"},":arrow_upper_right:":{"sn":":arrow_upper_right:","cp":"2197","sns":[],"c":"symbols"},":arrows_clockwise:":{"sn":":arrows_clockwise:","cp":"1f503","sns":[],"c":"symbols"},":arrows_counterclockwise:":{"sn":":arrows_counterclockwise:","cp":"1f504","sns":[],"c":"symbols"},":asterisk:":{"sn":":asterisk:","cp":"2a-fe0f-20e3","sns":[":keycap_asterisk:"],"c":"symbols"},":atm:":{"sn":":atm:","cp":"1f3e7","sns":[],"c":"symbols"},":atom:":{"sn":":atom:","cp":"269b","sns":[":atom_symbol:"],"c":"symbols"},":b:":{"sn":":b:","cp":"1f171","sns":[],"c":"symbols"},":baby_symbol:":{"sn":":baby_symbol:","cp":"1f6bc","sns":[],"c":"symbols"},":back:":{"sn":":back:","cp":"1f519","sns":[],"c":"symbols"},":baggage_claim:":{"sn":":baggage_claim:","cp":"1f6c4","sns":[],"c":"symbols"},":ballot_box_with_check:":{"sn":":ballot_box_with_check:","cp":"2611","sns":[],"c":"symbols"},":bangbang:":{"sn":":bangbang:","cp":"203c","sns":[],"c":"symbols"},":beginner:":{"sn":":beginner:","cp":"1f530","sns":[],"c":"symbols"},":bell:":{"sn":":bell:","cp":"1f514","sns":[],"c":"symbols"},":biohazard:":{"sn":":biohazard:","cp":"2623","sns":[":biohazard_sign:"],"c":"symbols"},":black_circle:":{"sn":":black_circle:","cp":"26ab","sns":[],"c":"symbols"},":black_heart:":{"sn":":black_heart:","cp":"1f5a4","sns":[],"c":"symbols"},":black_joker:":{"sn":":black_joker:","cp":"1f0cf","sns":[],"c":"symbols"},":black_large_square:":{"sn":":black_large_square:","cp":"2b1b","sns":[],"c":"symbols"},":black_medium_small_square:":{"sn":":black_medium_small_square:","cp":"25fe","sns":[],"c":"symbols"},":black_medium_square:":{"sn":":black_medium_square:","cp":"25fc","sns":[],"c":"symbols"},":black_small_square:":{"sn":":black_small_square:","cp":"25aa","sns":[],"c":"symbols"},":black_square_button:":{"sn":":black_square_button:","cp":"1f532","sns":[],"c":"symbols"},":blue_circle:":{"sn":":blue_circle:","cp":"1f535","sns":[],"c":"symbols"},":blue_heart:":{"sn":":blue_heart:","cp":"1f499","sns":[],"c":"symbols"},":broken_heart:":{"sn":":broken_heart:","cp":"1f494","sns":[],"c":"symbols"},":cancer:":{"sn":":cancer:","cp":"264b","sns":[],"c":"symbols"},":capital_abcd:":{"sn":":capital_abcd:","cp":"1f520","sns":[],"c":"symbols"},":capricorn:":{"sn":":capricorn:","cp":"2651","sns":[],"c":"symbols"},":chart:":{"sn":":chart:","cp":"1f4b9","sns":[],"c":"symbols"},":children_crossing:":{"sn":":children_crossing:","cp":"1f6b8","sns":[],"c":"symbols"},":cinema:":{"sn":":cinema:","cp":"1f3a6","sns":[],"c":"symbols"},":cl:":{"sn":":cl:","cp":"1f191","sns":[],"c":"symbols"},":clock1030:":{"sn":":clock1030:","cp":"1f565","sns":[],"c":"symbols"},":clock10:":{"sn":":clock10:","cp":"1f559","sns":[],"c":"symbols"},":clock1130:":{"sn":":clock1130:","cp":"1f566","sns":[],"c":"symbols"},":clock11:":{"sn":":clock11:","cp":"1f55a","sns":[],"c":"symbols"},":clock1230:":{"sn":":clock1230:","cp":"1f567","sns":[],"c":"symbols"},":clock12:":{"sn":":clock12:","cp":"1f55b","sns":[],"c":"symbols"},":clock130:":{"sn":":clock130:","cp":"1f55c","sns":[],"c":"symbols"},":clock1:":{"sn":":clock1:","cp":"1f550","sns":[],"c":"symbols"},":clock230:":{"sn":":clock230:","cp":"1f55d","sns":[],"c":"symbols"},":clock2:":{"sn":":clock2:","cp":"1f551","sns":[],"c":"symbols"},":clock330:":{"sn":":clock330:","cp":"1f55e","sns":[],"c":"symbols"},":clock3:":{"sn":":clock3:","cp":"1f552","sns":[],"c":"symbols"},":clock430:":{"sn":":clock430:","cp":"1f55f","sns":[],"c":"symbols"},":clock4:":{"sn":":clock4:","cp":"1f553","sns":[],"c":"symbols"},":clock530:":{"sn":":clock530:","cp":"1f560","sns":[],"c":"symbols"},":clock5:":{"sn":":clock5:","cp":"1f554","sns":[],"c":"symbols"},":clock630:":{"sn":":clock630:","cp":"1f561","sns":[],"c":"symbols"},":clock6:":{"sn":":clock6:","cp":"1f555","sns":[],"c":"symbols"},":clock730:":{"sn":":clock730:","cp":"1f562","sns":[],"c":"symbols"},":clock7:":{"sn":":clock7:","cp":"1f556","sns":[],"c":"symbols"},":clock830:":{"sn":":clock830:","cp":"1f563","sns":[],"c":"symbols"},":clock8:":{"sn":":clock8:","cp":"1f557","sns":[],"c":"symbols"},":clock930:":{"sn":":clock930:","cp":"1f564","sns":[],"c":"symbols"},":clock9:":{"sn":":clock9:","cp":"1f558","sns":[],"c":"symbols"},":clubs:":{"sn":":clubs:","cp":"2663","sns":[],"c":"symbols"},":congratulations:":{"sn":":congratulations:","cp":"3297","sns":[],"c":"symbols"},":cool:":{"sn":":cool:","cp":"1f192","sns":[],"c":"symbols"},":copyright:":{"sn":":copyright:","cp":"a9","sns":[],"c":"symbols"},":cross:":{"sn":":cross:","cp":"271d","sns":[":latin_cross:"],"c":"symbols"},":cupid:":{"sn":":cupid:","cp":"1f498","sns":[],"c":"symbols"},":curly_loop:":{"sn":":curly_loop:","cp":"27b0","sns":[],"c":"symbols"},":currency_exchange:":{"sn":":currency_exchange:","cp":"1f4b1","sns":[],"c":"symbols"},":customs:":{"sn":":customs:","cp":"1f6c3","sns":[],"c":"symbols"},":cyclone:":{"sn":":cyclone:","cp":"1f300","sns":[],"c":"symbols"},":diamond_shape_with_a_dot_inside:":{"sn":":diamond_shape_with_a_dot_inside:","cp":"1f4a0","sns":[],"c":"symbols"},":diamonds:":{"sn":":diamonds:","cp":"2666","sns":[],"c":"symbols"},":do_not_litter:":{"sn":":do_not_litter:","cp":"1f6af","sns":[],"c":"symbols"},":eight:":{"sn":":eight:","cp":"38-fe0f-20e3","sns":[],"c":"symbols"},":eight_pointed_black_star:":{"sn":":eight_pointed_black_star:","cp":"2734","sns":[],"c":"symbols"},":eight_spoked_asterisk:":{"sn":":eight_spoked_asterisk:","cp":"2733","sns":[],"c":"symbols"},":eject:":{"sn":":eject:","cp":"23cf","sns":[":eject_symbol:"],"c":"symbols"},":end:":{"sn":":end:","cp":"1f51a","sns":[],"c":"symbols"},":exclamation:":{"sn":":exclamation:","cp":"2757","sns":[],"c":"symbols"},":eye_in_speech_bubble:":{"sn":":eye_in_speech_bubble:","cp":"1f441-fe0f-200d-1f5e8-fe0f","sns":[],"c":"symbols"},":fast_forward:":{"sn":":fast_forward:","cp":"23e9","sns":[],"c":"symbols"},":female_sign:":{"sn":":female_sign:","cp":"2640","sns":[],"c":"symbols"},":five:":{"sn":":five:","cp":"35-fe0f-20e3","sns":[],"c":"symbols"},":fleur-de-lis:":{"sn":":fleur-de-lis:","cp":"269c","sns":[],"c":"symbols"},":flower_playing_cards:":{"sn":":flower_playing_cards:","cp":"1f3b4","sns":[],"c":"symbols"},":four:":{"sn":":four:","cp":"34-fe0f-20e3","sns":[],"c":"symbols"},":free:":{"sn":":free:","cp":"1f193","sns":[],"c":"symbols"},":gemini:":{"sn":":gemini:","cp":"264a","sns":[],"c":"symbols"},":gift_heart:":{"sn":":gift_heart:","cp":"1f49d","sns":[],"c":"symbols"},":globe_with_meridians:":{"sn":":globe_with_meridians:","cp":"1f310","sns":[],"c":"symbols"},":green_heart:":{"sn":":green_heart:","cp":"1f49a","sns":[],"c":"symbols"},":grey_exclamation:":{"sn":":grey_exclamation:","cp":"2755","sns":[],"c":"symbols"},":grey_question:":{"sn":":grey_question:","cp":"2754","sns":[],"c":"symbols"},":hash:":{"sn":":hash:","cp":"23-fe0f-20e3","sns":[],"c":"symbols"},":heart:":{"sn":":heart:","cp":"2764","sns":[],"c":"symbols"},":heart_decoration:":{"sn":":heart_decoration:","cp":"1f49f","sns":[],"c":"symbols"},":heart_exclamation:":{"sn":":heart_exclamation:","cp":"2763","sns":[":heavy_heart_exclamation_mark_ornament:"],"c":"symbols"},":heartbeat:":{"sn":":heartbeat:","cp":"1f493","sns":[],"c":"symbols"},":heartpulse:":{"sn":":heartpulse:","cp":"1f497","sns":[],"c":"symbols"},":hearts:":{"sn":":hearts:","cp":"2665","sns":[],"c":"symbols"},":heavy_check_mark:":{"sn":":heavy_check_mark:","cp":"2714","sns":[],"c":"symbols"},":heavy_division_sign:":{"sn":":heavy_division_sign:","cp":"2797","sns":[],"c":"symbols"},":heavy_dollar_sign:":{"sn":":heavy_dollar_sign:","cp":"1f4b2","sns":[],"c":"symbols"},":heavy_minus_sign:":{"sn":":heavy_minus_sign:","cp":"2796","sns":[],"c":"symbols"},":heavy_multiplication_x:":{"sn":":heavy_multiplication_x:","cp":"2716","sns":[],"c":"symbols"},":heavy_plus_sign:":{"sn":":heavy_plus_sign:","cp":"2795","sns":[],"c":"symbols"},":high_brightness:":{"sn":":high_brightness:","cp":"1f506","sns":[],"c":"symbols"},":hotsprings:":{"sn":":hotsprings:","cp":"2668","sns":[],"c":"symbols"},":id:":{"sn":":id:","cp":"1f194","sns":[],"c":"symbols"},":ideograph_advantage:":{"sn":":ideograph_advantage:","cp":"1f250","sns":[],"c":"symbols"},":information_source:":{"sn":":information_source:","cp":"2139","sns":[],"c":"symbols"},":interrobang:":{"sn":":interrobang:","cp":"2049","sns":[],"c":"symbols"},":keycap_ten:":{"sn":":keycap_ten:","cp":"1f51f","sns":[],"c":"symbols"},":koko:":{"sn":":koko:","cp":"1f201","sns":[],"c":"symbols"},":large_blue_diamond:":{"sn":":large_blue_diamond:","cp":"1f537","sns":[],"c":"symbols"},":large_orange_diamond:":{"sn":":large_orange_diamond:","cp":"1f536","sns":[],"c":"symbols"},":left_luggage:":{"sn":":left_luggage:","cp":"1f6c5","sns":[],"c":"symbols"},":left_right_arrow:":{"sn":":left_right_arrow:","cp":"2194","sns":[],"c":"symbols"},":leftwards_arrow_with_hook:":{"sn":":leftwards_arrow_with_hook:","cp":"21a9","sns":[],"c":"symbols"},":leo:":{"sn":":leo:","cp":"264c","sns":[],"c":"symbols"},":libra:":{"sn":":libra:","cp":"264e","sns":[],"c":"symbols"},":loop:":{"sn":":loop:","cp":"27bf","sns":[],"c":"symbols"},":loud_sound:":{"sn":":loud_sound:","cp":"1f50a","sns":[],"c":"symbols"},":loudspeaker:":{"sn":":loudspeaker:","cp":"1f4e2","sns":[],"c":"symbols"},":low_brightness:":{"sn":":low_brightness:","cp":"1f505","sns":[],"c":"symbols"},":m:":{"sn":":m:","cp":"24c2","sns":[],"c":"symbols"},":mahjong:":{"sn":":mahjong:","cp":"1f004","sns":[],"c":"symbols"},":male_sign:":{"sn":":male_sign:","cp":"2642","sns":[],"c":"symbols"},":medical_symbol:":{"sn":":medical_symbol:","cp":"2695","sns":[],"c":"symbols"},":mega:":{"sn":":mega:","cp":"1f4e3","sns":[],"c":"symbols"},":menorah:":{"sn":":menorah:","cp":"1f54e","sns":[],"c":"symbols"},":mens:":{"sn":":mens:","cp":"1f6b9","sns":[],"c":"symbols"},":mobile_phone_off:":{"sn":":mobile_phone_off:","cp":"1f4f4","sns":[],"c":"symbols"},":musical_note:":{"sn":":musical_note:","cp":"1f3b5","sns":[],"c":"symbols"},":mute:":{"sn":":mute:","cp":"1f507","sns":[],"c":"symbols"},":name_badge:":{"sn":":name_badge:","cp":"1f4db","sns":[],"c":"symbols"},":negative_squared_cross_mark:":{"sn":":negative_squared_cross_mark:","cp":"274e","sns":[],"c":"symbols"},":new:":{"sn":":new:","cp":"1f195","sns":[],"c":"symbols"},":ng:":{"sn":":ng:","cp":"1f196","sns":[],"c":"symbols"},":nine:":{"sn":":nine:","cp":"39-fe0f-20e3","sns":[],"c":"symbols"},":no_bell:":{"sn":":no_bell:","cp":"1f515","sns":[],"c":"symbols"},":no_bicycles:":{"sn":":no_bicycles:","cp":"1f6b3","sns":[],"c":"symbols"},":no_entry:":{"sn":":no_entry:","cp":"26d4","sns":[],"c":"symbols"},":no_entry_sign:":{"sn":":no_entry_sign:","cp":"1f6ab","sns":[],"c":"symbols"},":no_mobile_phones:":{"sn":":no_mobile_phones:","cp":"1f4f5","sns":[],"c":"symbols"},":no_pedestrians:":{"sn":":no_pedestrians:","cp":"1f6b7","sns":[],"c":"symbols"},":no_smoking:":{"sn":":no_smoking:","cp":"1f6ad","sns":[],"c":"symbols"},":non-potable_water:":{"sn":":non-potable_water:","cp":"1f6b1","sns":[],"c":"symbols"},":notes:":{"sn":":notes:","cp":"1f3b6","sns":[],"c":"symbols"},":o2:":{"sn":":o2:","cp":"1f17e","sns":[],"c":"symbols"},":o:":{"sn":":o:","cp":"2b55","sns":[],"c":"symbols"},":octagonal_sign:":{"sn":":octagonal_sign:","cp":"1f6d1","sns":[":stop_sign:"],"c":"symbols"},":ok:":{"sn":":ok:","cp":"1f197","sns":[],"c":"symbols"},":om_symbol:":{"sn":":om_symbol:","cp":"1f549","sns":[],"c":"symbols"},":on:":{"sn":":on:","cp":"1f51b","sns":[],"c":"symbols"},":one:":{"sn":":one:","cp":"31-fe0f-20e3","sns":[],"c":"symbols"},":ophiuchus:":{"sn":":ophiuchus:","cp":"26ce","sns":[],"c":"symbols"},":orange_heart:":{"sn":":orange_heart:","cp":"1f9e1","sns":[],"c":"symbols"},":orthodox_cross:":{"sn":":orthodox_cross:","cp":"2626","sns":[],"c":"symbols"},":parking:":{"sn":":parking:","cp":"1f17f","sns":[],"c":"symbols"},":part_alternation_mark:":{"sn":":part_alternation_mark:","cp":"303d","sns":[],"c":"symbols"},":passport_control:":{"sn":":passport_control:","cp":"1f6c2","sns":[],"c":"symbols"},":pause_button:":{"sn":":pause_button:","cp":"23f8","sns":[":double_vertical_bar:"],"c":"symbols"},":peace:":{"sn":":peace:","cp":"262e","sns":[":peace_symbol:"],"c":"symbols"},":pisces:":{"sn":":pisces:","cp":"2653","sns":[],"c":"symbols"},":place_of_worship:":{"sn":":place_of_worship:","cp":"1f6d0","sns":[":worship_symbol:"],"c":"symbols"},":play_pause:":{"sn":":play_pause:","cp":"23ef","sns":[],"c":"symbols"},":purple_heart:":{"sn":":purple_heart:","cp":"1f49c","sns":[],"c":"symbols"},":put_litter_in_its_place:":{"sn":":put_litter_in_its_place:","cp":"1f6ae","sns":[],"c":"symbols"},":question:":{"sn":":question:","cp":"2753","sns":[],"c":"symbols"},":radio_button:":{"sn":":radio_button:","cp":"1f518","sns":[],"c":"symbols"},":radioactive:":{"sn":":radioactive:","cp":"2622","sns":[":radioactive_sign:"],"c":"symbols"},":record_button:":{"sn":":record_button:","cp":"23fa","sns":[],"c":"symbols"},":recycle:":{"sn":":recycle:","cp":"267b","sns":[],"c":"symbols"},":red_circle:":{"sn":":red_circle:","cp":"1f534","sns":[],"c":"symbols"},":regional_indicator_a:":{"sn":":regional_indicator_a:","cp":"1f1e6","sns":[],"c":"symbols"},":regional_indicator_b:":{"sn":":regional_indicator_b:","cp":"1f1e7","sns":[],"c":"symbols"},":regional_indicator_c:":{"sn":":regional_indicator_c:","cp":"1f1e8","sns":[],"c":"symbols"},":regional_indicator_d:":{"sn":":regional_indicator_d:","cp":"1f1e9","sns":[],"c":"symbols"},":regional_indicator_e:":{"sn":":regional_indicator_e:","cp":"1f1ea","sns":[],"c":"symbols"},":regional_indicator_f:":{"sn":":regional_indicator_f:","cp":"1f1eb","sns":[],"c":"symbols"},":regional_indicator_g:":{"sn":":regional_indicator_g:","cp":"1f1ec","sns":[],"c":"symbols"},":regional_indicator_h:":{"sn":":regional_indicator_h:","cp":"1f1ed","sns":[],"c":"symbols"},":regional_indicator_i:":{"sn":":regional_indicator_i:","cp":"1f1ee","sns":[],"c":"symbols"},":regional_indicator_j:":{"sn":":regional_indicator_j:","cp":"1f1ef","sns":[],"c":"symbols"},":regional_indicator_k:":{"sn":":regional_indicator_k:","cp":"1f1f0","sns":[],"c":"symbols"},":regional_indicator_l:":{"sn":":regional_indicator_l:","cp":"1f1f1","sns":[],"c":"symbols"},":regional_indicator_m:":{"sn":":regional_indicator_m:","cp":"1f1f2","sns":[],"c":"symbols"},":regional_indicator_n:":{"sn":":regional_indicator_n:","cp":"1f1f3","sns":[],"c":"symbols"},":regional_indicator_o:":{"sn":":regional_indicator_o:","cp":"1f1f4","sns":[],"c":"symbols"},":regional_indicator_p:":{"sn":":regional_indicator_p:","cp":"1f1f5","sns":[],"c":"symbols"},":regional_indicator_q:":{"sn":":regional_indicator_q:","cp":"1f1f6","sns":[],"c":"symbols"},":regional_indicator_r:":{"sn":":regional_indicator_r:","cp":"1f1f7","sns":[],"c":"symbols"},":regional_indicator_s:":{"sn":":regional_indicator_s:","cp":"1f1f8","sns":[],"c":"symbols"},":regional_indicator_t:":{"sn":":regional_indicator_t:","cp":"1f1f9","sns":[],"c":"symbols"},":regional_indicator_u:":{"sn":":regional_indicator_u:","cp":"1f1fa","sns":[],"c":"symbols"},":regional_indicator_v:":{"sn":":regional_indicator_v:","cp":"1f1fb","sns":[],"c":"symbols"},":regional_indicator_w:":{"sn":":regional_indicator_w:","cp":"1f1fc","sns":[],"c":"symbols"},":regional_indicator_x:":{"sn":":regional_indicator_x:","cp":"1f1fd","sns":[],"c":"symbols"},":regional_indicator_y:":{"sn":":regional_indicator_y:","cp":"1f1fe","sns":[],"c":"symbols"},":regional_indicator_z:":{"sn":":regional_indicator_z:","cp":"1f1ff","sns":[],"c":"symbols"},":registered:":{"sn":":registered:","cp":"ae","sns":[],"c":"symbols"},":repeat:":{"sn":":repeat:","cp":"1f501","sns":[],"c":"symbols"},":repeat_one:":{"sn":":repeat_one:","cp":"1f502","sns":[],"c":"symbols"},":restroom:":{"sn":":restroom:","cp":"1f6bb","sns":[],"c":"symbols"},":revolving_hearts:":{"sn":":revolving_hearts:","cp":"1f49e","sns":[],"c":"symbols"},":rewind:":{"sn":":rewind:","cp":"23ea","sns":[],"c":"symbols"},":sa:":{"sn":":sa:","cp":"1f202","sns":[],"c":"symbols"},":sagittarius:":{"sn":":sagittarius:","cp":"2650","sns":[],"c":"symbols"},":scorpius:":{"sn":":scorpius:","cp":"264f","sns":[],"c":"symbols"},":secret:":{"sn":":secret:","cp":"3299","sns":[],"c":"symbols"},":seven:":{"sn":":seven:","cp":"37-fe0f-20e3","sns":[],"c":"symbols"},":signal_strength:":{"sn":":signal_strength:","cp":"1f4f6","sns":[],"c":"symbols"},":six:":{"sn":":six:","cp":"36-fe0f-20e3","sns":[],"c":"symbols"},":six_pointed_star:":{"sn":":six_pointed_star:","cp":"1f52f","sns":[],"c":"symbols"},":skull_crossbones:":{"sn":":skull_crossbones:","cp":"2620","sns":[":skull_and_crossbones:"],"c":"symbols"},":small_blue_diamond:":{"sn":":small_blue_diamond:","cp":"1f539","sns":[],"c":"symbols"},":small_orange_diamond:":{"sn":":small_orange_diamond:","cp":"1f538","sns":[],"c":"symbols"},":small_red_triangle:":{"sn":":small_red_triangle:","cp":"1f53a","sns":[],"c":"symbols"},":small_red_triangle_down:":{"sn":":small_red_triangle_down:","cp":"1f53b","sns":[],"c":"symbols"},":soon:":{"sn":":soon:","cp":"1f51c","sns":[],"c":"symbols"},":sos:":{"sn":":sos:","cp":"1f198","sns":[],"c":"symbols"},":sound:":{"sn":":sound:","cp":"1f509","sns":[],"c":"symbols"},":spades:":{"sn":":spades:","cp":"2660","sns":[],"c":"symbols"},":sparkle:":{"sn":":sparkle:","cp":"2747","sns":[],"c":"symbols"},":sparkling_heart:":{"sn":":sparkling_heart:","cp":"1f496","sns":[],"c":"symbols"},":speaker:":{"sn":":speaker:","cp":"1f508","sns":[],"c":"symbols"},":speech_balloon:":{"sn":":speech_balloon:","cp":"1f4ac","sns":[],"c":"symbols"},":speech_left:":{"sn":":speech_left:","cp":"1f5e8-fe0f","sns":[":left_speech_bubble:"],"c":"symbols"},":star_and_crescent:":{"sn":":star_and_crescent:","cp":"262a","sns":[],"c":"symbols"},":star_of_david:":{"sn":":star_of_david:","cp":"2721","sns":[],"c":"symbols"},":stop_button:":{"sn":":stop_button:","cp":"23f9","sns":[],"c":"symbols"},":symbols:":{"sn":":symbols:","cp":"1f523","sns":[],"c":"symbols"},":taurus:":{"sn":":taurus:","cp":"2649","sns":[],"c":"symbols"},":thought_balloon:":{"sn":":thought_balloon:","cp":"1f4ad","sns":[],"c":"symbols"},":three:":{"sn":":three:","cp":"33-fe0f-20e3","sns":[],"c":"symbols"},":tm:":{"sn":":tm:","cp":"2122","sns":[],"c":"symbols"},":top:":{"sn":":top:","cp":"1f51d","sns":[],"c":"symbols"},":track_next:":{"sn":":track_next:","cp":"23ed","sns":[":next_track:"],"c":"symbols"},":track_previous:":{"sn":":track_previous:","cp":"23ee","sns":[":previous_track:"],"c":"symbols"},":trident:":{"sn":":trident:","cp":"1f531","sns":[],"c":"symbols"},":twisted_rightwards_arrows:":{"sn":":twisted_rightwards_arrows:","cp":"1f500","sns":[],"c":"symbols"},":two:":{"sn":":two:","cp":"32-fe0f-20e3","sns":[],"c":"symbols"},":two_hearts:":{"sn":":two_hearts:","cp":"1f495","sns":[],"c":"symbols"},":u5272:":{"sn":":u5272:","cp":"1f239","sns":[],"c":"symbols"},":u5408:":{"sn":":u5408:","cp":"1f234","sns":[],"c":"symbols"},":u55b6:":{"sn":":u55b6:","cp":"1f23a","sns":[],"c":"symbols"},":u6307:":{"sn":":u6307:","cp":"1f22f","sns":[],"c":"symbols"},":u6708:":{"sn":":u6708:","cp":"1f237","sns":[],"c":"symbols"},":u6709:":{"sn":":u6709:","cp":"1f236","sns":[],"c":"symbols"},":u6e80:":{"sn":":u6e80:","cp":"1f235","sns":[],"c":"symbols"},":u7121:":{"sn":":u7121:","cp":"1f21a","sns":[],"c":"symbols"},":u7533:":{"sn":":u7533:","cp":"1f238","sns":[],"c":"symbols"},":u7981:":{"sn":":u7981:","cp":"1f232","sns":[],"c":"symbols"},":u7a7a:":{"sn":":u7a7a:","cp":"1f233","sns":[],"c":"symbols"},":underage:":{"sn":":underage:","cp":"1f51e","sns":[],"c":"symbols"},":up:":{"sn":":up:","cp":"1f199","sns":[],"c":"symbols"},":vibration_mode:":{"sn":":vibration_mode:","cp":"1f4f3","sns":[],"c":"symbols"},":virgo:":{"sn":":virgo:","cp":"264d","sns":[],"c":"symbols"},":vs:":{"sn":":vs:","cp":"1f19a","sns":[],"c":"symbols"},":warning:":{"sn":":warning:","cp":"26a0","sns":[],"c":"symbols"},":wavy_dash:":{"sn":":wavy_dash:","cp":"3030","sns":[],"c":"symbols"},":wc:":{"sn":":wc:","cp":"1f6be","sns":[],"c":"symbols"},":wheel_of_dharma:":{"sn":":wheel_of_dharma:","cp":"2638","sns":[],"c":"symbols"},":wheelchair:":{"sn":":wheelchair:","cp":"267f","sns":[],"c":"symbols"},":white_check_mark:":{"sn":":white_check_mark:","cp":"2705","sns":[],"c":"symbols"},":white_circle:":{"sn":":white_circle:","cp":"26aa","sns":[],"c":"symbols"},":white_flower:":{"sn":":white_flower:","cp":"1f4ae","sns":[],"c":"symbols"},":white_large_square:":{"sn":":white_large_square:","cp":"2b1c","sns":[],"c":"symbols"},":white_medium_small_square:":{"sn":":white_medium_small_square:","cp":"25fd","sns":[],"c":"symbols"},":white_medium_square:":{"sn":":white_medium_square:","cp":"25fb","sns":[],"c":"symbols"},":white_small_square:":{"sn":":white_small_square:","cp":"25ab","sns":[],"c":"symbols"},":white_square_button:":{"sn":":white_square_button:","cp":"1f533","sns":[],"c":"symbols"},":womens:":{"sn":":womens:","cp":"1f6ba","sns":[],"c":"symbols"},":x:":{"sn":":x:","cp":"274c","sns":[],"c":"symbols"},":yellow_heart:":{"sn":":yellow_heart:","cp":"1f49b","sns":[],"c":"symbols"},":yin_yang:":{"sn":":yin_yang:","cp":"262f","sns":[],"c":"symbols"},":zero:":{"sn":":zero:","cp":"30-fe0f-20e3","sns":[],"c":"symbols"},":zzz:":{"sn":":zzz:","cp":"1f4a4","sns":[],"c":"symbols"}},"flags":{":checkered_flag:":{"sn":":checkered_flag:","cp":"1f3c1","sns":[],"c":"flags"},":crossed_flags:":{"sn":":crossed_flags:","cp":"1f38c","sns":[],"c":"flags"},":england:":{"sn":":england:","cp":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","sns":[],"c":"flags"},":flag_ac:":{"sn":":flag_ac:","cp":"1f1e6-1f1e8","sns":[":ac:"],"c":"flags"},":flag_ad:":{"sn":":flag_ad:","cp":"1f1e6-1f1e9","sns":[":ad:"],"c":"flags"},":flag_ae:":{"sn":":flag_ae:","cp":"1f1e6-1f1ea","sns":[":ae:"],"c":"flags"},":flag_af:":{"sn":":flag_af:","cp":"1f1e6-1f1eb","sns":[":af:"],"c":"flags"},":flag_ag:":{"sn":":flag_ag:","cp":"1f1e6-1f1ec","sns":[":ag:"],"c":"flags"},":flag_ai:":{"sn":":flag_ai:","cp":"1f1e6-1f1ee","sns":[":ai:"],"c":"flags"},":flag_al:":{"sn":":flag_al:","cp":"1f1e6-1f1f1","sns":[":al:"],"c":"flags"},":flag_am:":{"sn":":flag_am:","cp":"1f1e6-1f1f2","sns":[":am:"],"c":"flags"},":flag_ao:":{"sn":":flag_ao:","cp":"1f1e6-1f1f4","sns":[":ao:"],"c":"flags"},":flag_aq:":{"sn":":flag_aq:","cp":"1f1e6-1f1f6","sns":[":aq:"],"c":"flags"},":flag_ar:":{"sn":":flag_ar:","cp":"1f1e6-1f1f7","sns":[":ar:"],"c":"flags"},":flag_as:":{"sn":":flag_as:","cp":"1f1e6-1f1f8","sns":[":as:"],"c":"flags"},":flag_at:":{"sn":":flag_at:","cp":"1f1e6-1f1f9","sns":[":at:"],"c":"flags"},":flag_au:":{"sn":":flag_au:","cp":"1f1e6-1f1fa","sns":[":au:"],"c":"flags"},":flag_aw:":{"sn":":flag_aw:","cp":"1f1e6-1f1fc","sns":[":aw:"],"c":"flags"},":flag_ax:":{"sn":":flag_ax:","cp":"1f1e6-1f1fd","sns":[":ax:"],"c":"flags"},":flag_az:":{"sn":":flag_az:","cp":"1f1e6-1f1ff","sns":[":az:"],"c":"flags"},":flag_ba:":{"sn":":flag_ba:","cp":"1f1e7-1f1e6","sns":[":ba:"],"c":"flags"},":flag_bb:":{"sn":":flag_bb:","cp":"1f1e7-1f1e7","sns":[":bb:"],"c":"flags"},":flag_bd:":{"sn":":flag_bd:","cp":"1f1e7-1f1e9","sns":[":bd:"],"c":"flags"},":flag_be:":{"sn":":flag_be:","cp":"1f1e7-1f1ea","sns":[":be:"],"c":"flags"},":flag_bf:":{"sn":":flag_bf:","cp":"1f1e7-1f1eb","sns":[":bf:"],"c":"flags"},":flag_bg:":{"sn":":flag_bg:","cp":"1f1e7-1f1ec","sns":[":bg:"],"c":"flags"},":flag_bh:":{"sn":":flag_bh:","cp":"1f1e7-1f1ed","sns":[":bh:"],"c":"flags"},":flag_bi:":{"sn":":flag_bi:","cp":"1f1e7-1f1ee","sns":[":bi:"],"c":"flags"},":flag_bj:":{"sn":":flag_bj:","cp":"1f1e7-1f1ef","sns":[":bj:"],"c":"flags"},":flag_bl:":{"sn":":flag_bl:","cp":"1f1e7-1f1f1","sns":[":bl:"],"c":"flags"},":flag_black:":{"sn":":flag_black:","cp":"1f3f4","sns":[":waving_black_flag:"],"c":"flags"},":flag_bm:":{"sn":":flag_bm:","cp":"1f1e7-1f1f2","sns":[":bm:"],"c":"flags"},":flag_bn:":{"sn":":flag_bn:","cp":"1f1e7-1f1f3","sns":[":bn:"],"c":"flags"},":flag_bo:":{"sn":":flag_bo:","cp":"1f1e7-1f1f4","sns":[":bo:"],"c":"flags"},":flag_bq:":{"sn":":flag_bq:","cp":"1f1e7-1f1f6","sns":[":bq:"],"c":"flags"},":flag_br:":{"sn":":flag_br:","cp":"1f1e7-1f1f7","sns":[":br:"],"c":"flags"},":flag_bs:":{"sn":":flag_bs:","cp":"1f1e7-1f1f8","sns":[":bs:"],"c":"flags"},":flag_bt:":{"sn":":flag_bt:","cp":"1f1e7-1f1f9","sns":[":bt:"],"c":"flags"},":flag_bv:":{"sn":":flag_bv:","cp":"1f1e7-1f1fb","sns":[":bv:"],"c":"flags"},":flag_bw:":{"sn":":flag_bw:","cp":"1f1e7-1f1fc","sns":[":bw:"],"c":"flags"},":flag_by:":{"sn":":flag_by:","cp":"1f1e7-1f1fe","sns":[":by:"],"c":"flags"},":flag_bz:":{"sn":":flag_bz:","cp":"1f1e7-1f1ff","sns":[":bz:"],"c":"flags"},":flag_ca:":{"sn":":flag_ca:","cp":"1f1e8-1f1e6","sns":[":ca:"],"c":"flags"},":flag_cc:":{"sn":":flag_cc:","cp":"1f1e8-1f1e8","sns":[":cc:"],"c":"flags"},":flag_cd:":{"sn":":flag_cd:","cp":"1f1e8-1f1e9","sns":[":congo:"],"c":"flags"},":flag_cf:":{"sn":":flag_cf:","cp":"1f1e8-1f1eb","sns":[":cf:"],"c":"flags"},":flag_cg:":{"sn":":flag_cg:","cp":"1f1e8-1f1ec","sns":[":cg:"],"c":"flags"},":flag_ch:":{"sn":":flag_ch:","cp":"1f1e8-1f1ed","sns":[":ch:"],"c":"flags"},":flag_ci:":{"sn":":flag_ci:","cp":"1f1e8-1f1ee","sns":[":ci:"],"c":"flags"},":flag_ck:":{"sn":":flag_ck:","cp":"1f1e8-1f1f0","sns":[":ck:"],"c":"flags"},":flag_cl:":{"sn":":flag_cl:","cp":"1f1e8-1f1f1","sns":[":chile:"],"c":"flags"},":flag_cm:":{"sn":":flag_cm:","cp":"1f1e8-1f1f2","sns":[":cm:"],"c":"flags"},":flag_cn:":{"sn":":flag_cn:","cp":"1f1e8-1f1f3","sns":[":cn:"],"c":"flags"},":flag_co:":{"sn":":flag_co:","cp":"1f1e8-1f1f4","sns":[":co:"],"c":"flags"},":flag_cp:":{"sn":":flag_cp:","cp":"1f1e8-1f1f5","sns":[":cp:"],"c":"flags"},":flag_cr:":{"sn":":flag_cr:","cp":"1f1e8-1f1f7","sns":[":cr:"],"c":"flags"},":flag_cu:":{"sn":":flag_cu:","cp":"1f1e8-1f1fa","sns":[":cu:"],"c":"flags"},":flag_cv:":{"sn":":flag_cv:","cp":"1f1e8-1f1fb","sns":[":cv:"],"c":"flags"},":flag_cw:":{"sn":":flag_cw:","cp":"1f1e8-1f1fc","sns":[":cw:"],"c":"flags"},":flag_cx:":{"sn":":flag_cx:","cp":"1f1e8-1f1fd","sns":[":cx:"],"c":"flags"},":flag_cy:":{"sn":":flag_cy:","cp":"1f1e8-1f1fe","sns":[":cy:"],"c":"flags"},":flag_cz:":{"sn":":flag_cz:","cp":"1f1e8-1f1ff","sns":[":cz:"],"c":"flags"},":flag_de:":{"sn":":flag_de:","cp":"1f1e9-1f1ea","sns":[":de:"],"c":"flags"},":flag_dg:":{"sn":":flag_dg:","cp":"1f1e9-1f1ec","sns":[":dg:"],"c":"flags"},":flag_dj:":{"sn":":flag_dj:","cp":"1f1e9-1f1ef","sns":[":dj:"],"c":"flags"},":flag_dk:":{"sn":":flag_dk:","cp":"1f1e9-1f1f0","sns":[":dk:"],"c":"flags"},":flag_dm:":{"sn":":flag_dm:","cp":"1f1e9-1f1f2","sns":[":dm:"],"c":"flags"},":flag_do:":{"sn":":flag_do:","cp":"1f1e9-1f1f4","sns":[":do:"],"c":"flags"},":flag_dz:":{"sn":":flag_dz:","cp":"1f1e9-1f1ff","sns":[":dz:"],"c":"flags"},":flag_ea:":{"sn":":flag_ea:","cp":"1f1ea-1f1e6","sns":[":ea:"],"c":"flags"},":flag_ec:":{"sn":":flag_ec:","cp":"1f1ea-1f1e8","sns":[":ec:"],"c":"flags"},":flag_ee:":{"sn":":flag_ee:","cp":"1f1ea-1f1ea","sns":[":ee:"],"c":"flags"},":flag_eg:":{"sn":":flag_eg:","cp":"1f1ea-1f1ec","sns":[":eg:"],"c":"flags"},":flag_eh:":{"sn":":flag_eh:","cp":"1f1ea-1f1ed","sns":[":eh:"],"c":"flags"},":flag_er:":{"sn":":flag_er:","cp":"1f1ea-1f1f7","sns":[":er:"],"c":"flags"},":flag_es:":{"sn":":flag_es:","cp":"1f1ea-1f1f8","sns":[":es:"],"c":"flags"},":flag_et:":{"sn":":flag_et:","cp":"1f1ea-1f1f9","sns":[":et:"],"c":"flags"},":flag_eu:":{"sn":":flag_eu:","cp":"1f1ea-1f1fa","sns":[":eu:"],"c":"flags"},":flag_fi:":{"sn":":flag_fi:","cp":"1f1eb-1f1ee","sns":[":fi:"],"c":"flags"},":flag_fj:":{"sn":":flag_fj:","cp":"1f1eb-1f1ef","sns":[":fj:"],"c":"flags"},":flag_fk:":{"sn":":flag_fk:","cp":"1f1eb-1f1f0","sns":[":fk:"],"c":"flags"},":flag_fm:":{"sn":":flag_fm:","cp":"1f1eb-1f1f2","sns":[":fm:"],"c":"flags"},":flag_fo:":{"sn":":flag_fo:","cp":"1f1eb-1f1f4","sns":[":fo:"],"c":"flags"},":flag_fr:":{"sn":":flag_fr:","cp":"1f1eb-1f1f7","sns":[":fr:"],"c":"flags"},":flag_ga:":{"sn":":flag_ga:","cp":"1f1ec-1f1e6","sns":[":ga:"],"c":"flags"},":flag_gb:":{"sn":":flag_gb:","cp":"1f1ec-1f1e7","sns":[":gb:"],"c":"flags"},":flag_gd:":{"sn":":flag_gd:","cp":"1f1ec-1f1e9","sns":[":gd:"],"c":"flags"},":flag_ge:":{"sn":":flag_ge:","cp":"1f1ec-1f1ea","sns":[":ge:"],"c":"flags"},":flag_gf:":{"sn":":flag_gf:","cp":"1f1ec-1f1eb","sns":[":gf:"],"c":"flags"},":flag_gg:":{"sn":":flag_gg:","cp":"1f1ec-1f1ec","sns":[":gg:"],"c":"flags"},":flag_gh:":{"sn":":flag_gh:","cp":"1f1ec-1f1ed","sns":[":gh:"],"c":"flags"},":flag_gi:":{"sn":":flag_gi:","cp":"1f1ec-1f1ee","sns":[":gi:"],"c":"flags"},":flag_gl:":{"sn":":flag_gl:","cp":"1f1ec-1f1f1","sns":[":gl:"],"c":"flags"},":flag_gm:":{"sn":":flag_gm:","cp":"1f1ec-1f1f2","sns":[":gm:"],"c":"flags"},":flag_gn:":{"sn":":flag_gn:","cp":"1f1ec-1f1f3","sns":[":gn:"],"c":"flags"},":flag_gp:":{"sn":":flag_gp:","cp":"1f1ec-1f1f5","sns":[":gp:"],"c":"flags"},":flag_gq:":{"sn":":flag_gq:","cp":"1f1ec-1f1f6","sns":[":gq:"],"c":"flags"},":flag_gr:":{"sn":":flag_gr:","cp":"1f1ec-1f1f7","sns":[":gr:"],"c":"flags"},":flag_gs:":{"sn":":flag_gs:","cp":"1f1ec-1f1f8","sns":[":gs:"],"c":"flags"},":flag_gt:":{"sn":":flag_gt:","cp":"1f1ec-1f1f9","sns":[":gt:"],"c":"flags"},":flag_gu:":{"sn":":flag_gu:","cp":"1f1ec-1f1fa","sns":[":gu:"],"c":"flags"},":flag_gw:":{"sn":":flag_gw:","cp":"1f1ec-1f1fc","sns":[":gw:"],"c":"flags"},":flag_gy:":{"sn":":flag_gy:","cp":"1f1ec-1f1fe","sns":[":gy:"],"c":"flags"},":flag_hk:":{"sn":":flag_hk:","cp":"1f1ed-1f1f0","sns":[":hk:"],"c":"flags"},":flag_hm:":{"sn":":flag_hm:","cp":"1f1ed-1f1f2","sns":[":hm:"],"c":"flags"},":flag_hn:":{"sn":":flag_hn:","cp":"1f1ed-1f1f3","sns":[":hn:"],"c":"flags"},":flag_hr:":{"sn":":flag_hr:","cp":"1f1ed-1f1f7","sns":[":hr:"],"c":"flags"},":flag_ht:":{"sn":":flag_ht:","cp":"1f1ed-1f1f9","sns":[":ht:"],"c":"flags"},":flag_hu:":{"sn":":flag_hu:","cp":"1f1ed-1f1fa","sns":[":hu:"],"c":"flags"},":flag_ic:":{"sn":":flag_ic:","cp":"1f1ee-1f1e8","sns":[":ic:"],"c":"flags"},":flag_id:":{"sn":":flag_id:","cp":"1f1ee-1f1e9","sns":[":indonesia:"],"c":"flags"},":flag_ie:":{"sn":":flag_ie:","cp":"1f1ee-1f1ea","sns":[":ie:"],"c":"flags"},":flag_il:":{"sn":":flag_il:","cp":"1f1ee-1f1f1","sns":[":il:"],"c":"flags"},":flag_im:":{"sn":":flag_im:","cp":"1f1ee-1f1f2","sns":[":im:"],"c":"flags"},":flag_in:":{"sn":":flag_in:","cp":"1f1ee-1f1f3","sns":[":in:"],"c":"flags"},":flag_io:":{"sn":":flag_io:","cp":"1f1ee-1f1f4","sns":[":io:"],"c":"flags"},":flag_iq:":{"sn":":flag_iq:","cp":"1f1ee-1f1f6","sns":[":iq:"],"c":"flags"},":flag_ir:":{"sn":":flag_ir:","cp":"1f1ee-1f1f7","sns":[":ir:"],"c":"flags"},":flag_is:":{"sn":":flag_is:","cp":"1f1ee-1f1f8","sns":[":is:"],"c":"flags"},":flag_it:":{"sn":":flag_it:","cp":"1f1ee-1f1f9","sns":[":it:"],"c":"flags"},":flag_je:":{"sn":":flag_je:","cp":"1f1ef-1f1ea","sns":[":je:"],"c":"flags"},":flag_jm:":{"sn":":flag_jm:","cp":"1f1ef-1f1f2","sns":[":jm:"],"c":"flags"},":flag_jo:":{"sn":":flag_jo:","cp":"1f1ef-1f1f4","sns":[":jo:"],"c":"flags"},":flag_jp:":{"sn":":flag_jp:","cp":"1f1ef-1f1f5","sns":[":jp:"],"c":"flags"},":flag_ke:":{"sn":":flag_ke:","cp":"1f1f0-1f1ea","sns":[":ke:"],"c":"flags"},":flag_kg:":{"sn":":flag_kg:","cp":"1f1f0-1f1ec","sns":[":kg:"],"c":"flags"},":flag_kh:":{"sn":":flag_kh:","cp":"1f1f0-1f1ed","sns":[":kh:"],"c":"flags"},":flag_ki:":{"sn":":flag_ki:","cp":"1f1f0-1f1ee","sns":[":ki:"],"c":"flags"},":flag_km:":{"sn":":flag_km:","cp":"1f1f0-1f1f2","sns":[":km:"],"c":"flags"},":flag_kn:":{"sn":":flag_kn:","cp":"1f1f0-1f1f3","sns":[":kn:"],"c":"flags"},":flag_kp:":{"sn":":flag_kp:","cp":"1f1f0-1f1f5","sns":[":kp:"],"c":"flags"},":flag_kr:":{"sn":":flag_kr:","cp":"1f1f0-1f1f7","sns":[":kr:"],"c":"flags"},":flag_kw:":{"sn":":flag_kw:","cp":"1f1f0-1f1fc","sns":[":kw:"],"c":"flags"},":flag_ky:":{"sn":":flag_ky:","cp":"1f1f0-1f1fe","sns":[":ky:"],"c":"flags"},":flag_kz:":{"sn":":flag_kz:","cp":"1f1f0-1f1ff","sns":[":kz:"],"c":"flags"},":flag_la:":{"sn":":flag_la:","cp":"1f1f1-1f1e6","sns":[":la:"],"c":"flags"},":flag_lb:":{"sn":":flag_lb:","cp":"1f1f1-1f1e7","sns":[":lb:"],"c":"flags"},":flag_lc:":{"sn":":flag_lc:","cp":"1f1f1-1f1e8","sns":[":lc:"],"c":"flags"},":flag_li:":{"sn":":flag_li:","cp":"1f1f1-1f1ee","sns":[":li:"],"c":"flags"},":flag_lk:":{"sn":":flag_lk:","cp":"1f1f1-1f1f0","sns":[":lk:"],"c":"flags"},":flag_lr:":{"sn":":flag_lr:","cp":"1f1f1-1f1f7","sns":[":lr:"],"c":"flags"},":flag_ls:":{"sn":":flag_ls:","cp":"1f1f1-1f1f8","sns":[":ls:"],"c":"flags"},":flag_lt:":{"sn":":flag_lt:","cp":"1f1f1-1f1f9","sns":[":lt:"],"c":"flags"},":flag_lu:":{"sn":":flag_lu:","cp":"1f1f1-1f1fa","sns":[":lu:"],"c":"flags"},":flag_lv:":{"sn":":flag_lv:","cp":"1f1f1-1f1fb","sns":[":lv:"],"c":"flags"},":flag_ly:":{"sn":":flag_ly:","cp":"1f1f1-1f1fe","sns":[":ly:"],"c":"flags"},":flag_ma:":{"sn":":flag_ma:","cp":"1f1f2-1f1e6","sns":[":ma:"],"c":"flags"},":flag_mc:":{"sn":":flag_mc:","cp":"1f1f2-1f1e8","sns":[":mc:"],"c":"flags"},":flag_md:":{"sn":":flag_md:","cp":"1f1f2-1f1e9","sns":[":md:"],"c":"flags"},":flag_me:":{"sn":":flag_me:","cp":"1f1f2-1f1ea","sns":[":me:"],"c":"flags"},":flag_mf:":{"sn":":flag_mf:","cp":"1f1f2-1f1eb","sns":[":mf:"],"c":"flags"},":flag_mg:":{"sn":":flag_mg:","cp":"1f1f2-1f1ec","sns":[":mg:"],"c":"flags"},":flag_mh:":{"sn":":flag_mh:","cp":"1f1f2-1f1ed","sns":[":mh:"],"c":"flags"},":flag_mk:":{"sn":":flag_mk:","cp":"1f1f2-1f1f0","sns":[":mk:"],"c":"flags"},":flag_ml:":{"sn":":flag_ml:","cp":"1f1f2-1f1f1","sns":[":ml:"],"c":"flags"},":flag_mm:":{"sn":":flag_mm:","cp":"1f1f2-1f1f2","sns":[":mm:"],"c":"flags"},":flag_mn:":{"sn":":flag_mn:","cp":"1f1f2-1f1f3","sns":[":mn:"],"c":"flags"},":flag_mo:":{"sn":":flag_mo:","cp":"1f1f2-1f1f4","sns":[":mo:"],"c":"flags"},":flag_mp:":{"sn":":flag_mp:","cp":"1f1f2-1f1f5","sns":[":mp:"],"c":"flags"},":flag_mq:":{"sn":":flag_mq:","cp":"1f1f2-1f1f6","sns":[":mq:"],"c":"flags"},":flag_mr:":{"sn":":flag_mr:","cp":"1f1f2-1f1f7","sns":[":mr:"],"c":"flags"},":flag_ms:":{"sn":":flag_ms:","cp":"1f1f2-1f1f8","sns":[":ms:"],"c":"flags"},":flag_mt:":{"sn":":flag_mt:","cp":"1f1f2-1f1f9","sns":[":mt:"],"c":"flags"},":flag_mu:":{"sn":":flag_mu:","cp":"1f1f2-1f1fa","sns":[":mu:"],"c":"flags"},":flag_mv:":{"sn":":flag_mv:","cp":"1f1f2-1f1fb","sns":[":mv:"],"c":"flags"},":flag_mw:":{"sn":":flag_mw:","cp":"1f1f2-1f1fc","sns":[":mw:"],"c":"flags"},":flag_mx:":{"sn":":flag_mx:","cp":"1f1f2-1f1fd","sns":[":mx:"],"c":"flags"},":flag_my:":{"sn":":flag_my:","cp":"1f1f2-1f1fe","sns":[":my:"],"c":"flags"},":flag_mz:":{"sn":":flag_mz:","cp":"1f1f2-1f1ff","sns":[":mz:"],"c":"flags"},":flag_na:":{"sn":":flag_na:","cp":"1f1f3-1f1e6","sns":[":na:"],"c":"flags"},":flag_nc:":{"sn":":flag_nc:","cp":"1f1f3-1f1e8","sns":[":nc:"],"c":"flags"},":flag_ne:":{"sn":":flag_ne:","cp":"1f1f3-1f1ea","sns":[":ne:"],"c":"flags"},":flag_nf:":{"sn":":flag_nf:","cp":"1f1f3-1f1eb","sns":[":nf:"],"c":"flags"},":flag_ng:":{"sn":":flag_ng:","cp":"1f1f3-1f1ec","sns":[":nigeria:"],"c":"flags"},":flag_ni:":{"sn":":flag_ni:","cp":"1f1f3-1f1ee","sns":[":ni:"],"c":"flags"},":flag_nl:":{"sn":":flag_nl:","cp":"1f1f3-1f1f1","sns":[":nl:"],"c":"flags"},":flag_no:":{"sn":":flag_no:","cp":"1f1f3-1f1f4","sns":[":no:"],"c":"flags"},":flag_np:":{"sn":":flag_np:","cp":"1f1f3-1f1f5","sns":[":np:"],"c":"flags"},":flag_nr:":{"sn":":flag_nr:","cp":"1f1f3-1f1f7","sns":[":nr:"],"c":"flags"},":flag_nu:":{"sn":":flag_nu:","cp":"1f1f3-1f1fa","sns":[":nu:"],"c":"flags"},":flag_nz:":{"sn":":flag_nz:","cp":"1f1f3-1f1ff","sns":[":nz:"],"c":"flags"},":flag_om:":{"sn":":flag_om:","cp":"1f1f4-1f1f2","sns":[":om:"],"c":"flags"},":flag_pa:":{"sn":":flag_pa:","cp":"1f1f5-1f1e6","sns":[":pa:"],"c":"flags"},":flag_pe:":{"sn":":flag_pe:","cp":"1f1f5-1f1ea","sns":[":pe:"],"c":"flags"},":flag_pf:":{"sn":":flag_pf:","cp":"1f1f5-1f1eb","sns":[":pf:"],"c":"flags"},":flag_pg:":{"sn":":flag_pg:","cp":"1f1f5-1f1ec","sns":[":pg:"],"c":"flags"},":flag_ph:":{"sn":":flag_ph:","cp":"1f1f5-1f1ed","sns":[":ph:"],"c":"flags"},":flag_pk:":{"sn":":flag_pk:","cp":"1f1f5-1f1f0","sns":[":pk:"],"c":"flags"},":flag_pl:":{"sn":":flag_pl:","cp":"1f1f5-1f1f1","sns":[":pl:"],"c":"flags"},":flag_pm:":{"sn":":flag_pm:","cp":"1f1f5-1f1f2","sns":[":pm:"],"c":"flags"},":flag_pn:":{"sn":":flag_pn:","cp":"1f1f5-1f1f3","sns":[":pn:"],"c":"flags"},":flag_pr:":{"sn":":flag_pr:","cp":"1f1f5-1f1f7","sns":[":pr:"],"c":"flags"},":flag_ps:":{"sn":":flag_ps:","cp":"1f1f5-1f1f8","sns":[":ps:"],"c":"flags"},":flag_pt:":{"sn":":flag_pt:","cp":"1f1f5-1f1f9","sns":[":pt:"],"c":"flags"},":flag_pw:":{"sn":":flag_pw:","cp":"1f1f5-1f1fc","sns":[":pw:"],"c":"flags"},":flag_py:":{"sn":":flag_py:","cp":"1f1f5-1f1fe","sns":[":py:"],"c":"flags"},":flag_qa:":{"sn":":flag_qa:","cp":"1f1f6-1f1e6","sns":[":qa:"],"c":"flags"},":flag_re:":{"sn":":flag_re:","cp":"1f1f7-1f1ea","sns":[":re:"],"c":"flags"},":flag_ro:":{"sn":":flag_ro:","cp":"1f1f7-1f1f4","sns":[":ro:"],"c":"flags"},":flag_rs:":{"sn":":flag_rs:","cp":"1f1f7-1f1f8","sns":[":rs:"],"c":"flags"},":flag_ru:":{"sn":":flag_ru:","cp":"1f1f7-1f1fa","sns":[":ru:"],"c":"flags"},":flag_rw:":{"sn":":flag_rw:","cp":"1f1f7-1f1fc","sns":[":rw:"],"c":"flags"},":flag_sa:":{"sn":":flag_sa:","cp":"1f1f8-1f1e6","sns":[":saudiarabia:",":saudi:"],"c":"flags"},":flag_sb:":{"sn":":flag_sb:","cp":"1f1f8-1f1e7","sns":[":sb:"],"c":"flags"},":flag_sc:":{"sn":":flag_sc:","cp":"1f1f8-1f1e8","sns":[":sc:"],"c":"flags"},":flag_sd:":{"sn":":flag_sd:","cp":"1f1f8-1f1e9","sns":[":sd:"],"c":"flags"},":flag_se:":{"sn":":flag_se:","cp":"1f1f8-1f1ea","sns":[":se:"],"c":"flags"},":flag_sg:":{"sn":":flag_sg:","cp":"1f1f8-1f1ec","sns":[":sg:"],"c":"flags"},":flag_sh:":{"sn":":flag_sh:","cp":"1f1f8-1f1ed","sns":[":sh:"],"c":"flags"},":flag_si:":{"sn":":flag_si:","cp":"1f1f8-1f1ee","sns":[":si:"],"c":"flags"},":flag_sj:":{"sn":":flag_sj:","cp":"1f1f8-1f1ef","sns":[":sj:"],"c":"flags"},":flag_sk:":{"sn":":flag_sk:","cp":"1f1f8-1f1f0","sns":[":sk:"],"c":"flags"},":flag_sl:":{"sn":":flag_sl:","cp":"1f1f8-1f1f1","sns":[":sl:"],"c":"flags"},":flag_sm:":{"sn":":flag_sm:","cp":"1f1f8-1f1f2","sns":[":sm:"],"c":"flags"},":flag_sn:":{"sn":":flag_sn:","cp":"1f1f8-1f1f3","sns":[":sn:"],"c":"flags"},":flag_so:":{"sn":":flag_so:","cp":"1f1f8-1f1f4","sns":[":so:"],"c":"flags"},":flag_sr:":{"sn":":flag_sr:","cp":"1f1f8-1f1f7","sns":[":sr:"],"c":"flags"},":flag_ss:":{"sn":":flag_ss:","cp":"1f1f8-1f1f8","sns":[":ss:"],"c":"flags"},":flag_st:":{"sn":":flag_st:","cp":"1f1f8-1f1f9","sns":[":st:"],"c":"flags"},":flag_sv:":{"sn":":flag_sv:","cp":"1f1f8-1f1fb","sns":[":sv:"],"c":"flags"},":flag_sx:":{"sn":":flag_sx:","cp":"1f1f8-1f1fd","sns":[":sx:"],"c":"flags"},":flag_sy:":{"sn":":flag_sy:","cp":"1f1f8-1f1fe","sns":[":sy:"],"c":"flags"},":flag_sz:":{"sn":":flag_sz:","cp":"1f1f8-1f1ff","sns":[":sz:"],"c":"flags"},":flag_ta:":{"sn":":flag_ta:","cp":"1f1f9-1f1e6","sns":[":ta:"],"c":"flags"},":flag_tc:":{"sn":":flag_tc:","cp":"1f1f9-1f1e8","sns":[":tc:"],"c":"flags"},":flag_td:":{"sn":":flag_td:","cp":"1f1f9-1f1e9","sns":[":td:"],"c":"flags"},":flag_tf:":{"sn":":flag_tf:","cp":"1f1f9-1f1eb","sns":[":tf:"],"c":"flags"},":flag_tg:":{"sn":":flag_tg:","cp":"1f1f9-1f1ec","sns":[":tg:"],"c":"flags"},":flag_th:":{"sn":":flag_th:","cp":"1f1f9-1f1ed","sns":[":th:"],"c":"flags"},":flag_tj:":{"sn":":flag_tj:","cp":"1f1f9-1f1ef","sns":[":tj:"],"c":"flags"},":flag_tk:":{"sn":":flag_tk:","cp":"1f1f9-1f1f0","sns":[":tk:"],"c":"flags"},":flag_tl:":{"sn":":flag_tl:","cp":"1f1f9-1f1f1","sns":[":tl:"],"c":"flags"},":flag_tm:":{"sn":":flag_tm:","cp":"1f1f9-1f1f2","sns":[":turkmenistan:"],"c":"flags"},":flag_tn:":{"sn":":flag_tn:","cp":"1f1f9-1f1f3","sns":[":tn:"],"c":"flags"},":flag_to:":{"sn":":flag_to:","cp":"1f1f9-1f1f4","sns":[":to:"],"c":"flags"},":flag_tr:":{"sn":":flag_tr:","cp":"1f1f9-1f1f7","sns":[":tr:"],"c":"flags"},":flag_tt:":{"sn":":flag_tt:","cp":"1f1f9-1f1f9","sns":[":tt:"],"c":"flags"},":flag_tv:":{"sn":":flag_tv:","cp":"1f1f9-1f1fb","sns":[":tuvalu:"],"c":"flags"},":flag_tw:":{"sn":":flag_tw:","cp":"1f1f9-1f1fc","sns":[":tw:"],"c":"flags"},":flag_tz:":{"sn":":flag_tz:","cp":"1f1f9-1f1ff","sns":[":tz:"],"c":"flags"},":flag_ua:":{"sn":":flag_ua:","cp":"1f1fa-1f1e6","sns":[":ua:"],"c":"flags"},":flag_ug:":{"sn":":flag_ug:","cp":"1f1fa-1f1ec","sns":[":ug:"],"c":"flags"},":flag_um:":{"sn":":flag_um:","cp":"1f1fa-1f1f2","sns":[":um:"],"c":"flags"},":flag_us:":{"sn":":flag_us:","cp":"1f1fa-1f1f8","sns":[":us:"],"c":"flags"},":flag_uy:":{"sn":":flag_uy:","cp":"1f1fa-1f1fe","sns":[":uy:"],"c":"flags"},":flag_uz:":{"sn":":flag_uz:","cp":"1f1fa-1f1ff","sns":[":uz:"],"c":"flags"},":flag_va:":{"sn":":flag_va:","cp":"1f1fb-1f1e6","sns":[":va:"],"c":"flags"},":flag_vc:":{"sn":":flag_vc:","cp":"1f1fb-1f1e8","sns":[":vc:"],"c":"flags"},":flag_ve:":{"sn":":flag_ve:","cp":"1f1fb-1f1ea","sns":[":ve:"],"c":"flags"},":flag_vg:":{"sn":":flag_vg:","cp":"1f1fb-1f1ec","sns":[":vg:"],"c":"flags"},":flag_vi:":{"sn":":flag_vi:","cp":"1f1fb-1f1ee","sns":[":vi:"],"c":"flags"},":flag_vn:":{"sn":":flag_vn:","cp":"1f1fb-1f1f3","sns":[":vn:"],"c":"flags"},":flag_vu:":{"sn":":flag_vu:","cp":"1f1fb-1f1fa","sns":[":vu:"],"c":"flags"},":flag_wf:":{"sn":":flag_wf:","cp":"1f1fc-1f1eb","sns":[":wf:"],"c":"flags"},":flag_white:":{"sn":":flag_white:","cp":"1f3f3","sns":[":waving_white_flag:"],"c":"flags"},":flag_ws:":{"sn":":flag_ws:","cp":"1f1fc-1f1f8","sns":[":ws:"],"c":"flags"},":flag_xk:":{"sn":":flag_xk:","cp":"1f1fd-1f1f0","sns":[":xk:"],"c":"flags"},":flag_ye:":{"sn":":flag_ye:","cp":"1f1fe-1f1ea","sns":[":ye:"],"c":"flags"},":flag_yt:":{"sn":":flag_yt:","cp":"1f1fe-1f1f9","sns":[":yt:"],"c":"flags"},":flag_za:":{"sn":":flag_za:","cp":"1f1ff-1f1e6","sns":[":za:"],"c":"flags"},":flag_zm:":{"sn":":flag_zm:","cp":"1f1ff-1f1f2","sns":[":zm:"],"c":"flags"},":flag_zw:":{"sn":":flag_zw:","cp":"1f1ff-1f1fc","sns":[":zw:"],"c":"flags"},":rainbow_flag:":{"sn":":rainbow_flag:","cp":"1f3f3-fe0f-200d-1f308","sns":[":gay_pride_flag:"],"c":"flags"},":scotland:":{"sn":":scotland:","cp":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","sns":[],"c":"flags"},":triangular_flag_on_post:":{"sn":":triangular_flag_on_post:","cp":"1f6a9","sns":[],"c":"flags"},":united_nations:":{"sn":":united_nations:","cp":"1f1fa-1f1f3","sns":[],"c":"flags"},":wales:":{"sn":":wales:","cp":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","sns":[],"c":"flags"}},"modifiers":{":tone1:":{"sn":":tone1:","cp":"1f3fb","sns":[],"c":"modifier"},":tone2:":{"sn":":tone2:","cp":"1f3fc","sns":[],"c":"modifier"},":tone3:":{"sn":":tone3:","cp":"1f3fd","sns":[],"c":"modifier"},":tone4:":{"sn":":tone4:","cp":"1f3fe","sns":[],"c":"modifier"},":tone5:":{"sn":":tone5:","cp":"1f3ff","sns":[],"c":"modifier"}}}')}}]); //# sourceMappingURL=emojis.js.map \ No newline at end of file diff --git a/src/conversejs/icons.js b/src/conversejs/icons.js index 8db09fc74d2cd9f1f014091322f2eed56549c43d..d38869a4fa77de81c5b727f00441d7c934c61258 100644 --- a/src/conversejs/icons.js +++ b/src/conversejs/icons.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{459:function(c,l,o){o(8);c.exports=function(c){return'\x3c!-- images/icons.svg --\x3e\n<?xml version="1.0" encoding="UTF-8"?>\n\x3c!--\nFont Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n--\x3e\n<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">\n<symbol id="icon-address-book" viewBox="0 0 448 512">\n <path d="M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"></path>\n</symbol>\n<symbol id="icon-angle-double-down" viewBox="0 0 320 512">\n <path d="M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"></path>\n</symbol>\n<symbol id="icon-angle-double-left" viewBox="0 0 448 512">\n <path d="M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-double-right" viewBox="0 0 448 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"></path>\n</symbol>\n<symbol id="icon-angle-double-up" viewBox="0 0 320 512">\n <path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-down" viewBox="0 0 320 512">\n <path d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-left" viewBox="0 0 256 512">\n <path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>\n</symbol>\n<symbol id="icon-angle-right" viewBox="0 0 256 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-up" viewBox="0 0 320 512">\n <path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-down" viewBox="0 0 448 512">\n <path d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-left" viewBox="0 0 448 512">\n <path d="M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-right" viewBox="0 0 448 512">\n <path d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-up" viewBox="0 0 448 512">\n <path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrows-alt" viewBox="0 0 512 512">\n <path d="M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-h" viewBox="0 0 512 512">\n <path d="M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-v" viewBox="0 0 256 512">\n <path d="M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"></path>\n</symbol>\n<symbol id="icon-bars" viewBox="0 0 448 512">\n <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"></path>\n</symbol>\n<symbol id="icon-bookmark" viewBox="0 0 384 512">\n <path d="M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"></path>\n</symbol>\n<symbol id="icon-caret-down" viewBox="0 0 320 512">\n <path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path>\n</symbol>\n<symbol id="icon-caret-right" viewBox="0 0 192 512">\n <path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"></path>\n</symbol>\n<symbol id="icon-check" viewBox="0 0 512 512">\n <path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path>\n</symbol>\n<symbol id="icon-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path>\n</symbol>\n<symbol id="icon-cog" viewBox="0 0 512 512">\n <path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path>\n</symbol>\n<symbol id="icon-database" viewBox="0 0 448 512">\n <path d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path>\n</symbol>\n<symbol id="icon-edit" viewBox="0 0 576 512">\n <path d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"></path>\n</symbol>\n<symbol id="icon-eye" viewBox="0 0 576 512">\n <path d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path>\n</symbol>\n<symbol id="icon-eye-slash" viewBox="0 0 640 512">\n <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path>\n</symbol>\n<symbol id="icon-gavel" viewBox="0 0 512 512">\n <path d="M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"></path>\n</symbol>\n<symbol id="icon-globe" viewBox="0 0 496 512">\n <path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path>\n</symbol>\n<symbol id="icon-id-card" viewBox="0 0 576 512">\n <path d="M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"></path>\n</symbol>\n<symbol id="icon-id-card-alt" viewBox="0 0 576 512">\n <path d="M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"></path>\n</symbol>\n<symbol id="icon-info" viewBox="0 0 192 512">\n <path d="M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"></path>\n</symbol>\n<symbol id="icon-info-circle" viewBox="0 0 512 512">\n <path d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path>\n</symbol>\n<symbol id="icon-list-ul" viewBox="0 0 512 512">\n <path d="M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-lock" viewBox="0 0 448 512">\n <path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path>\n</symbol>\n<symbol id="icon-lock-open" viewBox="0 0 576 512">\n <path d="M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"></path>\n</symbol>\n<symbol id="icon-minus" viewBox="0 0 448 512">\n <path d="M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-minus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"></path>\n</symbol>\n<symbol id="icon-minus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"></path>\n</symbol>\n<symbol id="icon-paper-plane" viewBox="0 0 512 512">\n <path d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"></path>\n</symbol>\n<symbol id="icon-paperclip" viewBox="0 0 448 512">\n <path d="M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"></path>\n</symbol>\n<symbol id="icon-pencil-alt" viewBox="0 0 512 512">\n <path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"></path>\n</symbol>\n<symbol id="icon-phone" viewBox="0 0 512 512">\n <path d="M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"></path>\n</symbol>\n<symbol id="icon-plus" viewBox="0 0 448 512">\n <path d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-plus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-plus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-save" viewBox="0 0 448 512">\n <path d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path>\n</symbol>\n<symbol id="icon-sign-out-alt" viewBox="0 0 512 512">\n <path d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-smile" viewBox="0 0 496 512">\n <path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"></path>\n</symbol>\n<symbol id="icon-snowflake" viewBox="0 0 448 512">\n <path d="M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"></path>\n</symbol>\n<symbol id="icon-spinner" viewBox="0 0 512 512">\n <path d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path>\n</symbol>\n<symbol id="icon-sync" viewBox="0 0 512 512">\n <path d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"></path>\n</symbol>\n<symbol id="icon-times" viewBox="0 0 352 512">\n <path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path>\n</symbol>\n<symbol id="icon-times-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"></path>\n</symbol>\n<symbol id="icon-trash" viewBox="0 0 448 512">\n <path d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"></path>\n</symbol>\n<symbol id="icon-trash-alt" viewBox="0 0 448 512">\n <path d="M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-unlock" viewBox="0 0 448 512">\n <path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"></path>\n</symbol>\n<symbol id="icon-user" viewBox="0 0 448 512">\n <path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-cog" viewBox="0 0 640 512">\n <path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path>\n</symbol>\n<symbol id="icon-user-plus" viewBox="0 0 640 512">\n <path d="M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-secret" viewBox="0 0 448 512">\n <path d="M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"></path>\n</symbol>\n<symbol id="icon-users" viewBox="0 0 640 512">\n <path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path>\n</symbol>\n<symbol id="icon-wrench" viewBox="0 0 512 512">\n <path d="M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"></path>\n</symbol>\n</svg>\n','\x3c!-- images/icons.svg --\x3e\n<?xml version="1.0" encoding="UTF-8"?>\n\x3c!--\nFont Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n--\x3e\n<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">\n<symbol id="icon-address-book" viewBox="0 0 448 512">\n <path d="M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"></path>\n</symbol>\n<symbol id="icon-angle-double-down" viewBox="0 0 320 512">\n <path d="M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"></path>\n</symbol>\n<symbol id="icon-angle-double-left" viewBox="0 0 448 512">\n <path d="M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-double-right" viewBox="0 0 448 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"></path>\n</symbol>\n<symbol id="icon-angle-double-up" viewBox="0 0 320 512">\n <path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-down" viewBox="0 0 320 512">\n <path d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-left" viewBox="0 0 256 512">\n <path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>\n</symbol>\n<symbol id="icon-angle-right" viewBox="0 0 256 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-up" viewBox="0 0 320 512">\n <path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-down" viewBox="0 0 448 512">\n <path d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-left" viewBox="0 0 448 512">\n <path d="M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-right" viewBox="0 0 448 512">\n <path d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-up" viewBox="0 0 448 512">\n <path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrows-alt" viewBox="0 0 512 512">\n <path d="M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-h" viewBox="0 0 512 512">\n <path d="M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-v" viewBox="0 0 256 512">\n <path d="M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"></path>\n</symbol>\n<symbol id="icon-bars" viewBox="0 0 448 512">\n <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"></path>\n</symbol>\n<symbol id="icon-bookmark" viewBox="0 0 384 512">\n <path d="M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"></path>\n</symbol>\n<symbol id="icon-caret-down" viewBox="0 0 320 512">\n <path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path>\n</symbol>\n<symbol id="icon-caret-right" viewBox="0 0 192 512">\n <path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"></path>\n</symbol>\n<symbol id="icon-check" viewBox="0 0 512 512">\n <path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path>\n</symbol>\n<symbol id="icon-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path>\n</symbol>\n<symbol id="icon-cog" viewBox="0 0 512 512">\n <path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path>\n</symbol>\n<symbol id="icon-database" viewBox="0 0 448 512">\n <path d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path>\n</symbol>\n<symbol id="icon-edit" viewBox="0 0 576 512">\n <path d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"></path>\n</symbol>\n<symbol id="icon-eye" viewBox="0 0 576 512">\n <path d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path>\n</symbol>\n<symbol id="icon-eye-slash" viewBox="0 0 640 512">\n <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path>\n</symbol>\n<symbol id="icon-gavel" viewBox="0 0 512 512">\n <path d="M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"></path>\n</symbol>\n<symbol id="icon-globe" viewBox="0 0 496 512">\n <path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path>\n</symbol>\n<symbol id="icon-id-card" viewBox="0 0 576 512">\n <path d="M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"></path>\n</symbol>\n<symbol id="icon-id-card-alt" viewBox="0 0 576 512">\n <path d="M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"></path>\n</symbol>\n<symbol id="icon-info" viewBox="0 0 192 512">\n <path d="M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"></path>\n</symbol>\n<symbol id="icon-info-circle" viewBox="0 0 512 512">\n <path d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path>\n</symbol>\n<symbol id="icon-list-ul" viewBox="0 0 512 512">\n <path d="M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-lock" viewBox="0 0 448 512">\n <path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path>\n</symbol>\n<symbol id="icon-lock-open" viewBox="0 0 576 512">\n <path d="M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"></path>\n</symbol>\n<symbol id="icon-minus" viewBox="0 0 448 512">\n <path d="M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-minus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"></path>\n</symbol>\n<symbol id="icon-minus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"></path>\n</symbol>\n<symbol id="icon-paper-plane" viewBox="0 0 512 512">\n <path d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"></path>\n</symbol>\n<symbol id="icon-paperclip" viewBox="0 0 448 512">\n <path d="M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"></path>\n</symbol>\n<symbol id="icon-pencil-alt" viewBox="0 0 512 512">\n <path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"></path>\n</symbol>\n<symbol id="icon-phone" viewBox="0 0 512 512">\n <path d="M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"></path>\n</symbol>\n<symbol id="icon-plus" viewBox="0 0 448 512">\n <path d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-plus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-plus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-save" viewBox="0 0 448 512">\n <path d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path>\n</symbol>\n<symbol id="icon-sign-out-alt" viewBox="0 0 512 512">\n <path d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-smile" viewBox="0 0 496 512">\n <path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"></path>\n</symbol>\n<symbol id="icon-snowflake" viewBox="0 0 448 512">\n <path d="M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"></path>\n</symbol>\n<symbol id="icon-spinner" viewBox="0 0 512 512">\n <path d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path>\n</symbol>\n<symbol id="icon-sync" viewBox="0 0 512 512">\n <path d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"></path>\n</symbol>\n<symbol id="icon-times" viewBox="0 0 352 512">\n <path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path>\n</symbol>\n<symbol id="icon-times-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"></path>\n</symbol>\n<symbol id="icon-trash" viewBox="0 0 448 512">\n <path d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"></path>\n</symbol>\n<symbol id="icon-trash-alt" viewBox="0 0 448 512">\n <path d="M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-unlock" viewBox="0 0 448 512">\n <path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"></path>\n</symbol>\n<symbol id="icon-user" viewBox="0 0 448 512">\n <path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-cog" viewBox="0 0 640 512">\n <path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path>\n</symbol>\n<symbol id="icon-user-plus" viewBox="0 0 640 512">\n <path d="M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-secret" viewBox="0 0 448 512">\n <path d="M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"></path>\n</symbol>\n<symbol id="icon-users" viewBox="0 0 640 512">\n <path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path>\n</symbol>\n<symbol id="icon-wrench" viewBox="0 0 512 512">\n <path d="M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"></path>\n</symbol>\n</svg>\n'}}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[138],{548:function(c,l,o){o(8);c.exports=function(c){return'\x3c!-- images/icons.svg --\x3e\n<?xml version="1.0" encoding="UTF-8"?>\n\x3c!--\nFont Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n--\x3e\n<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">\n<symbol id="icon-address-book" viewBox="0 0 448 512">\n <path d="M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"></path>\n</symbol>\n<symbol id="icon-angle-double-down" viewBox="0 0 320 512">\n <path d="M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"></path>\n</symbol>\n<symbol id="icon-angle-double-left" viewBox="0 0 448 512">\n <path d="M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-double-right" viewBox="0 0 448 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"></path>\n</symbol>\n<symbol id="icon-angle-double-up" viewBox="0 0 320 512">\n <path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-down" viewBox="0 0 320 512">\n <path d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-left" viewBox="0 0 256 512">\n <path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>\n</symbol>\n<symbol id="icon-angle-right" viewBox="0 0 256 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-up" viewBox="0 0 320 512">\n <path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-down" viewBox="0 0 448 512">\n <path d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-left" viewBox="0 0 448 512">\n <path d="M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-right" viewBox="0 0 448 512">\n <path d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-up" viewBox="0 0 448 512">\n <path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrows-alt" viewBox="0 0 512 512">\n <path d="M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-h" viewBox="0 0 512 512">\n <path d="M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-v" viewBox="0 0 256 512">\n <path d="M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"></path>\n</symbol>\n<symbol id="icon-bars" viewBox="0 0 448 512">\n <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"></path>\n</symbol>\n<symbol id="icon-bookmark" viewBox="0 0 384 512">\n <path d="M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"></path>\n</symbol>\n<symbol id="icon-caret-down" viewBox="0 0 320 512">\n <path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path>\n</symbol>\n<symbol id="icon-caret-right" viewBox="0 0 192 512">\n <path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"></path>\n</symbol>\n<symbol id="icon-check" viewBox="0 0 512 512">\n <path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path>\n</symbol>\n<symbol id="icon-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path>\n</symbol>\n<symbol id="icon-cog" viewBox="0 0 512 512">\n <path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path>\n</symbol>\n<symbol id="icon-database" viewBox="0 0 448 512">\n <path d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path>\n</symbol>\n<symbol id="icon-edit" viewBox="0 0 576 512">\n <path d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"></path>\n</symbol>\n<symbol id="icon-eye" viewBox="0 0 576 512">\n <path d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path>\n</symbol>\n<symbol id="icon-eye-slash" viewBox="0 0 640 512">\n <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path>\n</symbol>\n<symbol id="icon-gavel" viewBox="0 0 512 512">\n <path d="M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"></path>\n</symbol>\n<symbol id="icon-globe" viewBox="0 0 496 512">\n <path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path>\n</symbol>\n<symbol id="icon-id-card" viewBox="0 0 576 512">\n <path d="M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"></path>\n</symbol>\n<symbol id="icon-id-card-alt" viewBox="0 0 576 512">\n <path d="M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"></path>\n</symbol>\n<symbol id="icon-info" viewBox="0 0 192 512">\n <path d="M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"></path>\n</symbol>\n<symbol id="icon-info-circle" viewBox="0 0 512 512">\n <path d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path>\n</symbol>\n<symbol id="icon-list-ul" viewBox="0 0 512 512">\n <path d="M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-lock" viewBox="0 0 448 512">\n <path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path>\n</symbol>\n<symbol id="icon-lock-open" viewBox="0 0 576 512">\n <path d="M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"></path>\n</symbol>\n<symbol id="icon-minus" viewBox="0 0 448 512">\n <path d="M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-minus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"></path>\n</symbol>\n<symbol id="icon-minus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"></path>\n</symbol>\n<symbol id="icon-paper-plane" viewBox="0 0 512 512">\n <path d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"></path>\n</symbol>\n<symbol id="icon-paperclip" viewBox="0 0 448 512">\n <path d="M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"></path>\n</symbol>\n<symbol id="icon-pencil-alt" viewBox="0 0 512 512">\n <path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"></path>\n</symbol>\n<symbol id="icon-phone" viewBox="0 0 512 512">\n <path d="M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"></path>\n</symbol>\n<symbol id="icon-plus" viewBox="0 0 448 512">\n <path d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-plus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-plus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-save" viewBox="0 0 448 512">\n <path d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path>\n</symbol>\n<symbol id="icon-sign-out-alt" viewBox="0 0 512 512">\n <path d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-smile" viewBox="0 0 496 512">\n <path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"></path>\n</symbol>\n<symbol id="icon-snowflake" viewBox="0 0 448 512">\n <path d="M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"></path>\n</symbol>\n<symbol id="icon-spinner" viewBox="0 0 512 512">\n <path d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path>\n</symbol>\n<symbol id="icon-sync" viewBox="0 0 512 512">\n <path d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"></path>\n</symbol>\n<symbol id="icon-times" viewBox="0 0 352 512">\n <path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path>\n</symbol>\n<symbol id="icon-times-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"></path>\n</symbol>\n<symbol id="icon-trash" viewBox="0 0 448 512">\n <path d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"></path>\n</symbol>\n<symbol id="icon-trash-alt" viewBox="0 0 448 512">\n <path d="M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-unlock" viewBox="0 0 448 512">\n <path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"></path>\n</symbol>\n<symbol id="icon-user" viewBox="0 0 448 512">\n <path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-cog" viewBox="0 0 640 512">\n <path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path>\n</symbol>\n<symbol id="icon-user-plus" viewBox="0 0 640 512">\n <path d="M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-secret" viewBox="0 0 448 512">\n <path d="M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"></path>\n</symbol>\n<symbol id="icon-users" viewBox="0 0 640 512">\n <path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path>\n</symbol>\n<symbol id="icon-wrench" viewBox="0 0 512 512">\n <path d="M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"></path>\n</symbol>\n</svg>\n','\x3c!-- images/icons.svg --\x3e\n<?xml version="1.0" encoding="UTF-8"?>\n\x3c!--\nFont Awesome Free 5.13.0 by @fontawesome - https://fontawesome.com\nLicense - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n--\x3e\n<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">\n<symbol id="icon-address-book" viewBox="0 0 448 512">\n <path d="M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z"></path>\n</symbol>\n<symbol id="icon-angle-double-down" viewBox="0 0 320 512">\n <path d="M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z"></path>\n</symbol>\n<symbol id="icon-angle-double-left" viewBox="0 0 448 512">\n <path d="M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-double-right" viewBox="0 0 448 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z"></path>\n</symbol>\n<symbol id="icon-angle-double-up" viewBox="0 0 320 512">\n <path d="M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-down" viewBox="0 0 320 512">\n <path d="M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z"></path>\n</symbol>\n<symbol id="icon-angle-left" viewBox="0 0 256 512">\n <path d="M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z"></path>\n</symbol>\n<symbol id="icon-angle-right" viewBox="0 0 256 512">\n <path d="M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z"></path>\n</symbol>\n<symbol id="icon-angle-up" viewBox="0 0 320 512">\n <path d="M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z"></path>\n</symbol>\n<symbol id="icon-arrow-alt-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-down" viewBox="0 0 512 512">\n <path d="M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-left" viewBox="0 0 512 512">\n <path d="M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-right" viewBox="0 0 512 512">\n <path d="M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z"></path>\n</symbol>\n<symbol id="icon-arrow-circle-up" viewBox="0 0 512 512">\n <path d="M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-down" viewBox="0 0 448 512">\n <path d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path>\n</symbol>\n<symbol id="icon-arrow-left" viewBox="0 0 448 512">\n <path d="M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-right" viewBox="0 0 448 512">\n <path d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path>\n</symbol>\n<symbol id="icon-arrow-up" viewBox="0 0 448 512">\n <path d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path>\n</symbol>\n<symbol id="icon-arrows-alt" viewBox="0 0 512 512">\n <path d="M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-h" viewBox="0 0 512 512">\n <path d="M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z"></path>\n</symbol>\n<symbol id="icon-arrows-alt-v" viewBox="0 0 256 512">\n <path d="M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z"></path>\n</symbol>\n<symbol id="icon-bars" viewBox="0 0 448 512">\n <path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"></path>\n</symbol>\n<symbol id="icon-bookmark" viewBox="0 0 384 512">\n <path d="M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z"></path>\n</symbol>\n<symbol id="icon-caret-down" viewBox="0 0 320 512">\n <path d="M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z"></path>\n</symbol>\n<symbol id="icon-caret-right" viewBox="0 0 192 512">\n <path d="M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z"></path>\n</symbol>\n<symbol id="icon-check" viewBox="0 0 512 512">\n <path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"></path>\n</symbol>\n<symbol id="icon-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path>\n</symbol>\n<symbol id="icon-cog" viewBox="0 0 512 512">\n <path d="M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z"></path>\n</symbol>\n<symbol id="icon-database" viewBox="0 0 448 512">\n <path d="M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z"></path>\n</symbol>\n<symbol id="icon-edit" viewBox="0 0 576 512">\n <path d="M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z"></path>\n</symbol>\n<symbol id="icon-eye" viewBox="0 0 576 512">\n <path d="M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z"></path>\n</symbol>\n<symbol id="icon-eye-slash" viewBox="0 0 640 512">\n <path d="M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z"></path>\n</symbol>\n<symbol id="icon-gavel" viewBox="0 0 512 512">\n <path d="M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z"></path>\n</symbol>\n<symbol id="icon-globe" viewBox="0 0 496 512">\n <path d="M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z"></path>\n</symbol>\n<symbol id="icon-id-card" viewBox="0 0 576 512">\n <path d="M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z"></path>\n</symbol>\n<symbol id="icon-id-card-alt" viewBox="0 0 576 512">\n <path d="M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z"></path>\n</symbol>\n<symbol id="icon-info" viewBox="0 0 192 512">\n <path d="M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z"></path>\n</symbol>\n<symbol id="icon-info-circle" viewBox="0 0 512 512">\n <path d="M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z"></path>\n</symbol>\n<symbol id="icon-list-ul" viewBox="0 0 512 512">\n <path d="M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-lock" viewBox="0 0 448 512">\n <path d="M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z"></path>\n</symbol>\n<symbol id="icon-lock-open" viewBox="0 0 576 512">\n <path d="M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z"></path>\n</symbol>\n<symbol id="icon-minus" viewBox="0 0 448 512">\n <path d="M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-minus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z"></path>\n</symbol>\n<symbol id="icon-minus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z"></path>\n</symbol>\n<symbol id="icon-paper-plane" viewBox="0 0 512 512">\n <path d="M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z"></path>\n</symbol>\n<symbol id="icon-paperclip" viewBox="0 0 448 512">\n <path d="M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z"></path>\n</symbol>\n<symbol id="icon-pencil-alt" viewBox="0 0 512 512">\n <path d="M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z"></path>\n</symbol>\n<symbol id="icon-phone" viewBox="0 0 512 512">\n <path d="M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z"></path>\n</symbol>\n<symbol id="icon-plus" viewBox="0 0 448 512">\n <path d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"></path>\n</symbol>\n<symbol id="icon-plus-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-plus-square" viewBox="0 0 448 512">\n <path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z"></path>\n</symbol>\n<symbol id="icon-save" viewBox="0 0 448 512">\n <path d="M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z"></path>\n</symbol>\n<symbol id="icon-sign-out-alt" viewBox="0 0 512 512">\n <path d="M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z"></path>\n</symbol>\n<symbol id="icon-smile" viewBox="0 0 496 512">\n <path d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z"></path>\n</symbol>\n<symbol id="icon-snowflake" viewBox="0 0 448 512">\n <path d="M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z"></path>\n</symbol>\n<symbol id="icon-spinner" viewBox="0 0 512 512">\n <path d="M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z"></path>\n</symbol>\n<symbol id="icon-sync" viewBox="0 0 512 512">\n <path d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"></path>\n</symbol>\n<symbol id="icon-times" viewBox="0 0 352 512">\n <path d="M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z"></path>\n</symbol>\n<symbol id="icon-times-circle" viewBox="0 0 512 512">\n <path d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z"></path>\n</symbol>\n<symbol id="icon-trash" viewBox="0 0 448 512">\n <path d="M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z"></path>\n</symbol>\n<symbol id="icon-trash-alt" viewBox="0 0 448 512">\n <path d="M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z"></path>\n</symbol>\n<symbol id="icon-unlock" viewBox="0 0 448 512">\n <path d="M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z"></path>\n</symbol>\n<symbol id="icon-user" viewBox="0 0 448 512">\n <path d="M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-cog" viewBox="0 0 640 512">\n <path d="M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z"></path>\n</symbol>\n<symbol id="icon-user-plus" viewBox="0 0 640 512">\n <path d="M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z"></path>\n</symbol>\n<symbol id="icon-user-secret" viewBox="0 0 448 512">\n <path d="M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z"></path>\n</symbol>\n<symbol id="icon-users" viewBox="0 0 640 512">\n <path d="M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z"></path>\n</symbol>\n<symbol id="icon-wrench" viewBox="0 0 512 512">\n <path d="M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"></path>\n</symbol>\n</svg>\n'}}}]); //# sourceMappingURL=icons.js.map \ No newline at end of file diff --git a/src/conversejs/locales/af-LC_MESSAGES-converse-po.js b/src/conversejs/locales/af-LC_MESSAGES-converse-po.js index 64fc2012ee0d772e50957bc276b6085283506e90..45f388fccca354a06ef84370aad5216827df5a41 100644 --- a/src/conversejs/locales/af-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/af-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{419:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"af"},"Create your account":["Skep u kontak"],"Please enter the XMPP provider to register with:":["Kies asb. die XMPP-bediener waarby u wil registreer:"],"Already have a chat account?":["Het u reeds \'n kletsrekening?"],"Log in here":["Meld hier aan"],"Account Registration:":["Registrasie:"],"Register":["Registreer"],"Choose a different provider":["Kies \'n ander aanbieder"],"Hold tight, we\'re fetching the registration form…":["Wag \'n bietjie, ons gaan haal die registrasievorm…"],"Cancel":["Kanseleer"],"The connection has dropped, attempting to reconnect.":["Die konneksie is onderbreek, probeer tans tans om te herkonnekteer."],"An error occurred while connecting to the chat server.":["A fout het voorgekom tydens verbinding met die gesprekbediener."],"Your XMPP address and/or password is incorrect. Please try again.":["U XMPP adres en/of wagwoord is verkeerd. Probeer asseblief weer."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Jammer, ons kon nie \'n verbinding met die XMPP domein \\"%1$s\\" opstel nie"],"The XMPP server did not offer a supported authentication mechanism":["Die XMPP bediener het nie \'n bruikbare verifikasiemeganisme aangebied nie"],"Undecryptable OMEMO message":["Onontsleutelbare OMEMO-boodskap"],"Sorry, could not determine upload URL.":["Jammer, kon nie die oplaai-adres bepaal nie."],"Sorry, could not determine file upload URL.":["Jammer, kon nie die lêer oplaai-adres bepaal nie."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Jammer, oplaai van u lêer het gefaal. Die bediener se terugvoer: \\"%1$s"],"Sorry, could not succesfully upload your file.":["Jammer, oplaai van u lêer het gefaal."],"You\'re not allowed to retract your message.":["U word nie toegelaat om u boodskap te herroep nie."],"Sorry, an error occurred while trying to retract your message.":["Jammer, \'n fout het voorgekom tydens die herroeping van u boodskap."],"You\'re not allowed to send a message.":["U word nie toegelaat om \'n boodskap te stuur nie."],"Sorry, an error occurred while trying to send your message.":["Jammer, \'n fout het voorgekom tydens die aanstuur van u boodskap."],"Sorry, looks like file upload is not supported by your server.":["Jammer, dit blyk asof lêer-oplaai nie deur u bediener ondersteun word nie."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Die grootte van u lêer, %1$s, oortref die maksimum grootte, %2$s, wat deur u bediener toegelaat word."],"Smileys and emotions":["Glimlaggies en emosies"],"People":["Mense"],"Activities":["Aktiwiteite"],"Travel":["Reis"],"Objects":["Objekte"],"Animals and nature":["Diere en natuur"],"Food and drink":["Spys en drank"],"Symbols":["Simbole"],"Flags":["Vlae"],"Stickers":["Plakkers"],"This groupchat is not anonymous":["Hierdie groepgesprek is nie anoniem nie"],"This groupchat now shows unavailable members":["Hierdie groepgesprek wys nou onbeskikbare lede"],"This groupchat does not show unavailable members":["Hierdie groepgesprek wys nie onbeskikbare lede nie"],"The groupchat configuration has changed":["Die groepgesprek se instellings het verander"],"Groupchat logging is now enabled":["Groepgesprek log is nou aangeskakel"],"Groupchat logging is now disabled":["Groepgesprek log is nou afgeskakel"],"This groupchat is now no longer anonymous":["Hiedie groepgesprek is nie meer anoniem nie"],"This groupchat is now semi-anonymous":["Hierdie groepgesprek is nou gedeeltelik anoniem"],"This groupchat is now fully-anonymous":["Hierdie groepgesprek is nou ten volle anoniem"],"A new groupchat has been created":["\'n Nuwe groepgesprek is geskep"],"Your nickname has been automatically set to %1$s":["U bynaam is outomaties gestel na %1$s"],"Your nickname has been changed to %1$s":["U bynaam is verander na %1$s"],"You have been banned from this groupchat":["Jy is uit die groepgesprek verban"],"You have exited this groupchat due to a technical problem":["U het hierdie groepgesprek verlaat weens \'n tegniese probleem"],"You have been kicked from this groupchat":["Jy is uit die groepgesprek geskop"],"You have been removed from this groupchat because of an affiliation change":["Jy is vanuit die groepgesprek verwyder a.g.v \'n verandering van affiliasie"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Jy is vanuit die groepgesprek verwyder omdat die groepgesprek nou slegs tot lede beperk word en jy nie \'n lid is nie"],"You have been removed from this groupchat because the service hosting it is being shut down":["U is van hierdie groepgesprek verwyder aangesien die MUC (Multi-user chat) diens nou afgeskakel word"],"Your retraction was not delivered because you\'re not present in the groupchat.":["U boodskap is nie afgelewer nie want u is nie tans teenwoordig in die groepgesprek nie."],"Your message was not delivered because you weren\'t allowed to send it.":["U boodskap is nie afgelewer nie want u word nie toegelaat om dit te stuur nie."],"Your message was not delivered because you\'re not present in the groupchat.":["U boodskap is nie afgelewer nie want u is nie tans in hierdie groepgesprek teenwoordig nie."],"A timeout happened while while trying to retract your message.":["Die tyd is verstreke tydens die herroeping van u boodskap."],"You\'re not allowed to register yourself in this groupchat.":["U het geen toestemming om uself in hierdie groepgesprek te registreer nie."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["U het geen toestemming om uself in hierdie groepgesprek te registreer nie, omdat dit slegs toeganklik vir lede is."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan nie u bynaam in hierdie groepgesprek registreer nie, dit word nie ondersteun nie."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan nie u bynaam in hierdie groepgesprek registreer nie, ongeldige data is ingevoer."],"Topic set by %1$s":["Onderwerp deur %1$s gestel"],"Topic cleared by %1$s":["Onderwerp verwyder deur %1$s"],"%1$s has been banned by %2$s":["%1$s is deur %2$s verban"],"%1$s has been banned":["%1$s is verban"],"%1$s\'s nickname has changed":["%1$s se bynaam het verander"],"%1$s has been kicked out by %2$s":["%1$s is uitgeskop deur %2$s"],"%1$s has been kicked out":["%1$s is uitgeskop"],"%1$s has been removed because of an affiliation change":["%1$s is verwyder a.g.v \'n verandering van affiliasie"],"%1$s has been removed for not being a member":["%1$s is nie \'n lid nie, en dus verwyder"],"%1$s is no longer an admin of this groupchat":["%1$s is nie meer \'n admin van hierdie groepgesprek nie"],"%1$s is no longer an owner of this groupchat":["%1$s is nie meer eienaar van hierdie groepgesprek nie"],"%1$s is no longer banned from this groupchat":["%1$s is nie meer verban uit hierdie groepgesprek nie"],"%1$s is no longer a member of this groupchat":["%1$s is nie meer \'n lid van hierdie groepgesprek nie"],"%1$s is now a member of this groupchat":["%1$s is nou \'n lid van hierdie groepgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nou \'n %2$s van hierdie groepgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Die bynaam wat u gekies het is gereserveer of tans in gebruik, kies asb. \'n ander een."],"Password incorrect":["Verkeerde wagwoord"],"You are not on the member list of this groupchat.":["Jy is nie op die ledelys van hierdie groepgesprek nie."],"You have been banned from this groupchat.":["Jy is uit die groepgesprek verban."],"You are not allowed to create new groupchats.":["U word nie toegelaat om nog groepgesprekke te skep nie."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["U bynaam voldoen nie aan die groepgesprek se beleid nie."],"This groupchat does not (yet) exist.":["Hierdie groepgesprek bestaan tans (nog) nie."],"This groupchat has reached its maximum number of participants.":["Hierdie groepgesprek het sy maksimum aantal deelnemers bereik."],"Remote server not found":["Afgeleë bediener nie gevind nie"],"The explanation given is: \\"%1$s\\".":["Die gegewe rede is: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s het u uitgenooi om die groepgesprek %2$s by te tree"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s het u uitgenooi om die groepgesprek %2$s by te tree, en het die volgende rede verskaf: \\"%3$s\\""],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Jammer, \'n fout het voorgekom tydens storing van u boekmerk."],"Timeout Error":["Tydverstreke-fout"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Die bediener het nie u boekmerke binne die toegelate tydperk teruggegee nie. U kan hierdie webbladd herlaai om opnuut te probeer."],"My contacts":["My kontakte"],"Pending contacts":["Afwagtende kontakte"],"Contact requests":["Kontakversoeke"],"Ungrouped":["Ongegroepeer"],"New messages":["Nuwe boodskappe"],"Sorry, there was an error while trying to add %1$s as a contact.":["Jammer, \'n fout het voorgekom tydens die toevoeging van %1$s as \'n kontak."],"This client does not allow presence subscriptions":["Hierdie kliënt bied geen ondersteuning vir teenwoordigheids-inskrywings"],"Click to hide these contacts":["Klik om hierdie kontakte te verskuil"],"Unbookmark this groupchat":["Verwyder hierdie groepgesprek"],"Click to open this groupchat":["Klik om hierdie groepgesprek te open"],"Click to toggle the bookmarks list":["Klik om die boekmerklys te skakel"],"Bookmarks":["Boekmerke"],"Bookmark this groupchat":["Boekmerk hierdie groepgesprek"],"Would you like this groupchat to be automatically joined upon startup?":["Betree outomaties hierdie groepgesprek sodra aangemeld"],"The name for this bookmark:":["Die naam vir hierdie boekmerk:"],"What should your nickname for this groupchat be?":["Wat sal u bynaam vir hierdie groepgesprek wees?"],"Save":["Stoor"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Is u seker u wil die boekmerk \\"%1$s\\" verwyder?"],"Unbookmark":["Verwyder boekmerk"],"Bookmark":["Boekmerk"],"Close":["Sluit"],"OK":["OK"],"Image: ":["Beeld: "],"Download audio file \\"%1$s\\"":["Laai oudio lêer af: \\"%1$s\\""],"Download file \\"%1$s\\"":["Laai lêer af: \\"%1$s\\""],"Cancel Editing":["Kanseleer Wysiging"],"Edit":["Wysig"],"Retract":["Herroep"],"Message versions":["Boodskap weergawes"],"Retry":[""],"Uploading file:":["Laai lêer tans op:"],"%1$s has removed this message":["%1$s het hierdie boodskap verwyder"],"This message has been edited":["Hierdie boodskap is gewysig"],"Show more":["Wys meer"],"Show less":["Wys minder"],"No message history available.":["Geen boodskappe beskikbaar."],"Search results":["Soekresultate"],"Search":["Soek"],"Insert emojis":["Voeg \'n emoji by"],"Send the message":["Stuur die boodskap"],"Start a call":["Begin \'n oproep"],"Message characters remaining":["Oorblywende letters"],"Hide participants":["Verskuil deelnemers"],"Show participants":["Wys deelnemers"],"Choose a file to send":["Kies \'n lêer om te stuur"],"Click to write as a normal (non-spoiler) message":["Klik om \'n gewone (nie-verskuilde) boodskap te skryf"],"Click to write your message as a spoiler":["Klik om \'n verskuilde boodskap te skryf"],"The User\'s Profile Image":["Die gebruiker se profielbeeld"],"Trusted":["Vertroud"],"Untrusted":["Onvertroud"],"OMEMO Fingerprints":["OMEMO vingerafdrukke"],"No OMEMO-enabled devices found":["Geen OMEMO-ondersteunende apparate gevind nie"],"Remove as contact":["Verwyder as kontak"],"XMPP Address":["XMPP-adres"],"Email":["E-pos"],"Full Name":["Volle Naam"],"Nickname":["Bynaam"],"Refresh":["Verfris"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s tik tans"],"%1$s has stopped typing":["%1$s het opgehou tik"],"%1$s has gone away":["%1$s het weggegaan"],"Remove messages":["Verwyder boodskappe"],"Close this chat":["Sluit hierdie klets"],"Write in the third person":["Skryf in die derde persoon"],"Show this menu":["Vertoon hierdie keuselys"],"Hidden message":["Verskuilde boodskap"],"Message":["Boodskap"],"Optional hint":["Opsionele wenk"],"You have unread messages":["U het ongelese boodskappe"],"Details":["Inligting"],"See more information about this person":["Sien meer inligting aangaande hierdie persoon"],"Close and end this conversation":["Verlaat en sluit hierdie groepgesprek"],"Sorry, the connection has been lost, and your message could not be sent":["Jammer, die verbinding is onderbreek, en u boodskap kon nie gestuur word nie"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Wees bedag dat ander XMPP/Jabber kliënte (en bedieners) dalk nog nie boodskap-herroepings ondersteun nie en dat hierdie boodskap nie noodwendig orals verwyder sal word nie."],"Are you sure you want to retract this message?":["Is u seker u wil hierdie boodskap herroep?"],"Confirm":["Bevestig"],"You have an unsent message which will be lost if you continue. Are you sure?":["U het \'n ongestuurde boodskap wat verlore sal gaan indien u voortgaan. Is u seker?"],"Are you sure you want to clear the messages from this conversation?":["Is u seker u wil die boodskappe in hierdie gesprek uitvee?"],"%1$s has gone offline":["%1$s is nou aflyn"],"%1$s is busy":["%1$s is besig"],"%1$s is online":["%1$s aangemeld"],"Sorry, something went wrong while trying to refresh":["Jammer, \'n fout het voorgekom tydens verfrissing"],"Are you sure you want to remove this contact?":["Is u seker u wil hierdie kontak verwyder?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Jammer, \'n fout het voorgekom tydens die verwydering van %1$s as \'n kontak."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Om prestasie te verbeter, stoor ons data in die kasgeheue van die webblaaier. Ontkruis hierdie aankruisvak indien hierdie \'n openbare rekenaar is, of indien u wil hê dat u data verwyder moet word na afmelding. Dit is belangrik dat u eksplisiet afmeld, anders mag al die data in kasgeheue nie verwyder word nie. Wees bedag, wanneer u \'n onvertroude toestel gebruik, dat OMEMO versleuteling nie moontlik is nie."],"This is a trusted device":["Hierdie toestel word vertrou"],"Password":["Wagwoord"],"Create an account":["Skep \'n rekening"],"Don\'t have a chat account?":["Het u nie \'n chat-rekening nie?"],"Log in":["Log in"],"Disconnected":["Ontkoppel"],"Click here to log in anonymously":["Klik hier om anoniem in te log"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Verskaf asseblief \'n geldige XMPP address"],"Chat Contacts":["Kontakte"],"Toggle chat":["Klets"],"Click to restore this chat":["Klik om hierdie klets te herstel"],"Minimized":["Geminimaliseer"],"Minimize":["Minimeer"],"Minimize this chat":["Minimeer hierdie kletskas"],"Minimize this groupchat":["Minimeer hierdie groepsgesprek"],"This field is required":["Hierdie veld is verpligtend"],"Join":["Betree"],"Enter a new Groupchat":["Betree \'n nuwe groepgesprek"],"name@conference.example.org":["naam@konferensie.voorbeeld.org"],"Groupchat name":["Groepgesprek-naam"],"Groupchat address":["groepgesprek-adres"],"Groupchat id is invalid.":["Groepsgesprek id is ongeldig."],"Invite":["Nooi uit"],"Invite someone to this groupchat":["Nooi iemand uit na hierdie groepsgesprek"],"user@example.org":["gebruiker@voorbeeld.org"],"Optional reason for the invitation":["Opsionele rede vir die uitnodiging"],"Show groupchats":["Wys groepgesprekke"],"Server address":["Bediener adres"],"Show more information on this groupchat":["Wys meer inligting aangaande hierdie groepgesprek"],"Query for Groupchats":["Soek vir groepgesprekke"],"Description:":["Beskrywing:"],"Groupchat Address (JID):":["Groepgesprek-adres (JID):"],"Participants:":["Deelnemers:"],"Features:":["Eienskappe:"],"Requires authentication":["Benodig magtiging"],"Hidden":["Verskuil"],"Requires an invitation":["Benodig \'n uitnodiging"],"Moderated":["Gemodereer"],"Non-anonymous":["Nie-anoniem"],"Open":["Oop"],"Permanent":["Permanent"],"Public":["Publiek"],"Semi-anonymous":["Deels anoniem"],"Temporary":["Tydelik"],"Unmoderated":["Ongemodereer"],"conference.example.org":["groepgesprekke.voorbeeld.org"],"Groupchats found":["Groepgesprekke gevind"],"No groupchats found":["Geen groepgesprekke gevind"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderators is bevoorregte gebruikers wat die rolle van ander gebruikers kan verander (uitsluitend diegene met admin or eienaar affiliasies)."],"The default role, implies that you can read and write messages.":["Die verstekrol, impliseer dat u boodskappe kan lees en skryf."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besoekers mag nie boodskappe skryf in \'n gemodereerde groepgesprek nie."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Eienaar is die hoogste affiliasie. Eienaars kan rolle en affiliasies van alle andere gebruikers verander."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin is die 2de hoogste affiliasie. Admins kan die rolle en affiliases van alle andere gebruikers behalwe eienaars verander."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Verban gebruiker deur sy affiliasie na uitgeworpene (\\"outcast\\") te verander."],"Change role":["Verander rol"],"New Role":["Nuwe Rol"],"Reason":["Rede"],"Change affiliation":["Verander affiliasie"],"New affiliation":["Nuwe affiliasie"],"Affiliation":["Affiliasie"],"Moderator Tools":["Moderator-werktuie"],"No users with that affiliation found.":["Geen gebruikers met daardie affiliasie gevind nie."],"No users with that role found.":["Geen gebruikers met daardie rol gevind nie."],"Type here to filter the search results":["Tik hier om die soekresultate te filtreer"],"Show users":["Wys gebruikers"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rolle word aan gebruikers toegeken om aan hulle sekere vermoeëns binne die konteks van \'n groepklets te verskaf of verwyder. Hulle kan eksplisiet toegewys word, óf implisiet as deel van \'n affiliasie. \'n Role wat nie implisiet as deel van \'n affiliasie toegeken is nie, is slegs geldig vir die huidige gebruikersessie."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["\'n Affiliasie is \'n blywende aanspraak wat gewoonlik \'n specifieke rol impliseer en sekere voorregte en verantwoordelikhede toeken.\\nByvoorbeeld, admins en eienaars het automaties die moderator rol."],"Timeout error while trying to set the affiliation":["Die tyd is verstreke tydens die instelling van die affiliasie"],"Sorry, you\'re not allowed to make that change":["Jammer, u word nie toegelaat om daardie verandering te maak nie"],"Sorry, something went wrong while trying to set the affiliation":["Jammer, \'n fout het voorgekom tydens instelling van die affiliasie"],"Affiliation changed":["Affiliasie verander"],"Role changed":["Rol verander"],"You\'re not allowed to make that change":["U word nie toegelaat om daardie verandering te maak nie"],"Sorry, something went wrong while trying to set the role":["Jammer, \'n fout het voorgekom tydens instelling van die rol"],"Topic":["Onderwerp"],"Topic author":["Outeur van onderwerp"],"Groupchat address (JID)":["Groepgesprek-adres (JID)"],"Message archiving":["Boodskap-argivering"],"Messages are archived on the server":["Boodskappe word gestoor op die bediener"],"Description":["Beskrywing"],"Features":["Eienskappe"],"This groupchat is not publicly searchable":["Hierdie groepgesprek is nie openbaar vindbaar nie"],"This groupchat is restricted to members only":["Hiedie groepgesprek is slegs toeganklik vir lede"],"Members only":["Slegs lede"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan hierdie groepgesprek het toestemming nodig om boodskappe te kan stuur"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Hiedie groepgesprek vereis nie \'n wagwoord voor toegang nie"],"No password required":["Geen wagwoord benodig"],"Not anonymous":["Nie-anoniem"],"All other groupchat participants can see your XMPP address":["All andere groepgesprek deelnemers kan u XMPP-adres sien"],"Not moderated":["Ongemodereer"],"Participants entering this groupchat can write right away":["Deelnemers aan hierdie groepgesprek kan onmiddelik boodskappe stuur"],"Online users":["Aanlyn gebruikers"],"Anyone can join this groupchat":["Enige iemand kan hierdie groepgesprek bytree"],"This groupchat requires a password before entry":["Hiedie groepgesprek vereis \'n wagwoord voor toegang"],"Password protected":["Beveilig met \'n wagwoord"],"Persistent":["Blywend"],"This groupchat persists even if it\'s unoccupied":["Hierdie groepgesprek bly bestaan, selfs as niemand aanwesig is nie"],"Only moderators can see your XMPP address":["Slegs moderators kan u XMPP-adres sien"],"This groupchat will disappear once the last person leaves":["Hierdie groepgesprek sal verdwyn sodra die laaste deelnemer dit verlaat het"],"This groupchat is publicly searchable":["Hierdie groepgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Kennisgewing van %1$s"],"You\'re not allowed to send messages in this room":["U het geen toestemming om boodskappe in hierdie groepgesprek te stuur nie"],"The conversation has moved. Click below to enter.":["Hierdie gesprek is verskuif. Klik hieronder om deel te neem."],"This groupchat no longer exists":["Hierdie groepgesprek bestaan nie meer nie"],"Hide the groupchat topic":["Verskuil die groepgesprek se onderwerp"],"This groupchat is bookmarked":["Hierdie groepgesprek is geboekmerk"],"Enter groupchat":["Betree groepgesprek"],"Choose a nickname to enter":["Kies \'n bynaam om in te voer"],"Please choose your nickname":["Kies asb. u bynaam"],"This groupchat requires a password":["Hiedie groepgesprek vereis \'n wagwoord"],"Password: ":["Wagwoord: "],"Submit":["Dien in"],"This user is a moderator.":["Hierdie gebruiker is \'n moderator."],"This user can send messages in this groupchat.":["Hierdie gebruiker kan boodskappe na die groepgesprek stuur."],"This user can NOT send messages in this groupchat.":["Hierdie gebruiker kan NIE boodskappe na die groepgesprek stuur nie."],"Owner":["Eienaar"],"Admin":["Admin"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Besoeker"],"Click to mention %1$s in your message.":["Klik om %1$s in u boodskap te noem."],"Participants":["Deelnemers"],"%1$s has entered the groupchat":["%1$s het die groepgesprek bygetree"],"%1$s has left the groupchat":["%1$s het die groepgesprek verlaat"],"%1$s is now a moderator":["%1$s is nou \'n moderator"],"%1$s is no longer a moderator":["%1$s is nie meer \'n moderator nie"],"%1$s has been given a voice":["%1$s het nou \'n stem"],"%1$s has been muted":["%1$s is nou stemloos"],"%1$s and %2$s":["%1$s en %2$s"],"%1$s are typing":["%1$s tik tans"],"%1$s have stopped typing":["%1$s het opgehou tik"],"%1$s have gone away":["%1$s het weggegaan"],"%1$s have entered the groupchat":["%1$s het die groepgesprek bygetree"],"%1$s have left the groupchat":["%1$s het die groepgesprek verlaat"],"%1$s are now moderators":["%1$s is nou moderators"],"%1$s have been given voices":["%1$s het nou \'n stem"],"%1$s have been muted":["%1$s is nou stemloos"],"Change user\'s affiliation to admin":["Verander die gebruiker se affiliasie na admin"],"Ban user by changing their affiliation to outcast":["Verban die gebruiker deur sy affiliasie na uitgeworpene te verander"],"Clear the chat area":["Vee die kletsarea uit"],"Close this groupchat":["Sluit hierdie groepsgesprek"],"Change user role to participant":["Verander gebruiker se rol na lid"],"Remove this groupchat":["Verwyder hierdie groepgesprek"],"Kick user from groupchat":["Skop gebruiker uit hierdie groepgesprek"],"Write in 3rd person":["Skryf in die derde persoon"],"Grant membership to a user":["Verleen lidmaatskap aan \'n gebruiker"],"Opens up the moderator tools GUI":["Maak die moderator-werktuie oop"],"Remove user\'s ability to post messages":["Verwyder gebruiker se vermoë om boodskappe te plaas"],"Change your nickname":["Verander u bynaam"],"Grant moderator role to user":["Verleen moderator rol aan gebruiker"],"Grant ownership of this groupchat":["Verleen eienaarskap van hierdie groepgesprek"],"Register your nickname":["Registreer u bynaam"],"Revoke the user\'s current affiliation":["Herroep die gebruiker se affiliasie"],"Set groupchat subject":["Stel onderwerp vir groepgesprek"],"Set groupchat subject (alias for /subject)":["Stel groepgesprek onderwerp (alias vir /subject)"],"Allow muted user to post messages":["Laat stilgemaakte gebruiker toe om weer boodskappe te plaas"],"You are about to retract this message.":["U is op die punt om hierdie boodskap te herroep."],"You may optionally include a message, explaining the reason for the retraction.":["U kan opsioneel \'n verklaring insluit wat die rede vir die herroeping bevat."],"Message Retraction":["Boodskap Herroeping"],"Optional reason":["Opsionele rede"],"Sorry, you\'re not allowed to retract this message":["Jammer, u word nie toegelaat om die boodskap te herroep nie"],"A timeout occurred while trying to retract the message":["Die tyd is verstreke tydens die herroeping van die boodskap"],"Sorry, you\'re not allowed to retract this message.":["Jammer, u word nie toegelaat om die boodskap te herroep nie."],"Show more information about this groupchat":["Wys meer inligting aangaande hierdie groepgesprek"],"Configure":["Verstel"],"Configure this groupchat":["Verstel hierdie groepgesprek"],"Invite someone to join this groupchat":["Nooi iemand uit om hierdie groepsgesprek by te tree"],"Show topic":["Wys onderwerp"],"Hide topic":["Verskuil onderwerp"],"Show the topic message in the heading":["Wys onderwerp in die hoofstuk"],"Hide the topic in the heading":["Verskuil onderwerp in die hoofstuk"],"Moderate":["Modereer"],"Moderate this groupchat":["Modereer hierdie groepgesprek"],"Destroy":["Skrap"],"Leave":["Verlaat"],"Leave and close this groupchat":["Verlaat en sluit hierdie groepgesprek"],"Are you sure you want to leave this groupchat?":["Is u seker u wil hierdie groepgesprek verlaat?"],"Hide the list of participants":["Verskuil die lys van deelnemers"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toestemming: jy het nie die benodigde rol om dit te doen nie."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toestemming: jy het nie die benodigde affiliasie om dit te doen nie."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: die \\"%1$s\\" opdrag neem twee argumente, die gebruiker se bynaam en opsioneel daarby \'n rede."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: kon geen gesprekdeelnemer aanhand van u kriteria vind nie"],"Error: found multiple groupchat participant based on your arguments":["Fout: verskeie gesprek-deelnemers gevind gebaseer op die kriteria"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Kon nie \'n deelnemer met daardie bynaam vind nie. Hulle kon die groepgesprek verlaat het."],"Sorry, an error happened while running the command.":["Jammer, \'n fout het voorgekom tydens die uitvoering van die opdrag."],"Check your browser\'s developer console for details.":["U kan die webblaaier se ontwikkelaarkonsole bekyk vir foute."],"Are you sure you want to destroy this groupchat?":["Is u seker u wil hierdie groepgesprek skrap?"],"Please enter the XMPP address of this groupchat to confirm":["Voer asb. die XMPP-adres van hierdie groepklets in om te bevestig"],"name@example.org":["naam@voorbeeld.org"],"Optional reason for destroying this groupchat":["Opsionele rede waarom hierdie groepklets geskrap word"],"Optional XMPP address for a new groupchat that replaces this one":["Opsionele XMPP-adres van \'n nuwe groepklets wat hierdie een vervang"],"replacement@example.org":["naam@voorbeeld.org"],"Your nickname is \\"%1$s\\"":["U bynaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldige aantal argumente"],"This action was done by %1$s.":["Hierdie aksie is uitgevoer deur %1$s."],"The reason given is: \\"%1$s\\".":["Die gegewe rede is: \\"%1$s\\"."],"Groupchats":["Groepgesprekke"],"Add a new groupchat":["Voeg \'n nuwe groepgesprek by"],"Query for groupchats":["Soek vir groepgesprekke"],"Sorry, an error occurred while trying to submit the config form.":["A fout het voorgekom tydens indiening van die konfigurasievorm."],"Close these announcements":["Sluit hierdie aankondigints"],"Announcements":["Aankondigings"],"Click to open this server message":["Klik om hierdie bediener-boodskap te open"],"Notification from %1$s":["Kennisgewing van %1$s"],"%1$s says":["%1$s sê"],"has gone offline":["is nou aflyn"],"has gone away":["het weggegaan"],"is busy":["is besig"],"has come online":["het aanlyn gekom"],"wants to be your contact":["wil jou kontak wees"],"Hide":["Verskuil"],"Execute":["Voer uit"],"On which entity do you want to run commands?":["Watter entiteit moet hierdie opdragte uitvoer?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Sekere XMPP dienste en entiteite laat bevoorregte gebruikers toe om ad-hoc opdragte uit te voer."],"Commands found":["Opdragte gevind"],"List available commands":["Lys beskikbare opdragte"],"No commands found":["Geen opdragte gevind nie"],"Sorry, an error occurred while looking for commands on that entity.":["Jammer, \'n fout het voorgekom tydens die soektog na opdragte vir daardie entiteit."],"The specified entity doesn\'t support ad-hoc commands":["Die gekose entiteit ondersteun nie ad-hoc opdragte nie"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Jammer, \'n fout het voorgekom tydens die uitvoer van die opdrag. Sien die webblaaier se ontwikkelaarskonsole vir besonderhede."],"About":["Aangaande"],"Commands":["Opdragte"],"Settings":["Instellings"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Oopbron %2$s XMPP kletsprogram vrygestel deur %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaal %2$s dit in u eie taal"],"Log out":["Meld af"],"Click to change your chat status":["Klik om u kletsstatus te verander"],"Show details about this chat client":["Wys inligting aangaande hierdie kletsprogram"],"Your avatar image":["U profielbeeld"],"Checkbox for selecting the following fingerprint":["Aankruisvak om die volgende vingerafdruk te kies"],"Device without a fingerprint":["Toestel sonder \'n vingerafdruk"],"Checkbox for selecting the following device":["Aankruisvak om die volgende toestel te kies"],"Other OMEMO-enabled devices":["Ander OMEMO-ondersteunende apparate"],"Checkbox to select fingerprints of all other OMEMO devices":["Aankruisvak om vingerafdrukke van alle andere OMEMO-apparate te kies"],"Remove checked devices and close":["Verwyder gekose apparate en sluit"],"Select all":["Kies alle"],"This device\'s OMEMO fingerprint":["Hierdie toestel se OMEMO vingerafdruk"],"Generate new keys and fingerprint":["Genereer nuwe sleutels en vingerafdruk"],"Your Profile":["U profiel"],"XMPP Address (JID)":["Groepgesprek-adres (JID)"],"Save and close":["Stoor en sluit"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruik kommas om rolle te onderskei. Rolle word langs u naam op."],"OMEMO":["OMEMO"],"Profile":["Profiel"],"Sorry, an error happened while trying to save your profile data.":["Jammer, \'n fout het voorgekom tydens storing van u profieldata."],"You can check your browser\'s developer console for any error output.":["U kan die webblaaier se ontwikkelaarkonsole bekyk vir foute."],"Away":["Weg"],"Busy":["Besig"],"Custom status":["Aangepaste status"],"Offline":["Aflyn"],"Online":["Aangemeld"],"Away for long":["Weg vir langer"],"Change chat status":["Verander kletsstatus"],"Personal status message":["Persoonlike status-boodskap"],"I am %1$s":["Ek is %1$s"],"Are you sure you want to log out?":["Is u seker u wil afmeld?"],"online":["aangemeld"],"busy":["besig"],"away for long":["weg vir langer"],"away":["weg"],"offline":["afgemeld"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Jammer, kon nie \'n ontvangde OMEMO-boodskap ontsleutel nie."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s het blykbaar nie \'n kliënt wat OMEMO ondersteun nie. Vesleutelde boodskappe sal nie moontlik wees in hierdie groepgesprek nie."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Kan nie eind-tot-eind versleuteling in hierdie groepgesprek gebruik nie. Óf die groepgesprek het \'n vorm van anonimiteit, of nie alle deelnemers het ondersteuning vir OMEMO nie."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan nie eind-tot-eind versleuteling gebruik nie omdat %1$s \'n kliënt gebruik wat nie OMEMO kan ondersteun nie."],"Messages are being sent in plaintext":["Boodskappe word onversleutel gestuur"],"Messages are sent encrypted":["Boodskappe word versleuteld gestuur"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Om OMEMO versleuteling te ondersteun, moet hierdie groepklets nie anoniem wees nie, en beperk wees tot slegs lede"],"Sorry, an error occurred while trying to remove the devices.":["A fout het voorgekom tydens verwydering van die apparate."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Is u seker dat u nuwe OMEMO-sleutels wil genereer? Dit sal alle ou sleutels verwyder en alle voorheen versleutelde boodskappe sal nie meer ontsleutelbaar wees op hierdie toestel nie."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Jammer, ons kon nie \'n versleutelde boodskap stuur nie omdat %1$s vereis dat u ingeskryf is vir hulle teenwoordigheids-uitsendings sodat hulle OMEMO-informasie sigbaar is"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Jammer, ons kon nie \'n versleutelde boodskap stuur nie omdat die eksterne bediener vir %1$s nie gevind kon word nie"],"Unable to send an encrypted message due to an unexpected error.":["Kon nie \'n versleutelde boodskap stuur nie agv. \'n onverwagde fout."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Jammer, geen toestelle gevind waarheen ons \'n OMEMO-versleutelde boodskap kan stuur nie."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Hierdie is \'n OMEMO-versleutelde boodskap, wat u sagteware blykbaar nie ondersteun nie. Meer informasie by https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Haal die registrasie vorm"],"Tip: A list of public XMPP providers is available":["Wenk: \'n lys van openbare XMPP-bedieners is beskikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Jammer, ons kon nie \'n verbinding maak met u gekose bediener nie."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Jammer, die gekose bediener bied nie ondersteuning vir in-band registrasie nie. Probeer asb. \'n ander bediener."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Iets het foutgegaan tydens die opstelling van \'n verbinding met %1$s. Is u seker dit bestaan?"],"Now logging you in":["U word nou aangemeld"],"Registered successfully":["Suksesvol geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Die bediener het \'n registrasie-versoek afgeleun. Kontroleer u gegewe waardes vir korrektheid."],"Leave this groupchat":["Verlaat hierdie groepgesprek"],"Click to toggle the list of open groupchats":["Klik om die lys van oop groepgesprekke te vertoon/verskuil"],"Open Groupchats":["Oop Groepgesprekke"],"Are you sure you want to leave the groupchat %1$s?":["Is u seker u wil die groepgesprek \\"%1$s\\" verlaat?"],"Add":["Voeg by"],"Add a Contact":["Voeg \'n kontak by"],"This contact is busy":["Hierdie kontak is beset"],"This contact is online":["Die kontak is aangemeld"],"This contact is offline":["Die kontak is afgemeld"],"This contact is unavailable":["Hierdie kontak is nie beskikbaar nie"],"This contact is away for an extended period":["Hierdie kontak is vir \'n uitgebreide tyd afwesig"],"This contact is away":["Hierdie kontak is afwesig"],"Contact name":["Kontaknaam"],"Optional nickname":["Opsionele bynaam"],"Sorry, could not find a contact with that name":["Jammer, kon nie \'n kontak met daardie naam vind nie"],"This contact has already been added":["Hierdie kontak is reeds bygevoeg"],"Filter":["Filtreer"],"Filter by contact name":["Filtreer volgens kontaknaam"],"Filter by group name":["Filtreer volgens groepnaam"],"Filter by status":["Filtreer volgens status"],"Any":["Enige"],"Unread":["Ongelees"],"Chatty":["Spraaksaam"],"Extended Away":["Langer afwesig"],"Click to remove %1$s as a contact":["Klik om %1$s as kontak te verwyder"],"Click to accept the contact request from %1$s":["Klik om die kontakversoek van %1$s te aanvaar"],"Click to decline the contact request from %1$s":["Klik om die kontakversoek van %1$s te verwyder"],"Click to chat with %1$s (XMPP address: %2$s)":["Klik om te klets met %1$s (XMPP adres: %2$s)"],"Are you sure you want to decline this contact request?":["Is u seker dat u hierdie kontakversoek wil afleun?"],"Contacts":["Kontakte"],"Add a contact":["Voeg \'n kontak by"],"Re-sync your contacts":["Hersinkroniseer u kontakte"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[139],{507:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"af"},"Create your account":["Skep u kontak"],"Please enter the XMPP provider to register with:":["Kies asb. die XMPP-bediener waarby u wil registreer:"],"Already have a chat account?":["Het u reeds \'n kletsrekening?"],"Log in here":["Meld hier aan"],"Account Registration:":["Registrasie:"],"Register":["Registreer"],"Choose a different provider":["Kies \'n ander aanbieder"],"Hold tight, we\'re fetching the registration form…":["Wag \'n bietjie, ons gaan haal die registrasievorm…"],"Cancel":["Kanseleer"],"The connection has dropped, attempting to reconnect.":["Die konneksie is onderbreek, probeer tans tans om te herkonnekteer."],"An error occurred while connecting to the chat server.":["A fout het voorgekom tydens verbinding met die gesprekbediener."],"Your XMPP address and/or password is incorrect. Please try again.":["U XMPP adres en/of wagwoord is verkeerd. Probeer asseblief weer."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Jammer, ons kon nie \'n verbinding met die XMPP domein \\"%1$s\\" opstel nie"],"The XMPP server did not offer a supported authentication mechanism":["Die XMPP bediener het nie \'n bruikbare verifikasiemeganisme aangebied nie"],"Undecryptable OMEMO message":["Onontsleutelbare OMEMO-boodskap"],"Sorry, could not determine upload URL.":["Jammer, kon nie die oplaai-adres bepaal nie."],"Sorry, could not determine file upload URL.":["Jammer, kon nie die lêer oplaai-adres bepaal nie."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Jammer, oplaai van u lêer het gefaal. Die bediener se terugvoer: \\"%1$s"],"Sorry, could not succesfully upload your file.":["Jammer, oplaai van u lêer het gefaal."],"You\'re not allowed to retract your message.":["U word nie toegelaat om u boodskap te herroep nie."],"Sorry, an error occurred while trying to retract your message.":["Jammer, \'n fout het voorgekom tydens die herroeping van u boodskap."],"You\'re not allowed to send a message.":["U word nie toegelaat om \'n boodskap te stuur nie."],"Sorry, an error occurred while trying to send your message.":["Jammer, \'n fout het voorgekom tydens die aanstuur van u boodskap."],"Sorry, looks like file upload is not supported by your server.":["Jammer, dit blyk asof lêer-oplaai nie deur u bediener ondersteun word nie."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Die grootte van u lêer, %1$s, oortref die maksimum grootte, %2$s, wat deur u bediener toegelaat word."],"Smileys and emotions":["Glimlaggies en emosies"],"People":["Mense"],"Activities":["Aktiwiteite"],"Travel":["Reis"],"Objects":["Objekte"],"Animals and nature":["Diere en natuur"],"Food and drink":["Spys en drank"],"Symbols":["Simbole"],"Flags":["Vlae"],"Stickers":["Plakkers"],"This groupchat is not anonymous":["Hierdie groepgesprek is nie anoniem nie"],"This groupchat now shows unavailable members":["Hierdie groepgesprek wys nou onbeskikbare lede"],"This groupchat does not show unavailable members":["Hierdie groepgesprek wys nie onbeskikbare lede nie"],"The groupchat configuration has changed":["Die groepgesprek se instellings het verander"],"Groupchat logging is now enabled":["Groepgesprek log is nou aangeskakel"],"Groupchat logging is now disabled":["Groepgesprek log is nou afgeskakel"],"This groupchat is now no longer anonymous":["Hiedie groepgesprek is nie meer anoniem nie"],"This groupchat is now semi-anonymous":["Hierdie groepgesprek is nou gedeeltelik anoniem"],"This groupchat is now fully-anonymous":["Hierdie groepgesprek is nou ten volle anoniem"],"A new groupchat has been created":["\'n Nuwe groepgesprek is geskep"],"Your nickname has been automatically set to %1$s":["U bynaam is outomaties gestel na %1$s"],"Your nickname has been changed to %1$s":["U bynaam is verander na %1$s"],"You have been banned from this groupchat":["Jy is uit die groepgesprek verban"],"You have exited this groupchat due to a technical problem":["U het hierdie groepgesprek verlaat weens \'n tegniese probleem"],"You have been kicked from this groupchat":["Jy is uit die groepgesprek geskop"],"You have been removed from this groupchat because of an affiliation change":["Jy is vanuit die groepgesprek verwyder a.g.v \'n verandering van affiliasie"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Jy is vanuit die groepgesprek verwyder omdat die groepgesprek nou slegs tot lede beperk word en jy nie \'n lid is nie"],"You have been removed from this groupchat because the service hosting it is being shut down":["U is van hierdie groepgesprek verwyder aangesien die MUC (Multi-user chat) diens nou afgeskakel word"],"Your retraction was not delivered because you\'re not present in the groupchat.":["U boodskap is nie afgelewer nie want u is nie tans teenwoordig in die groepgesprek nie."],"Your message was not delivered because you weren\'t allowed to send it.":["U boodskap is nie afgelewer nie want u word nie toegelaat om dit te stuur nie."],"Your message was not delivered because you\'re not present in the groupchat.":["U boodskap is nie afgelewer nie want u is nie tans in hierdie groepgesprek teenwoordig nie."],"A timeout happened while while trying to retract your message.":["Die tyd is verstreke tydens die herroeping van u boodskap."],"You\'re not allowed to register yourself in this groupchat.":["U het geen toestemming om uself in hierdie groepgesprek te registreer nie."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["U het geen toestemming om uself in hierdie groepgesprek te registreer nie, omdat dit slegs toeganklik vir lede is."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan nie u bynaam in hierdie groepgesprek registreer nie, dit word nie ondersteun nie."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan nie u bynaam in hierdie groepgesprek registreer nie, ongeldige data is ingevoer."],"Topic set by %1$s":["Onderwerp deur %1$s gestel"],"Topic cleared by %1$s":["Onderwerp verwyder deur %1$s"],"%1$s has been banned by %2$s":["%1$s is deur %2$s verban"],"%1$s has been banned":["%1$s is verban"],"%1$s\'s nickname has changed":["%1$s se bynaam het verander"],"%1$s has been kicked out by %2$s":["%1$s is uitgeskop deur %2$s"],"%1$s has been kicked out":["%1$s is uitgeskop"],"%1$s has been removed because of an affiliation change":["%1$s is verwyder a.g.v \'n verandering van affiliasie"],"%1$s has been removed for not being a member":["%1$s is nie \'n lid nie, en dus verwyder"],"%1$s is no longer an admin of this groupchat":["%1$s is nie meer \'n admin van hierdie groepgesprek nie"],"%1$s is no longer an owner of this groupchat":["%1$s is nie meer eienaar van hierdie groepgesprek nie"],"%1$s is no longer banned from this groupchat":["%1$s is nie meer verban uit hierdie groepgesprek nie"],"%1$s is no longer a member of this groupchat":["%1$s is nie meer \'n lid van hierdie groepgesprek nie"],"%1$s is now a member of this groupchat":["%1$s is nou \'n lid van hierdie groepgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nou \'n %2$s van hierdie groepgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Die bynaam wat u gekies het is gereserveer of tans in gebruik, kies asb. \'n ander een."],"Password incorrect":["Verkeerde wagwoord"],"You are not on the member list of this groupchat.":["Jy is nie op die ledelys van hierdie groepgesprek nie."],"You have been banned from this groupchat.":["Jy is uit die groepgesprek verban."],"You are not allowed to create new groupchats.":["U word nie toegelaat om nog groepgesprekke te skep nie."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["U bynaam voldoen nie aan die groepgesprek se beleid nie."],"This groupchat does not (yet) exist.":["Hierdie groepgesprek bestaan tans (nog) nie."],"This groupchat has reached its maximum number of participants.":["Hierdie groepgesprek het sy maksimum aantal deelnemers bereik."],"Remote server not found":["Afgeleë bediener nie gevind nie"],"The explanation given is: \\"%1$s\\".":["Die gegewe rede is: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s het u uitgenooi om die groepgesprek %2$s by te tree"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s het u uitgenooi om die groepgesprek %2$s by te tree, en het die volgende rede verskaf: \\"%3$s\\""],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Jammer, \'n fout het voorgekom tydens storing van u boekmerk."],"Timeout Error":["Tydverstreke-fout"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Die bediener het nie u boekmerke binne die toegelate tydperk teruggegee nie. U kan hierdie webbladd herlaai om opnuut te probeer."],"My contacts":["My kontakte"],"Pending contacts":["Afwagtende kontakte"],"Contact requests":["Kontakversoeke"],"Ungrouped":["Ongegroepeer"],"New messages":["Nuwe boodskappe"],"Sorry, there was an error while trying to add %1$s as a contact.":["Jammer, \'n fout het voorgekom tydens die toevoeging van %1$s as \'n kontak."],"This client does not allow presence subscriptions":["Hierdie kliënt bied geen ondersteuning vir teenwoordigheids-inskrywings"],"Click to hide these contacts":["Klik om hierdie kontakte te verskuil"],"Unbookmark this groupchat":["Verwyder hierdie groepgesprek"],"Click to open this groupchat":["Klik om hierdie groepgesprek te open"],"Click to toggle the bookmarks list":["Klik om die boekmerklys te skakel"],"Bookmarks":["Boekmerke"],"Bookmark this groupchat":["Boekmerk hierdie groepgesprek"],"Would you like this groupchat to be automatically joined upon startup?":["Betree outomaties hierdie groepgesprek sodra aangemeld"],"The name for this bookmark:":["Die naam vir hierdie boekmerk:"],"What should your nickname for this groupchat be?":["Wat sal u bynaam vir hierdie groepgesprek wees?"],"Save":["Stoor"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Is u seker u wil die boekmerk \\"%1$s\\" verwyder?"],"Unbookmark":["Verwyder boekmerk"],"Bookmark":["Boekmerk"],"Close":["Sluit"],"OK":["OK"],"Image: ":["Beeld: "],"Download audio file \\"%1$s\\"":["Laai oudio lêer af: \\"%1$s\\""],"Download file \\"%1$s\\"":["Laai lêer af: \\"%1$s\\""],"Cancel Editing":["Kanseleer Wysiging"],"Edit":["Wysig"],"Retract":["Herroep"],"Message versions":["Boodskap weergawes"],"Retry":[""],"Uploading file:":["Laai lêer tans op:"],"%1$s has removed this message":["%1$s het hierdie boodskap verwyder"],"This message has been edited":["Hierdie boodskap is gewysig"],"Show more":["Wys meer"],"Show less":["Wys minder"],"No message history available.":["Geen boodskappe beskikbaar."],"Search results":["Soekresultate"],"Search":["Soek"],"Insert emojis":["Voeg \'n emoji by"],"Send the message":["Stuur die boodskap"],"Start a call":["Begin \'n oproep"],"Message characters remaining":["Oorblywende letters"],"Hide participants":["Verskuil deelnemers"],"Show participants":["Wys deelnemers"],"Choose a file to send":["Kies \'n lêer om te stuur"],"Click to write as a normal (non-spoiler) message":["Klik om \'n gewone (nie-verskuilde) boodskap te skryf"],"Click to write your message as a spoiler":["Klik om \'n verskuilde boodskap te skryf"],"The User\'s Profile Image":["Die gebruiker se profielbeeld"],"Trusted":["Vertroud"],"Untrusted":["Onvertroud"],"OMEMO Fingerprints":["OMEMO vingerafdrukke"],"No OMEMO-enabled devices found":["Geen OMEMO-ondersteunende apparate gevind nie"],"Remove as contact":["Verwyder as kontak"],"XMPP Address":["XMPP-adres"],"Email":["E-pos"],"Full Name":["Volle Naam"],"Nickname":["Bynaam"],"Refresh":["Verfris"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s tik tans"],"%1$s has stopped typing":["%1$s het opgehou tik"],"%1$s has gone away":["%1$s het weggegaan"],"Remove messages":["Verwyder boodskappe"],"Close this chat":["Sluit hierdie klets"],"Write in the third person":["Skryf in die derde persoon"],"Show this menu":["Vertoon hierdie keuselys"],"Hidden message":["Verskuilde boodskap"],"Message":["Boodskap"],"Optional hint":["Opsionele wenk"],"You have unread messages":["U het ongelese boodskappe"],"Details":["Inligting"],"See more information about this person":["Sien meer inligting aangaande hierdie persoon"],"Close and end this conversation":["Verlaat en sluit hierdie groepgesprek"],"Sorry, the connection has been lost, and your message could not be sent":["Jammer, die verbinding is onderbreek, en u boodskap kon nie gestuur word nie"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Wees bedag dat ander XMPP/Jabber kliënte (en bedieners) dalk nog nie boodskap-herroepings ondersteun nie en dat hierdie boodskap nie noodwendig orals verwyder sal word nie."],"Are you sure you want to retract this message?":["Is u seker u wil hierdie boodskap herroep?"],"Confirm":["Bevestig"],"You have an unsent message which will be lost if you continue. Are you sure?":["U het \'n ongestuurde boodskap wat verlore sal gaan indien u voortgaan. Is u seker?"],"Are you sure you want to clear the messages from this conversation?":["Is u seker u wil die boodskappe in hierdie gesprek uitvee?"],"%1$s has gone offline":["%1$s is nou aflyn"],"%1$s is busy":["%1$s is besig"],"%1$s is online":["%1$s aangemeld"],"Sorry, something went wrong while trying to refresh":["Jammer, \'n fout het voorgekom tydens verfrissing"],"Are you sure you want to remove this contact?":["Is u seker u wil hierdie kontak verwyder?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Jammer, \'n fout het voorgekom tydens die verwydering van %1$s as \'n kontak."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Om prestasie te verbeter, stoor ons data in die kasgeheue van die webblaaier. Ontkruis hierdie aankruisvak indien hierdie \'n openbare rekenaar is, of indien u wil hê dat u data verwyder moet word na afmelding. Dit is belangrik dat u eksplisiet afmeld, anders mag al die data in kasgeheue nie verwyder word nie. Wees bedag, wanneer u \'n onvertroude toestel gebruik, dat OMEMO versleuteling nie moontlik is nie."],"This is a trusted device":["Hierdie toestel word vertrou"],"Password":["Wagwoord"],"Create an account":["Skep \'n rekening"],"Don\'t have a chat account?":["Het u nie \'n chat-rekening nie?"],"Log in":["Log in"],"Disconnected":["Ontkoppel"],"Click here to log in anonymously":["Klik hier om anoniem in te log"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Verskaf asseblief \'n geldige XMPP address"],"Chat Contacts":["Kontakte"],"Toggle chat":["Klets"],"Click to restore this chat":["Klik om hierdie klets te herstel"],"Minimized":["Geminimaliseer"],"Minimize":["Minimeer"],"Minimize this chat":["Minimeer hierdie kletskas"],"Minimize this groupchat":["Minimeer hierdie groepsgesprek"],"This user is a moderator.":["Hierdie gebruiker is \'n moderator."],"This user can send messages in this groupchat.":["Hierdie gebruiker kan boodskappe na die groepgesprek stuur."],"This user can NOT send messages in this groupchat.":["Hierdie gebruiker kan NIE boodskappe na die groepgesprek stuur nie."],"Owner":["Eienaar"],"Admin":["Admin"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Besoeker"],"Click to mention %1$s in your message.":["Klik om %1$s in u boodskap te noem."],"Participants":["Deelnemers"],"This field is required":["Hierdie veld is verpligtend"],"Join":["Betree"],"Enter a new Groupchat":["Betree \'n nuwe groepgesprek"],"name@conference.example.org":["naam@konferensie.voorbeeld.org"],"Groupchat name":["Groepgesprek-naam"],"Groupchat address":["groepgesprek-adres"],"Groupchat id is invalid.":["Groepsgesprek id is ongeldig."],"Invite":["Nooi uit"],"Invite someone to this groupchat":["Nooi iemand uit na hierdie groepsgesprek"],"user@example.org":["gebruiker@voorbeeld.org"],"Optional reason for the invitation":["Opsionele rede vir die uitnodiging"],"Show groupchats":["Wys groepgesprekke"],"Server address":["Bediener adres"],"Show more information on this groupchat":["Wys meer inligting aangaande hierdie groepgesprek"],"Query for Groupchats":["Soek vir groepgesprekke"],"Description:":["Beskrywing:"],"Groupchat Address (JID):":["Groepgesprek-adres (JID):"],"Participants:":["Deelnemers:"],"Features:":["Eienskappe:"],"Requires authentication":["Benodig magtiging"],"Hidden":["Verskuil"],"Requires an invitation":["Benodig \'n uitnodiging"],"Moderated":["Gemodereer"],"Non-anonymous":["Nie-anoniem"],"Open":["Oop"],"Permanent":["Permanent"],"Public":["Publiek"],"Semi-anonymous":["Deels anoniem"],"Temporary":["Tydelik"],"Unmoderated":["Ongemodereer"],"conference.example.org":["groepgesprekke.voorbeeld.org"],"Groupchats found":["Groepgesprekke gevind"],"No groupchats found":["Geen groepgesprekke gevind"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderators is bevoorregte gebruikers wat die rolle van ander gebruikers kan verander (uitsluitend diegene met admin or eienaar affiliasies)."],"The default role, implies that you can read and write messages.":["Die verstekrol, impliseer dat u boodskappe kan lees en skryf."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besoekers mag nie boodskappe skryf in \'n gemodereerde groepgesprek nie."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Eienaar is die hoogste affiliasie. Eienaars kan rolle en affiliasies van alle andere gebruikers verander."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin is die 2de hoogste affiliasie. Admins kan die rolle en affiliases van alle andere gebruikers behalwe eienaars verander."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Verban gebruiker deur sy affiliasie na uitgeworpene (\\"outcast\\") te verander."],"Change role":["Verander rol"],"New Role":["Nuwe Rol"],"Reason":["Rede"],"Change affiliation":["Verander affiliasie"],"New affiliation":["Nuwe affiliasie"],"Affiliation":["Affiliasie"],"Moderator Tools":["Moderator-werktuie"],"No users with that affiliation found.":["Geen gebruikers met daardie affiliasie gevind nie."],"No users with that role found.":["Geen gebruikers met daardie rol gevind nie."],"Type here to filter the search results":["Tik hier om die soekresultate te filtreer"],"Show users":["Wys gebruikers"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rolle word aan gebruikers toegeken om aan hulle sekere vermoeëns binne die konteks van \'n groepklets te verskaf of verwyder. Hulle kan eksplisiet toegewys word, óf implisiet as deel van \'n affiliasie. \'n Role wat nie implisiet as deel van \'n affiliasie toegeken is nie, is slegs geldig vir die huidige gebruikersessie."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["\'n Affiliasie is \'n blywende aanspraak wat gewoonlik \'n specifieke rol impliseer en sekere voorregte en verantwoordelikhede toeken.\\nByvoorbeeld, admins en eienaars het automaties die moderator rol."],"Timeout error while trying to set the affiliation":["Die tyd is verstreke tydens die instelling van die affiliasie"],"Sorry, you\'re not allowed to make that change":["Jammer, u word nie toegelaat om daardie verandering te maak nie"],"Sorry, something went wrong while trying to set the affiliation":["Jammer, \'n fout het voorgekom tydens instelling van die affiliasie"],"Affiliation changed":["Affiliasie verander"],"Role changed":["Rol verander"],"You\'re not allowed to make that change":["U word nie toegelaat om daardie verandering te maak nie"],"Sorry, something went wrong while trying to set the role":["Jammer, \'n fout het voorgekom tydens instelling van die rol"],"Topic":["Onderwerp"],"Topic author":["Outeur van onderwerp"],"Groupchat address (JID)":["Groepgesprek-adres (JID)"],"Message archiving":["Boodskap-argivering"],"Messages are archived on the server":["Boodskappe word gestoor op die bediener"],"Description":["Beskrywing"],"Features":["Eienskappe"],"This groupchat is not publicly searchable":["Hierdie groepgesprek is nie openbaar vindbaar nie"],"This groupchat is restricted to members only":["Hiedie groepgesprek is slegs toeganklik vir lede"],"Members only":["Slegs lede"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan hierdie groepgesprek het toestemming nodig om boodskappe te kan stuur"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Hiedie groepgesprek vereis nie \'n wagwoord voor toegang nie"],"No password required":["Geen wagwoord benodig"],"Not anonymous":["Nie-anoniem"],"All other groupchat participants can see your XMPP address":["All andere groepgesprek deelnemers kan u XMPP-adres sien"],"Not moderated":["Ongemodereer"],"Participants entering this groupchat can write right away":["Deelnemers aan hierdie groepgesprek kan onmiddelik boodskappe stuur"],"Online users":["Aanlyn gebruikers"],"Anyone can join this groupchat":["Enige iemand kan hierdie groepgesprek bytree"],"This groupchat requires a password before entry":["Hiedie groepgesprek vereis \'n wagwoord voor toegang"],"Password protected":["Beveilig met \'n wagwoord"],"Persistent":["Blywend"],"This groupchat persists even if it\'s unoccupied":["Hierdie groepgesprek bly bestaan, selfs as niemand aanwesig is nie"],"Only moderators can see your XMPP address":["Slegs moderators kan u XMPP-adres sien"],"This groupchat will disappear once the last person leaves":["Hierdie groepgesprek sal verdwyn sodra die laaste deelnemer dit verlaat het"],"This groupchat is publicly searchable":["Hierdie groepgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Kennisgewing van %1$s"],"You\'re not allowed to send messages in this room":["U het geen toestemming om boodskappe in hierdie groepgesprek te stuur nie"],"The conversation has moved. Click below to enter.":["Hierdie gesprek is verskuif. Klik hieronder om deel te neem."],"This groupchat no longer exists":["Hierdie groepgesprek bestaan nie meer nie"],"Hide the groupchat topic":["Verskuil die groepgesprek se onderwerp"],"This groupchat is bookmarked":["Hierdie groepgesprek is geboekmerk"],"Enter groupchat":["Betree groepgesprek"],"Choose a nickname to enter":["Kies \'n bynaam om in te voer"],"Please choose your nickname":["Kies asb. u bynaam"],"This groupchat requires a password":["Hiedie groepgesprek vereis \'n wagwoord"],"Password: ":["Wagwoord: "],"Submit":["Dien in"],"%1$s has entered the groupchat":["%1$s het die groepgesprek bygetree"],"%1$s has left the groupchat":["%1$s het die groepgesprek verlaat"],"%1$s is now a moderator":["%1$s is nou \'n moderator"],"%1$s is no longer a moderator":["%1$s is nie meer \'n moderator nie"],"%1$s has been given a voice":["%1$s het nou \'n stem"],"%1$s has been muted":["%1$s is nou stemloos"],"%1$s and %2$s":["%1$s en %2$s"],"%1$s are typing":["%1$s tik tans"],"%1$s have stopped typing":["%1$s het opgehou tik"],"%1$s have gone away":["%1$s het weggegaan"],"%1$s have entered the groupchat":["%1$s het die groepgesprek bygetree"],"%1$s have left the groupchat":["%1$s het die groepgesprek verlaat"],"%1$s are now moderators":["%1$s is nou moderators"],"%1$s have been given voices":["%1$s het nou \'n stem"],"%1$s have been muted":["%1$s is nou stemloos"],"Change user\'s affiliation to admin":["Verander die gebruiker se affiliasie na admin"],"Ban user by changing their affiliation to outcast":["Verban die gebruiker deur sy affiliasie na uitgeworpene te verander"],"Clear the chat area":["Vee die kletsarea uit"],"Close this groupchat":["Sluit hierdie groepsgesprek"],"Change user role to participant":["Verander gebruiker se rol na lid"],"Remove this groupchat":["Verwyder hierdie groepgesprek"],"Kick user from groupchat":["Skop gebruiker uit hierdie groepgesprek"],"Write in 3rd person":["Skryf in die derde persoon"],"Grant membership to a user":["Verleen lidmaatskap aan \'n gebruiker"],"Opens up the moderator tools GUI":["Maak die moderator-werktuie oop"],"Remove user\'s ability to post messages":["Verwyder gebruiker se vermoë om boodskappe te plaas"],"Change your nickname":["Verander u bynaam"],"Grant moderator role to user":["Verleen moderator rol aan gebruiker"],"Grant ownership of this groupchat":["Verleen eienaarskap van hierdie groepgesprek"],"Register your nickname":["Registreer u bynaam"],"Revoke the user\'s current affiliation":["Herroep die gebruiker se affiliasie"],"Set groupchat subject":["Stel onderwerp vir groepgesprek"],"Set groupchat subject (alias for /subject)":["Stel groepgesprek onderwerp (alias vir /subject)"],"Allow muted user to post messages":["Laat stilgemaakte gebruiker toe om weer boodskappe te plaas"],"You are about to retract this message.":["U is op die punt om hierdie boodskap te herroep."],"You may optionally include a message, explaining the reason for the retraction.":["U kan opsioneel \'n verklaring insluit wat die rede vir die herroeping bevat."],"Message Retraction":["Boodskap Herroeping"],"Optional reason":["Opsionele rede"],"Sorry, you\'re not allowed to retract this message":["Jammer, u word nie toegelaat om die boodskap te herroep nie"],"A timeout occurred while trying to retract the message":["Die tyd is verstreke tydens die herroeping van die boodskap"],"Sorry, you\'re not allowed to retract this message.":["Jammer, u word nie toegelaat om die boodskap te herroep nie."],"Show more information about this groupchat":["Wys meer inligting aangaande hierdie groepgesprek"],"Configure":["Verstel"],"Configure this groupchat":["Verstel hierdie groepgesprek"],"Invite someone to join this groupchat":["Nooi iemand uit om hierdie groepsgesprek by te tree"],"Show topic":["Wys onderwerp"],"Hide topic":["Verskuil onderwerp"],"Show the topic message in the heading":["Wys onderwerp in die hoofstuk"],"Hide the topic in the heading":["Verskuil onderwerp in die hoofstuk"],"Moderate":["Modereer"],"Moderate this groupchat":["Modereer hierdie groepgesprek"],"Destroy":["Skrap"],"Leave":["Verlaat"],"Leave and close this groupchat":["Verlaat en sluit hierdie groepgesprek"],"Are you sure you want to leave this groupchat?":["Is u seker u wil hierdie groepgesprek verlaat?"],"Hide the list of participants":["Verskuil die lys van deelnemers"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toestemming: jy het nie die benodigde rol om dit te doen nie."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toestemming: jy het nie die benodigde affiliasie om dit te doen nie."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: die \\"%1$s\\" opdrag neem twee argumente, die gebruiker se bynaam en opsioneel daarby \'n rede."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: kon geen gesprekdeelnemer aanhand van u kriteria vind nie"],"Error: found multiple groupchat participant based on your arguments":["Fout: verskeie gesprek-deelnemers gevind gebaseer op die kriteria"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Kon nie \'n deelnemer met daardie bynaam vind nie. Hulle kon die groepgesprek verlaat het."],"Sorry, an error happened while running the command.":["Jammer, \'n fout het voorgekom tydens die uitvoering van die opdrag."],"Check your browser\'s developer console for details.":["U kan die webblaaier se ontwikkelaarkonsole bekyk vir foute."],"Are you sure you want to destroy this groupchat?":["Is u seker u wil hierdie groepgesprek skrap?"],"Please enter the XMPP address of this groupchat to confirm":["Voer asb. die XMPP-adres van hierdie groepklets in om te bevestig"],"name@example.org":["naam@voorbeeld.org"],"Optional reason for destroying this groupchat":["Opsionele rede waarom hierdie groepklets geskrap word"],"Optional XMPP address for a new groupchat that replaces this one":["Opsionele XMPP-adres van \'n nuwe groepklets wat hierdie een vervang"],"replacement@example.org":["naam@voorbeeld.org"],"Your nickname is \\"%1$s\\"":["U bynaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldige aantal argumente"],"This action was done by %1$s.":["Hierdie aksie is uitgevoer deur %1$s."],"The reason given is: \\"%1$s\\".":["Die gegewe rede is: \\"%1$s\\"."],"Groupchats":["Groepgesprekke"],"Add a new groupchat":["Voeg \'n nuwe groepgesprek by"],"Query for groupchats":["Soek vir groepgesprekke"],"Sorry, an error occurred while trying to submit the config form.":["A fout het voorgekom tydens indiening van die konfigurasievorm."],"Close these announcements":["Sluit hierdie aankondigints"],"Announcements":["Aankondigings"],"Click to open this server message":["Klik om hierdie bediener-boodskap te open"],"Notification from %1$s":["Kennisgewing van %1$s"],"%1$s says":["%1$s sê"],"has gone offline":["is nou aflyn"],"has gone away":["het weggegaan"],"is busy":["is besig"],"has come online":["het aanlyn gekom"],"wants to be your contact":["wil jou kontak wees"],"Hide":["Verskuil"],"Execute":["Voer uit"],"On which entity do you want to run commands?":["Watter entiteit moet hierdie opdragte uitvoer?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Sekere XMPP dienste en entiteite laat bevoorregte gebruikers toe om ad-hoc opdragte uit te voer."],"Commands found":["Opdragte gevind"],"List available commands":["Lys beskikbare opdragte"],"No commands found":["Geen opdragte gevind nie"],"Sorry, an error occurred while looking for commands on that entity.":["Jammer, \'n fout het voorgekom tydens die soektog na opdragte vir daardie entiteit."],"The specified entity doesn\'t support ad-hoc commands":["Die gekose entiteit ondersteun nie ad-hoc opdragte nie"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Jammer, \'n fout het voorgekom tydens die uitvoer van die opdrag. Sien die webblaaier se ontwikkelaarskonsole vir besonderhede."],"About":["Aangaande"],"Commands":["Opdragte"],"Settings":["Instellings"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Oopbron %2$s XMPP kletsprogram vrygestel deur %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaal %2$s dit in u eie taal"],"Log out":["Meld af"],"Click to change your chat status":["Klik om u kletsstatus te verander"],"Show details about this chat client":["Wys inligting aangaande hierdie kletsprogram"],"Your avatar image":["U profielbeeld"],"Checkbox for selecting the following fingerprint":["Aankruisvak om die volgende vingerafdruk te kies"],"Device without a fingerprint":["Toestel sonder \'n vingerafdruk"],"Checkbox for selecting the following device":["Aankruisvak om die volgende toestel te kies"],"Other OMEMO-enabled devices":["Ander OMEMO-ondersteunende apparate"],"Checkbox to select fingerprints of all other OMEMO devices":["Aankruisvak om vingerafdrukke van alle andere OMEMO-apparate te kies"],"Remove checked devices and close":["Verwyder gekose apparate en sluit"],"Select all":["Kies alle"],"This device\'s OMEMO fingerprint":["Hierdie toestel se OMEMO vingerafdruk"],"Generate new keys and fingerprint":["Genereer nuwe sleutels en vingerafdruk"],"Your Profile":["U profiel"],"XMPP Address (JID)":["Groepgesprek-adres (JID)"],"Save and close":["Stoor en sluit"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruik kommas om rolle te onderskei. Rolle word langs u naam op."],"OMEMO":["OMEMO"],"Profile":["Profiel"],"Sorry, an error happened while trying to save your profile data.":["Jammer, \'n fout het voorgekom tydens storing van u profieldata."],"You can check your browser\'s developer console for any error output.":["U kan die webblaaier se ontwikkelaarkonsole bekyk vir foute."],"Away":["Weg"],"Busy":["Besig"],"Custom status":["Aangepaste status"],"Offline":["Aflyn"],"Online":["Aangemeld"],"Away for long":["Weg vir langer"],"Change chat status":["Verander kletsstatus"],"Personal status message":["Persoonlike status-boodskap"],"I am %1$s":["Ek is %1$s"],"Are you sure you want to log out?":["Is u seker u wil afmeld?"],"online":["aangemeld"],"busy":["besig"],"away for long":["weg vir langer"],"away":["weg"],"offline":["afgemeld"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Jammer, kon nie \'n ontvangde OMEMO-boodskap ontsleutel nie."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s het blykbaar nie \'n kliënt wat OMEMO ondersteun nie. Vesleutelde boodskappe sal nie moontlik wees in hierdie groepgesprek nie."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Kan nie eind-tot-eind versleuteling in hierdie groepgesprek gebruik nie. Óf die groepgesprek het \'n vorm van anonimiteit, of nie alle deelnemers het ondersteuning vir OMEMO nie."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan nie eind-tot-eind versleuteling gebruik nie omdat %1$s \'n kliënt gebruik wat nie OMEMO kan ondersteun nie."],"Messages are being sent in plaintext":["Boodskappe word onversleutel gestuur"],"Messages are sent encrypted":["Boodskappe word versleuteld gestuur"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Om OMEMO versleuteling te ondersteun, moet hierdie groepklets nie anoniem wees nie, en beperk wees tot slegs lede"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Jammer, ons kon nie \'n versleutelde boodskap stuur nie omdat %1$s vereis dat u ingeskryf is vir hulle teenwoordigheids-uitsendings sodat hulle OMEMO-informasie sigbaar is"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Jammer, ons kon nie \'n versleutelde boodskap stuur nie omdat die eksterne bediener vir %1$s nie gevind kon word nie"],"Unable to send an encrypted message due to an unexpected error.":["Kon nie \'n versleutelde boodskap stuur nie agv. \'n onverwagde fout."],"Sorry, an error occurred while trying to remove the devices.":["A fout het voorgekom tydens verwydering van die apparate."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Is u seker dat u nuwe OMEMO-sleutels wil genereer? Dit sal alle ou sleutels verwyder en alle voorheen versleutelde boodskappe sal nie meer ontsleutelbaar wees op hierdie toestel nie."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Jammer, geen toestelle gevind waarheen ons \'n OMEMO-versleutelde boodskap kan stuur nie."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Hierdie is \'n OMEMO-versleutelde boodskap, wat u sagteware blykbaar nie ondersteun nie. Meer informasie by https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Haal die registrasie vorm"],"Tip: A list of public XMPP providers is available":["Wenk: \'n lys van openbare XMPP-bedieners is beskikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Jammer, ons kon nie \'n verbinding maak met u gekose bediener nie."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Jammer, die gekose bediener bied nie ondersteuning vir in-band registrasie nie. Probeer asb. \'n ander bediener."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Iets het foutgegaan tydens die opstelling van \'n verbinding met %1$s. Is u seker dit bestaan?"],"Now logging you in":["U word nou aangemeld"],"Registered successfully":["Suksesvol geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Die bediener het \'n registrasie-versoek afgeleun. Kontroleer u gegewe waardes vir korrektheid."],"Leave this groupchat":["Verlaat hierdie groepgesprek"],"Click to toggle the list of open groupchats":["Klik om die lys van oop groepgesprekke te vertoon/verskuil"],"Open Groupchats":["Oop Groepgesprekke"],"Are you sure you want to leave the groupchat %1$s?":["Is u seker u wil die groepgesprek \\"%1$s\\" verlaat?"],"Add":["Voeg by"],"Add a Contact":["Voeg \'n kontak by"],"This contact is busy":["Hierdie kontak is beset"],"This contact is online":["Die kontak is aangemeld"],"This contact is offline":["Die kontak is afgemeld"],"This contact is unavailable":["Hierdie kontak is nie beskikbaar nie"],"This contact is away for an extended period":["Hierdie kontak is vir \'n uitgebreide tyd afwesig"],"This contact is away":["Hierdie kontak is afwesig"],"Contact name":["Kontaknaam"],"Optional nickname":["Opsionele bynaam"],"Sorry, could not find a contact with that name":["Jammer, kon nie \'n kontak met daardie naam vind nie"],"This contact has already been added":["Hierdie kontak is reeds bygevoeg"],"Filter":["Filtreer"],"Filter by contact name":["Filtreer volgens kontaknaam"],"Filter by group name":["Filtreer volgens groepnaam"],"Filter by status":["Filtreer volgens status"],"Any":["Enige"],"Unread":["Ongelees"],"Chatty":["Spraaksaam"],"Extended Away":["Langer afwesig"],"Click to remove %1$s as a contact":["Klik om %1$s as kontak te verwyder"],"Click to accept the contact request from %1$s":["Klik om die kontakversoek van %1$s te aanvaar"],"Click to decline the contact request from %1$s":["Klik om die kontakversoek van %1$s te verwyder"],"Click to chat with %1$s (XMPP address: %2$s)":["Klik om te klets met %1$s (XMPP adres: %2$s)"],"Are you sure you want to decline this contact request?":["Is u seker dat u hierdie kontakversoek wil afleun?"],"Contacts":["Kontakte"],"Add a contact":["Voeg \'n kontak by"],"Re-sync your contacts":["Hersinkroniseer u kontakte"]}}}')}}]); //# sourceMappingURL=af-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/ar-LC_MESSAGES-converse-po.js b/src/conversejs/locales/ar-LC_MESSAGES-converse-po.js index efe63075576d4a215157e4d5c265fb879de2b550..ec4964adc1ca82058ba3b4102126b4c6bb5d2bbf 100644 --- a/src/conversejs/locales/ar-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/ar-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{420:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;","lang":"ar"},"Create your account":["إنشئ Øسابك"],"Please enter the XMPP provider to register with:":["يرجى إدخال مزود خدمة XMPP الذي تود إنشاء Øسابك Ùيه :"],"Already have a chat account?":["هل تمتلك Øساب Ù…ÙØادثة؟"],"Log in here":["قم بتسجيل الدخول هنا"],"Account Registration:":["إنشاء Øساب :"],"Register":["تسجيل Øساب"],"Choose a different provider":["إختر مزود خدمة آخَر"],"Hold tight, we\'re fetching the registration form…":["تØلى بالصبر، جار٠جلب استمارة التسجيل …"],"Cancel":["إلغاء"],"The connection has dropped, attempting to reconnect.":["لقد إنقطع الإتصال، عملية إعادة الربط جارية."],"An error occurred while connecting to the chat server.":["طرأ هناك خطأ أثناء الربط بخادم المØادثة."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["عذرا، لم نتمكن Ù…ÙÙ† الاتصال بخادوم XMPP عبر النطاق : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["إنّ خادم XMPP لم يقدم دعم آلية المصادقة"],"Sorry, could not determine upload URL.":["عذرًا ØŒ تعذر تØديد عنوان URL للتØميل."],"Sorry, could not determine file upload URL.":["عذرًا ØŒ تعذر تØديد عنوان URL لتØميل الملÙ."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["للأس٠لم نتمكّن Ù…ÙÙ† القيام برÙع ملÙÙƒ بنجاØ. أجاب خادومك : \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["للأس٠لم نتمكّن Ù…ÙÙ† القيام برÙع ملÙÙƒ بنجاØ."],"Sorry, looks like file upload is not supported by your server.":["للأس٠يبدو أن خاصية رÙع الملÙات لا يدعمها خادومكم."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":["الوجوه الضاØكة والعواطÙ"],"People":["أشخاص"],"Activities":["أنشطة"],"Travel":["سÙر"],"Objects":["أشياء"],"Animals and nature":["Øيوانات وطبيعة"],"Food and drink":["طعام وشراب"],"Symbols":["رموز"],"Flags":["أعلام"],"Stickers":["ملصقات"],"This groupchat is not anonymous":["Ùريق المØادثة هذا ليس مجهولًا"],"This groupchat now shows unavailable members":["Ùريق المØادثة هذا يعرض الآن الأعضاء المشغولين"],"This groupchat does not show unavailable members":["Ùريق المØادثة هذا لا يعرض الأعضاء المشغولين"],"The groupchat configuration has changed":["تم تعديل خيارات Ùريق المØادثة"],"This groupchat is now no longer anonymous":["لم يَعÙد Ùريق المØادثة مجهولا بعد الآن"],"This groupchat is now semi-anonymous":["Ø£ØµØ¨Ø Ùريق المØادثة مجهولا نسبيًا"],"This groupchat is now fully-anonymous":["Ø£ØµØ¨Ø Ùريق المØادثة الآن مجهولا تمامًا"],"A new groupchat has been created":["تم إنشاء Ùريق Ù…Øادثة جديد"],"Your nickname has been automatically set to %1$s":["لقد تم تغيير إسمك المستعار آليا إلى %1$s"],"Your nickname has been changed to %1$s":["لقد تم تغيير إسمك المÙستعار إلى %1$s"],"You have been banned from this groupchat":["لقد تم طردÙÙƒ Ù…ÙÙ† Ùريق المØادثة هذا"],"You have been kicked from this groupchat":["لقد تم طردÙÙƒ مؤقتًا Ù…ÙÙ† Ùريق المØادثة هذا"],"You have been removed from this groupchat because of an affiliation change":["لقد تم إزالتك من هذه المØادثة الجماعية بسبب تغير ÙÙŠ الانتساب"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["تمت إزالتك من Ùريق الدردشة هذا لأن Ùريق الدردشة تغير إلى الأعضاء Ùقط وأنت لست عضوًا Ùيه"],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"You\'re not allowed to register yourself in this groupchat.":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بتسجيل Ù†Ùسك ÙÙŠ Ùريق المØادثة هذا."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["لا يمكن تسجيل اسمك المستعار ÙÙŠ ÙÙŠ Ùريق الدردشة هذا ØŒ إنه لا يدعم التسجيل."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":["قام %1$s بتØديد الموضوع"],"Topic cleared by %1$s":["قام %1$s بمØÙˆ الموضوع"],"%1$s has been banned by %2$s":["لقد تم طرد %1$s من طر٠%2$s"],"%1$s has been banned":["لقد تم طرد %1$s"],"%1$s\'s nickname has changed":["لقد قام %1$s بتغيير إسمه المÙستعار"],"%1$s has been kicked out by %2$s":["لقد تم طرد %1$s مؤقتًا Ù…ÙÙ† طر٠%2$s"],"%1$s has been kicked out":["لقد تم طرد %1$s Ù…ÙÙ† Ùريق المØادثة مؤقتًا"],"%1$s has been removed because of an affiliation change":["تمت إزالة %1$s بسبب تغير ÙÙŠ الانتساب"],"%1$s has been removed for not being a member":["تمت إزالة %1$s لأنه ليس عضو Ù…Ùنتم إلى الغرÙØ©"],"%1$s is no longer an admin of this groupchat":["لم يعد %1$s مديرا Ù„Ùريق المØادثة هذا بعد الآن"],"%1$s is no longer an owner of this groupchat":["لم يعد %1$s مالكا Ù„Ùريق المØادثة الجماعية هذا"],"%1$s is now an %2$s of this groupchat":["Ø£ØµØ¨Ø Ø§Ù„Ø¢Ù† %1$s %2$s Ù„Ùريق المØادثة هذا"],"The nickname you chose is reserved or currently in use, please choose a different one.":["إنّ الإسم المستعار الذي قمت باختياره Ù…Øجوز أو Ù…Ùستعمَل Øاليا Ù…ÙÙ† طر٠شخص آخَر، ÙŠÙرجى اختيار إسم٠آخَر."],"Password incorrect":["الكلمة السرية خاطئة"],"You are not on the member list of this groupchat.":["أنت لست Ù…ÙÙ† بين قائمة أعضاء Ùريق المØادثة هذا."],"You have been banned from this groupchat.":["لقد تم طردÙÙƒ Ù…ÙÙ† Ùريق المØادثة هذا."],"You are not allowed to create new groupchats.":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بإنشاء ÙÙرَق Ù…Øادثة جÙدد."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["إنّ إسمك المستعار لا يتماشى مع سياسة Ùريق المØادثة هذا."],"This groupchat does not (yet) exist.":["Ùريق المØادثة هذا ليس له ÙˆÙجود بعد."],"This groupchat has reached its maximum number of participants.":["لقد بلغ Ùريق المØادثة الØالي الØد الأقصى لاستيعاب الأعضاء."],"Remote server not found":["لم يتم العثور على الخادم عن بÙعد"],"The explanation given is: \\"%1$s\\".":["السبب : \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["قام %1$s بدعوتك للإلتØاق بÙريق المØادثة : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["قام %1$s بدعوتك للالتØاق بÙريق المØادثة : %2$s لهذا السبب: \\"%3$s\\""],"Error":["خطأ"],"Sorry, something went wrong while trying to save your bookmark.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الإØتÙاظ بالÙواصل المرجعية."],"Timeout Error":["خطأ ÙÙŠ مهلة الإنتظار"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["جهات إتصالي"],"Pending contacts":["المÙراسلون المÙعلّقون"],"Contact requests":["طلبات التراسل"],"Ungrouped":["بدون Ùريق"],"New messages":["الرسائل الجديدة"],"Sorry, there was an error while trying to add %1$s as a contact.":["المعذرة، لقد Øدث هناك خطأ أثناء Ù…Øاولة إضاÙØ© %1$s كمÙراسÙÙ„."],"This client does not allow presence subscriptions":["هذا العميل لا ÙŠØ³Ù…Ø Ø§Ø´ØªØ±Ø§ÙƒØ§Øª التواجد"],"Click to hide these contacts":["أْنقÙر لإخÙاء هؤلاء المراسلين"],"Unbookmark this groupchat":["تنØية Ùريق المØادثة Ù…ÙÙ† الÙواصل المرجعية"],"Click to open this groupchat":["أنقر Ù„ÙØªØ Ùريق المØادثة هذا"],"Click to toggle the bookmarks list":["أنقر للإنتقال إلى قائمة الإشارات المرجعية"],"Bookmarks":["الÙواصل المرجعية"],"Bookmark this groupchat":["إضاÙØ© Ùريق المØادثة هذا إلى الÙواصل المرجعية"],"Would you like this groupchat to be automatically joined upon startup?":["هل تريد الإلتØاق آليًا بÙريق المØادثة هذا مباشَرةً بعد الإتصال ØŸ"],"The name for this bookmark:":["تسمية الÙاصلة المرجعية :"],"What should your nickname for this groupchat be?":["ما هو الإسم المÙستعار الذي تريد استخدامه ÙÙŠ Ùريق المØادثة هذا ØŸ"],"Save":["ØÙظ"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["هل أنت متأكد أنك تريد إزالة الÙاصلة المرجعية \\"%1$s\\" ØŸ"],"Unbookmark":["إزاØØ© من الÙواصل المرجعية"],"Bookmark":["إضاÙØ© إلى الÙواصل المرجعية"],"Close":["إغلاق"],"OK":["Øسنا"],"Image: ":[""],"Download audio file \\"%1$s\\"":["تنزيل المل٠الصوتي: \\"%1$s\\""],"Download file \\"%1$s\\"":["تنزيل الملÙ: \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["أرشÙØ© الرسائل"],"Retry":[""],"Uploading file:":["تØميل الملÙ:"],"This message has been edited":["تم إعادة تØرير هذه الرسالة"],"Show more":["عرض المزيد"],"No message history available.":["ليس هناك أي سجلّ Ù…ØªØ§Ø Ù„Ù„Ø±Ø³Ø§Ø¦Ù„."],"Search results":["نتائج البØØ«"],"Search":["بØØ«"],"Insert emojis":["إدراج وجه مبتسم"],"Send the message":["ارسل الرسالة"],"Start a call":["إبدأ مكالمة"],"Choose a file to send":["اختر المل٠الذي تريد إرساله"],"The User\'s Profile Image":["الصورة الشخصية للمستخدم"],"Trusted":["موثوق Ùيه"],"Untrusted":["غير موثوق Ùيه"],"OMEMO Fingerprints":["بصمات أوميمو"],"Remove as contact":["إزالة Ù…ÙÙ† المراسÙلين"],"XMPP Address":["عنوان XMPP"],"Email":["البريد الإلكتروني"],"Full Name":["الإسم الكامل"],"Nickname":["الإسم المÙستعار"],"Refresh":["تØديث"],"Role":["الدور"],"URL":["عنوان الرابط"],"%1$s is typing":["إنّ %1$s يكتب Øاليا"],"%1$s has stopped typing":["%1$s توقّÙÙŽ عن الكتابة"],"%1$s has gone away":["%1$s غائب"],"Remove messages":["Øذ٠الرسائل"],"Close this chat":["اغلق هذه المØادثة"],"Write in the third person":["كتابة لشخص ثالث"],"Show this menu":["اظهار هذه القائمة"],"Hidden message":["رسالة مخÙية"],"Message":["رسالة"],"Optional hint":["دليل اختياري"],"You have unread messages":["لقد ورَدَت إليك رسائل غير مقروءة"],"Details":["التÙاصيل"],"See more information about this person":["عرض المزيد Ù…ÙÙ† التÙاصيل عن هذا الشخص"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["هل أنت متأكد أنك تريد سØب هذه الرسالة؟"],"Confirm":["أكّد"],"You have an unsent message which will be lost if you continue. Are you sure?":["لديك رسالة غير مرسلة ستÙقدها إذا تابعت. هل أنت واثق؟"],"Are you sure you want to clear the messages from this conversation?":["هل أنت متأكد أنك تود Ù…Ø³Ø Ø§Ù„Ø±Ø³Ø§Ø¦Ù„ Ù…ÙÙ† ناÙذة المØادثة هذه ØŸ"],"%1$s has gone offline":["%1$s قد قطع الإتصال"],"%1$s is busy":["%1$s مشغول"],"%1$s is online":["%1$s متصل"],"Sorry, something went wrong while trying to refresh":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الاØتÙاظ بالÙواصل المرجعية"],"Are you sure you want to remove this contact?":["هل أنت متأكد أنك تريد Øذ٠هذا المراسل ØŸ"],"Sorry, there was an error while trying to remove %1$s as a contact.":["عذرا، لقد Øدث خطأ أثناء Ù…Øاولة إزالة %1$s كمراسل."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":["هذا جهاز موثوق Ùيه"],"Password":["كلمة السر"],"Create an account":["أنشئ Øسابًا"],"Don\'t have a chat account?":["لا تمتلكون Øسابًا للمØادثة بعدÙØŸ"],"Log in":["تسجيل الدخول"],"Disconnected":["غير متصل"],"Click here to log in anonymously":["Ø£ÙنقÙر هنا لتسجيل الدخول كشخص مجهول"],"Username":["اسم المستخدÙÙ…"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["يرجى ادخال عنوان XMPP صØÙŠØ"],"Chat Contacts":["جهات الاتصال"],"Toggle chat":["الانتقال إلى الدردشة"],"Click to restore this chat":["أنقر لاستعادة هذه المØادثة"],"Minimized":["تصغير"],"Minimize":["تصغير"],"This field is required":["هذا الØقل مطلوب"],"Join":["الإلتØاق بالغرÙØ©"],"Enter a new Groupchat":["الدخول إلى Ùريق Ù…Øادثة جديد"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["اسم المØادثة الجماعية"],"Groupchat address":["عنوان Ùريق المØادثة"],"Invite":["دعوة"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["سبب اختياري للدعوة"],"Show groupchats":["عرض ÙÙرَق المØادثة"],"Server address":["عنوان الخادوم"],"Show more information on this groupchat":["عرض المزيد Ù…ÙÙ† التÙاصيل عن Ùريق المØادثة هذا"],"Query for Groupchats":["البØØ« عن ÙÙرق Ù…Øادثة"],"Description:":["التÙاصيل :"],"Groupchat Address (JID):":["عنوان Ùريق المØادثة (JID) :"],"Participants:":["المشتركون :"],"Features:":["الميزات :"],"Requires authentication":["يتطلّب المصادقة"],"Hidden":["Ø®Ùية"],"Requires an invitation":["تستلزم دعوة"],"Moderated":["تØت الإشراÙ"],"Non-anonymous":["غير مجهولة"],"Open":["Ù…ÙتوØØ©"],"Permanent":["دائم"],"Public":["عمومية"],"Semi-anonymous":["مجهولة نسبيًا"],"Temporary":["Ù…Ùؤقّتة"],"Unmoderated":["ليست تØت الإشراÙ"],"conference.example.org":["conference.example.org"],"No groupchats found":["لم يتم العثور على أي Ùريق Ù…Øادثة"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"New Role":["الدورالجديد"],"Reason":["السبب"],"New affiliation":["انتماء جديد"],"Affiliation":["الانتماء"],"Moderator Tools":["أدوات الإشراÙ"],"No users with that affiliation found.":[""],"Type here to filter the search results":["اكتب هنا لتصÙية نتائج البØØ«"],"Show users":["اظهر المستخدمين"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["الموضوع"],"Topic author":["كاتب الموضوع"],"Groupchat address (JID)":["عنوان Ùريق المØادثة (JID)"],"Message archiving":["أرشÙØ© الرسائل"],"Messages are archived on the server":["الرسائل Ù…ØÙوظة على الخادوم"],"Description":["الوصÙ"],"Features":["الميزات"],"This groupchat is not publicly searchable":["ليس بالإمكان البØØ« عن Ùريق المØادثة هذا عبر البØØ« العمومي"],"This groupchat is restricted to members only":["Ùريق المØادثة هذا مخصص للأعضاء المÙنتمين إليه Ùقط"],"Members only":["الأعضاء Ùقط"],"Participants entering this groupchat need to request permission to write":["ÙŠØتاج المشاركون الذين يدخلون Ùريق المØادثة هذا إلى طلب إذن للكتابة"],"Name":["الإسم"],"This groupchat does not require a password upon entry":["Ùريق المØادثة هذا لا يتطلّب كلمة سرية قبل الدخول إليها"],"No password required":["بدون كلمة سرية"],"Not anonymous":["غير مجهول"],"All other groupchat participants can see your XMPP address":["ÙŠÙمكن لكاÙØ© المشارÙكين ÙÙŠ Ùريق المØادثة الإطلاع على عنوان XMPP الخاص بك"],"Not moderated":["ليس تØت الإشراÙ"],"Participants entering this groupchat can write right away":["يمكن للمشاركين الذين يدخلون إلى Ùريق الدردشة الجماعية هذا الكتابة على الÙور"],"Online users":["المستخدÙدون المتصلون"],"Anyone can join this groupchat":["يمكن للجميع الإلتØاق بÙريق المØادثة هذا"],"This groupchat requires a password before entry":["كلمة السر لازمة للدخول إلى Ùريق المØادثة هذا"],"Password protected":["مؤمَّنة بكلمة سرية"],"Persistent":["دائمة"],"This groupchat persists even if it\'s unoccupied":["Ùريق المØادثة هذا غير زائل Øتى Ùˆ إن كان لا ÙŠØتوي على مقيمين"],"Only moderators can see your XMPP address":["بإمكان المشرÙين Ùقط رؤية عنوان XMPP الخاص بك"],"This groupchat will disappear once the last person leaves":["سو٠يختÙÙŠ Ùريق المØادثة هذا عندما يخرج منه آخÙر Ù…ÙستخدÙÙ…"],"This groupchat is publicly searchable":["يمكن البØØ« العمومي عن Ùريق المØادثة هذا"],"Groupchat info for %1$s":["معلومات Ùريق المØادثة %1$s"],"You\'re not allowed to send messages in this room":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بإرسال رسائل إلى هذه الغرÙØ©"],"The conversation has moved. Click below to enter.":["تم نقل المØادثة. انقر أدناه للدخول."],"This groupchat no longer exists":["Ùريق المØادثة هذا لم يعد موجودا"],"Hide the groupchat topic":["إخÙاء موضوع Ùريق المØادثة"],"Enter groupchat":["الإلتØاق بÙريق المØادثة"],"Please choose your nickname":["يرجى اختيار إسمك المÙستعار"],"This groupchat requires a password":["Ùريق المØادثة مؤمَّن بكلمة سرية"],"Password: ":["كلمة السر : "],"Submit":["إرسال"],"This user is a moderator.":["إنّ هذا المستخدÙÙ… مشر٠ÙÙŠ الغرÙØ©."],"This user can send messages in this groupchat.":["بإمكان هذا المستخدم إرسال رسائل إلى Ùريق المØادثة هذا."],"This user can NOT send messages in this groupchat.":["لا يمكن لهذا المستخدÙÙ… إرسال رسائل ÙÙŠ Ùريق المØادثة هذا."],"Owner":["مالك"],"Admin":["المدير"],"Member":["عضو"],"Moderator":["المشرÙ"],"Visitor":["زائر"],"Click to mention %1$s in your message.":["أنقر للإشارة إلى %1$s ÙÙŠ رسالتك."],"Participants":["المشاركون"],"%1$s has entered the groupchat":["لقد إلتØÙ‚ %1$s بÙريق المØادثة"],"%1$s has left the groupchat":["غادر %1$s Ùريق المØادثة"],"%1$s is now a moderator":["Ø£ØµØ¨Ø %1$s Ù…ÙشرÙًا"],"%1$s is no longer a moderator":["لم يعÙد %1$s Ù…ÙÙ† المÙشْرÙÙين"],"%1$s has been muted":["تم كتم %1$s"],"%1$s and %2$s":["%1$s Ùˆ %2$s"],"%1$s are typing":["إنّ %1$s يكتبون Øاليا"],"%1$s have stopped typing":["%1$s توقّÙوا عن الكتابة"],"Change user\'s affiliation to admin":["تغيير دور المستخدم إلى صÙØ© مدير"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["تغيير دور المستخدÙÙ… إلى Ù…ÙشترÙÙƒ"],"Remove this groupchat":["إزالة Ùريق المØادثة هذا"],"Kick user from groupchat":["طرد المستخدÙÙ… مؤقتًا Ù…ÙÙ† Ùريق المØادثة"],"Write in 3rd person":[""],"Grant membership to a user":["Ù…Ù†Ø ØµÙØ© العضوية لمستخدÙÙ…"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["منع المستخدم Ù…ÙÙ† بعث رسائل"],"Change your nickname":["غيّر إسمك المÙستعار"],"Grant moderator role to user":["ترقية المستخدÙÙ… إلى رتبة مشرÙ"],"Grant ownership of this groupchat":["Ù…Ù†Ø ØµÙØ© ملكية Ùريق المØادثة للمستخدÙÙ…"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["تØديد موضوع Ùريق المØادثة"],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":["Ø§Ù„Ø³Ù…Ø§Ø Ù„Ù„Ù…Ø³ØªØ®Ø¯Ù… المكتوم نشر رسائل"],"You may optionally include a message, explaining the reason for the retraction.":[""],"Sorry, you\'re not allowed to retract this message":["عذراً، لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بسØب هذه الرسالة"],"Configure this groupchat":["إعداد Ùريق المØادثة"],"Hide topic":["إخÙاء الموضوع"],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":["مغادرة"],"Hide the list of participants":["إخÙاء قائمة المشاركين"],"Forbidden: you do not have the necessary role in order to do that.":["ممنوع: ليس لديك الدور اللازم من أجل القيام بذلك."],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":["قام %1$s بهذا الإجراء."],"The reason given is: \\"%1$s\\".":["السبب : \\"%1$s\\"."],"Groupchats":["ÙÙرَق المØادثة"],"Add a new groupchat":["إضاÙØ© Ùريق Ù…Øادثة جديد"],"Query for groupchats":["البØØ« عن ÙÙرَق للمØادثة"],"Announcements":["الإعلانات"],"Notification from %1$s":["إشعار Ù…ÙÙ† %1$s"],"%1$s says":["%1$s قال"],"has gone offline":["قد قطع الإتصال"],"has gone away":["قد غاب"],"is busy":["مشغول"],"has come online":["صار Ù…Ùتّصلا الآن"],"wants to be your contact":["ÙŠÙريد أن ÙŠÙØµØ¨Ø Ù…Ùراسلك"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["عن"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["برنامج %1$sØر ومÙØªÙˆØ Ø§Ù„Ù…ØµØ¯Ø±%2$s للمØادثة عبر XMPP طوّره لكم %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s ترجموه %2$s إلى لغتكم"],"Log out":["الخروج"],"Click to change your chat status":["أنقر لتغيير Øالتك للدردشة"],"Show details about this chat client":["عرض المزيد Ù…ÙÙ† التÙاصيل عن برنامج المØادثة هذا"],"Your avatar image":["صورتك الرمزية"],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":["الجهاز Ù…ÙÙ† دون بصمة"],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":["الأجهزة الأخرى التي تدعم أوميمو"],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":["أزالة الأجهزة التي تم اختيارها ثم إغلاق"],"Select all":["اختيار الكل"],"This device\'s OMEMO fingerprint":["بصمة أوميمو الخاصة بهذا الجهاز"],"Generate new keys and fingerprint":["توليد Ù…ÙØ§ØªÙŠØ Ø¬Ø¯ÙŠØ¯Ø© وبصمة"],"Your Profile":["ملÙÙƒ الشخصي"],"XMPP Address (JID)":["عنوان XMPP (JID)"],"Save and close":["ØÙظ وإغلاق"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":["OMEMO"],"Sorry, an error happened while trying to save your profile data.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الاØتÙاظ ببيانات ملÙÙƒ الشخصي."],"You can check your browser\'s developer console for any error output.":[""],"Away":["غائب"],"Busy":["مشغول"],"Custom status":["Øالتك الخاصة"],"Offline":["غير متصل"],"Online":["Ù…Ùتّصل"],"Away for long":["غائب لمدة قد تطول"],"Change chat status":["أنقر لتغيير Øالة الدردشة"],"Personal status message":["رسالة الØالة الخاصة"],"I am %1$s":["أنا %1$s"],"Are you sure you want to log out?":["هل أنت متأكد أنك تريد الخروج ØŸ"],"online":["متصل"],"busy":["مشغول"],"away for long":["غائب لمدة قد تطول"],"away":["غائب"],"offline":["غير متصل"],"Sorry, could not decrypt a received OMEMO message due to an error.":["آس٠، لقد تعذر ÙÙƒ تشÙير رسالة OMEMO المتلقاة بسبب خطا."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["يتم إرسال الرسائل كنص عادي صاÙ"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة Øذ٠الأجهزة."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":["المعذرة، لا يمكن إرسال رسالة مشÙرة بسبب Øدوث خطأ غير متوقع."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" مثال conversejs.org"],"Fetch registration form":["جار٠جلب استمارة التسجيل"],"Tip: A list of public XMPP providers is available":["نصيØØ©: قائمة علنية لمزوّدي خدمة XMPP متوÙرة"],"here":["هنا"],"Sorry, we\'re unable to connect to your chosen provider.":["المعذرة، لم نتمكن بربطك بموÙر خدمة المØادثة الذي قمت باختياره."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":["جار٠تسجيل دخولك الآن"],"Registered successfully":["تم تسجيل Øسابك بنجاØ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["مغادرة Ùريق المØادثة"],"Click to toggle the list of open groupchats":["أنقر Ù„ÙØªØ Ù‚Ø§Ø¦Ù…Ø© ÙÙرَق المØادثة"],"Open Groupchats":["ÙØªØ ÙÙرق الدردشات الجماعية"],"Are you sure you want to leave the groupchat %1$s?":["هل أنت متأكد أنك تريد الإنسØاب Ù…ÙÙ† Ùريق المØادثة %1$s ØŸ"],"Add":["إضاÙØ©"],"Add a Contact":["إضاÙØ© مراسل"],"This contact is busy":["إنّ المÙراسَل مشغول"],"This contact is online":["إنّ هذا المÙراسَل غير Ù…Ùتصل"],"This contact is offline":["هذا المراسل غير متصل"],"This contact is unavailable":["إنّ هذا المراسَل غير متوÙر"],"This contact is away for an extended period":["لقد غاب هذا المستخدÙÙ… ثانية Ù„Ùترة أطوَل"],"This contact is away":["إنّ هذا المراسَل غائب"],"Contact name":["إسم المراسل"],"Optional nickname":["إسم مستعار اختياري"],"Sorry, could not find a contact with that name":["المعذرة ØŒ لم نعثر على مستخدم بهذا الإسم"],"Filter":["عامل التصÙية"],"Filter by contact name":["Ùرز Øسب اسم جهة الاتصال"],"Filter by group name":["Ùرز Øسب اسم المجموعة"],"Filter by status":["تصني٠Øسب الØالة"],"Any":["الكل"],"Unread":["غير مقروءة"],"Chatty":["كثيرة الدردشة"],"Extended Away":["تمديد Ùترة الغياب"],"Click to remove %1$s as a contact":["أنقر لإزالة %1$s Ù…ÙÙ† قائمة مراسليك"],"Click to accept the contact request from %1$s":["أنقر لقبول طلب التراسل مع %1$s"],"Click to decline the contact request from %1$s":["أنقر لرÙض طلب التراسل مع %1$s"],"Are you sure you want to decline this contact request?":["هل أنت متأكد أنك تود رÙض طلب التراسل مع هذا المستخدÙÙ… ØŸ"],"Contacts":["جهات الإتصال"],"Add a contact":["إضاÙØ© مراسل"],"Re-sync your contacts":["أعد مزامنة قائمة مراسليك"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[140],{508:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;","lang":"ar"},"Create your account":["إنشئ Øسابك"],"Please enter the XMPP provider to register with:":["يرجى إدخال مزود خدمة XMPP الذي تود إنشاء Øسابك Ùيه :"],"Already have a chat account?":["هل تمتلك Øساب Ù…ÙØادثة؟"],"Log in here":["قم بتسجيل الدخول هنا"],"Account Registration:":["إنشاء Øساب :"],"Register":["تسجيل Øساب"],"Choose a different provider":["إختر مزود خدمة آخَر"],"Hold tight, we\'re fetching the registration form…":["تØلى بالصبر، جار٠جلب استمارة التسجيل …"],"Cancel":["إلغاء"],"The connection has dropped, attempting to reconnect.":["لقد إنقطع الإتصال، عملية إعادة الربط جارية."],"An error occurred while connecting to the chat server.":["طرأ هناك خطأ أثناء الربط بخادم المØادثة."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["عذرا، لم نتمكن Ù…ÙÙ† الاتصال بخادوم XMPP عبر النطاق : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["إنّ خادم XMPP لم يقدم دعم آلية المصادقة"],"Sorry, could not determine upload URL.":["عذرًا ØŒ تعذر تØديد عنوان URL للتØميل."],"Sorry, could not determine file upload URL.":["عذرًا ØŒ تعذر تØديد عنوان URL لتØميل الملÙ."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["للأس٠لم نتمكّن Ù…ÙÙ† القيام برÙع ملÙÙƒ بنجاØ. أجاب خادومك : \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["للأس٠لم نتمكّن Ù…ÙÙ† القيام برÙع ملÙÙƒ بنجاØ."],"Sorry, looks like file upload is not supported by your server.":["للأس٠يبدو أن خاصية رÙع الملÙات لا يدعمها خادومكم."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":["الوجوه الضاØكة والعواطÙ"],"People":["أشخاص"],"Activities":["أنشطة"],"Travel":["سÙر"],"Objects":["أشياء"],"Animals and nature":["Øيوانات وطبيعة"],"Food and drink":["طعام وشراب"],"Symbols":["رموز"],"Flags":["أعلام"],"Stickers":["ملصقات"],"This groupchat is not anonymous":["Ùريق المØادثة هذا ليس مجهولًا"],"This groupchat now shows unavailable members":["Ùريق المØادثة هذا يعرض الآن الأعضاء المشغولين"],"This groupchat does not show unavailable members":["Ùريق المØادثة هذا لا يعرض الأعضاء المشغولين"],"The groupchat configuration has changed":["تم تعديل خيارات Ùريق المØادثة"],"This groupchat is now no longer anonymous":["لم يَعÙد Ùريق المØادثة مجهولا بعد الآن"],"This groupchat is now semi-anonymous":["Ø£ØµØ¨Ø Ùريق المØادثة مجهولا نسبيًا"],"This groupchat is now fully-anonymous":["Ø£ØµØ¨Ø Ùريق المØادثة الآن مجهولا تمامًا"],"A new groupchat has been created":["تم إنشاء Ùريق Ù…Øادثة جديد"],"Your nickname has been automatically set to %1$s":["لقد تم تغيير إسمك المستعار آليا إلى %1$s"],"Your nickname has been changed to %1$s":["لقد تم تغيير إسمك المÙستعار إلى %1$s"],"You have been banned from this groupchat":["لقد تم طردÙÙƒ Ù…ÙÙ† Ùريق المØادثة هذا"],"You have been kicked from this groupchat":["لقد تم طردÙÙƒ مؤقتًا Ù…ÙÙ† Ùريق المØادثة هذا"],"You have been removed from this groupchat because of an affiliation change":["لقد تم إزالتك من هذه المØادثة الجماعية بسبب تغير ÙÙŠ الانتساب"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["تمت إزالتك من Ùريق الدردشة هذا لأن Ùريق الدردشة تغير إلى الأعضاء Ùقط وأنت لست عضوًا Ùيه"],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"You\'re not allowed to register yourself in this groupchat.":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بتسجيل Ù†Ùسك ÙÙŠ Ùريق المØادثة هذا."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["لا يمكن تسجيل اسمك المستعار ÙÙŠ ÙÙŠ Ùريق الدردشة هذا ØŒ إنه لا يدعم التسجيل."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":["قام %1$s بتØديد الموضوع"],"Topic cleared by %1$s":["قام %1$s بمØÙˆ الموضوع"],"%1$s has been banned by %2$s":["لقد تم طرد %1$s من طر٠%2$s"],"%1$s has been banned":["لقد تم طرد %1$s"],"%1$s\'s nickname has changed":["لقد قام %1$s بتغيير إسمه المÙستعار"],"%1$s has been kicked out by %2$s":["لقد تم طرد %1$s مؤقتًا Ù…ÙÙ† طر٠%2$s"],"%1$s has been kicked out":["لقد تم طرد %1$s Ù…ÙÙ† Ùريق المØادثة مؤقتًا"],"%1$s has been removed because of an affiliation change":["تمت إزالة %1$s بسبب تغير ÙÙŠ الانتساب"],"%1$s has been removed for not being a member":["تمت إزالة %1$s لأنه ليس عضو Ù…Ùنتم إلى الغرÙØ©"],"%1$s is no longer an admin of this groupchat":["لم يعد %1$s مديرا Ù„Ùريق المØادثة هذا بعد الآن"],"%1$s is no longer an owner of this groupchat":["لم يعد %1$s مالكا Ù„Ùريق المØادثة الجماعية هذا"],"%1$s is now an %2$s of this groupchat":["Ø£ØµØ¨Ø Ø§Ù„Ø¢Ù† %1$s %2$s Ù„Ùريق المØادثة هذا"],"The nickname you chose is reserved or currently in use, please choose a different one.":["إنّ الإسم المستعار الذي قمت باختياره Ù…Øجوز أو Ù…Ùستعمَل Øاليا Ù…ÙÙ† طر٠شخص آخَر، ÙŠÙرجى اختيار إسم٠آخَر."],"Password incorrect":["الكلمة السرية خاطئة"],"You are not on the member list of this groupchat.":["أنت لست Ù…ÙÙ† بين قائمة أعضاء Ùريق المØادثة هذا."],"You have been banned from this groupchat.":["لقد تم طردÙÙƒ Ù…ÙÙ† Ùريق المØادثة هذا."],"You are not allowed to create new groupchats.":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بإنشاء ÙÙرَق Ù…Øادثة جÙدد."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["إنّ إسمك المستعار لا يتماشى مع سياسة Ùريق المØادثة هذا."],"This groupchat does not (yet) exist.":["Ùريق المØادثة هذا ليس له ÙˆÙجود بعد."],"This groupchat has reached its maximum number of participants.":["لقد بلغ Ùريق المØادثة الØالي الØد الأقصى لاستيعاب الأعضاء."],"Remote server not found":["لم يتم العثور على الخادم عن بÙعد"],"The explanation given is: \\"%1$s\\".":["السبب : \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["قام %1$s بدعوتك للإلتØاق بÙريق المØادثة : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["قام %1$s بدعوتك للالتØاق بÙريق المØادثة : %2$s لهذا السبب: \\"%3$s\\""],"Error":["خطأ"],"Sorry, something went wrong while trying to save your bookmark.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الإØتÙاظ بالÙواصل المرجعية."],"Timeout Error":["خطأ ÙÙŠ مهلة الإنتظار"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["جهات إتصالي"],"Pending contacts":["المÙراسلون المÙعلّقون"],"Contact requests":["طلبات التراسل"],"Ungrouped":["بدون Ùريق"],"New messages":["الرسائل الجديدة"],"Sorry, there was an error while trying to add %1$s as a contact.":["المعذرة، لقد Øدث هناك خطأ أثناء Ù…Øاولة إضاÙØ© %1$s كمÙراسÙÙ„."],"This client does not allow presence subscriptions":["هذا العميل لا ÙŠØ³Ù…Ø Ø§Ø´ØªØ±Ø§ÙƒØ§Øª التواجد"],"Click to hide these contacts":["أْنقÙر لإخÙاء هؤلاء المراسلين"],"Unbookmark this groupchat":["تنØية Ùريق المØادثة Ù…ÙÙ† الÙواصل المرجعية"],"Click to open this groupchat":["أنقر Ù„ÙØªØ Ùريق المØادثة هذا"],"Click to toggle the bookmarks list":["أنقر للإنتقال إلى قائمة الإشارات المرجعية"],"Bookmarks":["الÙواصل المرجعية"],"Bookmark this groupchat":["إضاÙØ© Ùريق المØادثة هذا إلى الÙواصل المرجعية"],"Would you like this groupchat to be automatically joined upon startup?":["هل تريد الإلتØاق آليًا بÙريق المØادثة هذا مباشَرةً بعد الإتصال ØŸ"],"The name for this bookmark:":["تسمية الÙاصلة المرجعية :"],"What should your nickname for this groupchat be?":["ما هو الإسم المÙستعار الذي تريد استخدامه ÙÙŠ Ùريق المØادثة هذا ØŸ"],"Save":["ØÙظ"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["هل أنت متأكد أنك تريد إزالة الÙاصلة المرجعية \\"%1$s\\" ØŸ"],"Unbookmark":["إزاØØ© من الÙواصل المرجعية"],"Bookmark":["إضاÙØ© إلى الÙواصل المرجعية"],"Close":["إغلاق"],"OK":["Øسنا"],"Image: ":[""],"Download audio file \\"%1$s\\"":["تنزيل المل٠الصوتي: \\"%1$s\\""],"Download file \\"%1$s\\"":["تنزيل الملÙ: \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["أرشÙØ© الرسائل"],"Retry":[""],"Uploading file:":["تØميل الملÙ:"],"This message has been edited":["تم إعادة تØرير هذه الرسالة"],"Show more":["عرض المزيد"],"No message history available.":["ليس هناك أي سجلّ Ù…ØªØ§Ø Ù„Ù„Ø±Ø³Ø§Ø¦Ù„."],"Search results":["نتائج البØØ«"],"Search":["بØØ«"],"Insert emojis":["إدراج وجه مبتسم"],"Send the message":["ارسل الرسالة"],"Start a call":["إبدأ مكالمة"],"Choose a file to send":["اختر المل٠الذي تريد إرساله"],"The User\'s Profile Image":["الصورة الشخصية للمستخدم"],"Trusted":["موثوق Ùيه"],"Untrusted":["غير موثوق Ùيه"],"OMEMO Fingerprints":["بصمات أوميمو"],"Remove as contact":["إزالة Ù…ÙÙ† المراسÙلين"],"XMPP Address":["عنوان XMPP"],"Email":["البريد الإلكتروني"],"Full Name":["الإسم الكامل"],"Nickname":["الإسم المÙستعار"],"Refresh":["تØديث"],"Role":["الدور"],"URL":["عنوان الرابط"],"%1$s is typing":["إنّ %1$s يكتب Øاليا"],"%1$s has stopped typing":["%1$s توقّÙÙŽ عن الكتابة"],"%1$s has gone away":["%1$s غائب"],"Remove messages":["Øذ٠الرسائل"],"Close this chat":["اغلق هذه المØادثة"],"Write in the third person":["كتابة لشخص ثالث"],"Show this menu":["اظهار هذه القائمة"],"Hidden message":["رسالة مخÙية"],"Message":["رسالة"],"Optional hint":["دليل اختياري"],"You have unread messages":["لقد ورَدَت إليك رسائل غير مقروءة"],"Details":["التÙاصيل"],"See more information about this person":["عرض المزيد Ù…ÙÙ† التÙاصيل عن هذا الشخص"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["هل أنت متأكد أنك تريد سØب هذه الرسالة؟"],"Confirm":["أكّد"],"You have an unsent message which will be lost if you continue. Are you sure?":["لديك رسالة غير مرسلة ستÙقدها إذا تابعت. هل أنت واثق؟"],"Are you sure you want to clear the messages from this conversation?":["هل أنت متأكد أنك تود Ù…Ø³Ø Ø§Ù„Ø±Ø³Ø§Ø¦Ù„ Ù…ÙÙ† ناÙذة المØادثة هذه ØŸ"],"%1$s has gone offline":["%1$s قد قطع الإتصال"],"%1$s is busy":["%1$s مشغول"],"%1$s is online":["%1$s متصل"],"Sorry, something went wrong while trying to refresh":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الاØتÙاظ بالÙواصل المرجعية"],"Are you sure you want to remove this contact?":["هل أنت متأكد أنك تريد Øذ٠هذا المراسل ØŸ"],"Sorry, there was an error while trying to remove %1$s as a contact.":["عذرا، لقد Øدث خطأ أثناء Ù…Øاولة إزالة %1$s كمراسل."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":["هذا جهاز موثوق Ùيه"],"Password":["كلمة السر"],"Create an account":["أنشئ Øسابًا"],"Don\'t have a chat account?":["لا تمتلكون Øسابًا للمØادثة بعدÙØŸ"],"Log in":["تسجيل الدخول"],"Disconnected":["غير متصل"],"Click here to log in anonymously":["Ø£ÙنقÙر هنا لتسجيل الدخول كشخص مجهول"],"Username":["اسم المستخدÙÙ…"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["يرجى ادخال عنوان XMPP صØÙŠØ"],"Chat Contacts":["جهات الاتصال"],"Toggle chat":["الانتقال إلى الدردشة"],"Click to restore this chat":["أنقر لاستعادة هذه المØادثة"],"Minimized":["تصغير"],"Minimize":["تصغير"],"This user is a moderator.":["إنّ هذا المستخدÙÙ… مشر٠ÙÙŠ الغرÙØ©."],"This user can send messages in this groupchat.":["بإمكان هذا المستخدم إرسال رسائل إلى Ùريق المØادثة هذا."],"This user can NOT send messages in this groupchat.":["لا يمكن لهذا المستخدÙÙ… إرسال رسائل ÙÙŠ Ùريق المØادثة هذا."],"Owner":["مالك"],"Admin":["المدير"],"Member":["عضو"],"Moderator":["المشرÙ"],"Visitor":["زائر"],"Click to mention %1$s in your message.":["أنقر للإشارة إلى %1$s ÙÙŠ رسالتك."],"Participants":["المشاركون"],"This field is required":["هذا الØقل مطلوب"],"Join":["الإلتØاق بالغرÙØ©"],"Enter a new Groupchat":["الدخول إلى Ùريق Ù…Øادثة جديد"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["اسم المØادثة الجماعية"],"Groupchat address":["عنوان Ùريق المØادثة"],"Invite":["دعوة"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["سبب اختياري للدعوة"],"Show groupchats":["عرض ÙÙرَق المØادثة"],"Server address":["عنوان الخادوم"],"Show more information on this groupchat":["عرض المزيد Ù…ÙÙ† التÙاصيل عن Ùريق المØادثة هذا"],"Query for Groupchats":["البØØ« عن ÙÙرق Ù…Øادثة"],"Description:":["التÙاصيل :"],"Groupchat Address (JID):":["عنوان Ùريق المØادثة (JID) :"],"Participants:":["المشتركون :"],"Features:":["الميزات :"],"Requires authentication":["يتطلّب المصادقة"],"Hidden":["Ø®Ùية"],"Requires an invitation":["تستلزم دعوة"],"Moderated":["تØت الإشراÙ"],"Non-anonymous":["غير مجهولة"],"Open":["Ù…ÙتوØØ©"],"Permanent":["دائم"],"Public":["عمومية"],"Semi-anonymous":["مجهولة نسبيًا"],"Temporary":["Ù…Ùؤقّتة"],"Unmoderated":["ليست تØت الإشراÙ"],"conference.example.org":["conference.example.org"],"No groupchats found":["لم يتم العثور على أي Ùريق Ù…Øادثة"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"New Role":["الدورالجديد"],"Reason":["السبب"],"New affiliation":["انتماء جديد"],"Affiliation":["الانتماء"],"Moderator Tools":["أدوات الإشراÙ"],"No users with that affiliation found.":[""],"Type here to filter the search results":["اكتب هنا لتصÙية نتائج البØØ«"],"Show users":["اظهر المستخدمين"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["الموضوع"],"Topic author":["كاتب الموضوع"],"Groupchat address (JID)":["عنوان Ùريق المØادثة (JID)"],"Message archiving":["أرشÙØ© الرسائل"],"Messages are archived on the server":["الرسائل Ù…ØÙوظة على الخادوم"],"Description":["الوصÙ"],"Features":["الميزات"],"This groupchat is not publicly searchable":["ليس بالإمكان البØØ« عن Ùريق المØادثة هذا عبر البØØ« العمومي"],"This groupchat is restricted to members only":["Ùريق المØادثة هذا مخصص للأعضاء المÙنتمين إليه Ùقط"],"Members only":["الأعضاء Ùقط"],"Participants entering this groupchat need to request permission to write":["ÙŠØتاج المشاركون الذين يدخلون Ùريق المØادثة هذا إلى طلب إذن للكتابة"],"Name":["الإسم"],"This groupchat does not require a password upon entry":["Ùريق المØادثة هذا لا يتطلّب كلمة سرية قبل الدخول إليها"],"No password required":["بدون كلمة سرية"],"Not anonymous":["غير مجهول"],"All other groupchat participants can see your XMPP address":["ÙŠÙمكن لكاÙØ© المشارÙكين ÙÙŠ Ùريق المØادثة الإطلاع على عنوان XMPP الخاص بك"],"Not moderated":["ليس تØت الإشراÙ"],"Participants entering this groupchat can write right away":["يمكن للمشاركين الذين يدخلون إلى Ùريق الدردشة الجماعية هذا الكتابة على الÙور"],"Online users":["المستخدÙدون المتصلون"],"Anyone can join this groupchat":["يمكن للجميع الإلتØاق بÙريق المØادثة هذا"],"This groupchat requires a password before entry":["كلمة السر لازمة للدخول إلى Ùريق المØادثة هذا"],"Password protected":["مؤمَّنة بكلمة سرية"],"Persistent":["دائمة"],"This groupchat persists even if it\'s unoccupied":["Ùريق المØادثة هذا غير زائل Øتى Ùˆ إن كان لا ÙŠØتوي على مقيمين"],"Only moderators can see your XMPP address":["بإمكان المشرÙين Ùقط رؤية عنوان XMPP الخاص بك"],"This groupchat will disappear once the last person leaves":["سو٠يختÙÙŠ Ùريق المØادثة هذا عندما يخرج منه آخÙر Ù…ÙستخدÙÙ…"],"This groupchat is publicly searchable":["يمكن البØØ« العمومي عن Ùريق المØادثة هذا"],"Groupchat info for %1$s":["معلومات Ùريق المØادثة %1$s"],"You\'re not allowed to send messages in this room":["لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بإرسال رسائل إلى هذه الغرÙØ©"],"The conversation has moved. Click below to enter.":["تم نقل المØادثة. انقر أدناه للدخول."],"This groupchat no longer exists":["Ùريق المØادثة هذا لم يعد موجودا"],"Hide the groupchat topic":["إخÙاء موضوع Ùريق المØادثة"],"Enter groupchat":["الإلتØاق بÙريق المØادثة"],"Please choose your nickname":["يرجى اختيار إسمك المÙستعار"],"This groupchat requires a password":["Ùريق المØادثة مؤمَّن بكلمة سرية"],"Password: ":["كلمة السر : "],"Submit":["إرسال"],"%1$s has entered the groupchat":["لقد إلتØÙ‚ %1$s بÙريق المØادثة"],"%1$s has left the groupchat":["غادر %1$s Ùريق المØادثة"],"%1$s is now a moderator":["Ø£ØµØ¨Ø %1$s Ù…ÙشرÙًا"],"%1$s is no longer a moderator":["لم يعÙد %1$s Ù…ÙÙ† المÙشْرÙÙين"],"%1$s has been muted":["تم كتم %1$s"],"%1$s and %2$s":["%1$s Ùˆ %2$s"],"%1$s are typing":["إنّ %1$s يكتبون Øاليا"],"%1$s have stopped typing":["%1$s توقّÙوا عن الكتابة"],"Change user\'s affiliation to admin":["تغيير دور المستخدم إلى صÙØ© مدير"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["تغيير دور المستخدÙÙ… إلى Ù…ÙشترÙÙƒ"],"Remove this groupchat":["إزالة Ùريق المØادثة هذا"],"Kick user from groupchat":["طرد المستخدÙÙ… مؤقتًا Ù…ÙÙ† Ùريق المØادثة"],"Write in 3rd person":[""],"Grant membership to a user":["Ù…Ù†Ø ØµÙØ© العضوية لمستخدÙÙ…"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["منع المستخدم Ù…ÙÙ† بعث رسائل"],"Change your nickname":["غيّر إسمك المÙستعار"],"Grant moderator role to user":["ترقية المستخدÙÙ… إلى رتبة مشرÙ"],"Grant ownership of this groupchat":["Ù…Ù†Ø ØµÙØ© ملكية Ùريق المØادثة للمستخدÙÙ…"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["تØديد موضوع Ùريق المØادثة"],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":["Ø§Ù„Ø³Ù…Ø§Ø Ù„Ù„Ù…Ø³ØªØ®Ø¯Ù… المكتوم نشر رسائل"],"You may optionally include a message, explaining the reason for the retraction.":[""],"Sorry, you\'re not allowed to retract this message":["عذراً، لا ÙŠÙØ³Ù…Ø Ù„Ùƒ بسØب هذه الرسالة"],"Configure this groupchat":["إعداد Ùريق المØادثة"],"Hide topic":["إخÙاء الموضوع"],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":["مغادرة"],"Hide the list of participants":["إخÙاء قائمة المشاركين"],"Forbidden: you do not have the necessary role in order to do that.":["ممنوع: ليس لديك الدور اللازم من أجل القيام بذلك."],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":["قام %1$s بهذا الإجراء."],"The reason given is: \\"%1$s\\".":["السبب : \\"%1$s\\"."],"Groupchats":["ÙÙرَق المØادثة"],"Add a new groupchat":["إضاÙØ© Ùريق Ù…Øادثة جديد"],"Query for groupchats":["البØØ« عن ÙÙرَق للمØادثة"],"Announcements":["الإعلانات"],"Notification from %1$s":["إشعار Ù…ÙÙ† %1$s"],"%1$s says":["%1$s قال"],"has gone offline":["قد قطع الإتصال"],"has gone away":["قد غاب"],"is busy":["مشغول"],"has come online":["صار Ù…Ùتّصلا الآن"],"wants to be your contact":["ÙŠÙريد أن ÙŠÙØµØ¨Ø Ù…Ùراسلك"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["عن"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["برنامج %1$sØر ومÙØªÙˆØ Ø§Ù„Ù…ØµØ¯Ø±%2$s للمØادثة عبر XMPP طوّره لكم %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s ترجموه %2$s إلى لغتكم"],"Log out":["الخروج"],"Click to change your chat status":["أنقر لتغيير Øالتك للدردشة"],"Show details about this chat client":["عرض المزيد Ù…ÙÙ† التÙاصيل عن برنامج المØادثة هذا"],"Your avatar image":["صورتك الرمزية"],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":["الجهاز Ù…ÙÙ† دون بصمة"],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":["الأجهزة الأخرى التي تدعم أوميمو"],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":["أزالة الأجهزة التي تم اختيارها ثم إغلاق"],"Select all":["اختيار الكل"],"This device\'s OMEMO fingerprint":["بصمة أوميمو الخاصة بهذا الجهاز"],"Generate new keys and fingerprint":["توليد Ù…ÙØ§ØªÙŠØ Ø¬Ø¯ÙŠØ¯Ø© وبصمة"],"Your Profile":["ملÙÙƒ الشخصي"],"XMPP Address (JID)":["عنوان XMPP (JID)"],"Save and close":["ØÙظ وإغلاق"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":["OMEMO"],"Sorry, an error happened while trying to save your profile data.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة الاØتÙاظ ببيانات ملÙÙƒ الشخصي."],"You can check your browser\'s developer console for any error output.":[""],"Away":["غائب"],"Busy":["مشغول"],"Custom status":["Øالتك الخاصة"],"Offline":["غير متصل"],"Online":["Ù…Ùتّصل"],"Away for long":["غائب لمدة قد تطول"],"Change chat status":["أنقر لتغيير Øالة الدردشة"],"Personal status message":["رسالة الØالة الخاصة"],"I am %1$s":["أنا %1$s"],"Are you sure you want to log out?":["هل أنت متأكد أنك تريد الخروج ØŸ"],"online":["متصل"],"busy":["مشغول"],"away for long":["غائب لمدة قد تطول"],"away":["غائب"],"offline":["غير متصل"],"Sorry, could not decrypt a received OMEMO message due to an error.":["آس٠، لقد تعذر ÙÙƒ تشÙير رسالة OMEMO المتلقاة بسبب خطا."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["يتم إرسال الرسائل كنص عادي صاÙ"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":["المعذرة، لا يمكن إرسال رسالة مشÙرة بسبب Øدوث خطأ غير متوقع."],"Sorry, an error occurred while trying to remove the devices.":["المعذرة، لقد طرأ هناك خطأ أثناء Ù…Øاولة Øذ٠الأجهزة."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" مثال conversejs.org"],"Fetch registration form":["جار٠جلب استمارة التسجيل"],"Tip: A list of public XMPP providers is available":["نصيØØ©: قائمة علنية لمزوّدي خدمة XMPP متوÙرة"],"here":["هنا"],"Sorry, we\'re unable to connect to your chosen provider.":["المعذرة، لم نتمكن بربطك بموÙر خدمة المØادثة الذي قمت باختياره."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":["جار٠تسجيل دخولك الآن"],"Registered successfully":["تم تسجيل Øسابك بنجاØ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["مغادرة Ùريق المØادثة"],"Click to toggle the list of open groupchats":["أنقر Ù„ÙØªØ Ù‚Ø§Ø¦Ù…Ø© ÙÙرَق المØادثة"],"Open Groupchats":["ÙØªØ ÙÙرق الدردشات الجماعية"],"Are you sure you want to leave the groupchat %1$s?":["هل أنت متأكد أنك تريد الإنسØاب Ù…ÙÙ† Ùريق المØادثة %1$s ØŸ"],"Add":["إضاÙØ©"],"Add a Contact":["إضاÙØ© مراسل"],"This contact is busy":["إنّ المÙراسَل مشغول"],"This contact is online":["إنّ هذا المÙراسَل غير Ù…Ùتصل"],"This contact is offline":["هذا المراسل غير متصل"],"This contact is unavailable":["إنّ هذا المراسَل غير متوÙر"],"This contact is away for an extended period":["لقد غاب هذا المستخدÙÙ… ثانية Ù„Ùترة أطوَل"],"This contact is away":["إنّ هذا المراسَل غائب"],"Contact name":["إسم المراسل"],"Optional nickname":["إسم مستعار اختياري"],"Sorry, could not find a contact with that name":["المعذرة ØŒ لم نعثر على مستخدم بهذا الإسم"],"Filter":["عامل التصÙية"],"Filter by contact name":["Ùرز Øسب اسم جهة الاتصال"],"Filter by group name":["Ùرز Øسب اسم المجموعة"],"Filter by status":["تصني٠Øسب الØالة"],"Any":["الكل"],"Unread":["غير مقروءة"],"Chatty":["كثيرة الدردشة"],"Extended Away":["تمديد Ùترة الغياب"],"Click to remove %1$s as a contact":["أنقر لإزالة %1$s Ù…ÙÙ† قائمة مراسليك"],"Click to accept the contact request from %1$s":["أنقر لقبول طلب التراسل مع %1$s"],"Click to decline the contact request from %1$s":["أنقر لرÙض طلب التراسل مع %1$s"],"Are you sure you want to decline this contact request?":["هل أنت متأكد أنك تود رÙض طلب التراسل مع هذا المستخدÙÙ… ØŸ"],"Contacts":["جهات الإتصال"],"Add a contact":["إضاÙØ© مراسل"],"Re-sync your contacts":["أعد مزامنة قائمة مراسليك"]}}}')}}]); //# sourceMappingURL=ar-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/bg-LC_MESSAGES-converse-po.js b/src/conversejs/locales/bg-LC_MESSAGES-converse-po.js index 8b6c1a3e4b6f4bb21051ac13b14c88f1bdcab587..b130e93d7d2b2b8b8a88a4fe28f117a3d794ba9c 100644 --- a/src/conversejs/locales/bg-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/bg-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{421:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"bg"},"Create your account":["Създаване на допуÑка ви"],"Please enter the XMPP provider to register with:":["ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ XMPP доÑтавчик, при който да Ñе запишете:"],"Already have a chat account?":["Вече имате допуÑк за разговори?"],"Log in here":["Влизане тук"],"Account Registration:":["ЗапиÑване за допуÑк:"],"Register":["ЗапиÑване"],"Choose a different provider":["Избиране на друг доÑтавчик"],"Hold tight, we\'re fetching the registration form…":["Дръжте Ñе здраво, изтеглÑме формулÑра за запиÑване…"],"Cancel":["ОтменÑне"],"The connection has dropped, attempting to reconnect.":["Връзката е прекъÑнала, опитва Ñе повторно Ñвързване."],"An error occurred while connecting to the chat server.":["Възникна грешка при Ñвързване към Ñървъра за разговори."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Извинете, не можахме да Ñе Ñвържем към XMPP хоÑта Ñ Ð¾Ð±Ð»Ð°Ñтта: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP Ñървърът не предложи поддържан удоÑтоверителен механизъм"],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"Your nickname has been automatically set to %1$s":["Вашето кратко име беше автоматично уÑтановено на %1$s"],"Your nickname has been changed to %1$s":["Краткото ви име беше променено на %1$s"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"%1$s has been banned":["ДоÑтъпът на %1$s е ÑпрÑн"],"%1$s\'s nickname has changed":["Краткото име на %1$s Ñе промени"],"%1$s has been kicked out":["%1$s беше изведен"],"%1$s has been removed because of an affiliation change":["%1$s беше премахнат заради промÑна на принадлежноÑÑ‚"],"%1$s has been removed for not being a member":["%1$s беше премахнат, защото не е член"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Краткото име, което избрахте, е запазено или понаÑтоÑщем Ñе ползва, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ друго."],"Remote server not found":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":["Извинете, нещо Ñе обърка при опита за запиÑване на отметката ви."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Моите познати"],"Pending contacts":["Изчакващи потвърждение познати"],"Contact requests":["ЗаÑвки за познанÑтво"],"Ungrouped":["Ðегрупирани"],"Sorry, there was an error while trying to add %1$s as a contact.":["Извинете, възникна грешка при опит за добавÑне на %1$s като познат."],"This client does not allow presence subscriptions":["Този клиент не допуÑка абонаменти за приÑÑŠÑтвие"],"Click to hide these contacts":["ÐатиÑнете за Ñкриване на тези познати"],"Click to toggle the bookmarks list":["ÐатиÑнете за Ñкриване/показване на ÑпиÑъка Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸"],"Bookmarks":["Отметки"],"The name for this bookmark:":["Името за тази отметка:"],"Save":["ЗапиÑ"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Сигурни ли Ñте, че иÑкате да премахнете отметката „%1$s“?"],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":["Това Ñъобщение е редактирано"],"No message history available.":[""],"Search":["ТърÑене"],"Start a call":["Обаждане"],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":["ÐатиÑнете за пиÑане на нормално (неакордеонно) Ñъобщение"],"Click to write your message as a spoiler":["ÐатиÑнете, за да пишете Ñъобщение, разгъващо Ñе като акордеон"],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["Кратко име"],"Refresh":[""],"Role":[""],"URL":[""],"Remove messages":["Премахване на ÑъобщениÑ"],"Write in the third person":["ПиÑане от трето лице"],"Show this menu":["Показване на това меню"],"Hidden message":["Скрито Ñъобщение"],"Message":["Съобщение"],"Optional hint":["Съвет (незадължително)"],"You have unread messages":["Имате непрочетени ÑъобщениÑ"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to remove this contact?":["Сигурни ли Ñте, че иÑкате да премахнете този познат?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Извинете, възникна грешка при опит за премахване на %1$s като познат."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":["Създаване на допуÑк"],"Don\'t have a chat account?":["ÐÑмате допуÑк за разговори?"],"Disconnected":[""],"Click here to log in anonymously":["ÐатиÑнете тук, за да влезете анонимно"],"Username":["ПотребителÑко име"],"user@domain":["потребител@облаÑÑ‚"],"Please enter a valid XMPP address":["ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ дейÑтвителен XMPP адреÑ"],"Toggle chat":["Разговори"],"Click to restore this chat":["ÐатиÑне за възÑтановÑване на този разговор"],"Minimized":["Минимизирани"],"This field is required":[""],"name@conference.example.org":[""],"Invite":["Поканване"],"Description:":["ОпиÑание:"],"Features:":["СвойÑтва:"],"Requires authentication":["ИзиÑква удоÑтоверÑване"],"Hidden":["Скрита"],"Requires an invitation":["ИзиÑква покана"],"Moderated":["Модерирана"],"Non-anonymous":["Ðеанонимна"],"Open":["Отворена"],"Public":["ОбщеÑтвена"],"Semi-anonymous":["Полуанонимна"],"Temporary":["Временна"],"Unmoderated":["Ðемодерирана"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":[""],"Topic author":[""],"Message archiving":["Ðрхивиране на ÑъобщениÑ"],"Messages are archived on the server":["СъобщениÑта Ñе архивират на Ñървъра"],"Features":["СвойÑтва"],"Members only":["Само за членове"],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"Participants entering this groupchat can write right away":[""],"Password protected":["Защитена Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð°"],"Persistent":["ПоÑтоÑнна"],"The conversation has moved. Click below to enter.":[""],"Please choose your nickname":["ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ Ñи кратко име"],"Password: ":["Парола: "],"Submit":["Изпращане"],"This user is a moderator.":["Този потребител е модератор."],"Owner":[""],"Admin":[""],"Visitor":[""],"Click to mention %1$s in your message.":["ÐатиÑнете за да Ñпоменете %1$s в Ñъобщението Ñи."],"Participants":[""],"Change user\'s affiliation to admin":["ПромÑна на ролÑта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° админиÑтратор"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ПроменÑне на ролÑта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° учаÑтник"],"Write in 3rd person":["ПиÑане от трето лице"],"Grant membership to a user":["Даване на членÑтво на потребител"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Премахване на възможноÑтта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð´Ð° публикува ÑъобщениÑ"],"Change your nickname":["ПромÑна на краткото ви име"],"Grant moderator role to user":["Даване на Ñ€Ð¾Ð»Ñ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€ на потребителÑ"],"Revoke the user\'s current affiliation":[""],"Allow muted user to post messages":["ПозволÑване на заглушен потребител да публикува ÑъобщениÑ"],"Configure":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Грешка: командата “%1$s†приема два аргумента – краткото име на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¸, по желание, причина."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":["Това дейÑтвие беше извършено от %1$s."],"The reason given is: \\"%1$s\\".":["Дадената причина е: „%1$s“."],"Announcements":[""],"Notification from %1$s":["ИзвеÑтие от %1$s"],"%1$s says":["%1$s казва"],"has gone offline":["Ñе изключи"],"has gone away":["Ñе е махнал(а)"],"is busy":["е зает(а)"],"has come online":["Ñе включи"],"wants to be your contact":["иÑка да Ñе Ñвърже Ñ Ð²Ð°Ñ"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Излизане"],"Click to change your chat status":["ÐатиÑнете, за да промените ÑÑŠÑтоÑнието Ñи за разговор"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["ОтÑÑŠÑтващ(а)"],"Busy":["Зает(а)"],"Custom status":["СъÑтоÑние чрез въвеждане"],"Offline":["Изключен(а)"],"Online":["Включен(а)"],"I am %1$s":["Ðз Ñъм %1$s"],"online":["включен(а)"],"busy":["зает(а)"],"away for long":["продължително отÑÑŠÑтващ(а)"],"away":["отÑÑŠÑтващ(а)"],"offline":["изключен(а)"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" например conversejs.org"],"Fetch registration form":["ИзтеглÑне на форумлÑÑ€ за запиÑване"],"Tip: A list of public XMPP providers is available":["Съвет: Ðаличен е ÑпиÑък на XMPP доÑтавчици за общеÑтвен доÑтъп"],"here":["тук"],"Sorry, we\'re unable to connect to your chosen provider.":["Извинете, не можем да Ñе Ñвържем Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð²Ð°Ñ Ð´Ð¾Ñтавчик."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Извинете, дадениÑÑ‚ доÑтавчик не поддържа прÑко запиÑване за допуÑк. ÐœÐ¾Ð»Ñ Ð¾Ð¿Ð¸Ñ‚Ð°Ð¹Ñ‚Ðµ друг начин или Ñ Ð´Ñ€ÑƒÐ³ доÑтавчик."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ðещо Ñе обърка при уÑтановÑване на връзка Ñ â€ž%1$s“. Сигурни ли Ñте, че ÑъщеÑтвува?"],"Now logging you in":["Сега бивате впиÑани"],"Registered successfully":["ЗапиÑани Ñте уÑпешно"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["ДоÑтавчикът отказа опита ви за запиÑване. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ точноÑтта на данните, които въведохте."],"Open Groupchats":[""],"Add":["ДобавÑне"],"This contact is busy":["Този познат е зает"],"This contact is online":["Този познат е включен"],"This contact is offline":["Този познат е изключен"],"This contact is unavailable":["Този познат не е на разположение"],"This contact is away for an extended period":["Този познат отÑÑŠÑтва дълго време"],"This contact is away":["Този познат отÑÑŠÑтва"],"Contact name":["Име на познатиÑ"],"Sorry, could not find a contact with that name":[""],"Filter":["Подбор"],"Filter by group name":[""],"Filter by status":[""],"Any":["Произволно"],"Unread":["Ðепрочетено"],"Chatty":["Приказлив(а)"],"Extended Away":["Дълго отÑÑŠÑтващ(а)"],"Click to remove %1$s as a contact":["ÐатиÑнете за премахване на %1$s като познат"],"Click to accept the contact request from %1$s":["ÐатиÑнете за приемане на заÑвката за познанÑтво от %1$s"],"Click to decline the contact request from %1$s":["ÐатиÑнете за отказване на заÑвката за познанÑтво от %1$s"],"Are you sure you want to decline this contact request?":["Сигурни ли Ñте, че иÑкате да откажете тази заÑвка за познанÑтво?"],"Contacts":["Познати"],"Add a contact":["ДобавÑне на познат"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[141],{509:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"bg"},"Create your account":["Създаване на допуÑка ви"],"Please enter the XMPP provider to register with:":["ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ XMPP доÑтавчик, при който да Ñе запишете:"],"Already have a chat account?":["Вече имате допуÑк за разговори?"],"Log in here":["Влизане тук"],"Account Registration:":["ЗапиÑване за допуÑк:"],"Register":["ЗапиÑване"],"Choose a different provider":["Избиране на друг доÑтавчик"],"Hold tight, we\'re fetching the registration form…":["Дръжте Ñе здраво, изтеглÑме формулÑра за запиÑване…"],"Cancel":["ОтменÑне"],"The connection has dropped, attempting to reconnect.":["Връзката е прекъÑнала, опитва Ñе повторно Ñвързване."],"An error occurred while connecting to the chat server.":["Възникна грешка при Ñвързване към Ñървъра за разговори."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Извинете, не можахме да Ñе Ñвържем към XMPP хоÑта Ñ Ð¾Ð±Ð»Ð°Ñтта: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP Ñървърът не предложи поддържан удоÑтоверителен механизъм"],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"Your nickname has been automatically set to %1$s":["Вашето кратко име беше автоматично уÑтановено на %1$s"],"Your nickname has been changed to %1$s":["Краткото ви име беше променено на %1$s"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"%1$s has been banned":["ДоÑтъпът на %1$s е ÑпрÑн"],"%1$s\'s nickname has changed":["Краткото име на %1$s Ñе промени"],"%1$s has been kicked out":["%1$s беше изведен"],"%1$s has been removed because of an affiliation change":["%1$s беше премахнат заради промÑна на принадлежноÑÑ‚"],"%1$s has been removed for not being a member":["%1$s беше премахнат, защото не е член"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Краткото име, което избрахте, е запазено или понаÑтоÑщем Ñе ползва, Ð¼Ð¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ друго."],"Remote server not found":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":["Извинете, нещо Ñе обърка при опита за запиÑване на отметката ви."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Моите познати"],"Pending contacts":["Изчакващи потвърждение познати"],"Contact requests":["ЗаÑвки за познанÑтво"],"Ungrouped":["Ðегрупирани"],"Sorry, there was an error while trying to add %1$s as a contact.":["Извинете, възникна грешка при опит за добавÑне на %1$s като познат."],"This client does not allow presence subscriptions":["Този клиент не допуÑка абонаменти за приÑÑŠÑтвие"],"Click to hide these contacts":["ÐатиÑнете за Ñкриване на тези познати"],"Click to toggle the bookmarks list":["ÐатиÑнете за Ñкриване/показване на ÑпиÑъка Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¸"],"Bookmarks":["Отметки"],"The name for this bookmark:":["Името за тази отметка:"],"Save":["ЗапиÑ"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Сигурни ли Ñте, че иÑкате да премахнете отметката „%1$s“?"],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":["Това Ñъобщение е редактирано"],"No message history available.":[""],"Search":["ТърÑене"],"Start a call":["Обаждане"],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":["ÐатиÑнете за пиÑане на нормално (неакордеонно) Ñъобщение"],"Click to write your message as a spoiler":["ÐатиÑнете, за да пишете Ñъобщение, разгъващо Ñе като акордеон"],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["Кратко име"],"Refresh":[""],"Role":[""],"URL":[""],"Remove messages":["Премахване на ÑъобщениÑ"],"Write in the third person":["ПиÑане от трето лице"],"Show this menu":["Показване на това меню"],"Hidden message":["Скрито Ñъобщение"],"Message":["Съобщение"],"Optional hint":["Съвет (незадължително)"],"You have unread messages":["Имате непрочетени ÑъобщениÑ"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to remove this contact?":["Сигурни ли Ñте, че иÑкате да премахнете този познат?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Извинете, възникна грешка при опит за премахване на %1$s като познат."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":["Създаване на допуÑк"],"Don\'t have a chat account?":["ÐÑмате допуÑк за разговори?"],"Disconnected":[""],"Click here to log in anonymously":["ÐатиÑнете тук, за да влезете анонимно"],"Username":["ПотребителÑко име"],"user@domain":["потребител@облаÑÑ‚"],"Please enter a valid XMPP address":["ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ дейÑтвителен XMPP адреÑ"],"Toggle chat":["Разговори"],"Click to restore this chat":["ÐатиÑне за възÑтановÑване на този разговор"],"Minimized":["Минимизирани"],"This user is a moderator.":["Този потребител е модератор."],"Owner":[""],"Admin":[""],"Visitor":[""],"Click to mention %1$s in your message.":["ÐатиÑнете за да Ñпоменете %1$s в Ñъобщението Ñи."],"Participants":[""],"This field is required":[""],"name@conference.example.org":[""],"Invite":["Поканване"],"Description:":["ОпиÑание:"],"Features:":["СвойÑтва:"],"Requires authentication":["ИзиÑква удоÑтоверÑване"],"Hidden":["Скрита"],"Requires an invitation":["ИзиÑква покана"],"Moderated":["Модерирана"],"Non-anonymous":["Ðеанонимна"],"Open":["Отворена"],"Public":["ОбщеÑтвена"],"Semi-anonymous":["Полуанонимна"],"Temporary":["Временна"],"Unmoderated":["Ðемодерирана"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":[""],"Topic author":[""],"Message archiving":["Ðрхивиране на ÑъобщениÑ"],"Messages are archived on the server":["СъобщениÑта Ñе архивират на Ñървъра"],"Features":["СвойÑтва"],"Members only":["Само за членове"],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"Participants entering this groupchat can write right away":[""],"Password protected":["Защитена Ñ Ð¿Ð°Ñ€Ð¾Ð»Ð°"],"Persistent":["ПоÑтоÑнна"],"The conversation has moved. Click below to enter.":[""],"Please choose your nickname":["ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ Ñи кратко име"],"Password: ":["Парола: "],"Submit":["Изпращане"],"Change user\'s affiliation to admin":["ПромÑна на ролÑта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° админиÑтратор"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ПроменÑне на ролÑта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° учаÑтник"],"Write in 3rd person":["ПиÑане от трето лице"],"Grant membership to a user":["Даване на членÑтво на потребител"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Премахване на възможноÑтта на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð´Ð° публикува ÑъобщениÑ"],"Change your nickname":["ПромÑна на краткото ви име"],"Grant moderator role to user":["Даване на Ñ€Ð¾Ð»Ñ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€ на потребителÑ"],"Revoke the user\'s current affiliation":[""],"Allow muted user to post messages":["ПозволÑване на заглушен потребител да публикува ÑъобщениÑ"],"Configure":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Грешка: командата “%1$s†приема два аргумента – краткото име на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¸, по желание, причина."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":["Това дейÑтвие беше извършено от %1$s."],"The reason given is: \\"%1$s\\".":["Дадената причина е: „%1$s“."],"Announcements":[""],"Notification from %1$s":["ИзвеÑтие от %1$s"],"%1$s says":["%1$s казва"],"has gone offline":["Ñе изключи"],"has gone away":["Ñе е махнал(а)"],"is busy":["е зает(а)"],"has come online":["Ñе включи"],"wants to be your contact":["иÑка да Ñе Ñвърже Ñ Ð²Ð°Ñ"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Излизане"],"Click to change your chat status":["ÐатиÑнете, за да промените ÑÑŠÑтоÑнието Ñи за разговор"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["ОтÑÑŠÑтващ(а)"],"Busy":["Зает(а)"],"Custom status":["СъÑтоÑние чрез въвеждане"],"Offline":["Изключен(а)"],"Online":["Включен(а)"],"I am %1$s":["Ðз Ñъм %1$s"],"online":["включен(а)"],"busy":["зает(а)"],"away for long":["продължително отÑÑŠÑтващ(а)"],"away":["отÑÑŠÑтващ(а)"],"offline":["изключен(а)"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" например conversejs.org"],"Fetch registration form":["ИзтеглÑне на форумлÑÑ€ за запиÑване"],"Tip: A list of public XMPP providers is available":["Съвет: Ðаличен е ÑпиÑък на XMPP доÑтавчици за общеÑтвен доÑтъп"],"here":["тук"],"Sorry, we\'re unable to connect to your chosen provider.":["Извинете, не можем да Ñе Ñвържем Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð¾Ñ‚ Ð²Ð°Ñ Ð´Ð¾Ñтавчик."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Извинете, дадениÑÑ‚ доÑтавчик не поддържа прÑко запиÑване за допуÑк. ÐœÐ¾Ð»Ñ Ð¾Ð¿Ð¸Ñ‚Ð°Ð¹Ñ‚Ðµ друг начин или Ñ Ð´Ñ€ÑƒÐ³ доÑтавчик."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ðещо Ñе обърка при уÑтановÑване на връзка Ñ â€ž%1$s“. Сигурни ли Ñте, че ÑъщеÑтвува?"],"Now logging you in":["Сега бивате впиÑани"],"Registered successfully":["ЗапиÑани Ñте уÑпешно"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["ДоÑтавчикът отказа опита ви за запиÑване. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ точноÑтта на данните, които въведохте."],"Open Groupchats":[""],"Add":["ДобавÑне"],"This contact is busy":["Този познат е зает"],"This contact is online":["Този познат е включен"],"This contact is offline":["Този познат е изключен"],"This contact is unavailable":["Този познат не е на разположение"],"This contact is away for an extended period":["Този познат отÑÑŠÑтва дълго време"],"This contact is away":["Този познат отÑÑŠÑтва"],"Contact name":["Име на познатиÑ"],"Sorry, could not find a contact with that name":[""],"Filter":["Подбор"],"Filter by group name":[""],"Filter by status":[""],"Any":["Произволно"],"Unread":["Ðепрочетено"],"Chatty":["Приказлив(а)"],"Extended Away":["Дълго отÑÑŠÑтващ(а)"],"Click to remove %1$s as a contact":["ÐатиÑнете за премахване на %1$s като познат"],"Click to accept the contact request from %1$s":["ÐатиÑнете за приемане на заÑвката за познанÑтво от %1$s"],"Click to decline the contact request from %1$s":["ÐатиÑнете за отказване на заÑвката за познанÑтво от %1$s"],"Are you sure you want to decline this contact request?":["Сигурни ли Ñте, че иÑкате да откажете тази заÑвка за познанÑтво?"],"Contacts":["Познати"],"Add a contact":["ДобавÑне на познат"]}}}')}}]); //# sourceMappingURL=bg-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/ca-LC_MESSAGES-converse-po.js b/src/conversejs/locales/ca-LC_MESSAGES-converse-po.js index 8059c3483495949113b6112496250fc0a68b53fa..fc54abe645c36d6f73549b1b7b9beae02408a066 100644 --- a/src/conversejs/locales/ca-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/ca-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{422:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"ca"},"Create your account":["Crea el teu compte"],"Please enter the XMPP provider to register with:":["Si us plau, introdueix el proveïdor XMPP per registrar-se:"],"Already have a chat account?":["Ja tens un compte de xat?"],"Log in here":["Inicia sessió aqui"],"Account Registration:":["Crea un compte:"],"Register":["Registrar-se"],"Choose a different provider":["Tria un altre proveïdor"],"Hold tight, we\'re fetching the registration form…":["Tingues paciència, s\'està obtenint el formulari de registre…"],"Cancel":["Cancel·la"],"The connection has dropped, attempting to reconnect.":["S\'ha perdut la connexió, s\'està intentant reconnectar."],"An error occurred while connecting to the chat server.":["S\'ha produït un error al intentar connectar-se al servidor de xat."],"Your XMPP address and/or password is incorrect. Please try again.":["La teva adreça XMPP i/o la contrasenya no és correcta. Intenta-ho de nou."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["No s\'ha pogut connectar al servei XMPP amb el domini: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["El servidor XMPP no ha proporcionat cap mecanisme d\'autenticació compatible"],"Sorry, could not determine upload URL.":["No s\'ha pogut determinar URL."],"Sorry, could not determine file upload URL.":["No s\'ha pogut determinar el fitxer URL."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["No s\'ha pogut carregar el teu fitxer. La resposta del teu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["No s\'ha pogut carregar el teu fitxer amb èxit."],"Sorry, looks like file upload is not supported by your server.":["El teu servei no permet pujar fitxers."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La mida del teu fitxer de %1$s, excedeix el mà xim permès pel teu servei, el qual és %2$s."],"Smileys and emotions":["Emoticones i emocions"],"People":["Gent"],"Activities":["Activitats"],"Travel":["Viatges"],"Objects":["Objectes"],"Animals and nature":["Animals i natura"],"Food and drink":["Aliments i begudes"],"Symbols":["SÃmbols"],"Flags":["Banderes"],"Stickers":["Enganxines"],"This groupchat is not anonymous":["Aquest grup no és anònim"],"This groupchat now shows unavailable members":["Aquesta sala ara mostra membres no disponibles"],"This groupchat does not show unavailable members":["Aquesta sala no mostra membres no disponibles"],"The groupchat configuration has changed":["S\'ha canviat la configuració del grup"],"Groupchat logging is now enabled":["El registre del grup està habilitat"],"Groupchat logging is now disabled":["El registre del grup està deshabilitat"],"This groupchat is now no longer anonymous":["Aquest grup ja no és anònim"],"This groupchat is now semi-anonymous":["Aquest grup ara és parcialment anònim"],"This groupchat is now fully-anonymous":["Aquest grup ara és totalment anònim"],"A new groupchat has been created":["S\'ha creat un grup nou"],"Your nickname has been automatically set to %1$s":["El teu à lies ha canviat automà ticament a: %1$s"],"Your nickname has been changed to %1$s":["El teu à lies ha canviat a: %1$s"],"You have been banned from this groupchat":["Se t\'ha denegat l\'accés a aquest grup"],"You have been kicked from this groupchat":["Se\'t ha expulsat d\'aquest grup"],"You have been removed from this groupchat because of an affiliation change":["Se\'t ha eliminat d\'aquest grup a causa d\'un canvi d\'afiliació"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Se\'t ha eliminat d\'aquest grup perquè ara només permet membres i no en sou membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Se\'t ha eliminat d\'aquest grup perquè s\'està tancant el servei de xat multiusuari"],"Your message was not delivered because you weren\'t allowed to send it.":["El missatge no ha arribat perquè no tenies permés enviar-lo."],"Your message was not delivered because you\'re not present in the groupchat.":["El teu missatge no s\'ha enviat perquè no està s al grup."],"You\'re not allowed to register yourself in this groupchat.":["No tens permÃs per registrar-te a aquest grup."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["No tens permÃs per accedir a aquest grup perquè és de només membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["No es pot registrar el teu à lies a aquest grup, ja que no permet enregistrar à lies."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["No es pot registrar el teu à lies a aquest grup, les dades que s\'han enviat no son và lides."],"Topic set by %1$s":["%1$s ha especificat el tema"],"Topic cleared by %1$s":["%1$s ha eliminat el tema"],"%1$s has been banned by %2$s":["%2$s ha denegat l\'accés a %1$s"],"%1$s has been banned":["S\'ha denegat l\'accés a %1$s"],"%1$s\'s nickname has changed":["L\'à lies de %1$s ha canviat"],"%1$s has been kicked out by %2$s":["%2$s ha expulsat a %1$s"],"%1$s has been kicked out":["S\'ha expulsat a %1$s"],"%1$s has been removed because of an affiliation change":["S\'ha eliminat a %1$s a causa d\'un canvi d\'afiliació"],"%1$s has been removed for not being a member":["S\'ha eliminat a %1$s perquè no és membre"],"%1$s is no longer an admin of this groupchat":["%1$s ja no és un administrador d\'aquest grup"],"%1$s is no longer an owner of this groupchat":["%1$s ja no és el propietari d\'aquest grup"],"%1$s is no longer banned from this groupchat":["Aquest grup torna a permetre l\'accés de %1$s"],"%1$s is no longer a member of this groupchat":["%1$s ja no és membre d\'aquest grup"],"%1$s is now a member of this groupchat":["%1$s ara és membre d\'aquest grup"],"%1$s is now an %2$s of this groupchat":["%1$s ara és %2$s d\'aquest grup"],"The nickname you chose is reserved or currently in use, please choose a different one.":["L\'à lies que has triat està reservat o es troba en ús, si us plau trieu-ne un altre."],"Password incorrect":["Contrasenya incorrecta"],"You are not on the member list of this groupchat.":["No ets a la llista de membres d\'aquest grup."],"You have been banned from this groupchat.":["Se t\'ha denegat l\'accés a aquest grup."],"You are not allowed to create new groupchats.":["No tens permÃs per crear grups."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["El vostre à lies no compleix amb la polÃtica d\'aquest grup."],"This groupchat does not (yet) exist.":["Aquest grup no existeix (encara)."],"This groupchat has reached its maximum number of participants.":["Aquest grup ha assolit el nombre mà xim d\'ocupants."],"Remote server not found":["No s\'ha trobat aquest servei"],"The explanation given is: \\"%1$s\\".":["El motiu indicat és: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s t\'ha convidat a unir-te a un grup de xat: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s t\'ha convidat a unir-te a un grup de xat (%2$s) i ha deixat el següent motiu: \\"%3$s\\""],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["S\'ha produït un error intentant guardar el grup a favorits."],"Timeout Error":["LÃmit de temps d\'espera excedit"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["El servei ha trigat massa en enviar els teus grups. Actualitza la pà gina per a demanar-los un altra vegada."],"My contacts":["Els meus contactes"],"Pending contacts":["Contactes pendents"],"Contact requests":["Sol·licituds de contacte"],"Ungrouped":["Sense agrupar"],"New messages":["Missatges nous"],"Sorry, there was an error while trying to add %1$s as a contact.":["S\'ha produït un error en intentar afegir %1$s com a contacte."],"This client does not allow presence subscriptions":["El contacte no permet subscripcions de presència"],"Click to hide these contacts":["Fes clic per amagar aquests contactes"],"Unbookmark this groupchat":["Eliminar grup de llista de grups"],"Click to open this groupchat":["Fes clic per obrir aquest grup"],"Click to toggle the bookmarks list":["Feu clic per a mostrar la llista de grups"],"Bookmarks":["Grups"],"Bookmark this groupchat":["Marca aquest grup"],"Would you like this groupchat to be automatically joined upon startup?":["T\'agradaria entrar automà ticament a aquest grup?"],"The name for this bookmark:":["El nom per a aquest marcador:"],"What should your nickname for this groupchat be?":["Tria el teu à lies:"],"Save":["Desa"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Segur que voleu eliminar \\"%1$s\\"?"],"Unbookmark":["Desmarca"],"Bookmark":["Marca"],"Close":["Tancar"],"OK":["D\'acord"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Descarregar fitxer d\'audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Descarregar fitxer \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Versions del missatge"],"Retry":[""],"Uploading file:":["Pujant fitxer:"],"%1$s has removed this message":["%1$s ha eliminat el missatge"],"This message has been edited":["Aquest missatge ha sigut editat"],"Show more":["Mostrar més"],"No message history available.":["No hi ha historial de missatges disponible."],"Search results":["Cerca resultats"],"Search":["Cerca"],"Insert emojis":["Insereix emoticones"],"Send the message":["Envia el missatge"],"Start a call":["Inicia una trucada"],"Message characters remaining":["Carà cters del missatge restants"],"Choose a file to send":["Tria el fitxer per enviar"],"Click to write as a normal (non-spoiler) message":["Fes clic per a escriure un missatge normal(sense spoiler)"],"Click to write your message as a spoiler":["Fes clic aquà per escriure un missatge amb spoiler"],"The User\'s Profile Image":["Imatge de perfil"],"Trusted":["Acceptada"],"Untrusted":["Denegada"],"OMEMO Fingerprints":["Empremta digital OMEMO"],"No OMEMO-enabled devices found":["No s\'han trobat dispositius amb OMEMO"],"Remove as contact":["Eliminar com a contacte"],"XMPP Address":["Adreça XMPP"],"Email":["Correu electrònic"],"Full Name":["Nom Complet"],"Nickname":["Àlies"],"Refresh":["Actualitzar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s està escrivint"],"%1$s has stopped typing":["%1$s ha deixat d\'escriure"],"%1$s has gone away":["%1$s és absent"],"Remove messages":["Elimina els missatges"],"Close this chat":["Tanca aquest xat"],"Write in the third person":["Escriu en tercera persona"],"Show this menu":["Mostra aquest menú"],"Hidden message":["Missatge amagat"],"Message":["Missatge"],"Optional hint":["Informació opcional"],"You have unread messages":["Tens missatges per llegir"],"Details":["Detalls"],"See more information about this person":["Mostra més informació sobre aquesta persona"],"Close and end this conversation":["Tanca i finalitza aquesta conversa"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tingues en compte que altres clients i serveis XMPP/Jabber potser no permeten eliminar missatges, és a dir, aquest missatge potser no s\'elimina totalment."],"Are you sure you want to retract this message?":["Segur que vols eliminar aquest missatge?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Tens un missatge per a enviar, s\'esborrarà si continues. Està s segur que vols continuar?"],"Are you sure you want to clear the messages from this conversation?":["Segur que voleu esborrar els missatges d\'aquest a conversa?"],"%1$s has gone offline":["%1$s s\'ha desconnectat"],"%1$s is busy":["%1$s està ocupat"],"%1$s is online":["%1$s està en lÃnia"],"Sorry, something went wrong while trying to refresh":["S\'ha produït un error intentant actualitzar"],"Are you sure you want to remove this contact?":["Segur que voleu eliminar aquest contacte?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["S\'ha produït un error intentant eliminar %1$s com a contacte."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per a millorar el rendiment, es recullen les teves dades a aquest navegador. Desmarca aquesta opció si està s utilitzant un ordinador públic o si vols que les teves dades s\'esborrin quan et desconnectes. És important que explÃcitament et desconnectis, d\'altra manera, totes les dades recollides potser no s\'esborrin. Tingues en compte que l\'encriptació OMEMO no està disponible quan utilitzes un dispositiu amb el que no confies."],"This is a trusted device":["Aquest dispositiu és de confiança"],"Password":["Contrasenya"],"Create an account":["Crea un compte"],"Don\'t have a chat account?":["No tens un compte de xat?"],"Log in":["Inicia la sessió"],"Disconnected":["Desconnectat"],"Click here to log in anonymously":["Fes clic aquà per iniciar la sessió de manera anònima"],"Username":["Nom d\'usuari"],"user@domain":["usuari@domini"],"Please enter a valid XMPP address":["Introdueix una adreça XMPP và lida"],"Chat Contacts":["Contactes"],"Toggle chat":["Canvia de xat"],"Click to restore this chat":["Fes clic per restaurar aquest xat"],"Minimized":["Minimitzat"],"Minimize":["Minimitzar"],"Minimize this chat":["Minimitza aquest xat"],"Minimize this groupchat":["Minimitza aquest grup"],"This field is required":["Aquest camp és necessari"],"Join":["Unir-se al grup"],"Enter a new Groupchat":["Entrar a un grup nou"],"name@conference.example.org":["nom@conferencia.exemple.org"],"Groupchat name":["Nom del grup"],"Groupchat address":["Adreça del grup"],"Groupchat id is invalid.":["El ID del grup no és và lid."],"Invite":["Convida"],"Invite someone to this groupchat":["Convida algú a aquest grup"],"user@example.org":["usuari@exemple.org"],"Optional reason for the invitation":["Raó opcional per la invitació"],"Show groupchats":["Mostrar grups"],"Server address":["Adreça del servei"],"Show more information on this groupchat":["Mostra més informació d\'aquest grup"],"Query for Groupchats":["Cercar grups"],"Description:":["Descripció:"],"Groupchat Address (JID):":["Adreça del grup(JID):"],"Participants:":["Participants:"],"Features:":["CaracterÃstiques:"],"Requires authentication":["Cal autenticar-se"],"Hidden":["Amagat"],"Requires an invitation":["Cal tenir una invitació"],"Moderated":["Moderada"],"Non-anonymous":["No és anònima"],"Open":["Obre"],"Permanent":["Grup permanent"],"Public":["Pública"],"Semi-anonymous":["Semi-anònima"],"Temporary":["Temporal"],"Unmoderated":["No moderada"],"conference.example.org":["conferencia@exemple.org"],"No groupchats found":["No s\'ha trobat cap grup"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Els moderadors son usuaris privilegiats que poden canviar el rol d\'altres usuaris, exceptuant els usuaris que tinguen afiliació d\'administrador o de propietari."],"The default role, implies that you can read and write messages.":["El rol per defecte et permet que puguis llegir i escriure missatges."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Els usuaris visitants no tenen permÃs per a escriure missatges a un grup amb moderadors."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["L\'afiliació més alta és la de propietari. Els propietaris poden modificar els rols i les afiliacions de tots els altres usuaris."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["La segona afiliació més alta és la d\'administrador. Els administradors poden modificar els rols i les afiliacions de tots els usuaris excepte la del propietari."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per a denegar el accés a un usuari, li dones l\'afiliació de \\"exiliat\\"."],"Change role":["Canviar rol"],"New Role":["Nou rol"],"Reason":["Raó"],"Change affiliation":["Canviar l\'afiliació"],"New affiliation":["Nova afiliació"],"Affiliation":["Afiliació"],"Moderator Tools":["Eines de moderador"],"No users with that affiliation found.":["No s\'han trobat usuaris amb aquest tipus d\'afiliació."],"No users with that role found.":["No s\'han trobat usuaris amb aquest rol."],"Type here to filter the search results":["Escriu aquà per a filtrar els resultats de recerca"],"Show users":["Mostrar els usuaris"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Els rols s\'assignen per a denegar o permetre\'ls certes habilitats dins d\'un grup. S\'assignen explÃcitament com a part d\'una afiliació. Un rol que no està assignat a una afiliació, només té validesa durant la sessió de l\'usuari."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliació és un dret a llarg termini que normalment implica un cert rol que concedeix privilegis i responsabilitats. Per exemple, els administradors i propietaris tenen automà ticament el rol de moderador."],"Sorry, something went wrong while trying to set the affiliation":["S\'ha produït un error intentant assignar l\'afiliació"],"Affiliation changed":["L\'afiliació ha canviat"],"Role changed":["El rol ha canviat"],"You\'re not allowed to make that change":["No tens permÃs per fer aquest canvi"],"Sorry, something went wrong while trying to set the role":["S\'ha produït un error intentant assignar el rol"],"Topic":["Tema"],"Topic author":["Autor del tema"],"Groupchat address (JID)":["Adreça del grup(JID)"],"Message archiving":["Emmagatzematge de missatges"],"Messages are archived on the server":["Els missatges estan arxivats al servei"],"Description":["Descripció"],"Features":["CaracterÃstiques"],"This groupchat is not publicly searchable":["Aquest grup no es pot buscar públicament"],"This groupchat is restricted to members only":["Aquest grup està limitat a només membres"],"Members only":["Només membres"],"Participants entering this groupchat need to request permission to write":["Els participants que entren aquest grup han de demanar permÃs per a escriure"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Aquest grup no requereix de contrasenya"],"No password required":["No es necessita contrasenya"],"Not anonymous":["No és anònima"],"All other groupchat participants can see your XMPP address":["Tots els participants d\'aquest grup poden veure la teva adreça XMPP"],"Not moderated":["No moderada"],"Participants entering this groupchat can write right away":["Els participants que entren a aquest grup poden escriure sense demanar permÃs"],"Online users":["Usuaris en lÃnea"],"Anyone can join this groupchat":["Qualsevol usuari pot entrar a aquest grup"],"This groupchat requires a password before entry":["Aquest grup requereix una contrasenya abans d\'entrar"],"Password protected":["Protegit per contrasenya"],"Persistent":["Persistent"],"This groupchat persists even if it\'s unoccupied":["Aquest grup no s\'esborra encara que no hi hagi participants"],"Only moderators can see your XMPP address":["Només els moderadors poden veure la teva adreça XMPP"],"This groupchat will disappear once the last person leaves":["Aquest grup s\'eliminarà quan l\'últim participant surti"],"This groupchat is publicly searchable":["Aquest grup es pot buscar públicament"],"Groupchat info for %1$s":["Informació del grup per a %1$s"],"You\'re not allowed to send messages in this room":["No teniu permÃs per enviar missatges a aquesta sala"],"The conversation has moved. Click below to enter.":["Aquesta conversa ha sigut moguda. Fes clic a continuació per entrar."],"This groupchat no longer exists":["Aquest grup ja no existeix"],"Hide the groupchat topic":["Amaga el tema del grup"],"This groupchat is bookmarked":["Aquest grup no està marcat com a favorit"],"Enter groupchat":["Entrar al grup"],"Choose a nickname to enter":["Tria un à lies per a entrar"],"Please choose your nickname":["Tria el teu à lies"],"This groupchat requires a password":["Aquest grup requereix una contrasenya"],"Password: ":["Contrasenya: "],"Submit":["Envia"],"This user is a moderator.":["Aquest usuari és un moderador."],"This user can send messages in this groupchat.":["Aquest usuari pot enviar missatges a aquest grup."],"This user can NOT send messages in this groupchat.":["Aquest usuari NO pot enviar missatges a aquest grup."],"Owner":["Propietari"],"Admin":["Administrador"],"Member":["Membre"],"Moderator":["Moderador"],"Visitor":["Visitant"],"Click to mention %1$s in your message.":["Fes clic per a mencionar a %1$s al teu missatge."],"Participants":["Participants"],"%1$s has entered the groupchat":["%1$s ha entrat al grup"],"%1$s has left the groupchat":["%1$s ha sortit del grup"],"%1$s is now a moderator":["S\'han donat privilegis de moderació a %1$s"],"%1$s is no longer a moderator":["%1$s ja no és un moderador"],"%1$s has been given a voice":["%1$s ja pot participar a aquest grup"],"%1$s has been muted":["S\'ha silenciat a %1$s"],"%1$s and %2$s":["%1$s i %2$s"],"%1$s are typing":["%1$s estan escrivint"],"%1$s have stopped typing":["%1$s han deixat d\'escriure"],"%1$s have gone away":["%1$s no està disponible"],"%1$s have entered the groupchat":["%1$s han entrat al grup"],"%1$s have left the groupchat":["%1$s han sortit del grup"],"Change user\'s affiliation to admin":["Canvia l\'afiliació de l\'usuari a administrador"],"Ban user by changing their affiliation to outcast":["Denega l\'accés a l\'usuari canviant l\'afiliació a exiliat"],"Clear the chat area":["Neteja l\'à rea de xat"],"Close this groupchat":["Tancar aquest grup"],"Change user role to participant":["Canvia el rol de l\'usuari a participant"],"Remove this groupchat":["Esborrar aquest grup"],"Kick user from groupchat":["Expulsa l\'usuari del grup"],"Write in 3rd person":["Escriu en tercera persona"],"Grant membership to a user":["Atorga una afiliació a un usuari"],"Opens up the moderator tools GUI":["Obre les eines de moderador GUI"],"Remove user\'s ability to post messages":["Elimina la capacitat de l\'usuari de publicar missatges"],"Change your nickname":["Canvia el teu à lies"],"Grant moderator role to user":["Atorga el rol de moderador a l\'usuari"],"Grant ownership of this groupchat":["Atorga la propietat d\'aquest grup"],"Register your nickname":["Registra el teu à lies"],"Revoke the user\'s current affiliation":["Anul·la l\'afliació del usuari"],"Set groupchat subject":["Defineix un tema per al grup"],"Set groupchat subject (alias for /subject)":["Defineix el tema del grup (à lies per a / tema)"],"Allow muted user to post messages":["Permet que un usuari silenciat publiqui missatges"],"You are about to retract this message.":["Està s apunt d\'eliminar aquest missatge."],"You may optionally include a message, explaining the reason for the retraction.":["Teniu l\'opció d\'incloure un missatge per explicar el motiu de l\'eliminació."],"Message Retraction":["Retracció del missatge"],"Optional reason":["Raó opcional"],"Sorry, you\'re not allowed to retract this message":["No tens permÃs per a retractar-te d\'aquest missatge"],"A timeout occurred while trying to retract the message":["El temps d\'espera a expirat intentant retractar el missatge"],"Sorry, you\'re not allowed to retract this message.":["No tens permÃs per a retractar aquest missatge."],"Show more information about this groupchat":["Mostra més informació sobre aquest grup"],"Configure":["Configurar"],"Configure this groupchat":["Configurar aquest grup"],"Invite someone to join this groupchat":["Convidar algú a unir-se a aquest grup"],"Show topic":["Mostrar tema"],"Hide topic":["Amagar tema"],"Show the topic message in the heading":["Mostrar el missatge del tema a la capçalera"],"Hide the topic in the heading":["Amaga el tema a la capçalera"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar aquest grup"],"Destroy":["Destruir"],"Leave":["Sortir"],"Leave and close this groupchat":["Sortir i tancar aquest grup"],"Are you sure you want to leave this groupchat?":["Segur que vols sortir d\'aquest grup?"],"Hide the list of participants":["Amaga la llista de participants"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibit: no tens el rol necessari per a fer això."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibit: no tens l\'afiliació necessà ria per a fer això."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error: l\'ordre %1$s accepta dos parà metres, l\'à lies de l\'usuari i una raó opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error: no s\'ha pogut trobar un participant del grup basat amb els teus parà metres"],"Error: found multiple groupchat participant based on your arguments":["Error: s\'han trobat diversos participants del grup basats en els teus parà metres"],"Sorry, an error happened while running the command.":["S\'ha produït un error intentant executar l\'ordre."],"Check your browser\'s developer console for details.":["Revisa la consola del desenvolupador del navegador per a detalls."],"Are you sure you want to destroy this groupchat?":["Segur que vols eliminar aquest grup?"],"name@example.org":["nom@exemple.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["El vostre à lies és: %1$s"],"Error: invalid number of arguments":["Error: nombre de parà metres invalid"],"This action was done by %1$s.":["Aquesta acció l\'ha fet %1$s."],"The reason given is: \\"%1$s\\".":["El motiu indicat és: \\"%1$s\\"."],"Groupchats":["Grups"],"Add a new groupchat":["Afegeix un nou grup"],"Query for groupchats":["Demana els grups"],"Sorry, an error occurred while trying to submit the config form.":["S\'ha produït un error intentant desar el formulari de configuració."],"Close these announcements":["Tanca aquests anuncis"],"Announcements":["Anuncis"],"Click to open this server message":["Fes clic per obrir aquest missatge del servei"],"Notification from %1$s":["Notificació de %1$s"],"%1$s says":["%1$s diu"],"has gone offline":["s\'ha desconnectat"],"has gone away":["ha marxat"],"is busy":["està ocupat"],"has come online":["s\'ha connectat"],"wants to be your contact":["vol ser el teu contacte"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Informació"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s codi obert %2$s client de xat XMPP facilitat per %3$s Opkode%2$s"],"%1$s Translate %2$s it into your own language":["%1$s Tradueix %2$s al teu idioma"],"Log out":["Tanca la sessió"],"Click to change your chat status":["Fes clic per canviar l\'estat del xat"],"Show details about this chat client":["Mostra més informació sobre aquest client de xat"],"Your avatar image":["La imatge del teu avatar"],"Checkbox for selecting the following fingerprint":["Casella per a seleccionar la següent empremta digital"],"Device without a fingerprint":["Verifica sense empremtes"],"Other OMEMO-enabled devices":["Altres dispositius amb OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Marca la casella per a seleccionar empremtes per als altres dispositius OMEMO"],"Remove checked devices and close":["Esborrar els dispositius marcats i tancar"],"Select all":["Seleccionar-ho tot"],"This device\'s OMEMO fingerprint":["L\'empremta OMEMO d\'aquest dispositiu"],"Generate new keys and fingerprint":["Generar noves claus i empremtes"],"Your Profile":["El Teu Perfil"],"XMPP Address (JID)":["Adreça XMPP (JID)"],"Save and close":["Guardar i tancar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilitza comes per a separar múltiples rols. Els teus rols es mostren al costat del teu nom als teus missatges."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["S\'ha produït un error intentant guardar les dades del teu perfil."],"You can check your browser\'s developer console for any error output.":["Pots revisar la consola del teu navegador per a qualsevol error resultat."],"Away":["Absent"],"Busy":["Ocupat"],"Custom status":["Estat personalitzat"],"Offline":["Desconnectat"],"Online":["En lÃnia"],"Away for long":["Absent durant un llarg termini"],"Change chat status":["Canviar el teu estat de xat"],"Personal status message":["Missatge d\'estat personal"],"I am %1$s":["Estic %1$s"],"Are you sure you want to log out?":["Segur que vols desconnectar-te?"],"online":["en lÃnia"],"busy":["ocupat"],"away for long":["absent durant una estona"],"away":["absent"],"offline":["desconnectat"],"Sorry, could not decrypt a received OMEMO message due to an error.":["No s\'ha pogut desencriptar aquest missatge OMEMO degut a un error."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s sembla que no té un client que permet OMEMO. Xat encriptat no serà possible a partir d\'ara."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["No es pot utilitzar encriptació end-to-end perquè %1$s utilitza un client que no utilitza OMEMO."],"Messages are being sent in plaintext":["Els missatges s\'estan enviant en text simple"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["S\'ha produït un error intentant eliminar els dispositius."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Està s segur que vols generar claus OMEMO noves? Això esborrara les teves claus antigues i tots els missatges encriptats i ja no es podran desencriptar a aquest dispositiu."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["No és possible enviar missatges encriptats perquè %1$s et demana que estigues subscrit a la seva presencia per a poder veure la seva informació OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["No s\'han pogut enviar missatges encriptats perquè el servei %1$s no s\'ha trobat"],"Unable to send an encrypted message due to an unexpected error.":["No es poden veure els missatges encriptats degut a un error."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["No s\'han trobat dispositius als que es puguin envair missatges encriptats OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Aquest és un missatge encriptat amb OMEMO, el qual el teu client no permet. Troba més informació a https://conversations.im/omemo"]," e.g. conversejs.org":[" p. ex. conversejs.org"],"Fetch registration form":["Obtingues un formulari de registre"],"Tip: A list of public XMPP providers is available":["Consell: hi ha disponible una llista de proveïdors XMPP públics"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["No és possible connectar-se al proveïdor que has triat."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["El proveïdor indicat no admet el registre del compte. Proveu-ho amb un altre proveïdor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ha passat alguna cosa mentre s\'establia la connexió amb \\"%1$s\\". Segur que existeix?"],"Now logging you in":["S\'està iniciant la vostra sessió"],"Registered successfully":["Registre correcte"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["El proveïdor ha rebutjat l\'intent de registre. Comproveu que els valors que heu introduït siguin correctes."],"Leave this groupchat":["Sortir del grup"],"Click to toggle the list of open groupchats":["Fes clic per obrir la llista de grups"],"Open Groupchats":["Grups oberts"],"Are you sure you want to leave the groupchat %1$s?":["Segur que vols sortir del grup %1$s?"],"Add":["Afegeix"],"Add a Contact":["Afegeix un Contacte"],"This contact is busy":["Aquest contacte està ocupat"],"This contact is online":["Aquest contacte està en lÃnia"],"This contact is offline":["Aquest contacte està desconnectat"],"This contact is unavailable":["Aquest contacte no està disponible"],"This contact is away for an extended period":["Aquest contacte està absent durant un perÃode prolongat"],"This contact is away":["Aquest contacte està absent"],"Contact name":["Nom del contacte"],"Optional nickname":["Àlies opcional"],"Sorry, could not find a contact with that name":["No s\'ha trobat un contacte amb aquest nom"],"This contact has already been added":["Aquest contacte ja l\'has afegit"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar per nom de contacte"],"Filter by group name":["Filtrar per nom de grup"],"Filter by status":["Filtrar per estat"],"Any":["Qualsevol"],"Unread":["No llegits"],"Chatty":["Xerraire"],"Extended Away":["No disponible durant llarg temps"],"Click to remove %1$s as a contact":["Feu clic per eliminar %1$s com a contacte"],"Click to accept the contact request from %1$s":["Feu clic per acceptar aquesta sol·licitud de contacte de %1$s"],"Click to decline the contact request from %1$s":["Feu clic per rebutjar aquesta sol·licitud de contacte de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Feu clic per conversar amb %1$s (adreça XMPP:%2$s)"],"Are you sure you want to decline this contact request?":["Segur que voleu rebutjar aquesta sol·licitud de contacte?"],"Contacts":["Contactes"],"Add a contact":["Afegeix un contacte"],"Re-sync your contacts":["Tornar a sincronitzar els contactes"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[142],{510:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"ca"},"Create your account":["Crea el teu compte"],"Please enter the XMPP provider to register with:":["Si us plau, introdueix el proveïdor XMPP per registrar-se:"],"Already have a chat account?":["Ja tens un compte de xat?"],"Log in here":["Inicia sessió aqui"],"Account Registration:":["Crea un compte:"],"Register":["Registrar-se"],"Choose a different provider":["Tria un altre proveïdor"],"Hold tight, we\'re fetching the registration form…":["Tingues paciència, s\'està obtenint el formulari de registre…"],"Cancel":["Cancel·la"],"The connection has dropped, attempting to reconnect.":["S\'ha perdut la connexió, s\'està intentant reconnectar."],"An error occurred while connecting to the chat server.":["S\'ha produït un error al intentar connectar-se al servidor de xat."],"Your XMPP address and/or password is incorrect. Please try again.":["La teva adreça XMPP i/o la contrasenya no és correcta. Intenta-ho de nou."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["No s\'ha pogut connectar al servei XMPP amb el domini: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["El servidor XMPP no ha proporcionat cap mecanisme d\'autenticació compatible"],"Sorry, could not determine upload URL.":["No s\'ha pogut determinar URL."],"Sorry, could not determine file upload URL.":["No s\'ha pogut determinar el fitxer URL."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["No s\'ha pogut carregar el teu fitxer. La resposta del teu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["No s\'ha pogut carregar el teu fitxer amb èxit."],"Sorry, looks like file upload is not supported by your server.":["El teu servei no permet pujar fitxers."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La mida del teu fitxer de %1$s, excedeix el mà xim permès pel teu servei, el qual és %2$s."],"Smileys and emotions":["Emoticones i emocions"],"People":["Gent"],"Activities":["Activitats"],"Travel":["Viatges"],"Objects":["Objectes"],"Animals and nature":["Animals i natura"],"Food and drink":["Aliments i begudes"],"Symbols":["SÃmbols"],"Flags":["Banderes"],"Stickers":["Enganxines"],"This groupchat is not anonymous":["Aquest grup no és anònim"],"This groupchat now shows unavailable members":["Aquesta sala ara mostra membres no disponibles"],"This groupchat does not show unavailable members":["Aquesta sala no mostra membres no disponibles"],"The groupchat configuration has changed":["S\'ha canviat la configuració del grup"],"Groupchat logging is now enabled":["El registre del grup està habilitat"],"Groupchat logging is now disabled":["El registre del grup està deshabilitat"],"This groupchat is now no longer anonymous":["Aquest grup ja no és anònim"],"This groupchat is now semi-anonymous":["Aquest grup ara és parcialment anònim"],"This groupchat is now fully-anonymous":["Aquest grup ara és totalment anònim"],"A new groupchat has been created":["S\'ha creat un grup nou"],"Your nickname has been automatically set to %1$s":["El teu à lies ha canviat automà ticament a: %1$s"],"Your nickname has been changed to %1$s":["El teu à lies ha canviat a: %1$s"],"You have been banned from this groupchat":["Se t\'ha denegat l\'accés a aquest grup"],"You have been kicked from this groupchat":["Se\'t ha expulsat d\'aquest grup"],"You have been removed from this groupchat because of an affiliation change":["Se\'t ha eliminat d\'aquest grup a causa d\'un canvi d\'afiliació"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Se\'t ha eliminat d\'aquest grup perquè ara només permet membres i no en sou membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Se\'t ha eliminat d\'aquest grup perquè s\'està tancant el servei de xat multiusuari"],"Your message was not delivered because you weren\'t allowed to send it.":["El missatge no ha arribat perquè no tenies permés enviar-lo."],"Your message was not delivered because you\'re not present in the groupchat.":["El teu missatge no s\'ha enviat perquè no està s al grup."],"You\'re not allowed to register yourself in this groupchat.":["No tens permÃs per registrar-te a aquest grup."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["No tens permÃs per accedir a aquest grup perquè és de només membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["No es pot registrar el teu à lies a aquest grup, ja que no permet enregistrar à lies."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["No es pot registrar el teu à lies a aquest grup, les dades que s\'han enviat no son và lides."],"Topic set by %1$s":["%1$s ha especificat el tema"],"Topic cleared by %1$s":["%1$s ha eliminat el tema"],"%1$s has been banned by %2$s":["%2$s ha denegat l\'accés a %1$s"],"%1$s has been banned":["S\'ha denegat l\'accés a %1$s"],"%1$s\'s nickname has changed":["L\'à lies de %1$s ha canviat"],"%1$s has been kicked out by %2$s":["%2$s ha expulsat a %1$s"],"%1$s has been kicked out":["S\'ha expulsat a %1$s"],"%1$s has been removed because of an affiliation change":["S\'ha eliminat a %1$s a causa d\'un canvi d\'afiliació"],"%1$s has been removed for not being a member":["S\'ha eliminat a %1$s perquè no és membre"],"%1$s is no longer an admin of this groupchat":["%1$s ja no és un administrador d\'aquest grup"],"%1$s is no longer an owner of this groupchat":["%1$s ja no és el propietari d\'aquest grup"],"%1$s is no longer banned from this groupchat":["Aquest grup torna a permetre l\'accés de %1$s"],"%1$s is no longer a member of this groupchat":["%1$s ja no és membre d\'aquest grup"],"%1$s is now a member of this groupchat":["%1$s ara és membre d\'aquest grup"],"%1$s is now an %2$s of this groupchat":["%1$s ara és %2$s d\'aquest grup"],"The nickname you chose is reserved or currently in use, please choose a different one.":["L\'à lies que has triat està reservat o es troba en ús, si us plau trieu-ne un altre."],"Password incorrect":["Contrasenya incorrecta"],"You are not on the member list of this groupchat.":["No ets a la llista de membres d\'aquest grup."],"You have been banned from this groupchat.":["Se t\'ha denegat l\'accés a aquest grup."],"You are not allowed to create new groupchats.":["No tens permÃs per crear grups."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["El vostre à lies no compleix amb la polÃtica d\'aquest grup."],"This groupchat does not (yet) exist.":["Aquest grup no existeix (encara)."],"This groupchat has reached its maximum number of participants.":["Aquest grup ha assolit el nombre mà xim d\'ocupants."],"Remote server not found":["No s\'ha trobat aquest servei"],"The explanation given is: \\"%1$s\\".":["El motiu indicat és: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s t\'ha convidat a unir-te a un grup de xat: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s t\'ha convidat a unir-te a un grup de xat (%2$s) i ha deixat el següent motiu: \\"%3$s\\""],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["S\'ha produït un error intentant guardar el grup a favorits."],"Timeout Error":["LÃmit de temps d\'espera excedit"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["El servei ha trigat massa en enviar els teus grups. Actualitza la pà gina per a demanar-los un altra vegada."],"My contacts":["Els meus contactes"],"Pending contacts":["Contactes pendents"],"Contact requests":["Sol·licituds de contacte"],"Ungrouped":["Sense agrupar"],"New messages":["Missatges nous"],"Sorry, there was an error while trying to add %1$s as a contact.":["S\'ha produït un error en intentar afegir %1$s com a contacte."],"This client does not allow presence subscriptions":["El contacte no permet subscripcions de presència"],"Click to hide these contacts":["Fes clic per amagar aquests contactes"],"Unbookmark this groupchat":["Eliminar grup de llista de grups"],"Click to open this groupchat":["Fes clic per obrir aquest grup"],"Click to toggle the bookmarks list":["Feu clic per a mostrar la llista de grups"],"Bookmarks":["Grups"],"Bookmark this groupchat":["Marca aquest grup"],"Would you like this groupchat to be automatically joined upon startup?":["T\'agradaria entrar automà ticament a aquest grup?"],"The name for this bookmark:":["El nom per a aquest marcador:"],"What should your nickname for this groupchat be?":["Tria el teu à lies:"],"Save":["Desa"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Segur que voleu eliminar \\"%1$s\\"?"],"Unbookmark":["Desmarca"],"Bookmark":["Marca"],"Close":["Tancar"],"OK":["D\'acord"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Descarregar fitxer d\'audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Descarregar fitxer \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Versions del missatge"],"Retry":[""],"Uploading file:":["Pujant fitxer:"],"%1$s has removed this message":["%1$s ha eliminat el missatge"],"This message has been edited":["Aquest missatge ha sigut editat"],"Show more":["Mostrar més"],"No message history available.":["No hi ha historial de missatges disponible."],"Search results":["Cerca resultats"],"Search":["Cerca"],"Insert emojis":["Insereix emoticones"],"Send the message":["Envia el missatge"],"Start a call":["Inicia una trucada"],"Message characters remaining":["Carà cters del missatge restants"],"Choose a file to send":["Tria el fitxer per enviar"],"Click to write as a normal (non-spoiler) message":["Fes clic per a escriure un missatge normal(sense spoiler)"],"Click to write your message as a spoiler":["Fes clic aquà per escriure un missatge amb spoiler"],"The User\'s Profile Image":["Imatge de perfil"],"Trusted":["Acceptada"],"Untrusted":["Denegada"],"OMEMO Fingerprints":["Empremta digital OMEMO"],"No OMEMO-enabled devices found":["No s\'han trobat dispositius amb OMEMO"],"Remove as contact":["Eliminar com a contacte"],"XMPP Address":["Adreça XMPP"],"Email":["Correu electrònic"],"Full Name":["Nom Complet"],"Nickname":["Àlies"],"Refresh":["Actualitzar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s està escrivint"],"%1$s has stopped typing":["%1$s ha deixat d\'escriure"],"%1$s has gone away":["%1$s és absent"],"Remove messages":["Elimina els missatges"],"Close this chat":["Tanca aquest xat"],"Write in the third person":["Escriu en tercera persona"],"Show this menu":["Mostra aquest menú"],"Hidden message":["Missatge amagat"],"Message":["Missatge"],"Optional hint":["Informació opcional"],"You have unread messages":["Tens missatges per llegir"],"Details":["Detalls"],"See more information about this person":["Mostra més informació sobre aquesta persona"],"Close and end this conversation":["Tanca i finalitza aquesta conversa"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tingues en compte que altres clients i serveis XMPP/Jabber potser no permeten eliminar missatges, és a dir, aquest missatge potser no s\'elimina totalment."],"Are you sure you want to retract this message?":["Segur que vols eliminar aquest missatge?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Tens un missatge per a enviar, s\'esborrarà si continues. Està s segur que vols continuar?"],"Are you sure you want to clear the messages from this conversation?":["Segur que voleu esborrar els missatges d\'aquest a conversa?"],"%1$s has gone offline":["%1$s s\'ha desconnectat"],"%1$s is busy":["%1$s està ocupat"],"%1$s is online":["%1$s està en lÃnia"],"Sorry, something went wrong while trying to refresh":["S\'ha produït un error intentant actualitzar"],"Are you sure you want to remove this contact?":["Segur que voleu eliminar aquest contacte?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["S\'ha produït un error intentant eliminar %1$s com a contacte."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per a millorar el rendiment, es recullen les teves dades a aquest navegador. Desmarca aquesta opció si està s utilitzant un ordinador públic o si vols que les teves dades s\'esborrin quan et desconnectes. És important que explÃcitament et desconnectis, d\'altra manera, totes les dades recollides potser no s\'esborrin. Tingues en compte que l\'encriptació OMEMO no està disponible quan utilitzes un dispositiu amb el que no confies."],"This is a trusted device":["Aquest dispositiu és de confiança"],"Password":["Contrasenya"],"Create an account":["Crea un compte"],"Don\'t have a chat account?":["No tens un compte de xat?"],"Log in":["Inicia la sessió"],"Disconnected":["Desconnectat"],"Click here to log in anonymously":["Fes clic aquà per iniciar la sessió de manera anònima"],"Username":["Nom d\'usuari"],"user@domain":["usuari@domini"],"Please enter a valid XMPP address":["Introdueix una adreça XMPP và lida"],"Chat Contacts":["Contactes"],"Toggle chat":["Canvia de xat"],"Click to restore this chat":["Fes clic per restaurar aquest xat"],"Minimized":["Minimitzat"],"Minimize":["Minimitzar"],"Minimize this chat":["Minimitza aquest xat"],"Minimize this groupchat":["Minimitza aquest grup"],"This user is a moderator.":["Aquest usuari és un moderador."],"This user can send messages in this groupchat.":["Aquest usuari pot enviar missatges a aquest grup."],"This user can NOT send messages in this groupchat.":["Aquest usuari NO pot enviar missatges a aquest grup."],"Owner":["Propietari"],"Admin":["Administrador"],"Member":["Membre"],"Moderator":["Moderador"],"Visitor":["Visitant"],"Click to mention %1$s in your message.":["Fes clic per a mencionar a %1$s al teu missatge."],"Participants":["Participants"],"This field is required":["Aquest camp és necessari"],"Join":["Unir-se al grup"],"Enter a new Groupchat":["Entrar a un grup nou"],"name@conference.example.org":["nom@conferencia.exemple.org"],"Groupchat name":["Nom del grup"],"Groupchat address":["Adreça del grup"],"Groupchat id is invalid.":["El ID del grup no és và lid."],"Invite":["Convida"],"Invite someone to this groupchat":["Convida algú a aquest grup"],"user@example.org":["usuari@exemple.org"],"Optional reason for the invitation":["Raó opcional per la invitació"],"Show groupchats":["Mostrar grups"],"Server address":["Adreça del servei"],"Show more information on this groupchat":["Mostra més informació d\'aquest grup"],"Query for Groupchats":["Cercar grups"],"Description:":["Descripció:"],"Groupchat Address (JID):":["Adreça del grup(JID):"],"Participants:":["Participants:"],"Features:":["CaracterÃstiques:"],"Requires authentication":["Cal autenticar-se"],"Hidden":["Amagat"],"Requires an invitation":["Cal tenir una invitació"],"Moderated":["Moderada"],"Non-anonymous":["No és anònima"],"Open":["Obre"],"Permanent":["Grup permanent"],"Public":["Pública"],"Semi-anonymous":["Semi-anònima"],"Temporary":["Temporal"],"Unmoderated":["No moderada"],"conference.example.org":["conferencia@exemple.org"],"No groupchats found":["No s\'ha trobat cap grup"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Els moderadors son usuaris privilegiats que poden canviar el rol d\'altres usuaris, exceptuant els usuaris que tinguen afiliació d\'administrador o de propietari."],"The default role, implies that you can read and write messages.":["El rol per defecte et permet que puguis llegir i escriure missatges."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Els usuaris visitants no tenen permÃs per a escriure missatges a un grup amb moderadors."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["L\'afiliació més alta és la de propietari. Els propietaris poden modificar els rols i les afiliacions de tots els altres usuaris."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["La segona afiliació més alta és la d\'administrador. Els administradors poden modificar els rols i les afiliacions de tots els usuaris excepte la del propietari."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per a denegar el accés a un usuari, li dones l\'afiliació de \\"exiliat\\"."],"Change role":["Canviar rol"],"New Role":["Nou rol"],"Reason":["Raó"],"Change affiliation":["Canviar l\'afiliació"],"New affiliation":["Nova afiliació"],"Affiliation":["Afiliació"],"Moderator Tools":["Eines de moderador"],"No users with that affiliation found.":["No s\'han trobat usuaris amb aquest tipus d\'afiliació."],"No users with that role found.":["No s\'han trobat usuaris amb aquest rol."],"Type here to filter the search results":["Escriu aquà per a filtrar els resultats de recerca"],"Show users":["Mostrar els usuaris"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Els rols s\'assignen per a denegar o permetre\'ls certes habilitats dins d\'un grup. S\'assignen explÃcitament com a part d\'una afiliació. Un rol que no està assignat a una afiliació, només té validesa durant la sessió de l\'usuari."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliació és un dret a llarg termini que normalment implica un cert rol que concedeix privilegis i responsabilitats. Per exemple, els administradors i propietaris tenen automà ticament el rol de moderador."],"Sorry, something went wrong while trying to set the affiliation":["S\'ha produït un error intentant assignar l\'afiliació"],"Affiliation changed":["L\'afiliació ha canviat"],"Role changed":["El rol ha canviat"],"You\'re not allowed to make that change":["No tens permÃs per fer aquest canvi"],"Sorry, something went wrong while trying to set the role":["S\'ha produït un error intentant assignar el rol"],"Topic":["Tema"],"Topic author":["Autor del tema"],"Groupchat address (JID)":["Adreça del grup(JID)"],"Message archiving":["Emmagatzematge de missatges"],"Messages are archived on the server":["Els missatges estan arxivats al servei"],"Description":["Descripció"],"Features":["CaracterÃstiques"],"This groupchat is not publicly searchable":["Aquest grup no es pot buscar públicament"],"This groupchat is restricted to members only":["Aquest grup està limitat a només membres"],"Members only":["Només membres"],"Participants entering this groupchat need to request permission to write":["Els participants que entren aquest grup han de demanar permÃs per a escriure"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Aquest grup no requereix de contrasenya"],"No password required":["No es necessita contrasenya"],"Not anonymous":["No és anònima"],"All other groupchat participants can see your XMPP address":["Tots els participants d\'aquest grup poden veure la teva adreça XMPP"],"Not moderated":["No moderada"],"Participants entering this groupchat can write right away":["Els participants que entren a aquest grup poden escriure sense demanar permÃs"],"Online users":["Usuaris en lÃnea"],"Anyone can join this groupchat":["Qualsevol usuari pot entrar a aquest grup"],"This groupchat requires a password before entry":["Aquest grup requereix una contrasenya abans d\'entrar"],"Password protected":["Protegit per contrasenya"],"Persistent":["Persistent"],"This groupchat persists even if it\'s unoccupied":["Aquest grup no s\'esborra encara que no hi hagi participants"],"Only moderators can see your XMPP address":["Només els moderadors poden veure la teva adreça XMPP"],"This groupchat will disappear once the last person leaves":["Aquest grup s\'eliminarà quan l\'últim participant surti"],"This groupchat is publicly searchable":["Aquest grup es pot buscar públicament"],"Groupchat info for %1$s":["Informació del grup per a %1$s"],"You\'re not allowed to send messages in this room":["No teniu permÃs per enviar missatges a aquesta sala"],"The conversation has moved. Click below to enter.":["Aquesta conversa ha sigut moguda. Fes clic a continuació per entrar."],"This groupchat no longer exists":["Aquest grup ja no existeix"],"Hide the groupchat topic":["Amaga el tema del grup"],"This groupchat is bookmarked":["Aquest grup no està marcat com a favorit"],"Enter groupchat":["Entrar al grup"],"Choose a nickname to enter":["Tria un à lies per a entrar"],"Please choose your nickname":["Tria el teu à lies"],"This groupchat requires a password":["Aquest grup requereix una contrasenya"],"Password: ":["Contrasenya: "],"Submit":["Envia"],"%1$s has entered the groupchat":["%1$s ha entrat al grup"],"%1$s has left the groupchat":["%1$s ha sortit del grup"],"%1$s is now a moderator":["S\'han donat privilegis de moderació a %1$s"],"%1$s is no longer a moderator":["%1$s ja no és un moderador"],"%1$s has been given a voice":["%1$s ja pot participar a aquest grup"],"%1$s has been muted":["S\'ha silenciat a %1$s"],"%1$s and %2$s":["%1$s i %2$s"],"%1$s are typing":["%1$s estan escrivint"],"%1$s have stopped typing":["%1$s han deixat d\'escriure"],"%1$s have gone away":["%1$s no està disponible"],"%1$s have entered the groupchat":["%1$s han entrat al grup"],"%1$s have left the groupchat":["%1$s han sortit del grup"],"Change user\'s affiliation to admin":["Canvia l\'afiliació de l\'usuari a administrador"],"Ban user by changing their affiliation to outcast":["Denega l\'accés a l\'usuari canviant l\'afiliació a exiliat"],"Clear the chat area":["Neteja l\'à rea de xat"],"Close this groupchat":["Tancar aquest grup"],"Change user role to participant":["Canvia el rol de l\'usuari a participant"],"Remove this groupchat":["Esborrar aquest grup"],"Kick user from groupchat":["Expulsa l\'usuari del grup"],"Write in 3rd person":["Escriu en tercera persona"],"Grant membership to a user":["Atorga una afiliació a un usuari"],"Opens up the moderator tools GUI":["Obre les eines de moderador GUI"],"Remove user\'s ability to post messages":["Elimina la capacitat de l\'usuari de publicar missatges"],"Change your nickname":["Canvia el teu à lies"],"Grant moderator role to user":["Atorga el rol de moderador a l\'usuari"],"Grant ownership of this groupchat":["Atorga la propietat d\'aquest grup"],"Register your nickname":["Registra el teu à lies"],"Revoke the user\'s current affiliation":["Anul·la l\'afliació del usuari"],"Set groupchat subject":["Defineix un tema per al grup"],"Set groupchat subject (alias for /subject)":["Defineix el tema del grup (à lies per a / tema)"],"Allow muted user to post messages":["Permet que un usuari silenciat publiqui missatges"],"You are about to retract this message.":["Està s apunt d\'eliminar aquest missatge."],"You may optionally include a message, explaining the reason for the retraction.":["Teniu l\'opció d\'incloure un missatge per explicar el motiu de l\'eliminació."],"Message Retraction":["Retracció del missatge"],"Optional reason":["Raó opcional"],"Sorry, you\'re not allowed to retract this message":["No tens permÃs per a retractar-te d\'aquest missatge"],"A timeout occurred while trying to retract the message":["El temps d\'espera a expirat intentant retractar el missatge"],"Sorry, you\'re not allowed to retract this message.":["No tens permÃs per a retractar aquest missatge."],"Show more information about this groupchat":["Mostra més informació sobre aquest grup"],"Configure":["Configurar"],"Configure this groupchat":["Configurar aquest grup"],"Invite someone to join this groupchat":["Convidar algú a unir-se a aquest grup"],"Show topic":["Mostrar tema"],"Hide topic":["Amagar tema"],"Show the topic message in the heading":["Mostrar el missatge del tema a la capçalera"],"Hide the topic in the heading":["Amaga el tema a la capçalera"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar aquest grup"],"Destroy":["Destruir"],"Leave":["Sortir"],"Leave and close this groupchat":["Sortir i tancar aquest grup"],"Are you sure you want to leave this groupchat?":["Segur que vols sortir d\'aquest grup?"],"Hide the list of participants":["Amaga la llista de participants"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibit: no tens el rol necessari per a fer això."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibit: no tens l\'afiliació necessà ria per a fer això."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error: l\'ordre %1$s accepta dos parà metres, l\'à lies de l\'usuari i una raó opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error: no s\'ha pogut trobar un participant del grup basat amb els teus parà metres"],"Error: found multiple groupchat participant based on your arguments":["Error: s\'han trobat diversos participants del grup basats en els teus parà metres"],"Sorry, an error happened while running the command.":["S\'ha produït un error intentant executar l\'ordre."],"Check your browser\'s developer console for details.":["Revisa la consola del desenvolupador del navegador per a detalls."],"Are you sure you want to destroy this groupchat?":["Segur que vols eliminar aquest grup?"],"name@example.org":["nom@exemple.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["El vostre à lies és: %1$s"],"Error: invalid number of arguments":["Error: nombre de parà metres invalid"],"This action was done by %1$s.":["Aquesta acció l\'ha fet %1$s."],"The reason given is: \\"%1$s\\".":["El motiu indicat és: \\"%1$s\\"."],"Groupchats":["Grups"],"Add a new groupchat":["Afegeix un nou grup"],"Query for groupchats":["Demana els grups"],"Sorry, an error occurred while trying to submit the config form.":["S\'ha produït un error intentant desar el formulari de configuració."],"Close these announcements":["Tanca aquests anuncis"],"Announcements":["Anuncis"],"Click to open this server message":["Fes clic per obrir aquest missatge del servei"],"Notification from %1$s":["Notificació de %1$s"],"%1$s says":["%1$s diu"],"has gone offline":["s\'ha desconnectat"],"has gone away":["ha marxat"],"is busy":["està ocupat"],"has come online":["s\'ha connectat"],"wants to be your contact":["vol ser el teu contacte"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Informació"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s codi obert %2$s client de xat XMPP facilitat per %3$s Opkode%2$s"],"%1$s Translate %2$s it into your own language":["%1$s Tradueix %2$s al teu idioma"],"Log out":["Tanca la sessió"],"Click to change your chat status":["Fes clic per canviar l\'estat del xat"],"Show details about this chat client":["Mostra més informació sobre aquest client de xat"],"Your avatar image":["La imatge del teu avatar"],"Checkbox for selecting the following fingerprint":["Casella per a seleccionar la següent empremta digital"],"Device without a fingerprint":["Verifica sense empremtes"],"Other OMEMO-enabled devices":["Altres dispositius amb OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Marca la casella per a seleccionar empremtes per als altres dispositius OMEMO"],"Remove checked devices and close":["Esborrar els dispositius marcats i tancar"],"Select all":["Seleccionar-ho tot"],"This device\'s OMEMO fingerprint":["L\'empremta OMEMO d\'aquest dispositiu"],"Generate new keys and fingerprint":["Generar noves claus i empremtes"],"Your Profile":["El Teu Perfil"],"XMPP Address (JID)":["Adreça XMPP (JID)"],"Save and close":["Guardar i tancar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilitza comes per a separar múltiples rols. Els teus rols es mostren al costat del teu nom als teus missatges."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["S\'ha produït un error intentant guardar les dades del teu perfil."],"You can check your browser\'s developer console for any error output.":["Pots revisar la consola del teu navegador per a qualsevol error resultat."],"Away":["Absent"],"Busy":["Ocupat"],"Custom status":["Estat personalitzat"],"Offline":["Desconnectat"],"Online":["En lÃnia"],"Away for long":["Absent durant un llarg termini"],"Change chat status":["Canviar el teu estat de xat"],"Personal status message":["Missatge d\'estat personal"],"I am %1$s":["Estic %1$s"],"Are you sure you want to log out?":["Segur que vols desconnectar-te?"],"online":["en lÃnia"],"busy":["ocupat"],"away for long":["absent durant una estona"],"away":["absent"],"offline":["desconnectat"],"Sorry, could not decrypt a received OMEMO message due to an error.":["No s\'ha pogut desencriptar aquest missatge OMEMO degut a un error."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s sembla que no té un client que permet OMEMO. Xat encriptat no serà possible a partir d\'ara."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["No es pot utilitzar encriptació end-to-end perquè %1$s utilitza un client que no utilitza OMEMO."],"Messages are being sent in plaintext":["Els missatges s\'estan enviant en text simple"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["No és possible enviar missatges encriptats perquè %1$s et demana que estigues subscrit a la seva presencia per a poder veure la seva informació OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["No s\'han pogut enviar missatges encriptats perquè el servei %1$s no s\'ha trobat"],"Unable to send an encrypted message due to an unexpected error.":["No es poden veure els missatges encriptats degut a un error."],"Sorry, an error occurred while trying to remove the devices.":["S\'ha produït un error intentant eliminar els dispositius."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Està s segur que vols generar claus OMEMO noves? Això esborrara les teves claus antigues i tots els missatges encriptats i ja no es podran desencriptar a aquest dispositiu."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["No s\'han trobat dispositius als que es puguin envair missatges encriptats OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Aquest és un missatge encriptat amb OMEMO, el qual el teu client no permet. Troba més informació a https://conversations.im/omemo"]," e.g. conversejs.org":[" p. ex. conversejs.org"],"Fetch registration form":["Obtingues un formulari de registre"],"Tip: A list of public XMPP providers is available":["Consell: hi ha disponible una llista de proveïdors XMPP públics"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["No és possible connectar-se al proveïdor que has triat."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["El proveïdor indicat no admet el registre del compte. Proveu-ho amb un altre proveïdor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ha passat alguna cosa mentre s\'establia la connexió amb \\"%1$s\\". Segur que existeix?"],"Now logging you in":["S\'està iniciant la vostra sessió"],"Registered successfully":["Registre correcte"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["El proveïdor ha rebutjat l\'intent de registre. Comproveu que els valors que heu introduït siguin correctes."],"Leave this groupchat":["Sortir del grup"],"Click to toggle the list of open groupchats":["Fes clic per obrir la llista de grups"],"Open Groupchats":["Grups oberts"],"Are you sure you want to leave the groupchat %1$s?":["Segur que vols sortir del grup %1$s?"],"Add":["Afegeix"],"Add a Contact":["Afegeix un Contacte"],"This contact is busy":["Aquest contacte està ocupat"],"This contact is online":["Aquest contacte està en lÃnia"],"This contact is offline":["Aquest contacte està desconnectat"],"This contact is unavailable":["Aquest contacte no està disponible"],"This contact is away for an extended period":["Aquest contacte està absent durant un perÃode prolongat"],"This contact is away":["Aquest contacte està absent"],"Contact name":["Nom del contacte"],"Optional nickname":["Àlies opcional"],"Sorry, could not find a contact with that name":["No s\'ha trobat un contacte amb aquest nom"],"This contact has already been added":["Aquest contacte ja l\'has afegit"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar per nom de contacte"],"Filter by group name":["Filtrar per nom de grup"],"Filter by status":["Filtrar per estat"],"Any":["Qualsevol"],"Unread":["No llegits"],"Chatty":["Xerraire"],"Extended Away":["No disponible durant llarg temps"],"Click to remove %1$s as a contact":["Feu clic per eliminar %1$s com a contacte"],"Click to accept the contact request from %1$s":["Feu clic per acceptar aquesta sol·licitud de contacte de %1$s"],"Click to decline the contact request from %1$s":["Feu clic per rebutjar aquesta sol·licitud de contacte de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Feu clic per conversar amb %1$s (adreça XMPP:%2$s)"],"Are you sure you want to decline this contact request?":["Segur que voleu rebutjar aquesta sol·licitud de contacte?"],"Contacts":["Contactes"],"Add a contact":["Afegeix un contacte"],"Re-sync your contacts":["Tornar a sincronitzar els contactes"]}}}')}}]); //# sourceMappingURL=ca-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/cs-LC_MESSAGES-converse-po.js b/src/conversejs/locales/cs-LC_MESSAGES-converse-po.js index 87517ccd6a3cbe7723f741f4a752e7c039405bf2..faf014c1275c36ed4287eb9b5e3dcdb8d96d1d22 100644 --- a/src/conversejs/locales/cs-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/cs-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{423:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;","lang":"cs"},"Create your account":["VytvoÅ™it svůj úÄet"],"Please enter the XMPP provider to register with:":["ProsÃm zadejte poskytovatele XMPP, se kterým se chcete registrovat:"],"Already have a chat account?":["Již máte chatovacà úÄet?"],"Log in here":["PÅ™ihlaste se zde"],"Account Registration:":["Registrace úÄtu:"],"Register":["Registrovat"],"Choose a different provider":["Vybrat jiného poskytovatele"],"Hold tight, we\'re fetching the registration form…":["Vydržte, shánÃte registraÄnà formulář…"],"Cancel":["ZruÅ¡it"],"The connection has dropped, attempting to reconnect.":["Spojenà bylo pÅ™eruÅ¡eno, pokouÅ¡Ãme se znovu spojit."],"An error occurred while connecting to the chat server.":["PÅ™i pÅ™ipojovánà na chatovacà server se vyskytla chyba."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Omlouváme se, nemohli jsme se spojit s XMPP hostem s doménou: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP server nenabÃdl podporovaný autentikaÄnà mechanismus"],"Sorry, could not determine upload URL.":["Omlouváme se, nelze urÄit URL nahránÃ."],"Sorry, could not determine file upload URL.":["Omlouváme se, nelze urÄit URL nahraného souboru."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Omlouváme se, nelze úspěšnÄ› nahrát váš soubor. OdpovÄ›Ä vaÅ¡eho serveru: „%1$s“"],"Sorry, could not succesfully upload your file.":["Omlouváme se, nelze úspěšnÄ› nahrát váš soubor."],"Sorry, looks like file upload is not supported by your server.":["Omlouváme se, vypadá to, že váš server nepodporuje nahrávánà souborů."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Velikost vaÅ¡eho serveru, %1$s, pÅ™esahuje maximum povolené vaÅ¡Ãm serverem, což je %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Tento skupinový chat nenà anonymnÃ"],"This groupchat now shows unavailable members":["Tento skupinový chat nynà zobrazuje nedostupné Äleny"],"This groupchat does not show unavailable members":["Tento skupinový chat nezobrazuje nedostupné Äleny"],"The groupchat configuration has changed":["Nastavenà skupinového chatu se zmÄ›nila"],"This groupchat is now no longer anonymous":["Tento skupinový chat již nenà anonymnÃ"],"This groupchat is now semi-anonymous":["Tento skupinový chat je nynà zÄásti anonymnÃ"],"This groupchat is now fully-anonymous":["Tento skupinový chat je nynà zcela anonymnÃ"],"A new groupchat has been created":["Byl vytvoÅ™en nový skupinový chat"],"Your nickname has been automatically set to %1$s":["VaÅ¡e pÅ™ezdÃvka byla automaticky nastavena na %1$s"],"Your nickname has been changed to %1$s":["VaÅ¡e pÅ™ezdÃvka byla zmÄ›nÄ›na na %1$s"],"You have been banned from this groupchat":["Byl/a jste na tomto skupinovém chatu zakázán/a"],"You have been kicked from this groupchat":["Byl/a jste z tohoto skupinového chatu vyhozen/a"],"You have been removed from this groupchat because of an affiliation change":["Byl/a jste z tohoto skupinového chatu odebrán/a kvůli zmÄ›nÄ› pÅ™ÃsluÅ¡nosti"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Byl/a jste z tohoto skupinového chatu odstranÄ›n/a, protože se skupinový chat zmÄ›nil na pouze pro Äleny a vy nejste Älenem"],"You have been removed from this groupchat because the service hosting it is being shut down":["Byl/a jste z tohoto skupinového chatu odstranÄ›n/a, protože se služba, která jej hostuje, vypÃná"],"You\'re not allowed to register yourself in this groupchat.":["Nemáte povolenà se registrovat v tomto skupinovém chatu."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nemáte povolenà se registrovat v tomto skupinovém chatu, neboÅ¥ je pouze pro Äleny."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nelze registrovat vaÅ¡i pÅ™ezdÃvku v tomto skupinovém chatu, protože nepodporuje registraci."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nelze registrovat vaÅ¡i pÅ™ezdÃvku v tomto skupinovém chatu, protože je poskytnuta neplatná forma dat."],"Topic set by %1$s":["Téma nastavené uživatelem %1$s"],"Topic cleared by %1$s":["Téma potvrzené uživatelem %1$s"],"%1$s has been banned":["%1$s byl/a zakázán/a"],"%1$s\'s nickname has changed":["PÅ™ezdÃvka uživatele %1$s se zmÄ›nila"],"%1$s has been kicked out":["%1$s byl/a vyhozen/a"],"%1$s has been removed because of an affiliation change":["%1$s byl/a odstranÄ›n/a kvůli zmÄ›nÄ› pÅ™ÃsluÅ¡nosti"],"%1$s has been removed for not being a member":["%1$s byl/a odstranÄ›na, protože nenà Älenem"],"%1$s is no longer an admin of this groupchat":["%1$s již nenà administrátorem tohoto skupinového chatu"],"%1$s is no longer an owner of this groupchat":["%1$s již nenà vlastnÃkem tohoto skupinového chatu"],"%1$s is no longer banned from this groupchat":["%1$s již nenà na tomto skupinovém chatu zakázán/a"],"%1$s is now an %2$s of this groupchat":["%1$s je nynà %2$s tohoto skupinového chatu"],"The nickname you chose is reserved or currently in use, please choose a different one.":["PÅ™ezdÃvka, kterou jste si vybral/a, je rezervována Äi aktuálnÄ› použÃvána, prosÃm vyberte si jinou."],"You are not on the member list of this groupchat.":["Nejste na seznamu Älenů tohoto skupinového chatu."],"You have been banned from this groupchat.":["Byl/a jste na tomto skupinovém chatu zakázán/a."],"You are not allowed to create new groupchats.":["Nemáte povolenà vytvářet nové skupinové chaty."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["VaÅ¡e pÅ™ezdÃvka nevyhovuje zásadám tohoto skupinového chatu."],"This groupchat does not (yet) exist.":["Tento skupinový chat (jeÅ¡tÄ›) neexistuje."],"This groupchat has reached its maximum number of participants.":["Tento skupinový chat dosáhl svého maximálnÃho poÄtu úÄastnÃků."],"Remote server not found":["Vzdálený server nenalezen"],"The explanation given is: \\"%1$s\\".":["Dané vysvÄ›tlenà je: „%1$s“."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vás pozval/a do skupinového chatu: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vás pozval/a do skupinového chatu: %2$s, a zanechal/a následujÃcà důvod: „%3$s“"],"Error":["Chyba"],"Sorry, something went wrong while trying to save your bookmark.":["Omlouváme se, pÅ™i pokusu o uloženà vaÅ¡Ã záložky se nÄ›co pokazilo."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Moje kontakty"],"Pending contacts":["ÄŒekajÃcà kontakty"],"Contact requests":["Požadavky o kontakt"],"Ungrouped":["Neseskupené"],"Sorry, there was an error while trying to add %1$s as a contact.":["Omlouváme se pÅ™i pokusu pÅ™idat uživatele %1$s do kontaktů se stala chyba."],"This client does not allow presence subscriptions":["Tento klient nedovoluje presenÄnà odbÄ›ry"],"Click to hide these contacts":["KliknutÃm skryjete tyto kontakty"],"Unbookmark this groupchat":["Odstranit tento skupinový chat ze záložek"],"Click to open this groupchat":["KliknutÃm otevÅ™ete tento skupinový chat"],"Click to toggle the bookmarks list":["KliknutÃm otevÅ™ete/zavÅ™ete seznam záložek"],"Bookmarks":["Záložky"],"Bookmark this groupchat":["PÅ™idat tento skupinový chat do záložek"],"Would you like this groupchat to be automatically joined upon startup?":["Chcete se k tomuto skupinovému chatu automaticky pÅ™ipojit po startu?"],"The name for this bookmark:":["Název pro tuto záložku:"],"What should your nickname for this groupchat be?":["Jaká bude vaÅ¡e pÅ™ezdÃvka pro tento skupinový chat?"],"Save":["Uložit"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Opravdu chcete odstranit záložku „%1$s“?"],"Close":["ZavÅ™Ãt"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Stáhnout audiosoubor „%1$s“"],"Download file \\"%1$s\\"":["Stáhnout soubor „%1$s“"],"Edit":[""],"Retract":[""],"Message versions":["Verze zprávy"],"Retry":[""],"Uploading file:":["Nahrává se soubor:"],"This message has been edited":["Tahle zpráva byla upravena"],"Show more":["Zobrazit vÃce"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Vložit emoji"],"Start a call":["ZaÄÃt hovor"],"Choose a file to send":["Vyberte soubor k odeslánÃ"],"Click to write as a normal (non-spoiler) message":["KliknutÃm napÃÅ¡ete jako normálnà zprávu (bez spoilerů)"],"Click to write your message as a spoiler":["KliknutÃm napÃÅ¡ete svou zprávu jako spoiler"],"The User\'s Profile Image":["Profilový obrázek uživatele"],"Trusted":["DůvÄ›ryhodné"],"Untrusted":["NedůvÄ›ryhodné"],"OMEMO Fingerprints":["Otisky OMEMO"],"Remove as contact":["Odstranit z kontaktů"],"XMPP Address":["XMPP adresa"],"Email":["E-mail"],"Full Name":["Celé jméno"],"Nickname":["PÅ™ezdÃvka"],"Refresh":["Obnovit"],"Role":["Role"],"URL":["URL"],"%1$s is typing":["%1$s pÃÅ¡e"],"%1$s has stopped typing":["%1$s pÅ™estal/a psát"],"%1$s has gone away":["%1$s odeÅ¡el/la pryÄ"],"Remove messages":["Odstranit zprávy"],"Write in the third person":["Psát ve tÅ™età osobÄ›"],"Show this menu":["Zobrazit tohle menu"],"Hidden message":["Skrytá zpráva"],"Message":["Zpráva"],"Optional hint":["Volitelná nápovÄ›da"],"You have unread messages":["Máte nepÅ™eÄtené zprávy"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Opravdu chcete vymazat zprávy z téhle konverzace?"],"%1$s has gone offline":["%1$s se odpojil/a"],"%1$s is busy":["%1$s je zaneprázdnÄ›n/a"],"%1$s is online":["%1$s je pÅ™ipojen/a"],"Sorry, something went wrong while trying to refresh":["Omlouváme se, pÅ™i pokusu o obnovenà se nÄ›co pokazilo"],"Are you sure you want to remove this contact?":["Opravdu chcete odstranit tento kontakt?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Omlouváme se, pÅ™i odstraňovánà uživatele %1$s z kontaktů se vyskytla chyba."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["K vylepÅ¡enà výkonu ukládáme vaÅ¡e data do mezipamÄ›ti tohoto prohlÞeÄe. Je-li tohle veÅ™ejný poÄÃtaÄ, nebo chcete-li, aby byla vaÅ¡e data po odhlášenà smazána, odÅ¡krtnÄ›te toto pole. Je důležité, abyste se výslovnÄ› odhlásil/a, jinak nemusà být smazána vÅ¡echna data v mezipamÄ›ti. MÄ›jte prosÃm na vÄ›domÃ, že pokud použÃváte nedůvÄ›ryhodné zaÅ™ÃzenÃ, NENà podporováno Å¡ifrovánà OMEMO."],"This is a trusted device":["Tohle je důvÄ›ryhodné zaÅ™ÃzenÃ"],"Create an account":["VytvoÅ™te si úÄet"],"Don\'t have a chat account?":["Nemáte chatovacà úÄet?"],"Log in":["PÅ™ihlásit"],"Disconnected":[""],"Click here to log in anonymously":["KliknutÃm sem se pÅ™ihlásÃte anonymnÄ›"],"Username":["Uživatelské jméno"],"user@domain":["uživatel@doména"],"Please enter a valid XMPP address":["ProsÃm zadejte platnou XMPP adresu"],"Chat Contacts":["Chatové kontakty"],"Toggle chat":["OtevÅ™Ãt chat"],"Click to restore this chat":["KliknutÃm obnovÃte tento chat"],"Minimized":["ZmenÅ¡eno"],"This field is required":["Toto pole je vyžadováno"],"Join":["PÅ™idat se"],"Enter a new Groupchat":["Vstoupit do nového skupinového chatu"],"name@conference.example.org":["jmeno@conference.priklad.cz"],"Groupchat name":["Název skupinového chatu"],"Groupchat address":["Adresa skupinového chatu"],"Invite":["Pozvat"],"Show groupchats":["Zobrazit skupinové chaty"],"Server address":["Adresa serveru"],"Show more information on this groupchat":["Zobrazit vÃce informacà o tomto skupinovém chatu"],"Query for Groupchats":["Dotaz pro skupinové chaty"],"Description:":["Popis:"],"Groupchat Address (JID):":["Adresa skupinového chatu (JID):"],"Participants:":["ÚÄastnÃci:"],"Features:":["Vlastnosti:"],"Requires authentication":["Vyžaduje ověřenÃ"],"Hidden":["Skryté"],"Requires an invitation":["Vyžaduje pozvánÃ"],"Moderated":["Moderováno"],"Non-anonymous":["NeanonymnÃ"],"Open":["OtevÅ™ené"],"Permanent":["Trvalé"],"Public":["VeÅ™ejné"],"Semi-anonymous":["ZÄásti anonymnÃ"],"Temporary":["DoÄasné"],"Unmoderated":["Nemoderováno"],"conference.example.org":["conference.priklad.cz"],"No groupchats found":["Nenalezeny žádné skupinové chaty"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Téma"],"Topic author":["Autor tématu"],"Groupchat address (JID)":["Název skupinového chatu (JID)"],"Message archiving":["Archivace zpráv"],"Messages are archived on the server":["Na tomto serveru jsou archivovány zprávy"],"Description":["Popis"],"Features":["Vlastnosti"],"This groupchat is not publicly searchable":["Tento skupinový chat nenà veÅ™ejnÄ› vyhledávatelný"],"This groupchat is restricted to members only":["Tento skupinový chat je omezen pouze na Äleny"],"Members only":["Pouze pro Äleny"],"Participants entering this groupchat need to request permission to write":["ÚÄastnÃci vstupujÃcà do tohoto skupinového chatu si musà vyžádat povolenà psát"],"Name":["Jméno"],"This groupchat does not require a password upon entry":["Tento skupinový chat nevyžaduje pÅ™i vstupu heslo"],"No password required":["Heslo nevyžadováno"],"Not anonymous":["Nenà anonymnÃ"],"All other groupchat participants can see your XMPP address":["VÅ¡ichni ostatnà úÄastnÃci skupinového chatu mohou vidÄ›t vaÅ¡i XMPP adresu"],"Not moderated":["Nenà moderován"],"Participants entering this groupchat can write right away":["ÚÄastnÃci vstupujÃcà do tohoto skupinového chatu mohou psát ihned"],"Online users":["PÅ™ipojenà uživatelé"],"Anyone can join this groupchat":["Kdokoliv se k tomuto skupinovému chatu může pÅ™ipojit"],"This groupchat requires a password before entry":["Tento skupinový chat vyžaduje pÅ™ed vstupem heslo"],"Password protected":["OchránÄ›no heslem"],"Persistent":["Trvalý"],"This groupchat persists even if it\'s unoccupied":["Tento skupinový chat pÅ™etrvává, i když na nÄ›m nikdo nenÃ"],"Only moderators can see your XMPP address":["Pouze moderátoÅ™i mohou vidÄ›t vaÅ¡i XMPP adresu"],"This groupchat will disappear once the last person leaves":["Tento skupinový chat zmizÃ, jakmile poslednà osoba odejde"],"This groupchat is publicly searchable":["Tento skupinový chat je veÅ™ejnÄ› vyhledávatelný"],"Groupchat info for %1$s":["Informace o skupinovém chatu %1$s"],"The conversation has moved. Click below to enter.":["Konverzace se pÅ™esunula. KliknutÃm nÞe do nà vstoupÃte."],"This groupchat no longer exists":["Tento skupinový chat již neexistuje"],"Enter groupchat":["Vstoupit do skupinového chatu"],"Please choose your nickname":["ProsÃm vyberte si pÅ™ezdÃvku"],"This groupchat requires a password":["Tento skupinový chat vyžaduje heslo"],"Password: ":["Heslo: "],"Submit":["Odeslat"],"This user is a moderator.":["Tento uživatel je moderátorem."],"This user can send messages in this groupchat.":["Tento uživatel může posÃlat zprávy v tomto skupinovém chatu."],"This user can NOT send messages in this groupchat.":["Tento uživatel NEMŮŽE posÃlat zprávy v tomto skupinovém chatu."],"Owner":["VlastnÃk"],"Admin":["Administrátor"],"Member":["ÄŒlen"],"Moderator":["Moderátor"],"Visitor":["NávÅ¡tÄ›vnÃk"],"Click to mention %1$s in your message.":["KliknutÃm zmÃnÃte uživatele %1$s ve své zprávÄ›."],"Participants":["ÚÄastnÃci"],"%1$s has entered the groupchat":["%1$s vstoupil/a do skupinového chatu"],"%1$s has left the groupchat":["%1$s odeÅ¡el/la ze skupinového chatu"],"%1$s is now a moderator":["%1$s je nynà moderátorem"],"%1$s is no longer a moderator":["%1$s již nenà moderátorem"],"%1$s has been muted":["%1$s byl/a utiÅ¡en/a"],"Change user\'s affiliation to admin":["ZmÄ›nit pÅ™ÃsluÅ¡nost uživatele na administrátora"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ZmÄ›nit roli uživatele na úÄastnÃka"],"Remove this groupchat":["Odstranit tento skupinový chat"],"Kick user from groupchat":["Vyhodit uživatele ze skupinového chatu"],"Write in 3rd person":["Psát ve 3. osobÄ›"],"Grant membership to a user":["Poskytnout uživateli ÄlenstvÃ"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Odstranit schopnost uživatele posÃlat zprávy"],"Change your nickname":["ZmÄ›nit svou pÅ™ezdÃvku"],"Grant moderator role to user":["Poskytnout uživateli roli moderátora"],"Grant ownership of this groupchat":["Poskytnout vlastnictvà tohoto skupinového chatu"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Nastavit pÅ™edmÄ›t skupinového chatu"],"Set groupchat subject (alias for /subject)":["Nastavit pÅ™edmÄ›t skupinového chatu (alias pro /subject)"],"Allow muted user to post messages":["Povolit utiÅ¡eným uživatelům posÃlat zprávy"],"Configure":[""],"Configure this groupchat":["Nastavit tento skupinový chat"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Skrýt seznam úÄastnÃků"],"Forbidden: you do not have the necessary role in order to do that.":["Zakázáno: k této akci nemáte potÅ™ebnou roli."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Zakázáno: k této akci nemáte potÅ™ebnou pÅ™ÃsluÅ¡nost."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Chyba: pÅ™Ãkaz „%1$s“ bere dva argumenty, pÅ™ezdÃvku uživatele a volitelnÄ› důvod."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["jmeno@priklad.cz"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Chyba: neplatný poÄet argumentů"],"This action was done by %1$s.":["Tuto akci vykonal/a %1$s."],"The reason given is: \\"%1$s\\".":["Daný důvod je: „%1$s“."],"Groupchats":["Skupinové chaty"],"Add a new groupchat":["PÅ™idat nový skupinový chat"],"Query for groupchats":["Dotaz pro skupinové chaty"],"Announcements":[""],"Notification from %1$s":["Oznámenà od uživatele %1$s"],"%1$s says":["%1$s Å™Ãká"],"has gone offline":["se odpojil/a"],"has gone away":["odeÅ¡el/la pryÄ"],"is busy":["je zaneprázdnÄ›n/a"],"has come online":["se pÅ™ipojil/a"],"wants to be your contact":["chce být vaÅ¡Ãm kontaktem"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["O nás"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s OtevÅ™ený %2$s chatovacà klient pro XMPP vám pÅ™inášà %3$s Opkode%2$s"],"%1$s Translate %2$s it into your own language":["%1$s PÅ™eložte %2$s jej do svého vlastnÃho jazyka"],"Log out":["Odhlásit"],"Click to change your chat status":["KliknutÃm zmÄ›nÃte svůj chatový stav"],"Show details about this chat client":["Zobrazit detaily o tomto chatovacÃm klientovi"],"Your avatar image":["Váš avatarový obrázek"],"Checkbox for selecting the following fingerprint":["ZaÅ¡krtnutÃm polÃÄka vyberete následujÃcà otisk"],"Device without a fingerprint":["ZaÅ™Ãzenà bez otisku"],"Other OMEMO-enabled devices":["DalÅ¡Ã zaÅ™Ãzenà s podporou OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["ZaÅ¡krtnutÃm polÃÄek vyberete otisky vÅ¡ech ostatnÃch zaÅ™Ãzenà OMEMO"],"Remove checked devices and close":["Odstranit zaÅ¡krtnutá zaÅ™Ãzenà a zavÅ™Ãt"],"Select all":["Vybrat vÅ¡e"],"This device\'s OMEMO fingerprint":["Otisk OMEMO tohoto zaÅ™ÃzenÃ"],"Generate new keys and fingerprint":["Generovat nové klÃÄe a otisk"],"Your Profile":["Váš profil"],"XMPP Address (JID)":["XMPP adresa (JID)"],"Save and close":["Uložit a zavÅ™Ãt"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["OddÄ›lujte vÃce rolà Äárkami. VaÅ¡e role jsou zobrazeny vedle vaÅ¡eho jména na vaÅ¡ich chatových zprávách."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Omlouváme se, pÅ™i pokusu o uloženà vaÅ¡ich profilových dat se stala chyba."],"You can check your browser\'s developer console for any error output.":["Můžete zkontrolovat vývojářskou konzoli vaÅ¡eho prohlÞeÄe pro jakýkoliv chybový výstup."],"Away":["PryÄ"],"Busy":["ZaneprázdnÄ›n/a"],"Custom status":["Vlastnà stav"],"Offline":["Odpojen/a"],"Online":["PÅ™ipojen/a"],"Away for long":["PryÄ na dlouho"],"Change chat status":["ZmÄ›nit chatový stav"],"Personal status message":["Osobnà stavová zpráva"],"I am %1$s":["Jsem %1$s"],"Are you sure you want to log out?":["Opravdu se chcete odhlásit?"],"online":["pÅ™ipojen/a"],"busy":["zaneprázdnÄ›n/a"],"away for long":["pryÄ na dlouho"],"away":["pryÄ"],"offline":["odpojen/a"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Omlouváme se, kvůli chybÄ› nelze deÅ¡ifrovat obdrženou právu OMEMO."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s nejspÃÅ¡ nemá klienta podporujÃcÃho OMEMO. Å ifrované chatovánà nebude v tomto skupinovém chatu již možné."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Nelze použÃt Å¡ifrovánà end-to-end, protože %1$s použÃvá klienta, který nepodporuje OMEMO."],"Messages are being sent in plaintext":["Zprávy jsou odesÃlány v prostém textu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Omlouváme se, pÅ™i pokusu o odstranÄ›nà zaÅ™Ãzenà se vyskytla chyba."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Opravdu chcete generovat nové klÃÄe OMEMO? TÃmto budou odstranÄ›ny vaÅ¡e staré klÃÄe a vÅ¡echny dÅ™Ãve zaÅ¡ifrované zprávy již nepůjde na tomto zaÅ™Ãzenà deÅ¡ifrovat."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Omlouváme se, nemohli jsme odeslat Å¡ifrovanou zprávu, protože %1$s požaduje, abyste mÄ›l/a jeho/jejà presenÄnà odbÄ›r, pokud chcete vidÄ›t jeho/jejà informace OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Omlouváme se, nemohli jsme odeslat Å¡ifrovanou zprávu, protože vzdálený server pro uživatele %1$s nemohl být nalezen"],"Unable to send an encrypted message due to an unexpected error.":["Kvůli neoÄekávané chybÄ› nelze odeslat zprávu."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tohle je zpráva zaÅ¡ifrovaná pomocà OMEMO, které, jak se zdá, váš klient nepodporuje. VÃce informacà najdete na https://conversations.im/omemo"]," e.g. conversejs.org":[" napÅ™. conversejs.org"],"Fetch registration form":["Sehnat registraÄnà formulář"],"Tip: A list of public XMPP providers is available":["Tip: Seznam veÅ™ejných poskytovatelů XMPP je dostupný"],"here":["zde"],"Sorry, we\'re unable to connect to your chosen provider.":["Omlouváme se, nelze se pÅ™ipojit k vaÅ¡emu zvolenému poskytovateli."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Omlouváme se, daný poskytovatel nepodporuje in-band registraci úÄtu. ProsÃm zkuste to s jiným poskytovatelem."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["PÅ™i navazovánà spojenà s „%1$s“ se nÄ›co pokazilo. Jste si jistý/á, že existuje?"],"Now logging you in":["Nynà vás pÅ™ihlaÅ¡ujeme"],"Registered successfully":["ÚspěšnÄ› zaregistrováno"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Poskytovatel odmÃtl váš pokus o registraci. ProsÃm zkontrolujte hodnoty, které jste zadal/a, kvůli správnosti."],"Leave this groupchat":["OdejÃt z tohoto skupinového chatu"],"Click to toggle the list of open groupchats":["KliknutÃm otevÅ™ete/zavÅ™ete seznam otevÅ™ených skupinových chatů"],"Open Groupchats":["OtevÅ™ené skupinové chaty"],"Are you sure you want to leave the groupchat %1$s?":["Opravdu chcete odejÃt ze skupinového chatu %1$s?"],"Add":["PÅ™idat"],"Add a Contact":["PÅ™idat kontakt"],"This contact is busy":["Tento kontakt je zaneprázdnÄ›n"],"This contact is online":["Tento kontakt je pÅ™ipojen"],"This contact is offline":["Tento kontakt je odpojen"],"This contact is unavailable":["Tento kontakt je nedostupný"],"This contact is away for an extended period":["Tento kontakt je na delÅ¡Ã dobu pryÄ"],"This contact is away":["Tento kontakt je pryÄ"],"Contact name":["Jméno kontaktu"],"Optional nickname":["Volitelná pÅ™ezdÃvka"],"Sorry, could not find a contact with that name":["Omlouváme se, nelze najÃt kontakt s tÃmto jménem"],"This contact has already been added":["Tento kontakt byl již pÅ™idán"],"Filter":["Filtrovat"],"Filter by contact name":["Filtrovat dle jména kontaktu"],"Filter by group name":["Filtrovat dle názvu skupiny"],"Filter by status":["Filtrovat dle stavu"],"Any":["Libovolné"],"Unread":["NepÅ™eÄtené"],"Chatty":["Hovorný/á"],"Extended Away":["Na delÅ¡Ã dobu pryÄ"],"Click to remove %1$s as a contact":["KliknutÃm odstranÃte uživatele %1$s z kontaktů"],"Click to accept the contact request from %1$s":["KliknutÃm pÅ™ijmete požadavek o kontakt od uživatele %1$s"],"Click to decline the contact request from %1$s":["KliknutÃm odmÃtnete požadavek o kontakt od uživatele %1$s"],"Are you sure you want to decline this contact request?":["Opravdu chcete odmÃtnout tento požadavek o kontakt?"],"Contacts":["Kontakty"],"Add a contact":["PÅ™idat kontakt"],"Re-sync your contacts":["Znovu synchronizovat své kontakty"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[143],{511:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;","lang":"cs"},"Create your account":["VytvoÅ™it svůj úÄet"],"Please enter the XMPP provider to register with:":["ProsÃm zadejte poskytovatele XMPP, se kterým se chcete registrovat:"],"Already have a chat account?":["Již máte chatovacà úÄet?"],"Log in here":["PÅ™ihlaste se zde"],"Account Registration:":["Registrace úÄtu:"],"Register":["Registrovat"],"Choose a different provider":["Vybrat jiného poskytovatele"],"Hold tight, we\'re fetching the registration form…":["Vydržte, shánÃte registraÄnà formulář…"],"Cancel":["ZruÅ¡it"],"The connection has dropped, attempting to reconnect.":["Spojenà bylo pÅ™eruÅ¡eno, pokouÅ¡Ãme se znovu spojit."],"An error occurred while connecting to the chat server.":["PÅ™i pÅ™ipojovánà na chatovacà server se vyskytla chyba."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Omlouváme se, nemohli jsme se spojit s XMPP hostem s doménou: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP server nenabÃdl podporovaný autentikaÄnà mechanismus"],"Sorry, could not determine upload URL.":["Omlouváme se, nelze urÄit URL nahránÃ."],"Sorry, could not determine file upload URL.":["Omlouváme se, nelze urÄit URL nahraného souboru."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Omlouváme se, nelze úspěšnÄ› nahrát váš soubor. OdpovÄ›Ä vaÅ¡eho serveru: „%1$s“"],"Sorry, could not succesfully upload your file.":["Omlouváme se, nelze úspěšnÄ› nahrát váš soubor."],"Sorry, looks like file upload is not supported by your server.":["Omlouváme se, vypadá to, že váš server nepodporuje nahrávánà souborů."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Velikost vaÅ¡eho serveru, %1$s, pÅ™esahuje maximum povolené vaÅ¡Ãm serverem, což je %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Tento skupinový chat nenà anonymnÃ"],"This groupchat now shows unavailable members":["Tento skupinový chat nynà zobrazuje nedostupné Äleny"],"This groupchat does not show unavailable members":["Tento skupinový chat nezobrazuje nedostupné Äleny"],"The groupchat configuration has changed":["Nastavenà skupinového chatu se zmÄ›nila"],"This groupchat is now no longer anonymous":["Tento skupinový chat již nenà anonymnÃ"],"This groupchat is now semi-anonymous":["Tento skupinový chat je nynà zÄásti anonymnÃ"],"This groupchat is now fully-anonymous":["Tento skupinový chat je nynà zcela anonymnÃ"],"A new groupchat has been created":["Byl vytvoÅ™en nový skupinový chat"],"Your nickname has been automatically set to %1$s":["VaÅ¡e pÅ™ezdÃvka byla automaticky nastavena na %1$s"],"Your nickname has been changed to %1$s":["VaÅ¡e pÅ™ezdÃvka byla zmÄ›nÄ›na na %1$s"],"You have been banned from this groupchat":["Byl/a jste na tomto skupinovém chatu zakázán/a"],"You have been kicked from this groupchat":["Byl/a jste z tohoto skupinového chatu vyhozen/a"],"You have been removed from this groupchat because of an affiliation change":["Byl/a jste z tohoto skupinového chatu odebrán/a kvůli zmÄ›nÄ› pÅ™ÃsluÅ¡nosti"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Byl/a jste z tohoto skupinového chatu odstranÄ›n/a, protože se skupinový chat zmÄ›nil na pouze pro Äleny a vy nejste Älenem"],"You have been removed from this groupchat because the service hosting it is being shut down":["Byl/a jste z tohoto skupinového chatu odstranÄ›n/a, protože se služba, která jej hostuje, vypÃná"],"You\'re not allowed to register yourself in this groupchat.":["Nemáte povolenà se registrovat v tomto skupinovém chatu."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nemáte povolenà se registrovat v tomto skupinovém chatu, neboÅ¥ je pouze pro Äleny."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nelze registrovat vaÅ¡i pÅ™ezdÃvku v tomto skupinovém chatu, protože nepodporuje registraci."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nelze registrovat vaÅ¡i pÅ™ezdÃvku v tomto skupinovém chatu, protože je poskytnuta neplatná forma dat."],"Topic set by %1$s":["Téma nastavené uživatelem %1$s"],"Topic cleared by %1$s":["Téma potvrzené uživatelem %1$s"],"%1$s has been banned":["%1$s byl/a zakázán/a"],"%1$s\'s nickname has changed":["PÅ™ezdÃvka uživatele %1$s se zmÄ›nila"],"%1$s has been kicked out":["%1$s byl/a vyhozen/a"],"%1$s has been removed because of an affiliation change":["%1$s byl/a odstranÄ›n/a kvůli zmÄ›nÄ› pÅ™ÃsluÅ¡nosti"],"%1$s has been removed for not being a member":["%1$s byl/a odstranÄ›na, protože nenà Älenem"],"%1$s is no longer an admin of this groupchat":["%1$s již nenà administrátorem tohoto skupinového chatu"],"%1$s is no longer an owner of this groupchat":["%1$s již nenà vlastnÃkem tohoto skupinového chatu"],"%1$s is no longer banned from this groupchat":["%1$s již nenà na tomto skupinovém chatu zakázán/a"],"%1$s is now an %2$s of this groupchat":["%1$s je nynà %2$s tohoto skupinového chatu"],"The nickname you chose is reserved or currently in use, please choose a different one.":["PÅ™ezdÃvka, kterou jste si vybral/a, je rezervována Äi aktuálnÄ› použÃvána, prosÃm vyberte si jinou."],"You are not on the member list of this groupchat.":["Nejste na seznamu Älenů tohoto skupinového chatu."],"You have been banned from this groupchat.":["Byl/a jste na tomto skupinovém chatu zakázán/a."],"You are not allowed to create new groupchats.":["Nemáte povolenà vytvářet nové skupinové chaty."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["VaÅ¡e pÅ™ezdÃvka nevyhovuje zásadám tohoto skupinového chatu."],"This groupchat does not (yet) exist.":["Tento skupinový chat (jeÅ¡tÄ›) neexistuje."],"This groupchat has reached its maximum number of participants.":["Tento skupinový chat dosáhl svého maximálnÃho poÄtu úÄastnÃků."],"Remote server not found":["Vzdálený server nenalezen"],"The explanation given is: \\"%1$s\\".":["Dané vysvÄ›tlenà je: „%1$s“."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vás pozval/a do skupinového chatu: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vás pozval/a do skupinového chatu: %2$s, a zanechal/a následujÃcà důvod: „%3$s“"],"Error":["Chyba"],"Sorry, something went wrong while trying to save your bookmark.":["Omlouváme se, pÅ™i pokusu o uloženà vaÅ¡Ã záložky se nÄ›co pokazilo."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Moje kontakty"],"Pending contacts":["ÄŒekajÃcà kontakty"],"Contact requests":["Požadavky o kontakt"],"Ungrouped":["Neseskupené"],"Sorry, there was an error while trying to add %1$s as a contact.":["Omlouváme se pÅ™i pokusu pÅ™idat uživatele %1$s do kontaktů se stala chyba."],"This client does not allow presence subscriptions":["Tento klient nedovoluje presenÄnà odbÄ›ry"],"Click to hide these contacts":["KliknutÃm skryjete tyto kontakty"],"Unbookmark this groupchat":["Odstranit tento skupinový chat ze záložek"],"Click to open this groupchat":["KliknutÃm otevÅ™ete tento skupinový chat"],"Click to toggle the bookmarks list":["KliknutÃm otevÅ™ete/zavÅ™ete seznam záložek"],"Bookmarks":["Záložky"],"Bookmark this groupchat":["PÅ™idat tento skupinový chat do záložek"],"Would you like this groupchat to be automatically joined upon startup?":["Chcete se k tomuto skupinovému chatu automaticky pÅ™ipojit po startu?"],"The name for this bookmark:":["Název pro tuto záložku:"],"What should your nickname for this groupchat be?":["Jaká bude vaÅ¡e pÅ™ezdÃvka pro tento skupinový chat?"],"Save":["Uložit"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Opravdu chcete odstranit záložku „%1$s“?"],"Close":["ZavÅ™Ãt"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Stáhnout audiosoubor „%1$s“"],"Download file \\"%1$s\\"":["Stáhnout soubor „%1$s“"],"Edit":[""],"Retract":[""],"Message versions":["Verze zprávy"],"Retry":[""],"Uploading file:":["Nahrává se soubor:"],"This message has been edited":["Tahle zpráva byla upravena"],"Show more":["Zobrazit vÃce"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Vložit emoji"],"Start a call":["ZaÄÃt hovor"],"Choose a file to send":["Vyberte soubor k odeslánÃ"],"Click to write as a normal (non-spoiler) message":["KliknutÃm napÃÅ¡ete jako normálnà zprávu (bez spoilerů)"],"Click to write your message as a spoiler":["KliknutÃm napÃÅ¡ete svou zprávu jako spoiler"],"The User\'s Profile Image":["Profilový obrázek uživatele"],"Trusted":["DůvÄ›ryhodné"],"Untrusted":["NedůvÄ›ryhodné"],"OMEMO Fingerprints":["Otisky OMEMO"],"Remove as contact":["Odstranit z kontaktů"],"XMPP Address":["XMPP adresa"],"Email":["E-mail"],"Full Name":["Celé jméno"],"Nickname":["PÅ™ezdÃvka"],"Refresh":["Obnovit"],"Role":["Role"],"URL":["URL"],"%1$s is typing":["%1$s pÃÅ¡e"],"%1$s has stopped typing":["%1$s pÅ™estal/a psát"],"%1$s has gone away":["%1$s odeÅ¡el/la pryÄ"],"Remove messages":["Odstranit zprávy"],"Write in the third person":["Psát ve tÅ™età osobÄ›"],"Show this menu":["Zobrazit tohle menu"],"Hidden message":["Skrytá zpráva"],"Message":["Zpráva"],"Optional hint":["Volitelná nápovÄ›da"],"You have unread messages":["Máte nepÅ™eÄtené zprávy"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Opravdu chcete vymazat zprávy z téhle konverzace?"],"%1$s has gone offline":["%1$s se odpojil/a"],"%1$s is busy":["%1$s je zaneprázdnÄ›n/a"],"%1$s is online":["%1$s je pÅ™ipojen/a"],"Sorry, something went wrong while trying to refresh":["Omlouváme se, pÅ™i pokusu o obnovenà se nÄ›co pokazilo"],"Are you sure you want to remove this contact?":["Opravdu chcete odstranit tento kontakt?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Omlouváme se, pÅ™i odstraňovánà uživatele %1$s z kontaktů se vyskytla chyba."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["K vylepÅ¡enà výkonu ukládáme vaÅ¡e data do mezipamÄ›ti tohoto prohlÞeÄe. Je-li tohle veÅ™ejný poÄÃtaÄ, nebo chcete-li, aby byla vaÅ¡e data po odhlášenà smazána, odÅ¡krtnÄ›te toto pole. Je důležité, abyste se výslovnÄ› odhlásil/a, jinak nemusà být smazána vÅ¡echna data v mezipamÄ›ti. MÄ›jte prosÃm na vÄ›domÃ, že pokud použÃváte nedůvÄ›ryhodné zaÅ™ÃzenÃ, NENà podporováno Å¡ifrovánà OMEMO."],"This is a trusted device":["Tohle je důvÄ›ryhodné zaÅ™ÃzenÃ"],"Create an account":["VytvoÅ™te si úÄet"],"Don\'t have a chat account?":["Nemáte chatovacà úÄet?"],"Log in":["PÅ™ihlásit"],"Disconnected":[""],"Click here to log in anonymously":["KliknutÃm sem se pÅ™ihlásÃte anonymnÄ›"],"Username":["Uživatelské jméno"],"user@domain":["uživatel@doména"],"Please enter a valid XMPP address":["ProsÃm zadejte platnou XMPP adresu"],"Chat Contacts":["Chatové kontakty"],"Toggle chat":["OtevÅ™Ãt chat"],"Click to restore this chat":["KliknutÃm obnovÃte tento chat"],"Minimized":["ZmenÅ¡eno"],"This user is a moderator.":["Tento uživatel je moderátorem."],"This user can send messages in this groupchat.":["Tento uživatel může posÃlat zprávy v tomto skupinovém chatu."],"This user can NOT send messages in this groupchat.":["Tento uživatel NEMŮŽE posÃlat zprávy v tomto skupinovém chatu."],"Owner":["VlastnÃk"],"Admin":["Administrátor"],"Member":["ÄŒlen"],"Moderator":["Moderátor"],"Visitor":["NávÅ¡tÄ›vnÃk"],"Click to mention %1$s in your message.":["KliknutÃm zmÃnÃte uživatele %1$s ve své zprávÄ›."],"Participants":["ÚÄastnÃci"],"This field is required":["Toto pole je vyžadováno"],"Join":["PÅ™idat se"],"Enter a new Groupchat":["Vstoupit do nového skupinového chatu"],"name@conference.example.org":["jmeno@conference.priklad.cz"],"Groupchat name":["Název skupinového chatu"],"Groupchat address":["Adresa skupinového chatu"],"Invite":["Pozvat"],"Show groupchats":["Zobrazit skupinové chaty"],"Server address":["Adresa serveru"],"Show more information on this groupchat":["Zobrazit vÃce informacà o tomto skupinovém chatu"],"Query for Groupchats":["Dotaz pro skupinové chaty"],"Description:":["Popis:"],"Groupchat Address (JID):":["Adresa skupinového chatu (JID):"],"Participants:":["ÚÄastnÃci:"],"Features:":["Vlastnosti:"],"Requires authentication":["Vyžaduje ověřenÃ"],"Hidden":["Skryté"],"Requires an invitation":["Vyžaduje pozvánÃ"],"Moderated":["Moderováno"],"Non-anonymous":["NeanonymnÃ"],"Open":["OtevÅ™ené"],"Permanent":["Trvalé"],"Public":["VeÅ™ejné"],"Semi-anonymous":["ZÄásti anonymnÃ"],"Temporary":["DoÄasné"],"Unmoderated":["Nemoderováno"],"conference.example.org":["conference.priklad.cz"],"No groupchats found":["Nenalezeny žádné skupinové chaty"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Téma"],"Topic author":["Autor tématu"],"Groupchat address (JID)":["Název skupinového chatu (JID)"],"Message archiving":["Archivace zpráv"],"Messages are archived on the server":["Na tomto serveru jsou archivovány zprávy"],"Description":["Popis"],"Features":["Vlastnosti"],"This groupchat is not publicly searchable":["Tento skupinový chat nenà veÅ™ejnÄ› vyhledávatelný"],"This groupchat is restricted to members only":["Tento skupinový chat je omezen pouze na Äleny"],"Members only":["Pouze pro Äleny"],"Participants entering this groupchat need to request permission to write":["ÚÄastnÃci vstupujÃcà do tohoto skupinového chatu si musà vyžádat povolenà psát"],"Name":["Jméno"],"This groupchat does not require a password upon entry":["Tento skupinový chat nevyžaduje pÅ™i vstupu heslo"],"No password required":["Heslo nevyžadováno"],"Not anonymous":["Nenà anonymnÃ"],"All other groupchat participants can see your XMPP address":["VÅ¡ichni ostatnà úÄastnÃci skupinového chatu mohou vidÄ›t vaÅ¡i XMPP adresu"],"Not moderated":["Nenà moderován"],"Participants entering this groupchat can write right away":["ÚÄastnÃci vstupujÃcà do tohoto skupinového chatu mohou psát ihned"],"Online users":["PÅ™ipojenà uživatelé"],"Anyone can join this groupchat":["Kdokoliv se k tomuto skupinovému chatu může pÅ™ipojit"],"This groupchat requires a password before entry":["Tento skupinový chat vyžaduje pÅ™ed vstupem heslo"],"Password protected":["OchránÄ›no heslem"],"Persistent":["Trvalý"],"This groupchat persists even if it\'s unoccupied":["Tento skupinový chat pÅ™etrvává, i když na nÄ›m nikdo nenÃ"],"Only moderators can see your XMPP address":["Pouze moderátoÅ™i mohou vidÄ›t vaÅ¡i XMPP adresu"],"This groupchat will disappear once the last person leaves":["Tento skupinový chat zmizÃ, jakmile poslednà osoba odejde"],"This groupchat is publicly searchable":["Tento skupinový chat je veÅ™ejnÄ› vyhledávatelný"],"Groupchat info for %1$s":["Informace o skupinovém chatu %1$s"],"The conversation has moved. Click below to enter.":["Konverzace se pÅ™esunula. KliknutÃm nÞe do nà vstoupÃte."],"This groupchat no longer exists":["Tento skupinový chat již neexistuje"],"Enter groupchat":["Vstoupit do skupinového chatu"],"Please choose your nickname":["ProsÃm vyberte si pÅ™ezdÃvku"],"This groupchat requires a password":["Tento skupinový chat vyžaduje heslo"],"Password: ":["Heslo: "],"Submit":["Odeslat"],"%1$s has entered the groupchat":["%1$s vstoupil/a do skupinového chatu"],"%1$s has left the groupchat":["%1$s odeÅ¡el/la ze skupinového chatu"],"%1$s is now a moderator":["%1$s je nynà moderátorem"],"%1$s is no longer a moderator":["%1$s již nenà moderátorem"],"%1$s has been muted":["%1$s byl/a utiÅ¡en/a"],"Change user\'s affiliation to admin":["ZmÄ›nit pÅ™ÃsluÅ¡nost uživatele na administrátora"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ZmÄ›nit roli uživatele na úÄastnÃka"],"Remove this groupchat":["Odstranit tento skupinový chat"],"Kick user from groupchat":["Vyhodit uživatele ze skupinového chatu"],"Write in 3rd person":["Psát ve 3. osobÄ›"],"Grant membership to a user":["Poskytnout uživateli ÄlenstvÃ"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Odstranit schopnost uživatele posÃlat zprávy"],"Change your nickname":["ZmÄ›nit svou pÅ™ezdÃvku"],"Grant moderator role to user":["Poskytnout uživateli roli moderátora"],"Grant ownership of this groupchat":["Poskytnout vlastnictvà tohoto skupinového chatu"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Nastavit pÅ™edmÄ›t skupinového chatu"],"Set groupchat subject (alias for /subject)":["Nastavit pÅ™edmÄ›t skupinového chatu (alias pro /subject)"],"Allow muted user to post messages":["Povolit utiÅ¡eným uživatelům posÃlat zprávy"],"Configure":[""],"Configure this groupchat":["Nastavit tento skupinový chat"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Skrýt seznam úÄastnÃků"],"Forbidden: you do not have the necessary role in order to do that.":["Zakázáno: k této akci nemáte potÅ™ebnou roli."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Zakázáno: k této akci nemáte potÅ™ebnou pÅ™ÃsluÅ¡nost."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Chyba: pÅ™Ãkaz „%1$s“ bere dva argumenty, pÅ™ezdÃvku uživatele a volitelnÄ› důvod."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["jmeno@priklad.cz"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Chyba: neplatný poÄet argumentů"],"This action was done by %1$s.":["Tuto akci vykonal/a %1$s."],"The reason given is: \\"%1$s\\".":["Daný důvod je: „%1$s“."],"Groupchats":["Skupinové chaty"],"Add a new groupchat":["PÅ™idat nový skupinový chat"],"Query for groupchats":["Dotaz pro skupinové chaty"],"Announcements":[""],"Notification from %1$s":["Oznámenà od uživatele %1$s"],"%1$s says":["%1$s Å™Ãká"],"has gone offline":["se odpojil/a"],"has gone away":["odeÅ¡el/la pryÄ"],"is busy":["je zaneprázdnÄ›n/a"],"has come online":["se pÅ™ipojil/a"],"wants to be your contact":["chce být vaÅ¡Ãm kontaktem"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["O nás"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s OtevÅ™ený %2$s chatovacà klient pro XMPP vám pÅ™inášà %3$s Opkode%2$s"],"%1$s Translate %2$s it into your own language":["%1$s PÅ™eložte %2$s jej do svého vlastnÃho jazyka"],"Log out":["Odhlásit"],"Click to change your chat status":["KliknutÃm zmÄ›nÃte svůj chatový stav"],"Show details about this chat client":["Zobrazit detaily o tomto chatovacÃm klientovi"],"Your avatar image":["Váš avatarový obrázek"],"Checkbox for selecting the following fingerprint":["ZaÅ¡krtnutÃm polÃÄka vyberete následujÃcà otisk"],"Device without a fingerprint":["ZaÅ™Ãzenà bez otisku"],"Other OMEMO-enabled devices":["DalÅ¡Ã zaÅ™Ãzenà s podporou OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["ZaÅ¡krtnutÃm polÃÄek vyberete otisky vÅ¡ech ostatnÃch zaÅ™Ãzenà OMEMO"],"Remove checked devices and close":["Odstranit zaÅ¡krtnutá zaÅ™Ãzenà a zavÅ™Ãt"],"Select all":["Vybrat vÅ¡e"],"This device\'s OMEMO fingerprint":["Otisk OMEMO tohoto zaÅ™ÃzenÃ"],"Generate new keys and fingerprint":["Generovat nové klÃÄe a otisk"],"Your Profile":["Váš profil"],"XMPP Address (JID)":["XMPP adresa (JID)"],"Save and close":["Uložit a zavÅ™Ãt"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["OddÄ›lujte vÃce rolà Äárkami. VaÅ¡e role jsou zobrazeny vedle vaÅ¡eho jména na vaÅ¡ich chatových zprávách."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Omlouváme se, pÅ™i pokusu o uloženà vaÅ¡ich profilových dat se stala chyba."],"You can check your browser\'s developer console for any error output.":["Můžete zkontrolovat vývojářskou konzoli vaÅ¡eho prohlÞeÄe pro jakýkoliv chybový výstup."],"Away":["PryÄ"],"Busy":["ZaneprázdnÄ›n/a"],"Custom status":["Vlastnà stav"],"Offline":["Odpojen/a"],"Online":["PÅ™ipojen/a"],"Away for long":["PryÄ na dlouho"],"Change chat status":["ZmÄ›nit chatový stav"],"Personal status message":["Osobnà stavová zpráva"],"I am %1$s":["Jsem %1$s"],"Are you sure you want to log out?":["Opravdu se chcete odhlásit?"],"online":["pÅ™ipojen/a"],"busy":["zaneprázdnÄ›n/a"],"away for long":["pryÄ na dlouho"],"away":["pryÄ"],"offline":["odpojen/a"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Omlouváme se, kvůli chybÄ› nelze deÅ¡ifrovat obdrženou právu OMEMO."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s nejspÃÅ¡ nemá klienta podporujÃcÃho OMEMO. Å ifrované chatovánà nebude v tomto skupinovém chatu již možné."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Nelze použÃt Å¡ifrovánà end-to-end, protože %1$s použÃvá klienta, který nepodporuje OMEMO."],"Messages are being sent in plaintext":["Zprávy jsou odesÃlány v prostém textu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Omlouváme se, nemohli jsme odeslat Å¡ifrovanou zprávu, protože %1$s požaduje, abyste mÄ›l/a jeho/jejà presenÄnà odbÄ›r, pokud chcete vidÄ›t jeho/jejà informace OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Omlouváme se, nemohli jsme odeslat Å¡ifrovanou zprávu, protože vzdálený server pro uživatele %1$s nemohl být nalezen"],"Unable to send an encrypted message due to an unexpected error.":["Kvůli neoÄekávané chybÄ› nelze odeslat zprávu."],"Sorry, an error occurred while trying to remove the devices.":["Omlouváme se, pÅ™i pokusu o odstranÄ›nà zaÅ™Ãzenà se vyskytla chyba."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Opravdu chcete generovat nové klÃÄe OMEMO? TÃmto budou odstranÄ›ny vaÅ¡e staré klÃÄe a vÅ¡echny dÅ™Ãve zaÅ¡ifrované zprávy již nepůjde na tomto zaÅ™Ãzenà deÅ¡ifrovat."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tohle je zpráva zaÅ¡ifrovaná pomocà OMEMO, které, jak se zdá, váš klient nepodporuje. VÃce informacà najdete na https://conversations.im/omemo"]," e.g. conversejs.org":[" napÅ™. conversejs.org"],"Fetch registration form":["Sehnat registraÄnà formulář"],"Tip: A list of public XMPP providers is available":["Tip: Seznam veÅ™ejných poskytovatelů XMPP je dostupný"],"here":["zde"],"Sorry, we\'re unable to connect to your chosen provider.":["Omlouváme se, nelze se pÅ™ipojit k vaÅ¡emu zvolenému poskytovateli."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Omlouváme se, daný poskytovatel nepodporuje in-band registraci úÄtu. ProsÃm zkuste to s jiným poskytovatelem."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["PÅ™i navazovánà spojenà s „%1$s“ se nÄ›co pokazilo. Jste si jistý/á, že existuje?"],"Now logging you in":["Nynà vás pÅ™ihlaÅ¡ujeme"],"Registered successfully":["ÚspěšnÄ› zaregistrováno"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Poskytovatel odmÃtl váš pokus o registraci. ProsÃm zkontrolujte hodnoty, které jste zadal/a, kvůli správnosti."],"Leave this groupchat":["OdejÃt z tohoto skupinového chatu"],"Click to toggle the list of open groupchats":["KliknutÃm otevÅ™ete/zavÅ™ete seznam otevÅ™ených skupinových chatů"],"Open Groupchats":["OtevÅ™ené skupinové chaty"],"Are you sure you want to leave the groupchat %1$s?":["Opravdu chcete odejÃt ze skupinového chatu %1$s?"],"Add":["PÅ™idat"],"Add a Contact":["PÅ™idat kontakt"],"This contact is busy":["Tento kontakt je zaneprázdnÄ›n"],"This contact is online":["Tento kontakt je pÅ™ipojen"],"This contact is offline":["Tento kontakt je odpojen"],"This contact is unavailable":["Tento kontakt je nedostupný"],"This contact is away for an extended period":["Tento kontakt je na delÅ¡Ã dobu pryÄ"],"This contact is away":["Tento kontakt je pryÄ"],"Contact name":["Jméno kontaktu"],"Optional nickname":["Volitelná pÅ™ezdÃvka"],"Sorry, could not find a contact with that name":["Omlouváme se, nelze najÃt kontakt s tÃmto jménem"],"This contact has already been added":["Tento kontakt byl již pÅ™idán"],"Filter":["Filtrovat"],"Filter by contact name":["Filtrovat dle jména kontaktu"],"Filter by group name":["Filtrovat dle názvu skupiny"],"Filter by status":["Filtrovat dle stavu"],"Any":["Libovolné"],"Unread":["NepÅ™eÄtené"],"Chatty":["Hovorný/á"],"Extended Away":["Na delÅ¡Ã dobu pryÄ"],"Click to remove %1$s as a contact":["KliknutÃm odstranÃte uživatele %1$s z kontaktů"],"Click to accept the contact request from %1$s":["KliknutÃm pÅ™ijmete požadavek o kontakt od uživatele %1$s"],"Click to decline the contact request from %1$s":["KliknutÃm odmÃtnete požadavek o kontakt od uživatele %1$s"],"Are you sure you want to decline this contact request?":["Opravdu chcete odmÃtnout tento požadavek o kontakt?"],"Contacts":["Kontakty"],"Add a contact":["PÅ™idat kontakt"],"Re-sync your contacts":["Znovu synchronizovat své kontakty"]}}}')}}]); //# sourceMappingURL=cs-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/da-LC_MESSAGES-converse-po.js b/src/conversejs/locales/da-LC_MESSAGES-converse-po.js index 0c7521f6430652d986496ce16a338deea6a96170..786519d228de630a901c868db4c382df9d9ed2e6 100644 --- a/src/conversejs/locales/da-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/da-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{424:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"da"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":[""],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"You\'re not allowed to retract your message.":[""],"Sorry, an error occurred while trying to retract your message.":[""],"You\'re not allowed to send a message.":[""],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":[""],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":[""],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":[""],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Cancel Editing":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"%1$s has removed this message":[""],"This message has been edited":[""],"Show more":[""],"Show less":[""],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":[""],"Refresh":[""],"Role":[""],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Password":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This field is required":[""],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":[""],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":[""],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"Groupchats found":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, you\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":[""],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Du har ikke tilladelse til at sende beskeder i dette rum"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":[""],"Hide the groupchat topic":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s have entered the groupchat":[""],"%1$s have left the groupchat":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"%1$s have been muted":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"Sorry, you\'re not allowed to retract this message":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Show more information about this groupchat":[""],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional reason for destroying this groupchat":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Click to open this server message":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[144],{512:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"da"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":[""],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"You\'re not allowed to retract your message.":[""],"Sorry, an error occurred while trying to retract your message.":[""],"You\'re not allowed to send a message.":[""],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":[""],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":[""],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Timeout while trying to fetch archived messages.":[""],"An error occurred while querying for archived messages.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":[""],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Cancel Editing":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"%1$s has removed this message":[""],"This message has been edited":[""],"Show more":[""],"Show less":[""],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":[""],"Refresh":[""],"Role":[""],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Password":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":[""],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":[""],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"Groupchats found":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, you\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":[""],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Du har ikke tilladelse til at sende beskeder i dette rum"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":[""],"Hide the groupchat topic":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s have entered the groupchat":[""],"%1$s have left the groupchat":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"%1$s have been muted":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"Sorry, you\'re not allowed to retract this message":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Show more information about this groupchat":[""],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional reason for destroying this groupchat":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Click to open this server message":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=da-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/af.js b/src/conversejs/locales/dayjs/af.js index e190b001b9ef591e6a9686b9338f7a117e2106d4..8f7750a978a9082c692e0effdf58af1ed8380603 100644 --- a/src/conversejs/locales/dayjs/af.js +++ b/src/conversejs/locales/dayjs/af.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{147:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{189:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"af",weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),weekStart:1,weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=af.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-dz.js b/src/conversejs/locales/dayjs/ar-dz.js index 25f0c6c1567772761d63ea764312a743eb0c4f3d..e360a99294f4c268c478d7fb9830e79de805bcee 100644 --- a/src/conversejs/locales/dayjs/ar-dz.js +++ b/src/conversejs/locales/dayjs/ar-dz.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{148:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-dz",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysShort:"اØد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø£Ø_إث_ثلا_أر_خم_جم_سب".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{190:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-dz",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysShort:"اØد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø£Ø_إث_ثلا_أر_خم_جم_سب".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=ar-dz.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-kw.js b/src/conversejs/locales/dayjs/ar-kw.js index bf6b6fa04ed69bcf5da28514279687220b3ed6ae..d32aafcf19b4ed23412c035e386b3dd678888ef9 100644 --- a/src/conversejs/locales/dayjs/ar-kw.js +++ b/src/conversejs/locales/dayjs/ar-kw.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{149:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-kw",weekdays:"الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysShort:"اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{191:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-kw",weekdays:"الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysShort:"اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=ar-kw.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-ly.js b/src/conversejs/locales/dayjs/ar-ly.js index d152c098cc99850d0bb0b46c6385da473122506d..529320d6892404aef301159796953f80c8eea434 100644 --- a/src/conversejs/locales/dayjs/ar-ly.js +++ b/src/conversejs/locales/dayjs/ar-ly.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{150:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-ly",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekStart:6,weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/â€M/â€YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{192:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-ly",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekStart:6,weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/â€M/â€YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ar-ly.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-ma.js b/src/conversejs/locales/dayjs/ar-ma.js index 0b06f79b52272e30788dc57ddae97f6d0d2c39ad..61dc742d29defa04724628cd4391a8dc58df4395 100644 --- a/src/conversejs/locales/dayjs/ar-ma.js +++ b/src/conversejs/locales/dayjs/ar-ma.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{151:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-ma",weekdays:"الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekStart:6,weekdaysShort:"اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{193:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-ma",weekdays:"الأØد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekStart:6,weekdaysShort:"اØد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ar-ma.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-sa.js b/src/conversejs/locales/dayjs/ar-sa.js index 6031074817ad8dc992138cb9b097bdffca6e7a2b..39e7218e733b48a27fc445ef0a5ccad7dcbc0ffb 100644 --- a/src/conversejs/locales/dayjs/ar-sa.js +++ b/src/conversejs/locales/dayjs/ar-sa.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{152:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-sa",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{194:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ar-sa",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=ar-sa.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar-tn.js b/src/conversejs/locales/dayjs/ar-tn.js index 8b3287b690629c30ad4ba4d2037883313e279dd7..b551a0ce5805447e510a5d9b33bd926b1c95db34 100644 --- a/src/conversejs/locales/dayjs/ar-tn.js +++ b/src/conversejs/locales/dayjs/ar-tn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{153:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-tn",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekStart:1,weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{195:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ar-tn",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),months:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekStart:1,weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),monthsShort:"جانÙÙŠ_ÙÙŠÙري_مارس_Ø£Ùريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ÙÙŠ %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ar-tn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ar.js b/src/conversejs/locales/dayjs/ar.js index fa3d140b0b00c38a1f0043cf92981581110eaf79..345f1654789472bbe3d6b7172edab6d99709065d 100644 --- a/src/conversejs/locales/dayjs/ar.js +++ b/src/conversejs/locales/dayjs/ar.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{154:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),e={name:"ar",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),months:t,monthsShort:t,weekStart:6,relativeTime:{future:"بعد %s",past:"منذ %s",s:"ثانية واØدة",m:"دقيقة واØدة",mm:"%d دقائق",h:"ساعة واØدة",hh:"%d ساعات",d:"يوم واØد",dd:"%d أيام",M:"شهر واØد",MM:"%d أشهر",y:"عام واØد",yy:"%d أعوام"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/â€M/â€YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return _.locale(e,null,!0),e}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{196:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="يناير_Ùبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوÙمبر_ديسمبر".split("_"),e={name:"ar",weekdays:"الأØد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"Ø£Øد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"Ø_Ù†_Ø«_ر_Ø®_ج_س".split("_"),months:t,monthsShort:t,weekStart:6,relativeTime:{future:"بعد %s",past:"منذ %s",s:"ثانية واØدة",m:"دقيقة واØدة",mm:"%d دقائق",h:"ساعة واØدة",hh:"%d ساعات",d:"يوم واØد",dd:"%d أيام",M:"شهر واØد",MM:"%d أشهر",y:"عام واØد",yy:"%d أعوام"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/â€M/â€YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return _.locale(e,null,!0),e}(e(5))}}]); //# sourceMappingURL=ar.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/az.js b/src/conversejs/locales/dayjs/az.js index c42149ec5e160eb3aee263ed1936a4052c2f950a..fc2a5947513a8d40b13d1c5615e72ec59078d42e 100644 --- a/src/conversejs/locales/dayjs/az.js +++ b/src/conversejs/locales/dayjs/az.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{155:function(a,_,r){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"az",weekdays:"Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"%s sonra",past:"%s É™vvÉ™l",s:"bir neçə saniyÉ™",m:"bir dÉ™qiqÉ™",mm:"%d dÉ™qiqÉ™",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},ordinal:function(a){return a}};return a.locale(_,null,!0),_}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{197:function(a,_,r){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"az",weekdays:"Bazar_Bazar ertÉ™si_ÇərÅŸÉ™nbÉ™ axÅŸamı_ÇərÅŸÉ™nbÉ™_CümÉ™ axÅŸamı_CümÉ™_ŞənbÉ™".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"%s sonra",past:"%s É™vvÉ™l",s:"bir neçə saniyÉ™",m:"bir dÉ™qiqÉ™",mm:"%d dÉ™qiqÉ™",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},ordinal:function(a){return a}};return a.locale(_,null,!0),_}(r(5))}}]); //# sourceMappingURL=az.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/be.js b/src/conversejs/locales/dayjs/be.js index 005f82ab3af3eef8c04868d0337d2c995bf49d52..904019ed42bfa865029afb8837b696cd77a4cb5b 100644 --- a/src/conversejs/locales/dayjs/be.js +++ b/src/conversejs/locales/dayjs/be.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{156:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"be",weekdays:"нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу".split("_"),months:"ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ".split("_"),weekStart:1,weekdaysShort:"нд_пн_ат_ÑÑ€_чц_пт_Ñб".split("_"),monthsShort:"Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж".split("_"),weekdaysMin:"нд_пн_ат_ÑÑ€_чц_пт_Ñб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"}};return _.locale(t,null,!0),t}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{198:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"be",weekdays:"нÑдзелю_панÑдзелак_аўторак_Ñераду_чацвер_пÑтніцу_Ñуботу".split("_"),months:"ÑтудзенÑ_лютага_Ñакавіка_краÑавіка_траўнÑ_чÑрвенÑ_ліпенÑ_жніўнÑ_вераÑнÑ_каÑтрычніка_ліÑтапада_ÑнежнÑ".split("_"),weekStart:1,weekdaysShort:"нд_пн_ат_ÑÑ€_чц_пт_Ñб".split("_"),monthsShort:"Ñтуд_лют_Ñак_краÑ_трав_чÑрв_ліп_жнів_вер_каÑÑ‚_ліÑÑ‚_Ñнеж".split("_"),weekdaysMin:"нд_пн_ат_ÑÑ€_чц_пт_Ñб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"}};return _.locale(t,null,!0),t}(e(5))}}]); //# sourceMappingURL=be.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bg.js b/src/conversejs/locales/dayjs/bg.js index f3a276af34f0a0520ac36d0cbb9a883acfa05d52..e43a2974285d076a225c329cfd5ae4035eed706f 100644 --- a/src/conversejs/locales/dayjs/bg.js +++ b/src/conversejs/locales/dayjs/bg.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{157:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"bg",weekdays:"ÐеделÑ_Понеделник_Вторник_СрÑда_Четвъртък_Петък_Събота".split("_"),weekdaysShort:"нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб".split("_"),weekdaysMin:"нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:"Януари_Февруари_Март_Ðприл_Май_Юни_Юли_ÐвгуÑÑ‚_Септември_Октомври_Ðоември_Декември".split("_"),monthsShort:"Янр_Фев_Мар_Ðпр_Май_Юни_Юли_Ðвг_Сеп_Окт_Ðое_Дек".split("_"),weekStart:1,ordinal:function(_){return _+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"Ñлед %s",past:"преди %s",s:"нÑколко Ñекунди",m:"минута",mm:"%d минути",h:"чаÑ",hh:"%d чаÑа",d:"ден",dd:"%d дни",M:"меÑец",MM:"%d меÑеца",y:"година",yy:"%d години"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{199:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"bg",weekdays:"ÐеделÑ_Понеделник_Вторник_СрÑда_Четвъртък_Петък_Събота".split("_"),weekdaysShort:"нед_пон_вто_ÑÑ€Ñ_чет_пет_Ñъб".split("_"),weekdaysMin:"нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:"Януари_Февруари_Март_Ðприл_Май_Юни_Юли_ÐвгуÑÑ‚_Септември_Октомври_Ðоември_Декември".split("_"),monthsShort:"Янр_Фев_Мар_Ðпр_Май_Юни_Юли_Ðвг_Сеп_Окт_Ðое_Дек".split("_"),weekStart:1,ordinal:function(_){return _+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"Ñлед %s",past:"преди %s",s:"нÑколко Ñекунди",m:"минута",mm:"%d минути",h:"чаÑ",hh:"%d чаÑа",d:"ден",dd:"%d дни",M:"меÑец",MM:"%d меÑеца",y:"година",yy:"%d години"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=bg.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bi.js b/src/conversejs/locales/dayjs/bi.js index f26c1699ff8620c8668e87369a44e3716a501887..a9650a510095757c1feb08e93057deb97c6b0196 100644 --- a/src/conversejs/locales/dayjs/bi.js +++ b/src/conversejs/locales/dayjs/bi.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{158:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(a){return a},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return a.locale(e,null,!0),e}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{200:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"bi",weekdays:"Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade".split("_"),months:"Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba".split("_"),weekStart:1,weekdaysShort:"San_Man_Tus_Wen_Tos_Frae_Sar".split("_"),monthsShort:"Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"San_Ma_Tu_We_To_Fr_Sar".split("_"),ordinal:function(a){return a},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"lo %s",past:"%s bifo",s:"sam seken",m:"wan minit",mm:"%d minit",h:"wan haoa",hh:"%d haoa",d:"wan dei",dd:"%d dei",M:"wan manis",MM:"%d manis",y:"wan yia",yy:"%d yia"}};return a.locale(e,null,!0),e}(_(5))}}]); //# sourceMappingURL=bi.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bm.js b/src/conversejs/locales/dayjs/bm.js index 17e9b2a26652e5abe9346e44f4450ce366f5541a..f473728cc6c6a8bb56919a1cb9d75e32b8068eba 100644 --- a/src/conversejs/locales/dayjs/bm.js +++ b/src/conversejs/locales/dayjs/bm.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{159:function(a,l,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var l={name:"bm",weekdays:"Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm"},relativeTime:{future:"%s kÉ”nÉ”",past:"a bÉ› %s bÉ”",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"lÉ›rÉ› kelen",hh:"lÉ›rÉ› %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return a.locale(l,null,!0),l}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{201:function(a,l,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var l={name:"bm",weekdays:"Kari_NtÉ›nÉ›n_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉ›kalo_ZuwÉ›nkalo_Zuluyekalo_Utikalo_SÉ›tanburukalo_É”kutÉ”burukalo_Nowanburukalo_Desanburukalo".split("_"),weekStart:1,weekdaysShort:"Kar_NtÉ›_Tar_Ara_Ala_Jum_Sib".split("_"),monthsShort:"Zan_Few_Mar_Awi_MÉ›_Zuw_Zul_Uti_SÉ›t_É”ku_Now_Des".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lÉ›rÉ›] HH:mm"},relativeTime:{future:"%s kÉ”nÉ”",past:"a bÉ› %s bÉ”",s:"sanga dama dama",m:"miniti kelen",mm:"miniti %d",h:"lÉ›rÉ› kelen",hh:"lÉ›rÉ› %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"}};return a.locale(l,null,!0),l}(e(5))}}]); //# sourceMappingURL=bm.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bn.js b/src/conversejs/locales/dayjs/bn.js index e385f6b807264a5a0d3e59dd494779932b0c395a..d6ab5c02b541b895c667d41f9deacbfba44e550f 100644 --- a/src/conversejs/locales/dayjs/bn.js +++ b/src/conversejs/locales/dayjs/bn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{160:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"bn",weekdays:"রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার".split("_"),months:"জানà§à§Ÿà¦¾à¦°à§€_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°".split("_"),weekdaysShort:"রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি".split("_"),monthsShort:"জানà§_ফেব_মারà§à¦š_à¦à¦ªà§à¦°_মে_জà§à¦¨_জà§à¦²_আগ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙà§à¦—_বà§à¦§_বৃহঃ_শà§à¦•à§à¦°_শনি".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেনà§à¦¡",m:"à¦à¦• মিনিট",mm:"%d মিনিট",h:"à¦à¦• ঘনà§à¦Ÿà¦¾",hh:"%d ঘনà§à¦Ÿà¦¾",d:"à¦à¦• দিন",dd:"%d দিন",M:"à¦à¦• মাস",MM:"%d মাস",y:"à¦à¦• বছর",yy:"%d বছর"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{202:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"bn",weekdays:"রবিবার_সোমবার_মঙà§à¦—লবার_বà§à¦§à¦¬à¦¾à¦°_বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦•à§à¦°à¦¬à¦¾à¦°_শনিবার".split("_"),months:"জানà§à§Ÿà¦¾à¦°à§€_ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿_মারà§à¦š_à¦à¦ªà§à¦°à¦¿à¦²_মে_জà§à¦¨_জà§à¦²à¦¾à¦‡_আগসà§à¦Ÿ_সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°_অকà§à¦Ÿà§‹à¦¬à¦°_নà¦à§‡à¦®à§à¦¬à¦°_ডিসেমà§à¦¬à¦°".split("_"),weekdaysShort:"রবি_সোম_মঙà§à¦—ল_বà§à¦§_বৃহসà§à¦ªà¦¤à¦¿_শà§à¦•à§à¦°_শনি".split("_"),monthsShort:"জানà§_ফেব_মারà§à¦š_à¦à¦ªà§à¦°_মে_জà§à¦¨_জà§à¦²_আগ_সেপà§à¦Ÿ_অকà§à¦Ÿà§‹_নà¦à§‡_ডিসে".split("_"),weekdaysMin:"রবি_সোম_মঙà§à¦—_বà§à¦§_বৃহঃ_শà§à¦•à§à¦°_শনি".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেনà§à¦¡",m:"à¦à¦• মিনিট",mm:"%d মিনিট",h:"à¦à¦• ঘনà§à¦Ÿà¦¾",hh:"%d ঘনà§à¦Ÿà¦¾",d:"à¦à¦• দিন",dd:"%d দিন",M:"à¦à¦• মাস",MM:"%d মাস",y:"à¦à¦• বছর",yy:"%d বছর"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=bn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bo.js b/src/conversejs/locales/dayjs/bo.js index f9030ea7abab399b04dc205b5a1277d961bcae20..36d8623d6d74347d6893d0bc50d26104db5a0abf 100644 --- a/src/conversejs/locales/dayjs/bo.js +++ b/src/conversejs/locales/dayjs/bo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{161:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"bo",weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག",mm:"%d སà¾à½¢à¼‹à½˜",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{203:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"bo",weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",m:"སà¾à½¢à¼‹à½˜à¼‹à½‚ཅིག",mm:"%d སà¾à½¢à¼‹à½˜",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=bo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/br.js b/src/conversejs/locales/dayjs/br.js index 80f7fc48a4096bec0c9746da787fffd68b870f66..17d67ff46446e30710fa50b2698f1fc8179c7d61 100644 --- a/src/conversejs/locales/dayjs/br.js +++ b/src/conversejs/locales/dayjs/br.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{162:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"br",weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},meridiem:function(e){return e<12?"a.m.":"g.m."}};return e.locale(_,null,!0),_}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{204:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"br",weekdays:"Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn".split("_"),months:"Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),weekStart:1,weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),monthsShort:"Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},meridiem:function(e){return e<12?"a.m.":"g.m."}};return e.locale(_,null,!0),_}(r(5))}}]); //# sourceMappingURL=br.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/bs.js b/src/conversejs/locales/dayjs/bs.js index 651e599211de97fc58f22ccae7fbc074cbb04727..f196f4038461594f932193e8a80321214dad0e33 100644 --- a/src/conversejs/locales/dayjs/bs.js +++ b/src/conversejs/locales/dayjs/bs.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{163:function(_,e,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(e,null,!0),e}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{205:function(_,e,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"bs",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(e,null,!0),e}(a(5))}}]); //# sourceMappingURL=bs.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ca.js b/src/conversejs/locales/dayjs/ca.js index 25c3a387e13aec03b5a7f21f59ac5db0e56062a6..1c36683e320f8767d33eeb74ee1ed8bc07289de2 100644 --- a/src/conversejs/locales/dayjs/ca.js +++ b/src/conversejs/locales/dayjs/ca.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{164:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aquà %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{206:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"ca",weekdays:"Diumenge_Dilluns_Dimarts_Dimecres_Dijous_Divendres_Dissabte".split("_"),weekdaysShort:"Dg._Dl._Dt._Dc._Dj._Dv._Ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),months:"Gener_Febrer_Març_Abril_Maig_Juny_Juliol_Agost_Setembre_Octubre_Novembre_Desembre".split("_"),monthsShort:"Gen._Febr._Març_Abr._Maig_Juny_Jul._Ag._Set._Oct._Nov._Des.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",ll:"D MMM YYYY",lll:"D MMM YYYY, H:mm",llll:"ddd D MMM YYYY, H:mm"},relativeTime:{future:"d'aquà %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=ca.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/cs.js b/src/conversejs/locales/dayjs/cs.js index ccc8e6a0cb1ceef6761b0db1cb090a782e676cb4..829aad0fc6bc5c2c7483c593fb570f461f46f0f1 100644 --- a/src/conversejs/locales/dayjs/cs.js +++ b/src/conversejs/locales/dayjs/cs.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{165:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var _=e+" ";switch(r){case"s":return t||s?"pár sekund":"pár sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?_+(n(e)?"minuty":"minut"):_+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?_+(n(e)?"hodiny":"hodin"):_+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?_+(n(e)?"dny":"dnÃ"):_+"dny";case"M":return t||s?"mÄ›sÃc":"mÄ›sÃcem";case"MM":return t||s?_+(n(e)?"mÄ›sÃce":"mÄ›sÃců"):_+"mÄ›sÃci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?_+(n(e)?"roky":"let"):_+"lety"}}e=e&&e.hasOwnProperty("default")?e.default:e;var r={name:"cs",weekdays:"nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_Ät_pá_so".split("_"),weekdaysMin:"ne_po_út_st_Ät_pá_so".split("_"),months:"leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec".split("_"),monthsShort:"led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pÅ™ed %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return e.locale(r,null,!0),r}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{207:function(e,n,t){e.exports=function(e){"use strict";function n(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,r,s){var _=e+" ";switch(r){case"s":return t||s?"pár sekund":"pár sekundami";case"m":return t?"minuta":s?"minutu":"minutou";case"mm":return t||s?_+(n(e)?"minuty":"minut"):_+"minutami";case"h":return t?"hodina":s?"hodinu":"hodinou";case"hh":return t||s?_+(n(e)?"hodiny":"hodin"):_+"hodinami";case"d":return t||s?"den":"dnem";case"dd":return t||s?_+(n(e)?"dny":"dnÃ"):_+"dny";case"M":return t||s?"mÄ›sÃc":"mÄ›sÃcem";case"MM":return t||s?_+(n(e)?"mÄ›sÃce":"mÄ›sÃců"):_+"mÄ›sÃci";case"y":return t||s?"rok":"rokem";case"yy":return t||s?_+(n(e)?"roky":"let"):_+"lety"}}e=e&&e.hasOwnProperty("default")?e.default:e;var r={name:"cs",weekdays:"nedÄ›le_pondÄ›lÃ_úterý_stÅ™eda_Ätvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_Ät_pá_so".split("_"),weekdaysMin:"ne_po_út_st_Ät_pá_so".split("_"),months:"leden_únor_bÅ™ezen_duben_kvÄ›ten_Äerven_Äervenec_srpen_zářÃ_Å™Ãjen_listopad_prosinec".split("_"),monthsShort:"led_úno_bÅ™e_dub_kvÄ›_Ävn_Ävc_srp_zář_Å™Ãj_lis_pro".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pÅ™ed %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return e.locale(r,null,!0),r}(t(5))}}]); //# sourceMappingURL=cs.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/cv.js b/src/conversejs/locales/dayjs/cv.js index dead1885c27b19a2c6ffdbbc96c020e0a9b87661..33d63b93f109a31793082ed01d482ff2ea860f8b 100644 --- a/src/conversejs/locales/dayjs/cv.js +++ b/src/conversejs/locales/dayjs/cv.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{166:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"cv",weekdays:"вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун".split("_"),months:"кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),weekStart:1,weekdaysShort:"выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdaysMin:"вр_тн_Ñ‹Ñ‚_юн_кҫ_ÑÑ€_шм".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{208:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"cv",weekdays:"вырÑарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_Ñрнекун_шӑматкун".split("_"),months:"кӑрлач_нарӑÑ_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),weekStart:1,weekdaysShort:"выр_тун_ытл_юн_кӗҫ_Ñрн_шӑм".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_Ò«Ó—Ñ€_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdaysMin:"вр_тн_Ñ‹Ñ‚_юн_кҫ_ÑÑ€_шм".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=cv.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/cy.js b/src/conversejs/locales/dayjs/cy.js index c0ffc890a4513cb8c6bb080768c25794ee3b8396..613c700abd207cdd88665350a931f613fc05b3e4 100644 --- a/src/conversejs/locales/dayjs/cy.js +++ b/src/conversejs/locales/dayjs/cy.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{167:function(d,_,e){d.exports=function(d){"use strict";d=d&&d.hasOwnProperty("default")?d.default:d;var _={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return d.locale(_,null,!0),_}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{209:function(d,_,e){d.exports=function(d){"use strict";d=d&&d.hasOwnProperty("default")?d.default:d;var _={name:"cy",weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),weekStart:1,weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),ordinal:function(d){return d},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"}};return d.locale(_,null,!0),_}(e(5))}}]); //# sourceMappingURL=cy.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/da.js b/src/conversejs/locales/dayjs/da.js index 312ed5a5ba61ba0e0b89849e81deb654135db1c1..6232890bcf062fd3bdfb289dbd3b03783929f8f0 100644 --- a/src/conversejs/locales/dayjs/da.js +++ b/src/conversejs/locales/dayjs/da.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{168:function(e,t,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"da",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn._man._tirs._ons._tors._fre._lør.".split("_"),weekdaysMin:"sø._ma._ti._on._to._fr._lø.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"fÃ¥ sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"et Ã¥r",yy:"%d Ã¥r"}};return e.locale(t,null,!0),t}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{210:function(e,t,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"da",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn._man._tirs._ons._tors._fre._lør.".split("_"),weekdaysMin:"sø._ma._ti._on._to._fr._lø.".split("_"),months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj_juni_juli_aug._sept._okt._nov._dec.".split("_"),weekStart:1,ordinal:function(e){return e+"."},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"fÃ¥ sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"et Ã¥r",yy:"%d Ã¥r"}};return e.locale(t,null,!0),t}(_(5))}}]); //# sourceMappingURL=da.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/de-at.js b/src/conversejs/locales/dayjs/de-at.js index df143718d2c296c3203c4b6b193a1e41530b4ac6..5f3806c11dae9091ebd88cf593e5d85ddc2e7ef1 100644 --- a/src/conversejs/locales/dayjs/de-at.js +++ b/src/conversejs/locales/dayjs/de-at.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{169:function(e,n,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:"einer Minute",mm:"%d Minuten",h:"einer Stunde",hh:"%d Stunden",d:"einem Tag",dd:"%d Tagen",M:"einem Monat",MM:"%d Monaten",y:"einem Jahr",yy:"%d Jahren"}};return e.locale(n,null,!0),n}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{211:function(e,n,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"de-at",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:"einer Minute",mm:"%d Minuten",h:"einer Stunde",hh:"%d Stunden",d:"einem Tag",dd:"%d Tagen",M:"einem Monat",MM:"%d Monaten",y:"einem Jahr",yy:"%d Jahren"}};return e.locale(n,null,!0),n}(t(5))}}]); //# sourceMappingURL=de-at.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/de-ch.js b/src/conversejs/locales/dayjs/de-ch.js index 821831696734746e47e7807fde51c07a8d0d0f9b..5e78d55540601eeeddc4336e33c833a80922bc17 100644 --- a/src/conversejs/locales/dayjs/de-ch.js +++ b/src/conversejs/locales/dayjs/de-ch.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{170:function(_,e,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"}};return _.locale(e,null,!0),e}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{212:function(_,e,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"de-ch",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"}};return _.locale(e,null,!0),e}(t(5))}}]); //# sourceMappingURL=de-ch.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/de.js b/src/conversejs/locales/dayjs/de.js index b53b355c46d19f3d06696ede7fc5e9628a40cc1d..733f52a070561d108c0271c3e804b57108497f2a 100644 --- a/src/conversejs/locales/dayjs/de.js +++ b/src/conversejs/locales/dayjs/de.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{171:function(e,n,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan_Feb_März_Apr_Mai_Juni_Juli_Aug_Sept_Okt_Nov_Dez".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:"wenigen Sekunden",m:"einer Minute",mm:"%d Minuten",h:"einer Stunde",hh:"%d Stunden",d:"einem Tag",dd:"%d Tagen",M:"einem Monat",MM:"%d Monaten",y:"einem Jahr",yy:"%d Jahren"}};return e.locale(n,null,!0),n}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{213:function(e,n,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"de",weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan_Feb_März_Apr_Mai_Juni_Juli_Aug_Sept_Okt_Nov_Dez".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LTS:"HH:mm:ss",LT:"HH:mm",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"vor %s",s:"wenigen Sekunden",m:"einer Minute",mm:"%d Minuten",h:"einer Stunde",hh:"%d Stunden",d:"einem Tag",dd:"%d Tagen",M:"einem Monat",MM:"%d Monaten",y:"einem Jahr",yy:"%d Jahren"}};return e.locale(n,null,!0),n}(t(5))}}]); //# sourceMappingURL=de.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/dv.js b/src/conversejs/locales/dayjs/dv.js index f02774b186c2eb4208bfe7f7902f9f90a445f50f..2cadf98e0fbfe091bce45be323c7d12b8a0889d0 100644 --- a/src/conversejs/locales/dayjs/dv.js +++ b/src/conversejs/locales/dayjs/dv.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{172:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"dv",weekdays:"އާދިއްތަ_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§Þްފަތި_Þ€ÞªÞ†ÞªÞƒÞª_Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª".split("_"),months:"Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©_ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©_Þ‰Þ§ÞƒÞ¨Þ—Þª_Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª_Þ‰Þ_Þ–Þ«Þ‚Þ°_Þ–ÞªÞÞ¦Þ‡Þ¨_Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª_ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª_Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª".split("_"),weekStart:7,weekdaysShort:"އާދިއްތަ_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§Þްފަތި_Þ€ÞªÞ†ÞªÞƒÞª_Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª".split("_"),monthsShort:"Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©_ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©_Þ‰Þ§ÞƒÞ¨Þ—Þª_Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª_Þ‰Þ_Þ–Þ«Þ‚Þ°_Þ–ÞªÞÞ¦Þ‡Þ¨_Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª_ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª_Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª".split("_"),weekdaysMin:"Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ތެރÞÞŽÞ¦Þ‡Þ¨ %s",past:"Þ†ÞªÞƒÞ¨Þ‚Þ° %s",s:"Þިކުންތުކޮޅެއް",m:"Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°",mm:"Þ‰Þ¨Þ‚Þ¨Þ“Þª %d",h:"ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°",hh:"ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d",d:"Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°",dd:"Þ‹ÞªÞˆÞ¦ÞÞ° %d",M:"Þ‰Þ¦Þ€Þ¬Þ‡Þ°",MM:"Þ‰Þ¦ÞÞ° %d",y:"Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°",yy:"Þ‡Þ¦Þ€Þ¦ÞƒÞª %d"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{214:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"dv",weekdays:"އާދިއްތަ_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§Þްފަތި_Þ€ÞªÞ†ÞªÞƒÞª_Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª".split("_"),months:"Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©_ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©_Þ‰Þ§ÞƒÞ¨Þ—Þª_Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª_Þ‰Þ_Þ–Þ«Þ‚Þ°_Þ–ÞªÞÞ¦Þ‡Þ¨_Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª_ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª_Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª".split("_"),weekStart:7,weekdaysShort:"އާދިއްތަ_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°ÞŽÞ§ÞƒÞ¦_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§Þްފަތި_Þ€ÞªÞ†ÞªÞƒÞª_Þ€Þ®Þ‚Þ¨Þ€Þ¨ÞƒÞª".split("_"),monthsShort:"Þ–Þ¬Þ‚ÞªÞ‡Þ¦ÞƒÞ©_ÞŠÞ¬Þ„Þ°ÞƒÞªÞ‡Þ¦ÞƒÞ©_Þ‰Þ§ÞƒÞ¨Þ—Þª_Þ‡ÞÞ•Þ°ÞƒÞ©ÞÞª_Þ‰Þ_Þ–Þ«Þ‚Þ°_Þ–ÞªÞÞ¦Þ‡Þ¨_Þ‡Þ¯ÞŽÞ¦ÞÞ°Þ“Þª_ÞÞ¬Þ•Þ°Þ“Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‡Þ®Þ†Þ°Þ“Þ¯Þ„Þ¦ÞƒÞª_Þ‚Þ®ÞˆÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª_Þ‘Þ¨ÞÞ¬Þ‰Þ°Þ„Þ¦ÞƒÞª".split("_"),weekdaysMin:"Þ‡Þ§Þ‹Þ¨_Þ€Þ¯Þ‰Þ¦_Þ‡Þ¦Þ‚Þ°_Þ„ÞªÞ‹Þ¦_Þ„ÞªÞƒÞ§_Þ€ÞªÞ†Þª_Þ€Þ®Þ‚Þ¨".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"ތެރÞÞŽÞ¦Þ‡Þ¨ %s",past:"Þ†ÞªÞƒÞ¨Þ‚Þ° %s",s:"Þިކުންތުކޮޅެއް",m:"Þ‰Þ¨Þ‚Þ¨Þ“Þ¬Þ‡Þ°",mm:"Þ‰Þ¨Þ‚Þ¨Þ“Þª %d",h:"ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞ¬Þ‡Þ°",hh:"ÞŽÞ¦Þ‘Þ¨Þ‡Þ¨ÞƒÞª %d",d:"Þ‹ÞªÞˆÞ¦Þ€Þ¬Þ‡Þ°",dd:"Þ‹ÞªÞˆÞ¦ÞÞ° %d",M:"Þ‰Þ¦Þ€Þ¬Þ‡Þ°",MM:"Þ‰Þ¦ÞÞ° %d",y:"Þ‡Þ¦Þ€Þ¦ÞƒÞ¬Þ‡Þ°",yy:"Þ‡Þ¦Þ€Þ¦ÞƒÞª %d"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=dv.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/el.js b/src/conversejs/locales/dayjs/el.js index 54ddc2b5b979072e05465251b56e32534e026b16..cf586b88548e22d3989a73423fac8480e4393565 100644 --- a/src/conversejs/locales/dayjs/el.js +++ b/src/conversejs/locales/dayjs/el.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{173:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"el",weekdays:"ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο".split("_"),weekdaysShort:"ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα".split("_"),months:"ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος".split("_"),monthsShort:"Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Îοε_Δεκ".split("_"),ordinal:function(_){return _},weekStart:1,relativeTime:{future:"σε %s",past:"Ï€Ïιν %s",s:"μεÏικά δευτεÏόλεπτα",m:"Îνα λεπτό",mm:"%d λεπτά",h:"μία ÏŽÏα",hh:"%d ÏŽÏες",d:"μία μÎÏα",dd:"%d μÎÏες",M:"Îνα μήνα",MM:"%d μήνες",y:"Îνα χÏόνο",yy:"%d χÏόνια"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return _.locale(t,null,!0),t}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{215:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"el",weekdays:"ΚυÏιακή_ΔευτÎÏα_ΤÏίτη_ΤετάÏτη_Î Îμπτη_ΠαÏασκευή_Σάββατο".split("_"),weekdaysShort:"ΚυÏ_Δευ_ΤÏι_Τετ_Πεμ_ΠαÏ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_ΤÏ_Τε_Πε_Πα_Σα".split("_"),months:"ΙανουάÏιος_ΦεβÏουάÏιος_ΜάÏτιος_ΑπÏίλιος_Μάιος_ΙοÏνιος_ΙοÏλιος_ΑÏγουστος_ΣεπτÎμβÏιος_ΟκτώβÏιος_ÎοÎμβÏιος_ΔεκÎμβÏιος".split("_"),monthsShort:"Ιαν_Φεβ_ΜαÏ_ΑπÏ_Μαι_Ιουν_Ιουλ_Αυγ_Σεπτ_Οκτ_Îοε_Δεκ".split("_"),ordinal:function(_){return _},weekStart:1,relativeTime:{future:"σε %s",past:"Ï€Ïιν %s",s:"μεÏικά δευτεÏόλεπτα",m:"Îνα λεπτό",mm:"%d λεπτά",h:"μία ÏŽÏα",hh:"%d ÏŽÏες",d:"μία μÎÏα",dd:"%d μÎÏες",M:"Îνα μήνα",MM:"%d μήνες",y:"Îνα χÏόνο",yy:"%d χÏόνια"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"}};return _.locale(t,null,!0),t}(e(5))}}]); //# sourceMappingURL=el.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-SG.js b/src/conversejs/locales/dayjs/en-SG.js index bc41df062b5c45d5792c5eabcec91387cc6c28b9..61af7960bcae6569558f1ee2629db766a1564f99 100644 --- a/src/conversejs/locales/dayjs/en-SG.js +++ b/src/conversejs/locales/dayjs/en-SG.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{174:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-SG",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{216:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-SG",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-SG.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-au.js b/src/conversejs/locales/dayjs/en-au.js index e5eab95e10ff863da99c0895a4b85fccc1c95f42..fd6bfd6553f4a6f614dcf45f47a3d449b1c67c65 100644 --- a/src/conversejs/locales/dayjs/en-au.js +++ b/src/conversejs/locales/dayjs/en-au.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{175:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[29],{217:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-au",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-au.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-ca.js b/src/conversejs/locales/dayjs/en-ca.js index cbd4fe4a3a43d9cd448ca7d2848b609a7a60b951..102c0e6f37452e7a9e9b36b62aa7bb16eb5009cc 100644 --- a/src/conversejs/locales/dayjs/en-ca.js +++ b/src/conversejs/locales/dayjs/en-ca.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{176:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{218:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-ca",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-ca.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-gb.js b/src/conversejs/locales/dayjs/en-gb.js index 01638e9dc5f9f3e9d36165a6b51e5181771ecc74..42eb9e1b86a7800b43823161d1c3ae87da8e2f81 100644 --- a/src/conversejs/locales/dayjs/en-gb.js +++ b/src/conversejs/locales/dayjs/en-gb.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{177:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],{219:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-gb",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-gb.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-ie.js b/src/conversejs/locales/dayjs/en-ie.js index eb60f41ea93c677a357080f1c7e337a3d92ea838..72ae6fbe17db195546665f118e90f92e1a3911a5 100644 --- a/src/conversejs/locales/dayjs/en-ie.js +++ b/src/conversejs/locales/dayjs/en-ie.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{178:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],{220:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-ie",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-ie.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-il.js b/src/conversejs/locales/dayjs/en-il.js index 342e0e463b7eafa02b1888bf1c7a01d9a7642412..999401dbb19e1925739dccc8f87180b13c5bc681 100644 --- a/src/conversejs/locales/dayjs/en-il.js +++ b/src/conversejs/locales/dayjs/en-il.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{179:function(e,_,a){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(_,null,!0),_}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{221:function(e,_,a){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"en-il",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(_,null,!0),_}(a(5))}}]); //# sourceMappingURL=en-il.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-in.js b/src/conversejs/locales/dayjs/en-in.js index 5d2213d8d8595a6bfa3bbf82ecb55ac0b8f23cc4..a328a92c7dcd9ad4f8f9a24ebd1f5a312f981d2f 100644 --- a/src/conversejs/locales/dayjs/en-in.js +++ b/src/conversejs/locales/dayjs/en-in.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{180:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],{222:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-in",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-in.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-nz.js b/src/conversejs/locales/dayjs/en-nz.js index 09a5ff6c08aa5495be7fa5a7e5e3642bacb4583c..95df15151109f0ec1f4807729afaedb002404b8e 100644 --- a/src/conversejs/locales/dayjs/en-nz.js +++ b/src/conversejs/locales/dayjs/en-nz.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{181:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],{223:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-nz",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),weekStart:1,weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-nz.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en-tt.js b/src/conversejs/locales/dayjs/en-tt.js index 4409fc8359b55ee55122ca9ac6451bc854949326..0c22e8efe45cc27670f8543207779edfad7ddef3 100644 --- a/src/conversejs/locales/dayjs/en-tt.js +++ b/src/conversejs/locales/dayjs/en-tt.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{182:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],{224:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"en-tt",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekStart:1,yearStart:4,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(e){var a=["th","st","nd","rd"],_=e%100;return"["+e+(a[(_-20)%10]||a[_]||a[0])+"]"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=en-tt.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/en.js b/src/conversejs/locales/dayjs/en.js index 98abc944e3dd7e98e4bde9f3127293d396ec31a3..c8653469ecb3af9146e44f195e27e77124bb36d3 100644 --- a/src/conversejs/locales/dayjs/en.js +++ b/src/conversejs/locales/dayjs/en.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{183:function(e,_,a){e.exports=function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")}}()}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{225:function(e,_,a){e.exports=function(){"use strict";return{name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")}}()}}]); //# sourceMappingURL=en.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/eo.js b/src/conversejs/locales/dayjs/eo.js index c18217017e0e2b73ca89328f8906270c104e8f91..062791de59803e748feca536fb0d0f54bcdff425 100644 --- a/src/conversejs/locales/dayjs/eo.js +++ b/src/conversejs/locales/dayjs/eo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{184:function(o,a,e){o.exports=function(o){"use strict";o=o&&o.hasOwnProperty("default")?o.default:o;var a={name:"eo",weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato".split("_"),months:"januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dim_lun_mard_merk_ĵaÅ_ven_sab".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aÅg_sep_okt_nov_dec".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),ordinal:function(o){return o},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},relativeTime:{future:"post %s",past:"antaÅ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"}};return o.locale(a,null,!0),a}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],{226:function(o,a,e){o.exports=function(o){"use strict";o=o&&o.hasOwnProperty("default")?o.default:o;var a={name:"eo",weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato".split("_"),months:"januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dim_lun_mard_merk_ĵaÅ_ven_sab".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aÅg_sep_okt_nov_dec".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),ordinal:function(o){return o},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},relativeTime:{future:"post %s",past:"antaÅ %s",s:"sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"}};return o.locale(a,null,!0),a}(e(5))}}]); //# sourceMappingURL=eo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/es-do.js b/src/conversejs/locales/dayjs/es-do.js index 36e72c9042fa0ceb2748498c6887e637fe800953..bb47c31941077c42269100ee5c65bad5ee8b85ec 100644 --- a/src/conversejs/locales/dayjs/es-do.js +++ b/src/conversejs/locales/dayjs/es-do.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{185:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-do",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],{227:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-do",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekStart:1,relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=es-do.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/es-pr.js b/src/conversejs/locales/dayjs/es-pr.js index 96a7a331c62d5723dbeabe350941f44106c5ed32..bef3415b3647095c741e6d7fa6b4a6e65db055ce 100644 --- a/src/conversejs/locales/dayjs/es-pr.js +++ b/src/conversejs/locales/dayjs/es-pr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{186:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[40],{228:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-pr",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=es-pr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/es-us.js b/src/conversejs/locales/dayjs/es-us.js index 6ad30ae235150566c25e6b0c1b89dfe35d8caee6..dafb9c02de99f92c739a21ff0b905b3231d333d5 100644 --- a/src/conversejs/locales/dayjs/es-us.js +++ b/src/conversejs/locales/dayjs/es-us.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{187:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-us",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[41],{229:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es-us",weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=es-us.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/es.js b/src/conversejs/locales/dayjs/es.js index 547af82b0377eb379603adc6472efa0d1d1ddbb4..c3ae41ea3a09541077e7ceb05283d5ff171944f5 100644 --- a/src/conversejs/locales/dayjs/es.js +++ b/src/conversejs/locales/dayjs/es.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{188:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],{230:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"es",monthsShort:"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),months:"Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un dÃa",dd:"%d dÃas",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=es.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/et.js b/src/conversejs/locales/dayjs/et.js index a70caec1b843fbdddf02a58a54acde7fa9288f29..7731d79c3857fbd8eff8f0e463736b5a63271b20 100644 --- a/src/conversejs/locales/dayjs/et.js +++ b/src/conversejs/locales/dayjs/et.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{189:function(e,a,t){e.exports=function(e){"use strict";function a(e,a,t,s){var u={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:["%d minuti","%d minutit"],h:["ühe tunni","tund aega","üks tund"],hh:["%d tunni","%d tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:["%d kuu","%d kuud"],y:["ühe aasta","aasta","üks aasta"],yy:["%d aasta","%d aastat"]};return a?(u[t][2]?u[t][2]:u[t][1]).replace("%d",e):(s?u[t][0]:u[t][1]).replace("%d",e)}e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"et",weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(t,null,!0),t}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[42],{231:function(e,a,t){e.exports=function(e){"use strict";function a(e,a,t,s){var u={s:["mõne sekundi","mõni sekund","paar sekundit"],m:["ühe minuti","üks minut"],mm:["%d minuti","%d minutit"],h:["ühe tunni","tund aega","üks tund"],hh:["%d tunni","%d tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:["%d kuu","%d kuud"],y:["ühe aasta","aasta","üks aasta"],yy:["%d aasta","%d aastat"]};return a?(u[t][2]?u[t][2]:u[t][1]).replace("%d",e):(s?u[t][0]:u[t][1]).replace("%d",e)}e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"et",weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s pärast",past:"%s tagasi",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:"%d päeva",M:a,MM:a,y:a,yy:a},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(t,null,!0),t}(t(5))}}]); //# sourceMappingURL=et.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/eu.js b/src/conversejs/locales/dayjs/eu.js index 5cc9a4550e19d9b97ca6b92bad70da3c075c3f57..f3f4e2de845ffbaef901518caf0c781742d0dc7e 100644 --- a/src/conversejs/locales/dayjs/eu.js +++ b/src/conversejs/locales/dayjs/eu.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{190:function(a,t,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var t={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return a.locale(t,null,!0),t}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[43],{232:function(a,t,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var t={name:"eu",weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),weekStart:1,weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"}};return a.locale(t,null,!0),t}(e(5))}}]); //# sourceMappingURL=eu.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fa.js b/src/conversejs/locales/dayjs/fa.js index 2a95baff33fdfc8a6a1585aea2ff8cbe1072e44d..e91bbea99328c96ff14613a607c6ebd6a5b77abb 100644 --- a/src/conversejs/locales/dayjs/fa.js +++ b/src/conversejs/locales/dayjs/fa.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{191:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"fa",weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ÛŒ_د_س_Ú†_Ù¾_ج_Ø´".split("_"),weekStart:6,months:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{233:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"fa",weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ÛŒ_د_س_Ú†_Ù¾_ج_Ø´".split("_"),weekStart:6,months:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_Ùوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=fa.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fi.js b/src/conversejs/locales/dayjs/fi.js index 2560976f4d79e33eda8fef702f1f28dda249e5e1..32fef3f4774fb5ce7e2c79b6c9f04da7a066fe5e 100644 --- a/src/conversejs/locales/dayjs/fi.js +++ b/src/conversejs/locales/dayjs/fi.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{192:function(u,n,t){u.exports=function(u){"use strict";function n(u,n,t,i){var a={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"päivä",dd:"%d päivää",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän".split("_")},e={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"päivän",dd:"%d päivän",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän".split("_")},s=i&&!n?e:a,_=s[t];return u<10?_.replace("%d",s.numbers[u]):_.replace("%d",u)}u=u&&u.hasOwnProperty("default")?u.default:u;var t={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),ordinal:function(u){return u+"."},weekStart:1,relativeTime:{future:"%s päästä",past:"%s sitten",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"}};return u.locale(t,null,!0),t}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[45],{234:function(u,n,t){u.exports=function(u){"use strict";function n(u,n,t,i){var a={s:"muutama sekunti",m:"minuutti",mm:"%d minuuttia",h:"tunti",hh:"%d tuntia",d:"päivä",dd:"%d päivää",M:"kuukausi",MM:"%d kuukautta",y:"vuosi",yy:"%d vuotta",numbers:"nolla_yksi_kaksi_kolme_neljä_viisi_kuusi_seitsemän_kahdeksan_yhdeksän".split("_")},e={s:"muutaman sekunnin",m:"minuutin",mm:"%d minuutin",h:"tunnin",hh:"%d tunnin",d:"päivän",dd:"%d päivän",M:"kuukauden",MM:"%d kuukauden",y:"vuoden",yy:"%d vuoden",numbers:"nollan_yhden_kahden_kolmen_neljän_viiden_kuuden_seitsemän_kahdeksan_yhdeksän".split("_")},s=i&&!n?e:a,_=s[t];return u<10?_.replace("%d",s.numbers[u]):_.replace("%d",u)}u=u&&u.hasOwnProperty("default")?u.default:u;var t={name:"fi",weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),ordinal:function(u){return u+"."},weekStart:1,relativeTime:{future:"%s päästä",past:"%s sitten",s:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"}};return u.locale(t,null,!0),t}(t(5))}}]); //# sourceMappingURL=fi.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fo.js b/src/conversejs/locales/dayjs/fo.js index 07c8d4b5493487b12b30f96e5d30cffedfe58a1b..06dcf70001211d890683979feab41a9d3a41e427 100644 --- a/src/conversejs/locales/dayjs/fo.js +++ b/src/conversejs/locales/dayjs/fo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{193:function(r,a,e){r.exports=function(r){"use strict";r=r&&r.hasOwnProperty("default")?r.default:r;var a={name:"fo",weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur".split("_"),months:"januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_týs_mik_hós_frÃ_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),ordinal:function(r){return r},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s sÃðani",s:"fá sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein tÃmi",hh:"%d tÃmar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"}};return r.locale(a,null,!0),a}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[46],{235:function(r,a,e){r.exports=function(r){"use strict";r=r&&r.hasOwnProperty("default")?r.default:r;var a={name:"fo",weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur".split("_"),months:"januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_týs_mik_hós_frÃ_ley".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),ordinal:function(r){return r},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},relativeTime:{future:"um %s",past:"%s sÃðani",s:"fá sekund",m:"ein minuttur",mm:"%d minuttir",h:"ein tÃmi",hh:"%d tÃmar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"}};return r.locale(a,null,!0),a}(e(5))}}]); //# sourceMappingURL=fo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fr-ca.js b/src/conversejs/locales/dayjs/fr-ca.js index 87b9886525bd0a5a01312dec9988f52ebb3cd72c..f0a102a451613a38c1238286acc9f6af19b1a0fd 100644 --- a/src/conversejs/locales/dayjs/fr-ca.js +++ b/src/conversejs/locales/dayjs/fr-ca.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{194:function(e,_,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr-ca",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return e.locale(_,null,!0),_}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[48],{236:function(e,_,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr-ca",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return e.locale(_,null,!0),_}(n(5))}}]); //# sourceMappingURL=fr-ca.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fr-ch.js b/src/conversejs/locales/dayjs/fr-ch.js index ecfc159dfc711ca3060328f7109d32878d038442..cbf1d56acb41dbb794c178a1f6b5f9ccb73704f5 100644 --- a/src/conversejs/locales/dayjs/fr-ch.js +++ b/src/conversejs/locales/dayjs/fr-ch.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{195:function(e,_,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return e.locale(_,null,!0),_}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[49],{237:function(e,_,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr-ch",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),weekStart:1,weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"}};return e.locale(_,null,!0),_}(n(5))}}]); //# sourceMappingURL=fr-ch.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fr.js b/src/conversejs/locales/dayjs/fr.js index 68b3709212266390edaee453222e67326f65d8b7..4484ca64e239340a3591e38a49476020d55134eb 100644 --- a/src/conversejs/locales/dayjs/fr.js +++ b/src/conversejs/locales/dayjs/fr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{196:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}};return e.locale(_,null,!0),_}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[47],{238:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"fr",weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinal:function(e){return e+(1===e?"er":"")}};return e.locale(_,null,!0),_}(r(5))}}]); //# sourceMappingURL=fr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/fy.js b/src/conversejs/locales/dayjs/fy.js index 60c53de54ecd9b99ff29aa0adde4e0a8e5672b46..ea47ff5864e151656a169820be1807f1afc93541 100644 --- a/src/conversejs/locales/dayjs/fy.js +++ b/src/conversejs/locales/dayjs/fy.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{197:function(e,n,i){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return e.locale(n,null,!0),n}(i(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[50],{239:function(e,n,i){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"fy",weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),weekStart:1,weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"}};return e.locale(n,null,!0),n}(i(5))}}]); //# sourceMappingURL=fy.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ga.js b/src/conversejs/locales/dayjs/ga.js index 42214bbc539fb879de4b9f92c7eff2b704e9f0bc..e11e64ab9dbdea8fbf71c8df19153b92107a334c 100644 --- a/src/conversejs/locales/dayjs/ga.js +++ b/src/conversejs/locales/dayjs/ga.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{198:function(a,i,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"ga",weekdays:"Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn".split("_"),months:"Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_Mái_Céa_Déa_hAo_Sat".split("_"),monthsShort:"Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_Má_Ce_Dé_hA_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mÃ",MM:"%d mÃ",y:"bliain",yy:"%d bliain"}};return a.locale(i,null,!0),i}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[51],{240:function(a,i,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"ga",weekdays:"Dé Domhnaigh_Dé Luain_Dé Máirt_Dé Céadaoin_Déardaoin_Dé hAoine_Dé Satharn".split("_"),months:"Eanáir_Feabhra_Márta_Aibreán_Bealtaine_Méitheamh_Iúil_Lúnasa_Meán Fómhair_Deaireadh Fómhair_Samhain_Nollaig".split("_"),weekStart:1,weekdaysShort:"Dom_Lua_Mái_Céa_Déa_hAo_Sat".split("_"),monthsShort:"Eaná_Feab_Márt_Aibr_Beal_Méit_Iúil_Lúna_Meán_Deai_Samh_Noll".split("_"),weekdaysMin:"Do_Lu_Má_Ce_Dé_hA_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mÃ",MM:"%d mÃ",y:"bliain",yy:"%d bliain"}};return a.locale(i,null,!0),i}(_(5))}}]); //# sourceMappingURL=ga.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/gd.js b/src/conversejs/locales/dayjs/gd.js index 66d196227510cff3f0b1eaa5727d69324cd6fa4a..372b343b44e2d4bc8a51f61ef4b314bfcbdba40f 100644 --- a/src/conversejs/locales/dayjs/gd.js +++ b/src/conversejs/locales/dayjs/gd.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{199:function(a,i,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"gd",weekdays:"Didòmhnaich_Diluain_Dimà irt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am Mà rt_An Giblean_An Cèitean_An t-Ã’gmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dà mhair_An t-Samhain_An Dùbhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_Mà rt_Gibl_Cèit_Ã’gmh_Iuch_Lùn_Sult_Dà mh_Samh_Dùbh".split("_"),weekdaysMin:"Dò_Lu_Mà _Ci_Ar_Ha_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"}};return a.locale(i,null,!0),i}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{241:function(a,i,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"gd",weekdays:"Didòmhnaich_Diluain_Dimà irt_Diciadain_Diardaoin_Dihaoine_Disathairne".split("_"),months:"Am Faoilleach_An Gearran_Am Mà rt_An Giblean_An Cèitean_An t-Ã’gmhios_An t-Iuchar_An Lùnastal_An t-Sultain_An Dà mhair_An t-Samhain_An Dùbhlachd".split("_"),weekStart:1,weekdaysShort:"Did_Dil_Dim_Dic_Dia_Dih_Dis".split("_"),monthsShort:"Faoi_Gear_Mà rt_Gibl_Cèit_Ã’gmh_Iuch_Lùn_Sult_Dà mh_Samh_Dùbh".split("_"),weekdaysMin:"Dò_Lu_Mà _Ci_Ar_Ha_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"}};return a.locale(i,null,!0),i}(n(5))}}]); //# sourceMappingURL=gd.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/gl.js b/src/conversejs/locales/dayjs/gl.js index afe2728f7f8a5a58d60e1241d4f9f3a641d812bc..6ae2b029ce7f9e63306f358b24b5eb1332d4391f 100644 --- a/src/conversejs/locales/dayjs/gl.js +++ b/src/conversejs/locales/dayjs/gl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{200:function(_,e,o){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"gl",weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return _.locale(e,null,!0),e}(o(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[53],{242:function(_,e,o){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"gl",weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),weekStart:1,weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"}};return _.locale(e,null,!0),e}(o(5))}}]); //# sourceMappingURL=gl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/gom-latn.js b/src/conversejs/locales/dayjs/gom-latn.js index 1b3b46b163395008d8c4ca6804663fb35250b883..1bab71bd4499d911f07736873eabd0fae3c83b31 100644 --- a/src/conversejs/locales/dayjs/gom-latn.js +++ b/src/conversejs/locales/dayjs/gom-latn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{201:function(_,a,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return _.locale(a,null,!0),a}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[54],{243:function(_,a,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"gom-latn",weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),weekStart:1,weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"}};return _.locale(a,null,!0),a}(t(5))}}]); //# sourceMappingURL=gom-latn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/gu.js b/src/conversejs/locales/dayjs/gu.js index 03e98886f24df69d8fc74777865cfd703da023ec..af9e5b427a296f29652133d10d5d412b8e49a160 100644 --- a/src/conversejs/locales/dayjs/gu.js +++ b/src/conversejs/locales/dayjs/gu.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{202:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"gu",weekdays:"રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર".split("_"),months:"જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ".split("_"),monthsShort:"જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.".split("_"),weekdaysMin:"ર_સો_મં_બà«_ગà«_શà«_શ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm વાગà«àª¯à«‡",LTS:"A h:mm:ss વાગà«àª¯à«‡",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગà«àª¯à«‡",LLLL:"dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમà«àª• પળો",m:"àªàª• મિનિટ",mm:"%d મિનિટ",h:"àªàª• કલાક",hh:"%d કલાક",d:"àªàª• દિવસ",dd:"%d દિવસ",M:"àªàª• મહિનો",MM:"%d મહિનો",y:"àªàª• વરà«àª·",yy:"%d વરà«àª·"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[55],{244:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"gu",weekdays:"રવિવાર_સોમવાર_મંગળવાર_બà«àª§à«àªµàª¾àª°_ગà«àª°à«àªµàª¾àª°_શà«àª•à«àª°àªµàª¾àª°_શનિવાર".split("_"),months:"જાનà«àª¯à«àª†àª°à«€_ફેબà«àª°à«àª†àª°à«€_મારà«àªš_àªàªªà«àª°àª¿àª²_મે_જૂન_જà«àª²àª¾àªˆ_ઑગસà«àªŸ_સપà«àªŸà«‡àª®à«àª¬àª°_ઑકà«àªŸà«àª¬àª°_નવેમà«àª¬àª°_ડિસેમà«àª¬àª°".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બà«àª§à«_ગà«àª°à«_શà«àª•à«àª°_શનિ".split("_"),monthsShort:"જાનà«àª¯à«._ફેબà«àª°à«._મારà«àªš_àªàªªà«àª°àª¿._મે_જૂન_જà«àª²àª¾._ઑગ._સપà«àªŸà«‡._ઑકà«àªŸà«._નવે._ડિસે.".split("_"),weekdaysMin:"ર_સો_મં_બà«_ગà«_શà«_શ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm વાગà«àª¯à«‡",LTS:"A h:mm:ss વાગà«àª¯à«‡",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગà«àª¯à«‡",LLLL:"dddd, D MMMM YYYY, A h:mm વાગà«àª¯à«‡"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમà«àª• પળો",m:"àªàª• મિનિટ",mm:"%d મિનિટ",h:"àªàª• કલાક",hh:"%d કલાક",d:"àªàª• દિવસ",dd:"%d દિવસ",M:"àªàª• મહિનો",MM:"%d મહિનો",y:"àªàª• વરà«àª·",yy:"%d વરà«àª·"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=gu.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/he.js b/src/conversejs/locales/dayjs/he.js index e0d80fcf4c476ce664f616ed8c780205b8492f57..5e9789711cf6c842d8b8b43268c0c3d4fcf0ec2e 100644 --- a/src/conversejs/locales/dayjs/he.js +++ b/src/conversejs/locales/dayjs/he.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{203:function(Y,M,_){Y.exports=function(Y){"use strict";Y=Y&&Y.hasOwnProperty("default")?Y.default:Y;var M={name:"he",weekdays:"ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"×׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳".split("_"),months:"×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר".split("_"),monthsShort:"×™× ×•_פבר_מרץ_×פר_מ××™_×™×•× _יול_×וג_ספט_×וק_× ×•×‘_דצמ".split("_"),relativeTime:{future:"בעוד %s",past:"×œ×¤× ×™ %s",s:"כמה ×©× ×™×•×ª",m:"דקה",mm:"%d דקות",h:"שעה",hh:"%d שעות",d:"יו×",dd:"%d ימי×",M:"חודש",MM:"%d חודשי×",y:"×©× ×”",yy:"%d ×©× ×™×"},ordinal:function(Y){return Y},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return Y.locale(M,null,!0),M}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[56],{245:function(Y,M,_){Y.exports=function(Y){"use strict";Y=Y&&Y.hasOwnProperty("default")?Y.default:Y;var M={name:"he",weekdays:"ר×שון_×©× ×™_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"×׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"×׳_ב׳_ג׳_ד׳_ה׳_ו_ש׳".split("_"),months:"×™× ×•×ר_פברו×ר_מרץ_×פריל_מ××™_×™×•× ×™_יולי_×וגוסט_ספטמבר_×וקטובר_× ×•×‘×ž×‘×¨_דצמבר".split("_"),monthsShort:"×™× ×•_פבר_מרץ_×פר_מ××™_×™×•× _יול_×וג_ספט_×וק_× ×•×‘_דצמ".split("_"),relativeTime:{future:"בעוד %s",past:"×œ×¤× ×™ %s",s:"כמה ×©× ×™×•×ª",m:"דקה",mm:"%d דקות",h:"שעה",hh:"%d שעות",d:"יו×",dd:"%d ימי×",M:"חודש",MM:"%d חודשי×",y:"×©× ×”",yy:"%d ×©× ×™×"},ordinal:function(Y){return Y},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"}};return Y.locale(M,null,!0),M}(_(5))}}]); //# sourceMappingURL=he.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/hi.js b/src/conversejs/locales/dayjs/hi.js index cd66a152d6943ac055b8df2156902500e6d6d206..3b3863299e0f1da2dbe89dc0914a149ab10e099d 100644 --- a/src/conversejs/locales/dayjs/hi.js +++ b/src/conversejs/locales/dayjs/hi.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{204:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"hi",weekdays:"रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार".split("_"),months:"जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°".split("_"),weekdaysShort:"रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि".split("_"),monthsShort:"जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.".split("_"),weekdaysMin:"र_सो_मं_बà¥_गà¥_शà¥_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},relativeTime:{future:"%s में",past:"%s पहले",s:"कà¥à¤› ही कà¥à¤·à¤£",m:"à¤à¤• मिनट",mm:"%d मिनट",h:"à¤à¤• घंटा",hh:"%d घंटे",d:"à¤à¤• दिन",dd:"%d दिन",M:"à¤à¤• महीने",MM:"%d महीने",y:"à¤à¤• वरà¥à¤·",yy:"%d वरà¥à¤·"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[57],{246:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"hi",weekdays:"रविवार_सोमवार_मंगलवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार".split("_"),months:"जनवरी_फ़रवरी_मारà¥à¤š_अपà¥à¤°à¥ˆà¤²_मई_जून_जà¥à¤²à¤¾à¤ˆ_अगसà¥à¤¤_सितमà¥à¤¬à¤°_अकà¥à¤Ÿà¥‚बर_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°".split("_"),weekdaysShort:"रवि_सोम_मंगल_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि".split("_"),monthsShort:"जन._फ़र._मारà¥à¤š_अपà¥à¤°à¥ˆ._मई_जून_जà¥à¤²._अग._सित._अकà¥à¤Ÿà¥‚._नव._दिस.".split("_"),weekdaysMin:"र_सो_मं_बà¥_गà¥_शà¥_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},relativeTime:{future:"%s में",past:"%s पहले",s:"कà¥à¤› ही कà¥à¤·à¤£",m:"à¤à¤• मिनट",mm:"%d मिनट",h:"à¤à¤• घंटा",hh:"%d घंटे",d:"à¤à¤• दिन",dd:"%d दिन",M:"à¤à¤• महीने",MM:"%d महीने",y:"à¤à¤• वरà¥à¤·",yy:"%d वरà¥à¤·"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=hi.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/hr.js b/src/conversejs/locales/dayjs/hr.js index 1cc249194cd4d25e1fc3b638afe6edd2ae060fa2..87518c6fd13534ab80e8893fdf9a08f470aba750 100644 --- a/src/conversejs/locales/dayjs/hr.js +++ b/src/conversejs/locales/dayjs/hr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{205:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"hr",weekdays:"Nedjelja_Ponedjeljak_Utorak_Srijeda_ÄŒetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sri._ÄŒet._Pet._Sub.".split("_"),weekdaysMin:"Ne_Po_Ut_Sr_ÄŒe_Pe_Su".split("_"),months:"SijeÄanj_VeljaÄa_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac".split("_"),monthsShort:"Sij._Velj._Ožu._Tra._Svi._Lip._Srp._Kol._Ruj._Lis._Stu._Pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[58],{247:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"hr",weekdays:"Nedjelja_Ponedjeljak_Utorak_Srijeda_ÄŒetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sri._ÄŒet._Pet._Sub.".split("_"),weekdaysMin:"Ne_Po_Ut_Sr_ÄŒe_Pe_Su".split("_"),months:"SijeÄanj_VeljaÄa_Ožujak_Travanj_Svibanj_Lipanj_Srpanj_Kolovoz_Rujan_Listopad_Studeni_Prosinac".split("_"),monthsShort:"Sij._Velj._Ožu._Tra._Svi._Lip._Srp._Kol._Ruj._Lis._Stu._Pro.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},relativeTime:{future:"za %s",past:"prije %s",s:"sekunda",m:"minuta",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mjesec",MM:"%d mjeseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=hr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ht.js b/src/conversejs/locales/dayjs/ht.js index d011006bd74d248c141d6c87535da3291cb648d0..9a1fe418b769798570d17978f7dc945ec6e7ffcb 100644 --- a/src/conversejs/locales/dayjs/ht.js +++ b/src/conversejs/locales/dayjs/ht.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{206:function(n,e,_){n.exports=function(n){"use strict";n=n&&n.hasOwnProperty("default")?n.default:n;var e={name:"ht",weekdays:"dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._mèk._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_mè_je_va_sa".split("_"),ordinal:function(n){return n},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"kèk segond",m:"yon minit",mm:"%d minit",h:"inèdtan",hh:"%d zè",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return n.locale(e,null,!0),e}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[59],{248:function(n,e,_){n.exports=function(n){"use strict";n=n&&n.hasOwnProperty("default")?n.default:n;var e={name:"ht",weekdays:"dimanch_lendi_madi_mèkredi_jedi_vandredi_samdi".split("_"),months:"janvye_fevriye_mas_avril_me_jen_jiyè_out_septanm_oktòb_novanm_desanm".split("_"),weekdaysShort:"dim._len._mad._mèk._jed._van._sam.".split("_"),monthsShort:"jan._fev._mas_avr._me_jen_jiyè._out_sept._okt._nov._des.".split("_"),weekdaysMin:"di_le_ma_mè_je_va_sa".split("_"),ordinal:function(n){return n},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"nan %s",past:"sa gen %s",s:"kèk segond",m:"yon minit",mm:"%d minit",h:"inèdtan",hh:"%d zè",d:"yon jou",dd:"%d jou",M:"yon mwa",MM:"%d mwa",y:"yon ane",yy:"%d ane"}};return n.locale(e,null,!0),e}(_(5))}}]); //# sourceMappingURL=ht.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/hu.js b/src/conversejs/locales/dayjs/hu.js index 94fe513dc2b7870aa893c95e796a9991c62c6a53..7a505fd741c45d2d667e96311ac97379f5027ac3 100644 --- a/src/conversejs/locales/dayjs/hu.js +++ b/src/conversejs/locales/dayjs/hu.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{207:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"hu",weekdays:"vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s múlva",past:"%s",s:"néhány másodperc",m:"egy perc",mm:"%d perc",h:"egy óra",hh:"%d óra",d:"egy nap",dd:"%d nap",M:"egy hónap",MM:"%d hónap",y:"egy éve",yy:"%d év"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{249:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"hu",weekdays:"vasárnap_hétfÅ‘_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"%s múlva",past:"%s",s:"néhány másodperc",m:"egy perc",mm:"%d perc",h:"egy óra",hh:"%d óra",d:"egy nap",dd:"%d nap",M:"egy hónap",MM:"%d hónap",y:"egy éve",yy:"%d év"},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=hu.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/hy-am.js b/src/conversejs/locales/dayjs/hy-am.js index 38d6925effd0804c81d9a92e16149810a9762a05..1418cd3d90484c7bca5eed5f41014cc0305b787a 100644 --- a/src/conversejs/locales/dayjs/hy-am.js +++ b/src/conversejs/locales/dayjs/hy-am.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{208:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"hy-am",weekdays:"Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©".split("_"),months:"Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«".split("_"),weekStart:1,weekdaysShort:"Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),monthsShort:"Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿".split("_"),weekdaysMin:"Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY Õ©.",LLL:"D MMMM YYYY Õ©., HH:mm",LLLL:"dddd, D MMMM YYYY Õ©., HH:mm"},relativeTime:{future:"%s Õ°Õ¥Õ¿Õ¸",past:"%s Õ¡Õ¼Õ¡Õ»",s:"Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶",m:"Ö€Õ¸ÕºÕ¥",mm:"%d Ö€Õ¸ÕºÕ¥",h:"ÕªÕ¡Õ´",hh:"%d ÕªÕ¡Õ´",d:"Ö…Ö€",dd:"%d Ö…Ö€",M:"Õ¡Õ´Õ«Õ½",MM:"%d Õ¡Õ´Õ«Õ½",y:"Õ¿Õ¡Ö€Õ«",yy:"%d Õ¿Õ¡Ö€Õ«"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[61],{250:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"hy-am",weekdays:"Õ¯Õ«Ö€Õ¡Õ¯Õ«_Õ¥Ö€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«_Õ¥Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸Ö‚Ö€Õ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©".split("_"),months:"Õ°Õ¸Ö‚Õ¶Õ¾Õ¡Ö€Õ«_ÖƒÕ¥Õ¿Ö€Õ¾Õ¡Ö€Õ«_Õ´Õ¡Ö€Õ¿Õ«_Õ¡ÕºÖ€Õ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸Ö‚Õ¶Õ«Õ½Õ«_Õ°Õ¸Ö‚Õ¬Õ«Õ½Õ«_Ö…Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€Õ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€Õ«".split("_"),weekStart:1,weekdaysShort:"Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),monthsShort:"Õ°Õ¶Õ¾_ÖƒÕ¿Ö€_Õ´Ö€Õ¿_Õ¡ÕºÖ€_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö…Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿".split("_"),weekdaysMin:"Õ¯Ö€Õ¯_Õ¥Ö€Õ¯_Õ¥Ö€Ö„_Õ¹Ö€Ö„_Õ°Õ¶Õ£_Õ¸Ö‚Ö€Õ¢_Õ·Õ¢Õ©".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY Õ©.",LLL:"D MMMM YYYY Õ©., HH:mm",LLLL:"dddd, D MMMM YYYY Õ©., HH:mm"},relativeTime:{future:"%s Õ°Õ¥Õ¿Õ¸",past:"%s Õ¡Õ¼Õ¡Õ»",s:"Õ´Õ« Ö„Õ¡Õ¶Õ« Õ¾Õ¡ÕµÖ€Õ¯ÕµÕ¡Õ¶",m:"Ö€Õ¸ÕºÕ¥",mm:"%d Ö€Õ¸ÕºÕ¥",h:"ÕªÕ¡Õ´",hh:"%d ÕªÕ¡Õ´",d:"Ö…Ö€",dd:"%d Ö…Ö€",M:"Õ¡Õ´Õ«Õ½",MM:"%d Õ¡Õ´Õ«Õ½",y:"Õ¿Õ¡Ö€Õ«",yy:"%d Õ¿Õ¡Ö€Õ«"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=hy-am.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/id.js b/src/conversejs/locales/dayjs/id.js index f3fef7243f9495c2065c1f4f9a8521bbea686937..dee6594758d53840f01f64d7072cbe5a20068efd 100644 --- a/src/conversejs/locales/dayjs/id.js +++ b/src/conversejs/locales/dayjs/id.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{209:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[62],{251:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"id",weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(e){return e+"."}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=id.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/index-d-ts.js b/src/conversejs/locales/dayjs/index-d-ts.js index a56d95b0831ac515c0d62f1c522a7c8820e93283..8864bcd17932e3273b85f66ad908d744ddd86681 100644 --- a/src/conversejs/locales/dayjs/index-d-ts.js +++ b/src/conversejs/locales/dayjs/index-d-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{455:function(e,n){throw new Error("Module parse failed: Unexpected token (3:8)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n| /// <reference path=\"./types.d.ts\" />\n| \n> declare module 'dayjs/locale/*' {\n| namespace locale {\n| interface Locale extends ILocale {}")}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[145],{544:function(e,n){throw new Error("Module parse failed: Unexpected token (3:8)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n| /// <reference path=\"./types.d.ts\" />\n| \n> declare module 'dayjs/locale/*' {\n| namespace locale {\n| interface Locale extends ILocale {}")}}]); //# sourceMappingURL=index-d-ts.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/is.js b/src/conversejs/locales/dayjs/is.js index 41ae39becfdbceabf62e14b8dd57399a68a32dd3..d97486f1c259309ac7dc49e859d957974a16fd46 100644 --- a/src/conversejs/locales/dayjs/is.js +++ b/src/conversejs/locales/dayjs/is.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{210:function(_,r,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var r={name:"is",weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),months:"janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),monthsShort:"jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"}};return _.locale(r,null,!0),r}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[63],{252:function(_,r,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var r={name:"is",weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),months:"janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember".split("_"),weekStart:1,weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),monthsShort:"jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"}};return _.locale(r,null,!0),r}(a(5))}}]); //# sourceMappingURL=is.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/it-ch.js b/src/conversejs/locales/dayjs/it-ch.js index fb9038146b5bb296dc702fc7e9dd615c94a9193e..cd15dab304c0f30d0388aa2c7905499e6ac0db1a 100644 --- a/src/conversejs/locales/dayjs/it-ch.js +++ b/src/conversejs/locales/dayjs/it-ch.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{211:function(e,_,o){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"it-ch",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return e.locale(_,null,!0),_}(o(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[65],{253:function(e,_,o){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"it-ch",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"}};return e.locale(_,null,!0),_}(o(5))}}]); //# sourceMappingURL=it-ch.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/it.js b/src/conversejs/locales/dayjs/it.js index d56e4ce7890388d5aa93f53c398e0b5481aa5f4c..4d80a1d79cd26bb76ffc8304f88b1208053f759c 100644 --- a/src/conversejs/locales/dayjs/it.js +++ b/src/conversejs/locales/dayjs/it.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{212:function(e,o,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var o={name:"it",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"º"}};return e.locale(o,null,!0),o}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[64],{254:function(e,o,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var o={name:"it",weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),weekStart:1,monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"tra %s",past:"%s fa",s:"qualche secondo",m:"un minuto",mm:"%d minuti",h:"un' ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinal:function(e){return e+"º"}};return e.locale(o,null,!0),o}(_(5))}}]); //# sourceMappingURL=it.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ja.js b/src/conversejs/locales/dayjs/ja.js index 7ec943ca9e4787aa8ad17859624a64d01df4d8ad..051e5368ef7740304edf10212950944b28237a82 100644 --- a/src/conversejs/locales/dayjs/ja.js +++ b/src/conversejs/locales/dayjs/ja.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{213:function(_,Y,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var Y={name:"ja",weekdays:"日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),weekdaysMin:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥ dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥(ddd) HH:mm"},meridiem:function(_){return _<12?"åˆå‰":"åˆå¾Œ"},relativeTime:{future:"%s後",past:"%så‰",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1æ—¥",dd:"%dæ—¥",M:"1ヶ月",MM:"%dヶ月",y:"1å¹´",yy:"%då¹´"}};return _.locale(Y,null,!0),Y}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[66],{255:function(_,Y,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var Y={name:"ja",weekdays:"日曜日_月曜日_ç«æ›œæ—¥_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),weekdaysMin:"æ—¥_月_ç«_æ°´_木_金_土".split("_"),months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥ dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥(ddd) HH:mm"},meridiem:function(_){return _<12?"åˆå‰":"åˆå¾Œ"},relativeTime:{future:"%s後",past:"%så‰",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1æ—¥",dd:"%dæ—¥",M:"1ヶ月",MM:"%dヶ月",y:"1å¹´",yy:"%då¹´"}};return _.locale(Y,null,!0),Y}(t(5))}}]); //# sourceMappingURL=ja.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/jv.js b/src/conversejs/locales/dayjs/jv.js index f26080c1dbe5d4f10a97e4fdd56ac44863e7bc77..8758ac987b4c952ae870f1311adc37d3b3677efb 100644 --- a/src/conversejs/locales/dayjs/jv.js +++ b/src/conversejs/locales/dayjs/jv.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{214:function(e,n,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return e.locale(n,null,!0),n}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{256:function(e,n,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"jv",weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),weekStart:1,weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),ordinal:function(e){return e},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"}};return e.locale(n,null,!0),n}(_(5))}}]); //# sourceMappingURL=jv.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ka.js b/src/conversejs/locales/dayjs/ka.js index 8f2e6a3bfb4ab6ec11c1c0d04cbfb45a0cbee7d8..086f4e46f4d9f38b8a5655a255b43960453f0352 100644 --- a/src/conversejs/locales/dayjs/ka.js +++ b/src/conversejs/locales/dayjs/ka.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{215:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ka",weekdays:"კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი".split("_"),weekdaysShort:"კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘".split("_"),weekdaysMin:"კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ".split("_"),months:"იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი".split("_"),monthsShort:"იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s შემდეგ",past:"%s წინ",s:"წáƒáƒ›áƒ˜",m:"წუთი",mm:"%d წუთი",h:"სáƒáƒáƒ—ი",hh:"%d სáƒáƒáƒ—ის",d:"დღეს",dd:"%d დღის გáƒáƒœáƒ›áƒáƒ•áƒšáƒáƒ‘áƒáƒ¨áƒ˜",M:"თვის",MM:"%d თვის",y:"წელი",yy:"%d წლის"},ordinal:function(_){return _}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[68],{257:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ka",weekdays:"კვირáƒ_áƒáƒ შáƒáƒ‘áƒáƒ—ი_სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი_áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი_ხუთშáƒáƒ‘áƒáƒ—ი_პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი_შáƒáƒ‘áƒáƒ—ი".split("_"),weekdaysShort:"კვი_áƒáƒ შ_სáƒáƒ›_áƒáƒ—ხ_ხუთ_პáƒáƒ _შáƒáƒ‘".split("_"),weekdaysMin:"კვ_áƒáƒ _სáƒ_áƒáƒ—_ხუ_პáƒ_შáƒ".split("_"),months:"იáƒáƒœáƒ•áƒáƒ ი_თებერვáƒáƒšáƒ˜_მáƒáƒ ტი_áƒáƒžáƒ ილი_მáƒáƒ˜áƒ¡áƒ˜_ივნისი_ივლისი_áƒáƒ’ვისტáƒ_სექტემბერი_áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი_ნáƒáƒ”მბერი_დეკემბერი".split("_"),monthsShort:"იáƒáƒœ_თებ_მáƒáƒ _áƒáƒžáƒ _მáƒáƒ˜_ივნ_ივლ_áƒáƒ’ვ_სექ_áƒáƒ¥áƒ¢_ნáƒáƒ”_დეკ".split("_"),weekStart:1,formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"%s შემდეგ",past:"%s წინ",s:"წáƒáƒ›áƒ˜",m:"წუთი",mm:"%d წუთი",h:"სáƒáƒáƒ—ი",hh:"%d სáƒáƒáƒ—ის",d:"დღეს",dd:"%d დღის გáƒáƒœáƒ›áƒáƒ•áƒšáƒáƒ‘áƒáƒ¨áƒ˜",M:"თვის",MM:"%d თვის",y:"წელი",yy:"%d წლის"},ordinal:function(_){return _}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ka.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/kk.js b/src/conversejs/locales/dayjs/kk.js index dbb9d5f2161206cec9af08e500df36ad19741936..3f3ccab299cc8213706ea17fee6e4a90ebd4caa1 100644 --- a/src/conversejs/locales/dayjs/kk.js +++ b/src/conversejs/locales/dayjs/kk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{216:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"kk",weekdays:"жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі".split("_"),weekdaysShort:"жек_дүй_Ñей_Ñәр_бей_жұм_Ñен".split("_"),weekdaysMin:"жк_дй_Ñй_ÑÑ€_бй_жм_Ñн".split("_"),months:"қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан".split("_"),monthsShort:"қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekStart:1,relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше Ñекунд",m:"бір минут",mm:"%d минут",h:"бір Ñағат",hh:"%d Ñағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[69],{258:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"kk",weekdays:"жекÑенбі_дүйÑенбі_ÑейÑенбі_ÑәрÑенбі_бейÑенбі_жұма_Ñенбі".split("_"),weekdaysShort:"жек_дүй_Ñей_Ñәр_бей_жұм_Ñен".split("_"),weekdaysMin:"жк_дй_Ñй_ÑÑ€_бй_жм_Ñн".split("_"),months:"қаңтар_ақпан_наурыз_Ñәуір_мамыр_мауÑым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқÑан".split("_"),monthsShort:"қаң_ақп_нау_Ñәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekStart:1,relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше Ñекунд",m:"бір минут",mm:"%d минут",h:"бір Ñағат",hh:"%d Ñағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=kk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/km.js b/src/conversejs/locales/dayjs/km.js index 7594a7a38ab5feac8989f64c5896b246dc19131f..fccfc0f4033cdcc351bd86d5a9cd57286c9a80a8 100644 --- a/src/conversejs/locales/dayjs/km.js +++ b/src/conversejs/locales/dayjs/km.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{217:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"km",weekdays:"អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ".split("_"),months:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),weekStart:1,weekdaysShort:"អា_áž…_អ_áž–_ព្រ_សុ_ស".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),weekdaysMin:"អា_áž…_អ_áž–_ព្រ_សុ_ស".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%sទៀáž",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយážáŸ’ងៃ",dd:"%d ážáŸ’ងៃ",M:"មួយážáŸ‚",MM:"%d ážáŸ‚",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[70],{259:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"km",weekdays:"អាទិážáŸ’áž™_áž…áŸáž“្ទ_អង្គារ_ពុធ_ព្រហស្បážáž·áŸ_សុក្រ_សៅរáŸ".split("_"),months:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),weekStart:1,weekdaysShort:"អា_áž…_អ_áž–_ព្រ_សុ_ស".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មáŸážŸáž¶_ឧសភា_មិážáž»áž“ា_កក្កដា_សីហា_កញ្ញា_ážáž»áž›áž¶_វិច្ឆិកា_ធ្នូ".split("_"),weekdaysMin:"អា_áž…_អ_áž–_ព្រ_សុ_ស".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%sទៀáž",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយážáŸ’ងៃ",dd:"%d ážáŸ’ងៃ",M:"មួយážáŸ‚",MM:"%d ážáŸ‚",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=km.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/kn.js b/src/conversejs/locales/dayjs/kn.js index 0a0fc0ae0ed9c0805d4a8f821513f38c0e9d0475..50d28f24709f5d3b203f1914a710bc2eb5cb4dd9 100644 --- a/src/conversejs/locales/dayjs/kn.js +++ b/src/conversejs/locales/dayjs/kn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{218:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"kn",weekdays:"à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ".split("_"),months:"ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³".split("_"),weekdaysShort:"à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ".split("_"),monthsShort:"ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ".split("_"),weekdaysMin:"à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವೠಕà³à²·à²£à²—ಳà³",m:"ಒಂದೠನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದೠಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದೠದಿನ",dd:"%d ದಿನ",M:"ಒಂದೠತಿಂಗಳà³",MM:"%d ತಿಂಗಳà³",y:"ಒಂದೠವರà³à²·",yy:"%d ವರà³à²·"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[71],{260:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"kn",weekdays:"à²à²¾à²¨à³à²µà²¾à²°_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬà³à²§à²µà²¾à²°_ಗà³à²°à³à²µà²¾à²°_ಶà³à²•à³à²°à²µà²¾à²°_ಶನಿವಾರ".split("_"),months:"ಜನವರಿ_ಫೆಬà³à²°à²µà²°à²¿_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚ಬರà³_ಅಕà³à²Ÿà³†à³‚ೕಬರà³_ನವೆಂಬರà³_ಡಿಸೆಂಬರà³".split("_"),weekdaysShort:"à²à²¾à²¨à³_ಸೋಮ_ಮಂಗಳ_ಬà³à²§_ಗà³à²°à³_ಶà³à²•à³à²°_ಶನಿ".split("_"),monthsShort:"ಜನ_ಫೆಬà³à²°_ಮಾರà³à²šà³_à²à²ªà³à²°à²¿à²²à³_ಮೇ_ಜೂನà³_ಜà³à²²à³†à³–_ಆಗಸà³à²Ÿà³_ಸೆಪà³à²Ÿà³†à²‚_ಅಕà³à²Ÿà³†à³‚ೕ_ನವೆಂ_ಡಿಸೆಂ".split("_"),weekdaysMin:"à²à²¾_ಸೋ_ಮಂ_ಬà³_ಗà³_ಶà³_ಶ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವೠಕà³à²·à²£à²—ಳà³",m:"ಒಂದೠನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದೠಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದೠದಿನ",dd:"%d ದಿನ",M:"ಒಂದೠತಿಂಗಳà³",MM:"%d ತಿಂಗಳà³",y:"ಒಂದೠವರà³à²·",yy:"%d ವರà³à²·"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=kn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ko.js b/src/conversejs/locales/dayjs/ko.js index 8d8e24532d57a6f79ed7a05f3f6429e7c0f280b7..de8c03740723d08071f04b968697c8b68a67a53a 100644 --- a/src/conversejs/locales/dayjs/ko.js +++ b/src/conversejs/locales/dayjs/ko.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{219:function(_,M,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var M={name:"ko",weekdays:"ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼".split("_"),weekdaysShort:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),weekdaysMin:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),months:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),monthsShort:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYYë…„ MMMM Dì¼",LLL:"YYYYë…„ MMMM Dì¼ A h:mm",LLLL:"YYYYë…„ MMMM Dì¼ dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYYë…„ MMMM Dì¼",lll:"YYYYë…„ MMMM Dì¼ A h:mm",llll:"YYYYë…„ MMMM Dì¼ dddd A h:mm"},meridiem:function(_){return _<12?"ì˜¤ì „":"오후"},relativeTime:{future:"%s 후",past:"%s ì „",s:"몇 ì´ˆ",m:"1분",mm:"%d분",h:"í•œ 시간",hh:"%d시간",d:"하루",dd:"%dì¼",M:"í•œ 달",MM:"%d달",y:"ì¼ ë…„",yy:"%dë…„"}};return _.locale(M,null,!0),M}(Y(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[72],{261:function(_,M,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var M={name:"ko",weekdays:"ì¼ìš”ì¼_월요ì¼_화요ì¼_수요ì¼_목요ì¼_금요ì¼_í† ìš”ì¼".split("_"),weekdaysShort:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),weekdaysMin:"ì¼_ì›”_í™”_수_목_금_í† ".split("_"),months:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),monthsShort:"1ì›”_2ì›”_3ì›”_4ì›”_5ì›”_6ì›”_7ì›”_8ì›”_9ì›”_10ì›”_11ì›”_12ì›”".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYYë…„ MMMM Dì¼",LLL:"YYYYë…„ MMMM Dì¼ A h:mm",LLLL:"YYYYë…„ MMMM Dì¼ dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYYë…„ MMMM Dì¼",lll:"YYYYë…„ MMMM Dì¼ A h:mm",llll:"YYYYë…„ MMMM Dì¼ dddd A h:mm"},meridiem:function(_){return _<12?"ì˜¤ì „":"오후"},relativeTime:{future:"%s 후",past:"%s ì „",s:"몇 ì´ˆ",m:"1분",mm:"%d분",h:"í•œ 시간",hh:"%d시간",d:"하루",dd:"%dì¼",M:"í•œ 달",MM:"%d달",y:"ì¼ ë…„",yy:"%dë…„"}};return _.locale(M,null,!0),M}(Y(5))}}]); //# sourceMappingURL=ko.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ku.js b/src/conversejs/locales/dayjs/ku.js index 7cc00e1eabbd5b7423f8f2179a5a3a1f2eedb0a1..bb183b4c886cbc38b373a94886ac48d34fa9e764 100644 --- a/src/conversejs/locales/dayjs/ku.js +++ b/src/conversejs/locales/dayjs/ku.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{220:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ku",weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),months:"کانونی دووەم_شوبات_ئازار_نیسان_ئایار_Øوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم".split("_"),weekStart:6,weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),monthsShort:"کانونی دووەم_شوبات_ئازار_نیسان_ئایار_Øوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم".split("_"),weekdaysMin:"ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك Ú•Û†Ú˜",dd:"%d Ú•Û†Ú˜",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[73],{262:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ku",weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),months:"کانونی دووەم_شوبات_ئازار_نیسان_ئایار_Øوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم".split("_"),weekStart:6,weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),monthsShort:"کانونی دووەم_شوبات_ئازار_نیسان_ئایار_Øوزەیران_تەمموز_ئاب_ئەیلوول_تشرینی یەكەم_تشرینی دووەم_كانونی یەکەم".split("_"),weekdaysMin:"ÛŒ_د_س_Ú†_Ù¾_Ù‡_Ø´".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك Ú•Û†Ú˜",dd:"%d Ú•Û†Ú˜",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ku.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ky.js b/src/conversejs/locales/dayjs/ky.js index 6a59288a4d4940eef51f4f4654fc4cb65069b773..e7734b27625e1cc0b54e77fd58a5248d21120c3d 100644 --- a/src/conversejs/locales/dayjs/ky.js +++ b/src/conversejs/locales/dayjs/ky.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{221:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ky",weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),months:"Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),weekStart:1,weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),monthsShort:"Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече Ñекунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир Ñаат",hh:"%d Ñаат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[74],{263:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ky",weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),months:"Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),weekStart:1,weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),monthsShort:"Ñнв_фев_март_апр_май_июнь_июль_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече Ñекунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир Ñаат",hh:"%d Ñаат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ky.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/lb.js b/src/conversejs/locales/dayjs/lb.js index 9612a0bb0ae9f21a1e606ad6170a3d5f5f8a8bbe..e4190688229037497c488baec870060784c1f910 100644 --- a/src/conversejs/locales/dayjs/lb.js +++ b/src/conversejs/locales/dayjs/lb.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{222:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"lb",weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return e.locale(_,null,!0),_}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[75],{264:function(e,_,r){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"lb",weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),weekStart:1,weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"}};return e.locale(_,null,!0),_}(r(5))}}]); //# sourceMappingURL=lb.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/lo.js b/src/conversejs/locales/dayjs/lo.js index d8b16538c0dbf1917cf74a5ddc6483f77b60e043..7c0a319dfa6aa87615c62662ff55855fa22c19bc 100644 --- a/src/conversejs/locales/dayjs/lo.js +++ b/src/conversejs/locales/dayjs/lo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{223:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"lo",weekdays:"àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ".split("_"),months:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ".split("_"),monthsShort:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),weekdaysMin:"ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},relativeTime:{future:"àºàºµàº %s",past:"%sຜ່ານມາ",s:"ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືàºàº™",MM:"%d ເດືàºàº™",y:"1 ປີ",yy:"%d ປີ"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[76],{265:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"lo",weekdays:"àºàº²àº—ິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ".split("_"),months:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_àºàº±àº‡àº„ານ_ພຸດ_ພະຫັດ_ສຸàº_ເສົາ".split("_"),monthsShort:"ມັງàºàºàº™_àºàº¸àº¡àºžàº²_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_àºà»àº¥àº°àºàº»àº”_ສິງຫາ_àºàº±àº™àºàº²_ຕຸລາ_ພະຈິàº_ທັນວາ".split("_"),weekdaysMin:"ທ_ຈ_àºàº„_ພ_ພຫ_ສàº_ສ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},relativeTime:{future:"àºàºµàº %s",past:"%sຜ່ານມາ",s:"ບà»à»ˆà»€àº—ົ່າໃດວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືàºàº™",MM:"%d ເດືàºàº™",y:"1 ປີ",yy:"%d ປີ"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=lo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/lt.js b/src/conversejs/locales/dayjs/lt.js index ea3ca6bca51a3172e15c2c54bd013aa2b548875c..a7db0e9e461a5b331bd2984a94c38730b82c85c8 100644 --- a/src/conversejs/locales/dayjs/lt.js +++ b/src/conversejs/locales/dayjs/lt.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{224:function(s,Y,M){s.exports=function(s){"use strict";s=s&&s.hasOwnProperty("default")?s.default:s;var Y={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_Å¡eÅ¡".split("_"),weekdaysMin:"s_p_a_t_k_pn_Å¡".split("_"),months:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(s){return s+"."},weekStart:1,relativeTime:{future:"už %s",past:"prieÅ¡ %s",s:"kelias sekundes",m:"minutÄ™",mm:"%d minutes",h:"valandÄ…",hh:"%d valandas",d:"dienÄ…",dd:"%d dienas",M:"menesį",MM:"%d mÄ—nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return s.locale(Y,null,!0),Y}(M(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[77],{266:function(s,Y,M){s.exports=function(s){"use strict";s=s&&s.hasOwnProperty("default")?s.default:s;var Y={name:"lt",weekdays:"sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis".split("_"),weekdaysShort:"sek_pir_ant_tre_ket_pen_Å¡eÅ¡".split("_"),weekdaysMin:"s_p_a_t_k_pn_Å¡".split("_"),months:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjÅ«tis_rugsÄ—jis_spalis_lapkritis_gruodis".split("_"),monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),ordinal:function(s){return s+"."},weekStart:1,relativeTime:{future:"už %s",past:"prieÅ¡ %s",s:"kelias sekundes",m:"minutÄ™",mm:"%d minutes",h:"valandÄ…",hh:"%d valandas",d:"dienÄ…",dd:"%d dienas",M:"menesį",MM:"%d mÄ—nesius",y:"metus",yy:"%d metus"},format:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"}};return s.locale(Y,null,!0),Y}(M(5))}}]); //# sourceMappingURL=lt.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/lv.js b/src/conversejs/locales/dayjs/lv.js index 6a99e94273815aa7f9a411765e46bd2621a331df..bbd4c41787bf33a1ec8753c8e99cd00198354878 100644 --- a/src/conversejs/locales/dayjs/lv.js +++ b/src/conversejs/locales/dayjs/lv.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{225:function(_,e,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"lv",weekdays:"svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"}};return _.locale(e,null,!0),e}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[78],{267:function(_,e,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"lv",weekdays:"svÄ“tdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena".split("_"),months:"janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris".split("_"),weekStart:1,weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),monthsShort:"jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"}};return _.locale(e,null,!0),e}(s(5))}}]); //# sourceMappingURL=lv.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/me.js b/src/conversejs/locales/dayjs/me.js index a9366d2ad0ef502dc78d254a4b940cf28408fc1c..9991fd19b2889c38fe233e5306d3356d2dae6f9a 100644 --- a/src/conversejs/locales/dayjs/me.js +++ b/src/conversejs/locales/dayjs/me.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{226:function(_,e,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(e,null,!0),e}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[79],{268:function(_,e,a){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"me",weekdays:"nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota".split("_"),months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),weekStart:1,weekdaysShort:"ned._pon._uto._sri._Äet._pet._sub.".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(e,null,!0),e}(a(5))}}]); //# sourceMappingURL=me.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/mi.js b/src/conversejs/locales/dayjs/mi.js index 141437071daca1aeff98c48fe8219c4e32d2b71e..bff1dea9f3f79a730398b5287cffcf984bcd526f 100644 --- a/src/conversejs/locales/dayjs/mi.js +++ b/src/conversejs/locales/dayjs/mi.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{227:function(a,i,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"mi",weekdays:"RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei".split("_"),months:"Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_TÅ«_We_TÄi_Pa_HÄ".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_TÅ«_We_TÄi_Pa_HÄ".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hÄ“kona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return a.locale(i,null,!0),i}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[80],{269:function(a,i,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var i={name:"mi",weekdays:"RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei".split("_"),months:"Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea".split("_"),weekStart:1,weekdaysShort:"Ta_Ma_TÅ«_We_TÄi_Pa_HÄ".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),weekdaysMin:"Ta_Ma_TÅ«_We_TÄi_Pa_HÄ".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hÄ“kona ruarua",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"}};return a.locale(i,null,!0),i}(e(5))}}]); //# sourceMappingURL=mi.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/mk.js b/src/conversejs/locales/dayjs/mk.js index e19a6af48558d928cce2f3b1417be77a869dff12..426cb42a63ec3bbf4a3b698813b96eca95221b40 100644 --- a/src/conversejs/locales/dayjs/mk.js +++ b/src/conversejs/locales/dayjs/mk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{228:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"mk",weekdays:"недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота".split("_"),months:"јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември".split("_"),weekStart:1,weekdaysShort:"нед_пон_вто_Ñре_чет_пет_Ñаб".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек".split("_"),weekdaysMin:"нe_пo_вт_ÑÑ€_че_пе_Ña".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"поÑле %s",past:"пред %s",s:"неколку Ñекунди",m:"минута",mm:"%d минути",h:"чаÑ",hh:"%d чаÑа",d:"ден",dd:"%d дена",M:"меÑец",MM:"%d меÑеци",y:"година",yy:"%d години"}};return _.locale(t,null,!0),t}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[81],{270:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"mk",weekdays:"недела_понеделник_вторник_Ñреда_четврток_петок_Ñабота".split("_"),months:"јануари_февруари_март_април_мај_јуни_јули_авгуÑÑ‚_Ñептември_октомври_ноември_декември".split("_"),weekStart:1,weekdaysShort:"нед_пон_вто_Ñре_чет_пет_Ñаб".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_Ñеп_окт_ное_дек".split("_"),weekdaysMin:"нe_пo_вт_ÑÑ€_че_пе_Ña".split("_"),ordinal:function(_){return _},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"поÑле %s",past:"пред %s",s:"неколку Ñекунди",m:"минута",mm:"%d минути",h:"чаÑ",hh:"%d чаÑа",d:"ден",dd:"%d дена",M:"меÑец",MM:"%d меÑеци",y:"година",yy:"%d години"}};return _.locale(t,null,!0),t}(e(5))}}]); //# sourceMappingURL=mk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ml.js b/src/conversejs/locales/dayjs/ml.js index ef53b3684f656aa6f4fe3791370ca2babb0c09fc..68741c93430fecac5014628c9ffb44973be619d9 100644 --- a/src/conversejs/locales/dayjs/ml.js +++ b/src/conversejs/locales/dayjs/ml.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{229:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ml",weekdays:"ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š".split("_"),months:"ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ".split("_"),weekdaysShort:"ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി".split("_"),monthsShort:"ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.".split("_"),weekdaysMin:"à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm -à´¨àµ",LTS:"A h:mm:ss -à´¨àµ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -à´¨àµ",LLLL:"dddd, D MMMM YYYY, A h:mm -à´¨àµ"},relativeTime:{future:"%s à´•à´´à´¿à´žàµà´žàµ",past:"%s à´®àµàµ»à´ªàµ",s:"അൽപ നിമിഷങàµà´™àµ¾",m:"ഒരൠമിനിറàµà´±àµ",mm:"%d മിനിറàµà´±àµ",h:"ഒരൠമണികàµà´•àµ‚ർ",hh:"%d മണികàµà´•àµ‚ർ",d:"ഒരൠദിവസം",dd:"%d ദിവസം",M:"ഒരൠമാസം",MM:"%d മാസം",y:"ഒരൠവർഷം",yy:"%d വർഷം"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[82],{271:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"ml",weekdays:"ഞായറാഴàµà´š_തിങàµà´•à´³à´¾à´´àµà´š_ചൊവàµà´µà´¾à´´àµà´š_à´¬àµà´§à´¨à´¾à´´àµà´š_à´µàµà´¯à´¾à´´à´¾à´´àµà´š_വെളàµà´³à´¿à´¯à´¾à´´àµà´š_ശനിയാഴàµà´š".split("_"),months:"ജനàµà´µà´°à´¿_ഫെബàµà´°àµà´µà´°à´¿_മാർചàµà´šàµ_à´à´ªàµà´°à´¿àµ½_മേയàµ_ജൂൺ_ജൂലൈ_à´“à´—à´¸àµà´±àµà´±àµ_സെപàµà´±àµà´±à´‚ബർ_à´’à´•àµà´Ÿàµ‹à´¬àµ¼_നവംബർ_ഡിസംബർ".split("_"),weekdaysShort:"ഞായർ_തിങàµà´•àµ¾_ചൊവàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´‚_വെളàµà´³à´¿_ശനി".split("_"),monthsShort:"ജനàµ._ഫെബàµà´°àµ._മാർ._à´à´ªàµà´°à´¿._മേയàµ_ജൂൺ_ജൂലൈ._à´“à´—._സെപàµà´±àµà´±._à´’à´•àµà´Ÿàµ‹._നവം._ഡിസം.".split("_"),weekdaysMin:"à´žà´¾_തി_ചൊ_à´¬àµ_à´µàµà´¯à´¾_വെ_à´¶".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm -à´¨àµ",LTS:"A h:mm:ss -à´¨àµ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -à´¨àµ",LLLL:"dddd, D MMMM YYYY, A h:mm -à´¨àµ"},relativeTime:{future:"%s à´•à´´à´¿à´žàµà´žàµ",past:"%s à´®àµàµ»à´ªàµ",s:"അൽപ നിമിഷങàµà´™àµ¾",m:"ഒരൠമിനിറàµà´±àµ",mm:"%d മിനിറàµà´±àµ",h:"ഒരൠമണികàµà´•àµ‚ർ",hh:"%d മണികàµà´•àµ‚ർ",d:"ഒരൠദിവസം",dd:"%d ദിവസം",M:"ഒരൠമാസം",MM:"%d മാസം",y:"ഒരൠവർഷം",yy:"%d വർഷം"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=ml.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/mn.js b/src/conversejs/locales/dayjs/mn.js index b15be1a882b8476c59b45e96cf248bba7f5fe803..d9e353cefcba572e44aeefe70a22b6b3b2252d6a 100644 --- a/src/conversejs/locales/dayjs/mn.js +++ b/src/conversejs/locales/dayjs/mn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{230:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"mn",weekdays:"ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба".split("_"),months:"ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар".split("_"),weekdaysShort:"ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм".split("_"),monthsShort:"1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар".split("_"),weekdaysMin:"ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},relativeTime:{future:"%s",past:"%s",s:"ÑаÑхан",m:"м",mm:"%dм",h:"1ц",hh:"%dц",d:"1Ó©",dd:"%dÓ©",M:"1Ñ",MM:"%dÑ",y:"1ж",yy:"%dж"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{272:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"mn",weekdays:"ÐÑм_Даваа_ÐœÑгмар_Лхагва_ПүрÑв_БааÑан_БÑмба".split("_"),months:"ÐÑгдүгÑÑÑ€ Ñар_Хоёрдугаар Ñар_Гуравдугаар Ñар_ДөрөвдүгÑÑÑ€ Ñар_Тавдугаар Ñар_Зургадугаар Ñар_Долдугаар Ñар_Ðаймдугаар Ñар_ЕÑдүгÑÑÑ€ Ñар_Ðравдугаар Ñар_Ðрван нÑгдүгÑÑÑ€ Ñар_Ðрван хоёрдугаар Ñар".split("_"),weekdaysShort:"ÐÑм_Дав_ÐœÑг_Лха_Пүр_Баа_БÑм".split("_"),monthsShort:"1 Ñар_2 Ñар_3 Ñар_4 Ñар_5 Ñар_6 Ñар_7 Ñар_8 Ñар_9 Ñар_10 Ñар_11 Ñар_12 Ñар".split("_"),weekdaysMin:"ÐÑ_Да_ÐœÑ_Лх_Пү_Ба_БÑ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},relativeTime:{future:"%s",past:"%s",s:"ÑаÑхан",m:"м",mm:"%dм",h:"1ц",hh:"%dц",d:"1Ó©",dd:"%dÓ©",M:"1Ñ",MM:"%dÑ",y:"1ж",yy:"%dж"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=mn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/mr.js b/src/conversejs/locales/dayjs/mr.js index 1ec48e75238524c49a590c5d2165bd9a6efb41d5..8923ad84fe5cc77b260274dceb286acd8d9a1358 100644 --- a/src/conversejs/locales/dayjs/mr.js +++ b/src/conversejs/locales/dayjs/mr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{231:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"mr",weekdays:"रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार".split("_"),months:"जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि".split("_"),monthsShort:"जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.".split("_"),weekdaysMin:"र_सो_मं_बà¥_गà¥_शà¥_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[84],{273:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"mr",weekdays:"रविवार_सोमवार_मंगळवार_बà¥à¤§à¤µà¤¾à¤°_गà¥à¤°à¥‚वार_शà¥à¤•à¥à¤°à¤µà¤¾à¤°_शनिवार".split("_"),months:"जानेवारी_फेबà¥à¤°à¥à¤µà¤¾à¤°à¥€_मारà¥à¤š_à¤à¤ªà¥à¤°à¤¿à¤²_मे_जून_जà¥à¤²à¥ˆ_ऑगसà¥à¤Ÿ_सपà¥à¤Ÿà¥‡à¤‚बर_ऑकà¥à¤Ÿà¥‹à¤¬à¤°_नोवà¥à¤¹à¥‡à¤‚बर_डिसेंबर".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बà¥à¤§_गà¥à¤°à¥‚_शà¥à¤•à¥à¤°_शनि".split("_"),monthsShort:"जाने._फेबà¥à¤°à¥._मारà¥à¤š._à¤à¤ªà¥à¤°à¤¿._मे._जून._जà¥à¤²à¥ˆ._ऑग._सपà¥à¤Ÿà¥‡à¤‚._ऑकà¥à¤Ÿà¥‹._नोवà¥à¤¹à¥‡à¤‚._डिसें.".split("_"),weekdaysMin:"र_सो_मं_बà¥_गà¥_शà¥_श".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=mr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ms-my.js b/src/conversejs/locales/dayjs/ms-my.js index 58505086340d78bb285ae61b0e2b5280c7aad984..b9ff98f153ef85b692e84d9989508d189d22cb20 100644 --- a/src/conversejs/locales/dayjs/ms-my.js +++ b/src/conversejs/locales/dayjs/ms-my.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{232:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"ms-my",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),weekStart:1,weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),ordinal:function(a){return a},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"}};return a.locale(e,null,!0),e}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[86],{274:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"ms-my",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),weekStart:1,weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),ordinal:function(a){return a},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"}};return a.locale(e,null,!0),e}(_(5))}}]); //# sourceMappingURL=ms-my.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ms.js b/src/conversejs/locales/dayjs/ms.js index 9b5f2eedb59c45c1443dda5503c0765aacad665e..7376af27ff4c76b44dcc130f9dc572f02b580652 100644 --- a/src/conversejs/locales/dayjs/ms.js +++ b/src/conversejs/locales/dayjs/ms.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{233:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(a){return a+"."}};return a.locale(e,null,!0),e}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[85],{275:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"ms",weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekStart:1,formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH.mm",LLLL:"dddd, D MMMM YYYY HH.mm"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},ordinal:function(a){return a+"."}};return a.locale(e,null,!0),e}(_(5))}}]); //# sourceMappingURL=ms.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/mt.js b/src/conversejs/locales/dayjs/mt.js index 3ed2b1edf83d0b6f0876de934c24db096fe11a34..0c1ec0b30cef94e39cefb0d94d0f35059a531831 100644 --- a/src/conversejs/locales/dayjs/mt.js +++ b/src/conversejs/locales/dayjs/mt.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{234:function(t,_,a){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var _={name:"mt",weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru".split("_"),weekStart:1,weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ä i_Si".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"Ä¡urnata",dd:"%d Ä¡ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return t.locale(_,null,!0),_}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[87],{276:function(t,_,a){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var _={name:"mt",weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt".split("_"),months:"Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄ‹embru".split("_"),weekStart:1,weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ‹".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ä i_Si".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"Ä¡urnata",dd:"%d Ä¡ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"}};return t.locale(_,null,!0),_}(a(5))}}]); //# sourceMappingURL=mt.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/my.js b/src/conversejs/locales/dayjs/my.js index f68574e7e84bb36554964fb1a6915e77fded82e0..697b5c4bdfd212b44a185706f869bf4613387f04 100644 --- a/src/conversejs/locales/dayjs/my.js +++ b/src/conversejs/locales/dayjs/my.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{235:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"my",weekdays:"á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ".split("_"),months:"ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ".split("_"),weekStart:1,weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),monthsShort:"ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်á€á€²á€·á€žá€±á€¬ %s က",s:"စက္ကန်.အနည်းငယ်",m:"á€á€…်မá€á€”စ်",mm:"%d မá€á€”စ်",h:"á€á€…်နာရီ",hh:"%d နာရီ",d:"á€á€…်ရက်",dd:"%d ရက်",M:"á€á€…်လ",MM:"%d လ",y:"á€á€…်နှစ်",yy:"%d နှစ်"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[88],{277:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"my",weekdays:"á€á€”င်္ဂနွေ_á€á€”င်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပá€á€±á€¸_သောကြာ_စနေ".split("_"),months:"ဇန်နá€á€«á€›á€®_ဖေဖော်á€á€«á€›á€®_မá€á€º_ဧပြီ_မေ_ဇွန်_ဇူလá€á€¯á€„်_သြဂုá€á€º_စက်á€á€„်ဘာ_အောက်á€á€á€¯á€˜á€¬_နá€á€¯á€á€„်ဘာ_ဒီဇင်ဘာ".split("_"),weekStart:1,weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),monthsShort:"ဇန်_ဖေ_မá€á€º_ပြီ_မေ_ဇွန်_လá€á€¯á€„်_သြ_စက်_အောက်_နá€á€¯_ဒီ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်á€á€²á€·á€žá€±á€¬ %s က",s:"စက္ကန်.အနည်းငယ်",m:"á€á€…်မá€á€”စ်",mm:"%d မá€á€”စ်",h:"á€á€…်နာရီ",hh:"%d နာရီ",d:"á€á€…်ရက်",dd:"%d ရက်",M:"á€á€…်လ",MM:"%d လ",y:"á€á€…်နှစ်",yy:"%d နှစ်"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=my.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/nb.js b/src/conversejs/locales/dayjs/nb.js index a1a1a4ac9170aa6a0c1220cc13ed26a732b6d1dd..7acd0e8e7269d88891ad107551c2a1e5e2a67cfe 100644 --- a/src/conversejs/locales/dayjs/nb.js +++ b/src/conversejs/locales/dayjs/nb.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{236:function(e,t,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"nb",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"ett Ã¥r",yy:"%d Ã¥r"}};return e.locale(t,null,!0),t}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[89],{278:function(e,t,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var t={name:"nb",weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en mÃ¥ned",MM:"%d mÃ¥neder",y:"ett Ã¥r",yy:"%d Ã¥r"}};return e.locale(t,null,!0),t}(_(5))}}]); //# sourceMappingURL=nb.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ne.js b/src/conversejs/locales/dayjs/ne.js index 75e0bccd2bfec3e0c5c583066b1a4c0c23197822..3161709b7ce37f089e88a61a59f1194736df1077 100644 --- a/src/conversejs/locales/dayjs/ne.js +++ b/src/conversejs/locales/dayjs/ne.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{237:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ne",weekdays:"आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बà¥._बि._शà¥._श.".split("_"),months:"जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मे_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°".split("_"),monthsShort:"जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.".split("_"),relativeTime:{future:"%s पछि",past:"%s अघि",s:"सेकेनà¥à¤¡",m:"à¤à¤• मिनेट",mm:"%d मिनेट",h:"घनà¥à¤Ÿà¤¾",hh:"%d घनà¥à¤Ÿà¤¾",d:"à¤à¤• दिन",dd:"%d दिन",M:"à¤à¤• महिना",MM:"%d महिना",y:"à¤à¤• वरà¥à¤·",yy:"%d वरà¥à¤·"},ordinal:function(_){return(""+_).replace(/\d/g,(function(_){return"०१२३४५६à¥à¥®à¥¯"[_]}))},formats:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"}};return _.locale(t,null,!0),t}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{279:function(_,t,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ne",weekdays:"आइतबार_सोमबार_मङà¥à¤—लबार_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤•à¥à¤°à¤¬à¤¾à¤°_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङà¥à¤—ल._बà¥à¤§._बिहि._शà¥à¤•à¥à¤°._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बà¥._बि._शà¥._श.".split("_"),months:"जनवरी_फेबà¥à¤°à¥à¤µà¤°à¥€_मारà¥à¤š_अपà¥à¤°à¤¿à¤²_मे_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ_अगषà¥à¤Ÿ_सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°_अकà¥à¤Ÿà¥‹à¤¬à¤°_नोà¤à¥‡à¤®à¥à¤¬à¤°_डिसेमà¥à¤¬à¤°".split("_"),monthsShort:"जन._फेबà¥à¤°à¥._मारà¥à¤š_अपà¥à¤°à¤¿._मई_जà¥à¤¨_जà¥à¤²à¤¾à¤ˆ._अग._सेपà¥à¤Ÿ._अकà¥à¤Ÿà¥‹._नोà¤à¥‡._डिसे.".split("_"),relativeTime:{future:"%s पछि",past:"%s अघि",s:"सेकेनà¥à¤¡",m:"à¤à¤• मिनेट",mm:"%d मिनेट",h:"घनà¥à¤Ÿà¤¾",hh:"%d घनà¥à¤Ÿà¤¾",d:"à¤à¤• दिन",dd:"%d दिन",M:"à¤à¤• महिना",MM:"%d महिना",y:"à¤à¤• वरà¥à¤·",yy:"%d वरà¥à¤·"},ordinal:function(_){return(""+_).replace(/\d/g,(function(_){return"०१२३४५६à¥à¥®à¥¯"[_]}))},formats:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"}};return _.locale(t,null,!0),t}(e(5))}}]); //# sourceMappingURL=ne.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/nl-be.js b/src/conversejs/locales/dayjs/nl-be.js index c9f3355c89021fb36066aa11e96056527810e06c..ce6f11ea4c2f8ddeae836d862dd97c65de1165a4 100644 --- a/src/conversejs/locales/dayjs/nl-be.js +++ b/src/conversejs/locales/dayjs/nl-be.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{238:function(e,a,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[92],{280:function(e,a,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"nl-be",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),weekStart:1,weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),ordinal:function(e){return e},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(n(5))}}]); //# sourceMappingURL=nl-be.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/nl.js b/src/conversejs/locales/dayjs/nl.js index a79e9f83a21b542bd7ba210fb15c5309cd165b71..666bd382da0cec2a3f13c052e5d7b4e99a5e5ca2 100644 --- a/src/conversejs/locales/dayjs/nl.js +++ b/src/conversejs/locales/dayjs/nl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{239:function(e,a,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[91],{281:function(e,a,n){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"nl",weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),ordinal:function(e){return e+"."},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"een minuut",mm:"%d minuten",h:"een uur",hh:"%d uur",d:"een dag",dd:"%d dagen",M:"een maand",MM:"%d maanden",y:"een jaar",yy:"%d jaar"}};return e.locale(a,null,!0),a}(n(5))}}]); //# sourceMappingURL=nl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/nn.js b/src/conversejs/locales/dayjs/nn.js index 5915b8df9a7846060debf969548976d772aa6714..295104b7eeccfcfd4ed267732213b3c120738861 100644 --- a/src/conversejs/locales/dayjs/nn.js +++ b/src/conversejs/locales/dayjs/nn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{240:function(a,e,t){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"nn",weekdays:"sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mÃ¥n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_mÃ¥_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(a){return a+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein mÃ¥nad",MM:"%d mÃ¥nadar",y:"eitt Ã¥r",yy:"%d Ã¥r"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return a.locale(e,null,!0),e}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{282:function(a,e,t){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"nn",weekdays:"sundag_mÃ¥ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mÃ¥n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_mÃ¥_ty_on_to_fr_la".split("_"),months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),ordinal:function(a){return a+"."},weekStart:1,relativeTime:{future:"om %s",past:"for %s sidan",s:"nokre sekund",m:"eitt minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein mÃ¥nad",MM:"%d mÃ¥nadar",y:"eitt Ã¥r",yy:"%d Ã¥r"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"}};return a.locale(e,null,!0),e}(t(5))}}]); //# sourceMappingURL=nn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/oc-lnc.js b/src/conversejs/locales/dayjs/oc-lnc.js index a2011f13f33ecb0842c0e48e61d489d8c449f957..3ba7471f91f1d98bd329b35e9229c69ca9bad1c3 100644 --- a/src/conversejs/locales/dayjs/oc-lnc.js +++ b/src/conversejs/locales/dayjs/oc-lnc.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{241:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"oc-lnc",weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"Dg_Dl_Dm_Dc_Dj_Dv_Ds".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),months:"genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),monthsShort:"gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm"},relativeTime:{future:"d'aquà %s",past:"fa %s",s:"unas segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{283:function(e,s,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var s={name:"oc-lnc",weekdays:"dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte".split("_"),weekdaysShort:"Dg_Dl_Dm_Dc_Dj_Dv_Ds".split("_"),weekdaysMin:"dg_dl_dm_dc_dj_dv_ds".split("_"),months:"genièr_febrièr_març_abrial_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre".split("_"),monthsShort:"gen_feb_març_abr_mai_junh_julh_ago_set_oct_nov_dec".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",LLL:"D MMMM [de] YYYY [a] H:mm",LLLL:"dddd D MMMM [de] YYYY [a] H:mm"},relativeTime:{future:"d'aquà %s",past:"fa %s",s:"unas segondas",m:"una minuta",mm:"%d minutas",h:"una ora",hh:"%d oras",d:"un jorn",dd:"%d jorns",M:"un mes",MM:"%d meses",y:"un an",yy:"%d ans"},ordinal:function(e){return e+"º"}};return e.locale(s,null,!0),s}(_(5))}}]); //# sourceMappingURL=oc-lnc.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/pa-in.js b/src/conversejs/locales/dayjs/pa-in.js index a55422a9822c7d117b712b4c84b4a805d15444df..c4b70253aaf97663b45d6c600fd1a949295f0cfa 100644 --- a/src/conversejs/locales/dayjs/pa-in.js +++ b/src/conversejs/locales/dayjs/pa-in.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{242:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"pa-in",weekdays:"à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°_ਸ਼ਨੀਚਰਵਾਰ".split("_"),months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysShort:"à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysMin:"à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕà©à¨ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{284:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"pa-in",weekdays:"à¨à¨¤à¨µà¨¾à¨°_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬà©à¨§à¨µà¨¾à¨°_ਵੀਰਵਾਰ_ਸ਼à©à©±à¨•à¨°à¨µà¨¾à¨°_ਸ਼ਨੀਚਰਵਾਰ".split("_"),months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysShort:"à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪà©à¨°à©ˆà¨²_ਮਈ_ਜੂਨ_ਜà©à¨²à¨¾à¨ˆ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdaysMin:"à¨à¨¤_ਸੋਮ_ਮੰਗਲ_ਬà©à¨§_ਵੀਰ_ਸ਼à©à¨•à¨°_ਸ਼ਨੀ".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕà©à¨ ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=pa-in.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/pl.js b/src/conversejs/locales/dayjs/pl.js index 9af5d5e1e3723f847ae714fd632db260257d7986..40567717d68eadaacb2920aac6b8e2b7b64d340f 100644 --- a/src/conversejs/locales/dayjs/pl.js +++ b/src/conversejs/locales/dayjs/pl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{243:function(e,i,t){e.exports=function(e){"use strict";function i(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,r){var _=e+" ";switch(r){case"m":return t?"minuta":"minutÄ™";case"mm":return _+(i(e)?"minuty":"minut");case"h":return t?"godzina":"godzinÄ™";case"hh":return _+(i(e)?"godziny":"godzin");case"MM":return _+(i(e)?"miesiÄ…ce":"miesiÄ™cy");case"yy":return _+(i(e)?"lata":"lat")}}e=e&&e.hasOwnProperty("default")?e.default:e;var r={name:"pl",weekdays:"Niedziela_PoniedziaÅ‚ek_Wtorek_Åšroda_Czwartek_PiÄ…tek_Sobota".split("_"),weekdaysShort:"Ndz_Pon_Wt_Åšr_Czw_Pt_Sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Åšr_Cz_Pt_So".split("_"),months:"StyczeÅ„_Luty_Marzec_KwiecieÅ„_Maj_Czerwiec_Lipiec_SierpieÅ„_WrzesieÅ„_Październik_Listopad_GrudzieÅ„".split("_"),monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:t,mm:t,h:t,hh:t,d:"1 dzieÅ„",dd:"%d dni",M:"miesiÄ…c",MM:t,y:"rok",yy:t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return e.locale(r,null,!0),r}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[96],{285:function(e,i,t){e.exports=function(e){"use strict";function i(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function t(e,t,r){var _=e+" ";switch(r){case"m":return t?"minuta":"minutÄ™";case"mm":return _+(i(e)?"minuty":"minut");case"h":return t?"godzina":"godzinÄ™";case"hh":return _+(i(e)?"godziny":"godzin");case"MM":return _+(i(e)?"miesiÄ…ce":"miesiÄ™cy");case"yy":return _+(i(e)?"lata":"lat")}}e=e&&e.hasOwnProperty("default")?e.default:e;var r={name:"pl",weekdays:"Niedziela_PoniedziaÅ‚ek_Wtorek_Åšroda_Czwartek_PiÄ…tek_Sobota".split("_"),weekdaysShort:"Ndz_Pon_Wt_Åšr_Czw_Pt_Sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Åšr_Cz_Pt_So".split("_"),months:"StyczeÅ„_Luty_Marzec_KwiecieÅ„_Maj_Czerwiec_Lipiec_SierpieÅ„_WrzesieÅ„_Październik_Listopad_GrudzieÅ„".split("_"),monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),ordinal:function(e){return e+"."},weekStart:1,relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:t,mm:t,h:t,hh:t,d:"1 dzieÅ„",dd:"%d dni",M:"miesiÄ…c",MM:t,y:"rok",yy:t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return e.locale(r,null,!0),r}(t(5))}}]); //# sourceMappingURL=pl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/pt-br.js b/src/conversejs/locales/dayjs/pt-br.js index 1b5ecc2cf4b89d46cb87cda5023cb600ddd48a5d..439dee8e3fd3315658f0e08beb255b4c0cdfba0c 100644 --- a/src/conversejs/locales/dayjs/pt-br.js +++ b/src/conversejs/locales/dayjs/pt-br.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{244:function(e,o,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var o={name:"pt-br",weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekStart:1,months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [à s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [à s] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return e.locale(o,null,!0),o}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[98],{286:function(e,o,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var o={name:"pt-br",weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekStart:1,months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),ordinal:function(e){return e+"º"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [à s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [à s] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return e.locale(o,null,!0),o}(_(5))}}]); //# sourceMappingURL=pt-br.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/pt.js b/src/conversejs/locales/dayjs/pt.js index 59f543e13ff57d29a1af270f1c5aefe2e365267a..21bc5211ac2bd9a913db42d0c40269e736788d94 100644 --- a/src/conversejs/locales/dayjs/pt.js +++ b/src/conversejs/locales/dayjs/pt.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{245:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"pt",weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sab".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sa".split("_"),months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),ordinal:function(e){return e+"º"},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [à s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [à s] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[97],{287:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"pt",weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sab".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sa".split("_"),months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),ordinal:function(e){return e+"º"},weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [à s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [à s] HH:mm"},relativeTime:{future:"em %s",past:"há %s",s:"alguns segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=pt.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ro.js b/src/conversejs/locales/dayjs/ro.js index 7d78e11bde0031d036ef29ef779aa28db436994a..80a41fcbd931eae575e2aeaf6de1370da1d1b4fe 100644 --- a/src/conversejs/locales/dayjs/ro.js +++ b/src/conversejs/locales/dayjs/ro.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{246:function(e,i,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var i={name:"ro",weekdays:"Duminică_Luni_MarÈ›i_Miercuri_Joi_Vineri_Sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"câteva secunde",m:"un minut",mm:"%d minute",h:"o oră",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lună",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return e.locale(i,null,!0),i}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[99],{288:function(e,i,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var i={name:"ro",weekdays:"Duminică_Luni_MarÈ›i_Miercuri_Joi_Vineri_Sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),months:"Ianuarie_Februarie_Martie_Aprilie_Mai_Iunie_Iulie_August_Septembrie_Octombrie_Noiembrie_Decembrie".split("_"),monthsShort:"Ian._Febr._Mart._Apr._Mai_Iun._Iul._Aug._Sept._Oct._Nov._Dec.".split("_"),weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},relativeTime:{future:"peste %s",past:"acum %s",s:"câteva secunde",m:"un minut",mm:"%d minute",h:"o oră",hh:"%d ore",d:"o zi",dd:"%d zile",M:"o lună",MM:"%d luni",y:"un an",yy:"%d ani"},ordinal:function(e){return e}};return e.locale(i,null,!0),i}(_(5))}}]); //# sourceMappingURL=ro.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ru.js b/src/conversejs/locales/dayjs/ru.js index 112333c737ce970e8af09662c8e2b19c7986e10e..fe92b6cad64b5591e7befa0e654918ce412386ac 100644 --- a/src/conversejs/locales/dayjs/ru.js +++ b/src/conversejs/locales/dayjs/ru.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{247:function(_,t,n){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ".split("_"),n="Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),s="Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.".split("_"),e="Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.".split("_"),r=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function o(_,t,n){var s,e;return"m"===n?t?"минута":"минуту":_+" "+(s=+_,e={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"чаÑ_чаÑа_чаÑов",dd:"день_днÑ_дней",MM:"меÑÑц_меÑÑца_меÑÑцев",yy:"год_года_лет"}[n].split("_"),s%10==1&&s%100!=11?e[0]:s%10>=2&&s%10<=4&&(s%100<10||s%100>=20)?e[1]:e[2])}var M=function(_,s){return r.test(s)?t[_.month()]:n[_.month()]};M.s=n,M.f=t;var m=function(_,t){return r.test(t)?s[_.month()]:e[_.month()]};m.s=e,m.f=s;var i={name:"ru",weekdays:"воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота".split("_"),weekdaysShort:"вÑк_пнд_втр_Ñрд_чтв_птн_Ñбт".split("_"),weekdaysMin:"вÑ_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:M,monthsShort:m,weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"через %s",past:"%s назад",s:"неÑколько Ñекунд",m:o,mm:o,h:"чаÑ",hh:o,d:"день",dd:o,M:"меÑÑц",MM:o,y:"год",yy:o},ordinal:function(_){return _}};return _.locale(i,null,!0),i}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[100],{289:function(_,t,n){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="ÑнварÑ_февралÑ_марта_апрелÑ_маÑ_июнÑ_июлÑ_авгуÑта_ÑентÑбрÑ_октÑбрÑ_ноÑбрÑ_декабрÑ".split("_"),n="Ñнварь_февраль_март_апрель_май_июнь_июль_авгуÑÑ‚_ÑентÑбрь_октÑбрь_ноÑбрь_декабрь".split("_"),s="Ñнв._февр._мар._апр._маÑ_июнÑ_июлÑ_авг._Ñент._окт._ноÑб._дек.".split("_"),e="Ñнв._февр._март_апр._май_июнь_июль_авг._Ñент._окт._ноÑб._дек.".split("_"),r=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function o(_,t,n){var s,e;return"m"===n?t?"минута":"минуту":_+" "+(s=+_,e={mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"чаÑ_чаÑа_чаÑов",dd:"день_днÑ_дней",MM:"меÑÑц_меÑÑца_меÑÑцев",yy:"год_года_лет"}[n].split("_"),s%10==1&&s%100!=11?e[0]:s%10>=2&&s%10<=4&&(s%100<10||s%100>=20)?e[1]:e[2])}var M=function(_,s){return r.test(s)?t[_.month()]:n[_.month()]};M.s=n,M.f=t;var m=function(_,t){return r.test(t)?s[_.month()]:e[_.month()]};m.s=e,m.f=s;var i={name:"ru",weekdays:"воÑкреÑенье_понедельник_вторник_Ñреда_четверг_пÑтница_Ñуббота".split("_"),weekdaysShort:"вÑк_пнд_втр_Ñрд_чтв_птн_Ñбт".split("_"),weekdaysMin:"вÑ_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:M,monthsShort:m,weekStart:1,formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},relativeTime:{future:"через %s",past:"%s назад",s:"неÑколько Ñекунд",m:o,mm:o,h:"чаÑ",hh:o,d:"день",dd:o,M:"меÑÑц",MM:o,y:"год",yy:o},ordinal:function(_){return _}};return _.locale(i,null,!0),i}(n(5))}}]); //# sourceMappingURL=ru.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/rw.js b/src/conversejs/locales/dayjs/rw.js index 03b89d63871faa6496def9c433b6cdb22bde3c25..1c37460342df6ba7b26ea13e757440ed7c9a7847 100644 --- a/src/conversejs/locales/dayjs/rw.js +++ b/src/conversejs/locales/dayjs/rw.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{248:function(a,u,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var u={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(a){return a}};return a.locale(u,null,!0),u}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[101],{290:function(a,u,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var u={name:"rw",weekdays:"Ku Cyumweru_Kuwa Mbere_Kuwa Kabiri_Kuwa Gatatu_Kuwa Kane_Kuwa Gatanu_Kuwa Gatandatu".split("_"),months:"Mutarama_Gashyantare_Werurwe_Mata_Gicurasi_Kamena_Nyakanga_Kanama_Nzeri_Ukwakira_Ugushyingo_Ukuboza".split("_"),relativeTime:{future:"mu %s",past:"%s",s:"amasegonda",m:"Umunota",mm:"%d iminota",h:"isaha",hh:"%d amasaha",d:"Umunsi",dd:"%d iminsi",M:"ukwezi",MM:"%d amezi",y:"umwaka",yy:"%d imyaka"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},ordinal:function(a){return a}};return a.locale(u,null,!0),u}(n(5))}}]); //# sourceMappingURL=rw.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sd.js b/src/conversejs/locales/dayjs/sd.js index 8f8a8dd7f18ffb94619312e837fc03ad0376ffa6..8810cc98bf553619d38bbd8342265ca872aea7c9 100644 --- a/src/conversejs/locales/dayjs/sd.js +++ b/src/conversejs/locales/dayjs/sd.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{249:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"sd",weekdays:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),months:"جنوري_Ùيبروري_مارچ_اپريل_مئي_جون_جولاءÙ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekStart:1,weekdaysShort:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),monthsShort:"جنوري_Ùيبروري_مارچ_اپريل_مئي_جون_جولاءÙ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekdaysMin:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"Ù‡Úª منٽ",mm:"%d منٽ",h:"Ù‡Úª ڪلاڪ",hh:"%d ڪلاڪ",d:"Ù‡Úª Úينهن",dd:"%d Úينهن",M:"Ù‡Úª مهينو",MM:"%d مهينا",y:"Ù‡Úª سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[102],{291:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"sd",weekdays:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),months:"جنوري_Ùيبروري_مارچ_اپريل_مئي_جون_جولاءÙ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekStart:1,weekdaysShort:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),monthsShort:"جنوري_Ùيبروري_مارچ_اپريل_مئي_جون_جولاءÙ_آگسٽ_سيپٽمبر_آڪٽوبر_نومبر_ڊسمبر".split("_"),weekdaysMin:"آچر_سومر_اڱارو_اربع_خميس_جمع_ڇنڇر".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",m:"Ù‡Úª منٽ",mm:"%d منٽ",h:"Ù‡Úª ڪلاڪ",hh:"%d ڪلاڪ",d:"Ù‡Úª Úينهن",dd:"%d Úينهن",M:"Ù‡Úª مهينو",MM:"%d مهينا",y:"Ù‡Úª سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=sd.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/se.js b/src/conversejs/locales/dayjs/se.js index f69a2a1298f0b9247c153f8e26c093197d2a2cbe..a37f1f566205270fe26c166a7ef45f87a989386a 100644 --- a/src/conversejs/locales/dayjs/se.js +++ b/src/conversejs/locales/dayjs/se.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{250:function(a,n,t){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var n={name:"se",weekdays:"sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),months:"oÄ‘Ä‘ajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_maÅ‹_gask_duor_bear_láv".split("_"),monthsShort:"oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s geažes",past:"maÅ‹it %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"}};return a.locale(n,null,!0),n}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[103],{292:function(a,n,t){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var n={name:"se",weekdays:"sotnabeaivi_vuossárga_maÅ‹Å‹ebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),months:"oÄ‘Ä‘ajagemánnu_guovvamánnu_njukÄamánnu_cuoÅ‹ománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),weekStart:1,weekdaysShort:"sotn_vuos_maÅ‹_gask_duor_bear_láv".split("_"),monthsShort:"oÄ‘Ä‘j_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},relativeTime:{future:"%s geažes",past:"maÅ‹it %s",s:"moadde sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"}};return a.locale(n,null,!0),n}(t(5))}}]); //# sourceMappingURL=se.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/si.js b/src/conversejs/locales/dayjs/si.js index d6008ef4fa7df43ac6d28dba96faa54111f00761..1bc982045f6d16a13cbbc21b84cbd22cc3be2610 100644 --- a/src/conversejs/locales/dayjs/si.js +++ b/src/conversejs/locales/dayjs/si.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{251:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"si",weekdays:"ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_බ්â€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·".split("_"),months:"ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදà·_බ්â€à¶»à·„_සිකු_සෙන".split("_"),monthsShort:"ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·".split("_"),weekdaysMin:"ඉ_à·ƒ_අ_බ_බ්â€à¶»_සි_සෙ".split("_"),ordinal:function(_){return _},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"à¶à¶à·Šà¶´à¶» කිහිපය",m:"මිනිà¶à·Šà¶à·”à·€",mm:"මිනිà¶à·Šà¶à·” %d",h:"පà·à¶º",hh:"පà·à¶º %d",d:"දිනය",dd:"දින %d",M:"මà·à·ƒà¶º",MM:"මà·à·ƒ %d",y:"වසර",yy:"වසර %d"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[104],{293:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"si",weekdays:"ඉරිදà·_සඳුදà·_අඟහරුවà·à¶¯à·_බදà·à¶¯à·_බ්â€à¶»à·„ස්පà¶à·’න්දà·_සිකුරà·à¶¯à·_සෙනසුරà·à¶¯à·".split("_"),months:"ජනවà·à¶»à·’_පෙබරවà·à¶»à·’_මà·à¶»à·Šà¶à·”_අප්â€à¶»à·šà¶½à·Š_මà·à¶ºà·’_ජූනි_ජූලි_අගà·à·ƒà·Šà¶à·”_à·ƒà·à¶´à·Šà¶à·à¶¸à·Šà¶¶à¶»à·Š_ඔක්à¶à·à¶¶à¶»à·Š_නොවà·à¶¸à·Šà¶¶à¶»à·Š_දෙසà·à¶¸à·Šà¶¶à¶»à·Š".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදà·_බ්â€à¶»à·„_සිකු_සෙන".split("_"),monthsShort:"ජන_පෙබ_මà·à¶»à·Š_අප්_මà·à¶ºà·’_ජූනි_ජූලි_අගà·_à·ƒà·à¶´à·Š_ඔක්_නොවà·_දෙසà·".split("_"),weekdaysMin:"ඉ_à·ƒ_අ_බ_බ්â€à¶»_සි_සෙ".split("_"),ordinal:function(_){return _},formats:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [à·€à·à¶±à·’] dddd, a h:mm:ss"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"à¶à¶à·Šà¶´à¶» කිහිපය",m:"මිනිà¶à·Šà¶à·”à·€",mm:"මිනිà¶à·Šà¶à·” %d",h:"පà·à¶º",hh:"පà·à¶º %d",d:"දිනය",dd:"දින %d",M:"මà·à·ƒà¶º",MM:"මà·à·ƒ %d",y:"වසර",yy:"වසර %d"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=si.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sk.js b/src/conversejs/locales/dayjs/sk.js index 0a3536f55db5410b13683c4c1a2048279db95459..3cd467206e271b7f6db12111c83d01785706b27f 100644 --- a/src/conversejs/locales/dayjs/sk.js +++ b/src/conversejs/locales/dayjs/sk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{252:function(e,r,t){e.exports=function(e){"use strict";function r(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,a){var s=e+" ";switch(n){case"s":return t||a?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":a?"minútu":"minútou";case"mm":return t||a?s+(r(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":return t||a?s+(r(e)?"hodiny":"hodÃn"):s+"hodinami";case"d":return t||a?"deň":"dňom";case"dd":return t||a?s+(r(e)?"dni":"dnÃ"):s+"dňami";case"M":return t||a?"mesiac":"mesiacom";case"MM":return t||a?s+(r(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||a?"rok":"rokom";case"yy":return t||a?s+(r(e)?"roky":"rokov"):s+"rokmi"}}e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"sk",weekdays:"nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_Å¡t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_Å¡t_pi_so".split("_"),months:"január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december".split("_"),monthsShort:"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return e.locale(n,null,!0),n}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[105],{294:function(e,r,t){e.exports=function(e){"use strict";function r(e){return e>1&&e<5&&1!=~~(e/10)}function t(e,t,n,a){var s=e+" ";switch(n){case"s":return t||a?"pár sekúnd":"pár sekundami";case"m":return t?"minúta":a?"minútu":"minútou";case"mm":return t||a?s+(r(e)?"minúty":"minút"):s+"minútami";case"h":return t?"hodina":a?"hodinu":"hodinou";case"hh":return t||a?s+(r(e)?"hodiny":"hodÃn"):s+"hodinami";case"d":return t||a?"deň":"dňom";case"dd":return t||a?s+(r(e)?"dni":"dnÃ"):s+"dňami";case"M":return t||a?"mesiac":"mesiacom";case"MM":return t||a?s+(r(e)?"mesiace":"mesiacov"):s+"mesiacmi";case"y":return t||a?"rok":"rokom";case"yy":return t||a?s+(r(e)?"roky":"rokov"):s+"rokmi"}}e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"sk",weekdays:"nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_Å¡t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_Å¡t_pi_so".split("_"),months:"január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december".split("_"),monthsShort:"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),weekStart:1,yearStart:4,ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},relativeTime:{future:"za %s",past:"pred %s",s:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t}};return e.locale(n,null,!0),n}(t(5))}}]); //# sourceMappingURL=sk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sl.js b/src/conversejs/locales/dayjs/sl.js index 0b1eba168d665b82f5b928c7feda037c441f5c7c..7c8afe00f34f35c7288c790c16b73613fdfe3b8f 100644 --- a/src/conversejs/locales/dayjs/sl.js +++ b/src/conversejs/locales/dayjs/sl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{253:function(e,_,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._Äet._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_Äe_pe_so".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(_,null,!0),_}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[106],{295:function(e,_,t){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"sl",weekdays:"nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota".split("_"),months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),weekStart:1,weekdaysShort:"ned._pon._tor._sre._Äet._pet._sob.".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdaysMin:"ne_po_to_sr_Äe_pe_so".split("_"),ordinal:function(e){return e},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(_,null,!0),_}(t(5))}}]); //# sourceMappingURL=sl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sq.js b/src/conversejs/locales/dayjs/sq.js index ecc5fdce3ad06bfdbd50fefb97bc518d83743b63..5692c8e677ef56a2f289e166d16bc0b592568a5d 100644 --- a/src/conversejs/locales/dayjs/sq.js +++ b/src/conversejs/locales/dayjs/sq.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{254:function(t,_,r){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var _={name:"sq",weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"}};return t.locale(_,null,!0),_}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[107],{296:function(t,_,r){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var _={name:"sq",weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),weekStart:1,weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"}};return t.locale(_,null,!0),_}(r(5))}}]); //# sourceMappingURL=sq.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sr-cyrl.js b/src/conversejs/locales/dayjs/sr-cyrl.js index a65cd224603ce2130faab4d4bec31fafee620704..0a35ec013366a2595ee65d18dca6c5b849c2269e 100644 --- a/src/conversejs/locales/dayjs/sr-cyrl.js +++ b/src/conversejs/locales/dayjs/sr-cyrl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{255:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"sr-cyrl",weekdays:"Ðедеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота".split("_"),weekdaysShort:"Ðед._Пон._Уто._Сре._Чет._Пет._Суб.".split("_"),weekdaysMin:"не_по_ут_ÑÑ€_че_пе_Ñу".split("_"),months:"Јануар_Фебруар_Март_Ðприл_Мај_Јун_Јул_ÐвгуÑÑ‚_Септембар_Октобар_Ðовембар_Децембар".split("_"),monthsShort:"Јан._Феб._Мар._Ðпр._Мај_Јун_Јул_Ðвг._Сеп._Окт._Ðов._Дец.".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"пре %s",s:"Ñекунда",m:"минут",mm:"%d минута",h:"Ñат",hh:"%d Ñати",d:"дан",dd:"%d дана",M:"меÑец",MM:"%d меÑеци",y:"година",yy:"%d године"},ordinal:function(_){return _+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[109],{297:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"sr-cyrl",weekdays:"Ðедеља_Понедељак_Уторак_Среда_Четвртак_Петак_Субота".split("_"),weekdaysShort:"Ðед._Пон._Уто._Сре._Чет._Пет._Суб.".split("_"),weekdaysMin:"не_по_ут_ÑÑ€_че_пе_Ñу".split("_"),months:"Јануар_Фебруар_Март_Ðприл_Мај_Јун_Јул_ÐвгуÑÑ‚_Септембар_Октобар_Ðовембар_Децембар".split("_"),monthsShort:"Јан._Феб._Мар._Ðпр._Мај_Јун_Јул_Ðвг._Сеп._Окт._Ðов._Дец.".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"пре %s",s:"Ñекунда",m:"минут",mm:"%d минута",h:"Ñат",hh:"%d Ñати",d:"дан",dd:"%d дана",M:"меÑец",MM:"%d меÑеци",y:"година",yy:"%d године"},ordinal:function(_){return _+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=sr-cyrl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sr.js b/src/conversejs/locales/dayjs/sr.js index f9e94d4aa03e1701feb4054c6e973a6074668255..39d1f2524236a57dc1097f3afd19ff3c367df478 100644 --- a/src/conversejs/locales/dayjs/sr.js +++ b/src/conversejs/locales/dayjs/sr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{256:function(e,_,a){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_ÄŒetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._ÄŒet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"sekunda",m:"minut",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mesec",MM:"%d meseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(_,null,!0),_}(a(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[108],{298:function(e,_,a){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var _={name:"sr",weekdays:"Nedelja_Ponedeljak_Utorak_Sreda_ÄŒetvrtak_Petak_Subota".split("_"),weekdaysShort:"Ned._Pon._Uto._Sre._ÄŒet._Pet._Sub.".split("_"),weekdaysMin:"ne_po_ut_sr_Äe_pe_su".split("_"),months:"Januar_Februar_Mart_April_Maj_Jun_Jul_Avgust_Septembar_Oktobar_Novembar_Decembar".split("_"),monthsShort:"Jan._Feb._Mar._Apr._Maj_Jun_Jul_Avg._Sep._Okt._Nov._Dec.".split("_"),weekStart:1,relativeTime:{future:"za %s",past:"pre %s",s:"sekunda",m:"minut",mm:"%d minuta",h:"sat",hh:"%d sati",d:"dan",dd:"%d dana",M:"mesec",MM:"%d meseci",y:"godina",yy:"%d godine"},ordinal:function(e){return e+"."},formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"}};return e.locale(_,null,!0),_}(a(5))}}]); //# sourceMappingURL=sr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ss.js b/src/conversejs/locales/dayjs/ss.js index 2a1d85cdab857226b2f490653f7aefdf63a09855..d4872bbba78f272b00dff204bab5e492a9d3c536 100644 --- a/src/conversejs/locales/dayjs/ss.js +++ b/src/conversejs/locales/dayjs/ss.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{257:function(n,a,_){n.exports=function(n){"use strict";n=n&&n.hasOwnProperty("default")?n.default:n;var a={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(n){return n},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return n.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{299:function(n,a,_){n.exports=function(n){"use strict";n=n&&n.hasOwnProperty("default")?n.default:n;var a={name:"ss",weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),weekStart:1,weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),ordinal:function(n){return n},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"}};return n.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=ss.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sv.js b/src/conversejs/locales/dayjs/sv.js index b2699f4dea14b35c37fa831fc5bd62613e829889..a4c906fda858c9bae81b7c7301d69fbc46a681fd 100644 --- a/src/conversejs/locales/dayjs/sv.js +++ b/src/conversejs/locales/dayjs/sv.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{258:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"sv",weekdays:"söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mÃ¥n_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_mÃ¥_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,ordinal:function(e){var a=e%10;return"["+e+(1===a||2===a?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"nÃ¥gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en mÃ¥nad",MM:"%d mÃ¥nader",y:"ett Ã¥r",yy:"%d Ã¥r"}};return e.locale(a,null,!0),a}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[111],{300:function(e,a,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var a={name:"sv",weekdays:"söndag_mÃ¥ndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mÃ¥n_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_mÃ¥_ti_on_to_fr_lö".split("_"),months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekStart:1,ordinal:function(e){var a=e%10;return"["+e+(1===a||2===a?"a":"e")+"]"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},relativeTime:{future:"om %s",past:"för %s sedan",s:"nÃ¥gra sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en mÃ¥nad",MM:"%d mÃ¥nader",y:"ett Ã¥r",yy:"%d Ã¥r"}};return e.locale(a,null,!0),a}(_(5))}}]); //# sourceMappingURL=sv.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/sw.js b/src/conversejs/locales/dayjs/sw.js index 8cd47454c49f3df44af38cd98bbab60ac990b75a..c8349236ee3a8b9f85afea365a9742f5f7fd0c08 100644 --- a/src/conversejs/locales/dayjs/sw.js +++ b/src/conversejs/locales/dayjs/sw.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{259:function(a,_,m){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return a.locale(_,null,!0),_}(m(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[112],{301:function(a,_,m){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"sw",weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekStart:1,ordinal:function(a){return a},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return a.locale(_,null,!0),_}(m(5))}}]); //# sourceMappingURL=sw.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ta.js b/src/conversejs/locales/dayjs/ta.js index b7d4328cbf1633f1857ada7f0db9a0069ff4a3bf..b92627bdaaa04b92831f5a15fead92ee95586150 100644 --- a/src/conversejs/locales/dayjs/ta.js +++ b/src/conversejs/locales/dayjs/ta.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{260:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ta",weekdays:"ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ_திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ_செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ_பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ_வியாழகà¯à®•à®¿à®´à®®à¯ˆ_வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ_சனிகà¯à®•à®¿à®´à®®à¯ˆ".split("_"),months:"ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯".split("_"),weekdaysShort:"ஞாயிறà¯_திஙà¯à®•à®³à¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி".split("_"),monthsShort:"ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯".split("_"),weekdaysMin:"ஞா_தி_செ_பà¯_வி_வெ_ச".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s இலà¯",past:"%s à®®à¯à®©à¯",s:"ஒர௠சில விநாடிகளà¯",m:"ஒர௠நிமிடமà¯",mm:"%d நிமிடஙà¯à®•à®³à¯",h:"ஒர௠மணி நேரமà¯",hh:"%d மணி நேரமà¯",d:"ஒர௠நாளà¯",dd:"%d நாடà¯à®•à®³à¯",M:"ஒர௠மாதமà¯",MM:"%d மாதஙà¯à®•à®³à¯",y:"ஒர௠வரà¯à®Ÿà®®à¯",yy:"%d ஆணà¯à®Ÿà¯à®•à®³à¯"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[113],{302:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ta",weekdays:"ஞாயிறà¯à®±à¯à®•à¯à®•à®¿à®´à®®à¯ˆ_திஙà¯à®•à®Ÿà¯à®•à®¿à®´à®®à¯ˆ_செவà¯à®µà®¾à®¯à¯à®•à®¿à®´à®®à¯ˆ_பà¯à®¤à®©à¯à®•à®¿à®´à®®à¯ˆ_வியாழகà¯à®•à®¿à®´à®®à¯ˆ_வெளà¯à®³à®¿à®•à¯à®•à®¿à®´à®®à¯ˆ_சனிகà¯à®•à®¿à®´à®®à¯ˆ".split("_"),months:"ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯".split("_"),weekdaysShort:"ஞாயிறà¯_திஙà¯à®•à®³à¯_செவà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வெளà¯à®³à®¿_சனி".split("_"),monthsShort:"ஜனவரி_பிபà¯à®°à®µà®°à®¿_மாரà¯à®šà¯_à®à®ªà¯à®°à®²à¯_மே_ஜூனà¯_ஜூலை_ஆகஸà¯à®Ÿà¯_செபà¯à®Ÿà¯†à®®à¯à®ªà®°à¯_அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_டிசமà¯à®ªà®°à¯".split("_"),weekdaysMin:"ஞா_தி_செ_பà¯_வி_வெ_ச".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},relativeTime:{future:"%s இலà¯",past:"%s à®®à¯à®©à¯",s:"ஒர௠சில விநாடிகளà¯",m:"ஒர௠நிமிடமà¯",mm:"%d நிமிடஙà¯à®•à®³à¯",h:"ஒர௠மணி நேரமà¯",hh:"%d மணி நேரமà¯",d:"ஒர௠நாளà¯",dd:"%d நாடà¯à®•à®³à¯",M:"ஒர௠மாதமà¯",MM:"%d மாதஙà¯à®•à®³à¯",y:"ஒர௠வரà¯à®Ÿà®®à¯",yy:"%d ஆணà¯à®Ÿà¯à®•à®³à¯"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ta.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/te.js b/src/conversejs/locales/dayjs/te.js index e24eca5f7bbf881e743422613a44d426033c7add..451b9f90da0ebad3bd12a228abb7077ed9b4a4e6 100644 --- a/src/conversejs/locales/dayjs/te.js +++ b/src/conversejs/locales/dayjs/te.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{261:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"te",weekdays:"ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం".split("_"),months:"జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని".split("_"),monthsShort:"జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.".split("_"),weekdaysMin:"à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s లో",past:"%s à°•à±à°°à°¿à°¤à°‚",s:"కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±",m:"à°’à°• నిమిషం",mm:"%d నిమిషాలà±",h:"à°’à°• à°—à°‚à°Ÿ",hh:"%d à°—à°‚à°Ÿà°²à±",d:"à°’à°• రోజà±",dd:"%d రోజà±à°²à±",M:"à°’à°• నెల",MM:"%d నెలలà±",y:"à°’à°• సంవతà±à°¸à°°à°‚",yy:"%d సంవతà±à°¸à°°à°¾à°²à±"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{303:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"te",weekdays:"ఆదివారం_సోమవారం_మంగళవారం_à°¬à±à°§à°µà°¾à°°à°‚_à°—à±à°°à±à°µà°¾à°°à°‚_à°¶à±à°•à±à°°à°µà°¾à°°à°‚_శనివారం".split("_"),months:"జనవరి_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°šà°¿_à°à°ªà±à°°à°¿à°²à±_మే_జూనà±_à°œà±à°²à±ˆ_ఆగసà±à°Ÿà±_సెపà±à°Ÿà±†à°‚బరà±_à°…à°•à±à°Ÿà±‹à°¬à°°à±_నవంబరà±_డిసెంబరà±".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_à°¬à±à°§_à°—à±à°°à±_à°¶à±à°•à±à°°_శని".split("_"),monthsShort:"జన._à°«à°¿à°¬à±à°°._మారà±à°šà°¿_à°à°ªà±à°°à°¿._మే_జూనà±_à°œà±à°²à±ˆ_ఆగ._సెపà±._à°…à°•à±à°Ÿà±‹._నవ._డిసె.".split("_"),weekdaysMin:"à°†_సో_మం_à°¬à±_à°—à±_à°¶à±_à°¶".split("_"),ordinal:function(_){return _},formats:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},relativeTime:{future:"%s లో",past:"%s à°•à±à°°à°¿à°¤à°‚",s:"కొనà±à°¨à°¿ à°•à±à°·à°£à°¾à°²à±",m:"à°’à°• నిమిషం",mm:"%d నిమిషాలà±",h:"à°’à°• à°—à°‚à°Ÿ",hh:"%d à°—à°‚à°Ÿà°²à±",d:"à°’à°• రోజà±",dd:"%d రోజà±à°²à±",M:"à°’à°• నెల",MM:"%d నెలలà±",y:"à°’à°• సంవతà±à°¸à°°à°‚",yy:"%d సంవతà±à°¸à°°à°¾à°²à±"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=te.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tet.js b/src/conversejs/locales/dayjs/tet.js index 581453ae01b518cc3c5c48e9dcc3561a6772b310..593b67fad94c8bfc6affc55c2a42bedf8653a172 100644 --- a/src/conversejs/locales/dayjs/tet.js +++ b/src/conversejs/locales/dayjs/tet.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{262:function(a,u,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var u={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return a.locale(u,null,!0),u}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{304:function(a,u,e){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var u={name:"tet",weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),weekStart:1,weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"}};return a.locale(u,null,!0),u}(e(5))}}]); //# sourceMappingURL=tet.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tg.js b/src/conversejs/locales/dayjs/tg.js index 55a0093acff5adae0d883fb5581bed10b99724ba..0c4c9a8f5af13059ee746ee5daf9fac728a375f5 100644 --- a/src/conversejs/locales/dayjs/tg.js +++ b/src/conversejs/locales/dayjs/tg.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{263:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"tg",weekdays:"Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),weekStart:1,weekdaysShort:"Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Ñш_дш_Ñш_чш_пш_ҷм_шб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"Ñкчанд ÑониÑ",m:"Ñк дақиқа",mm:"%d дақиқа",h:"Ñк Ñоат",hh:"%d Ñоат",d:"Ñк рӯз",dd:"%d рӯз",M:"Ñк моҳ",MM:"%d моҳ",y:"Ñк Ñол",yy:"%d Ñол"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[116],{305:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"tg",weekdays:"Ñкшанбе_душанбе_Ñешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),weekStart:1,weekdaysShort:"Ñшб_дшб_Ñшб_чшб_пшб_ҷум_шнб".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Ñш_дш_Ñш_чш_пш_ҷм_шб".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"Ñкчанд ÑониÑ",m:"Ñк дақиқа",mm:"%d дақиқа",h:"Ñк Ñоат",hh:"%d Ñоат",d:"Ñк рӯз",dd:"%d рӯз",M:"Ñк моҳ",MM:"%d моҳ",y:"Ñк Ñол",yy:"%d Ñол"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=tg.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/th.js b/src/conversejs/locales/dayjs/th.js index 9097d82e9ef888ffe3e0e6d135ecfea8c484edd8..589c76a3ec0145938700e5f13c79acf7d900ae07 100644 --- a/src/conversejs/locales/dayjs/th.js +++ b/src/conversejs/locales/dayjs/th.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{264:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"th",weekdays:"à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์".split("_"),weekdaysShort:"à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์".split("_"),weekdaysMin:"à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.".split("_"),months:"มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม".split("_"),monthsShort:"ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"à¸à¸µà¸ %s",past:"%sที่à¹à¸¥à¹‰à¸§",s:"ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดืà¸à¸™",MM:"%d เดืà¸à¸™",y:"1 ปี",yy:"%d ปี"},ordinal:function(_){return _+"."}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[117],{306:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"th",weekdays:"à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัสบดี_ศุà¸à¸£à¹Œ_เสาร์".split("_"),weekdaysShort:"à¸à¸²à¸—ิตย์_จันทร์_à¸à¸±à¸‡à¸„าร_พุธ_พฤหัส_ศุà¸à¸£à¹Œ_เสาร์".split("_"),weekdaysMin:"à¸à¸²._จ._à¸._พ._พฤ._ศ._ส.".split("_"),months:"มà¸à¸£à¸²à¸„ม_à¸à¸¸à¸¡à¸ าพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_à¸à¸£à¸à¸Žà¸²à¸„ม_สิงหาคม_à¸à¸±à¸™à¸¢à¸²à¸¢à¸™_ตุลาคม_พฤศจิà¸à¸²à¸¢à¸™_ธันวาคม".split("_"),monthsShort:"ม.ค._à¸.พ._มี.ค._เม.ย._พ.ค._มิ.ย._à¸.ค._ส.ค._à¸.ย._ต.ค._พ.ย._ธ.ค.".split("_"),formats:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},relativeTime:{future:"à¸à¸µà¸ %s",past:"%sที่à¹à¸¥à¹‰à¸§",s:"ไม่à¸à¸µà¹ˆà¸§à¸´à¸™à¸²à¸—ี",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดืà¸à¸™",MM:"%d เดืà¸à¸™",y:"1 ปี",yy:"%d ปี"},ordinal:function(_){return _+"."}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=th.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tk.js b/src/conversejs/locales/dayjs/tk.js index 7c9944d4c429eb2f5893cb68f74f6dd2208e584b..1e581d1bd09933adf77ac8689397f5b347216a70 100644 --- a/src/conversejs/locales/dayjs/tk.js +++ b/src/conversejs/locales/dayjs/tk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{265:function(e,n,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"tk",weekdays:"ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe".split("_"),weekdaysShort:"Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen".split("_"),weekdaysMin:"Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn".split("_"),months:"Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e){return e+"."}};return e.locale(n,null,!0),n}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[118],{307:function(e,n,_){e.exports=function(e){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e;var n={name:"tk",weekdays:"ÃekÅŸenbe_DuÅŸenbe_SiÅŸenbe_ÇarÅŸenbe_PenÅŸenbe_Anna_Åženbe".split("_"),weekdaysShort:"Ãek_DuÅŸ_SiÅŸ_Çar_Pen_Ann_Åžen".split("_"),weekdaysMin:"Ãk_DÅŸ_SÅŸ_Çr_Pn_An_Åžn".split("_"),months:"Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr".split("_"),monthsShort:"Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s soň",past:"%s öň",s:"birnäçe sekunt",m:"bir minut",mm:"%d minut",h:"bir sagat",hh:"%d sagat",d:"bir gün",dd:"%d gün",M:"bir aý",MM:"%d aý",y:"bir ýyl",yy:"%d ýyl"},ordinal:function(e){return e+"."}};return e.locale(n,null,!0),n}(_(5))}}]); //# sourceMappingURL=tk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tl-ph.js b/src/conversejs/locales/dayjs/tl-ph.js index ea8ab8a5e57e9e3c60084e3a063f683be655364e..479fe290791bab8650db898b214e1858179c83d5 100644 --- a/src/conversejs/locales/dayjs/tl-ph.js +++ b/src/conversejs/locales/dayjs/tl-ph.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{266:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return a.locale(e,null,!0),e}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[119],{308:function(a,e,_){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var e={name:"tl-ph",weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),weekStart:1,weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"}};return a.locale(e,null,!0),e}(_(5))}}]); //# sourceMappingURL=tl-ph.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tlh.js b/src/conversejs/locales/dayjs/tlh.js index fab77291615772f8bfc5c39c38c7262af5253e61..7b80182d488fe3aa890008404a014d16391ff12e 100644 --- a/src/conversejs/locales/dayjs/tlh.js +++ b/src/conversejs/locales/dayjs/tlh.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{267:function(a,j,r){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var j={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return a.locale(j,null,!0),j}(r(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[120],{309:function(a,j,r){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var j={name:"tlh",weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),weekStart:1,weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"}};return a.locale(j,null,!0),j}(r(5))}}]); //# sourceMappingURL=tlh.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tr.js b/src/conversejs/locales/dayjs/tr.js index cbfed3f7ac1a67176e1b3811038b07c56960a8d0..9204aca96b1430173fbfcd64e28a126ca518f354 100644 --- a/src/conversejs/locales/dayjs/tr.js +++ b/src/conversejs/locales/dayjs/tr.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{268:function(a,_,s){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"tr",weekdays:"Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),months:"Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){return a+"."}};return a.locale(_,null,!0),_}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[121],{310:function(a,_,s){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"tr",weekdays:"Pazar_Pazartesi_Salı_ÇarÅŸamba_PerÅŸembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),months:"Ocak_Åžubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄŸustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Åžub_Mar_Nis_May_Haz_Tem_AÄŸu_Eyl_Eki_Kas_Ara".split("_"),weekStart:1,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(a){return a+"."}};return a.locale(_,null,!0),_}(s(5))}}]); //# sourceMappingURL=tr.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/types-d-ts.js b/src/conversejs/locales/dayjs/types-d-ts.js index 7c4623f1e4f3c090ab98d2e7cf242deefc8d35c3..181df0dbefceda8e1cd8228ed583baed4e0eac7e 100644 --- a/src/conversejs/locales/dayjs/types-d-ts.js +++ b/src/conversejs/locales/dayjs/types-d-ts.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{456:function(e,n){throw new Error("Module parse failed: Unexpected token (1:8)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> declare interface ILocale {\n| name: string\n| weekdays?: string[]")}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[146],{545:function(e,n){throw new Error("Module parse failed: Unexpected token (1:8)\nYou may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders\n> declare interface ILocale {\n| name: string\n| weekdays?: string[]")}}]); //# sourceMappingURL=types-d-ts.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tzl.js b/src/conversejs/locales/dayjs/tzl.js index 19a53cbfe13c29993854cef3bfefc7d617c8f039..e60b08b2e8d71589fefc378920293d141c11583b 100644 --- a/src/conversejs/locales/dayjs/tzl.js +++ b/src/conversejs/locales/dayjs/tzl.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{269:function(_,a,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"tzl",weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),ordinal:function(_){return _},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return _.locale(a,null,!0),a}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[122],{311:function(_,a,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"tzl",weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),weekStart:1,weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),ordinal:function(_){return _},formats:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"}};return _.locale(a,null,!0),a}(t(5))}}]); //# sourceMappingURL=tzl.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tzm-latn.js b/src/conversejs/locales/dayjs/tzm-latn.js index 927966a9856b05358de367da871b8e1ad587bbee..f7e2cefe82bd296c5adb59f560ba4b9334ccec5d 100644 --- a/src/conversejs/locales/dayjs/tzm-latn.js +++ b/src/conversejs/locales/dayjs/tzm-latn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{270:function(a,s,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var s={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuá¸",mm:"%d minuá¸",h:"saÉ›a",hh:"%d tassaÉ›in",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return a.locale(s,null,!0),s}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[124],{312:function(a,s,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var s={name:"tzm-latn",weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekStart:6,weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",m:"minuá¸",mm:"%d minuá¸",h:"saÉ›a",hh:"%d tassaÉ›in",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"}};return a.locale(s,null,!0),s}(n(5))}}]); //# sourceMappingURL=tzm-latn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/tzm.js b/src/conversejs/locales/dayjs/tzm.js index 99e67b886c07ac0901a77a54f22f299a08bde885..d9e47c77b7ee7e5edf055b5cca954da9e035d42b 100644 --- a/src/conversejs/locales/dayjs/tzm.js +++ b/src/conversejs/locales/dayjs/tzm.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{271:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"tzm",weekdays:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),months:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),weekStart:6,weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),monthsShort:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s",past:"ⵢⴰⵠ%s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉâµâµ“â´º",mm:"%d ⵎⵉâµâµ“â´º",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉâµ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰâµ",M:"â´°âµ¢oⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔâµ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙâµ"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[123],{313:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"tzm",weekdays:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),months:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),weekStart:6,weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),monthsShort:"ⵉâµâµâ´°âµ¢âµ”_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓâµâµ¢âµ“_ⵢⵓâµâµ¢âµ“âµ£_ⵖⵓⵛⵜ_ⵛⵓⵜⴰâµâ´±âµ‰âµ”_ⴽⵟⵓⴱⵕ_âµâµ“ⵡⴰâµâ´±âµ‰âµ”_ⴷⵓⵊâµâ´±âµ‰âµ”".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_â´°âµ¢âµâ´°âµ™_ⴰⵙⵉâµâ´°âµ™_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},relativeTime:{future:"â´·â´°â´·âµ… âµ™ ⵢⴰⵠ%s",past:"ⵢⴰⵠ%s",s:"ⵉⵎⵉⴽ",m:"ⵎⵉâµâµ“â´º",mm:"%d ⵎⵉâµâµ“â´º",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉâµ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰâµ",M:"â´°âµ¢oⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔâµ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙâµ"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=tzm.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ug-cn.js b/src/conversejs/locales/dayjs/ug-cn.js index 8554741bfc79c8092b7c4f4837198b6dac40d3f3..48f4ae2217c0df5314c664af1730bf6680faed92 100644 --- a/src/conversejs/locales/dayjs/ug-cn.js +++ b/src/conversejs/locales/dayjs/ug-cn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{272:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ug-cn",weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),months:"يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر".split("_"),weekStart:1,weekdaysShort:"ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•".split("_"),monthsShort:"يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر".split("_"),weekdaysMin:"ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىÚD-كۈنى",LLL:"YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm",LLLL:"ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm"},relativeTime:{future:"%s ÙƒÛيىن",past:"%s بۇرۇن",s:"Ù†Û•Ú†Ú†Û• سÛكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر ÙƒÛˆÙ†",dd:"%d ÙƒÛˆÙ†",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[125],{314:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ug-cn",weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),months:"يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر".split("_"),weekStart:1,weekdaysShort:"ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•".split("_"),monthsShort:"يانۋار_ÙÛۋرال_مارت_ئاپرÛÙ„_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سÛنتەبىر_ئۆكتەبىر_نويابىر_دÛكابىر".split("_"),weekdaysMin:"ÙŠÛ•_دۈ_سە_چا_Ù¾Û•_جۈ_Ø´Û•".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىÚD-كۈنى",LLL:"YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm",LLLL:"ddddØŒ YYYY-يىلىM-ئاينىÚD-كۈنى، HH:mm"},relativeTime:{future:"%s ÙƒÛيىن",past:"%s بۇرۇن",s:"Ù†Û•Ú†Ú†Û• سÛكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر ÙƒÛˆÙ†",dd:"%d ÙƒÛˆÙ†",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ug-cn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/uk.js b/src/conversejs/locales/dayjs/uk.js index 7b1b1c7bdb8875345a3f6cba4d10dba79b362cbb..d7987f3264ca7fdb7ae1e7043c4fccc1133ea6c2 100644 --- a/src/conversejs/locales/dayjs/uk.js +++ b/src/conversejs/locales/dayjs/uk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{273:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ".split("_"),s="Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень".split("_"),n=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function e(_,t,s){var n,e;return"m"===s?t?"хвилина":"хвилину":"h"===s?t?"година":"годину":_+" "+(n=+_,e={ss:t?"Ñекунда_Ñекунди_Ñекунд":"Ñекунду_Ñекунди_Ñекунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"міÑÑць_міÑÑці_міÑÑців",yy:"рік_роки_років"}[s].split("_"),n%10==1&&n%100!=11?e[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?e[1]:e[2])}var M=function(_,e){return n.test(e)?t[_.month()]:s[_.month()]};M.s=s,M.f=t;var r={name:"uk",weekdays:"неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота".split("_"),weekdaysShort:"ндл_пнд_втр_Ñрд_чтв_птн_Ñбт".split("_"),weekdaysMin:"нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:M,monthsShort:"Ñiч_лют_бер_квiÑ‚_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"%s тому",s:"декілька Ñекунд",m:e,mm:e,h:e,hh:e,d:"день",dd:e,M:"міÑÑць",MM:e,y:"рік",yy:e},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY Ñ€.",LLL:"D MMMM YYYY Ñ€., HH:mm",LLLL:"dddd, D MMMM YYYY Ñ€., HH:mm"}};return _.locale(r,null,!0),r}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[126],{315:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t="ÑічнÑ_лютого_березнÑ_квітнÑ_травнÑ_червнÑ_липнÑ_ÑерпнÑ_вереÑнÑ_жовтнÑ_лиÑтопада_груднÑ".split("_"),s="Ñічень_лютий_березень_квітень_травень_червень_липень_Ñерпень_вереÑень_жовтень_лиÑтопад_грудень".split("_"),n=/D[oD]?(\[[^[\]]*\]|\s)+MMMM?/;function e(_,t,s){var n,e;return"m"===s?t?"хвилина":"хвилину":"h"===s?t?"година":"годину":_+" "+(n=+_,e={ss:t?"Ñекунда_Ñекунди_Ñекунд":"Ñекунду_Ñекунди_Ñекунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"міÑÑць_міÑÑці_міÑÑців",yy:"рік_роки_років"}[s].split("_"),n%10==1&&n%100!=11?e[0]:n%10>=2&&n%10<=4&&(n%100<10||n%100>=20)?e[1]:e[2])}var M=function(_,e){return n.test(e)?t[_.month()]:s[_.month()]};M.s=s,M.f=t;var r={name:"uk",weekdays:"неділÑ_понеділок_вівторок_Ñереда_четвер_п’ÑтницÑ_Ñубота".split("_"),weekdaysShort:"ндл_пнд_втр_Ñрд_чтв_птн_Ñбт".split("_"),weekdaysMin:"нд_пн_вт_ÑÑ€_чт_пт_Ñб".split("_"),months:M,monthsShort:"Ñiч_лют_бер_квiÑ‚_трав_черв_лип_Ñерп_вер_жовт_лиÑÑ‚_груд".split("_"),weekStart:1,relativeTime:{future:"за %s",past:"%s тому",s:"декілька Ñекунд",m:e,mm:e,h:e,hh:e,d:"день",dd:e,M:"міÑÑць",MM:e,y:"рік",yy:e},ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY Ñ€.",LLL:"D MMMM YYYY Ñ€., HH:mm",LLLL:"dddd, D MMMM YYYY Ñ€., HH:mm"}};return _.locale(r,null,!0),r}(s(5))}}]); //# sourceMappingURL=uk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/ur.js b/src/conversejs/locales/dayjs/ur.js index 9fdf0d419df51cfd459bdaffd92b7d0910d83794..3cc68cc47383c938a0867874a96d97de4390de13 100644 --- a/src/conversejs/locales/dayjs/ur.js +++ b/src/conversejs/locales/dayjs/ur.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{274:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ur",weekdays:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),months:"جنوری_Ùروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekStart:1,weekdaysShort:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),monthsShort:"جنوری_Ùروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekdaysMin:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹÛ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماÛ",MM:"%d ماÛ",y:"ایک سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[127],{316:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"ur",weekdays:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),months:"جنوری_Ùروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekStart:1,weekdaysShort:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),monthsShort:"جنوری_Ùروری_مارچ_اپریل_مئی_جون_جولائی_اگست_ستمبر_اکتوبر_نومبر_دسمبر".split("_"),weekdaysMin:"اتوار_پیر_منگل_بدھ_جمعرات_جمعÛ_ÛÙتÛ".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ddddØŒ D MMMM YYYY HH:mm"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹÛ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماÛ",MM:"%d ماÛ",y:"ایک سال",yy:"%d سال"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=ur.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/uz-latn.js b/src/conversejs/locales/dayjs/uz-latn.js index 65f96ef14ebca25849d532dbd29d333766c724ea..442cc057d8bea57d3f6b5626b40eac2c344dd7c9 100644 --- a/src/conversejs/locales/dayjs/uz-latn.js +++ b/src/conversejs/locales/dayjs/uz-latn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{275:function(a,_,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"uz-latn",weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),weekStart:1,weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"}};return a.locale(_,null,!0),_}(n(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[129],{317:function(a,_,n){a.exports=function(a){"use strict";a=a&&a.hasOwnProperty("default")?a.default:a;var _={name:"uz-latn",weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),weekStart:1,weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),ordinal:function(a){return a},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"}};return a.locale(_,null,!0),_}(n(5))}}]); //# sourceMappingURL=uz-latn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/uz.js b/src/conversejs/locales/dayjs/uz.js index aa4312bfce6f1399ada96464c5d29558ddb31a9a..29280f88ca6114355d7c18fdd15202873feff519 100644 --- a/src/conversejs/locales/dayjs/uz.js +++ b/src/conversejs/locales/dayjs/uz.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{276:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"uz",weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),weekStart:1,weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурÑат",m:"бир дакика",mm:"%d дакика",h:"бир Ñоат",hh:"%d Ñоат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"}};return _.locale(t,null,!0),t}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[128],{318:function(_,t,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"uz",weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),months:"Ñнвар_феврал_март_апрел_май_июн_июл_авгуÑÑ‚_ÑентÑбр_октÑбр_ноÑбр_декабр".split("_"),weekStart:1,weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),monthsShort:"Ñнв_фев_мар_апр_май_июн_июл_авг_Ñен_окт_ноÑ_дек".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурÑат",m:"бир дакика",mm:"%d дакика",h:"бир Ñоат",hh:"%d Ñоат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"}};return _.locale(t,null,!0),t}(s(5))}}]); //# sourceMappingURL=uz.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/vi.js b/src/conversejs/locales/dayjs/vi.js index 5ed810046711fdf08af11562e5ebe01ac972845d..07f514578ae3c0fa161c925e6dc6df458510bbf9 100644 --- a/src/conversejs/locales/dayjs/vi.js +++ b/src/conversejs/locales/dayjs/vi.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{277:function(t,h,_){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var h={name:"vi",weekdays:"chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy".split("_"),months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s tá»›i",past:"%s trÆ°á»›c",s:"và i giây",m:"má»™t phút",mm:"%d phút",h:"má»™t giá»",hh:"%d giá»",d:"má»™t ngà y",dd:"%d ngà y",M:"má»™t tháng",MM:"%d tháng",y:"má»™t năm",yy:"%d năm"}};return t.locale(h,null,!0),h}(_(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[130],{319:function(t,h,_){t.exports=function(t){"use strict";t=t&&t.hasOwnProperty("default")?t.default:t;var h={name:"vi",weekdays:"chủ nháºt_thứ hai_thứ ba_thứ tÆ°_thứ năm_thứ sáu_thứ bảy".split("_"),months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),weekStart:1,weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),ordinal:function(t){return t},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},relativeTime:{future:"%s tá»›i",past:"%s trÆ°á»›c",s:"và i giây",m:"má»™t phút",mm:"%d phút",h:"má»™t giá»",hh:"%d giá»",d:"má»™t ngà y",dd:"%d ngà y",M:"má»™t tháng",MM:"%d tháng",y:"má»™t năm",yy:"%d năm"}};return t.locale(h,null,!0),h}(_(5))}}]); //# sourceMappingURL=vi.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/x-pseudo.js b/src/conversejs/locales/dayjs/x-pseudo.js index 03b5fa75677fd61eb3c35957125a3f2e5b946e14..fe33df08ae6d04a4e571026f9f394e24e6dd093b 100644 --- a/src/conversejs/locales/dayjs/x-pseudo.js +++ b/src/conversejs/locales/dayjs/x-pseudo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{278:function(_,r,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var r={name:"x-pseudo",weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý".split("_"),months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),weekStart:1,weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"Ã~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~mÃñ~úté",mm:"%d m~Ãñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"}};return _.locale(r,null,!0),r}(s(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[131],{320:function(_,r,s){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var r={name:"x-pseudo",weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý".split("_"),months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),weekStart:1,weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),ordinal:function(_){return _},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},relativeTime:{future:"Ã~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",m:"á ~mÃñ~úté",mm:"%d m~Ãñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"}};return _.locale(r,null,!0),r}(s(5))}}]); //# sourceMappingURL=x-pseudo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/yo.js b/src/conversejs/locales/dayjs/yo.js index bad9718f465bbc79b4278cd55b324be248e14878..0e1367388d0533753a5aeed91b1e9ecaa4dc6b9d 100644 --- a/src/conversejs/locales/dayjs/yo.js +++ b/src/conversejs/locales/dayjs/yo.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{279:function(_,a,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"yo",weekdays:"AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta".split("_"),months:"SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀".split("_"),weekStart:1,weekdaysShort:"AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ".split("_"),monthsShort:"SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀".split("_"),weekdaysMin:"AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b".split("_"),ordinal:function(_){return _},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"niÌ %s",past:"%s ká»jaÌ",s:"iÌ€sẹjuÌ aayaÌ die",m:"iÌ€sẹjuÌ kan",mm:"iÌ€sẹjuÌ %d",h:"waÌkati kan",hh:"waÌkati %d",d:"á»já»Ì kan",dd:"á»já»Ì %d",M:"osuÌ€ kan",MM:"osuÌ€ %d",y:"á»duÌn kan",yy:"á»duÌn %d"}};return _.locale(a,null,!0),a}(e(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[132],{321:function(_,a,e){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var a={name:"yo",weekdays:"AÌ€iÌ€kuÌ_AjeÌ_IÌ€sẹÌgun_Ọjá»ÌruÌ_Ọjá»Ìbá»_ẸtiÌ€_AÌ€baÌmẹÌta".split("_"),months:"SẹÌrẹÌ_EÌ€reÌ€leÌ€_Ẹrẹ̀naÌ€_IÌ€gbeÌ_EÌ€bibi_OÌ€kuÌ€du_Agẹmo_OÌ€guÌn_Owewe_Ọ̀waÌ€raÌ€_BeÌluÌ_Ọ̀pẹ̀̀".split("_"),weekStart:1,weekdaysShort:"AÌ€iÌ€k_AjeÌ_IÌ€sẹÌ_Ọjr_Ọjb_ẸtiÌ€_AÌ€baÌ".split("_"),monthsShort:"SẹÌr_EÌ€rl_Ẹrn_IÌ€gb_EÌ€bi_OÌ€kuÌ€_Agẹ_OÌ€guÌ_Owe_Ọ̀waÌ€_BeÌl_Ọ̀pẹ̀̀".split("_"),weekdaysMin:"AÌ€iÌ€_Aj_IÌ€s_Ọr_Ọb_Ẹt_AÌ€b".split("_"),ordinal:function(_){return _},formats:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},relativeTime:{future:"niÌ %s",past:"%s ká»jaÌ",s:"iÌ€sẹjuÌ aayaÌ die",m:"iÌ€sẹjuÌ kan",mm:"iÌ€sẹjuÌ %d",h:"waÌkati kan",hh:"waÌkati %d",d:"á»já»Ì kan",dd:"á»já»Ì %d",M:"osuÌ€ kan",MM:"osuÌ€ %d",y:"á»duÌn kan",yy:"á»duÌn %d"}};return _.locale(a,null,!0),a}(e(5))}}]); //# sourceMappingURL=yo.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/zh-cn.js b/src/conversejs/locales/dayjs/zh-cn.js index a4786c68fcb1679b34fad2350f7b6e11b304b67a..da50e98a0d742cfeaefbf62b7da0a7b2e0fe3553 100644 --- a/src/conversejs/locales/dayjs/zh-cn.js +++ b/src/conversejs/locales/dayjs/zh-cn.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{280:function(_,t,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,t){switch(t){case"W":return _+"周";default:return _+"æ—¥"}},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥Ah点mm分",LLLL:"YYYYå¹´M月Dæ—¥ddddAh点mm分",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%s内",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},meridiem:function(_,t){var Y=100*_+t;return Y<600?"凌晨":Y<900?"早上":Y<1130?"上åˆ":Y<1230?"ä¸åˆ":Y<1800?"下åˆ":"晚上"}};return _.locale(t,null,!0),t}(Y(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[134],{322:function(_,t,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,t){switch(t){case"W":return _+"周";default:return _+"æ—¥"}},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥Ah点mm分",LLLL:"YYYYå¹´M月Dæ—¥ddddAh点mm分",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%s内",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},meridiem:function(_,t){var Y=100*_+t;return Y<600?"凌晨":Y<900?"早上":Y<1130?"上åˆ":Y<1230?"ä¸åˆ":Y<1800?"下åˆ":"晚上"}};return _.locale(t,null,!0),t}(Y(5))}}]); //# sourceMappingURL=zh-cn.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/zh-hk.js b/src/conversejs/locales/dayjs/zh-hk.js index c9a87943372aed1b61be0a4277369a687a42b596..cc4cd919f5a3eedb08f0204016e4e36bfdd3e298 100644 --- a/src/conversejs/locales/dayjs/zh-hk.js +++ b/src/conversejs/locales/dayjs/zh-hk.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{281:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"zh-hk",months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"一分é˜",mm:"%d 分é˜",h:"一å°æ™‚",hh:"%d å°æ™‚",d:"一天",dd:"%d 天",M:"一個月",MM:"%d 個月",y:"一年",yy:"%d å¹´"}};return _.locale(s,null,!0),s}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[135],{323:function(_,s,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var s={name:"zh-hk",months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"一分é˜",mm:"%d 分é˜",h:"一å°æ™‚",hh:"%d å°æ™‚",d:"一天",dd:"%d 天",M:"一個月",MM:"%d 個月",y:"一年",yy:"%d å¹´"}};return _.locale(s,null,!0),s}(t(5))}}]); //# sourceMappingURL=zh-hk.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/zh-tw.js b/src/conversejs/locales/dayjs/zh-tw.js index 6eb4f029fbe58f1dbc23e9404fecc0bb31012d5e..bedf1fce602bdcede3a078a0e41d4c7effb44229 100644 --- a/src/conversejs/locales/dayjs/zh-tw.js +++ b/src/conversejs/locales/dayjs/zh-tw.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{282:function(_,Y,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var Y={name:"zh-tw",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥dddd HH:mm",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}};return _.locale(Y,null,!0),Y}(t(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[136],{324:function(_,Y,t){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var Y={name:"zh-tw",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_){return _+"æ—¥"},formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥ HH:mm",LLLL:"YYYYå¹´M月Dæ—¥dddd HH:mm",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%så…§",past:"%så‰",s:"幾秒",m:"1 分é˜",mm:"%d 分é˜",h:"1 å°æ™‚",hh:"%d å°æ™‚",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 å¹´",yy:"%d å¹´"}};return _.locale(Y,null,!0),Y}(t(5))}}]); //# sourceMappingURL=zh-tw.js.map \ No newline at end of file diff --git a/src/conversejs/locales/dayjs/zh.js b/src/conversejs/locales/dayjs/zh.js index 68118dc5ba5b4a4b6f28fa1626dd7c53c02d06c1..ecb4964944acca7d2dd0c6d5d343a79cdb81ecfc 100644 --- a/src/conversejs/locales/dayjs/zh.js +++ b/src/conversejs/locales/dayjs/zh.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{283:function(_,t,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"zh",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,t){switch(t){case"W":return _+"周";default:return _+"æ—¥"}},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥Ah点mm分",LLLL:"YYYYå¹´M月Dæ—¥ddddAh点mm分",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%såŽ",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},meridiem:function(_,t){var Y=100*_+t;return Y<600?"凌晨":Y<900?"早上":Y<1130?"上åˆ":Y<1230?"ä¸åˆ":Y<1800?"下åˆ":"晚上"}};return _.locale(t,null,!0),t}(Y(4))}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{325:function(_,t,Y){_.exports=function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var t={name:"zh",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期å…".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周å…".split("_"),weekdaysMin:"æ—¥_一_二_三_å››_五_å…".split("_"),months:"一月_二月_三月_四月_五月_å…月_七月_八月_ä¹æœˆ_å月_å一月_å二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,t){switch(t){case"W":return _+"周";default:return _+"æ—¥"}},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYYå¹´M月Dæ—¥",LLL:"YYYYå¹´M月Dæ—¥Ah点mm分",LLLL:"YYYYå¹´M月Dæ—¥ddddAh点mm分",l:"YYYY/M/D",ll:"YYYYå¹´M月Dæ—¥",lll:"YYYYå¹´M月Dæ—¥ HH:mm",llll:"YYYYå¹´M月Dæ—¥dddd HH:mm"},relativeTime:{future:"%såŽ",past:"%så‰",s:"å‡ ç§’",m:"1 分钟",mm:"%d 分钟",h:"1 å°æ—¶",hh:"%d å°æ—¶",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 å¹´",yy:"%d å¹´"},meridiem:function(_,t){var Y=100*_+t;return Y<600?"凌晨":Y<900?"早上":Y<1130?"上åˆ":Y<1230?"ä¸åˆ":Y<1800?"下åˆ":"晚上"}};return _.locale(t,null,!0),t}(Y(5))}}]); //# sourceMappingURL=zh.js.map \ No newline at end of file diff --git a/src/conversejs/locales/de-LC_MESSAGES-converse-po.js b/src/conversejs/locales/de-LC_MESSAGES-converse-po.js index 482d5dcfd552926563cf614bb7ac08b0e0ceade5..225011e646211b867eb35edd74fe1c3bb0724081 100644 --- a/src/conversejs/locales/de-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/de-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{425:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"de"},"Create your account":["Erstellen Sie Ihr Konto"],"Please enter the XMPP provider to register with:":["Bitte geben Sie den XMPP-Provider ein, bei dem Sie sich anmelden möchten:"],"Already have a chat account?":["Sie haben bereits ein Chat-Konto?"],"Log in here":["Hier anmelden"],"Account Registration:":["Konto-Registrierung:"],"Register":["Registrierung"],"Choose a different provider":["Wählen Sie einen anderen Anbieter"],"Hold tight, we\'re fetching the registration form…":["Bitte warten, das Anmeldeformular wird geladen …"],"Cancel":["Abbrechen"],"The connection has dropped, attempting to reconnect.":["Die Verbindung ist abgebrochen und es wird versucht, die Verbindung wiederherzustellen."],"An error occurred while connecting to the chat server.":["Beim Verbinden mit dem Chatserver ist ein Fehler aufgetreten."],"Your XMPP address and/or password is incorrect. Please try again.":["Ihre XMPP-Adresse und/oder Ihr Kennwort sind falsch. Bitte versuchen Sie es noch einmal."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Leider konnten wir keine Verbindung zum XMPP-Host mit der Domain %1$s herstellen"],"The XMPP server did not offer a supported authentication mechanism":["Der XMPP-Server hat keinen unterstützten Authentifizierungsmechanismus angeboten"],"Undecryptable OMEMO message":["Unentschlüsselbare OMEMO-Nachricht"],"Sorry, could not determine upload URL.":["Leider konnte die Upload-URL nicht ermittelt werden."],"Sorry, could not determine file upload URL.":["Konnte die Hochlade-URL leider nicht bestimmen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Leider konnte die Datei nicht hochgeladen werden. Der Server antwortete: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Leider konnte Ihre Datei nicht erfolgreich hochgeladen werden."],"You\'re not allowed to retract your message.":["Sie dürfen Ihre Nachricht nicht widerrufen."],"Sorry, an error occurred while trying to retract your message.":["Es ist leider ein Fehler aufgetreten, als Sie versucht haben, Ihre Nachricht zu widerrufen."],"You\'re not allowed to send a message.":["Sie dürfen keine Nachricht senden."],"Sorry, an error occurred while trying to send your message.":["Es ist leider ein Fehler beim Senden Ihrer Nachricht aufgetreten."],"Sorry, looks like file upload is not supported by your server.":["Scheint als werde das Hochladen von Dateien auf dem Server nicht unterstützt."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Die Größe Ihrer Datei, %1$s, überschreitet das erlaubte Maximum vom Server, welches bei %2$s liegt."],"Smileys and emotions":["Smileys und Emotionen"],"People":["Menschen"],"Activities":["Aktivitäten"],"Travel":["Reisen"],"Objects":["Objekte"],"Animals and nature":["Tiere und Natur"],"Food and drink":["Essen und Trinken"],"Symbols":["Symbole"],"Flags":["Flaggen"],"Stickers":["Aufkleber"],"This groupchat is not anonymous":["Dieser Gruppenchat ist nicht anonym"],"This groupchat now shows unavailable members":["Dieser Gruppenchat zeigt nicht verfügbare Mitglieder an"],"This groupchat does not show unavailable members":["Dieser Gruppenchat zeigt keine nicht verfügbaren Mitglieder an"],"The groupchat configuration has changed":["Die Gruppenchatkonfiguration hat sich geändert"],"Groupchat logging is now enabled":["Gruppenchat wird ab jetzt protokolliert"],"Groupchat logging is now disabled":["Gruppenchat wird nicht mehr protokolliert"],"This groupchat is now no longer anonymous":["Dieser Gruppenchat ist jetzt nicht mehr anonym"],"This groupchat is now semi-anonymous":["Dieser Gruppenchat ist jetzt nur teilweise anonym"],"This groupchat is now fully-anonymous":["Dieser Gruppenchat ist jetzt vollständig anonym"],"A new groupchat has been created":["Ein neuer Gruppenchat wurde erstellt"],"Your nickname has been automatically set to %1$s":["Ihr Spitzname wurde automatisch geändert zu: %1$s"],"Your nickname has been changed to %1$s":["Ihr Spitzname wurde geändert zu: %1$s"],"You have been banned from this groupchat":["Sie wurden aus diesem Gruppenchat entfernt"],"You have exited this groupchat due to a technical problem":["Sie haben diesen Gruppenchat aufgrund eines technischen Problems verlassen"],"You have been kicked from this groupchat":["Sie wurden aus diesem Gruppenchat hinausgeworfen"],"You have been removed from this groupchat because of an affiliation change":["Sie wurden aus diesem Gruppenchat wegen einer Zugehörigkeitsänderung entfernt"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sie wurden aus diesem Gruppenchat ausgeschlossen, da der Gruppenchat jetzt nur noch Mitglieder erlaubt und Sie kein Mitglied sind"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sie wurden aus dem Gruppenchat entfernt, weil der Hostingservice heruntergefahren wurde"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Ihr Widerruf wurde nicht zugestellt, weil Sie nicht im Gruppenchat vertreten sind."],"Your message was not delivered because you weren\'t allowed to send it.":["Ihre Nachricht wurde nicht zugestellt, weil Sie sie nicht abschicken durften."],"Your message was not delivered because you\'re not present in the groupchat.":["Ihre Nachricht wurde nicht zugestellt, weil Sie im Gruppenchat nicht vertreten sind."],"A timeout happened while while trying to retract your message.":["Beim Versuch, Ihre Nachricht zurückzuziehen, ist eine Zeitüberschreitung aufgetreten."],"You\'re not allowed to register yourself in this groupchat.":["Sie dürfen nicht diesem Gruppenchat beitreten."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Es ist Ihnen nicht erlaubt diesem Raum beizutreten da sie kein Mitglied sind."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Registrierung fehlgeschlagen, dieser Raum unterstützt keine Registrierung von Spitznamen."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Spitzname-Registrierung fehlgeschlagen, falsche Informationen eingetragen."],"Topic set by %1$s":["Thema von %1$s festgelegt"],"Topic cleared by %1$s":["Thema wurde durch %1$s bereinigt"],"%1$s has been banned by %2$s":["%1$s wurde von %2$s verbannt"],"%1$s has been banned":["%1$s wurde verbannt"],"%1$s\'s nickname has changed":["Der Spitzname von %1$s hat sich geändert"],"%1$s has been kicked out by %2$s":["%1$s wurde von %2$s hinausgeworfen"],"%1$s has been kicked out":["%1$s wurde hinausgeworfen"],"%1$s has been removed because of an affiliation change":["%1$s wurde wegen einer Zugehörigkeitsänderung entfernt"],"%1$s has been removed for not being a member":["%1$s ist kein Mitglied und wurde daher entfernt"],"%1$s is no longer an admin of this groupchat":["%1$s ist nicht mehr ein Admin dieses Gruppenchats"],"%1$s is no longer an owner of this groupchat":["%1$s ist nicht mehr Eigentümer dieses Gruppenchats"],"%1$s is no longer banned from this groupchat":["%1$s ist in diesem Gruppenchat nicht mehr gesperrt"],"%1$s is no longer a member of this groupchat":["%1$s ist nicht mehr ein Mitglied dieses Gruppenchats"],"%1$s is now a member of this groupchat":["%1$s ist nun Mitglied dieses Gruppenchats"],"%1$s is now an %2$s of this groupchat":["%1$s ist nun ein %2$s dieses Gruppenchats"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Der gewählte Spitzname ist reserviert oder derzeit in Gebrauch. Bitte wählen Sie einen Anderen."],"Password incorrect":["Passwort falsch"],"You are not on the member list of this groupchat.":["Sie sind nicht auf der Mitgliederliste dieses Gruppenchats."],"You have been banned from this groupchat.":["Sie wurden aus diesem Gruppenchat entfernt."],"You are not allowed to create new groupchats.":["Es ist Ihnen nicht erlaubt neue Räume anzulegen."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Ihr Spitzname entspricht nicht den Richtlinien dieses Gruppenchats."],"This groupchat does not (yet) exist.":["Dieser Gruppenchat existiert (noch) nicht."],"This groupchat has reached its maximum number of participants.":["Maximale Anzahl an Teilnehmern für diesen Gruppenchat erreicht."],"Remote server not found":["Server wurde nicht gefunden"],"The explanation given is: \\"%1$s\\".":["Angegebene Grund: „%1$sâ€."],"%1$s has invited you to join a groupchat: %2$s":["%1$s hat Sie in den Gruppenchat „%2$s†eingeladen"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s hat Sie in den Gruppenchat „%2$s†eingeladen. Begründung: „%3$sâ€"],"Error":["Fehler"],"Sorry, something went wrong while trying to save your bookmark.":["Leider konnte das Lesezeichen nicht gespeichert werden."],"Timeout Error":["Timeout-Fehler"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Der Server hat Ihre Lesezeichen nicht innerhalb der zulässigen Zeit zurückgegeben. Sie können die Seite neu laden, um sie erneut anzufordern."],"My contacts":["Meine Kontakte"],"Pending contacts":["Unbestätigte Kontakte"],"Contact requests":["Kontaktanfragen"],"Ungrouped":["Ungruppiert"],"New messages":["Neue Nachrichten"],"Sorry, there was an error while trying to add %1$s as a contact.":["Leider gab es einen Fehler beim Versuch, %1$s als Kontakt hinzuzufügen."],"This client does not allow presence subscriptions":["Dieser Client erlaubt keine Anwesenheitsabonnements"],"Click to hide these contacts":["Hier klicken, um diese Kontakte auszublenden"],"Unbookmark this groupchat":["Lesezeichen für diesen Gruppenchat entfernen"],"Click to open this groupchat":["Hier klicken, um diesen Gruppenchat zu öffnen"],"Click to toggle the bookmarks list":["Liste der Lesezeichen umschalten"],"Bookmarks":["Lesezeichen"],"Bookmark this groupchat":["Lesezeichen für diesen Gruppenchat speichern"],"Would you like this groupchat to be automatically joined upon startup?":["Beim Anmelden diesem Gruppenchat automatisch beitreten?"],"The name for this bookmark:":["Name des Lesezeichens:"],"What should your nickname for this groupchat be?":["Welcher Spitzname soll für diesen Gruppenchat verwendet werden?"],"Save":["Speichern"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Möchten Sie das Lesezeichen „%1$s†wirklich löschen?"],"Unbookmark":["Lesezeichen entfernen"],"Bookmark":["Lesezeichen"],"Close":["Schließen"],"OK":["OK"],"Image: ":["Bild: "],"Download audio file \\"%1$s\\"":["Audiodatei \\"%1$s\\" herunterladen"],"Download file \\"%1$s\\"":["Datei \\"%1$s\\" herunterladen"],"Cancel Editing":["Bearbeitung abbrechen"],"Edit":["Bearbeiten"],"Retract":["Widerrufen"],"Message versions":["Nachrichtenarchivierung"],"Retry":["Wiederholen"],"Uploading file:":["Lade Datei hoch:"],"%1$s has removed this message":["%1$s hat diese Nachricht entfernt"],"This message has been edited":["Diese Nachricht wurde geändert"],"Show more":["Mehr anzeigen"],"Show less":["Weniger anzeigen"],"No message history available.":["Kein Nachrichtenverlauf vorhanden."],"Search results":["Suchergebnisse"],"Search":["Suchen"],"Insert emojis":["Emojis einfügen"],"Send the message":["Nachricht senden"],"Start a call":["Beginne eine Unterhaltung"],"Message characters remaining":["Verbleibende Zeichen"],"Hide participants":["Teilnehmer ausblenden"],"Show participants":["Teilnehmer anzeigen"],"Choose a file to send":["Datei versenden"],"Click to write as a normal (non-spoiler) message":["Hier klicken, um Statusnachricht zu ändern (ohne Spoiler)"],"Click to write your message as a spoiler":["Hier klicken, um die Nachricht als Spoiler zu kennzeichnen"],"The User\'s Profile Image":["Benutzerprofilbild"],"Trusted":["Vertrauenswürdig"],"Untrusted":["Nicht vertrauenswürdig"],"OMEMO Fingerprints":["OMEMO Fingerabdrücke"],"No OMEMO-enabled devices found":["Keine OMEMO-fähigen Geräte gefunden"],"Remove as contact":["Kontakt entfernen"],"XMPP Address":["XMPP-Adresse"],"Email":["E-Mail"],"Full Name":["Name"],"Nickname":["Spitzname"],"Refresh":["Aktualisieren"],"Role":["Rolle"],"URL":["URL"],"%1$s is typing":["%1$s schreibt"],"%1$s has stopped typing":["%1$s tippt nicht mehr"],"%1$s has gone away":["%1$s ist jetzt abwesend"],"Remove messages":["Nachrichten entfernen"],"Close this chat":["Diesen Chat schließen"],"Write in the third person":["In der dritten Person schreiben"],"Show this menu":["Dieses Menü anzeigen"],"Hidden message":["Versteckte Nachricht"],"Message":["Nachricht"],"Optional hint":["Optionaler Hinweis"],"You have unread messages":["Sie haben ungelesene Nachrichten"],"Details":["Details"],"See more information about this person":["Weitere Informationen über diese Person anzeigen"],"Close and end this conversation":["Schließen und beenden Sie dieses Gespräch"],"Sorry, the connection has been lost, and your message could not be sent":["Die Verbindung wurde leider unterbrochen und Ihre Nachricht konnte nicht gesendet werden"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Beachten Sie, dass andere XMPP/Jabber-Clients (und Server) möglicherweise noch keinen Widerruf unterstützen und dass diese Nachricht möglicherweise nicht überall entfernt wird."],"Are you sure you want to retract this message?":["Sind Sie sicher, dass Sie diese Nachricht widerrufen wollen?"],"Confirm":["Bestätigen"],"You have an unsent message which will be lost if you continue. Are you sure?":["Sie haben eine nicht gesendete Nachricht, die verloren geht, wenn Sie fortfahren. Sind Sie sicher?"],"Are you sure you want to clear the messages from this conversation?":["Sind Sie sicher, dass Sie alle Nachrichten dieses Chats löschen möchten?"],"%1$s has gone offline":["%1$s hat sich abgemeldet"],"%1$s is busy":["%1$s ist beschäftigt"],"%1$s is online":["%1$s ist jetzt online"],"Sorry, something went wrong while trying to refresh":["Leider ist bei der Aktualisierung etwas schief gelaufen"],"Are you sure you want to remove this contact?":["Möchten Sie diesen Kontakt wirklich entfernen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Leider gab es einen Fehler beim Versuch, %1$s als Kontakt zu entfernen."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Um die Leistung zu verbessern, werden Ihre Daten in diesem Browser zwischengespeichert. Deaktivieren Sie dieses Kontrollkästchen, wenn es sich um einen öffentlichen Computer handelt oder wenn Sie möchten, dass Ihre Daten beim Abmelden gelöscht werden. Es ist wichtig, dass Sie sich explizit abmelden, da sonst möglicherweise nicht alle zwischengespeicherten Daten gelöscht werden. Bitte beachten Sie, dass bei Verwendung eines nicht vertrauenswürdigen Geräts die OMEMO-Verschlüsselung NICHT verfügbar ist."],"This is a trusted device":["Diesem Gerät wird vertraut"],"Password":["Passwort"],"Create an account":["Konto erstellen"],"Don\'t have a chat account?":["Sie haben noch kein Chat-Konto?"],"Log in":["Anmelden"],"Disconnected":["Getrennt"],"Click here to log in anonymously":["Hier klicken, um sich anonym anzumelden"],"Username":["Benutzername"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["Bitte eine gültige XMPP-Adresse eingeben"],"Chat Contacts":["Kontakte"],"Toggle chat":["Chat ein-/ausblenden"],"Click to restore this chat":["Hier klicken, um diesen Chat wiederherzustellen"],"Minimized":["Minimiert"],"Minimize":["Minimieren"],"Minimize this chat":["Diesen Chat minimieren"],"Minimize this groupchat":["Diesen Gruppenchat minimieren"],"This field is required":["Dieses Feld ist ein Pflichtfeld"],"Join":["Betreten"],"Enter a new Groupchat":["Einem neuen Gruppenchat beitreten"],"name@conference.example.org":["name@conference.beispiel.org"],"Groupchat name":["Gruppenchatname"],"Groupchat address":["Gruppenchat-Adresse"],"Groupchat id is invalid.":["Gruppenchat-ID ist ungültig."],"Invite":["Einladen"],"Invite someone to this groupchat":["Laden Sie jemanden zu diesem Gruppenchat ein"],"user@example.org":["benutzer@beispiel.org"],"Optional reason for the invitation":["Optionaler Grund für die Einladung"],"Show groupchats":["Gruppen"],"Server address":["Server"],"Show more information on this groupchat":["Zeige mehr Informationen über diesen Gruppenchat"],"Query for Groupchats":["Gruppenchats abfragen"],"Description:":["Beschreibung:"],"Groupchat Address (JID):":["Gruppenchat-Adresse (JID):"],"Participants:":["Teilnehmer:"],"Features:":["Funktionen:"],"Requires authentication":["Authentifizierung erforderlich"],"Hidden":["Ausblenden"],"Requires an invitation":["Einladung erforderlich"],"Moderated":["Moderiert"],"Non-anonymous":["Nicht anonym"],"Open":["Offen"],"Permanent":["Dauerhafter Raum"],"Public":["Öffentlich"],"Semi-anonymous":["Teilweise anonym"],"Temporary":["Vorübergehend"],"Unmoderated":["Nicht moderiert"],"conference.example.org":["konferenz.beispiel.org"],"Groupchats found":["Gruppenchats gefunden"],"No groupchats found":["Keine Räume gefunden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatoren sind privilegierte Benutzer, die die Rollen anderer Benutzer ändern können (außer denen mit Administrator- oder Eigentümerzugehörigkeit)."],"The default role, implies that you can read and write messages.":["Die Standardrolle bedeutet, dass Sie Nachrichten lesen und schreiben können."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besucher dürfen keine Nachrichten in einem moderierten Mehrbenutzer-Chat schreiben."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Besitzer ist die höchste Zugehörigkeit. Besitzer können Rollen und Zugehörigkeiten aller anderen Benutzer ändern."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administrator ist die zweithöchste Zugehörigkeit. Administratoren können Rollen und Zugehörigkeiten aller anderen Benutzer mit Ausnahme der Eigentümer ändern."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Sperren Sie Benutzer, indem Sie ihre Zugehörigkeit zu ausgeschlossenen Personen ändern."],"Change role":["Rolle ändern"],"New Role":["Neue Rolle"],"Reason":["Grund"],"Change affiliation":["Zugehörigkeit ändern"],"New affiliation":["Neue Zugehörigkeit"],"Affiliation":["Zugehörigkeit"],"Moderator Tools":["Moderatoren-Tools"],"No users with that affiliation found.":["Keine Benutzer mit dieser Zugehörigkeit gefunden."],"No users with that role found.":["Keine Nutzer mit dieser Rolle gefunden."],"Type here to filter the search results":["Hier Filter für Suchergebnisse eingeben"],"Show users":["Nutzer anzeigen"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rollen werden den Benutzern zugewiesen, um ihnen in einem Mehrbenutzer-Chat bestimmte Fähigkeiten zu gewähren oder zu verweigern. Sie werden entweder explizit oder implizit als Teil einer Zugehörigkeit zugewiesen. Eine Rolle, die nicht auf eine Zugehörigkeit zurückzuführen ist, ist nur für die Dauer der Sitzung des Benutzers gültig."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Eine Zugehörigkeit ist ein langlebiger Anspruch, der typischerweise eine bestimmte Rolle beinhaltet und Privilegien und Verantwortlichkeiten gewährt. Beispielsweise haben Administratoren und Eigentümer automatisch die Moderatorenrolle."],"Timeout error while trying to set the affiliation":["Zeitüberschreitungsfehler beim Versuch, die Zugehörigkeit festzulegen"],"Sorry, you\'re not allowed to make that change":["Es tut uns leid, Sie dürfen diese Änderung nicht vornehmen"],"Sorry, something went wrong while trying to set the affiliation":["Leider ist bei der Änderung der Zugehörigkeiten etwas schief gelaufen"],"Affiliation changed":["Zugehörigkeit geändert"],"Role changed":["Rolle geändert"],"You\'re not allowed to make that change":["Du darfst diese Änderung nicht vornehmen"],"Sorry, something went wrong while trying to set the role":["Leider ist bei der Festlegung der Rolle etwas schief gelaufen"],"Topic":["Thema"],"Topic author":["Autor des Themas"],"Groupchat address (JID)":["Gruppenchat-Adresse (JID)"],"Message archiving":["Nachrichtenarchivierung"],"Messages are archived on the server":["Nachrichten werden auf dem Server archiviert"],"Description":["Beschreibung"],"Features":["Funktionen"],"This groupchat is not publicly searchable":["Dieser Gruppenchat ist nicht öffentlich auffindbar"],"This groupchat is restricted to members only":["Dieser Gruppenchat ist nur für Mitglieder zugänglich"],"Members only":["Nur Mitglieder"],"Participants entering this groupchat need to request permission to write":["Teilnehmer, die diesem Gruppenchat beitreten, müssen die Erlaubnis zum Schreiben anfordern"],"Name":["Name"],"This groupchat does not require a password upon entry":["Dieser Gruppenchat erfordert kein Passwort"],"No password required":["Kein Passwort benötigt"],"Not anonymous":["Nicht anonym"],"All other groupchat participants can see your XMPP address":["Jeder in dem Gruppenchat kann Ihre XMPP-Adresse sehen"],"Not moderated":["Nicht moderiert"],"Participants entering this groupchat can write right away":["Teilnehmer, die diesem Gruppenchat beitreten, können sofort schreiben"],"Online users":["Online"],"Anyone can join this groupchat":["Jeder kann diesem Gruppenchat beitreten"],"This groupchat requires a password before entry":["Dieser Gruppenchat erfordert ein Passwort"],"Password protected":["Passwortgeschützt"],"Persistent":["Dauerhaft"],"This groupchat persists even if it\'s unoccupied":["Dieser Gruppenchat bleibt bestehen, auch wenn er nicht besetzt ist"],"Only moderators can see your XMPP address":["Nur Moderatoren können Ihre XMPP-Adresse sehen"],"This groupchat will disappear once the last person leaves":["Dieser Gruppenchat verschwindet, sobald die letzte Person den Gruppenchat verlässt"],"This groupchat is publicly searchable":["Dieser Gruppenchat ist öffentlich auffindbar"],"Groupchat info for %1$s":["Gruppenchat-Benachrichtigung für %1$s"],"You\'re not allowed to send messages in this room":["Sie dürfen in diesem Gruppenchat keine Nachrichten senden"],"The conversation has moved. Click below to enter.":["Das Gespräch wurde verschoben. Klicken Sie unten, um einzutreten."],"This groupchat no longer exists":["Dieser Gruppenchat existiert nicht mehr"],"Hide the groupchat topic":["Gruppen-Chatraum verbergen"],"This groupchat is bookmarked":["Dieser Raum ist als Lesezechen gekennzeichnet"],"Enter groupchat":["Gruppenchat beitreten"],"Choose a nickname to enter":["Wählen Sie einen Spitznamen für die Eingabe"],"Please choose your nickname":["Wählen Sie Ihren Spitznamen"],"This groupchat requires a password":["Dieser Gruppenchat erfordert ein Passwort"],"Password: ":["Passwort: "],"Submit":["Senden"],"This user is a moderator.":["Dieser Benutzer ist ein Moderator."],"This user can send messages in this groupchat.":["Dieser Teilnehmer kann Nachrichten in diesem Gruppenchat versenden."],"This user can NOT send messages in this groupchat.":["Dieser Teilnehmer kann keine Nachrichten in diesem Gruppenchat versenden."],"Owner":["Eigentümer"],"Admin":["Administrator"],"Member":["Mitglieder"],"Moderator":["Moderator"],"Visitor":["Besucher"],"Click to mention %1$s in your message.":["Klicken Sie hier, um %1$s in Ihrer Nachricht zu erwähnen."],"Participants":["Teilnehmer"],"%1$s has entered the groupchat":["%1$s ist dem Gruppenchat beigetreten"],"%1$s has left the groupchat":["%1$s hat den Gruppenchat verlassen"],"%1$s is now a moderator":["%1$s ist jetzt ein Moderator"],"%1$s is no longer a moderator":["%1$s ist kein Moderator mehr"],"%1$s has been given a voice":["%1$s darf nun wieder schreiben"],"%1$s has been muted":["%1$s wurde das Schreibrecht entzogen"],"%1$s and %2$s":["%1$s und %2$s"],"%1$s are typing":["%1$s tippt"],"%1$s have stopped typing":["%1$s tippt nicht mehr"],"%1$s have gone away":["%1$s ist jetzt abwesend"],"%1$s have entered the groupchat":["%1$s ist dem Gruppenchat beigetreten"],"%1$s have left the groupchat":["%1$s hat den Gruppenchat verlassen"],"%1$s are now moderators":["%1$s sind jetzt Moderatoren"],"%1$s are no longer moderators":["%1$s sind keine Moderatoren mehr"],"%1$s have been given voices":["%1$s dürfen nun wieder schreiben"],"%1$s have been muted":["%1$s wurde das Schreibrecht entzogen"],"Change user\'s affiliation to admin":["Zugehörigkeit des Benutzers zu Administrator ändern"],"Ban user by changing their affiliation to outcast":["Sperren Sie Benutzer, indem Sie ihre Zugehörigkeit zu ausgeschlossenen Personen ändern"],"Clear the chat area":["Löschen des Chatbereichs"],"Close this groupchat":["Dieses Gruppenchat schließen"],"Change user role to participant":["Rolle zu Teilnehmer ändern"],"Remove this groupchat":["Diesen Gruppenchat entfernen"],"Kick user from groupchat":["Mitglied aus diesem Gruppenchat entfernen"],"Write in 3rd person":["In der dritten Person schreiben"],"Grant membership to a user":["Einem Benutzer die Mitgliedschaft gewähren"],"Opens up the moderator tools GUI":["Öffnet die Benutzeroberfläche der Moderatorentools"],"Remove user\'s ability to post messages":["Die Möglichkeit des Benutzers, Nachrichten zu senden, entfernen"],"Change your nickname":["Eigenen Spitznamen ändern"],"Grant moderator role to user":["Benutzer Moderatorenrechte gewähren"],"Grant ownership of this groupchat":["Besitzrechte an diesem Gruppenchat vergeben"],"Register your nickname":["Registrieren Sie Ihren Spitznamen"],"Revoke the user\'s current affiliation":["Widerrufen der aktuellen Zugehörigkeit des Benutzers"],"Set groupchat subject":["Thema des Gruppenchats festlegen"],"Set groupchat subject (alias for /subject)":["Gruppenchatthema (alias für /subject) festlegen"],"Allow muted user to post messages":["Stummgeschaltetem Benutzer erlauben Nachrichten zu senden"],"You are about to retract this message.":["Sie sind dabei, diese Nachricht zu widerrufen."],"You may optionally include a message, explaining the reason for the retraction.":["Sie können optional eine Nachricht mit einer Erklärung und Grund für den Widerruf einfügen."],"Message Retraction":["Nachricht Widerruf"],"Optional reason":["Optionaler Grund"],"Sorry, you\'re not allowed to retract this message":["Es tut uns leid, Sie dürfen diese Nachricht nicht widerrufen"],"A timeout occurred while trying to retract the message":["Eine Zeitüberschreitung ist beim Versuch aufgetreten, die Nachricht zu widerrufen"],"Sorry, you\'re not allowed to retract this message.":["Es tut uns leid, Sie dürfen diese Nachricht nicht widerrufen."],"Show more information about this groupchat":["Weitere Informationen zu diesem Gruppenchat anzeigen"],"Configure":["Konfigurieren"],"Configure this groupchat":["Diesen Gruppenchat konfigurieren"],"Invite someone to join this groupchat":["Laden Sie jemanden zu diesem Gruppenchat ein"],"Show topic":["Thema anzeigen"],"Hide topic":["Thema ausblenden"],"Show the topic message in the heading":["Thema in der Ãœberschrift anzeigen"],"Hide the topic in the heading":["Thema in der Ãœberschrift ausblenden"],"Moderate":["Moderiert"],"Moderate this groupchat":["Diesen Gruppenchat moderieren"],"Destroy":["Gruppenchat zerstören"],"Leave":["Verlassen"],"Leave and close this groupchat":["Verlassen und diesen Gruppenchat schließen"],"Are you sure you want to leave this groupchat?":["Sind Sie sicher, dass Sie diesen Gruppenchat verlassen wollen?"],"Hide the list of participants":["Teilnehmerliste ausblenden"],"Forbidden: you do not have the necessary role in order to do that.":["Verboten: Sie haben nicht die nötigen Rechte, um das zu tun."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Verboten: Sie haben nicht die nötige Zugehörigkeit, um das zu tun."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fehler: Das „%1$sâ€-Kommando benötigt zwei Argumente: Den Spitznamen und einen Grund."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fehler: Konnte keinen Groupchat-Teilnehmer anhand ihrer Kriterien finden"],"Error: found multiple groupchat participant based on your arguments":["Fehler: Mehrere Gruppenchat-Teilnehmer basierend auf ihren Kriterien gefunden"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Konnte keinen Teilnehmer mit diesem Spitznamen finden. Möglicherweise haben sie den Gruppenchat verlassen."],"Sorry, an error happened while running the command.":["Entschuldigung, bei der Ausführung des Befehls ist ein Fehler aufgetreten."],"Check your browser\'s developer console for details.":["Einzelheiten finden Sie in der Entwicklerkonsole Ihres Browsers."],"Are you sure you want to destroy this groupchat?":["Möchten Sie den Gruppenchat „%1$s†wirklich zerstören?"],"Please enter the XMPP address of this groupchat to confirm":["Bitte geben Sie die XMPP-Adresse dieses Gruppenchats zur Bestätigung ein"],"name@example.org":["benutzer@beispiel.org"],"Optional reason for destroying this groupchat":["Optionaler Grund für die Zerstörung dieses Gruppenchats"],"Optional XMPP address for a new groupchat that replaces this one":["Optionale XMPP-Adresse für einen neuen Gruppenchat, der diese ersetzt"],"replacement@example.org":["ersatz@beispiel.org"],"Your nickname is \\"%1$s\\"":["Ihr Spitzname ist \\"%1$s\\""],"Error: invalid number of arguments":["Fehler: ungültige Anzahl von Argumenten"],"This action was done by %1$s.":["Diese Aktion wurde durch %1$s ausgeführt."],"The reason given is: \\"%1$s\\".":["Angegebener Grund: „%1$sâ€."],"Groupchats":["Gruppenchat"],"Add a new groupchat":["Neuen Gruppenchat hinzufügen"],"Query for groupchats":["Gruppenchats abfragen"],"Sorry, an error occurred while trying to submit the config form.":["Beim Senden des Konfigurationsformulars ist leider ein Fehler aufgetreten."],"Close these announcements":["Ankündigungen schließen"],"Announcements":["Ankündigungen"],"Click to open this server message":["Klicken Sie hier, um diese Servernachricht zu öffnen"],"Notification from %1$s":["Benachrichtigung von %1$s"],"%1$s says":["%1$s sagt"],"Encrypted message received":["Verschlüsselte Nachricht empfangen"],"has gone offline":["hat sich abgemeldet"],"has gone away":["ist jetzt abwesend"],"is busy":["ist beschäftigt"],"has come online":["kam online"],"wants to be your contact":["möchte Ihr Kontakt sein"],"Hide":["Ausblenden"],"Execute":["Ausführen"],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":["Befehle gefunden"],"List available commands":["Verfügbare Befehle auflisten"],"No commands found":["Keine Befehle gefunden"],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Es ist leider ein Fehler beim Ausführen des Befehls aufgetreten. Weitere Informationen finden Sie in der Entwicklerkonsole"],"About":["Ãœber"],"Commands":["Befehle"],"Settings":["Einstellungen"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s XMPP Chat Client, der Ihnen von %3$s Opkode %2$s zur Verfügung gestellt wird"],"%1$s Translate %2$s it into your own language":["%1$s Ãœbersetzen Sie %2$s es in Ihre eigene Sprache"],"Log out":["Abmelden"],"Click to change your chat status":["Hier klicken, um Ihren Status zu ändern"],"Show details about this chat client":["Details zu diesem Chat-Client anzeigen"],"Your avatar image":["Dein Avatarbild"],"Checkbox for selecting the following fingerprint":["Kontrollkästchen zur Auswahl des folgenden Fingerabdrucks"],"Device without a fingerprint":["Gerät ohne Fingerabdruck"],"Checkbox for selecting the following device":["Kontrollkästchen zur Auswahl des folgenden Geräts"],"Other OMEMO-enabled devices":["Andere OMEMO-fähige Geräte"],"Checkbox to select fingerprints of all other OMEMO devices":["Kontrollkästchen zur Auswahl der Fingerabdrücke aller anderen OMEMO-Geräte"],"Remove checked devices and close":["Markierte Geräte entfernen und schließen"],"Select all":["Alle auswählen"],"This device\'s OMEMO fingerprint":["OMEMO-Fingerabdruck dieses Geräts"],"Generate new keys and fingerprint":["Neuer Schlüssel und Fingerabdrücke generieren"],"Your Profile":["Dein Profil"],"XMPP Address (JID)":["XMPP/Jabber-ID (JID)"],"Save and close":["Speichern und schließen"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Benutze Kommas um die Rollen zu separieren. Die Rollen erscheinen neben deinem Namen."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Leider ist beim Speichern deiner Profildaten ein Fehler aufgetreten."],"You can check your browser\'s developer console for any error output.":["Schau in die Entwicklerkonsole des Browsers um mögliche Fehlerausgaben zu sehen."],"Away":["Abwesend"],"Busy":["Beschäftigt"],"Custom status":["Statusnachricht"],"Offline":["Abgemeldet"],"Online":["Online"],"Away for long":["Lange abwesend"],"Change chat status":["Hier klicken, um Ihren Status zu ändern"],"Personal status message":["Persönliche Statusnachricht"],"I am %1$s":["Ich bin %1$s"],"Are you sure you want to log out?":["Möchten Sie sich wirklich abmelden?"],"online":["online"],"busy":["beschäftigt"],"away for long":["länger abwesend"],"away":["abwesend"],"offline":["abgemeldet"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Leider konnte eine empfangene OMEMO-Nachricht aufgrund eines Fehlers nicht entschlüsselt werden."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s scheint keinen Client zu haben, der OMEMO unterstützt. Ein verschlüsselter Chat wird in diesem Gruppenchat nicht mehr möglich sein."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["In diesem Gruppenchat kann keine Ende-zu-Ende-Verschlüsselung verwendet werden, entweder der Gruppenchat hat eine gewisse Anonymität oder nicht alle Teilnehmer unterstützen OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Ende-zu-Ende Verschlüsselung konnte nicht verwendet werden, da %1$s einen Client verwendet, der OMEMO nicht unterstützt."],"Messages are being sent in plaintext":["Nachrichten werden im Klartext gesendet"],"Messages are sent encrypted":["Nachrichten werden verschlüsselt gesendet"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Dieser Gruppenchat muss nur für Mitglieder zugänglich und nicht anonym sein, um OMEMO-verschlüsselte Nachrichten zu unterstützen"],"Sorry, an error occurred while trying to remove the devices.":["Leider ist beim Versuch, die Geräte zu entfernen, ein Fehler aufgetreten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Sind Sie sicher, dass Sie neue OMEMO-Schlüssel erzeugen möchten? Dann werden Ihre alten Schlüssel entfernt und alle zuvor verschlüsselten Nachrichten sind auf diesem Gerät nicht mehr entschlüsselbar."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Leider können wir keine verschlüsselte Nachricht senden, da %1$s erfordert, dass Sie für ihre Teilnahme angemeldet sind, um ihre OMEMO-Informationen zu sehen"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Leider können wir keine verschlüsselte Nachricht senden, da der Remote-Server für %1$s nicht gefunden werden konnte"],"Unable to send an encrypted message due to an unexpected error.":["Die verschlüsselte Nachricht konnte aufgrund eines unerwarteten Fehlers nicht versendet werden."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Leider können wir keine Geräte finden, an die wir eine OMEMO-verschlüsselte Nachricht senden können."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dies ist eine OMEMO-verschlüsselte Nachricht, die Ihr Client nicht zu unterstützen scheint. Weitere Informationen finden Sie unter https://conversations.im/omemo"]," e.g. conversejs.org":[" z. B. conversejs.org"],"Fetch registration form":["Anmeldeformular wird abgerufen"],"Tip: A list of public XMPP providers is available":["Tipp: Eine Liste öffentlicher Provider ist verfügbar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Leider können wir keine Verbindung zu dem von Ihnen gewählten Provider herstellen."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Leider unterstützt der angegebene Anbieter die keine Benutzerregistrierung. Bitte versuche es bei einem anderen Anbieter."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Die Verbindung zu „%1$s†konnte nicht hergestellt werden. Sind Sie sicher, dass „%1$s†existiert?"],"Now logging you in":["Sie werden angemeldet"],"Registered successfully":["Registrierung erfolgreich"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Der Provider hat die Registrierung abgelehnt. Bitte überprüfen Sie Ihre Angaben auf Richtigkeit."],"Leave this groupchat":["Diesen Gruppenchat verlassen"],"Click to toggle the list of open groupchats":["Gruppenteilnehmer anzeigen"],"Open Groupchats":["Offene Gruppenchats"],"Are you sure you want to leave the groupchat %1$s?":["Möchten Sie den Gruppenchat „%1$s†wirklich verlassen?"],"Add":["Hinzufügen"],"Add a Contact":["Kontakt hinzufügen"],"This contact is busy":["Dieser Kontakt ist beschäftigt"],"This contact is online":["Dieser Kontakt ist online"],"This contact is offline":["Dieser Kontakt ist offline"],"This contact is unavailable":["Dieser Kontakt ist nicht verfügbar"],"This contact is away for an extended period":["Dieser Kontakt ist für längere Zeit abwesend"],"This contact is away":["Dieser Kontakt ist abwesend"],"Contact name":["Name des Kontakts"],"Optional nickname":["Optionaler Spitzname"],"Sorry, could not find a contact with that name":["Leider konnte kein Kontakt mit diesem Namen gefunden werden"],"This contact has already been added":["Dieser Kontakt wurde bereits hinzugefügt"],"Filter":["Filter"],"Filter by contact name":["Nach Name des Kontakts filtern"],"Filter by group name":["Nach Gruppennamen filtern"],"Filter by status":["Filtern via Status"],"Any":["Jeder"],"Unread":["Ungelesen"],"Chatty":["Gesprächsbereit"],"Extended Away":["Länger nicht anwesend"],"Click to remove %1$s as a contact":["Hier klicken, um %1$s als Kontakt zu entfernen"],"Click to accept the contact request from %1$s":["Hier klicken, um die Kontaktanfrage von %1$s zu akzeptieren"],"Click to decline the contact request from %1$s":["Hier klicken, um die Kontaktanfrage von %1$s abzulehnen"],"Click to chat with %1$s (XMPP address: %2$s)":["Klicken Sie hier, um mit %1$s zu chatten (XMPP-Adresse: %2$s)"],"Are you sure you want to decline this contact request?":["Möchten Sie diese Kontaktanfrage wirklich ablehnen?"],"Contacts":["Kontakte"],"Add a contact":["Kontakt hinzufügen"],"Re-sync your contacts":["Resynchronisieren Sie Ihre Kontakte"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[147],{513:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"de"},"Create your account":["Erstellen Sie Ihr Konto"],"Please enter the XMPP provider to register with:":["Bitte geben Sie den XMPP-Provider ein, bei dem Sie sich anmelden möchten:"],"Already have a chat account?":["Sie haben bereits ein Chat-Konto?"],"Log in here":["Hier anmelden"],"Account Registration:":["Konto-Registrierung:"],"Register":["Registrierung"],"Choose a different provider":["Wählen Sie einen anderen Anbieter"],"Hold tight, we\'re fetching the registration form…":["Bitte warten, das Anmeldeformular wird geladen …"],"Cancel":["Abbrechen"],"The connection has dropped, attempting to reconnect.":["Die Verbindung ist abgebrochen und es wird versucht, die Verbindung wiederherzustellen."],"An error occurred while connecting to the chat server.":["Beim Verbinden mit dem Chatserver ist ein Fehler aufgetreten."],"Your XMPP address and/or password is incorrect. Please try again.":["Ihre XMPP-Adresse und/oder Ihr Kennwort sind falsch. Bitte versuchen Sie es noch einmal."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Leider konnten wir keine Verbindung zum XMPP-Host mit der Domain %1$s herstellen"],"The XMPP server did not offer a supported authentication mechanism":["Der XMPP-Server hat keinen unterstützten Authentifizierungsmechanismus angeboten"],"Undecryptable OMEMO message":["Unentschlüsselbare OMEMO-Nachricht"],"Sorry, could not determine upload URL.":["Leider konnte die Upload-URL nicht ermittelt werden."],"Sorry, could not determine file upload URL.":["Konnte die Hochlade-URL leider nicht bestimmen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Leider konnte die Datei nicht hochgeladen werden. Der Server antwortete: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Leider konnte Ihre Datei nicht erfolgreich hochgeladen werden."],"You\'re not allowed to retract your message.":["Sie dürfen Ihre Nachricht nicht widerrufen."],"Sorry, an error occurred while trying to retract your message.":["Es ist leider ein Fehler aufgetreten, als Sie versucht haben, Ihre Nachricht zu widerrufen."],"You\'re not allowed to send a message.":["Sie dürfen keine Nachricht senden."],"Sorry, an error occurred while trying to send your message.":["Es ist leider ein Fehler beim Senden Ihrer Nachricht aufgetreten."],"Sorry, looks like file upload is not supported by your server.":["Scheint als werde das Hochladen von Dateien auf dem Server nicht unterstützt."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Die Größe Ihrer Datei, %1$s, überschreitet das erlaubte Maximum vom Server, welches bei %2$s liegt."],"Smileys and emotions":["Smileys und Emotionen"],"People":["Menschen"],"Activities":["Aktivitäten"],"Travel":["Reisen"],"Objects":["Objekte"],"Animals and nature":["Tiere und Natur"],"Food and drink":["Essen und Trinken"],"Symbols":["Symbole"],"Flags":["Flaggen"],"Stickers":["Aufkleber"],"This groupchat is not anonymous":["Dieser Gruppenchat ist nicht anonym"],"This groupchat now shows unavailable members":["Dieser Gruppenchat zeigt nicht verfügbare Mitglieder an"],"This groupchat does not show unavailable members":["Dieser Gruppenchat zeigt keine nicht verfügbaren Mitglieder an"],"The groupchat configuration has changed":["Die Gruppenchatkonfiguration hat sich geändert"],"Groupchat logging is now enabled":["Gruppenchat wird ab jetzt protokolliert"],"Groupchat logging is now disabled":["Gruppenchat wird nicht mehr protokolliert"],"This groupchat is now no longer anonymous":["Dieser Gruppenchat ist jetzt nicht mehr anonym"],"This groupchat is now semi-anonymous":["Dieser Gruppenchat ist jetzt nur teilweise anonym"],"This groupchat is now fully-anonymous":["Dieser Gruppenchat ist jetzt vollständig anonym"],"A new groupchat has been created":["Ein neuer Gruppenchat wurde erstellt"],"Your nickname has been automatically set to %1$s":["Ihr Spitzname wurde automatisch geändert zu: %1$s"],"Your nickname has been changed to %1$s":["Ihr Spitzname wurde geändert zu: %1$s"],"You have been banned from this groupchat":["Sie wurden aus diesem Gruppenchat entfernt"],"You have exited this groupchat due to a technical problem":["Sie haben diesen Gruppenchat aufgrund eines technischen Problems verlassen"],"You have been kicked from this groupchat":["Sie wurden aus diesem Gruppenchat hinausgeworfen"],"You have been removed from this groupchat because of an affiliation change":["Sie wurden aus diesem Gruppenchat wegen einer Zugehörigkeitsänderung entfernt"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sie wurden aus diesem Gruppenchat ausgeschlossen, da der Gruppenchat jetzt nur noch Mitglieder erlaubt und Sie kein Mitglied sind"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sie wurden aus dem Gruppenchat entfernt, weil der Hostingservice heruntergefahren wurde"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Ihr Widerruf wurde nicht zugestellt, weil Sie nicht im Gruppenchat vertreten sind."],"Your message was not delivered because you weren\'t allowed to send it.":["Ihre Nachricht wurde nicht zugestellt, weil Sie sie nicht abschicken durften."],"Your message was not delivered because you\'re not present in the groupchat.":["Ihre Nachricht wurde nicht zugestellt, weil Sie im Gruppenchat nicht vertreten sind."],"A timeout happened while while trying to retract your message.":["Beim Versuch, Ihre Nachricht zurückzuziehen, ist eine Zeitüberschreitung aufgetreten."],"You\'re not allowed to register yourself in this groupchat.":["Sie dürfen nicht diesem Gruppenchat beitreten."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Es ist Ihnen nicht erlaubt diesem Raum beizutreten da sie kein Mitglied sind."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Registrierung fehlgeschlagen, dieser Raum unterstützt keine Registrierung von Spitznamen."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Spitzname-Registrierung fehlgeschlagen, falsche Informationen eingetragen."],"Topic set by %1$s":["Thema von %1$s festgelegt"],"Topic cleared by %1$s":["Thema wurde durch %1$s bereinigt"],"%1$s has been banned by %2$s":["%1$s wurde von %2$s verbannt"],"%1$s has been banned":["%1$s wurde verbannt"],"%1$s\'s nickname has changed":["Der Spitzname von %1$s hat sich geändert"],"%1$s has been kicked out by %2$s":["%1$s wurde von %2$s hinausgeworfen"],"%1$s has been kicked out":["%1$s wurde hinausgeworfen"],"%1$s has been removed because of an affiliation change":["%1$s wurde wegen einer Zugehörigkeitsänderung entfernt"],"%1$s has been removed for not being a member":["%1$s ist kein Mitglied und wurde daher entfernt"],"%1$s is no longer an admin of this groupchat":["%1$s ist nicht mehr ein Admin dieses Gruppenchats"],"%1$s is no longer an owner of this groupchat":["%1$s ist nicht mehr Eigentümer dieses Gruppenchats"],"%1$s is no longer banned from this groupchat":["%1$s ist in diesem Gruppenchat nicht mehr gesperrt"],"%1$s is no longer a member of this groupchat":["%1$s ist nicht mehr ein Mitglied dieses Gruppenchats"],"%1$s is now a member of this groupchat":["%1$s ist nun Mitglied dieses Gruppenchats"],"%1$s is now an %2$s of this groupchat":["%1$s ist nun ein %2$s dieses Gruppenchats"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Der gewählte Spitzname ist reserviert oder derzeit in Gebrauch. Bitte wählen Sie einen Anderen."],"Password incorrect":["Passwort falsch"],"You are not on the member list of this groupchat.":["Sie sind nicht auf der Mitgliederliste dieses Gruppenchats."],"You have been banned from this groupchat.":["Sie wurden aus diesem Gruppenchat entfernt."],"You are not allowed to create new groupchats.":["Es ist Ihnen nicht erlaubt neue Räume anzulegen."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Ihr Spitzname entspricht nicht den Richtlinien dieses Gruppenchats."],"This groupchat does not (yet) exist.":["Dieser Gruppenchat existiert (noch) nicht."],"This groupchat has reached its maximum number of participants.":["Maximale Anzahl an Teilnehmern für diesen Gruppenchat erreicht."],"Remote server not found":["Server wurde nicht gefunden"],"The explanation given is: \\"%1$s\\".":["Angegebene Grund: „%1$sâ€."],"%1$s has invited you to join a groupchat: %2$s":["%1$s hat Sie in den Gruppenchat „%2$s†eingeladen"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s hat Sie in den Gruppenchat „%2$s†eingeladen. Begründung: „%3$sâ€"],"Error":["Fehler"],"Sorry, something went wrong while trying to save your bookmark.":["Leider konnte das Lesezeichen nicht gespeichert werden."],"Timeout Error":["Timeout-Fehler"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Der Server hat Ihre Lesezeichen nicht innerhalb der zulässigen Zeit zurückgegeben. Sie können die Seite neu laden, um sie erneut anzufordern."],"Timeout while trying to fetch archived messages.":["Zeitüberschreitung beim Abrufen archivierter Nachrichten."],"An error occurred while querying for archived messages.":["Beim Abfragen der archivierten Nachrichten ist ein Fehler aufgetreten."],"My contacts":["Meine Kontakte"],"Pending contacts":["Unbestätigte Kontakte"],"Contact requests":["Kontaktanfragen"],"Ungrouped":["Ungruppiert"],"New messages":["Neue Nachrichten"],"Sorry, there was an error while trying to add %1$s as a contact.":["Leider gab es einen Fehler beim Versuch, %1$s als Kontakt hinzuzufügen."],"This client does not allow presence subscriptions":["Dieser Client erlaubt keine Anwesenheitsabonnements"],"Click to hide these contacts":["Hier klicken, um diese Kontakte auszublenden"],"Unbookmark this groupchat":["Lesezeichen für diesen Gruppenchat entfernen"],"Click to open this groupchat":["Hier klicken, um diesen Gruppenchat zu öffnen"],"Click to toggle the bookmarks list":["Liste der Lesezeichen umschalten"],"Bookmarks":["Lesezeichen"],"Bookmark this groupchat":["Lesezeichen für diesen Gruppenchat speichern"],"Would you like this groupchat to be automatically joined upon startup?":["Beim Anmelden diesem Gruppenchat automatisch beitreten?"],"The name for this bookmark:":["Name des Lesezeichens:"],"What should your nickname for this groupchat be?":["Welcher Spitzname soll für diesen Gruppenchat verwendet werden?"],"Save":["Speichern"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Möchten Sie das Lesezeichen „%1$s†wirklich löschen?"],"Unbookmark":["Lesezeichen entfernen"],"Bookmark":["Lesezeichen"],"Close":["Schließen"],"OK":["OK"],"Image: ":["Bild: "],"Download audio file \\"%1$s\\"":["Audiodatei \\"%1$s\\" herunterladen"],"Download image file \\"%1$s\\"":["Bild \\"%1$s\\" herunterladen"],"Download file \\"%1$s\\"":["Datei \\"%1$s\\" herunterladen"],"Cancel Editing":["Bearbeitung abbrechen"],"Edit":["Bearbeiten"],"Retract":["Widerrufen"],"Message versions":["Nachrichtenarchivierung"],"Retry":["Wiederholen"],"Uploading file:":["Lade Datei hoch:"],"%1$s has removed this message":["%1$s hat diese Nachricht entfernt"],"This message has been edited":["Diese Nachricht wurde geändert"],"Show more":["Mehr anzeigen"],"Show less":["Weniger anzeigen"],"No message history available.":["Kein Nachrichtenverlauf vorhanden."],"Search results":["Suchergebnisse"],"Search":["Suchen"],"Insert emojis":["Emojis einfügen"],"Send the message":["Nachricht senden"],"Start a call":["Beginne eine Unterhaltung"],"Message characters remaining":["Verbleibende Zeichen"],"Hide participants":["Teilnehmer ausblenden"],"Show participants":["Teilnehmer anzeigen"],"Choose a file to send":["Datei versenden"],"Click to write as a normal (non-spoiler) message":["Hier klicken, um Statusnachricht zu ändern (ohne Spoiler)"],"Click to write your message as a spoiler":["Hier klicken, um die Nachricht als Spoiler zu kennzeichnen"],"The User\'s Profile Image":["Benutzerprofilbild"],"Trusted":["Vertrauenswürdig"],"Untrusted":["Nicht vertrauenswürdig"],"OMEMO Fingerprints":["OMEMO Fingerabdrücke"],"No OMEMO-enabled devices found":["Keine OMEMO-fähigen Geräte gefunden"],"Remove as contact":["Kontakt entfernen"],"XMPP Address":["XMPP-Adresse"],"Email":["E-Mail"],"Full Name":["Name"],"Nickname":["Spitzname"],"Refresh":["Aktualisieren"],"Role":["Rolle"],"URL":["URL"],"%1$s is typing":["%1$s schreibt"],"%1$s has stopped typing":["%1$s tippt nicht mehr"],"%1$s has gone away":["%1$s ist jetzt abwesend"],"Remove messages":["Nachrichten entfernen"],"Close this chat":["Diesen Chat schließen"],"Write in the third person":["In der dritten Person schreiben"],"Show this menu":["Dieses Menü anzeigen"],"Hidden message":["Versteckte Nachricht"],"Message":["Nachricht"],"Optional hint":["Optionaler Hinweis"],"You have unread messages":["Sie haben ungelesene Nachrichten"],"Details":["Details"],"See more information about this person":["Weitere Informationen über diese Person anzeigen"],"Close and end this conversation":["Schließen und beenden Sie dieses Gespräch"],"Sorry, the connection has been lost, and your message could not be sent":["Die Verbindung wurde leider unterbrochen und Ihre Nachricht konnte nicht gesendet werden"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Beachten Sie, dass andere XMPP/Jabber-Clients (und Server) möglicherweise noch keinen Widerruf unterstützen und dass diese Nachricht möglicherweise nicht überall entfernt wird."],"Are you sure you want to retract this message?":["Sind Sie sicher, dass Sie diese Nachricht widerrufen wollen?"],"Confirm":["Bestätigen"],"You have an unsent message which will be lost if you continue. Are you sure?":["Sie haben eine nicht gesendete Nachricht, die verloren geht, wenn Sie fortfahren. Sind Sie sicher?"],"Are you sure you want to clear the messages from this conversation?":["Sind Sie sicher, dass Sie alle Nachrichten dieses Chats löschen möchten?"],"%1$s has gone offline":["%1$s hat sich abgemeldet"],"%1$s is busy":["%1$s ist beschäftigt"],"%1$s is online":["%1$s ist jetzt online"],"Sorry, something went wrong while trying to refresh":["Leider ist bei der Aktualisierung etwas schief gelaufen"],"Are you sure you want to remove this contact?":["Möchten Sie diesen Kontakt wirklich entfernen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Leider gab es einen Fehler beim Versuch, %1$s als Kontakt zu entfernen."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Um die Leistung zu verbessern, werden Ihre Daten in diesem Browser zwischengespeichert. Deaktivieren Sie dieses Kontrollkästchen, wenn es sich um einen öffentlichen Computer handelt oder wenn Sie möchten, dass Ihre Daten beim Abmelden gelöscht werden. Es ist wichtig, dass Sie sich explizit abmelden, da sonst möglicherweise nicht alle zwischengespeicherten Daten gelöscht werden. Bitte beachten Sie, dass bei Verwendung eines nicht vertrauenswürdigen Geräts die OMEMO-Verschlüsselung NICHT verfügbar ist."],"This is a trusted device":["Diesem Gerät wird vertraut"],"Password":["Passwort"],"Create an account":["Konto erstellen"],"Don\'t have a chat account?":["Sie haben noch kein Chat-Konto?"],"Log in":["Anmelden"],"Disconnected":["Getrennt"],"Click here to log in anonymously":["Hier klicken, um sich anonym anzumelden"],"Username":["Benutzername"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["Bitte eine gültige XMPP-Adresse eingeben"],"Chat Contacts":["Kontakte"],"Toggle chat":["Chat ein-/ausblenden"],"Click to restore this chat":["Hier klicken, um diesen Chat wiederherzustellen"],"Minimized":["Minimiert"],"Minimize":["Minimieren"],"Minimize this chat":["Diesen Chat minimieren"],"Minimize this groupchat":["Diesen Gruppenchat minimieren"],"This user is a moderator.":["Dieser Benutzer ist ein Moderator."],"This user can send messages in this groupchat.":["Dieser Teilnehmer kann Nachrichten in diesem Gruppenchat versenden."],"This user can NOT send messages in this groupchat.":["Dieser Teilnehmer kann keine Nachrichten in diesem Gruppenchat versenden."],"Owner":["Eigentümer"],"Admin":["Administrator"],"Member":["Mitglieder"],"Moderator":["Moderator"],"Visitor":["Besucher"],"Click to mention %1$s in your message.":["Klicken Sie hier, um %1$s in Ihrer Nachricht zu erwähnen."],"Participants":["Teilnehmer"],"This field is required":["Dieses Feld ist ein Pflichtfeld"],"Join":["Betreten"],"Enter a new Groupchat":["Einem neuen Gruppenchat beitreten"],"name@conference.example.org":["name@conference.beispiel.org"],"Groupchat name":["Gruppenchatname"],"Groupchat address":["Gruppenchat-Adresse"],"Groupchat id is invalid.":["Gruppenchat-ID ist ungültig."],"Invite":["Einladen"],"Invite someone to this groupchat":["Laden Sie jemanden zu diesem Gruppenchat ein"],"user@example.org":["benutzer@beispiel.org"],"Optional reason for the invitation":["Optionaler Grund für die Einladung"],"Show groupchats":["Gruppen"],"Server address":["Server"],"Show more information on this groupchat":["Zeige mehr Informationen über diesen Gruppenchat"],"Query for Groupchats":["Gruppenchats abfragen"],"Description:":["Beschreibung:"],"Groupchat Address (JID):":["Gruppenchat-Adresse (JID):"],"Participants:":["Teilnehmer:"],"Features:":["Funktionen:"],"Requires authentication":["Authentifizierung erforderlich"],"Hidden":["Ausblenden"],"Requires an invitation":["Einladung erforderlich"],"Moderated":["Moderiert"],"Non-anonymous":["Nicht anonym"],"Open":["Offen"],"Permanent":["Dauerhafter Raum"],"Public":["Öffentlich"],"Semi-anonymous":["Teilweise anonym"],"Temporary":["Vorübergehend"],"Unmoderated":["Nicht moderiert"],"conference.example.org":["konferenz.beispiel.org"],"Groupchats found":["Gruppenchats gefunden"],"No groupchats found":["Keine Räume gefunden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatoren sind privilegierte Benutzer, die die Rollen anderer Benutzer ändern können (außer denen mit Administrator- oder Eigentümerzugehörigkeit)."],"The default role, implies that you can read and write messages.":["Die Standardrolle bedeutet, dass Sie Nachrichten lesen und schreiben können."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besucher dürfen keine Nachrichten in einem moderierten Mehrbenutzer-Chat schreiben."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Besitzer ist die höchste Zugehörigkeit. Besitzer können Rollen und Zugehörigkeiten aller anderen Benutzer ändern."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administrator ist die zweithöchste Zugehörigkeit. Administratoren können Rollen und Zugehörigkeiten aller anderen Benutzer mit Ausnahme der Eigentümer ändern."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Sperren Sie Benutzer, indem Sie ihre Zugehörigkeit zu ausgeschlossenen Personen ändern."],"Change role":["Rolle ändern"],"New Role":["Neue Rolle"],"Reason":["Grund"],"Change affiliation":["Zugehörigkeit ändern"],"New affiliation":["Neue Zugehörigkeit"],"Affiliation":["Zugehörigkeit"],"Moderator Tools":["Moderatoren-Tools"],"No users with that affiliation found.":["Keine Benutzer mit dieser Zugehörigkeit gefunden."],"No users with that role found.":["Keine Nutzer mit dieser Rolle gefunden."],"Type here to filter the search results":["Hier Filter für Suchergebnisse eingeben"],"Show users":["Nutzer anzeigen"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rollen werden den Benutzern zugewiesen, um ihnen in einem Mehrbenutzer-Chat bestimmte Fähigkeiten zu gewähren oder zu verweigern. Sie werden entweder explizit oder implizit als Teil einer Zugehörigkeit zugewiesen. Eine Rolle, die nicht auf eine Zugehörigkeit zurückzuführen ist, ist nur für die Dauer der Sitzung des Benutzers gültig."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Eine Zugehörigkeit ist ein langlebiger Anspruch, der typischerweise eine bestimmte Rolle beinhaltet und Privilegien und Verantwortlichkeiten gewährt. Beispielsweise haben Administratoren und Eigentümer automatisch die Moderatorenrolle."],"Timeout error while trying to set the affiliation":["Zeitüberschreitungsfehler beim Versuch, die Zugehörigkeit festzulegen"],"Sorry, you\'re not allowed to make that change":["Es tut uns leid, Sie dürfen diese Änderung nicht vornehmen"],"Sorry, something went wrong while trying to set the affiliation":["Leider ist bei der Änderung der Zugehörigkeiten etwas schief gelaufen"],"Affiliation changed":["Zugehörigkeit geändert"],"Role changed":["Rolle geändert"],"You\'re not allowed to make that change":["Du darfst diese Änderung nicht vornehmen"],"Sorry, something went wrong while trying to set the role":["Leider ist bei der Festlegung der Rolle etwas schief gelaufen"],"Topic":["Thema"],"Topic author":["Autor des Themas"],"Groupchat address (JID)":["Gruppenchat-Adresse (JID)"],"Message archiving":["Nachrichtenarchivierung"],"Messages are archived on the server":["Nachrichten werden auf dem Server archiviert"],"Description":["Beschreibung"],"Features":["Funktionen"],"This groupchat is not publicly searchable":["Dieser Gruppenchat ist nicht öffentlich auffindbar"],"This groupchat is restricted to members only":["Dieser Gruppenchat ist nur für Mitglieder zugänglich"],"Members only":["Nur Mitglieder"],"Participants entering this groupchat need to request permission to write":["Teilnehmer, die diesem Gruppenchat beitreten, müssen die Erlaubnis zum Schreiben anfordern"],"Name":["Name"],"This groupchat does not require a password upon entry":["Dieser Gruppenchat erfordert kein Passwort"],"No password required":["Kein Passwort benötigt"],"Not anonymous":["Nicht anonym"],"All other groupchat participants can see your XMPP address":["Jeder in dem Gruppenchat kann Ihre XMPP-Adresse sehen"],"Not moderated":["Nicht moderiert"],"Participants entering this groupchat can write right away":["Teilnehmer, die diesem Gruppenchat beitreten, können sofort schreiben"],"Online users":["Online"],"Anyone can join this groupchat":["Jeder kann diesem Gruppenchat beitreten"],"This groupchat requires a password before entry":["Dieser Gruppenchat erfordert ein Passwort"],"Password protected":["Passwortgeschützt"],"Persistent":["Dauerhaft"],"This groupchat persists even if it\'s unoccupied":["Dieser Gruppenchat bleibt bestehen, auch wenn er nicht besetzt ist"],"Only moderators can see your XMPP address":["Nur Moderatoren können Ihre XMPP-Adresse sehen"],"This groupchat will disappear once the last person leaves":["Dieser Gruppenchat verschwindet, sobald die letzte Person den Gruppenchat verlässt"],"This groupchat is publicly searchable":["Dieser Gruppenchat ist öffentlich auffindbar"],"Groupchat info for %1$s":["Gruppenchat-Benachrichtigung für %1$s"],"You\'re not allowed to send messages in this room":["Sie dürfen in diesem Gruppenchat keine Nachrichten senden"],"The conversation has moved. Click below to enter.":["Das Gespräch wurde verschoben. Klicken Sie unten, um einzutreten."],"This groupchat no longer exists":["Dieser Gruppenchat existiert nicht mehr"],"Hide the groupchat topic":["Gruppen-Chatraum verbergen"],"This groupchat is bookmarked":["Dieser Raum ist als Lesezechen gekennzeichnet"],"Enter groupchat":["Gruppenchat beitreten"],"Choose a nickname to enter":["Wählen Sie einen Spitznamen für die Eingabe"],"Please choose your nickname":["Wählen Sie Ihren Spitznamen"],"This groupchat requires a password":["Dieser Gruppenchat erfordert ein Passwort"],"Password: ":["Passwort: "],"Submit":["Senden"],"%1$s has entered the groupchat":["%1$s ist dem Gruppenchat beigetreten"],"%1$s has left the groupchat":["%1$s hat den Gruppenchat verlassen"],"%1$s is now a moderator":["%1$s ist jetzt ein Moderator"],"%1$s is no longer a moderator":["%1$s ist kein Moderator mehr"],"%1$s has been given a voice":["%1$s darf nun wieder schreiben"],"%1$s has been muted":["%1$s wurde das Schreibrecht entzogen"],"%1$s and %2$s":["%1$s und %2$s"],"%1$s are typing":["%1$s tippt"],"%1$s have stopped typing":["%1$s tippt nicht mehr"],"%1$s have gone away":["%1$s ist jetzt abwesend"],"%1$s have entered the groupchat":["%1$s ist dem Gruppenchat beigetreten"],"%1$s have left the groupchat":["%1$s hat den Gruppenchat verlassen"],"%1$s are now moderators":["%1$s sind jetzt Moderatoren"],"%1$s are no longer moderators":["%1$s sind keine Moderatoren mehr"],"%1$s have been given voices":["%1$s dürfen nun wieder schreiben"],"%1$s have been muted":["%1$s wurde das Schreibrecht entzogen"],"Change user\'s affiliation to admin":["Zugehörigkeit des Benutzers zu Administrator ändern"],"Ban user by changing their affiliation to outcast":["Sperren Sie Benutzer, indem Sie ihre Zugehörigkeit zu ausgeschlossenen Personen ändern"],"Clear the chat area":["Löschen des Chatbereichs"],"Close this groupchat":["Dieses Gruppenchat schließen"],"Change user role to participant":["Rolle zu Teilnehmer ändern"],"Remove this groupchat":["Diesen Gruppenchat entfernen"],"Kick user from groupchat":["Mitglied aus diesem Gruppenchat entfernen"],"Write in 3rd person":["In der dritten Person schreiben"],"Grant membership to a user":["Einem Benutzer die Mitgliedschaft gewähren"],"Opens up the moderator tools GUI":["Öffnet die Benutzeroberfläche der Moderatorentools"],"Remove user\'s ability to post messages":["Die Möglichkeit des Benutzers, Nachrichten zu senden, entfernen"],"Change your nickname":["Eigenen Spitznamen ändern"],"Grant moderator role to user":["Benutzer Moderatorenrechte gewähren"],"Grant ownership of this groupchat":["Besitzrechte an diesem Gruppenchat vergeben"],"Register your nickname":["Registrieren Sie Ihren Spitznamen"],"Revoke the user\'s current affiliation":["Widerrufen der aktuellen Zugehörigkeit des Benutzers"],"Set groupchat subject":["Thema des Gruppenchats festlegen"],"Set groupchat subject (alias for /subject)":["Gruppenchatthema (alias für /subject) festlegen"],"Allow muted user to post messages":["Stummgeschaltetem Benutzer erlauben Nachrichten zu senden"],"You are about to retract this message.":["Sie sind dabei, diese Nachricht zu widerrufen."],"You may optionally include a message, explaining the reason for the retraction.":["Sie können optional eine Nachricht mit einer Erklärung und Grund für den Widerruf einfügen."],"Message Retraction":["Nachricht Widerruf"],"Optional reason":["Optionaler Grund"],"Sorry, you\'re not allowed to retract this message":["Es tut uns leid, Sie dürfen diese Nachricht nicht widerrufen"],"A timeout occurred while trying to retract the message":["Eine Zeitüberschreitung ist beim Versuch aufgetreten, die Nachricht zu widerrufen"],"Sorry, you\'re not allowed to retract this message.":["Es tut uns leid, Sie dürfen diese Nachricht nicht widerrufen."],"Show more information about this groupchat":["Weitere Informationen zu diesem Gruppenchat anzeigen"],"Configure":["Konfigurieren"],"Configure this groupchat":["Diesen Gruppenchat konfigurieren"],"Invite someone to join this groupchat":["Laden Sie jemanden zu diesem Gruppenchat ein"],"Show topic":["Thema anzeigen"],"Hide topic":["Thema ausblenden"],"Show the topic message in the heading":["Thema in der Ãœberschrift anzeigen"],"Hide the topic in the heading":["Thema in der Ãœberschrift ausblenden"],"Moderate":["Moderiert"],"Moderate this groupchat":["Diesen Gruppenchat moderieren"],"Destroy":["Gruppenchat zerstören"],"Leave":["Verlassen"],"Leave and close this groupchat":["Verlassen und diesen Gruppenchat schließen"],"Are you sure you want to leave this groupchat?":["Sind Sie sicher, dass Sie diesen Gruppenchat verlassen wollen?"],"Hide the list of participants":["Teilnehmerliste ausblenden"],"Forbidden: you do not have the necessary role in order to do that.":["Verboten: Sie haben nicht die nötigen Rechte, um das zu tun."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Verboten: Sie haben nicht die nötige Zugehörigkeit, um das zu tun."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fehler: Das „%1$sâ€-Kommando benötigt zwei Argumente: Den Spitznamen und einen Grund."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fehler: Konnte keinen Groupchat-Teilnehmer anhand ihrer Kriterien finden"],"Error: found multiple groupchat participant based on your arguments":["Fehler: Mehrere Gruppenchat-Teilnehmer basierend auf ihren Kriterien gefunden"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Konnte keinen Teilnehmer mit diesem Spitznamen finden. Möglicherweise haben sie den Gruppenchat verlassen."],"Sorry, an error happened while running the command.":["Entschuldigung, bei der Ausführung des Befehls ist ein Fehler aufgetreten."],"Check your browser\'s developer console for details.":["Einzelheiten finden Sie in der Entwicklerkonsole Ihres Browsers."],"Are you sure you want to destroy this groupchat?":["Möchten Sie den diesen Gruppenchat wirklich zerstören?"],"Please enter the XMPP address of this groupchat to confirm":["Bitte geben Sie die XMPP-Adresse dieses Gruppenchats zur Bestätigung ein"],"name@example.org":["benutzer@beispiel.org"],"Optional reason for destroying this groupchat":["Optionaler Grund für die Zerstörung dieses Gruppenchats"],"Optional XMPP address for a new groupchat that replaces this one":["Optionale XMPP-Adresse für einen neuen Gruppenchat, der diese ersetzt"],"replacement@example.org":["ersatz@beispiel.org"],"Your nickname is \\"%1$s\\"":["Ihr Spitzname ist \\"%1$s\\""],"Error: invalid number of arguments":["Fehler: ungültige Anzahl von Argumenten"],"This action was done by %1$s.":["Diese Aktion wurde durch %1$s ausgeführt."],"The reason given is: \\"%1$s\\".":["Angegebener Grund: „%1$sâ€."],"Groupchats":["Gruppenchat"],"Add a new groupchat":["Neuen Gruppenchat hinzufügen"],"Query for groupchats":["Gruppenchats abfragen"],"Sorry, an error occurred while trying to submit the config form.":["Beim Senden des Konfigurationsformulars ist leider ein Fehler aufgetreten."],"Close these announcements":["Ankündigungen schließen"],"Announcements":["Ankündigungen"],"Click to open this server message":["Klicken Sie hier, um diese Servernachricht zu öffnen"],"Notification from %1$s":["Benachrichtigung von %1$s"],"%1$s says":["%1$s sagt"],"Encrypted message received":["Verschlüsselte Nachricht empfangen"],"has gone offline":["hat sich abgemeldet"],"has gone away":["ist jetzt abwesend"],"is busy":["ist beschäftigt"],"has come online":["kam online"],"wants to be your contact":["möchte Ihr Kontakt sein"],"Hide":["Ausblenden"],"Execute":["Ausführen"],"On which entity do you want to run commands?":["Auf welcher Instanz wollen Sie Befehle ausführen?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Bestimmte XMPP-Dienste und Instanzen erlauben es privilegierten Benutzern, Ad-hoc-Befehle darauf auszuführen."],"Commands found":["Befehle gefunden"],"List available commands":["Verfügbare Befehle auflisten"],"No commands found":["Keine Befehle gefunden"],"Sorry, an error occurred while looking for commands on that entity.":["Entschuldigung, bei der Suche nach Befehlen für diese Instanz ist ein Fehler aufgetreten."],"The specified entity doesn\'t support ad-hoc commands":["Die angegebene Instanz unterstützt keine Ad-hoc-Befehle"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Es ist leider ein Fehler beim Ausführen des Befehls aufgetreten. Weitere Informationen finden Sie in der Entwicklerkonsole"],"About":["Ãœber"],"Commands":["Befehle"],"Settings":["Einstellungen"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s XMPP Chat Client, der Ihnen von %3$s Opkode %2$s zur Verfügung gestellt wird"],"%1$s Translate %2$s it into your own language":["%1$s Ãœbersetzen Sie %2$s es in Ihre eigene Sprache"],"Log out":["Abmelden"],"Click to change your chat status":["Hier klicken, um Ihren Status zu ändern"],"Show details about this chat client":["Details zu diesem Chat-Client anzeigen"],"Your avatar image":["Dein Avatarbild"],"Checkbox for selecting the following fingerprint":["Kontrollkästchen zur Auswahl des folgenden Fingerabdrucks"],"Device without a fingerprint":["Gerät ohne Fingerabdruck"],"Checkbox for selecting the following device":["Kontrollkästchen zur Auswahl des folgenden Geräts"],"Other OMEMO-enabled devices":["Andere OMEMO-fähige Geräte"],"Checkbox to select fingerprints of all other OMEMO devices":["Kontrollkästchen zur Auswahl der Fingerabdrücke aller anderen OMEMO-Geräte"],"Remove checked devices and close":["Markierte Geräte entfernen und schließen"],"Select all":["Alle auswählen"],"This device\'s OMEMO fingerprint":["OMEMO-Fingerabdruck dieses Geräts"],"Generate new keys and fingerprint":["Neuer Schlüssel und Fingerabdrücke generieren"],"Your Profile":["Dein Profil"],"XMPP Address (JID)":["XMPP/Jabber-ID (JID)"],"Save and close":["Speichern und schließen"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Benutze Kommas um die Rollen zu separieren. Die Rollen erscheinen neben deinem Namen."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Leider ist beim Speichern deiner Profildaten ein Fehler aufgetreten."],"You can check your browser\'s developer console for any error output.":["Schau in die Entwicklerkonsole des Browsers um mögliche Fehlerausgaben zu sehen."],"Away":["Abwesend"],"Busy":["Beschäftigt"],"Custom status":["Statusnachricht"],"Offline":["Abgemeldet"],"Online":["Online"],"Away for long":["Lange abwesend"],"Change chat status":["Hier klicken, um Ihren Status zu ändern"],"Personal status message":["Persönliche Statusnachricht"],"I am %1$s":["Ich bin %1$s"],"Are you sure you want to log out?":["Möchten Sie sich wirklich abmelden?"],"online":["online"],"busy":["beschäftigt"],"away for long":["länger abwesend"],"away":["abwesend"],"offline":["abgemeldet"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Leider konnte eine empfangene OMEMO-Nachricht aufgrund eines Fehlers nicht entschlüsselt werden."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Leider konnte eine empfangene OMEMO-Nachricht aufgrund der fehlenden JID des Nutzers nicht entschlüsselt werden."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s scheint keinen Client zu haben, der OMEMO unterstützt. Ein verschlüsselter Chat wird in diesem Gruppenchat nicht mehr möglich sein."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["In diesem Gruppenchat kann keine Ende-zu-Ende-Verschlüsselung verwendet werden, entweder der Gruppenchat hat eine gewisse Anonymität oder nicht alle Teilnehmer unterstützen OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Ende-zu-Ende Verschlüsselung konnte nicht verwendet werden, da %1$s einen Client verwendet, der OMEMO nicht unterstützt."],"Messages are being sent in plaintext":["Nachrichten werden im Klartext gesendet"],"Messages are sent encrypted":["Nachrichten werden verschlüsselt gesendet"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Dieser Gruppenchat muss nur für Mitglieder zugänglich und nicht anonym sein, um OMEMO-verschlüsselte Nachrichten zu unterstützen"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Leider können wir keine verschlüsselte Nachricht senden, da %1$s erfordert, dass Sie für ihre Teilnahme angemeldet sind, um ihre OMEMO-Informationen zu sehen"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Leider können wir keine verschlüsselte Nachricht senden, da der Remote-Server für %1$s nicht gefunden werden konnte"],"Unable to send an encrypted message due to an unexpected error.":["Die verschlüsselte Nachricht konnte aufgrund eines unerwarteten Fehlers nicht versendet werden."],"Sorry, an error occurred while trying to remove the devices.":["Leider ist beim Versuch, die Geräte zu entfernen, ein Fehler aufgetreten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Sind Sie sicher, dass Sie neue OMEMO-Schlüssel erzeugen möchten? Dann werden Ihre alten Schlüssel entfernt und alle zuvor verschlüsselten Nachrichten sind auf diesem Gerät nicht mehr entschlüsselbar."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Leider können wir keine Geräte finden, an die wir eine OMEMO-verschlüsselte Nachricht senden können."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dies ist eine OMEMO-verschlüsselte Nachricht, die Ihr Client nicht zu unterstützen scheint. Weitere Informationen finden Sie unter https://conversations.im/omemo"]," e.g. conversejs.org":[" z. B. conversejs.org"],"Fetch registration form":["Anmeldeformular wird abgerufen"],"Tip: A list of public XMPP providers is available":["Tipp: Eine Liste öffentlicher Provider ist verfügbar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Leider können wir keine Verbindung zu dem von Ihnen gewählten Provider herstellen."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Leider unterstützt der angegebene Anbieter die keine Benutzerregistrierung. Bitte versuche es bei einem anderen Anbieter."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Die Verbindung zu „%1$s†konnte nicht hergestellt werden. Sind Sie sicher, dass „%1$s†existiert?"],"Now logging you in":["Sie werden angemeldet"],"Registered successfully":["Registrierung erfolgreich"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Der Provider hat die Registrierung abgelehnt. Bitte überprüfen Sie Ihre Angaben auf Richtigkeit."],"Leave this groupchat":["Diesen Gruppenchat verlassen"],"Click to toggle the list of open groupchats":["Gruppenteilnehmer anzeigen"],"Open Groupchats":["Offene Gruppenchats"],"Are you sure you want to leave the groupchat %1$s?":["Möchten Sie den Gruppenchat „%1$s†wirklich verlassen?"],"Add":["Hinzufügen"],"Add a Contact":["Kontakt hinzufügen"],"This contact is busy":["Dieser Kontakt ist beschäftigt"],"This contact is online":["Dieser Kontakt ist online"],"This contact is offline":["Dieser Kontakt ist offline"],"This contact is unavailable":["Dieser Kontakt ist nicht verfügbar"],"This contact is away for an extended period":["Dieser Kontakt ist für längere Zeit abwesend"],"This contact is away":["Dieser Kontakt ist abwesend"],"Contact name":["Name des Kontakts"],"Optional nickname":["Optionaler Spitzname"],"Sorry, could not find a contact with that name":["Leider konnte kein Kontakt mit diesem Namen gefunden werden"],"This contact has already been added":["Dieser Kontakt wurde bereits hinzugefügt"],"Filter":["Filter"],"Filter by contact name":["Nach Name des Kontakts filtern"],"Filter by group name":["Nach Gruppennamen filtern"],"Filter by status":["Filtern via Status"],"Any":["Jeder"],"Unread":["Ungelesen"],"Chatty":["Gesprächsbereit"],"Extended Away":["Länger nicht anwesend"],"Click to remove %1$s as a contact":["Hier klicken, um %1$s als Kontakt zu entfernen"],"Click to accept the contact request from %1$s":["Hier klicken, um die Kontaktanfrage von %1$s zu akzeptieren"],"Click to decline the contact request from %1$s":["Hier klicken, um die Kontaktanfrage von %1$s abzulehnen"],"Click to chat with %1$s (XMPP address: %2$s)":["Klicken Sie hier, um mit %1$s zu chatten (XMPP-Adresse: %2$s)"],"Are you sure you want to decline this contact request?":["Möchten Sie diese Kontaktanfrage wirklich ablehnen?"],"Contacts":["Kontakte"],"Add a contact":["Kontakt hinzufügen"],"Re-sync your contacts":["Resynchronisieren Sie Ihre Kontakte"]}}}')}}]); //# sourceMappingURL=de-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/eo-LC_MESSAGES-converse-po.js b/src/conversejs/locales/eo-LC_MESSAGES-converse-po.js index aab6a505d526dac724dd4ffbd7bbf6dc5242b78b..3ffd53147c418018ae52ad89acaf33365a26b01d 100644 --- a/src/conversejs/locales/eo-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/eo-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{426:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"eo"},"Create your account":["Krei vian konton"],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":["Jam havas konversacian konton?"],"Log in here":["Ensaluti ĉi tie"],"Account Registration:":[""],"Register":["Registri"],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["Nuligi"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Ĉi tiu babilejo ne estas anonima"],"This groupchat now shows unavailable members":["Tiu babilejo nun afiÅas maldisponeblajn anojn"],"This groupchat does not show unavailable members":["Tiu babilejo ne afiÅas nedisponeblajn anojn"],"The groupchat configuration has changed":["La babilejo konfiguracio ÅanÄis"],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":["Ĉi tiu babilejo estas nun malanonima"],"This groupchat is now semi-anonymous":["Ĉi tiu babilejo estas nun parta anonima"],"This groupchat is now fully-anonymous":["Ĉi tiu babilejo estas nun anonima"],"A new groupchat has been created":["Kreis novan babilejon"],"Your nickname has been automatically set to %1$s":["Via kromnomo estis aÅtomate fiksita al %1$s"],"Your nickname has been changed to %1$s":["Via kromnomo estis ÅanÄita al %1$s"],"You have been banned from this groupchat":["Vi estis malpermesita de ĉi tiu babilejo"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s estis malpermesita"],"%1$s\'s nickname has changed":["Kromnomo de %1$s ÅanÄis"],"%1$s has been removed for not being a member":["%1$s estis forigita ĉar ne estanta ano"],"%1$s is no longer an admin of this groupchat":["%1$s ne plu estas administranto de tiu grupbabilejo"],"%1$s is no longer an owner of this groupchat":["%1$s ne plu estas posedanto de tiu grupbabilejo"],"%1$s is no longer banned from this groupchat":[""],"%1$s is now an %2$s of this groupchat":["%1$s estas nun %2$s en ĉi tiu babilejo"],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":["Vi estis malpermesita de ĉi tiu babilejo."],"You are not allowed to create new groupchats.":["Vi ne estas permesita krei novajn babilejojn."],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":["Ĉi tiu babilejo ne (ankoraÅ) ekzistas."],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Eraro"],"Sorry, something went wrong while trying to save your bookmark.":["Pardonu, io malÄustis dum provanta savi vian legosignon."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Miaj kontaktoj"],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":["Mallegosigni tiun babilejon"],"Click to open this groupchat":["Klaku por malfermi tiun babilejon"],"Bookmarks":["Legosignoj"],"Bookmark this groupchat":["Legosigni tiun babilejon"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["La nomo por ĉi tiu legosigno:"],"What should your nickname for this groupchat be?":["Kiu devas esti vian kromnomon por tiu babilejo ?"],"Save":["Konservi"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ĉu vi certas ke vi volas forigi la legosignon %1$s ?"],"Close":["Fermi"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Eksaj versioj"],"Retry":[""],"Uploading file:":["AlÅutado de dosiero:"],"This message has been edited":[""],"Show more":["Montri pli"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Profilbildo de la uzanto"],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":["Forigi kontakton"],"XMPP Address":["XMPPa adreso"],"Email":["RetpoÅto"],"Full Name":["Kompleta nomo"],"Nickname":[""],"Refresh":[""],"Role":["Rolo"],"URL":["URL"],"%1$s is typing":["%1$s estas tajpanta"],"%1$s has stopped typing":["%1$s ĉesis tajpi"],"%1$s has gone away":["%1$s iris for"],"Remove messages":["Forigi mesaÄojn"],"Write in the third person":[""],"Show this menu":["Montri ĉi tiun menuon"],"Hidden message":["KaÅita mesaÄo"],"Message":["MesaÄo"],"Optional hint":[""],"You have unread messages":["Vi havas nelegitajn mesaÄojn"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ĉu vi certas ke vi volas viÅi mesaÄojn de tiu konversacio ?"],"%1$s has gone offline":[""],"%1$s is busy":["%1$s estas okupata"],"%1$s is online":["%1$s estas enreta"],"Sorry, something went wrong while trying to refresh":["Pardonu, io malÄustis dum provanta reÅargi"],"Are you sure you want to remove this contact?":["Ĉu vi certas ke vi volas forigi tiun kontakton ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Pardonu, estis eraro dum provanta forigi %1$s kiel kontakto."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":["Krei konton"],"Don\'t have a chat account?":["Ne havas konversacian konton?"],"Log in":["Ensaluti"],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":["Salutnomo"],"user@domain":["uzanto@domajno"],"Please enter a valid XMPP address":["Bonvolu eniri validan XMPPan adreson"],"Chat Contacts":["Konversaciaj kontaktoj"],"Toggle chat":["Baskuli babilejon"],"Click to restore this chat":["Klaku por restaÅri tiun konversacion"],"Minimized":["Minimumigita"],"This field is required":[""],"Join":["AliÄi"],"Enter a new Groupchat":["Eniri novan babilejon"],"name@conference.example.org":["nomo@konferenco.ekzemplo.org"],"Groupchat address":["Adreso de babilejo"],"Invite":["Inviti"],"Show groupchats":["Montri babilejojn"],"Server address":["Adreso de servilo"],"Show more information on this groupchat":["AfiÅi pli da informo pri tiu babilejo"],"Query for Groupchats":["Peti babilejon"],"Description:":["Priskribo :"],"Groupchat Address (JID):":["Babilejo adresa (JID-o):"],"Participants:":["Partoprenantoj:"],"Features:":["Funkcioj:"],"Requires authentication":["Devigas aÅtentigon"],"Hidden":["KaÅita"],"Requires an invitation":["Devigas inviton"],"Moderated":["Kontrolata"],"Non-anonymous":["Ne-anonima"],"Open":["Malfermi"],"Permanent":["Konstanta"],"Public":["Publika"],"Semi-anonymous":[""],"Temporary":["Provizora"],"Unmoderated":["Nekontrolata"],"conference.example.org":["konferenco.ekzemplo.org"],"No groupchats found":["Neniu babilejoj trovita"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Temo"],"Topic author":[""],"Groupchat address (JID)":["Adreso de babilejo (JIDo)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Priskribo"],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Nur anoj"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Nomo"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":["Ne anonima"],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":["Grupbabilejo informoj por %1$s"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["Ĉi tiu babilejo jam ne ekzistas"],"Enter groupchat":["Eniri babilejon"],"Please choose your nickname":[""],"This groupchat requires a password":["Ĉi tiu babilejo necesigas pasvorton"],"Password: ":["Pasvorto: "],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":["Posedanto"],"Admin":["Administranto"],"Member":["Ano"],"Moderator":[""],"Visitor":["Vizitanto"],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":["%1$s eniris la babilejon"],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been muted":["%1$s estis silentigita"],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ÅœanÄi uzanton rolon al partoprenanto"],"Kick user from groupchat":[""],"Write in 3rd person":["Skribas en 3a persono"],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":["ÅœanÄi vian kromnomon"],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"A timeout occurred while trying to retract the message":[""],"Configure":[""],"Configure this groupchat":["Agordi tiun babilejon"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["KaÅi liston de partoprenantoj"],"Forbidden: you do not have the necessary role in order to do that.":["Malpermesita: vi ne havas la necesan rolon por fari tion."],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":["nomo@ekzemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":["Babilejoj"],"Add a new groupchat":["Aldoni novan babilejon"],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":["Sciigo de %1$s"],"%1$s says":["%1$s diras"],"has gone offline":[""],"has gone away":[""],"is busy":["estas okupata"],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Elsaluti"],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":["Via profilbildo"],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":["Elekti ĉiujn"],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":["Via profilo"],"XMPP Address (JID)":["XMPPa adreso (JIDo)"],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["For"],"Busy":["Okupite"],"Custom status":[""],"Offline":["Elrete"],"Online":["Enrete"],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":["Mi estas %1$s"],"Are you sure you want to log out?":[""],"online":["enrete"],"busy":["okupite"],"away for long":[""],"away":["fore"],"offline":["elrete"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" ekz. conversejs.org"],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":["ĉi tie"],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":["Registrita sukcese"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["Lasi ĉi tiun babilejon"],"Click to toggle the list of open groupchats":[""],"Open Groupchats":["Enbabilejoj"],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":["Aldoni"],"Add a Contact":["Aldoni kontakton"],"This contact is busy":["Ĉi tiu kontakto estas okupata"],"This contact is online":["Ĉi tiu kontakto estas enreta"],"This contact is offline":["Ĉi tiu kontakto estas elreta"],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":["Ĉi tiu kontakto estas for"],"Contact name":["Nomo de kontakto"],"Optional nickname":["Nedeviga kromnomo"],"Sorry, could not find a contact with that name":[""],"Filter":["Filtri"],"Filter by contact name":["Filtri laÅ kontaktnomo"],"Filter by group name":["Filtri laÅ grupnomo"],"Filter by status":["Filtri laÅ statuso"],"Any":[""],"Unread":["Nelegita"],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":["Kontaktoj"],"Add a contact":["Aldoni kontakton"],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[148],{514:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"eo"},"Create your account":["Krei vian konton"],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":["Jam havas konversacian konton?"],"Log in here":["Ensaluti ĉi tie"],"Account Registration:":[""],"Register":["Registri"],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["Nuligi"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Ĉi tiu babilejo ne estas anonima"],"This groupchat now shows unavailable members":["Tiu babilejo nun afiÅas maldisponeblajn anojn"],"This groupchat does not show unavailable members":["Tiu babilejo ne afiÅas nedisponeblajn anojn"],"The groupchat configuration has changed":["La babilejo konfiguracio ÅanÄis"],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":["Ĉi tiu babilejo estas nun malanonima"],"This groupchat is now semi-anonymous":["Ĉi tiu babilejo estas nun parta anonima"],"This groupchat is now fully-anonymous":["Ĉi tiu babilejo estas nun anonima"],"A new groupchat has been created":["Kreis novan babilejon"],"Your nickname has been automatically set to %1$s":["Via kromnomo estis aÅtomate fiksita al %1$s"],"Your nickname has been changed to %1$s":["Via kromnomo estis ÅanÄita al %1$s"],"You have been banned from this groupchat":["Vi estis malpermesita de ĉi tiu babilejo"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s estis malpermesita"],"%1$s\'s nickname has changed":["Kromnomo de %1$s ÅanÄis"],"%1$s has been removed for not being a member":["%1$s estis forigita ĉar ne estanta ano"],"%1$s is no longer an admin of this groupchat":["%1$s ne plu estas administranto de tiu grupbabilejo"],"%1$s is no longer an owner of this groupchat":["%1$s ne plu estas posedanto de tiu grupbabilejo"],"%1$s is no longer banned from this groupchat":[""],"%1$s is now an %2$s of this groupchat":["%1$s estas nun %2$s en ĉi tiu babilejo"],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":["Vi estis malpermesita de ĉi tiu babilejo."],"You are not allowed to create new groupchats.":["Vi ne estas permesita krei novajn babilejojn."],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":["Ĉi tiu babilejo ne (ankoraÅ) ekzistas."],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Eraro"],"Sorry, something went wrong while trying to save your bookmark.":["Pardonu, io malÄustis dum provanta savi vian legosignon."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Miaj kontaktoj"],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":["Mallegosigni tiun babilejon"],"Click to open this groupchat":["Klaku por malfermi tiun babilejon"],"Bookmarks":["Legosignoj"],"Bookmark this groupchat":["Legosigni tiun babilejon"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["La nomo por ĉi tiu legosigno:"],"What should your nickname for this groupchat be?":["Kiu devas esti vian kromnomon por tiu babilejo ?"],"Save":["Konservi"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ĉu vi certas ke vi volas forigi la legosignon %1$s ?"],"Close":["Fermi"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Eksaj versioj"],"Retry":[""],"Uploading file:":["AlÅutado de dosiero:"],"This message has been edited":[""],"Show more":["Montri pli"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Profilbildo de la uzanto"],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":["Forigi kontakton"],"XMPP Address":["XMPPa adreso"],"Email":["RetpoÅto"],"Full Name":["Kompleta nomo"],"Nickname":[""],"Refresh":[""],"Role":["Rolo"],"URL":["URL"],"%1$s is typing":["%1$s estas tajpanta"],"%1$s has stopped typing":["%1$s ĉesis tajpi"],"%1$s has gone away":["%1$s iris for"],"Remove messages":["Forigi mesaÄojn"],"Write in the third person":[""],"Show this menu":["Montri ĉi tiun menuon"],"Hidden message":["KaÅita mesaÄo"],"Message":["MesaÄo"],"Optional hint":[""],"You have unread messages":["Vi havas nelegitajn mesaÄojn"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ĉu vi certas ke vi volas viÅi mesaÄojn de tiu konversacio ?"],"%1$s has gone offline":[""],"%1$s is busy":["%1$s estas okupata"],"%1$s is online":["%1$s estas enreta"],"Sorry, something went wrong while trying to refresh":["Pardonu, io malÄustis dum provanta reÅargi"],"Are you sure you want to remove this contact?":["Ĉu vi certas ke vi volas forigi tiun kontakton ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Pardonu, estis eraro dum provanta forigi %1$s kiel kontakto."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":["Krei konton"],"Don\'t have a chat account?":["Ne havas konversacian konton?"],"Log in":["Ensaluti"],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":["Salutnomo"],"user@domain":["uzanto@domajno"],"Please enter a valid XMPP address":["Bonvolu eniri validan XMPPan adreson"],"Chat Contacts":["Konversaciaj kontaktoj"],"Toggle chat":["Baskuli babilejon"],"Click to restore this chat":["Klaku por restaÅri tiun konversacion"],"Minimized":["Minimumigita"],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":["Posedanto"],"Admin":["Administranto"],"Member":["Ano"],"Moderator":[""],"Visitor":["Vizitanto"],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":["AliÄi"],"Enter a new Groupchat":["Eniri novan babilejon"],"name@conference.example.org":["nomo@konferenco.ekzemplo.org"],"Groupchat address":["Adreso de babilejo"],"Invite":["Inviti"],"Show groupchats":["Montri babilejojn"],"Server address":["Adreso de servilo"],"Show more information on this groupchat":["AfiÅi pli da informo pri tiu babilejo"],"Query for Groupchats":["Peti babilejon"],"Description:":["Priskribo :"],"Groupchat Address (JID):":["Babilejo adresa (JID-o):"],"Participants:":["Partoprenantoj:"],"Features:":["Funkcioj:"],"Requires authentication":["Devigas aÅtentigon"],"Hidden":["KaÅita"],"Requires an invitation":["Devigas inviton"],"Moderated":["Kontrolata"],"Non-anonymous":["Ne-anonima"],"Open":["Malfermi"],"Permanent":["Konstanta"],"Public":["Publika"],"Semi-anonymous":[""],"Temporary":["Provizora"],"Unmoderated":["Nekontrolata"],"conference.example.org":["konferenco.ekzemplo.org"],"No groupchats found":["Neniu babilejoj trovita"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Temo"],"Topic author":[""],"Groupchat address (JID)":["Adreso de babilejo (JIDo)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Priskribo"],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Nur anoj"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Nomo"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":["Ne anonima"],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":["Grupbabilejo informoj por %1$s"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["Ĉi tiu babilejo jam ne ekzistas"],"Enter groupchat":["Eniri babilejon"],"Please choose your nickname":[""],"This groupchat requires a password":["Ĉi tiu babilejo necesigas pasvorton"],"Password: ":["Pasvorto: "],"Submit":[""],"%1$s has entered the groupchat":["%1$s eniris la babilejon"],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been muted":["%1$s estis silentigita"],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["ÅœanÄi uzanton rolon al partoprenanto"],"Kick user from groupchat":[""],"Write in 3rd person":["Skribas en 3a persono"],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":["ÅœanÄi vian kromnomon"],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"A timeout occurred while trying to retract the message":[""],"Configure":[""],"Configure this groupchat":["Agordi tiun babilejon"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["KaÅi liston de partoprenantoj"],"Forbidden: you do not have the necessary role in order to do that.":["Malpermesita: vi ne havas la necesan rolon por fari tion."],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":["nomo@ekzemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":["Babilejoj"],"Add a new groupchat":["Aldoni novan babilejon"],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":["Sciigo de %1$s"],"%1$s says":["%1$s diras"],"has gone offline":[""],"has gone away":[""],"is busy":["estas okupata"],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Elsaluti"],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":["Via profilbildo"],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":["Elekti ĉiujn"],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":["Via profilo"],"XMPP Address (JID)":["XMPPa adreso (JIDo)"],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["For"],"Busy":["Okupite"],"Custom status":[""],"Offline":["Elrete"],"Online":["Enrete"],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":["Mi estas %1$s"],"Are you sure you want to log out?":[""],"online":["enrete"],"busy":["okupite"],"away for long":[""],"away":["fore"],"offline":["elrete"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" ekz. conversejs.org"],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":["ĉi tie"],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":["Registrita sukcese"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["Lasi ĉi tiun babilejon"],"Click to toggle the list of open groupchats":[""],"Open Groupchats":["Enbabilejoj"],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":["Aldoni"],"Add a Contact":["Aldoni kontakton"],"This contact is busy":["Ĉi tiu kontakto estas okupata"],"This contact is online":["Ĉi tiu kontakto estas enreta"],"This contact is offline":["Ĉi tiu kontakto estas elreta"],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":["Ĉi tiu kontakto estas for"],"Contact name":["Nomo de kontakto"],"Optional nickname":["Nedeviga kromnomo"],"Sorry, could not find a contact with that name":[""],"Filter":["Filtri"],"Filter by contact name":["Filtri laÅ kontaktnomo"],"Filter by group name":["Filtri laÅ grupnomo"],"Filter by status":["Filtri laÅ statuso"],"Any":[""],"Unread":["Nelegita"],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":["Kontaktoj"],"Add a contact":["Aldoni kontakton"],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=eo-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/es-LC_MESSAGES-converse-po.js b/src/conversejs/locales/es-LC_MESSAGES-converse-po.js index 10e25708f7deb61856317df3452939e773573d5c..7d88f9b0bd0de6bf2f3ce6b0b6bd5c73fbffd1a0 100644 --- a/src/conversejs/locales/es-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/es-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{427:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"es"},"Create your account":["Crea tu cuenta"],"Please enter the XMPP provider to register with:":["Por favor, introduce el proveedor de XMPP para registrarse:"],"Already have a chat account?":["¿Ya tienes una cuenta?"],"Log in here":["Inicia sesión aquÃ"],"Account Registration:":["Registro de cuenta:"],"Register":["Registrar"],"Choose a different provider":["Elige un proveedor diferente"],"Hold tight, we\'re fetching the registration form…":["Espera, estamos recuperando el formulario de registro…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["La conexión se ha perdido, intentando reconectar."],"An error occurred while connecting to the chat server.":["Ocurrió un error mientras se conectaba al servidor de chat."],"Your XMPP address and/or password is incorrect. Please try again.":["Tu dirección XMPP y/o tu contraseña no es correcta. Por favor, inténtalo de nuevo."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Lo sentimos, no pudimos conectarnos al servidor XMPP con el dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["El servidor XMPP no ofreció un mecanismo de autenticación soportado"],"Sorry, could not determine upload URL.":["Lo sentimos, no se ha podido determinar la URL de subida."],"Sorry, could not determine file upload URL.":["Lo sentimos, no se pudo determinar la URL de subida de archivos."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Lo sentimos, no se ha podido subir el archivo con éxito. La respuesta de tu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Lo sentimos, no se ha podido subir el archivo con éxito."],"Sorry, looks like file upload is not supported by your server.":["Lo sentimos, parece que tu servidor no soporta la subida de archivos."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["El tamaño del archivo, %1$s, excede el máximo permitido por tu servidor, que es %2$s."],"Smileys and emotions":["Smileys y emoticonos"],"People":["Personas"],"Activities":["Actividades"],"Travel":["Viajes"],"Objects":["Objectos"],"Animals and nature":["Animales y naturaleza"],"Food and drink":["Comida y bebida"],"Symbols":["SÃmbolos"],"Flags":["Banderas"],"Stickers":["Stickers"],"This groupchat is not anonymous":["Esta conversación en grupo no es anónima"],"This groupchat now shows unavailable members":["Esta conversación en grupo ahora muestra los miembros no disponibles"],"This groupchat does not show unavailable members":["Esta conversación en grupo no muestra los miembros no disponibles"],"The groupchat configuration has changed":["La configuración de la conversación en grupo ha cambiado"],"Groupchat logging is now enabled":["El registro de la conversación en grupo está ahora activado"],"Groupchat logging is now disabled":["El registro de la conversación en grupo está ahora desactivado"],"This groupchat is now no longer anonymous":["Esta conversación en grupo ya no es anónima"],"This groupchat is now semi-anonymous":["Esta conversación en grupo es ahora semi-anónima"],"This groupchat is now fully-anonymous":["Esta conversación en grupo es ahora completamente anónima"],"A new groupchat has been created":["Se ha creado una nueva conversación en grupo"],"Your nickname has been automatically set to %1$s":["Tu apodo ha sido establecido automáticamente como %1$s"],"Your nickname has been changed to %1$s":["Tu apodo ha sido cambiado a %1$s"],"You have been banned from this groupchat":["Has sido bloqueado de esta conversación en grupo"],"You have been kicked from this groupchat":["Has sido expulsado de esta conversación en grupo"],"You have been removed from this groupchat because of an affiliation change":["Has sido eliminado de esta conversación en gurpo debido a un cambio de afiliación"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Has sido eliminado de esta conversación en grupo debido a que la conversación cambió su configuración a solo miembros y tú no eres miembro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Has sido eliminado de esta conversación en grupo debido a que el servicio está apagándose"],"Your message was not delivered because you weren\'t allowed to send it.":["Tu mensaje no fue enviado porque no tienes permitido enviar mensajes."],"Your message was not delivered because you\'re not present in the groupchat.":["No se entregó tu mensaje porque no estás presente en la conversación en grupo."],"You\'re not allowed to register yourself in this groupchat.":["No se te permite ingresar en esta conversación en grupo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["No se te permite ingresar en esta conversación en grupo dado que es solo para miembros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["No puede registrar tu apodo en esta conversación en grupo; no admite registros."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["No puedes registrar tu apodo en esta conversación en grupo; se han proporcionado datos no válidos."],"Topic set by %1$s":["Asunto fijado por %1$s"],"Topic cleared by %1$s":["Asunto limpiado por %1$s"],"%1$s has been banned by %2$s":["%1$s ha sido bloqueado por %2$s"],"%1$s has been banned":["%1$s ha sido bloqueado"],"%1$s\'s nickname has changed":["El apodo de %1$s ha cambiado"],"%1$s has been kicked out by %2$s":["%1$s ha sido expulsado por %2$s"],"%1$s has been kicked out":["%1$s ha sido expulsado"],"%1$s has been removed because of an affiliation change":["%1$s ha sido eliminado debido a un cambio de afiliación"],"%1$s has been removed for not being a member":["%1$s ha sido eliminado por no ser un miembro"],"%1$s is no longer an admin of this groupchat":["%1$s ya no es administrador de esta conversación en grupo"],"%1$s is no longer an owner of this groupchat":["%1$s ya no es propietario de esta conversación en grupo"],"%1$s is no longer banned from this groupchat":["%1$s ya no está bloqueado de esta conversación en grupo"],"%1$s is no longer a member of this groupchat":["%1$s ya no es miembro de esta conversación en grupo"],"%1$s is now a member of this groupchat":["%1$s es ahora miembro de esta conversación en grupo"],"%1$s is now an %2$s of this groupchat":["%1$s es ahora %2$s de esta conversación en grupo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["El apodo que elegiste está reservado o en uso actualmente, por favor, elige uno diferente."],"Password incorrect":["Contraseña incorrecta"],"You are not on the member list of this groupchat.":["No estás en la lista de miembros de esta conversación en grupo."],"You have been banned from this groupchat.":["Has sido bloqueado de esta conversación en grupo."],"You are not allowed to create new groupchats.":["No estás autorizado para crear nuevas conversación en grupo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Tu apodo no se ajusta a la normativa de esta conversación en grupo."],"This groupchat does not (yet) exist.":["Esta conversación en gurpo (aún) no existe."],"This groupchat has reached its maximum number of participants.":["Esta conversación en grupo ha alcanzado su número máximo de ocupantes."],"Remote server not found":["Servidor remoto no encontrado"],"The explanation given is: \\"%1$s\\".":["La razón dada es: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s te ha invitado a unirse a la conversación en grupo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s te ha invitado a ingresar a la conversación en grupo: %2$s, y dejó la siguiente razón: \\"%3$s\\""],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["Lo sentimos, algo salió mal mientras se trataba de guardar el marcador."],"Timeout Error":["Error de tiempo de espera"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["El servidor no devolvió tus marcadores en el tiempo establecido. Puedes recargar la página para realizar la petición de nuevo."],"My contacts":["Mis contactos"],"Pending contacts":["Contactos pendientes"],"Contact requests":["Solicitudes de contacto"],"Ungrouped":["Sin grupo"],"New messages":["Nuevos mensajes"],"Sorry, there was an error while trying to add %1$s as a contact.":["Lo sentimos, hubo un error intentando añadir a %1$s a tu lista de contactos."],"This client does not allow presence subscriptions":["Este cliente no permite las suscripciones presenciales"],"Click to hide these contacts":["Haz clic para ocultar estos contactos"],"Unbookmark this groupchat":["Quitar esta conversación en grupo de los marcadores"],"Click to open this groupchat":["Pulse para abrir esta conversación en grupo"],"Click to toggle the bookmarks list":["Haz clic para alternar la lista de marcadores"],"Bookmarks":["Marcadores"],"Bookmark this groupchat":["Guardar esta conversación en grupo en los marcadores"],"Would you like this groupchat to be automatically joined upon startup?":["¿Le gustarÃa entrar automáticamente a esta conversación en grupo al inicio?"],"The name for this bookmark:":["El nombre para este marcador:"],"What should your nickname for this groupchat be?":["¿Cual deberÃa ser su apodo para esta conversación en grupo?"],"Save":["Guardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["¿Confirma que quiere eliminar el marcador \\"%1$s\\"?"],"Unbookmark":["Eliminar de marcadores"],"Bookmark":["Añadir a marcadores"],"Close":["Cerrar"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Descargar archivo de audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Descargar archivo \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Versiones del mensaje"],"Retry":[""],"Uploading file:":["Subiendo archivo:"],"%1$s has removed this message":["%1$s ha eliminado este mensaje"],"This message has been edited":["Este mensaje ha sido editado"],"Show more":["Mostrar más"],"No message history available.":["No hay historial de mensajes disponible."],"Search results":["Resultados de la búsqueda"],"Search":["Búsqueda"],"Insert emojis":["Insertar un emoticono"],"Send the message":["Enviar el mensaje"],"Start a call":["Empezar una llamada"],"Message characters remaining":["Caracteres restantes del mensaje"],"Choose a file to send":["Elige un archivo para enviar"],"Click to write as a normal (non-spoiler) message":["Click para escribir un mensaje normal (no spoiler)"],"Click to write your message as a spoiler":["Click para escribir un mensaje de spoiler"],"The User\'s Profile Image":["Imagen de perfil del usuario"],"Trusted":["De confianza"],"Untrusted":["No es de confianza"],"OMEMO Fingerprints":["Huellas digitales OMEMO"],"No OMEMO-enabled devices found":["No se han encontrado dispositivos habilitados para OMEMO"],"Remove as contact":["Eliminar de tu lista de contactos"],"XMPP Address":["Dirección XMPP"],"Email":["Email"],"Full Name":["Nombre completo"],"Nickname":["Apodo"],"Refresh":["Actualizar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s está escribiendo"],"%1$s has stopped typing":["%1$s ha parado de escribir"],"%1$s has gone away":["%1$s se ha marchado"],"Remove messages":["Eliminar mensajes"],"Close this chat":["Cerrar esta conversación"],"Write in the third person":["Escribir en tercera persona"],"Show this menu":["Mostrar este menú"],"Hidden message":["Mensaje oculto"],"Message":["Mensaje"],"Optional hint":["Pista opcional"],"You have unread messages":["Tienes mensajes sin leer"],"Details":["Detalles"],"See more information about this person":["Mostrar más información de esta persona"],"Close and end this conversation":["Cerrar y terminar esta conversación"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tenga en cuenta que otros clientes (y servidores) de XMPP/Jabber pueden no soportar aún la funcionalidad de retractarse y que este mensaje puede no ser eliminado en todas partes."],"Are you sure you want to retract this message?":["¿Estás seguro de que quieres retractarte de este mensaje?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Se perderá el mensaje no enviado. ¿Confirmas que quieres continuar?"],"Are you sure you want to clear the messages from this conversation?":["¿Estás seguro de que quieres limpiar los mensajes de esta conversación?"],"%1$s has gone offline":["%1$s se ha desconectado"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está conectado"],"Sorry, something went wrong while trying to refresh":["Lo sentimos, algo salió mal mientras se trataba de actualizar"],"Are you sure you want to remove this contact?":["¿Estás seguro de que quieres eliminar este contacto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Lo sentimos, hubo un error mientras se trataba de eliminar a %1$s de tu lista de contactos."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para mejorar el rendimiento, guardamos tus datos en la caché del navegador. Desmarca esta opción si este es un ordenador público o si quieres que tus datos sean borrados cuando te desconectes. Es importante que cierres la sesión explÃcitamente, de lo contrario podrÃan no borrarse todos los datos almacenados en la caché. Por favor, ten en cuenta que cuando estés usando un dispositivo que no es de confianza, el cifrado OMEMO no está disponible."],"This is a trusted device":["Este es un dispositivo de confianza"],"Password":["Contraseña"],"Create an account":["Crear una cuenta"],"Don\'t have a chat account?":["¿No tienes una cuenta?"],"Log in":["Iniciar sesión"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Haz clic aquà para iniciar sesión de forma anónima"],"Username":["Nombre de usuario"],"user@domain":["usuario@dominio"],"Please enter a valid XMPP address":["Por favor, introduce una dirección XMPP válida"],"Chat Contacts":["Contactos"],"Toggle chat":["Alternar contactos"],"Click to restore this chat":["Haz clic para recuperar esta conversación"],"Minimized":["Minimizado"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar esta conversación"],"Minimize this groupchat":["Minimizar esta conversación en grupo"],"This field is required":["Este campo es requerido"],"Join":["Unirse"],"Enter a new Groupchat":["Entrar en una nueva conversación en grupo"],"name@conference.example.org":["nombre@conferencia.ejemplo.org"],"Groupchat name":["Nombre de la conversación en grupo"],"Groupchat address":["Dirección de la conversación en grupo"],"Groupchat id is invalid.":["El identificador de esta conversación es inválido."],"Invite":["Invitar"],"Invite someone to this groupchat":["Invitar a alguien a esta conversación en grupo"],"user@example.org":["usuario@ejemplo.org"],"Optional reason for the invitation":["Razón para la invitación (opcional)"],"Show groupchats":["Mostrar conversaciones en grupo"],"Server address":["Dirección del servidor"],"Show more information on this groupchat":["Mostrar más información de esta conversación en grupo"],"Query for Groupchats":["Buscar una conversación en grupo"],"Description:":["Descripción:"],"Groupchat Address (JID):":["Dirección de la conversación en grupo (JID):"],"Participants:":["Participantes:"],"Features:":["CaracterÃsticas:"],"Requires authentication":["Autenticación requerida"],"Hidden":["Oculto"],"Requires an invitation":["Requiere una invitación"],"Moderated":["Moderado"],"Non-anonymous":["No anónimo"],"Open":["Abierta"],"Permanent":["Permanente"],"Public":["Pública"],"Semi-anonymous":["Semi-anónima"],"Temporary":["Temporal"],"Unmoderated":["Sin moderar"],"conference.example.org":["conferencia.ejemplo.org"],"No groupchats found":["No se ha encontrado ninguna conversación en grupo"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Los Moderadores son usuarios privilegiados que pueden cambiar los roles de otros usuarios (excepto aquellos que son administradores o propietarios)."],"The default role, implies that you can read and write messages.":["El rol por defecto, implica que pueden leer y escribir mensajes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Los visitantes no pueden escribir mensajes en una conversación en grupo moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Propietario es la máxima afiliación. Los propietarios pueden modificar roles y afiliaciones de otros usuarios."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administrador es la segunda máxima afiliación. Los administradores pueden modificar roles y afiliaciones para todos los usuarios excepto a propietarios."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para prohibir a un usuario, debes cambiar su afiliación a \\"marginado\\"."],"Change role":["Cambiar rol"],"New Role":["Nuevo Rol"],"Reason":["Razón"],"Change affiliation":["Cambiar afiliación"],"New affiliation":["Nueva afiliación"],"Affiliation":["Afiliación"],"Moderator Tools":["Herramientas del moderador"],"No users with that affiliation found.":["No se han encontrado usuarios con esa afiliación."],"No users with that role found.":["No se encontraron usuarios con ese rol."],"Type here to filter the search results":["Escribe aquà para filtrar los resultados de la búsqueda"],"Show users":["Mostrar usuarios"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Los Roles son asignados a los usuarios para permitir o denegarles ciertas habilidades en las conversaciones en grupo. Estos son asignados explÃcitamente o implÃcitamente como parte de su afiliación. Un rol que no tiene afiliación, es solo válido mientras dure la sesión del usuario."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliación es un derecho de larga duración que normalmente implica un cierto role que otorga privilegios y responsabilidades. Por ejemplo, los administradores y los propietarios automáticamente tiene el rol de moderador."],"Sorry, something went wrong while trying to set the affiliation":["Lo sentimos, algo salió mal mientras se trataba de cambiar la afiliación"],"Affiliation changed":["Afiliación cambiada"],"Role changed":["Rol cambiado"],"You\'re not allowed to make that change":["No estás autorizado para hacer este cambio"],"Sorry, something went wrong while trying to set the role":["Lo sentimos, algo salió mal mientras se trataba de cambiar el rol"],"Topic":["Asunto"],"Topic author":["Autor del asunto"],"Groupchat address (JID)":["Dirección de la conversación en grupo (JID)"],"Message archiving":["Archivado de mensajes"],"Messages are archived on the server":["Los mensajes son archivados en el servidor"],"Description":["Descripción"],"Features":["CaracterÃsticas"],"This groupchat is not publicly searchable":["Esta conversación en grupo no es pública"],"This groupchat is restricted to members only":["Esta conversación en grupo está restringida solamente a miembros"],"Members only":["Solo miembros"],"Participants entering this groupchat need to request permission to write":["Los participantes en esta conversación en grupo necesitan pedir permiso para escribir"],"Name":["Nombre"],"This groupchat does not require a password upon entry":["Esta conversación en grupo no requiere contraseña para la entrada"],"No password required":["No se requiere contraseña"],"Not anonymous":["No anónima"],"All other groupchat participants can see your XMPP address":["Todos los participantes de la conversación pueden ver su dirección XMPP"],"Not moderated":["No moderada"],"Participants entering this groupchat can write right away":["Los participantes en esta conversación en grupo pueden escribir directamente"],"Online users":["Usuarios en lÃnea"],"Anyone can join this groupchat":["Cualquiera puede unirse a esta conversación en grupo"],"This groupchat requires a password before entry":["Esta conversación en grupo requiere una contraseña para entrar"],"Password protected":["Protegido con contraseña"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Esta conversación en grupo persiste incluso si está desocupada"],"Only moderators can see your XMPP address":["Sólo los moderadores pueden ver tu dirección XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversación en grupo desaparecerá una vez que la última persona la abandone"],"This groupchat is publicly searchable":["Esta conversación en grupo es pública"],"Groupchat info for %1$s":["Información de la conversación en grupo %1$s"],"You\'re not allowed to send messages in this room":["No tiene permitido enviar mensajes en esta sala"],"The conversation has moved. Click below to enter.":["La conversación se ha movido. Haz clic debajo para entrar."],"This groupchat no longer exists":["Esta conversación en grupo ya no existe"],"Hide the groupchat topic":["Ocultar el asunto de la conversación"],"This groupchat is bookmarked":["Esta conversación está en los marcadores"],"Enter groupchat":["Entrar en la conversación en grupo"],"Choose a nickname to enter":["Elige un alias para entrar"],"Please choose your nickname":["Por favor, elige un apodo"],"This groupchat requires a password":["Esta conversación en grupo requiere una contraseña"],"Password: ":["Contraseña: "],"Submit":["Enviar"],"This user is a moderator.":["Este usuario es un moderador."],"This user can send messages in this groupchat.":["Este usuario puede enviar mensajes en esta conversación en grupo."],"This user can NOT send messages in this groupchat.":["Este usuario NO puede enviar mensajes en esta conversación en grupo."],"Owner":["Propietario"],"Admin":["Administrador"],"Member":["Miembro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Haz clic para mencionar a %1$s en tu mensaje."],"Participants":["Participantes"],"%1$s has entered the groupchat":["%1$s ha entrado en la conversación en grupo"],"%1$s has left the groupchat":["%1$s ha dejado la conversación en grupo"],"%1$s is now a moderator":["%1$s es ahora un moderador"],"%1$s is no longer a moderator":["%1$s ya no es moderador"],"%1$s has been given a voice":["A %1$s le han permitido voz"],"%1$s has been muted":["%1$s ha sido silenciado"],"%1$s and %2$s":["%1$s y %2$s"],"%1$s are typing":["%1$s están escribiendo"],"%1$s have stopped typing":["%1$s han parado de escribir"],"%1$s have gone away":["%1$s se han marchado"],"%1$s have entered the groupchat":["%1$s han entrado en la conversación"],"%1$s have left the groupchat":["%1$s han dejado la conversación"],"Change user\'s affiliation to admin":["Cambiar la afiliación del usuario a administrador"],"Ban user by changing their affiliation to outcast":["Expulse usuarios cambiando su afiliación a \\"rechazado\\""],"Clear the chat area":["Vaciar el área de conversación"],"Close this groupchat":["Cerrar esta conversación"],"Change user role to participant":["Cambiar rol del usuario a participante"],"Remove this groupchat":["Eliminar esta conversación en grupo"],"Kick user from groupchat":["Expulsar al usuario de esta conversación en grupo"],"Write in 3rd person":["Escribir en tercera persona"],"Grant membership to a user":["Conceder membresÃa a un usuario"],"Opens up the moderator tools GUI":["Abre las herramientas del moderador"],"Remove user\'s ability to post messages":["Eliminar la posibilidad de que el usuario pueda publicar mensajes"],"Change your nickname":["Cambiar tu apodo"],"Grant moderator role to user":["Conceder rol de moderador al usuario"],"Grant ownership of this groupchat":["Conceder propiedad de esta conversación en grupo"],"Register your nickname":["Registra tu apodo"],"Revoke the user\'s current affiliation":["Revocar afiliación actual de usuario"],"Set groupchat subject":["Establecer asunto de la conversación en grupo"],"Set groupchat subject (alias for /subject)":["Establecer asunto de la conversación en grupo (equivalente a /subject)"],"Allow muted user to post messages":["Permitir a usuario silenciado publicar mensajes"],"You are about to retract this message.":["Estás a punto de retractarte de este mensaje."],"You may optionally include a message, explaining the reason for the retraction.":["Opcionalmente, puedes incluir un mensaje explicando el motivo de la retractación."],"Message Retraction":["Retractación del mensaje"],"Optional reason":["Razón (opcional)"],"Sorry, you\'re not allowed to retract this message":["Lo sentimos, no tienes permisos para retractarte de este mensaje."],"A timeout occurred while trying to retract the message":["Se produjo un error de tiempo excedido mientras se intentaba retractar el mensaje"],"Sorry, you\'re not allowed to retract this message.":["Lo sentimos, no tienes permisos para retractarte de este mensaje."],"Show more information about this groupchat":["Mostrar más información de esta conversación"],"Configure":["Configurar"],"Configure this groupchat":["Configurar esta conversación en grupo"],"Invite someone to join this groupchat":["Invitar a algiuen para que se una a esta conversación en grupo"],"Show topic":["Mostrar asunto"],"Hide topic":["Ocultar asunto"],"Show the topic message in the heading":["Muestra el asunto del mensaje en la cabecera"],"Hide the topic in the heading":["Ocultar el asunto en la cabecera"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar esta conversación en grupo"],"Destroy":["Destruir"],"Leave":["Salir"],"Leave and close this groupchat":["Salir y cerrar esta conversación"],"Are you sure you want to leave this groupchat?":["¿Confirmas que quieres abandonar esta conversación en grupo?"],"Hide the list of participants":["Ocultar la lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibido: no tienes el rol necesario para hacer eso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibido: no tienes la afiliación necesaria para hacer eso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error: el comando \\"%1$s\\" toma dos argumentos, el apodo del usuario y la razón de forma opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error: no se encontró ningún participante en la conversación en grupo según sus argumentos"],"Error: found multiple groupchat participant based on your arguments":["Error: se encontraron varios participantes en la conversación en grupo según sus argumentos"],"Sorry, an error happened while running the command.":["Lo sentimos, algo salió mal mientras se ejecutaba el comando."],"Check your browser\'s developer console for details.":["Comprueba la consola de desarrollador del navegador para más detalles."],"Are you sure you want to destroy this groupchat?":["¿Confirmas que quieres destruir esta conversación en grupo?"],"name@example.org":["usuario@ejemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Tu apodo es \\"%1$s\\""],"Error: invalid number of arguments":["Error: número de argumentos inválido"],"This action was done by %1$s.":["Esta acción fue hecha por %1$s."],"The reason given is: \\"%1$s\\".":["La razón dada es: %1$s."],"Groupchats":["Conversaciones en grupo"],"Add a new groupchat":["Añadir nueva conversación en grupo"],"Query for groupchats":["Búsqueda de conversaciones en grupo"],"Sorry, an error occurred while trying to submit the config form.":["Lo sentimos, ocurrió un error mientras se intentaba enviar el formulario de configuración."],"Close these announcements":["Cerrar estos anuncios"],"Announcements":["Anuncios"],"Click to open this server message":["Pulsa para abrir este mensaje del servidor"],"Notification from %1$s":["Notificación de %1$s"],"%1$s says":["%1$s dice"],"has gone offline":["se ha desconectado"],"has gone away":["se ha marchado"],"is busy":["está ocupado"],"has come online":["se ha conectado"],"wants to be your contact":["quiere añadirte a su lista de contactos"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Acerca de"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Software Libre %2$s Cliente de mensajerÃa XMPP traÃdo para ti por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduce %2$s en tu propio idioma"],"Log out":["Desconectarse"],"Click to change your chat status":["Haz clic para cambiar tu estado"],"Show details about this chat client":["Mostrar más detalles sobre este cliente de mensajerÃa"],"Your avatar image":["Tu imagen de perfil"],"Checkbox for selecting the following fingerprint":["Casilla para seleccionar las siguientes huellas digitales"],"Device without a fingerprint":["Dispositivo sin huella digital"],"Other OMEMO-enabled devices":["Otros dispositivos habilitados para OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Casilla para seleccionar las huellas digitales de otros dispositivos OMEMO"],"Remove checked devices and close":["Eliminar los dispositivos seleccionados y cerrar"],"Select all":["Seleccionar todo"],"This device\'s OMEMO fingerprint":["Huella digital OMEMO de este dispositivo"],"Generate new keys and fingerprint":["Generar nuevas claves y huella digital"],"Your Profile":["Tu Perfil"],"XMPP Address (JID)":["Dirección XMPP (JID)"],"Save and close":["Guardar y cerrar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Usa comas para separar múltiples roles. Tus roles se muestran junto a tu nombre en tus mensajes."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Lo sentimos, algo salió mal mientras se trataba de guardar tus datos de perfil."],"You can check your browser\'s developer console for any error output.":["Puedes comprobar cualquier error en la consola de desarrollador del navegador."],"Away":["Ausente"],"Busy":["Ocupado"],"Custom status":["Estado personalizado"],"Offline":["Desconectado"],"Online":["En lÃnea"],"Away for long":["Ausente por mucho tiempo"],"Change chat status":["Cambiar tu estado"],"Personal status message":["Mensaje personal de estado"],"I am %1$s":["Estoy %1$s"],"Are you sure you want to log out?":["¿Estás seguro de que quieres salir?"],"online":["en lÃnea"],"busy":["ocupado"],"away for long":["ausente por mucho tiempo"],"away":["ausente"],"offline":["desconectado"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Lo sentimos, no se puede descifrar un mensaje OMEMO recibido debido a un error."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s no parece tener un cliente que soporte OMEMO. El cifrado ya no será posible en esta conversación en grupo."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["No se puede usar cifrado punto a punto porque %1$s usa un cliente que no soporta OMEMO."],"Messages are being sent in plaintext":["Los mensajes se envÃan en texto plano"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Lo sentimos, ocurrió un error mientras se eliminaban los dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["¿Estás seguro que quieres generar nuevas claves OMEMO? Esto eliminará tus antiguas claves y todos los mensajes previamente cifrados no serán legibles en este dispositivo."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Lo sentimos, no se puede enviar el mensaje cifrado porque %1$s requiere que estés suscrito a sus actualizaciones de presencia para ver su información OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Lo sentimos, no se puede enviar el mensaje cifrado porque el servidor remoto para %1$s no se ha encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Lo sentimos, no se puede enviar el mensaje debido a un error."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["No se encontró ningún dispositivo compatible con mensajes cifrados de OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esto es un mensaje cifrado con OMEMO el cual tu cliente parece no soportar. Encuentra más información en https://conversations.im/omemo"]," e.g. conversejs.org":[" ej. conversejs.org"],"Fetch registration form":["Recuperar formulario de registro"],"Tip: A list of public XMPP providers is available":["Consejo: Hay una lista de proveedores públicos de XMPP disponible"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Lo sentimos, no hemos podido conectarnos con tu proveedor elegido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Lo sentimos, el proveedor dado no soporta registro de cuentas. Por favor, inténtalo con otro proveedor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo salió mal mientras se establecÃa la conexión con \\"%1$s\\". ¿Estás seguro de que existe?"],"Now logging you in":["Iniciando ahora"],"Registered successfully":["Registrado exitosamente"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["El proveedor rechazó tu intento de registro. Por favor, revisa que los valores que ingresaste sean correctos."],"Leave this groupchat":["Salir de esta conversación en grupo"],"Click to toggle the list of open groupchats":["Haz clic para alternar la lista de conversaciones en grupo"],"Open Groupchats":["Conversaciones en grupo abiertas"],"Are you sure you want to leave the groupchat %1$s?":["¿Confirmas que quieres abandonar la conversación en grupo %1$s?"],"Add":["Añadir"],"Add a Contact":["Agregar un contacto"],"This contact is busy":["Este contacto está ocupado"],"This contact is online":["Este contacto está en lÃnea"],"This contact is offline":["Este contacto está desconectado"],"This contact is unavailable":["Este contacto no está disponible"],"This contact is away for an extended period":["Este contacto está ausente por un largo periodo de tiempo"],"This contact is away":["Este contacto está ausente"],"Contact name":["Nombre de contacto"],"Optional nickname":["Apodo opcional"],"Sorry, could not find a contact with that name":["Lo sentimos. no se pudo encontrar ningún contacto con ese nombre"],"This contact has already been added":["Este contacto ya ha sido añadido"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar por nombre de contacto"],"Filter by group name":["Filtrar por nombre de grupo"],"Filter by status":["Filtrar por estado"],"Any":["Cualquier"],"Unread":["Sin leer"],"Chatty":["Hablador"],"Extended Away":["Ausencia extendida"],"Click to remove %1$s as a contact":["Haz clic para eliminar a %1$s de tu lista de contactos"],"Click to accept the contact request from %1$s":["Haz clic para aceptar la solicitud de contacto %1$s"],"Click to decline the contact request from %1$s":["Haz clic para rechazar la solicitud de contacto %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Haz clic para conversar con %1$s (Dirección XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["¿Estás seguro de que quieres rechazar esta solicitud de contacto?"],"Contacts":["Contactos"],"Add a contact":["Agregar un contacto"],"Re-sync your contacts":["Re-sincronizar tus contactos"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[149],{515:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"es"},"Create your account":["Crea tu cuenta"],"Please enter the XMPP provider to register with:":["Por favor, introduce el proveedor de XMPP para registrarse:"],"Already have a chat account?":["¿Ya tienes una cuenta?"],"Log in here":["Inicia sesión aquÃ"],"Account Registration:":["Registro de cuenta:"],"Register":["Registrar"],"Choose a different provider":["Elige un proveedor diferente"],"Hold tight, we\'re fetching the registration form…":["Espera, estamos recuperando el formulario de registro…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["La conexión se ha perdido, intentando reconectar."],"An error occurred while connecting to the chat server.":["Ocurrió un error mientras se conectaba al servidor de chat."],"Your XMPP address and/or password is incorrect. Please try again.":["Tu dirección XMPP y/o tu contraseña no es correcta. Por favor, inténtalo de nuevo."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Lo sentimos, no pudimos conectarnos al servidor XMPP con el dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["El servidor XMPP no ofreció un mecanismo de autenticación soportado"],"Sorry, could not determine upload URL.":["Lo sentimos, no se ha podido determinar la URL de subida."],"Sorry, could not determine file upload URL.":["Lo sentimos, no se pudo determinar la URL de subida de archivos."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Lo sentimos, no se ha podido subir el archivo con éxito. La respuesta de tu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Lo sentimos, no se ha podido subir el archivo con éxito."],"Sorry, looks like file upload is not supported by your server.":["Lo sentimos, parece que tu servidor no soporta la subida de archivos."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["El tamaño del archivo, %1$s, excede el máximo permitido por tu servidor, que es %2$s."],"Smileys and emotions":["Smileys y emoticonos"],"People":["Personas"],"Activities":["Actividades"],"Travel":["Viajes"],"Objects":["Objectos"],"Animals and nature":["Animales y naturaleza"],"Food and drink":["Comida y bebida"],"Symbols":["SÃmbolos"],"Flags":["Banderas"],"Stickers":["Stickers"],"This groupchat is not anonymous":["Esta conversación en grupo no es anónima"],"This groupchat now shows unavailable members":["Esta conversación en grupo ahora muestra los miembros no disponibles"],"This groupchat does not show unavailable members":["Esta conversación en grupo no muestra los miembros no disponibles"],"The groupchat configuration has changed":["La configuración de la conversación en grupo ha cambiado"],"Groupchat logging is now enabled":["El registro de la conversación en grupo está ahora activado"],"Groupchat logging is now disabled":["El registro de la conversación en grupo está ahora desactivado"],"This groupchat is now no longer anonymous":["Esta conversación en grupo ya no es anónima"],"This groupchat is now semi-anonymous":["Esta conversación en grupo es ahora semi-anónima"],"This groupchat is now fully-anonymous":["Esta conversación en grupo es ahora completamente anónima"],"A new groupchat has been created":["Se ha creado una nueva conversación en grupo"],"Your nickname has been automatically set to %1$s":["Tu apodo ha sido establecido automáticamente como %1$s"],"Your nickname has been changed to %1$s":["Tu apodo ha sido cambiado a %1$s"],"You have been banned from this groupchat":["Has sido bloqueado de esta conversación en grupo"],"You have been kicked from this groupchat":["Has sido expulsado de esta conversación en grupo"],"You have been removed from this groupchat because of an affiliation change":["Has sido eliminado de esta conversación en gurpo debido a un cambio de afiliación"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Has sido eliminado de esta conversación en grupo debido a que la conversación cambió su configuración a solo miembros y tú no eres miembro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Has sido eliminado de esta conversación en grupo debido a que el servicio está apagándose"],"Your message was not delivered because you weren\'t allowed to send it.":["Tu mensaje no fue enviado porque no tienes permitido enviar mensajes."],"Your message was not delivered because you\'re not present in the groupchat.":["No se entregó tu mensaje porque no estás presente en la conversación en grupo."],"You\'re not allowed to register yourself in this groupchat.":["No se te permite ingresar en esta conversación en grupo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["No se te permite ingresar en esta conversación en grupo dado que es solo para miembros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["No puede registrar tu apodo en esta conversación en grupo; no admite registros."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["No puedes registrar tu apodo en esta conversación en grupo; se han proporcionado datos no válidos."],"Topic set by %1$s":["Asunto fijado por %1$s"],"Topic cleared by %1$s":["Asunto limpiado por %1$s"],"%1$s has been banned by %2$s":["%1$s ha sido bloqueado por %2$s"],"%1$s has been banned":["%1$s ha sido bloqueado"],"%1$s\'s nickname has changed":["El apodo de %1$s ha cambiado"],"%1$s has been kicked out by %2$s":["%1$s ha sido expulsado por %2$s"],"%1$s has been kicked out":["%1$s ha sido expulsado"],"%1$s has been removed because of an affiliation change":["%1$s ha sido eliminado debido a un cambio de afiliación"],"%1$s has been removed for not being a member":["%1$s ha sido eliminado por no ser un miembro"],"%1$s is no longer an admin of this groupchat":["%1$s ya no es administrador de esta conversación en grupo"],"%1$s is no longer an owner of this groupchat":["%1$s ya no es propietario de esta conversación en grupo"],"%1$s is no longer banned from this groupchat":["%1$s ya no está bloqueado de esta conversación en grupo"],"%1$s is no longer a member of this groupchat":["%1$s ya no es miembro de esta conversación en grupo"],"%1$s is now a member of this groupchat":["%1$s es ahora miembro de esta conversación en grupo"],"%1$s is now an %2$s of this groupchat":["%1$s es ahora %2$s de esta conversación en grupo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["El apodo que elegiste está reservado o en uso actualmente, por favor, elige uno diferente."],"Password incorrect":["Contraseña incorrecta"],"You are not on the member list of this groupchat.":["No estás en la lista de miembros de esta conversación en grupo."],"You have been banned from this groupchat.":["Has sido bloqueado de esta conversación en grupo."],"You are not allowed to create new groupchats.":["No estás autorizado para crear nuevas conversación en grupo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Tu apodo no se ajusta a la normativa de esta conversación en grupo."],"This groupchat does not (yet) exist.":["Esta conversación en gurpo (aún) no existe."],"This groupchat has reached its maximum number of participants.":["Esta conversación en grupo ha alcanzado su número máximo de ocupantes."],"Remote server not found":["Servidor remoto no encontrado"],"The explanation given is: \\"%1$s\\".":["La razón dada es: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s te ha invitado a unirse a la conversación en grupo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s te ha invitado a ingresar a la conversación en grupo: %2$s, y dejó la siguiente razón: \\"%3$s\\""],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["Lo sentimos, algo salió mal mientras se trataba de guardar el marcador."],"Timeout Error":["Error de tiempo de espera"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["El servidor no devolvió tus marcadores en el tiempo establecido. Puedes recargar la página para realizar la petición de nuevo."],"My contacts":["Mis contactos"],"Pending contacts":["Contactos pendientes"],"Contact requests":["Solicitudes de contacto"],"Ungrouped":["Sin grupo"],"New messages":["Nuevos mensajes"],"Sorry, there was an error while trying to add %1$s as a contact.":["Lo sentimos, hubo un error intentando añadir a %1$s a tu lista de contactos."],"This client does not allow presence subscriptions":["Este cliente no permite las suscripciones presenciales"],"Click to hide these contacts":["Haz clic para ocultar estos contactos"],"Unbookmark this groupchat":["Quitar esta conversación en grupo de los marcadores"],"Click to open this groupchat":["Pulse para abrir esta conversación en grupo"],"Click to toggle the bookmarks list":["Haz clic para alternar la lista de marcadores"],"Bookmarks":["Marcadores"],"Bookmark this groupchat":["Guardar esta conversación en grupo en los marcadores"],"Would you like this groupchat to be automatically joined upon startup?":["¿Le gustarÃa entrar automáticamente a esta conversación en grupo al inicio?"],"The name for this bookmark:":["El nombre para este marcador:"],"What should your nickname for this groupchat be?":["¿Cual deberÃa ser su apodo para esta conversación en grupo?"],"Save":["Guardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["¿Confirma que quiere eliminar el marcador \\"%1$s\\"?"],"Unbookmark":["Eliminar de marcadores"],"Bookmark":["Añadir a marcadores"],"Close":["Cerrar"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Descargar archivo de audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Descargar archivo \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Versiones del mensaje"],"Retry":[""],"Uploading file:":["Subiendo archivo:"],"%1$s has removed this message":["%1$s ha eliminado este mensaje"],"This message has been edited":["Este mensaje ha sido editado"],"Show more":["Mostrar más"],"No message history available.":["No hay historial de mensajes disponible."],"Search results":["Resultados de la búsqueda"],"Search":["Búsqueda"],"Insert emojis":["Insertar un emoticono"],"Send the message":["Enviar el mensaje"],"Start a call":["Empezar una llamada"],"Message characters remaining":["Caracteres restantes del mensaje"],"Choose a file to send":["Elige un archivo para enviar"],"Click to write as a normal (non-spoiler) message":["Click para escribir un mensaje normal (no spoiler)"],"Click to write your message as a spoiler":["Click para escribir un mensaje de spoiler"],"The User\'s Profile Image":["Imagen de perfil del usuario"],"Trusted":["De confianza"],"Untrusted":["No es de confianza"],"OMEMO Fingerprints":["Huellas digitales OMEMO"],"No OMEMO-enabled devices found":["No se han encontrado dispositivos habilitados para OMEMO"],"Remove as contact":["Eliminar de tu lista de contactos"],"XMPP Address":["Dirección XMPP"],"Email":["Correo electrónico"],"Full Name":["Nombre completo"],"Nickname":["Apodo"],"Refresh":["Actualizar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s está escribiendo"],"%1$s has stopped typing":["%1$s ha parado de escribir"],"%1$s has gone away":["%1$s se ha marchado"],"Remove messages":["Eliminar mensajes"],"Close this chat":["Cerrar esta conversación"],"Write in the third person":["Escribir en tercera persona"],"Show this menu":["Mostrar este menú"],"Hidden message":["Mensaje oculto"],"Message":["Mensaje"],"Optional hint":["Pista opcional"],"You have unread messages":["Tienes mensajes sin leer"],"Details":["Detalles"],"See more information about this person":["Mostrar más información de esta persona"],"Close and end this conversation":["Cerrar y terminar esta conversación"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tenga en cuenta que otros clientes (y servidores) de XMPP/Jabber pueden no soportar aún la funcionalidad de retractarse y que este mensaje puede no ser eliminado en todas partes."],"Are you sure you want to retract this message?":["¿Estás seguro de que quieres retractarte de este mensaje?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Se perderá el mensaje no enviado. ¿Confirmas que quieres continuar?"],"Are you sure you want to clear the messages from this conversation?":["¿Estás seguro de que quieres limpiar los mensajes de esta conversación?"],"%1$s has gone offline":["%1$s se ha desconectado"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está conectado"],"Sorry, something went wrong while trying to refresh":["Lo sentimos, algo salió mal mientras se trataba de actualizar"],"Are you sure you want to remove this contact?":["¿Estás seguro de que quieres eliminar este contacto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Lo sentimos, hubo un error mientras se trataba de eliminar a %1$s de tu lista de contactos."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para mejorar el rendimiento, guardamos tus datos en la caché del navegador. Desmarca esta opción si este es un ordenador público o si quieres que tus datos sean borrados cuando te desconectes. Es importante que cierres la sesión explÃcitamente, de lo contrario podrÃan no borrarse todos los datos almacenados en la caché. Por favor, ten en cuenta que cuando estés usando un dispositivo que no es de confianza, el cifrado OMEMO no está disponible."],"This is a trusted device":["Este es un dispositivo de confianza"],"Password":["Contraseña"],"Create an account":["Crear una cuenta"],"Don\'t have a chat account?":["¿No tienes una cuenta?"],"Log in":["Iniciar sesión"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Haz clic aquà para iniciar sesión de forma anónima"],"Username":["Nombre de usuario"],"user@domain":["usuario@dominio"],"Please enter a valid XMPP address":["Por favor, introduce una dirección XMPP válida"],"Chat Contacts":["Contactos"],"Toggle chat":["Alternar contactos"],"Click to restore this chat":["Haz clic para recuperar esta conversación"],"Minimized":["Minimizado"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar esta conversación"],"Minimize this groupchat":["Minimizar esta conversación en grupo"],"This user is a moderator.":["Este usuario es un moderador."],"This user can send messages in this groupchat.":["Este usuario puede enviar mensajes en esta conversación en grupo."],"This user can NOT send messages in this groupchat.":["Este usuario NO puede enviar mensajes en esta conversación en grupo."],"Owner":["Propietario"],"Admin":["Administrador"],"Member":["Miembro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Haz clic para mencionar a %1$s en tu mensaje."],"Participants":["Participantes"],"This field is required":["Este campo es requerido"],"Join":["Unirse"],"Enter a new Groupchat":["Entrar en una nueva conversación en grupo"],"name@conference.example.org":["nombre@conferencia.ejemplo.org"],"Groupchat name":["Nombre de la conversación en grupo"],"Groupchat address":["Dirección de la conversación en grupo"],"Groupchat id is invalid.":["El identificador de esta conversación es inválido."],"Invite":["Invitar"],"Invite someone to this groupchat":["Invitar a alguien a esta conversación en grupo"],"user@example.org":["usuario@ejemplo.org"],"Optional reason for the invitation":["Razón para la invitación (opcional)"],"Show groupchats":["Mostrar conversaciones en grupo"],"Server address":["Dirección del servidor"],"Show more information on this groupchat":["Mostrar más información de esta conversación en grupo"],"Query for Groupchats":["Buscar una conversación en grupo"],"Description:":["Descripción:"],"Groupchat Address (JID):":["Dirección de la conversación en grupo (JID):"],"Participants:":["Participantes:"],"Features:":["CaracterÃsticas:"],"Requires authentication":["Autenticación requerida"],"Hidden":["Oculto"],"Requires an invitation":["Requiere una invitación"],"Moderated":["Moderado"],"Non-anonymous":["No anónimo"],"Open":["Abierta"],"Permanent":["Permanente"],"Public":["Pública"],"Semi-anonymous":["Semi-anónima"],"Temporary":["Temporal"],"Unmoderated":["Sin moderar"],"conference.example.org":["conferencia.ejemplo.org"],"No groupchats found":["No se ha encontrado ninguna conversación en grupo"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Los Moderadores son usuarios privilegiados que pueden cambiar los roles de otros usuarios (excepto aquellos que son administradores o propietarios)."],"The default role, implies that you can read and write messages.":["El rol por defecto, implica que pueden leer y escribir mensajes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Los visitantes no pueden escribir mensajes en una conversación en grupo moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Propietario es la máxima afiliación. Los propietarios pueden modificar roles y afiliaciones de otros usuarios."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administrador es la segunda máxima afiliación. Los administradores pueden modificar roles y afiliaciones para todos los usuarios excepto a propietarios."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para prohibir a un usuario, debes cambiar su afiliación a \\"marginado\\"."],"Change role":["Cambiar rol"],"New Role":["Nuevo Rol"],"Reason":["Razón"],"Change affiliation":["Cambiar afiliación"],"New affiliation":["Nueva afiliación"],"Affiliation":["Afiliación"],"Moderator Tools":["Herramientas del moderador"],"No users with that affiliation found.":["No se han encontrado usuarios con esa afiliación."],"No users with that role found.":["No se encontraron usuarios con ese rol."],"Type here to filter the search results":["Escribe aquà para filtrar los resultados de la búsqueda"],"Show users":["Mostrar usuarios"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Los Roles son asignados a los usuarios para permitir o denegarles ciertas habilidades en las conversaciones en grupo. Estos son asignados explÃcitamente o implÃcitamente como parte de su afiliación. Un rol que no tiene afiliación, es solo válido mientras dure la sesión del usuario."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliación es un derecho de larga duración que normalmente implica un cierto role que otorga privilegios y responsabilidades. Por ejemplo, los administradores y los propietarios automáticamente tiene el rol de moderador."],"Sorry, something went wrong while trying to set the affiliation":["Lo sentimos, algo salió mal mientras se trataba de cambiar la afiliación"],"Affiliation changed":["Afiliación cambiada"],"Role changed":["Rol cambiado"],"You\'re not allowed to make that change":["No estás autorizado para hacer este cambio"],"Sorry, something went wrong while trying to set the role":["Lo sentimos, algo salió mal mientras se trataba de cambiar el rol"],"Topic":["Asunto"],"Topic author":["Autor del asunto"],"Groupchat address (JID)":["Dirección de la conversación en grupo (JID)"],"Message archiving":["Archivado de mensajes"],"Messages are archived on the server":["Los mensajes son archivados en el servidor"],"Description":["Descripción"],"Features":["CaracterÃsticas"],"This groupchat is not publicly searchable":["Esta conversación en grupo no es pública"],"This groupchat is restricted to members only":["Esta conversación en grupo está restringida solamente a miembros"],"Members only":["Solo miembros"],"Participants entering this groupchat need to request permission to write":["Los participantes en esta conversación en grupo necesitan pedir permiso para escribir"],"Name":["Nombre"],"This groupchat does not require a password upon entry":["Esta conversación en grupo no requiere contraseña para la entrada"],"No password required":["No se requiere contraseña"],"Not anonymous":["No anónima"],"All other groupchat participants can see your XMPP address":["Todos los participantes de la conversación pueden ver su dirección XMPP"],"Not moderated":["No moderada"],"Participants entering this groupchat can write right away":["Los participantes en esta conversación en grupo pueden escribir directamente"],"Online users":["Usuarios en lÃnea"],"Anyone can join this groupchat":["Cualquiera puede unirse a esta conversación en grupo"],"This groupchat requires a password before entry":["Esta conversación en grupo requiere una contraseña para entrar"],"Password protected":["Protegido con contraseña"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Esta conversación en grupo persiste incluso si está desocupada"],"Only moderators can see your XMPP address":["Sólo los moderadores pueden ver tu dirección XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversación en grupo desaparecerá una vez que la última persona la abandone"],"This groupchat is publicly searchable":["Esta conversación en grupo es pública"],"Groupchat info for %1$s":["Información de la conversación en grupo %1$s"],"You\'re not allowed to send messages in this room":["No tiene permitido enviar mensajes en esta sala"],"The conversation has moved. Click below to enter.":["La conversación se ha movido. Haz clic debajo para entrar."],"This groupchat no longer exists":["Esta conversación en grupo ya no existe"],"Hide the groupchat topic":["Ocultar el asunto de la conversación"],"This groupchat is bookmarked":["Esta conversación está en los marcadores"],"Enter groupchat":["Entrar en la conversación en grupo"],"Choose a nickname to enter":["Elige un alias para entrar"],"Please choose your nickname":["Por favor, elige un apodo"],"This groupchat requires a password":["Esta conversación en grupo requiere una contraseña"],"Password: ":["Contraseña: "],"Submit":["Enviar"],"%1$s has entered the groupchat":["%1$s ha entrado en la conversación en grupo"],"%1$s has left the groupchat":["%1$s ha dejado la conversación en grupo"],"%1$s is now a moderator":["%1$s es ahora un moderador"],"%1$s is no longer a moderator":["%1$s ya no es moderador"],"%1$s has been given a voice":["A %1$s le han permitido voz"],"%1$s has been muted":["%1$s ha sido silenciado"],"%1$s and %2$s":["%1$s y %2$s"],"%1$s are typing":["%1$s están escribiendo"],"%1$s have stopped typing":["%1$s han parado de escribir"],"%1$s have gone away":["%1$s se han marchado"],"%1$s have entered the groupchat":["%1$s han entrado en la conversación"],"%1$s have left the groupchat":["%1$s han dejado la conversación"],"Change user\'s affiliation to admin":["Cambiar la afiliación del usuario a administrador"],"Ban user by changing their affiliation to outcast":["Expulse usuarios cambiando su afiliación a \\"rechazado\\""],"Clear the chat area":["Vaciar el área de conversación"],"Close this groupchat":["Cerrar esta conversación"],"Change user role to participant":["Cambiar rol del usuario a participante"],"Remove this groupchat":["Eliminar esta conversación en grupo"],"Kick user from groupchat":["Expulsar al usuario de esta conversación en grupo"],"Write in 3rd person":["Escribir en tercera persona"],"Grant membership to a user":["Conceder membresÃa a un usuario"],"Opens up the moderator tools GUI":["Abre las herramientas del moderador"],"Remove user\'s ability to post messages":["Eliminar la posibilidad de que el usuario pueda publicar mensajes"],"Change your nickname":["Cambiar tu apodo"],"Grant moderator role to user":["Conceder rol de moderador al usuario"],"Grant ownership of this groupchat":["Conceder propiedad de esta conversación en grupo"],"Register your nickname":["Registra tu apodo"],"Revoke the user\'s current affiliation":["Revocar afiliación actual de usuario"],"Set groupchat subject":["Establecer asunto de la conversación en grupo"],"Set groupchat subject (alias for /subject)":["Establecer asunto de la conversación en grupo (equivalente a /subject)"],"Allow muted user to post messages":["Permitir a usuario silenciado publicar mensajes"],"You are about to retract this message.":["Estás a punto de retractarte de este mensaje."],"You may optionally include a message, explaining the reason for the retraction.":["Opcionalmente, puedes incluir un mensaje explicando el motivo de la retractación."],"Message Retraction":["Retractación del mensaje"],"Optional reason":["Razón (opcional)"],"Sorry, you\'re not allowed to retract this message":["Lo sentimos, no tienes permisos para retractarte de este mensaje."],"A timeout occurred while trying to retract the message":["Se produjo un error de tiempo excedido mientras se intentaba retractar el mensaje"],"Sorry, you\'re not allowed to retract this message.":["Lo sentimos, no tienes permisos para retractarte de este mensaje."],"Show more information about this groupchat":["Mostrar más información de esta conversación"],"Configure":["Configurar"],"Configure this groupchat":["Configurar esta conversación en grupo"],"Invite someone to join this groupchat":["Invitar a algiuen para que se una a esta conversación en grupo"],"Show topic":["Mostrar asunto"],"Hide topic":["Ocultar asunto"],"Show the topic message in the heading":["Muestra el asunto del mensaje en la cabecera"],"Hide the topic in the heading":["Ocultar el asunto en la cabecera"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar esta conversación en grupo"],"Destroy":["Destruir"],"Leave":["Salir"],"Leave and close this groupchat":["Salir y cerrar esta conversación"],"Are you sure you want to leave this groupchat?":["¿Confirmas que quieres abandonar esta conversación en grupo?"],"Hide the list of participants":["Ocultar la lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibido: no tienes el rol necesario para hacer eso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibido: no tienes la afiliación necesaria para hacer eso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error: el comando \\"%1$s\\" toma dos argumentos, el apodo del usuario y la razón de forma opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error: no se encontró ningún participante en la conversación en grupo según sus argumentos"],"Error: found multiple groupchat participant based on your arguments":["Error: se encontraron varios participantes en la conversación en grupo según sus argumentos"],"Sorry, an error happened while running the command.":["Lo sentimos, algo salió mal mientras se ejecutaba el comando."],"Check your browser\'s developer console for details.":["Comprueba la consola de desarrollador del navegador para más detalles."],"Are you sure you want to destroy this groupchat?":["¿Confirmas que quieres destruir esta conversación en grupo?"],"name@example.org":["usuario@ejemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Tu apodo es \\"%1$s\\""],"Error: invalid number of arguments":["Error: número de argumentos inválido"],"This action was done by %1$s.":["Esta acción fue hecha por %1$s."],"The reason given is: \\"%1$s\\".":["La razón dada es: %1$s."],"Groupchats":["Conversaciones en grupo"],"Add a new groupchat":["Añadir nueva conversación en grupo"],"Query for groupchats":["Búsqueda de conversaciones en grupo"],"Sorry, an error occurred while trying to submit the config form.":["Lo sentimos, ocurrió un error mientras se intentaba enviar el formulario de configuración."],"Close these announcements":["Cerrar estos anuncios"],"Announcements":["Anuncios"],"Click to open this server message":["Pulsa para abrir este mensaje del servidor"],"Notification from %1$s":["Notificación de %1$s"],"%1$s says":["%1$s dice"],"has gone offline":["se ha desconectado"],"has gone away":["se ha marchado"],"is busy":["está ocupado"],"has come online":["se ha conectado"],"wants to be your contact":["quiere añadirte a su lista de contactos"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Acerca de"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Software Libre %2$s Cliente de mensajerÃa XMPP traÃdo para ti por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduce %2$s en tu propio idioma"],"Log out":["Desconectarse"],"Click to change your chat status":["Haz clic para cambiar tu estado"],"Show details about this chat client":["Mostrar más detalles sobre este cliente de mensajerÃa"],"Your avatar image":["Tu imagen de perfil"],"Checkbox for selecting the following fingerprint":["Casilla para seleccionar las siguientes huellas digitales"],"Device without a fingerprint":["Dispositivo sin huella digital"],"Other OMEMO-enabled devices":["Otros dispositivos habilitados para OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Casilla para seleccionar las huellas digitales de otros dispositivos OMEMO"],"Remove checked devices and close":["Eliminar los dispositivos seleccionados y cerrar"],"Select all":["Seleccionar todo"],"This device\'s OMEMO fingerprint":["Huella digital OMEMO de este dispositivo"],"Generate new keys and fingerprint":["Generar nuevas claves y huella digital"],"Your Profile":["Tu Perfil"],"XMPP Address (JID)":["Dirección XMPP (JID)"],"Save and close":["Guardar y cerrar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Usa comas para separar múltiples roles. Tus roles se muestran junto a tu nombre en tus mensajes."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Lo sentimos, algo salió mal mientras se trataba de guardar tus datos de perfil."],"You can check your browser\'s developer console for any error output.":["Puedes comprobar cualquier error en la consola de desarrollador del navegador."],"Away":["Ausente"],"Busy":["Ocupado"],"Custom status":["Estado personalizado"],"Offline":["Desconectado"],"Online":["En lÃnea"],"Away for long":["Ausente por mucho tiempo"],"Change chat status":["Cambiar tu estado"],"Personal status message":["Mensaje personal de estado"],"I am %1$s":["Estoy %1$s"],"Are you sure you want to log out?":["¿Estás seguro de que quieres salir?"],"online":["en lÃnea"],"busy":["ocupado"],"away for long":["ausente por mucho tiempo"],"away":["ausente"],"offline":["desconectado"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Lo sentimos, no se puede descifrar un mensaje OMEMO recibido debido a un error."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s no parece tener un cliente que soporte OMEMO. El cifrado ya no será posible en esta conversación en grupo."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["No se puede usar cifrado punto a punto porque %1$s usa un cliente que no soporta OMEMO."],"Messages are being sent in plaintext":["Los mensajes se envÃan en texto plano"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Lo sentimos, no se puede enviar el mensaje cifrado porque %1$s requiere que estés suscrito a sus actualizaciones de presencia para ver su información OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Lo sentimos, no se puede enviar el mensaje cifrado porque el servidor remoto para %1$s no se ha encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Lo sentimos, no se puede enviar el mensaje debido a un error."],"Sorry, an error occurred while trying to remove the devices.":["Lo sentimos, ocurrió un error mientras se eliminaban los dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["¿Estás seguro que quieres generar nuevas claves OMEMO? Esto eliminará tus antiguas claves y todos los mensajes previamente cifrados no serán legibles en este dispositivo."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["No se encontró ningún dispositivo compatible con mensajes cifrados de OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esto es un mensaje cifrado con OMEMO el cual tu cliente parece no soportar. Encuentra más información en https://conversations.im/omemo"]," e.g. conversejs.org":[" ej. conversejs.org"],"Fetch registration form":["Recuperar formulario de registro"],"Tip: A list of public XMPP providers is available":["Consejo: Hay una lista de proveedores públicos de XMPP disponible"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Lo sentimos, no hemos podido conectarnos con tu proveedor elegido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Lo sentimos, el proveedor dado no soporta registro de cuentas. Por favor, inténtalo con otro proveedor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo salió mal mientras se establecÃa la conexión con \\"%1$s\\". ¿Estás seguro de que existe?"],"Now logging you in":["Iniciando ahora"],"Registered successfully":["Registrado exitosamente"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["El proveedor rechazó tu intento de registro. Por favor, revisa que los valores que ingresaste sean correctos."],"Leave this groupchat":["Salir de esta conversación en grupo"],"Click to toggle the list of open groupchats":["Haz clic para alternar la lista de conversaciones en grupo"],"Open Groupchats":["Conversaciones en grupo abiertas"],"Are you sure you want to leave the groupchat %1$s?":["¿Confirmas que quieres abandonar la conversación en grupo %1$s?"],"Add":["Añadir"],"Add a Contact":["Agregar un contacto"],"This contact is busy":["Este contacto está ocupado"],"This contact is online":["Este contacto está en lÃnea"],"This contact is offline":["Este contacto está desconectado"],"This contact is unavailable":["Este contacto no está disponible"],"This contact is away for an extended period":["Este contacto está ausente por un largo periodo de tiempo"],"This contact is away":["Este contacto está ausente"],"Contact name":["Nombre de contacto"],"Optional nickname":["Apodo opcional"],"Sorry, could not find a contact with that name":["Lo sentimos. no se pudo encontrar ningún contacto con ese nombre"],"This contact has already been added":["Este contacto ya ha sido añadido"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar por nombre de contacto"],"Filter by group name":["Filtrar por nombre de grupo"],"Filter by status":["Filtrar por estado"],"Any":["Cualquier"],"Unread":["Sin leer"],"Chatty":["Hablador"],"Extended Away":["Ausencia extendida"],"Click to remove %1$s as a contact":["Haz clic para eliminar a %1$s de tu lista de contactos"],"Click to accept the contact request from %1$s":["Haz clic para aceptar la solicitud de contacto %1$s"],"Click to decline the contact request from %1$s":["Haz clic para rechazar la solicitud de contacto %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Haz clic para conversar con %1$s (Dirección XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["¿Estás seguro de que quieres rechazar esta solicitud de contacto?"],"Contacts":["Contactos"],"Add a contact":["Agregar un contacto"],"Re-sync your contacts":["Re-sincronizar tus contactos"]}}}')}}]); //# sourceMappingURL=es-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/eu-LC_MESSAGES-converse-po.js b/src/conversejs/locales/eu-LC_MESSAGES-converse-po.js index abc32ff96457a1a402554b33ef5d73451c1cf126..ddfceebbbe5f21fcbdbe349e642c5d27b209a007 100644 --- a/src/conversejs/locales/eu-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/eu-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{428:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"eu"},"Create your account":["Zure kontua sortu"],"Please enter the XMPP provider to register with:":["Mesedez sartu XMPP hornitzailea:"],"Already have a chat account?":["Baduzu txat konturik?"],"Log in here":["Hasi saioa hemen"],"Account Registration:":["Kontu erregistroa:"],"Register":["Erregistratu"],"Choose a different provider":["Hornitzaile ezberdin bat aukeratu"],"Hold tight, we\'re fetching the registration form…":["Itxaron, erregistro formularioa eskuratzen ari gara…"],"Cancel":["Utzi"],"The connection has dropped, attempting to reconnect.":["Konexioa galdu egin da, birkonektatzen saiatzen."],"An error occurred while connecting to the chat server.":["Akats bat izan da txat zerbitzariarekin konektatzean."],"Your XMPP address and/or password is incorrect. Please try again.":["Zure XMPP ID-a/edo pasahitza ez dira zuzenak. Mesedez saiatu berriro."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Barkatu, ezin izan dugu XMPP ostalarira konektatu %1$s domeinuarekin"],"The XMPP server did not offer a supported authentication mechanism":["XMPP zerbitzariak ez du lagunduriko autentikazio mekanismorik eskaintzen"],"Sorry, could not determine upload URL.":["Barkatu, ezin izan da igoera URL-a zehaztu."],"Sorry, could not determine file upload URL.":["Barkatu, ezin izan da fitxategi igotzeko URL-a zehaztu."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ezin izan da zure fitxategia igo. Zure zerbitzariaren erantzuna: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Barkatu, ezin izan da zure fitxategia behar bezala igo."],"Sorry, looks like file upload is not supported by your server.":["Barkatu, badirudi zure zerbitzariak ez duela fitxategi igoera onartzen."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Zure fitxategiaren neurriak, %1$s, zure zerbitzariak gehienez onarturiko muga( %2$s ) gainditzen du."],"Smileys and emotions":["Smiley eta emotikonoak"],"People":["Pertsonak"],"Activities":["Jarduerak"],"Travel":["Bidaia"],"Objects":["Objektu"],"Animals and nature":["Animaliak eta natura"],"Food and drink":["Janaria eta edaria"],"Symbols":["Sinboloak"],"Flags":["Banderak"],"Stickers":["Eranskailuak"],"This groupchat is not anonymous":["Gela hau ez da erabiltzaile anonimoentzat"],"This groupchat now shows unavailable members":["Gela honek orain kide eskuragaitzak erakusten ditu"],"This groupchat does not show unavailable members":["Gela honek ez ditu kide eskuragaitzak erakusten"],"The groupchat configuration has changed":["Gelaren ezarpenak aldatu egin dira"],"Groupchat logging is now enabled":["Talde-elkarrizketan izen ematea gaituta dago orain"],"Groupchat logging is now disabled":["Talde-elkarrizketan izen ematea desgaituta dago orain"],"This groupchat is now no longer anonymous":["dagoeneko gela hau ez da anonimoa"],"This groupchat is now semi-anonymous":["gela hau orain erdi-anonimoa da orain"],"This groupchat is now fully-anonymous":["gela hau orain erabat anonimoa da"],"A new groupchat has been created":["Gela berri bat sortu da"],"Your nickname has been automatically set to %1$s":["Zure ezizena %1$s bezala ezarria izan da automatikoki"],"Your nickname has been changed to %1$s":["Zure ezizena %1$s -ra aldatua izan da"],"You have been banned from this groupchat":["Gela honetan debekatua izan zara"],"You have been kicked from this groupchat":["Gela honetatik kanporatua izan zara"],"You have been removed from this groupchat because of an affiliation change":["Gela honetatik ezabatua izan zara afiliazio aldaketa bat dela eta"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Gela honetatik ezabatua izan zara gelako sarbidea kideentzako soilik ezarri delako eta zu ez zara kidea"],"You have been removed from this groupchat because the service hosting it is being shut down":["Gela honetatik ezabatua izan zara zerbitzuaren ostatatzea itxi egingo delako"],"Your message was not delivered because you weren\'t allowed to send it.":["Zure mezua ez da bidali, bidaltzeko baimenik ez duzulako."],"Your message was not delivered because you\'re not present in the groupchat.":["Zure mezua ez da bidali ez zaudelako talde elkarrizketan orain."],"You\'re not allowed to register yourself in this groupchat.":["Ez duzu baimenik zure burua gela honetan erregistratzeko."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Ez duzu baimenik zure burua gela honetan erregistratzeko kideentzako bakarrik delako."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Ezin da zure ezizena gela honetan erregistratu, ez du erregistratzea onartzen."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Ezin da zure ezizena gela honetan erregistratu, datu formulario baliogabea eman da."],"Topic set by %1$s":["%1$s -k ezarritako gaia"],"Topic cleared by %1$s":["%1$s erabiltzaileak mintzagaia garbitu du"],"%1$s has been banned":["%1$s bidalia izan da"],"%1$s\'s nickname has changed":["%1$s -(r)en ezizena aldatu egin da"],"%1$s has been kicked out":["%1$s bidalia izan da"],"%1$s has been removed because of an affiliation change":["%1$s ezabatua izan da afiliazio aldaketa bat dela eta"],"%1$s has been removed for not being a member":["%1$s ezabatua izan da kidea ez delako"],"%1$s is no longer an admin of this groupchat":["%1$s ez da jada gela honetako administratzailea"],"%1$s is no longer an owner of this groupchat":["%1$s ez da jada gela honetako jabeetako bat"],"%1$s is no longer banned from this groupchat":["%1$s ez dago jada gela honetan debekatua"],"%1$s is no longer a member of this groupchat":["%1$s ez da jada gela honetako partaide"],"%1$s is now a member of this groupchat":["%1$s orain gela honetako kidea da"],"%1$s is now an %2$s of this groupchat":["%1$s orain berriketa honetako %2$s da"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Aukeratutako ezizena erreserbatuta dago edo erabiltzen ari da une honetan, aukeratu beste bat."],"Password incorrect":["Pasahitza ez da zuzena"],"You are not on the member list of this groupchat.":["Ez zaude gela honetako kideen zerrendan."],"You have been banned from this groupchat.":["Gela honetatik debekatua izan zara."],"You are not allowed to create new groupchats.":["Ez duzu baimenik gela berriak sortzeko."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Zure ezizenak ez ditu gela honetako arauak betetzen."],"This groupchat does not (yet) exist.":["Gela hau ez da existitzen (oraindik)."],"This groupchat has reached its maximum number of participants.":["Gela hau gehienezko parte-hartzaile kopurura iritsi da."],"Remote server not found":["Ez da urruneko zerbitzaria aurkitu"],"The explanation given is: \\"%1$s\\".":["Emandako arrazoia ondorengoa da: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s erabiltzaileak %2$s gelara gonbidatu zaitu"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s erabiltzaileak %2$s gelara elkartzera gonbidatu zaitu, eta ondorengo arrazoia eman du: \\"%3$s\\""],"Error":["Errorea"],"Sorry, something went wrong while trying to save your bookmark.":["Barkatu, zerbaitek huts egin du zure laster-marka gordetzerakoan."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Nere kontaktuak"],"Pending contacts":["Zain dauden kontaktuak"],"Contact requests":["Kontaktu eskaerak"],"Ungrouped":["Sailkatu gabe"],"Sorry, there was an error while trying to add %1$s as a contact.":["Barkatu, akats bat izan da %1$s kontaktu moduan gehitzean."],"This client does not allow presence subscriptions":["Bezero honek ez du onartzen aurrez aurreko harpidetzarik"],"Click to hide these contacts":["Klikatu kontaktu hauek ezkutatzeko"],"Unbookmark this groupchat":["Kendu gela hau laster-marketatik"],"Click to open this groupchat":["Klikatu gela hau irekitzeko"],"Click to toggle the bookmarks list":["Klikatu laster-marka zerrenda ordezkatzeko"],"Bookmarks":["Laster-markak"],"Bookmark this groupchat":["Egin gela honen laster-marka"],"Would you like this groupchat to be automatically joined upon startup?":["Gela honetan automatikoki sartu nahiko zenuke abioan?"],"The name for this bookmark:":["Laster-marka honen izena:"],"What should your nickname for this groupchat be?":["Zein izango litzateke gela honetarako zure ezizena?"],"Save":["Gorde"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ziur al zaude \\"%1$s\\" laster-marka ezabatu nahi duzula?"],"Close":["Itxi"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Deskargatu audio fitxategia \\"%1$s\\""],"Download file \\"%1$s\\"":["Deskargatu fitxategia: \\"%1$s"],"Edit":[""],"Retract":[""],"Message versions":["Mezuaren bertsioak"],"Retry":[""],"Uploading file:":["Fitxategia igotzen:"],"This message has been edited":["Mezu hau editatu da"],"Show more":["Gehiago erakutsi"],"No message history available.":[""],"Search results":["Bilaketa emaitzak"],"Search":["Bilatu"],"Insert emojis":["Emojiak txertatu"],"Send the message":["Bidali mezua"],"Start a call":["Dei bat hasi"],"Choose a file to send":["Aukeratu bidaltzeko fitxategia"],"Click to write as a normal (non-spoiler) message":["Klikatu mezua ohiko moduan idazteko"],"Click to write your message as a spoiler":["Klikatu zure mezua iragarki moduan idazteko"],"The User\'s Profile Image":["Erabiltzailearen profileko argazkia"],"Trusted":["Fidagarria"],"Untrusted":["Ez fidagarria"],"OMEMO Fingerprints":["OMEMO hatz-markak"],"Remove as contact":["Kendu kontaktuetatik"],"XMPP Address":["XMPP Helbidea"],"Email":["Emaila"],"Full Name":["Izen osoa"],"Nickname":["Ezizena"],"Refresh":["Freskatu"],"Role":["Rola"],"URL":["URLa"],"%1$s is typing":["%1$s idazten ari da"],"%1$s has stopped typing":["%1$s idazteari utzi dio"],"%1$s has gone away":["%1$s joan egin da"],"Remove messages":["mezuak ezabatu"],"Write in the third person":["Hirugarrengo pertsonan idatzi"],"Show this menu":["Menu hau erakutsi"],"Hidden message":["Ezkutuko mezua"],"Message":["Mezua"],"Optional hint":["Aukerako haztarna"],"You have unread messages":["Irakurri gabeko mezuak dituzu"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ziur al zaude elkarrizketa honetako mezuak ezabatu nahi dituzula?"],"%1$s has gone offline":["%1$s deskonektatu egin da"],"%1$s is busy":["%1$s lanpeturik dago"],"%1$s is online":["%1$s linean dago"],"Sorry, something went wrong while trying to refresh":["Barkatu, zerbaitek huts egin du zure laster-marka gordetzerakoan"],"Are you sure you want to remove this contact?":["Ziur al zaude kontaktu hau ezabatu nahi duzula?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Barkatu, akats bat izan da %1$s kontaktu moduan ezabatzean."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Errendimendua hobetzeko, zure datuak nabigatzaile honen cachean gordetzen dira. Desmarkatu hau ordenagailua publikoa bada edo saioa amaitzean datuak ezabatzea nahiago baduzu. Saioa esplizituki amaitzea ezinbestekoa da, bestela agian ez dira datu guztiak ezabatuko."],"This is a trusted device":["Hau gailu fidagarri bat da"],"Create an account":["Sortu kontu bat"],"Don\'t have a chat account?":["Ez duzu txat konturik?"],"Log in":["Hasi saioa"],"Disconnected":[""],"Click here to log in anonymously":["Klikatu hemen saioa anonimoki hasteko"],"Username":["Erabiltzaile izena"],"user@domain":["erabiltzailea@domeinua"],"Please enter a valid XMPP address":["Mesedez sar ezazu baleko XMPP helbide bat"],"Chat Contacts":["Txat kontaktuak"],"Toggle chat":["Txata gaitu"],"Click to restore this chat":["Klikatu txat hau berrezartzeko"],"Minimized":["Minimizaturik"],"This field is required":["Eremu hau beharrezkoa da"],"Join":["Batu"],"Enter a new Groupchat":["Sartu gela berri batean"],"name@conference.example.org":["izena@conference.example.org"],"Groupchat name":["Talde elkarrizketaren izena"],"Groupchat address":["Gelaren helbidea"],"Invite":["Gonbidatu"],"Show groupchats":["Erakutsi gelak"],"Server address":["Zerbitzariaren helbidea"],"Show more information on this groupchat":["Erakutsi gela honi buruzko informazio gehiago"],"Query for Groupchats":["Bilatu gelak"],"Description:":["Deskribapena:"],"Groupchat Address (JID):":["Gelaren helbidea (JID):"],"Participants:":["Parte-hartzaileak:"],"Features:":["Ezaugarriak:"],"Requires authentication":["Autentifikazioa behar da"],"Hidden":["Ezkutua"],"Requires an invitation":["Gonbidapena behar da"],"Moderated":["Moderatua"],"Non-anonymous":["Ez-anonimoa"],"Open":["Ireki"],"Permanent":["Iraunkorra"],"Public":["Publikoa"],"Semi-anonymous":["Erdi-anonimoa"],"Temporary":["Aldi baterako"],"Unmoderated":["Moderatu gabea"],"conference.example.org":["conference.example.org"],"No groupchats found":["Ez da gelarik aurkitu"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatzaileak pribilegiodun erabiltzaileak dira, beste erabiltzaile batzuen rolak alda ditzaketelarik.(administratzaile edo jabeenak izan ezik."],"The default role, implies that you can read and write messages.":["Lehenetsitako rolak, mezuak irakurri eta idatzi ditzakezula adierazten du."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Bisitariek ez dute baimenik moderaturiko erabiltzaile anitzeko berriketan mezurik idazteko."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["Rola aldatu"],"New Role":["Rol Berria"],"Reason":["Arrazoia"],"Change affiliation":["Aldatu afiliazioa"],"New affiliation":["Afiliazio berria"],"Affiliation":["Afiliazioa"],"Moderator Tools":["Moderatzaile tresnak"],"No users with that affiliation found.":["Ez da erabiltzailerik aurkitu afiliazio horrekin."],"No users with that role found.":["Ez da rol hori duen erabiltzailerik aurkitu."],"Type here to filter the search results":[""],"Show users":["Erabiltzaileak erakutsi"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rolak erabiltzaileei egokitzen zaizkie erabiltzaile anitzeko berriketetan hainbat gaitasun eman edo ukatzeko. Esplizituki edo inplizituki esleitzen dira afiliazioaren baitan. Afiliazio bati ez dagokion rolak, erabiltzailearen saioan zehar bakarrik balio du."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Mintzagaia"],"Topic author":["Mintzagaiaren egilea"],"Groupchat address (JID)":["Gelaren helbidea (JID)"],"Message archiving":["Mezu artxibaketa"],"Messages are archived on the server":["Mezuak zerbitzarian gordetzen dira"],"Description":["Deskribapena"],"Features":["Ezaugarriak"],"This groupchat is not publicly searchable":["Gela hau ezin da publikoki bilatua izan"],"This groupchat is restricted to members only":["Gela hau kideei soilik dagokie"],"Members only":["Kideak soilik"],"Participants entering this groupchat need to request permission to write":["Grla honetara sartzen diren kideek idazteko baimena eskatu behar dute"],"Name":["Izena"],"This groupchat does not require a password upon entry":["Gela honek ez du pasahitzik eskatzen sartzeko"],"No password required":["Ez da pasahitzik eskatzen"],"Not anonymous":["Ez-anonimoa"],"All other groupchat participants can see your XMPP address":["Gelako gainontzeko parte-hartzaileek zure XMPP erabiltzailea ikus dezakete"],"Not moderated":["Moderatu gabea"],"Participants entering this groupchat can write right away":["Gela honetara gehitzen diren kideek berehala idatz dezakete"],"Online users":["Erabiltzaileak linean"],"Anyone can join this groupchat":["Gela honetan edozein sartu daiteke"],"This groupchat requires a password before entry":["Gela honek pasahitza eskatzen du sartu ahal izateko"],"Password protected":["Pasahitzez babestua"],"Persistent":["Iraunkorra"],"This groupchat persists even if it\'s unoccupied":["Gela honek bere horretan jarraituko du hustu arren"],"Only moderators can see your XMPP address":["Moderatzaileek soilik ikus dezakete zure XMPP helbidea"],"This groupchat will disappear once the last person leaves":["Gela hau desagertu egingo da azken pertsonak uzten duen unean"],"This groupchat is publicly searchable":["Gela hau publikoki bilatua izan daiteke"],"Groupchat info for %1$s":["%1$s gelaren informazioa"],"You\'re not allowed to send messages in this room":["Ez duzu baimenik gela honetan mezuak bidaltzeko"],"The conversation has moved. Click below to enter.":["Elkarrizketa hau mugitua izan da. Klikatu azpian sartzeko."],"This groupchat no longer exists":["Talde berriketa hau jada ez da existitzen"],"Enter groupchat":["Elkartu gelara"],"Please choose your nickname":["Mesedez, aukeratu zure ezizena"],"This groupchat requires a password":["Txat gela honek pasahitza behar du"],"Password: ":["Pasahitza: "],"Submit":["Bidali"],"This user is a moderator.":["Erabiltzaile hau moderatzailea da."],"This user can send messages in this groupchat.":["Erabiltzaile honek mezuak bidal ditzake gela honetan."],"This user can NOT send messages in this groupchat.":["Erabiltzaile honek EZIN ditu mezuak bidali gela honetan."],"Owner":["Jabea"],"Admin":["Administratzailea"],"Member":["Kidea"],"Moderator":["Moderatzailea"],"Visitor":["Bisitaria"],"Click to mention %1$s in your message.":["Klikatu %1$s zure mezuan aipatzeko."],"Participants":["Parte-hartzaileak"],"%1$s has entered the groupchat":["%1$s gelara elkartu da"],"%1$s has left the groupchat":["%1$s gelatik atera da"],"%1$s is now a moderator":["%1$s orain moderatzailea da"],"%1$s is no longer a moderator":["%1$s jada ez da moderatzailea"],"%1$s has been given a voice":["%1$s -(e)k idatz dezake berriro"],"%1$s has been muted":["%1$s ezikusia izan da"],"Change user\'s affiliation to admin":["Aldatu erabiltzailearen afiliazioa administratzailera"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Ezarri erabiltzailearen rola parte-hartzaile gisa"],"Remove this groupchat":["Ezabatu chat talde hau"],"Kick user from groupchat":["Kanporatu erabiltzailea gelatik"],"Write in 3rd person":["3. pertsonan idatzi"],"Grant membership to a user":["Eman kidetza erabiltzaile bati"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Kendu mezuak argitaratzeko erabiltzailearen gaitasuna"],"Change your nickname":["Zure ezizena aldatu"],"Grant moderator role to user":["Eman moderatzaile rola erabiltzaileari"],"Grant ownership of this groupchat":["Eman gela honen jabetza"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Ezarri gelaren mintzagaia"],"Set groupchat subject (alias for /subject)":["Ezarri gelaren mintzagaia (/subject aginduaren aliasa)"],"Allow muted user to post messages":["Baimendu isilarazitako erabiltzaileari mezuak argitaratzea"],"Configure":[""],"Configure this groupchat":["Konfiguratu gela hau"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Ezkutatu parte-hartzaileen zerrena"],"Forbidden: you do not have the necessary role in order to do that.":["Debekatua: Ez duzu hori egiteko behar den rola."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Debekatua: Ez duzu hori egiteko behar den afiliazioa."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Akatsa: %1$s aginduak bi argumentu hartzen ditu, erabiltzailearen ezizena eta aukerako arrazoi bat."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["izena@adibidea.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Errorea: Argumentu kopuru baliogabea"],"This action was done by %1$s.":["Ekintza hau %1$s -k egina izan da."],"The reason given is: \\"%1$s\\".":["Emandako arrazoia ondorengoa da: \\"%1$s\\"."],"Groupchats":["Gelak"],"Add a new groupchat":["Gehitu gela berri bat"],"Query for groupchats":["Bilatu gelak"],"Announcements":[""],"Notification from %1$s":["%1$s -(r)en jakinarazpena"],"%1$s says":["%1$s -k dio"],"has gone offline":["deskonektatu egin da"],"has gone away":["joan egin da"],"is busy":["lanpeturik dago"],"has come online":["linean jarri da"],"wants to be your contact":["zure kontaktua izan nahi du"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Honi buruz"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Saioa itxi"],"Click to change your chat status":["Klikatu zure txat egoera aldatzeko"],"Your avatar image":["Zure abatarraren irudia"],"Checkbox for selecting the following fingerprint":["Hurrengo hatz-marka hautatzeko laukia"],"Device without a fingerprint":["Hatz-markarik gabeko gailua"],"Other OMEMO-enabled devices":["OMEMO gaiturik duten beste gailu batzuk"],"Checkbox to select fingerprints of all other OMEMO devices":["Beste OMEMO gailuen hatz-markak hautatzeko laukia"],"Remove checked devices and close":["Kendu markatutako gailuak eta itxi"],"Select all":["Hautatu guztiak"],"This device\'s OMEMO fingerprint":["Gailu honen OMEMO hatz-marka"],"Generate new keys and fingerprint":["Gako eta hatz-marka berriak sortu"],"Your Profile":["Zure profila"],"XMPP Address (JID)":["XMPP helbidea (JID)"],"Save and close":["Gorde eta itxi"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Banatu rolak komen bidez. Zure rolak izenaren ondoan agertzen dira txat mezuetan."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Errore bat gertatu da zure profileko datuak gordetzen saiatzean."],"You can check your browser\'s developer console for any error output.":["Zure nabigatzaileko garatzaile kontsolan egiaztatu dezakezu errorerik dagoen."],"Away":["Kanpoan"],"Busy":["Lanpetua"],"Custom status":["Egoera pertsonalizatua"],"Offline":["Deskonektaturik"],"Online":["Linean"],"Away for long":["Kanpoan denbora luzerako"],"Change chat status":["Txat egoera aldatu"],"Personal status message":["Egoera mezu pertsonala"],"I am %1$s":["%1$s nago"],"Are you sure you want to log out?":["Ziur al zaude saioa itxi nahi duzula?"],"online":["Linean"],"busy":["Lanpetua"],"away for long":["kanpoan denbora luzerako"],"away":["Kanpoan"],"offline":["deskonektatua"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Ezin izan da jasotako OMEMO mezu bat deszifratu errore bat dela eta."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["Badirudi %1$s -(e)k ez daukala OMEMO erabiltzeko gai den bezerorik. Ezingo da enkriptaturiko elkarrizketarik izan talde honetan."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["Mezuak testu lauan bidaltzen dira"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Errore bat gertatu da gailuak kentzen saiatzean."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ziur al zaude OMEMO gako berriak sortu nahi dituzula? Honek zure gako zaharrak ezabatuko ditu eta aurretiaz enkriptaturiko mezu guztiak ezingo dira irakurri gailu honetan."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Barkatu, ez gara gai enkriptaturiko mezua bidaltzeko %1$s -(e)k beraien presentzia eguneraketetara izen emanda egotea behar duelako beraien OMEMO informazioa ikusi ahal izateko."],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Barkatu, ez gara gai enkriptaturiko mezua bidaltzeko %1$s -rentzako urruneko zerbitzaria ezin delako topatu."],"Unable to send an encrypted message due to an unexpected error.":["Ezin izan da mezua bidali errore bat dela eta."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Hau zifratutako OMEMO mezu bat da eta badirudi zure bezeroak ez duela onartzen. Gehiago jakiteko: https://conversations.im/omemo"]," e.g. conversejs.org":[" adib. conversejs.org"],"Fetch registration form":["Erregistro formularioa eskuratu"],"Tip: A list of public XMPP providers is available":["Aholkua: XMPP hornitzaile publikoen zerrenda bat dago eskuragarri"],"here":["hemen"],"Sorry, we\'re unable to connect to your chosen provider.":["Barkatu, ezin izan dugu zuk aukeraturiko hornitzailera konektatu."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Barkatu, emandako hornitzaileak ez du banda kontuen erregistroa onartzen. Saiatu beste hornitzaile batekin."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Zerbait oker joan da \\"%1$s\\"-(r)ekin konexioa ezartzean. Ziur al zaude existitzen dela?"],"Now logging you in":["Orain saio hasten"],"Registered successfully":["Arrakastaz erregistratua"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Hornitzaileak zure izen emate saiakera ukatu du. Mesedez egiaztatu sartutako balioak zuzenak direla."],"Leave this groupchat":["Atera gela honetatik"],"Click to toggle the list of open groupchats":["Egin klik irekitako gelen zerrenda hedatu/tolesteko"],"Open Groupchats":["Irekitako gelak"],"Are you sure you want to leave the groupchat %1$s?":["Ziur al zaude %1$s gelatik atera nahi duzula?"],"Add":["Gehitu"],"Add a Contact":["Kontaktu bat gehitu"],"This contact is busy":["Kontaktu hau lanpeturik dago"],"This contact is online":["Kontaktu hau linean dago"],"This contact is offline":["Kontaktu hau lineaz kanpo dago"],"This contact is unavailable":["Kontaktu hau ez dago erabilgarri"],"This contact is away for an extended period":["Kontaktu hau kanpoan dago denbora luzez"],"This contact is away":["Kontaktu hau kanpoan dago"],"Contact name":["Kontaktu izena"],"Optional nickname":["Aukerako ezizena"],"Sorry, could not find a contact with that name":[""],"Filter":["Iragazi"],"Filter by contact name":["Kontaktu izenaz iragazi"],"Filter by group name":["Talde izenaz iragazi"],"Filter by status":["Egoeraren araberan iragazi"],"Any":["Edozein"],"Unread":["Irakurri gabe"],"Chatty":["Hitzduna"],"Extended Away":["Denbora luzez at"],"Click to remove %1$s as a contact":["Klikatu %1$s kontaktuetatik ezabatzeko"],"Click to accept the contact request from %1$s":["Klikatu %1$s -(r)en kontaktu eskaera onartzeko"],"Click to decline the contact request from %1$s":["Klikatu %1$s -(r)en kontaktu eskaera baztertzeko"],"Are you sure you want to decline this contact request?":["Ziur al,zaude kontaktu eskaera hau baztertu nahi duzula?"],"Contacts":["Kontaktuak"],"Add a contact":["Kontaktu bat gehitu"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[150],{516:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"eu"},"Create your account":["Zure kontua sortu"],"Please enter the XMPP provider to register with:":["Mesedez sartu XMPP hornitzailea:"],"Already have a chat account?":["Baduzu txat konturik?"],"Log in here":["Hasi saioa hemen"],"Account Registration:":["Kontu erregistroa:"],"Register":["Erregistratu"],"Choose a different provider":["Hornitzaile ezberdin bat aukeratu"],"Hold tight, we\'re fetching the registration form…":["Itxaron, erregistro formularioa eskuratzen ari gara…"],"Cancel":["Utzi"],"The connection has dropped, attempting to reconnect.":["Konexioa galdu egin da, birkonektatzen saiatzen."],"An error occurred while connecting to the chat server.":["Akats bat izan da txat zerbitzariarekin konektatzean."],"Your XMPP address and/or password is incorrect. Please try again.":["Zure XMPP ID-a/edo pasahitza ez dira zuzenak. Mesedez saiatu berriro."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Barkatu, ezin izan dugu XMPP ostalarira konektatu %1$s domeinuarekin"],"The XMPP server did not offer a supported authentication mechanism":["XMPP zerbitzariak ez du lagunduriko autentikazio mekanismorik eskaintzen"],"Sorry, could not determine upload URL.":["Barkatu, ezin izan da igoera URL-a zehaztu."],"Sorry, could not determine file upload URL.":["Barkatu, ezin izan da fitxategi igotzeko URL-a zehaztu."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ezin izan da zure fitxategia igo. Zure zerbitzariaren erantzuna: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Barkatu, ezin izan da zure fitxategia behar bezala igo."],"Sorry, looks like file upload is not supported by your server.":["Barkatu, badirudi zure zerbitzariak ez duela fitxategi igoera onartzen."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Zure fitxategiaren neurriak, %1$s, zure zerbitzariak gehienez onarturiko muga( %2$s ) gainditzen du."],"Smileys and emotions":["Smiley eta emotikonoak"],"People":["Pertsonak"],"Activities":["Jarduerak"],"Travel":["Bidaia"],"Objects":["Objektu"],"Animals and nature":["Animaliak eta natura"],"Food and drink":["Janaria eta edaria"],"Symbols":["Sinboloak"],"Flags":["Banderak"],"Stickers":["Eranskailuak"],"This groupchat is not anonymous":["Gela hau ez da erabiltzaile anonimoentzat"],"This groupchat now shows unavailable members":["Gela honek orain kide eskuragaitzak erakusten ditu"],"This groupchat does not show unavailable members":["Gela honek ez ditu kide eskuragaitzak erakusten"],"The groupchat configuration has changed":["Gelaren ezarpenak aldatu egin dira"],"Groupchat logging is now enabled":["Talde-elkarrizketan izen ematea gaituta dago orain"],"Groupchat logging is now disabled":["Talde-elkarrizketan izen ematea desgaituta dago orain"],"This groupchat is now no longer anonymous":["dagoeneko gela hau ez da anonimoa"],"This groupchat is now semi-anonymous":["gela hau orain erdi-anonimoa da orain"],"This groupchat is now fully-anonymous":["gela hau orain erabat anonimoa da"],"A new groupchat has been created":["Gela berri bat sortu da"],"Your nickname has been automatically set to %1$s":["Zure ezizena %1$s bezala ezarria izan da automatikoki"],"Your nickname has been changed to %1$s":["Zure ezizena %1$s -ra aldatua izan da"],"You have been banned from this groupchat":["Gela honetan debekatua izan zara"],"You have been kicked from this groupchat":["Gela honetatik kanporatua izan zara"],"You have been removed from this groupchat because of an affiliation change":["Gela honetatik ezabatua izan zara afiliazio aldaketa bat dela eta"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Gela honetatik ezabatua izan zara gelako sarbidea kideentzako soilik ezarri delako eta zu ez zara kidea"],"You have been removed from this groupchat because the service hosting it is being shut down":["Gela honetatik ezabatua izan zara zerbitzuaren ostatatzea itxi egingo delako"],"Your message was not delivered because you weren\'t allowed to send it.":["Zure mezua ez da bidali, bidaltzeko baimenik ez duzulako."],"Your message was not delivered because you\'re not present in the groupchat.":["Zure mezua ez da bidali ez zaudelako talde elkarrizketan orain."],"You\'re not allowed to register yourself in this groupchat.":["Ez duzu baimenik zure burua gela honetan erregistratzeko."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Ez duzu baimenik zure burua gela honetan erregistratzeko kideentzako bakarrik delako."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Ezin da zure ezizena gela honetan erregistratu, ez du erregistratzea onartzen."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Ezin da zure ezizena gela honetan erregistratu, datu formulario baliogabea eman da."],"Topic set by %1$s":["%1$s -k ezarritako gaia"],"Topic cleared by %1$s":["%1$s erabiltzaileak mintzagaia garbitu du"],"%1$s has been banned":["%1$s bidalia izan da"],"%1$s\'s nickname has changed":["%1$s -(r)en ezizena aldatu egin da"],"%1$s has been kicked out":["%1$s bidalia izan da"],"%1$s has been removed because of an affiliation change":["%1$s ezabatua izan da afiliazio aldaketa bat dela eta"],"%1$s has been removed for not being a member":["%1$s ezabatua izan da kidea ez delako"],"%1$s is no longer an admin of this groupchat":["%1$s ez da jada gela honetako administratzailea"],"%1$s is no longer an owner of this groupchat":["%1$s ez da jada gela honetako jabeetako bat"],"%1$s is no longer banned from this groupchat":["%1$s ez dago jada gela honetan debekatua"],"%1$s is no longer a member of this groupchat":["%1$s ez da jada gela honetako partaide"],"%1$s is now a member of this groupchat":["%1$s orain gela honetako kidea da"],"%1$s is now an %2$s of this groupchat":["%1$s orain berriketa honetako %2$s da"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Aukeratutako ezizena erreserbatuta dago edo erabiltzen ari da une honetan, aukeratu beste bat."],"Password incorrect":["Pasahitza ez da zuzena"],"You are not on the member list of this groupchat.":["Ez zaude gela honetako kideen zerrendan."],"You have been banned from this groupchat.":["Gela honetatik debekatua izan zara."],"You are not allowed to create new groupchats.":["Ez duzu baimenik gela berriak sortzeko."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Zure ezizenak ez ditu gela honetako arauak betetzen."],"This groupchat does not (yet) exist.":["Gela hau ez da existitzen (oraindik)."],"This groupchat has reached its maximum number of participants.":["Gela hau gehienezko parte-hartzaile kopurura iritsi da."],"Remote server not found":["Ez da urruneko zerbitzaria aurkitu"],"The explanation given is: \\"%1$s\\".":["Emandako arrazoia ondorengoa da: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s erabiltzaileak %2$s gelara gonbidatu zaitu"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s erabiltzaileak %2$s gelara elkartzera gonbidatu zaitu, eta ondorengo arrazoia eman du: \\"%3$s\\""],"Error":["Errorea"],"Sorry, something went wrong while trying to save your bookmark.":["Barkatu, zerbaitek huts egin du zure laster-marka gordetzerakoan."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Nere kontaktuak"],"Pending contacts":["Zain dauden kontaktuak"],"Contact requests":["Kontaktu eskaerak"],"Ungrouped":["Sailkatu gabe"],"Sorry, there was an error while trying to add %1$s as a contact.":["Barkatu, akats bat izan da %1$s kontaktu moduan gehitzean."],"This client does not allow presence subscriptions":["Bezero honek ez du onartzen aurrez aurreko harpidetzarik"],"Click to hide these contacts":["Klikatu kontaktu hauek ezkutatzeko"],"Unbookmark this groupchat":["Kendu gela hau laster-marketatik"],"Click to open this groupchat":["Klikatu gela hau irekitzeko"],"Click to toggle the bookmarks list":["Klikatu laster-marka zerrenda ordezkatzeko"],"Bookmarks":["Laster-markak"],"Bookmark this groupchat":["Egin gela honen laster-marka"],"Would you like this groupchat to be automatically joined upon startup?":["Gela honetan automatikoki sartu nahiko zenuke abioan?"],"The name for this bookmark:":["Laster-marka honen izena:"],"What should your nickname for this groupchat be?":["Zein izango litzateke gela honetarako zure ezizena?"],"Save":["Gorde"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ziur al zaude \\"%1$s\\" laster-marka ezabatu nahi duzula?"],"Close":["Itxi"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Deskargatu audio fitxategia \\"%1$s\\""],"Download file \\"%1$s\\"":["Deskargatu fitxategia: \\"%1$s"],"Edit":[""],"Retract":[""],"Message versions":["Mezuaren bertsioak"],"Retry":[""],"Uploading file:":["Fitxategia igotzen:"],"This message has been edited":["Mezu hau editatu da"],"Show more":["Gehiago erakutsi"],"No message history available.":[""],"Search results":["Bilaketa emaitzak"],"Search":["Bilatu"],"Insert emojis":["Emojiak txertatu"],"Send the message":["Bidali mezua"],"Start a call":["Dei bat hasi"],"Choose a file to send":["Aukeratu bidaltzeko fitxategia"],"Click to write as a normal (non-spoiler) message":["Klikatu mezua ohiko moduan idazteko"],"Click to write your message as a spoiler":["Klikatu zure mezua iragarki moduan idazteko"],"The User\'s Profile Image":["Erabiltzailearen profileko argazkia"],"Trusted":["Fidagarria"],"Untrusted":["Ez fidagarria"],"OMEMO Fingerprints":["OMEMO hatz-markak"],"Remove as contact":["Kendu kontaktuetatik"],"XMPP Address":["XMPP Helbidea"],"Email":["Emaila"],"Full Name":["Izen osoa"],"Nickname":["Ezizena"],"Refresh":["Freskatu"],"Role":["Rola"],"URL":["URLa"],"%1$s is typing":["%1$s idazten ari da"],"%1$s has stopped typing":["%1$s idazteari utzi dio"],"%1$s has gone away":["%1$s joan egin da"],"Remove messages":["mezuak ezabatu"],"Write in the third person":["Hirugarrengo pertsonan idatzi"],"Show this menu":["Menu hau erakutsi"],"Hidden message":["Ezkutuko mezua"],"Message":["Mezua"],"Optional hint":["Aukerako haztarna"],"You have unread messages":["Irakurri gabeko mezuak dituzu"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ziur al zaude elkarrizketa honetako mezuak ezabatu nahi dituzula?"],"%1$s has gone offline":["%1$s deskonektatu egin da"],"%1$s is busy":["%1$s lanpeturik dago"],"%1$s is online":["%1$s linean dago"],"Sorry, something went wrong while trying to refresh":["Barkatu, zerbaitek huts egin du zure laster-marka gordetzerakoan"],"Are you sure you want to remove this contact?":["Ziur al zaude kontaktu hau ezabatu nahi duzula?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Barkatu, akats bat izan da %1$s kontaktu moduan ezabatzean."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Errendimendua hobetzeko, zure datuak nabigatzaile honen cachean gordetzen dira. Desmarkatu hau ordenagailua publikoa bada edo saioa amaitzean datuak ezabatzea nahiago baduzu. Saioa esplizituki amaitzea ezinbestekoa da, bestela agian ez dira datu guztiak ezabatuko."],"This is a trusted device":["Hau gailu fidagarri bat da"],"Create an account":["Sortu kontu bat"],"Don\'t have a chat account?":["Ez duzu txat konturik?"],"Log in":["Hasi saioa"],"Disconnected":[""],"Click here to log in anonymously":["Klikatu hemen saioa anonimoki hasteko"],"Username":["Erabiltzaile izena"],"user@domain":["erabiltzailea@domeinua"],"Please enter a valid XMPP address":["Mesedez sar ezazu baleko XMPP helbide bat"],"Chat Contacts":["Txat kontaktuak"],"Toggle chat":["Txata gaitu"],"Click to restore this chat":["Klikatu txat hau berrezartzeko"],"Minimized":["Minimizaturik"],"This user is a moderator.":["Erabiltzaile hau moderatzailea da."],"This user can send messages in this groupchat.":["Erabiltzaile honek mezuak bidal ditzake gela honetan."],"This user can NOT send messages in this groupchat.":["Erabiltzaile honek EZIN ditu mezuak bidali gela honetan."],"Owner":["Jabea"],"Admin":["Administratzailea"],"Member":["Kidea"],"Moderator":["Moderatzailea"],"Visitor":["Bisitaria"],"Click to mention %1$s in your message.":["Klikatu %1$s zure mezuan aipatzeko."],"Participants":["Parte-hartzaileak"],"This field is required":["Eremu hau beharrezkoa da"],"Join":["Batu"],"Enter a new Groupchat":["Sartu gela berri batean"],"name@conference.example.org":["izena@conference.example.org"],"Groupchat name":["Talde elkarrizketaren izena"],"Groupchat address":["Gelaren helbidea"],"Invite":["Gonbidatu"],"Show groupchats":["Erakutsi gelak"],"Server address":["Zerbitzariaren helbidea"],"Show more information on this groupchat":["Erakutsi gela honi buruzko informazio gehiago"],"Query for Groupchats":["Bilatu gelak"],"Description:":["Deskribapena:"],"Groupchat Address (JID):":["Gelaren helbidea (JID):"],"Participants:":["Parte-hartzaileak:"],"Features:":["Ezaugarriak:"],"Requires authentication":["Autentifikazioa behar da"],"Hidden":["Ezkutua"],"Requires an invitation":["Gonbidapena behar da"],"Moderated":["Moderatua"],"Non-anonymous":["Ez-anonimoa"],"Open":["Ireki"],"Permanent":["Iraunkorra"],"Public":["Publikoa"],"Semi-anonymous":["Erdi-anonimoa"],"Temporary":["Aldi baterako"],"Unmoderated":["Moderatu gabea"],"conference.example.org":["conference.example.org"],"No groupchats found":["Ez da gelarik aurkitu"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatzaileak pribilegiodun erabiltzaileak dira, beste erabiltzaile batzuen rolak alda ditzaketelarik.(administratzaile edo jabeenak izan ezik."],"The default role, implies that you can read and write messages.":["Lehenetsitako rolak, mezuak irakurri eta idatzi ditzakezula adierazten du."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Bisitariek ez dute baimenik moderaturiko erabiltzaile anitzeko berriketan mezurik idazteko."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["Rola aldatu"],"New Role":["Rol Berria"],"Reason":["Arrazoia"],"Change affiliation":["Aldatu afiliazioa"],"New affiliation":["Afiliazio berria"],"Affiliation":["Afiliazioa"],"Moderator Tools":["Moderatzaile tresnak"],"No users with that affiliation found.":["Ez da erabiltzailerik aurkitu afiliazio horrekin."],"No users with that role found.":["Ez da rol hori duen erabiltzailerik aurkitu."],"Type here to filter the search results":[""],"Show users":["Erabiltzaileak erakutsi"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rolak erabiltzaileei egokitzen zaizkie erabiltzaile anitzeko berriketetan hainbat gaitasun eman edo ukatzeko. Esplizituki edo inplizituki esleitzen dira afiliazioaren baitan. Afiliazio bati ez dagokion rolak, erabiltzailearen saioan zehar bakarrik balio du."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Mintzagaia"],"Topic author":["Mintzagaiaren egilea"],"Groupchat address (JID)":["Gelaren helbidea (JID)"],"Message archiving":["Mezu artxibaketa"],"Messages are archived on the server":["Mezuak zerbitzarian gordetzen dira"],"Description":["Deskribapena"],"Features":["Ezaugarriak"],"This groupchat is not publicly searchable":["Gela hau ezin da publikoki bilatua izan"],"This groupchat is restricted to members only":["Gela hau kideei soilik dagokie"],"Members only":["Kideak soilik"],"Participants entering this groupchat need to request permission to write":["Grla honetara sartzen diren kideek idazteko baimena eskatu behar dute"],"Name":["Izena"],"This groupchat does not require a password upon entry":["Gela honek ez du pasahitzik eskatzen sartzeko"],"No password required":["Ez da pasahitzik eskatzen"],"Not anonymous":["Ez-anonimoa"],"All other groupchat participants can see your XMPP address":["Gelako gainontzeko parte-hartzaileek zure XMPP erabiltzailea ikus dezakete"],"Not moderated":["Moderatu gabea"],"Participants entering this groupchat can write right away":["Gela honetara gehitzen diren kideek berehala idatz dezakete"],"Online users":["Erabiltzaileak linean"],"Anyone can join this groupchat":["Gela honetan edozein sartu daiteke"],"This groupchat requires a password before entry":["Gela honek pasahitza eskatzen du sartu ahal izateko"],"Password protected":["Pasahitzez babestua"],"Persistent":["Iraunkorra"],"This groupchat persists even if it\'s unoccupied":["Gela honek bere horretan jarraituko du hustu arren"],"Only moderators can see your XMPP address":["Moderatzaileek soilik ikus dezakete zure XMPP helbidea"],"This groupchat will disappear once the last person leaves":["Gela hau desagertu egingo da azken pertsonak uzten duen unean"],"This groupchat is publicly searchable":["Gela hau publikoki bilatua izan daiteke"],"Groupchat info for %1$s":["%1$s gelaren informazioa"],"You\'re not allowed to send messages in this room":["Ez duzu baimenik gela honetan mezuak bidaltzeko"],"The conversation has moved. Click below to enter.":["Elkarrizketa hau mugitua izan da. Klikatu azpian sartzeko."],"This groupchat no longer exists":["Talde berriketa hau jada ez da existitzen"],"Enter groupchat":["Elkartu gelara"],"Please choose your nickname":["Mesedez, aukeratu zure ezizena"],"This groupchat requires a password":["Txat gela honek pasahitza behar du"],"Password: ":["Pasahitza: "],"Submit":["Bidali"],"%1$s has entered the groupchat":["%1$s gelara elkartu da"],"%1$s has left the groupchat":["%1$s gelatik atera da"],"%1$s is now a moderator":["%1$s orain moderatzailea da"],"%1$s is no longer a moderator":["%1$s jada ez da moderatzailea"],"%1$s has been given a voice":["%1$s -(e)k idatz dezake berriro"],"%1$s has been muted":["%1$s ezikusia izan da"],"Change user\'s affiliation to admin":["Aldatu erabiltzailearen afiliazioa administratzailera"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Ezarri erabiltzailearen rola parte-hartzaile gisa"],"Remove this groupchat":["Ezabatu chat talde hau"],"Kick user from groupchat":["Kanporatu erabiltzailea gelatik"],"Write in 3rd person":["3. pertsonan idatzi"],"Grant membership to a user":["Eman kidetza erabiltzaile bati"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Kendu mezuak argitaratzeko erabiltzailearen gaitasuna"],"Change your nickname":["Zure ezizena aldatu"],"Grant moderator role to user":["Eman moderatzaile rola erabiltzaileari"],"Grant ownership of this groupchat":["Eman gela honen jabetza"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Ezarri gelaren mintzagaia"],"Set groupchat subject (alias for /subject)":["Ezarri gelaren mintzagaia (/subject aginduaren aliasa)"],"Allow muted user to post messages":["Baimendu isilarazitako erabiltzaileari mezuak argitaratzea"],"Configure":[""],"Configure this groupchat":["Konfiguratu gela hau"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Ezkutatu parte-hartzaileen zerrena"],"Forbidden: you do not have the necessary role in order to do that.":["Debekatua: Ez duzu hori egiteko behar den rola."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Debekatua: Ez duzu hori egiteko behar den afiliazioa."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Akatsa: %1$s aginduak bi argumentu hartzen ditu, erabiltzailearen ezizena eta aukerako arrazoi bat."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["izena@adibidea.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Errorea: Argumentu kopuru baliogabea"],"This action was done by %1$s.":["Ekintza hau %1$s -k egina izan da."],"The reason given is: \\"%1$s\\".":["Emandako arrazoia ondorengoa da: \\"%1$s\\"."],"Groupchats":["Gelak"],"Add a new groupchat":["Gehitu gela berri bat"],"Query for groupchats":["Bilatu gelak"],"Announcements":[""],"Notification from %1$s":["%1$s -(r)en jakinarazpena"],"%1$s says":["%1$s -k dio"],"has gone offline":["deskonektatu egin da"],"has gone away":["joan egin da"],"is busy":["lanpeturik dago"],"has come online":["linean jarri da"],"wants to be your contact":["zure kontaktua izan nahi du"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Honi buruz"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Saioa itxi"],"Click to change your chat status":["Klikatu zure txat egoera aldatzeko"],"Your avatar image":["Zure abatarraren irudia"],"Checkbox for selecting the following fingerprint":["Hurrengo hatz-marka hautatzeko laukia"],"Device without a fingerprint":["Hatz-markarik gabeko gailua"],"Other OMEMO-enabled devices":["OMEMO gaiturik duten beste gailu batzuk"],"Checkbox to select fingerprints of all other OMEMO devices":["Beste OMEMO gailuen hatz-markak hautatzeko laukia"],"Remove checked devices and close":["Kendu markatutako gailuak eta itxi"],"Select all":["Hautatu guztiak"],"This device\'s OMEMO fingerprint":["Gailu honen OMEMO hatz-marka"],"Generate new keys and fingerprint":["Gako eta hatz-marka berriak sortu"],"Your Profile":["Zure profila"],"XMPP Address (JID)":["XMPP helbidea (JID)"],"Save and close":["Gorde eta itxi"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Banatu rolak komen bidez. Zure rolak izenaren ondoan agertzen dira txat mezuetan."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Errore bat gertatu da zure profileko datuak gordetzen saiatzean."],"You can check your browser\'s developer console for any error output.":["Zure nabigatzaileko garatzaile kontsolan egiaztatu dezakezu errorerik dagoen."],"Away":["Kanpoan"],"Busy":["Lanpetua"],"Custom status":["Egoera pertsonalizatua"],"Offline":["Deskonektaturik"],"Online":["Linean"],"Away for long":["Kanpoan denbora luzerako"],"Change chat status":["Txat egoera aldatu"],"Personal status message":["Egoera mezu pertsonala"],"I am %1$s":["%1$s nago"],"Are you sure you want to log out?":["Ziur al zaude saioa itxi nahi duzula?"],"online":["Linean"],"busy":["Lanpetua"],"away for long":["kanpoan denbora luzerako"],"away":["Kanpoan"],"offline":["deskonektatua"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Ezin izan da jasotako OMEMO mezu bat deszifratu errore bat dela eta."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["Badirudi %1$s -(e)k ez daukala OMEMO erabiltzeko gai den bezerorik. Ezingo da enkriptaturiko elkarrizketarik izan talde honetan."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["Mezuak testu lauan bidaltzen dira"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Barkatu, ez gara gai enkriptaturiko mezua bidaltzeko %1$s -(e)k beraien presentzia eguneraketetara izen emanda egotea behar duelako beraien OMEMO informazioa ikusi ahal izateko."],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Barkatu, ez gara gai enkriptaturiko mezua bidaltzeko %1$s -rentzako urruneko zerbitzaria ezin delako topatu."],"Unable to send an encrypted message due to an unexpected error.":["Ezin izan da mezua bidali errore bat dela eta."],"Sorry, an error occurred while trying to remove the devices.":["Errore bat gertatu da gailuak kentzen saiatzean."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ziur al zaude OMEMO gako berriak sortu nahi dituzula? Honek zure gako zaharrak ezabatuko ditu eta aurretiaz enkriptaturiko mezu guztiak ezingo dira irakurri gailu honetan."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Hau zifratutako OMEMO mezu bat da eta badirudi zure bezeroak ez duela onartzen. Gehiago jakiteko: https://conversations.im/omemo"]," e.g. conversejs.org":[" adib. conversejs.org"],"Fetch registration form":["Erregistro formularioa eskuratu"],"Tip: A list of public XMPP providers is available":["Aholkua: XMPP hornitzaile publikoen zerrenda bat dago eskuragarri"],"here":["hemen"],"Sorry, we\'re unable to connect to your chosen provider.":["Barkatu, ezin izan dugu zuk aukeraturiko hornitzailera konektatu."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Barkatu, emandako hornitzaileak ez du banda kontuen erregistroa onartzen. Saiatu beste hornitzaile batekin."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Zerbait oker joan da \\"%1$s\\"-(r)ekin konexioa ezartzean. Ziur al zaude existitzen dela?"],"Now logging you in":["Orain saio hasten"],"Registered successfully":["Arrakastaz erregistratua"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Hornitzaileak zure izen emate saiakera ukatu du. Mesedez egiaztatu sartutako balioak zuzenak direla."],"Leave this groupchat":["Atera gela honetatik"],"Click to toggle the list of open groupchats":["Egin klik irekitako gelen zerrenda hedatu/tolesteko"],"Open Groupchats":["Irekitako gelak"],"Are you sure you want to leave the groupchat %1$s?":["Ziur al zaude %1$s gelatik atera nahi duzula?"],"Add":["Gehitu"],"Add a Contact":["Kontaktu bat gehitu"],"This contact is busy":["Kontaktu hau lanpeturik dago"],"This contact is online":["Kontaktu hau linean dago"],"This contact is offline":["Kontaktu hau lineaz kanpo dago"],"This contact is unavailable":["Kontaktu hau ez dago erabilgarri"],"This contact is away for an extended period":["Kontaktu hau kanpoan dago denbora luzez"],"This contact is away":["Kontaktu hau kanpoan dago"],"Contact name":["Kontaktu izena"],"Optional nickname":["Aukerako ezizena"],"Sorry, could not find a contact with that name":[""],"Filter":["Iragazi"],"Filter by contact name":["Kontaktu izenaz iragazi"],"Filter by group name":["Talde izenaz iragazi"],"Filter by status":["Egoeraren araberan iragazi"],"Any":["Edozein"],"Unread":["Irakurri gabe"],"Chatty":["Hitzduna"],"Extended Away":["Denbora luzez at"],"Click to remove %1$s as a contact":["Klikatu %1$s kontaktuetatik ezabatzeko"],"Click to accept the contact request from %1$s":["Klikatu %1$s -(r)en kontaktu eskaera onartzeko"],"Click to decline the contact request from %1$s":["Klikatu %1$s -(r)en kontaktu eskaera baztertzeko"],"Are you sure you want to decline this contact request?":["Ziur al,zaude kontaktu eskaera hau baztertu nahi duzula?"],"Contacts":["Kontaktuak"],"Add a contact":["Kontaktu bat gehitu"]}}}')}}]); //# sourceMappingURL=eu-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/fi-LC_MESSAGES-converse-po.js b/src/conversejs/locales/fi-LC_MESSAGES-converse-po.js index 0c48d81620bc484edb8a51eb265561067d344962..ffe4d164779a9d699929680b773e9b2357b333cc 100644 --- a/src/conversejs/locales/fi-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/fi-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{429:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"fi"},"Create your account":["Luo tilisi"],"Please enter the XMPP provider to register with:":["Ole hyvä ja kirjoita XMPP-palveluntarjoaja rekisteröidäksesi:"],"Already have a chat account?":["Onko sinulla jo chat-tili?"],"Log in here":["Kirjaudu sisään tästä"],"Account Registration:":["Tilin rekisteröinti:"],"Register":["Rekisteröidy"],"Choose a different provider":["Valitse toinen tarjoaja"],"Hold tight, we\'re fetching the registration form…":["Odota, haemme rekisteröintilomaketta …"],"Cancel":["Peruuta"],"The connection has dropped, attempting to reconnect.":["Yhteys katkesi, yritetään muodostaa uudelleen yhteyttä."],"An error occurred while connecting to the chat server.":["Yhdistettäessä chat-palvelimeen tapahtui virhe."],"Your XMPP address and/or password is incorrect. Please try again.":["XMPP-osoitteesi ja / tai salasanasi ovat väärin. Yritä uudelleen."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Valitettavasti emme pystyneet muodostamaan yhteyttä XMPP-isäntään verkkotunnuksella:%1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP-palvelin ei tarjonnut tuettua todennusmekanismia"],"Sorry, could not determine upload URL.":["Valitettavasti lataus-URL-osoitetta ei voitu määrittää."],"Sorry, could not determine file upload URL.":["Valitettavasti tiedoston lataus-URL-osoitetta ei voitu määrittää."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Valitettavasti tiedostoa ei voitu ladata. Palvelimesi vastaus: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Valitettavasti tiedostoa ei voitu ladata."],"Sorry, looks like file upload is not supported by your server.":["Valitettavasti palvelin ei tue tiedostojen lähettämistä."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Tiedoston koko, %1$s, ylittää palvelimen salliman enimmäismäärän, joka on %2$s."],"Smileys and emotions":["Hymiöt ja tunteet"],"People":["Ihmiset"],"Activities":["Toiminta"],"Travel":["Matkustaa"],"Objects":["Esineet"],"Animals and nature":["Eläimet ja luonto"],"Food and drink":["Ruoka ja juoma"],"Symbols":["Symbolit"],"Flags":["Liput"],"Stickers":["Tarrat"],"This groupchat is not anonymous":["Tämä ryhmäkeskustelu ei ole anonyymi"],"This groupchat now shows unavailable members":["Tämä ryhmäkeskustelu näyttää nyt poissa olevat jäsenet"],"This groupchat does not show unavailable members":["Tämä ryhmäkeskustelu ei näytä jäseniä, joita ei ole käytettävissä"],"The groupchat configuration has changed":["Ryhmäkeskusteluasetukset ovat muuttuneet"],"Groupchat logging is now enabled":["Ryhmäkeskustelujen kirjaaminen on nyt käytössä"],"Groupchat logging is now disabled":["Ryhmäkeskustelujen kirjaaminen on nyt poistettu käytöstä"],"This groupchat is now no longer anonymous":["Tämä ryhmäkeskustelu ei ole enää anonyymi"],"This groupchat is now semi-anonymous":["Tämä ryhmäkeskustelu on nyt osittain anonyymi"],"This groupchat is now fully-anonymous":["Tämä ryhmäkeskustelu on nyt täysin anonyymi"],"A new groupchat has been created":["Uusi ryhmäkeskustelu on luotu"],"Your nickname has been automatically set to %1$s":["Nimimerkkisi on asetettu automaattisesti arvoon %1$s"],"Your nickname has been changed to %1$s":["Nimimerkkisi on muutettu muotoon %1$s"],"You have been banned from this groupchat":["Sinulta on ryhmäkeskustelu estetty"],"You have been kicked from this groupchat":["Sinut on poistettu tästä ryhmäkeskusteluista"],"You have been removed from this groupchat because of an affiliation change":["Sinut on poistettu tästä ryhmäkeskusteluista jäsenyyden muutoksen vuoksi"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sinut on poistettu tästä ryhmäkeskusteluista, koska ryhmäkeskustelu on vaihdettu vain jäsenille etkä ole jäsen"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sinut on poistettu tästä ryhmäkeskusteluista, koska sitä ylläpitävä palvelu suljetaan"],"Your message was not delivered because you weren\'t allowed to send it.":["Viestiäsi ei toimitettu, koska sinulla ei ollut oikeutta lähettää sitä."],"Your message was not delivered because you\'re not present in the groupchat.":["Viestiäsi ei toimitettu, koska et ole läsnä ryhmäkeskusteluissa."],"You\'re not allowed to register yourself in this groupchat.":["Et voi rekisteröidä itseäsi tähän ryhmäkeskusteluun."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Et voi rekisteröityä tähän ryhmäkeskusteluun, koska se on vain jäsenille."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nimimerkilläsi ei voi rekisteröidä tähän ryhmäkeskusteluun, se ei tue rekisteröintiä."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nimimerkkiäsi ei voi rekisteröidä tähän ryhmäkeskusteluun, toimitettu virheellinen tietolomake."],"Topic set by %1$s":["Aihe asetettu %1$s toimesta"],"Topic cleared by %1$s":["Aihe poistettu %1$s"],"%1$s has been banned by %2$s":["%2$s antoi porttikiellon käyttäjälle %1$s"],"%1$s has been banned":["%1$s on kielletty"],"%1$s\'s nickname has changed":["%1$s nimimerkki on muuttunut"],"%1$s has been kicked out by %2$s":["%2$s potki ulos käyttäjän %1$s"],"%1$s has been kicked out":["%1$s on poistettu"],"%1$s has been removed because of an affiliation change":["%1$s on poistettu jäsenyyden muutoksen vuoksi"],"%1$s has been removed for not being a member":["%1$s on poistettu, koska hän ei ole jäsen"],"%1$s is no longer an admin of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun järjestelmänvalvoja"],"%1$s is no longer an owner of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun omistaja"],"%1$s is no longer banned from this groupchat":["%1$s ei ole enää kielletty tästä ryhmäkeskustelusta"],"%1$s is no longer a member of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun jäsen"],"%1$s is now a member of this groupchat":["%1$s on nyt tämän ryhmäkeskustelun jäsen"],"%1$s is now an %2$s of this groupchat":["%1$s on nyt %2$s tästä ryhmäkeskustelusta"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Valitsemasi nimimerkki on varattu tai käytössä. Ole hyvä ja valitse toinen."],"Password incorrect":["Salasana väärin"],"You are not on the member list of this groupchat.":["Et ole tämän ryhmäkeskustelun jäsenluettelossa."],"You have been banned from this groupchat.":["Sinulta on kielletty ryhmäkeskustelu."],"You are not allowed to create new groupchats.":["Et voi luoda uusia ryhmäkeskusteluja."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Nimimerkkisi ei ole tämän ryhmäkeskustelun käytäntöjen mukainen."],"This groupchat does not (yet) exist.":["Tätä ryhmäkeskustelua ei ole (vielä) olemassa."],"This groupchat has reached its maximum number of participants.":["Tämä ryhmäkeskustelu on saavuttanut maksimimäärän osallistujia."],"Remote server not found":["Palvelinta ei löytynyt"],"The explanation given is: \\"%1$s\\".":["Annettu selitys on: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s on kutsunut sinut ryhmäkeskusteluun: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s on kutsunut sinut ryhmäkeskusteluun: %2$s, ja jättänyt seuraavan syyn: \\"%3$s\\""],"Error":["Virhe"],"Sorry, something went wrong while trying to save your bookmark.":["Jokin meni pieleen yritettäessä tallentaa kirjanmerkkiäsi."],"Timeout Error":["Aikakatkaisuvirhe"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Palvelin ei palauttanut kirjanmerkkejäsi sallitussa ajassa. Voit ladata sivun uudelleen ja pyytää niitä uudelleen."],"My contacts":["Yhteystiedot"],"Pending contacts":["Odottavat yhteystiedot"],"Contact requests":["Yhteyspyynnöt"],"Ungrouped":["Ryhmittämätön"],"New messages":["Uudet viestit"],"Sorry, there was an error while trying to add %1$s as a contact.":["Valitettavasti tapahtui virhe yrittäessäsi lisätä %1$s yhteystiedoksi."],"This client does not allow presence subscriptions":["Tämä asiakasohjelma ei salli läsnäolotilauksia"],"Click to hide these contacts":["Piilota nämä yhteystiedot napsauttamalla"],"Unbookmark this groupchat":["Poista tämä ryhmäkeskustelu kirjanmerkeistä"],"Click to open this groupchat":["Avaa tämä ryhmäkeskustelu napsauttamalla"],"Click to toggle the bookmarks list":["Napsauta vaihtaaksesi kirjanmerkkiluetteloa"],"Bookmarks":["Kirjanmerkit"],"Bookmark this groupchat":["Lisää tämä ryhmäkeskustelu kirjanmerkkeihin"],"Would you like this groupchat to be automatically joined upon startup?":["Haluatko, että tämä ryhmäkeskustelu liitetään automaattisesti käynnistyksen yhteydessä?"],"The name for this bookmark:":["Tämän kirjanmerkin nimi:"],"What should your nickname for this groupchat be?":["Mikä nimimerkkisi tähän ryhmäkeskusteluun pitäisi olla?"],"Save":["Tallentaa"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Haluatko varmasti poistaa kirjanmerkin \\"%1$s\\"?"],"Close":["Sulje"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Lataa äänitiedosto \\"%1$s\\""],"Download file \\"%1$s\\"":["Lataa tiedosto \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Viestiversiot"],"Retry":[""],"Uploading file:":["Lähetetään tiedosto:"],"%1$s has removed this message":["%1$s on poistanut tämän viestin"],"This message has been edited":["Tätä viestiä on muokattu"],"Show more":["Näytä lisää"],"No message history available.":["Viestihistoriaa ei ole saatavilla."],"Search results":["Hakutulokset"],"Search":["Hae"],"Insert emojis":["Lisää hymiöt"],"Send the message":["Lähetä viesti"],"Start a call":["Aloita puhelu"],"Message characters remaining":["Viestimerkkejä jäljellä"],"Choose a file to send":["Valitse lähetettävä tiedosto"],"Click to write as a normal (non-spoiler) message":["Napsauta kirjoittaaksesi normaalina (ei-spoileri) viestinä"],"Click to write your message as a spoiler":["Napsauta kirjoittaaksesi viestin spoilerina"],"The User\'s Profile Image":["Käyttäjän profiilikuva"],"Trusted":["Luotettu"],"Untrusted":["Ei-luotettu"],"OMEMO Fingerprints":["OMEMO-sormenjäljet"],"No OMEMO-enabled devices found":["OMEMO-yhteensopivia laitteita ei löytynyt"],"Remove as contact":["Poista kontakti"],"XMPP Address":["XMPP-osoite"],"Email":["Sähköposti"],"Full Name":["Koko nimi"],"Nickname":["Nimimerkki"],"Refresh":["Virkistää"],"Role":["Rooli"],"URL":["URL"],"%1$s is typing":["%1$s kirjoittaa"],"%1$s has stopped typing":["%1$s on lopettanut kirjoittamisen"],"%1$s has gone away":["%1$s on poissa"],"Remove messages":["Poista viestit"],"Close this chat":["Sulje chat"],"Write in the third person":["Kirjoita kolmannessa persoonassa"],"Show this menu":["Näytä tämä valikko"],"Hidden message":["Piilotettu viesti"],"Message":["Viesti"],"Optional hint":["Valinnainen vihje"],"You have unread messages":["Sinulla on lukemattomia viestejä"],"Details":["Tiedot"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Huomaa, että muut XMPP / Jabber-asiakkaat (ja palvelimet) eivät ehkä vielä tue peruuttamista ja että tätä viestiä ei välttämättä poisteta kaikkialta."],"Are you sure you want to retract this message?":["Haluatko varmasti peruuttaa tämän viestin?"],"Confirm":["Vahvistaa"],"You have an unsent message which will be lost if you continue. Are you sure?":["Sinulla on lähettämätön viesti, joka katoaa, jos jatkat. Oletko varma?"],"Are you sure you want to clear the messages from this conversation?":["Haluatko varmasti tyhjentää tämän keskustelun viestit?"],"%1$s has gone offline":["%1$s on mennyt offline-tilaan"],"%1$s is busy":["%1$s on varattu"],"%1$s is online":["%1$s on online-tilassa"],"Sorry, something went wrong while trying to refresh":["Jokin meni pieleen yrittäessäsi päivittää"],"Are you sure you want to remove this contact?":["Haluatko varmasti poistaa tämän yhteystiedon?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Valitettavasti tapahtui virhe yrittäessäsi poistaa %1$s yhteyshenkilönä."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Suorituskyvyn parantamiseksi tallennamme tietosi tämän selaimen välimuistiin. Poista tämä valintaruutu, jos kyseessä on julkinen tietokone tai jos haluat, että tietosi poistetaan, kun kirjaudut ulos. On tärkeää, että kirjaudut nimenomaisesti ulos, muuten kaikkia välimuistissa olevia tietoja ei ehkä poisteta. Huomaa, että kun käytetään epäluotettavaa laitetta, OMEMO-salaus EI ole käytettävissä."],"This is a trusted device":["Tämä on luotettava laite"],"Password":["Salasana"],"Create an account":["Luo tili"],"Don\'t have a chat account?":["Eikö sinulla ole chat-tiliä?"],"Log in":["Kirjaudu sisään"],"Disconnected":["Katkaistu"],"Click here to log in anonymously":["Napsauta tätä kirjautuaksesi anonyymisti"],"Username":["Käyttäjätunnus"],"user@domain":["käyttäjä@toimialue"],"Please enter a valid XMPP address":["Anna kelvollinen XMPP-osoite"],"Chat Contacts":["Chat-yhteystiedot"],"Toggle chat":["Vaihda chatti"],"Click to restore this chat":["Palauta tämä chat napsauttamalla"],"Minimized":["Minimoitu"],"Minimize this groupchat":["Pienennä tämä ryhmäkeskustelu"],"This field is required":["Tämä kenttä pitää täyttää"],"Join":["Liity"],"Enter a new Groupchat":["Anna uusi ryhmäkeskustelu"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["Ryhmäkeskustelun nimi"],"Groupchat address":["Ryhmäkeskusteluosoite"],"Groupchat id is invalid.":["Ryhmäkeskustelun tunnus on virheellinen."],"Invite":["Kutsu"],"Invite someone to this groupchat":["Kutsu henkilö tähän ryhmäkeskusteluun"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["Kutsun valinnainen syy"],"Show groupchats":["Näytä ryhmäkeskustelut"],"Server address":["Palvelimen osoite"],"Show more information on this groupchat":["Näytä lisätietoja tästä ryhmäkeskustelusta"],"Query for Groupchats":["Ryhmäkeskustelujen kysely"],"Description:":["Kuvaus:"],"Groupchat Address (JID):":["Groupchat-osoite (JID):"],"Participants:":["Osallistujat:"],"Features:":["Ominaisuuksia:"],"Requires authentication":["Edellyttää todennusta"],"Hidden":["Piilotettu"],"Requires an invitation":["Vaatii kutsun"],"Moderated":["Valvottu"],"Non-anonymous":["Ei-anonyymi"],"Open":["Avata"],"Permanent":["Pysyvä"],"Public":["Julkinen"],"Semi-anonymous":["Semi-anonyymi"],"Temporary":["Tilapäinen"],"Unmoderated":["Valvomattomat"],"conference.example.org":["conference.example.org"],"No groupchats found":["Ryhmäkeskusteluja ei löytynyt"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Valvojat ovat etuoikeutettuja käyttäjiä, jotka voivat muuttaa muiden käyttäjien rooleja (lukuun ottamatta niitä, joilla on järjestelmänvalvojan tai omistajan kytköksiä."],"The default role, implies that you can read and write messages.":["Oletusrooli tarkoittaa, että voit lukea ja kirjoittaa viestejä."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Vierailijat eivät saa kirjoittaa viestejä valvotussa usean käyttäjän keskustelussa."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Omistaja on korkein rooli. Omistajat voivat muokata kaikkien muiden käyttäjien rooleja ja yhteyksiä."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Järjestelmänvalvoja on toiseksi korkein rooli. Järjestelmänvalvojat voivat muokata kaikkien muiden käyttäjien rooleja ja yhteyksiä omistajia lukuun ottamatta."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Voit kieltää käyttäjän, annat heille kuuluminen \\"hylkiö\\"."],"Change role":["Vaihda rooli"],"New Role":["Uusi rooli"],"Reason":["Syy"],"Change affiliation":["Muuta kuulumista"],"New affiliation":["Uusi kuuluminen"],"Affiliation":["Kuuluminen"],"Moderator Tools":["Moderaattori työkalut"],"No users with that affiliation found.":["Käyttäjiä, joista on kyse, ei löytynyt."],"No users with that role found.":["Tätä roolia käyttäviä käyttäjiä ei löytynyt."],"Type here to filter the search results":[""],"Show users":["Näytä käyttäjät"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rooleja annetaan käyttäjille, jotka myöntävät tai kieltävät heille tiettyjä kyvykkyyksiä usean käyttäjän keskustelussa. Ne on määritetty joko eksplisiittisesti tai implisiittisesti osana kuulumista. Rooli, joka ei johdu liitoksesta, on voimassa vain käyttäjän istunnon ajan."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Kuuluminen on pitkäaikainen oikeus, joka tyypillisesti edellyttää tiettyä roolia ja joka antaa etuoikeuksia ja velvollisuuksia. Esimerkiksi järjestelmänvalvojilla ja omistajilla on automaattisesti moderaattorin rooli."],"Sorry, something went wrong while trying to set the affiliation":["Anteeksi, jokin meni pieleen, kun yrittää asettaa kuuluminen"],"Affiliation changed":["Kuuluminen muuttui"],"Role changed":["Rooli muuttui"],"You\'re not allowed to make that change":["Et saa tehdä sitä muutosta"],"Sorry, something went wrong while trying to set the role":["Anteeksi, jotain meni pieleen, kun yritetään asettaa rooli"],"Topic":["Aihe"],"Topic author":["Aiheen tekijä"],"Groupchat address (JID)":["Ryhmäkeskusteluosoite (JID)"],"Message archiving":["Viestien arkistointi"],"Messages are archived on the server":["Viestit arkistoidaan palvelimelle"],"Description":["Kuvaus"],"Features":["Ominaisuudet"],"This groupchat is not publicly searchable":["Tämä ryhmäkeskustelu ei ole julkisesti haettavissa"],"This groupchat is restricted to members only":["Tämä ryhmäkeskustelu on rajoitettu vain jäsenille"],"Members only":["Vain jäsenille"],"Participants entering this groupchat need to request permission to write":["Ryhmäkeskusteluun osallistuvien osallistujien on pyydettävä lupaa kirjoittaa"],"Name":["Nimi"],"This groupchat does not require a password upon entry":["Tämä ryhmäkeskustelu ei vaadi salasanaa sisäänkirjautumisen yhteydessä"],"No password required":["Salasanaa ei vaadita"],"Not anonymous":["Ei anonyymi"],"All other groupchat participants can see your XMPP address":["Kaikki muut ryhmäkeskusteluun osallistujat näkevät XMPP-osoitteesi"],"Not moderated":["Ei valvottu"],"Participants entering this groupchat can write right away":["Ryhmäkeskusteluun osallistujat voivat kirjoittaa heti"],"Online users":["Online-käyttäjät"],"Anyone can join this groupchat":["Kuka tahansa voi liittyä tähän ryhmäkeskusteluun"],"This groupchat requires a password before entry":["Tämä ryhmäkeskustelu vaatii salasanan ennen sisäänpääsyä"],"Password protected":["Salasana suojattu"],"Persistent":["Jatkuva"],"This groupchat persists even if it\'s unoccupied":["Tämä ryhmäkeskustelu jatkuu, vaikka se olisi tyhjillään"],"Only moderators can see your XMPP address":["Vain moderaattorit näkevät XMPP-osoitteesi"],"This groupchat will disappear once the last person leaves":["Tämä ryhmäkeskustelu katoaa, kun viimeinen henkilö lähtee"],"This groupchat is publicly searchable":["Tämä ryhmäkeskustelu on julkisesti haettavissa"],"Groupchat info for %1$s":["Ryhmäkeskustelun tiedot kohteelle %1$s"],"You\'re not allowed to send messages in this room":["Et voi lähettää viestejä tässä huoneessa"],"The conversation has moved. Click below to enter.":["Keskustelu on siirtynyt. Napsauta alta siirtyäksesi."],"This groupchat no longer exists":["Tätä ryhmäkeskustelua ei enää ole"],"Enter groupchat":["Liity ryhmäkeskusteluun"],"Choose a nickname to enter":["Valitse nimimerkki kirjoittaaksesi"],"Please choose your nickname":["Valitse nimimerkkisi"],"This groupchat requires a password":["Tämä groupchat vaatii salasanan"],"Password: ":["Salasana: "],"Submit":["Lähetä"],"This user is a moderator.":["Tämä käyttäjä on moderaattori."],"This user can send messages in this groupchat.":["Tämä käyttäjä voi lähettää viestejä tässä ryhmäkeskustelussa."],"This user can NOT send messages in this groupchat.":["Tämä käyttäjä EI VOI lähettää viestejä tässä ryhmäkeskustelussa."],"Owner":["Omistaja"],"Admin":["Admin"],"Member":["Jäsen"],"Moderator":["Moderaattori"],"Visitor":["Vierailija"],"Click to mention %1$s in your message.":["Valitse tämä, jos haluat mainita viestissäsi %1$s."],"Participants":["Osallistujat"],"%1$s has entered the groupchat":["%1$s on liittynyt ryhmäkeskusteluun"],"%1$s has left the groupchat":["%1$s on poistunut ryhmäkeskustelusta"],"%1$s is now a moderator":["%1$s on nyt moderaattori"],"%1$s is no longer a moderator":["%1$s ei ole enää moderaattori"],"%1$s has been given a voice":["%1$s on saanut äänen"],"%1$s has been muted":["%1$s on mykistetty"],"%1$s and %2$s":["%1$s ja %2$s"],"Change user\'s affiliation to admin":["Muuta käyttäjän liitos adminiksi"],"Ban user by changing their affiliation to outcast":["Estä käyttäjä muuttamalla heidän kuulumisensa hylkiöksi"],"Clear the chat area":["Tyhjennä chat-alue"],"Close this groupchat":["Sulje tämä ryhmäkeskustelu"],"Change user role to participant":["Käyttäjän roolin muuttaminen osallistujaksi"],"Remove this groupchat":["Poista tämä ryhmäkeskustelu"],"Kick user from groupchat":["Poista käyttäjä ryhmäkeskusteluista"],"Write in 3rd person":["Kirjoita kolmannessa persoonassa"],"Grant membership to a user":["Jäsenyyden myöntäminen käyttäjälle"],"Opens up the moderator tools GUI":["Avaa moderaattorityökalujen graafisen käyttöliittymän"],"Remove user\'s ability to post messages":["Poista käyttäjän kyky lähettää viestejä"],"Change your nickname":["Nimimerkin muuttaminen"],"Grant moderator role to user":["Myönnä moderaattorin rooli käyttäjälle"],"Grant ownership of this groupchat":["Myönnä omistajuus tähän ryhmäkeskusteluun"],"Register your nickname":["Rekisteröi nimimerkkisi"],"Revoke the user\'s current affiliation":["Peruuta käyttäjän nykyinen yhteys"],"Set groupchat subject":["Aseta ryhmäkeskustelu aihe"],"Set groupchat subject (alias for /subject)":["Aseta ryhmäkeskusteluaihe (alias / aiheelle)"],"Allow muted user to post messages":["Salli mykistetyn käyttäjän lähettää viestejä"],"You are about to retract this message.":["Olet perumassa tämän viestin."],"You may optionally include a message, explaining the reason for the retraction.":["Voit valinnaisesti sisällyttää viestin, joka selittää peruuttamisen syyn."],"Message Retraction":["Viestin peruuttaminen"],"Optional reason":["Valinnainen syy"],"Sorry, you\'re not allowed to retract this message":["Valitettavasti et voi peruuttaa tätä viestiä."],"A timeout occurred while trying to retract the message":["Aikakatkaisu yritettäessä peruuttaa viestiä"],"Sorry, you\'re not allowed to retract this message.":["Valitettavasti et saa peruuttaa tätä viestiä."],"Configure this groupchat":["Määritä tämä ryhmäkeskustelu"],"Invite someone to join this groupchat":["Kutsu joku liittymään tähän ryhmäkeskusteluun"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":["Tuhoa"],"Leave":["Lähde"],"Hide the list of participants":["Piilota osallistujien luettelo"],"Forbidden: you do not have the necessary role in order to do that.":["Kielletty: sinulla ei ole tarvittavaa roolia sen tekemiseen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Kielletty: sinulla ei ole tarvittavaa yhteyttä, jotta voit tehdä sen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Virhe: Komento %1$s ottaa kaksi argumenttia, käyttäjän nimimerkin ja valinnaisesti syyn."],"Error: couldn\'t find a groupchat participant based on your arguments":["Virhe: ryhmäkeskustelun osallistujaa ei löytynyt argumenttiesi perusteella"],"Error: found multiple groupchat participant based on your arguments":["Virhe: löytyi useita ryhmäkeskustelun osallistujia argumenttiesi perusteella"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":["Anteeksi, komennon suorittamisessa tapahtui virhe."],"Check your browser\'s developer console for details.":["Tarkista yksityiskohdat selaimesi kehittäjäkonsolista."],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Lempinimesi on \\"%1$s\\""],"Error: invalid number of arguments":["Virhe: virheellinen määrä argumentteja"],"This action was done by %1$s.":["Tämän toiminnon suoritti %1$s."],"The reason given is: \\"%1$s\\".":["Annettu syy on: \\"%1$s\\"."],"Groupchats":["Ryhmäkeskustelut"],"Add a new groupchat":["Uuden ryhmäkeskustelun lisääminen"],"Query for groupchats":["Ryhmäkeskustelujen kysely"],"Sorry, an error occurred while trying to submit the config form.":["Virhe yritettäessä lähettää määrityslomaketta."],"Announcements":["Ilmoitukset"],"Click to open this server message":["Avaa tämä palvelinviesti napsauttamalla"],"Notification from %1$s":["Ilmoitus kohteesta %1$s"],"%1$s says":["%1$s sanoo"],"has gone offline":["on mennyt offline-tilaan"],"has gone away":["on mennyt pois"],"is busy":["on varattu"],"has come online":["on tullut verkkoon"],"wants to be your contact":["haluaa olla yhteyshenkilösi"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Noin"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Avoimen Lähdekoodin %2$s XMPP chat client tuonut sinulle %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Käännä %2$s se omalle kielellesi"],"Log out":["Kirjaudu ulos"],"Click to change your chat status":["Muuta keskustelutilaasi napsauttamalla tätä"],"Show details about this chat client":["Näytä tämän chat-asiakkaan tiedot"],"Your avatar image":["Avatar-kuvasi"],"Checkbox for selecting the following fingerprint":["Valintaruutu seuraavan sormenjäljen valitsemiseksi"],"Device without a fingerprint":["Laite ilman sormenjälkiä"],"Other OMEMO-enabled devices":["Muut OMEMO-yhteensopivat laitteet"],"Checkbox to select fingerprints of all other OMEMO devices":["Valintaruutu valitaksesi kaikkien muiden OMEMO-laitteiden sormenjäljet"],"Remove checked devices and close":["Poista valitut laitteet ja sulje"],"Select all":["Valitse kaikki"],"This device\'s OMEMO fingerprint":["Tämän laitteen OMEMO-sormenjälki"],"Generate new keys and fingerprint":["Luo uusia avaimia ja sormenjälkiä"],"Your Profile":["Profiilisi"],"XMPP Address (JID)":["XMPP-osoite (JID)"],"Save and close":["Tallenna ja sulje"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Käytä pilkkuja erottamaan useita rooleja. Teidän roolit ovat osoittaneet, nimesi vieressä chat-viestejä."],"OMEMO":["OMEMO"],"Profile":["Profiili"],"Sorry, an error happened while trying to save your profile data.":["Anteeksi, tapahtui virhe yrittäessäsi tallentaa profiilisi tietoja."],"You can check your browser\'s developer console for any error output.":["Voit tarkistaa virheet selaimesi kehittäjäkonsolista."],"Away":["Poissa"],"Busy":["Varattu"],"Custom status":["Mukautettu tila"],"Offline":["Poissa"],"Online":["Online"],"Away for long":["Poissa pitkään"],"Change chat status":["Vaihda chatin tila"],"Personal status message":["Henkilökohtainen tilaviesti"],"I am %1$s":["Olen %1$s"],"Are you sure you want to log out?":["Haluatko varmasti kirjautua ulos?"],"online":["verkossa"],"busy":["Varattu"],"away for long":["pois pitkään"],"away":["pois"],"offline":["Offline"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ei näytä olevan asiakasta, joka tukee OMEMO:ta. Salattu chat ei ole enää mahdollista tässä ryhmäkeskustelussa."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Päästä päähän salausta ei voida käyttää, koska %1$s käyttää asiakasta, joka ei tue OMEMO:t a."],"Messages are being sent in plaintext":["Viestit lähetetään tekstinä"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Virhe yritettäessä poistaa laitteita."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Haluatko varmasti luoda uusia OMEMO-avaimia? Tämä poistaa vanhat avaimesi, eikä kaikkia aiemmin salattuja viestejä voi enää purkaa tässä laitteessa."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Emme valitettavasti voi lähettää salattua viestiä, koska %1$s edellyttää, että olet tilannut heidän läsnäolonsa, jotta näet heidän OMEMO-tietonsa"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Salattua viestiä ei voi lähettää, koska kohteen %1$s palvelinta ei löytynyt"],"Unable to send an encrypted message due to an unexpected error.":["Salattua viestiä ei voi lähettää odottamattoman virheen vuoksi."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Valitettavasti mitään laitteita ei löytynyt, joihin voimme lähettää OMEMO-salatun viestin."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tämä on OMEMO-salattu viesti, jota asiakkaasi ei näytä tukevan. Lisätietoja https://conversations.im/omemo"]," e.g. conversejs.org":[" esim. conversejs.org"],"Fetch registration form":["Hae rekisteröintilomake"],"Tip: A list of public XMPP providers is available":["Vihje: Julkisten XMPP-palveluntarjoajien luettelo on käytettävissä"],"here":["tässä"],"Sorry, we\'re unable to connect to your chosen provider.":["Valitettavasti emme voi muodostaa yhteyttä valitsemaasi palveluntarjoajaan."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Anteeksi, annettu tarjoaja ei tue bänditilin rekisteröintiä. Kokeile toista palveluntarjoajaa."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Jotain meni pieleen, kun muodostat yhteyden \\"%1$s\\". Oletko varma, että se on olemassa?"],"Now logging you in":["Kirjaudutaan sisään"],"Registered successfully":["Rekisteröity onnistuneesti"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Palveluntarjoaja hylkäsi rekisteröintiyrityksen. Tarkista syöttämiesi arvojen oikeellisuus."],"Leave this groupchat":["Jätä tämä ryhmäkeskustelu"],"Click to toggle the list of open groupchats":["Valitse tämä, jos haluat vaihtaa avoimien ryhmäkeskusteluiden luettelon"],"Open Groupchats":["Avaa ryhmäkeskusteluja"],"Are you sure you want to leave the groupchat %1$s?":["Oletko varma, että haluat jättää ryhmäkeskustelun %1$s?"],"Add":["Lisää"],"Add a Contact":["Lisää yhteystieto"],"This contact is busy":["Tämä yhteystieto on varattu"],"This contact is online":["Tämä yhteyshenkilö on verkossa"],"This contact is offline":["Tämä yhteyshenkilö on offline-tilassa"],"This contact is unavailable":["Tämä yhteystieto ei ole käytettävissä"],"This contact is away for an extended period":["Tämä kontakti on poissa pidemmän aikaa"],"This contact is away":["Tämä yhteyshenkilö on poissa"],"Contact name":["Yhteyshenkilön nimi"],"Optional nickname":["Valinnainen nimimerkki"],"Sorry, could not find a contact with that name":["Anteeksi, ei löytynyt kontaktia tällä nimellä"],"This contact has already been added":["Tämä yhteystieto on jo lisätty"],"Filter":["Suodatin"],"Filter by contact name":["Suodata yhteyshenkilön nimen perusteella"],"Filter by group name":["Suodata ryhmän nimen mukaan"],"Filter by status":["Suodata tilan mukaan"],"Any":["Mitään"],"Unread":["Lukemattomat"],"Chatty":["Puhelias"],"Extended Away":["Laajennettu pois"],"Click to remove %1$s as a contact":["Poista %1$s yhteystietona napsauttamalla tätä"],"Click to accept the contact request from %1$s":["Hyväksy yhteystietopyyntö kohteesta %1$s napsauttamalla tätä"],"Click to decline the contact request from %1$s":["Hylkää yhteystietopyyntö kohteesta %1$s napsauttamalla tätä"],"Are you sure you want to decline this contact request?":["Haluatko varmasti hylätä tämän yhteydenottopyynnön?"],"Contacts":["Yhteystiedot"],"Add a contact":["Lisää yhteystieto"],"Re-sync your contacts":["Yhteystietojen synkronointi uudelleen"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[151],{517:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"fi"},"Create your account":["Luo tilisi"],"Please enter the XMPP provider to register with:":["Ole hyvä ja kirjoita XMPP-palveluntarjoaja rekisteröidäksesi:"],"Already have a chat account?":["Onko sinulla jo chat-tili?"],"Log in here":["Kirjaudu sisään tästä"],"Account Registration:":["Tilin rekisteröinti:"],"Register":["Rekisteröidy"],"Choose a different provider":["Valitse toinen tarjoaja"],"Hold tight, we\'re fetching the registration form…":["Odota, haemme rekisteröintilomaketta …"],"Cancel":["Peruuta"],"The connection has dropped, attempting to reconnect.":["Yhteys katkesi, yritetään muodostaa uudelleen yhteyttä."],"An error occurred while connecting to the chat server.":["Yhdistettäessä chat-palvelimeen tapahtui virhe."],"Your XMPP address and/or password is incorrect. Please try again.":["XMPP-osoitteesi ja / tai salasanasi ovat väärin. Yritä uudelleen."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Valitettavasti emme pystyneet muodostamaan yhteyttä XMPP-isäntään verkkotunnuksella:%1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP-palvelin ei tarjonnut tuettua todennusmekanismia"],"Sorry, could not determine upload URL.":["Valitettavasti lataus-URL-osoitetta ei voitu määrittää."],"Sorry, could not determine file upload URL.":["Valitettavasti tiedoston lataus-URL-osoitetta ei voitu määrittää."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Valitettavasti tiedostoa ei voitu ladata. Palvelimesi vastaus: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Valitettavasti tiedostoa ei voitu ladata."],"You\'re not allowed to send a message.":["Et voi lähettää viestejä tässä huoneessa."],"Sorry, looks like file upload is not supported by your server.":["Valitettavasti palvelin ei tue tiedostojen lähettämistä."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Tiedoston koko, %1$s, ylittää palvelimen salliman enimmäismäärän, joka on %2$s."],"Smileys and emotions":["Hymiöt ja tunteet"],"People":["Ihmiset"],"Activities":["Toiminta"],"Travel":["Matkustaa"],"Objects":["Esineet"],"Animals and nature":["Eläimet ja luonto"],"Food and drink":["Ruoka ja juoma"],"Symbols":["Symbolit"],"Flags":["Liput"],"Stickers":["Tarrat"],"This groupchat is not anonymous":["Tämä ryhmäkeskustelu ei ole anonyymi"],"This groupchat now shows unavailable members":["Tämä ryhmäkeskustelu näyttää nyt poissa olevat jäsenet"],"This groupchat does not show unavailable members":["Tämä ryhmäkeskustelu ei näytä jäseniä, joita ei ole käytettävissä"],"The groupchat configuration has changed":["Ryhmäkeskusteluasetukset ovat muuttuneet"],"Groupchat logging is now enabled":["Ryhmäkeskustelujen kirjaaminen on nyt käytössä"],"Groupchat logging is now disabled":["Ryhmäkeskustelujen kirjaaminen on nyt poistettu käytöstä"],"This groupchat is now no longer anonymous":["Tämä ryhmäkeskustelu ei ole enää anonyymi"],"This groupchat is now semi-anonymous":["Tämä ryhmäkeskustelu on nyt osittain anonyymi"],"This groupchat is now fully-anonymous":["Tämä ryhmäkeskustelu on nyt täysin anonyymi"],"A new groupchat has been created":["Uusi ryhmäkeskustelu on luotu"],"Your nickname has been automatically set to %1$s":["Nimimerkkisi on asetettu automaattisesti arvoon %1$s"],"Your nickname has been changed to %1$s":["Nimimerkkisi on muutettu muotoon %1$s"],"You have been banned from this groupchat":["Sinulta on ryhmäkeskustelu estetty"],"You have been kicked from this groupchat":["Sinut on poistettu tästä ryhmäkeskusteluista"],"You have been removed from this groupchat because of an affiliation change":["Sinut on poistettu tästä ryhmäkeskusteluista jäsenyyden muutoksen vuoksi"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sinut on poistettu tästä ryhmäkeskusteluista, koska ryhmäkeskustelu on vaihdettu vain jäsenille etkä ole jäsen"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sinut on poistettu tästä ryhmäkeskusteluista, koska sitä ylläpitävä palvelu suljetaan"],"Your message was not delivered because you weren\'t allowed to send it.":["Viestiäsi ei toimitettu, koska sinulla ei ollut oikeutta lähettää sitä."],"Your message was not delivered because you\'re not present in the groupchat.":["Viestiäsi ei toimitettu, koska et ole läsnä ryhmäkeskusteluissa."],"A timeout happened while while trying to retract your message.":["Aikakatkaisu yritettäessä peruuttaa viestiä."],"You\'re not allowed to register yourself in this groupchat.":["Et voi rekisteröidä itseäsi tähän ryhmäkeskusteluun."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Et voi rekisteröityä tähän ryhmäkeskusteluun, koska se on vain jäsenille."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nimimerkilläsi ei voi rekisteröidä tähän ryhmäkeskusteluun, se ei tue rekisteröintiä."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nimimerkkiäsi ei voi rekisteröidä tähän ryhmäkeskusteluun, toimitettu virheellinen tietolomake."],"Topic set by %1$s":["Aihe asetettu %1$s toimesta"],"Topic cleared by %1$s":["Aihe poistettu %1$s"],"%1$s has been banned by %2$s":["%2$s antoi porttikiellon käyttäjälle %1$s"],"%1$s has been banned":["%1$s on kielletty"],"%1$s\'s nickname has changed":["%1$s nimimerkki on muuttunut"],"%1$s has been kicked out by %2$s":["%2$s potki ulos käyttäjän %1$s"],"%1$s has been kicked out":["%1$s on poistettu"],"%1$s has been removed because of an affiliation change":["%1$s on poistettu jäsenyyden muutoksen vuoksi"],"%1$s has been removed for not being a member":["%1$s on poistettu, koska hän ei ole jäsen"],"%1$s is no longer an admin of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun järjestelmänvalvoja"],"%1$s is no longer an owner of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun omistaja"],"%1$s is no longer banned from this groupchat":["%1$s ei ole enää kielletty tästä ryhmäkeskustelusta"],"%1$s is no longer a member of this groupchat":["%1$s ei ole enää tämän ryhmäkeskustelun jäsen"],"%1$s is now a member of this groupchat":["%1$s on nyt tämän ryhmäkeskustelun jäsen"],"%1$s is now an %2$s of this groupchat":["%1$s on nyt %2$s tästä ryhmäkeskustelusta"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Valitsemasi nimimerkki on varattu tai käytössä. Ole hyvä ja valitse toinen."],"Password incorrect":["Salasana väärin"],"You are not on the member list of this groupchat.":["Et ole tämän ryhmäkeskustelun jäsenluettelossa."],"You have been banned from this groupchat.":["Sinulta on kielletty ryhmäkeskustelu."],"You are not allowed to create new groupchats.":["Et voi luoda uusia ryhmäkeskusteluja."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Nimimerkkisi ei ole tämän ryhmäkeskustelun käytäntöjen mukainen."],"This groupchat does not (yet) exist.":["Tätä ryhmäkeskustelua ei ole (vielä) olemassa."],"This groupchat has reached its maximum number of participants.":["Tämä ryhmäkeskustelu on saavuttanut maksimimäärän osallistujia."],"Remote server not found":["Palvelinta ei löytynyt"],"The explanation given is: \\"%1$s\\".":["Annettu selitys on: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s on kutsunut sinut ryhmäkeskusteluun: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s on kutsunut sinut ryhmäkeskusteluun: %2$s, ja jättänyt seuraavan syyn: \\"%3$s\\""],"Error":["Virhe"],"Sorry, something went wrong while trying to save your bookmark.":["Jokin meni pieleen yritettäessä tallentaa kirjanmerkkiäsi."],"Timeout Error":["Aikakatkaisuvirhe"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Palvelin ei palauttanut kirjanmerkkejäsi sallitussa ajassa. Voit ladata sivun uudelleen ja pyytää niitä uudelleen."],"My contacts":["Yhteystiedot"],"Pending contacts":["Odottavat yhteystiedot"],"Contact requests":["Yhteyspyynnöt"],"Ungrouped":["Ryhmittämätön"],"New messages":["Uudet viestit"],"Sorry, there was an error while trying to add %1$s as a contact.":["Valitettavasti tapahtui virhe yrittäessäsi lisätä %1$s yhteystiedoksi."],"This client does not allow presence subscriptions":["Tämä asiakasohjelma ei salli läsnäolotilauksia"],"Click to hide these contacts":["Piilota nämä yhteystiedot napsauttamalla"],"Unbookmark this groupchat":["Poista tämä ryhmäkeskustelu kirjanmerkeistä"],"Click to open this groupchat":["Avaa tämä ryhmäkeskustelu napsauttamalla"],"Click to toggle the bookmarks list":["Napsauta vaihtaaksesi kirjanmerkkiluetteloa"],"Bookmarks":["Kirjanmerkit"],"Bookmark this groupchat":["Lisää tämä ryhmäkeskustelu kirjanmerkkeihin"],"Would you like this groupchat to be automatically joined upon startup?":["Haluatko, että tämä ryhmäkeskustelu liitetään automaattisesti käynnistyksen yhteydessä?"],"The name for this bookmark:":["Tämän kirjanmerkin nimi:"],"What should your nickname for this groupchat be?":["Mikä nimimerkkisi tähän ryhmäkeskusteluun pitäisi olla?"],"Save":["Tallentaa"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Haluatko varmasti poistaa kirjanmerkin \\"%1$s\\"?"],"Close":["Sulje"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Lataa äänitiedosto \\"%1$s\\""],"Download file \\"%1$s\\"":["Lataa tiedosto \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Viestiversiot"],"Retry":[""],"Uploading file:":["Lähetetään tiedosto:"],"%1$s has removed this message":["%1$s on poistanut tämän viestin"],"This message has been edited":["Tätä viestiä on muokattu"],"Show more":["Näytä lisää"],"No message history available.":["Viestihistoriaa ei ole saatavilla."],"Search results":["Hakutulokset"],"Search":["Hae"],"Insert emojis":["Lisää hymiöt"],"Send the message":["Lähetä viesti"],"Start a call":["Aloita puhelu"],"Message characters remaining":["Viestimerkkejä jäljellä"],"Choose a file to send":["Valitse lähetettävä tiedosto"],"Click to write as a normal (non-spoiler) message":["Napsauta kirjoittaaksesi normaalina (ei-spoileri) viestinä"],"Click to write your message as a spoiler":["Napsauta kirjoittaaksesi viestin spoilerina"],"The User\'s Profile Image":["Käyttäjän profiilikuva"],"Trusted":["Luotettu"],"Untrusted":["Ei-luotettu"],"OMEMO Fingerprints":["OMEMO-sormenjäljet"],"No OMEMO-enabled devices found":["OMEMO-yhteensopivia laitteita ei löytynyt"],"Remove as contact":["Poista kontakti"],"XMPP Address":["XMPP-osoite"],"Email":["Sähköposti"],"Full Name":["Koko nimi"],"Nickname":["Nimimerkki"],"Refresh":["Virkistää"],"Role":["Rooli"],"URL":["URL"],"%1$s is typing":["%1$s kirjoittaa"],"%1$s has stopped typing":["%1$s on lopettanut kirjoittamisen"],"%1$s has gone away":["%1$s on poissa"],"Remove messages":["Poista viestit"],"Close this chat":["Sulje chat"],"Write in the third person":["Kirjoita kolmannessa persoonassa"],"Show this menu":["Näytä tämä valikko"],"Hidden message":["Piilotettu viesti"],"Message":["Viesti"],"Optional hint":["Valinnainen vihje"],"You have unread messages":["Sinulla on lukemattomia viestejä"],"Details":["Tiedot"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Huomaa, että muut XMPP / Jabber-asiakkaat (ja palvelimet) eivät ehkä vielä tue peruuttamista ja että tätä viestiä ei välttämättä poisteta kaikkialta."],"Are you sure you want to retract this message?":["Haluatko varmasti peruuttaa tämän viestin?"],"Confirm":["Vahvistaa"],"You have an unsent message which will be lost if you continue. Are you sure?":["Sinulla on lähettämätön viesti, joka katoaa, jos jatkat. Oletko varma?"],"Are you sure you want to clear the messages from this conversation?":["Haluatko varmasti tyhjentää tämän keskustelun viestit?"],"%1$s has gone offline":["%1$s on mennyt offline-tilaan"],"%1$s is busy":["%1$s on varattu"],"%1$s is online":["%1$s on online-tilassa"],"Sorry, something went wrong while trying to refresh":["Jokin meni pieleen yrittäessäsi päivittää"],"Are you sure you want to remove this contact?":["Haluatko varmasti poistaa tämän yhteystiedon?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Valitettavasti tapahtui virhe yrittäessäsi poistaa %1$s yhteyshenkilönä."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Suorituskyvyn parantamiseksi tallennamme tietosi tämän selaimen välimuistiin. Poista tämä valintaruutu, jos kyseessä on julkinen tietokone tai jos haluat, että tietosi poistetaan, kun kirjaudut ulos. On tärkeää, että kirjaudut nimenomaisesti ulos, muuten kaikkia välimuistissa olevia tietoja ei ehkä poisteta. Huomaa, että kun käytetään epäluotettavaa laitetta, OMEMO-salaus EI ole käytettävissä."],"This is a trusted device":["Tämä on luotettava laite"],"Password":["Salasana"],"Create an account":["Luo tili"],"Don\'t have a chat account?":["Eikö sinulla ole chat-tiliä?"],"Log in":["Kirjaudu sisään"],"Disconnected":["Katkaistu"],"Click here to log in anonymously":["Napsauta tätä kirjautuaksesi anonyymisti"],"Username":["Käyttäjätunnus"],"user@domain":["käyttäjä@toimialue"],"Please enter a valid XMPP address":["Anna kelvollinen XMPP-osoite"],"Chat Contacts":["Chat-yhteystiedot"],"Toggle chat":["Vaihda chatti"],"Click to restore this chat":["Palauta tämä chat napsauttamalla"],"Minimized":["Minimoitu"],"Minimize this groupchat":["Pienennä tämä ryhmäkeskustelu"],"This user is a moderator.":["Tämä käyttäjä on moderaattori."],"This user can send messages in this groupchat.":["Tämä käyttäjä voi lähettää viestejä tässä ryhmäkeskustelussa."],"This user can NOT send messages in this groupchat.":["Tämä käyttäjä EI VOI lähettää viestejä tässä ryhmäkeskustelussa."],"Owner":["Omistaja"],"Admin":["Admin"],"Member":["Jäsen"],"Moderator":["Moderaattori"],"Visitor":["Vierailija"],"Click to mention %1$s in your message.":["Valitse tämä, jos haluat mainita viestissäsi %1$s."],"Participants":["Osallistujat"],"This field is required":["Tämä kenttä pitää täyttää"],"Join":["Liity"],"Enter a new Groupchat":["Anna uusi ryhmäkeskustelu"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["Ryhmäkeskustelun nimi"],"Groupchat address":["Ryhmäkeskusteluosoite"],"Groupchat id is invalid.":["Ryhmäkeskustelun tunnus on virheellinen."],"Invite":["Kutsu"],"Invite someone to this groupchat":["Kutsu henkilö tähän ryhmäkeskusteluun"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["Kutsun valinnainen syy"],"Show groupchats":["Näytä ryhmäkeskustelut"],"Server address":["Palvelimen osoite"],"Show more information on this groupchat":["Näytä lisätietoja tästä ryhmäkeskustelusta"],"Query for Groupchats":["Ryhmäkeskustelujen kysely"],"Description:":["Kuvaus:"],"Groupchat Address (JID):":["Groupchat-osoite (JID):"],"Participants:":["Osallistujat:"],"Features:":["Ominaisuuksia:"],"Requires authentication":["Edellyttää todennusta"],"Hidden":["Piilotettu"],"Requires an invitation":["Vaatii kutsun"],"Moderated":["Valvottu"],"Non-anonymous":["Ei-anonyymi"],"Open":["Avata"],"Permanent":["Pysyvä"],"Public":["Julkinen"],"Semi-anonymous":["Semi-anonyymi"],"Temporary":["Tilapäinen"],"Unmoderated":["Valvomattomat"],"conference.example.org":["conference.example.org"],"Groupchats found":["Löytyi ryhmäkeskusteluja"],"No groupchats found":["Ryhmäkeskusteluja ei löytynyt"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Valvojat ovat etuoikeutettuja käyttäjiä, jotka voivat muuttaa muiden käyttäjien rooleja (lukuun ottamatta niitä, joilla on järjestelmänvalvojan tai omistajan kytköksiä."],"The default role, implies that you can read and write messages.":["Oletusrooli tarkoittaa, että voit lukea ja kirjoittaa viestejä."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Vierailijat eivät saa kirjoittaa viestejä valvotussa usean käyttäjän keskustelussa."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Omistaja on korkein rooli. Omistajat voivat muokata kaikkien muiden käyttäjien rooleja ja yhteyksiä."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Järjestelmänvalvoja on toiseksi korkein rooli. Järjestelmänvalvojat voivat muokata kaikkien muiden käyttäjien rooleja ja yhteyksiä omistajia lukuun ottamatta."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Voit kieltää käyttäjän, annat heille kuuluminen \\"hylkiö\\"."],"Change role":["Vaihda rooli"],"New Role":["Uusi rooli"],"Reason":["Syy"],"Change affiliation":["Muuta kuulumista"],"New affiliation":["Uusi kuuluminen"],"Affiliation":["Kuuluminen"],"Moderator Tools":["Moderaattori työkalut"],"No users with that affiliation found.":["Käyttäjiä, joista on kyse, ei löytynyt."],"No users with that role found.":["Tätä roolia käyttäviä käyttäjiä ei löytynyt."],"Type here to filter the search results":[""],"Show users":["Näytä käyttäjät"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Rooleja annetaan käyttäjille, jotka myöntävät tai kieltävät heille tiettyjä kyvykkyyksiä usean käyttäjän keskustelussa. Ne on määritetty joko eksplisiittisesti tai implisiittisesti osana kuulumista. Rooli, joka ei johdu liitoksesta, on voimassa vain käyttäjän istunnon ajan."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Kuuluminen on pitkäaikainen oikeus, joka tyypillisesti edellyttää tiettyä roolia ja joka antaa etuoikeuksia ja velvollisuuksia. Esimerkiksi järjestelmänvalvojilla ja omistajilla on automaattisesti moderaattorin rooli."],"Sorry, something went wrong while trying to set the affiliation":["Anteeksi, jokin meni pieleen, kun yrittää asettaa kuuluminen"],"Affiliation changed":["Kuuluminen muuttui"],"Role changed":["Rooli muuttui"],"You\'re not allowed to make that change":["Et saa tehdä sitä muutosta"],"Sorry, something went wrong while trying to set the role":["Anteeksi, jotain meni pieleen, kun yritetään asettaa rooli"],"Topic":["Aihe"],"Topic author":["Aiheen tekijä"],"Groupchat address (JID)":["Ryhmäkeskusteluosoite (JID)"],"Message archiving":["Viestien arkistointi"],"Messages are archived on the server":["Viestit arkistoidaan palvelimelle"],"Description":["Kuvaus"],"Features":["Ominaisuudet"],"This groupchat is not publicly searchable":["Tämä ryhmäkeskustelu ei ole julkisesti haettavissa"],"This groupchat is restricted to members only":["Tämä ryhmäkeskustelu on rajoitettu vain jäsenille"],"Members only":["Vain jäsenille"],"Participants entering this groupchat need to request permission to write":["Ryhmäkeskusteluun osallistuvien osallistujien on pyydettävä lupaa kirjoittaa"],"Name":["Nimi"],"This groupchat does not require a password upon entry":["Tämä ryhmäkeskustelu ei vaadi salasanaa sisäänkirjautumisen yhteydessä"],"No password required":["Salasanaa ei vaadita"],"Not anonymous":["Ei anonyymi"],"All other groupchat participants can see your XMPP address":["Kaikki muut ryhmäkeskusteluun osallistujat näkevät XMPP-osoitteesi"],"Not moderated":["Ei valvottu"],"Participants entering this groupchat can write right away":["Ryhmäkeskusteluun osallistujat voivat kirjoittaa heti"],"Online users":["Online-käyttäjät"],"Anyone can join this groupchat":["Kuka tahansa voi liittyä tähän ryhmäkeskusteluun"],"This groupchat requires a password before entry":["Tämä ryhmäkeskustelu vaatii salasanan ennen sisäänpääsyä"],"Password protected":["Salasana suojattu"],"Persistent":["Jatkuva"],"This groupchat persists even if it\'s unoccupied":["Tämä ryhmäkeskustelu jatkuu, vaikka se olisi tyhjillään"],"Only moderators can see your XMPP address":["Vain moderaattorit näkevät XMPP-osoitteesi"],"This groupchat will disappear once the last person leaves":["Tämä ryhmäkeskustelu katoaa, kun viimeinen henkilö lähtee"],"This groupchat is publicly searchable":["Tämä ryhmäkeskustelu on julkisesti haettavissa"],"Groupchat info for %1$s":["Ryhmäkeskustelun tiedot kohteelle %1$s"],"You\'re not allowed to send messages in this room":["Et voi lähettää viestejä tässä huoneessa"],"The conversation has moved. Click below to enter.":["Keskustelu on siirtynyt. Napsauta alta siirtyäksesi."],"This groupchat no longer exists":["Tätä ryhmäkeskustelua ei enää ole"],"Enter groupchat":["Liity ryhmäkeskusteluun"],"Choose a nickname to enter":["Valitse nimimerkki kirjoittaaksesi"],"Please choose your nickname":["Valitse nimimerkkisi"],"This groupchat requires a password":["Tämä groupchat vaatii salasanan"],"Password: ":["Salasana: "],"Submit":["Lähetä"],"%1$s has entered the groupchat":["%1$s on liittynyt ryhmäkeskusteluun"],"%1$s has left the groupchat":["%1$s on poistunut ryhmäkeskustelusta"],"%1$s is now a moderator":["%1$s on nyt moderaattori"],"%1$s is no longer a moderator":["%1$s ei ole enää moderaattori"],"%1$s has been given a voice":["%1$s on saanut äänen"],"%1$s has been muted":["%1$s on mykistetty"],"%1$s and %2$s":["%1$s ja %2$s"],"Change user\'s affiliation to admin":["Muuta käyttäjän liitos adminiksi"],"Ban user by changing their affiliation to outcast":["Estä käyttäjä muuttamalla heidän kuulumisensa hylkiöksi"],"Clear the chat area":["Tyhjennä chat-alue"],"Close this groupchat":["Sulje tämä ryhmäkeskustelu"],"Change user role to participant":["Käyttäjän roolin muuttaminen osallistujaksi"],"Remove this groupchat":["Poista tämä ryhmäkeskustelu"],"Kick user from groupchat":["Poista käyttäjä ryhmäkeskusteluista"],"Write in 3rd person":["Kirjoita kolmannessa persoonassa"],"Grant membership to a user":["Jäsenyyden myöntäminen käyttäjälle"],"Opens up the moderator tools GUI":["Avaa moderaattorityökalujen graafisen käyttöliittymän"],"Remove user\'s ability to post messages":["Poista käyttäjän kyky lähettää viestejä"],"Change your nickname":["Nimimerkin muuttaminen"],"Grant moderator role to user":["Myönnä moderaattorin rooli käyttäjälle"],"Grant ownership of this groupchat":["Myönnä omistajuus tähän ryhmäkeskusteluun"],"Register your nickname":["Rekisteröi nimimerkkisi"],"Revoke the user\'s current affiliation":["Peruuta käyttäjän nykyinen yhteys"],"Set groupchat subject":["Aseta ryhmäkeskustelu aihe"],"Set groupchat subject (alias for /subject)":["Aseta ryhmäkeskusteluaihe (alias / aiheelle)"],"Allow muted user to post messages":["Salli mykistetyn käyttäjän lähettää viestejä"],"You are about to retract this message.":["Olet perumassa tämän viestin."],"You may optionally include a message, explaining the reason for the retraction.":["Voit valinnaisesti sisällyttää viestin, joka selittää peruuttamisen syyn."],"Message Retraction":["Viestin peruuttaminen"],"Optional reason":["Valinnainen syy"],"Sorry, you\'re not allowed to retract this message":["Valitettavasti et voi peruuttaa tätä viestiä"],"A timeout occurred while trying to retract the message":["Aikakatkaisu yritettäessä peruuttaa viestiä"],"Sorry, you\'re not allowed to retract this message.":["Valitettavasti et saa peruuttaa tätä viestiä."],"Configure this groupchat":["Määritä tämä ryhmäkeskustelu"],"Invite someone to join this groupchat":["Kutsu joku liittymään tähän ryhmäkeskusteluun"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":["Tuhoa"],"Leave":["Lähde"],"Hide the list of participants":["Piilota osallistujien luettelo"],"Forbidden: you do not have the necessary role in order to do that.":["Kielletty: sinulla ei ole tarvittavaa roolia sen tekemiseen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Kielletty: sinulla ei ole tarvittavaa yhteyttä, jotta voit tehdä sen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Virhe: Komento %1$s ottaa kaksi argumenttia, käyttäjän nimimerkin ja valinnaisesti syyn."],"Error: couldn\'t find a groupchat participant based on your arguments":["Virhe: ryhmäkeskustelun osallistujaa ei löytynyt argumenttiesi perusteella"],"Error: found multiple groupchat participant based on your arguments":["Virhe: löytyi useita ryhmäkeskustelun osallistujia argumenttiesi perusteella"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":["Anteeksi, komennon suorittamisessa tapahtui virhe."],"Check your browser\'s developer console for details.":["Tarkista yksityiskohdat selaimesi kehittäjäkonsolista."],"Please enter the XMPP address of this groupchat to confirm":["Ole hyvä ja kirjoita XMPP-palveluntarjoaja rekisteröidäksesi"],"name@example.org":["name@example.org"],"Optional reason for destroying this groupchat":["Valinnainen syy tämän ryhmäkeskuksen tuhoamiseen"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Lempinimesi on \\"%1$s\\""],"Error: invalid number of arguments":["Virhe: virheellinen määrä argumentteja"],"This action was done by %1$s.":["Tämän toiminnon suoritti %1$s."],"The reason given is: \\"%1$s\\".":["Annettu syy on: \\"%1$s\\"."],"Groupchats":["Ryhmäkeskustelut"],"Add a new groupchat":["Uuden ryhmäkeskustelun lisääminen"],"Query for groupchats":["Ryhmäkeskustelujen kysely"],"Sorry, an error occurred while trying to submit the config form.":["Virhe yritettäessä lähettää määrityslomaketta."],"Announcements":["Ilmoitukset"],"Click to open this server message":["Avaa tämä palvelinviesti napsauttamalla"],"Notification from %1$s":["Ilmoitus kohteesta %1$s"],"%1$s says":["%1$s sanoo"],"has gone offline":["on mennyt offline-tilaan"],"has gone away":["on mennyt pois"],"is busy":["on varattu"],"has come online":["on tullut verkkoon"],"wants to be your contact":["haluaa olla yhteyshenkilösi"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Noin"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Avoimen Lähdekoodin %2$s XMPP chat client tuonut sinulle %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Käännä %2$s se omalle kielellesi"],"Log out":["Kirjaudu ulos"],"Click to change your chat status":["Muuta keskustelutilaasi napsauttamalla tätä"],"Show details about this chat client":["Näytä tämän chat-asiakkaan tiedot"],"Your avatar image":["Avatar-kuvasi"],"Checkbox for selecting the following fingerprint":["Valintaruutu seuraavan sormenjäljen valitsemiseksi"],"Device without a fingerprint":["Laite ilman sormenjälkiä"],"Other OMEMO-enabled devices":["Muut OMEMO-yhteensopivat laitteet"],"Checkbox to select fingerprints of all other OMEMO devices":["Valintaruutu valitaksesi kaikkien muiden OMEMO-laitteiden sormenjäljet"],"Remove checked devices and close":["Poista valitut laitteet ja sulje"],"Select all":["Valitse kaikki"],"This device\'s OMEMO fingerprint":["Tämän laitteen OMEMO-sormenjälki"],"Generate new keys and fingerprint":["Luo uusia avaimia ja sormenjälkiä"],"Your Profile":["Profiilisi"],"XMPP Address (JID)":["XMPP-osoite (JID)"],"Save and close":["Tallenna ja sulje"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Käytä pilkkuja erottamaan useita rooleja. Teidän roolit ovat osoittaneet, nimesi vieressä chat-viestejä."],"OMEMO":["OMEMO"],"Profile":["Profiili"],"Sorry, an error happened while trying to save your profile data.":["Anteeksi, tapahtui virhe yrittäessäsi tallentaa profiilisi tietoja."],"You can check your browser\'s developer console for any error output.":["Voit tarkistaa virheet selaimesi kehittäjäkonsolista."],"Away":["Poissa"],"Busy":["Varattu"],"Custom status":["Mukautettu tila"],"Offline":["Poissa"],"Online":["Online"],"Away for long":["Poissa pitkään"],"Change chat status":["Vaihda chatin tila"],"Personal status message":["Henkilökohtainen tilaviesti"],"I am %1$s":["Olen %1$s"],"Are you sure you want to log out?":["Haluatko varmasti kirjautua ulos?"],"online":["verkossa"],"busy":["Varattu"],"away for long":["pois pitkään"],"away":["pois"],"offline":["Offline"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ei näytä olevan asiakasta, joka tukee OMEMO:ta. Salattu chat ei ole enää mahdollista tässä ryhmäkeskustelussa."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Päästä päähän salausta ei voida käyttää, koska %1$s käyttää asiakasta, joka ei tue OMEMO:t a."],"Messages are being sent in plaintext":["Viestit lähetetään tekstinä"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Emme valitettavasti voi lähettää salattua viestiä, koska %1$s edellyttää, että olet tilannut heidän läsnäolonsa, jotta näet heidän OMEMO-tietonsa"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Salattua viestiä ei voi lähettää, koska kohteen %1$s palvelinta ei löytynyt"],"Unable to send an encrypted message due to an unexpected error.":["Salattua viestiä ei voi lähettää odottamattoman virheen vuoksi."],"Sorry, an error occurred while trying to remove the devices.":["Virhe yritettäessä poistaa laitteita."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Haluatko varmasti luoda uusia OMEMO-avaimia? Tämä poistaa vanhat avaimesi, eikä kaikkia aiemmin salattuja viestejä voi enää purkaa tässä laitteessa."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Valitettavasti mitään laitteita ei löytynyt, joihin voimme lähettää OMEMO-salatun viestin."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tämä on OMEMO-salattu viesti, jota asiakkaasi ei näytä tukevan. Lisätietoja https://conversations.im/omemo"]," e.g. conversejs.org":[" esim. conversejs.org"],"Fetch registration form":["Hae rekisteröintilomake"],"Tip: A list of public XMPP providers is available":["Vihje: Julkisten XMPP-palveluntarjoajien luettelo on käytettävissä"],"here":["tässä"],"Sorry, we\'re unable to connect to your chosen provider.":["Valitettavasti emme voi muodostaa yhteyttä valitsemaasi palveluntarjoajaan."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Anteeksi, annettu tarjoaja ei tue bänditilin rekisteröintiä. Kokeile toista palveluntarjoajaa."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Jotain meni pieleen, kun muodostat yhteyden \\"%1$s\\". Oletko varma, että se on olemassa?"],"Now logging you in":["Kirjaudutaan sisään"],"Registered successfully":["Rekisteröity onnistuneesti"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Palveluntarjoaja hylkäsi rekisteröintiyrityksen. Tarkista syöttämiesi arvojen oikeellisuus."],"Leave this groupchat":["Jätä tämä ryhmäkeskustelu"],"Click to toggle the list of open groupchats":["Valitse tämä, jos haluat vaihtaa avoimien ryhmäkeskusteluiden luettelon"],"Open Groupchats":["Avaa ryhmäkeskusteluja"],"Are you sure you want to leave the groupchat %1$s?":["Oletko varma, että haluat jättää ryhmäkeskustelun %1$s?"],"Add":["Lisää"],"Add a Contact":["Lisää yhteystieto"],"This contact is busy":["Tämä yhteystieto on varattu"],"This contact is online":["Tämä yhteyshenkilö on verkossa"],"This contact is offline":["Tämä yhteyshenkilö on offline-tilassa"],"This contact is unavailable":["Tämä yhteystieto ei ole käytettävissä"],"This contact is away for an extended period":["Tämä kontakti on poissa pidemmän aikaa"],"This contact is away":["Tämä yhteyshenkilö on poissa"],"Contact name":["Yhteyshenkilön nimi"],"Optional nickname":["Valinnainen nimimerkki"],"Sorry, could not find a contact with that name":["Anteeksi, ei löytynyt kontaktia tällä nimellä"],"This contact has already been added":["Tämä yhteystieto on jo lisätty"],"Filter":["Suodatin"],"Filter by contact name":["Suodata yhteyshenkilön nimen perusteella"],"Filter by group name":["Suodata ryhmän nimen mukaan"],"Filter by status":["Suodata tilan mukaan"],"Any":["Mitään"],"Unread":["Lukemattomat"],"Chatty":["Puhelias"],"Extended Away":["Laajennettu pois"],"Click to remove %1$s as a contact":["Poista %1$s yhteystietona napsauttamalla tätä"],"Click to accept the contact request from %1$s":["Hyväksy yhteystietopyyntö kohteesta %1$s napsauttamalla tätä"],"Click to decline the contact request from %1$s":["Hylkää yhteystietopyyntö kohteesta %1$s napsauttamalla tätä"],"Are you sure you want to decline this contact request?":["Haluatko varmasti hylätä tämän yhteydenottopyynnön?"],"Contacts":["Yhteystiedot"],"Add a contact":["Lisää yhteystieto"],"Re-sync your contacts":["Yhteystietojen synkronointi uudelleen"]}}}')}}]); //# sourceMappingURL=fi-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/fr-LC_MESSAGES-converse-po.js b/src/conversejs/locales/fr-LC_MESSAGES-converse-po.js index 17550951ca012cdbaf11d4e68c1eea30fa597042..fd4b3b1c71aa6b3a952a90cc80a07f3602db9e56 100644 --- a/src/conversejs/locales/fr-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/fr-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{430:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"fr"},"Create your account":["Créer votre compte"],"Please enter the XMPP provider to register with:":["Veuillez saisir le fournisseur XMPP auprès duquel s’inscrire :"],"Already have a chat account?":["Vous avez déjà un compte ?"],"Log in here":["Connectez-vous ici"],"Account Registration:":["Création de compte :"],"Register":["S’inscrire"],"Choose a different provider":["Choisir un autre fournisseur"],"Hold tight, we\'re fetching the registration form…":["Ne bougez pas, on va chercher le formulaire d’inscription…"],"Cancel":["Annuler"],"The connection has dropped, attempting to reconnect.":["La connexion a été perdue, tentative de reconnexion en cours."],"An error occurred while connecting to the chat server.":["Une erreur est survenue lors de la connexion au serveur de discussion."],"Your XMPP address and/or password is incorrect. Please try again.":["Votre addresse XMPP et/ou votre mot de passe sont/est incorrect(s). Veuillez réessayer."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Désolé, nous n’avons pas pu nous connecter à l’hôte XMPP avec le domaine : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Le serveur XMPP n’a pas proposé un mécanisme d’authentification pris en charge"],"Sorry, could not determine upload URL.":["Désolé, impossible de déterminer l’URL d’envoi de fichier."],"Sorry, could not determine file upload URL.":["Désolé, impossible de déterminer l’URL pour envoyer le fichier."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Désolé, le téléversement du fichier a échoué. Votre serveur a répondu : « %1$s »"],"Sorry, could not succesfully upload your file.":["Désolé, le téléversement du fichier a échoué."],"You\'re not allowed to retract your message.":["Vous n’êtes pas autorisé(e) a retirer votre message."],"Sorry, an error occurred while trying to retract your message.":["Désolé, une erreur s’est produite lors du retrait de votre message."],"You\'re not allowed to send a message.":["Vous n’êtes pas autorisé(e) à envoyer de message."],"Sorry, an error occurred while trying to send your message.":["Désolé, une erreur est survenue lors de l’envoi de votre message."],"Sorry, looks like file upload is not supported by your server.":["Désolé, votre serveur semble ne pas prendre en charge le téléversement de fichiers."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La taille de votre fichier, %1$s, dépasse le maximum autorisé par votre serveur, qui est %2$s."],"Smileys and emotions":["Émoticônes"],"People":["Personnes"],"Activities":["Activités"],"Travel":["Voyage"],"Objects":["Objets"],"Animals and nature":["Animaux et nature"],"Food and drink":["Cuisine et boissons"],"Symbols":["Symboles"],"Flags":["Drapeaux"],"Stickers":["Autocollants"],"This groupchat is not anonymous":["Ce salon n’est pas anonyme"],"This groupchat now shows unavailable members":["Ce salon affiche maintenant les membres indisponibles"],"This groupchat does not show unavailable members":["Ce salon n’affiche pas les membres indisponibles"],"The groupchat configuration has changed":["Les paramètres de ce salon ont été modifiés"],"Groupchat logging is now enabled":["L’inscription est maintenant activé sur ce salon"],"Groupchat logging is now disabled":["L’inscription est maintenant désactivé sur ce salon"],"This groupchat is now no longer anonymous":["Ce salon n’est plus anonyme"],"This groupchat is now semi-anonymous":["Ce salon est maintenant semi-anonyme"],"This groupchat is now fully-anonymous":["Ce salon est maintenant entièrement anonyme"],"A new groupchat has been created":["Un nouveau salon a été créé"],"Your nickname has been automatically set to %1$s":["Votre pseudo a été automatiquement défini à  : %1$s"],"Your nickname has been changed to %1$s":["Votre pseudo a été modifié en : %1$s"],"You have been banned from this groupchat":["Vous avez été banni de ce salon"],"You have exited this groupchat due to a technical problem":["Vous avez été retiré de ce salon à cause d’un problème technique"],"You have been kicked from this groupchat":["Vous avez été expulsé de ce salon"],"You have been removed from this groupchat because of an affiliation change":["Vous avez été retiré de ce salon du fait d’un changement d’affiliation"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Vous avez été retiré de ce salon parce que ce salon est devenu réservé aux membres et vous n’êtes pas membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Vous avez été retiré de ce salon parce que le service sur lequel il est hébergé est en train d’être arrêté"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Votre retrait de message n\'a pas été délivré parce que vous n’êtes pas présent(e) dans le salon."],"Your message was not delivered because you weren\'t allowed to send it.":["Votre message n’a pas été délivré car vous n’avez pas été autorisé à l’envoyer."],"Your message was not delivered because you\'re not present in the groupchat.":["Votre message n\'a pas été délivré parce que vous n\'êtes pas présent dans le salon."],"You\'re not allowed to register yourself in this groupchat.":["Vous n’êtes pas autorisé à vous enregistrer vous-mêmes dans ce salon."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Vous n’êtes pas autorisé à vous inscrire dans ce salon parce qu’il est réservé aux membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Impossible d’enregistrer votre pseudo dans ce salon, il ne gère pas l’enregistrement."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Impossible d’enregistrer votre pseudo dans ce salon, un formulaire invalide a été envoyé."],"Topic set by %1$s":["Le sujet a été défini par %1$s"],"Topic cleared by %1$s":["Le sujet de ce salon a été retiré par %1$s"],"%1$s has been banned by %2$s":["%1$s a été banni par %2$s"],"%1$s has been banned":["%1$s a été banni"],"%1$s\'s nickname has changed":["Le pseudo de %1$s a changé"],"%1$s has been kicked out by %2$s":["%1$s a été expulsé par %2$s"],"%1$s has been kicked out":["%1$s a été expulsé"],"%1$s has been removed because of an affiliation change":["%1$s a été supprimé à cause d’un changement d’affiliation"],"%1$s has been removed for not being a member":["%1$s a été supprimé car il n’est pas membre"],"%1$s is no longer an admin of this groupchat":["%1$s n’est plus un administrateur de ce salon"],"%1$s is no longer an owner of this groupchat":["%1$s n’est plus un propriétaire de ce salon"],"%1$s is no longer banned from this groupchat":["%1$s n’est plus banni de ce salon"],"%1$s is no longer a member of this groupchat":["%1$s n\'est plus membre de ce salon"],"%1$s is now a member of this groupchat":["%1$s est désormais membre de ce salon"],"%1$s is now an %2$s of this groupchat":["%1$s est maintenant %2$s de ce salon"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Le pseudo choisi est réservé ou actuellement utilisé, veuillez en choisir un différent."],"Password incorrect":["Mot de passe incorrect"],"You are not on the member list of this groupchat.":["Vous n’êtes pas dans la liste des membres de ce salon."],"You have been banned from this groupchat.":["Vous avez été banni de ce salon."],"You are not allowed to create new groupchats.":["Vous n’êtes pas autorisé à créer des salons."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Votre pseudo n’est pas conforme à la politique de ce salon."],"This groupchat does not (yet) exist.":["Ce salon n’existe pas (pour l’instant)."],"This groupchat has reached its maximum number of participants.":["Ce salon a atteint sa limite maximale d’occupants."],"Remote server not found":["Serveur distant introuvable"],"The explanation given is: \\"%1$s\\".":["La raison indiquée est : « %1$s »."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vous invite à rejoindre le salon : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vous invite à rejoindre le salon : %2$s, avec le message suivant : « %3$s »"],"Error":["Erreur"],"Sorry, something went wrong while trying to save your bookmark.":["Désolé, quelque chose s’est mal passé pendant la sauvegarde de ce marque-page."],"Timeout Error":["Erreur de délai d\'attente dépassé"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Ce serveur n\'a pas renvoyé vos marque-pages dans le temps imparti. Vous pouvez recharger la page pour les demander à nouveau."],"My contacts":["Mes contacts"],"Pending contacts":["Contacts en attente"],"Contact requests":["Demandes de contacts"],"Ungrouped":["Sans groupe"],"New messages":["Nouveaux messages"],"Sorry, there was an error while trying to add %1$s as a contact.":["Désolé, il y a eu une erreur lors de la tentative d’ajout de %1$s comme contact."],"This client does not allow presence subscriptions":["Ce client ne permet pas les mises à jour de disponibilité"],"Click to hide these contacts":["Cliquez pour cacher ces contacts"],"Unbookmark this groupchat":["Retirer ce salon des marque-pages"],"Click to open this groupchat":["Cliquer pour ouvrir ce salon"],"Click to toggle the bookmarks list":["Cliquer pour ouvrir la liste des salons"],"Bookmarks":["Marques-page"],"Bookmark this groupchat":["Mettre ce salon en marque-page"],"Would you like this groupchat to be automatically joined upon startup?":["Voulez-vous que ce salon soit automatiquement rejoint au démarrage ?"],"The name for this bookmark:":["Nom de ce marque-page :"],"What should your nickname for this groupchat be?":["Que devrait être votre pseudo sur ce salon ?"],"Save":["Sauvegarder"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Voulez-vous vraiment supprimer le marque-page « %1$s » ?"],"Unbookmark":["Retirer le marque-page"],"Bookmark":["Marque-page"],"Close":["Fermer"],"OK":["OK"],"Image: ":["Image : "],"Download audio file \\"%1$s\\"":["Télécharger le fichier audio « %1$s »"],"Download file \\"%1$s\\"":["Télécharger le fichier « %1$s »"],"Cancel Editing":["Annuler l’édition"],"Edit":["Éditer"],"Retract":["Retirer"],"Message versions":["Versions du message"],"Retry":["Réessayer"],"Uploading file:":["Téléversement du fichier :"],"%1$s has removed this message":["%1$s a supprimé ce message"],"This message has been edited":["Ce message a été modifié"],"Show more":["Afficher plus"],"Show less":["Afficher moins"],"No message history available.":["Aucun historique des messages n\'est disponible."],"Search results":["Résultats de recherche"],"Search":["Rechercher"],"Insert emojis":["Insérer un emoji"],"Send the message":["Envoyer le message"],"Start a call":["Démarrer un appel"],"Message characters remaining":["Caractères de message restants"],"Hide participants":["Cacher les participants"],"Show participants":["Afficher les participants"],"Choose a file to send":["Choisir un fichier à envoyer"],"Click to write as a normal (non-spoiler) message":["Cliquez pour écrire un message sans spoiler"],"Click to write your message as a spoiler":["Cliquez pour écrire votre message en tant que spoiler"],"The User\'s Profile Image":["Image de profil de l’utilisateur"],"Trusted":["De confiance"],"Untrusted":["Pas de confiance"],"OMEMO Fingerprints":["Empreintes de clé OMEMO"],"No OMEMO-enabled devices found":["Aucun client compatible avec le chiffrement OMEMO n\'a été trouvé"],"Remove as contact":["Supprimer ce contact"],"XMPP Address":["Adresse XMPP"],"Email":["Courriel"],"Full Name":["Nom complet"],"Nickname":["Pseudo"],"Refresh":["Rafraîchir"],"Role":["Rôle"],"URL":["URL"],"%1$s is typing":["%1$s est en train d’écrire"],"%1$s has stopped typing":["%1$s a arrêté d’écrire"],"%1$s has gone away":["%1$s n’est plus disponible"],"Remove messages":["Effacer les messages"],"Close this chat":["Fermer cette fenêtre de discussion"],"Write in the third person":["Écrire à la troisième personne"],"Show this menu":["Afficher ce menu"],"Hidden message":["Message caché"],"Message":["Message"],"Optional hint":["Indice optionnel"],"You have unread messages":["Vous avez de nouveaux messages"],"Details":["Détails"],"See more information about this person":["Afficher plus d\'informations sur cette personne"],"Close and end this conversation":["Fermer et terminer cette conversation"],"Sorry, the connection has been lost, and your message could not be sent":["Désolé, la connexion a été perdue et votre message n’a pas pu être envoyé"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Sachez que d\'autres clients (et serveurs) XMPP/Jabber peuvent ne pas encore prendre en charge les rétractations et que ce message peut ne pas être supprimé partout."],"Are you sure you want to retract this message?":["Voulez-vous vraiment retirer ce message ?"],"Confirm":["Confirmer"],"You have an unsent message which will be lost if you continue. Are you sure?":["Vous avez un message non envoyé qui sera perdu si vous continuez. Êtes-vous sûr ?"],"Are you sure you want to clear the messages from this conversation?":["Voulez-vous vraiment effacer les messages de cette conversation ?"],"%1$s has gone offline":["%1$s s’est déconnecté"],"%1$s is busy":["%1$s est occupé"],"%1$s is online":["%1$s est en ligne"],"Sorry, something went wrong while trying to refresh":["Désolé, quelque chose s’est mal passé mal lors de la tentative de réactualisation"],"Are you sure you want to remove this contact?":["Voulez-vous vraiment retirer ce contact ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Désolé, il y a eu une erreur lors de la tentative de retrait de %1$s comme contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Pour améliorer les performances, nous stockons vos données dans ce navigateur. Décochez cette case si vous êtes sur un ordinateur public, ou si vous voulez que vos données soient supprimées lorsque vous vous déconnecterez. Il est important que vous vous déconnectiez explicitement, sinon les données stockées ne seront pas forcément toutes supprimées. Notez que lorsque l’ordinateur utilisé n’est pas considéré de confiance, le chiffrement OMEMO n’est PAS disponible."],"This is a trusted device":["Ceci est un appareil de confiance"],"Password":["Mot de passe"],"Create an account":["Créer un compte"],"Don\'t have a chat account?":["Vous n’avez pas de compte ?"],"Log in":["Se connecter"],"Disconnected":["Déconnecté"],"Click here to log in anonymously":["Cliquez ici pour se connecter anonymement"],"Username":["Nom"],"user@domain":["utilisateur@domaine"],"Please enter a valid XMPP address":["Veuillez saisir une adresse XMPP valide"],"Chat Contacts":["Contacts de chat"],"Toggle chat":["Ouvrir la discussion"],"Click to restore this chat":["Cliquez pour afficher cette discussion"],"Minimized":["Réduit(s)"],"Minimize":["Réduire"],"Minimize this chat":["Réduire cette discussion"],"Minimize this groupchat":["Réduire ce groupe de discussion"],"This field is required":["Ce champ est requis"],"Join":["Rejoindre"],"Enter a new Groupchat":["Entrer dans un nouveau salon"],"name@conference.example.org":["nom@chat.example.org"],"Groupchat name":["Nom du salon"],"Groupchat address":["Adresse du salon"],"Groupchat id is invalid.":["L’identifiant du groupe de discussion est invalide."],"Invite":["Inviter"],"Invite someone to this groupchat":["Inviter quelqu’un à ce groupe de discussion"],"user@example.org":["utilisateur@exemple.org"],"Optional reason for the invitation":["Raison facultative pour l’invitation"],"Show groupchats":["Afficher les salons"],"Server address":["Adresse du serveur"],"Show more information on this groupchat":["Afficher plus d’informations sur ce salon"],"Query for Groupchats":["Chercher un salon"],"Description:":["Description :"],"Groupchat Address (JID):":["Adresse du salon (JID) :"],"Participants:":["Participants :"],"Features:":["Caractéristiques :"],"Requires authentication":["Nécessite une authentification"],"Hidden":["Caché"],"Requires an invitation":["Nécessite une invitation"],"Moderated":["Modéré"],"Non-anonymous":["Non-anonyme"],"Open":["Ouvert"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semi-anonyme"],"Temporary":["Temporaire"],"Unmoderated":["Non modéré"],"conference.example.org":["chat.exemple.org"],"Groupchats found":["Salons trouvés"],"No groupchats found":["Aucun salon trouvé"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Les modérateurs sont des utilisateurs privilégiés qui peuvent changer les rôles d\'autres utilisateurs (exceptés les administrateurs ou les propriétaires d\'affiliation)."],"The default role, implies that you can read and write messages.":["Le rôle par défaut donne le droit de lire et écrire des messages."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Les visiteurs ne sont pas autorisés à écrire dans une conversation à plusieurs sous modération."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["L\'affiliation la plus distinctive est celle de propriétaire. Un propriétaire peut changer les rôles et les affiliations de tout les utilisateurs."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["L\'affiliation d\'administrateur est la 2e plus haute. Un administrateur peut changer les rôles de tout les utilisateurs sauf le propriétaire."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Donner l\'affiliation de « banni » exclue un utilisateur."],"Change role":["Changer de rôle"],"New Role":["Nouveau rôle"],"Reason":["Motif"],"Change affiliation":["Changer d\'affiliation"],"New affiliation":["Nouvelle affiliation"],"Affiliation":["Affiliation"],"Moderator Tools":["Outils de modération"],"No users with that affiliation found.":["Aucun utilisateur trouvé avec cette affiliation."],"No users with that role found.":["Aucun utilisateur trouvé avec ce rôle."],"Type here to filter the search results":["Écrivez ici pour filtrer les résultats de recherche"],"Show users":["Afficher les utilisateurs"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Des rôles sont désignés pour autoriser ou non certaines actions dans une conversation à plusieurs. Les désignations peuvent être explicites, ou hérités implicitement d\'une affiliation. Un rôle qui n\'est pas hérité d\'une affiliation est valable que pendant la session de l\'utilisateur."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Typiquement, une affiliation est un titre à vie qui donne un rôle particulier avec ses privilèges et ses responsabilités. Par exemple, les administrateurs et les propriétaires ont d\'office le rôle de modérateur."],"Sorry, you\'re not allowed to make that change":["Désolé, vous n’êtes pas autorisé(e) à faire cette modification"],"Sorry, something went wrong while trying to set the affiliation":["Désolé, un problème est survenu lors de la modification de l\'affiliation"],"Affiliation changed":["Affiliation modifiée"],"Role changed":["Rôle modifié"],"You\'re not allowed to make that change":["Vous n’êtes pas autorisé·e à faire cette modification"],"Sorry, something went wrong while trying to set the role":["Désolé, un problème est survenu lors de la modification de rôle"],"Topic":["Sujet"],"Topic author":["Auteur du sujet"],"Groupchat address (JID)":["Adresse du salon (JID)"],"Message archiving":["Archivage des messages"],"Messages are archived on the server":["Les messages sont archivés sur le serveur"],"Description":["Description"],"Features":["Caractéristiques"],"This groupchat is not publicly searchable":["Ce salon ne peut pas être recherché publiquement"],"This groupchat is restricted to members only":["Ce salon est restreint aux membres uniquement"],"Members only":["Membres uniquement"],"Participants entering this groupchat need to request permission to write":["Les participants qui entrent dans ce salon doivent demander la permission pour écrire"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Ce salon ne nécessite pas de mot de passe pour y accéder"],"No password required":["Pas de mot de passe nécessaire"],"Not anonymous":["Non-anonyme"],"All other groupchat participants can see your XMPP address":["Tous les autres occupants de ce salon peuvent voir votre adresse XMPP"],"Not moderated":["Non modéré"],"Participants entering this groupchat can write right away":["Les participants qui entrent dans ce salon peuvent écrire directement"],"Online users":["Utilisateurs en ligne"],"Anyone can join this groupchat":["N’importe qui peut rejoindre ce salon"],"This groupchat requires a password before entry":["Ce salon nécessite un mot de passe pour y accéder"],"Password protected":["Protégé par mot de passe"],"Persistent":["Persistant"],"This groupchat persists even if it\'s unoccupied":["Ce salon persiste même s’il est inoccupé"],"Only moderators can see your XMPP address":["Seuls les modérateurs peuvent voir votre adresse XMPP"],"This groupchat will disappear once the last person leaves":["Ce salon disparaîtra au départ de la dernière personne"],"This groupchat is publicly searchable":["Ce salon peut être recherché publiquement"],"Groupchat info for %1$s":["Informations sur le salon %1$s"],"You\'re not allowed to send messages in this room":["Vous n\'êtes pas autorisé à envoyer des messages dans ce salon"],"The conversation has moved. Click below to enter.":["Ce salon a déménagé. Cliquez ci-dessous pour rejoindre sa nouvelle adresse."],"This groupchat no longer exists":["Ce salon n’existe plus"],"Hide the groupchat topic":["Masquer le sujet de la discussion de groupe"],"This groupchat is bookmarked":["Cette salon est mis en marque-page"],"Enter groupchat":["Entrer dans le salon"],"Choose a nickname to enter":["Choisir un surnom"],"Please choose your nickname":["Veuillez choisir votre pseudo"],"This groupchat requires a password":["Ce salon nécessite un mot de passe"],"Password: ":["Mot de passe : "],"Submit":["Soumettre"],"This user is a moderator.":["Cet utilisateur est un modérateur."],"This user can send messages in this groupchat.":["Cet utilisateur peut envoyer des messages dans ce salon."],"This user can NOT send messages in this groupchat.":["Cet utilisateur ne peut PAS envoyer de messages dans ce salon."],"Owner":["Propriétaire"],"Admin":["Administrateur"],"Member":["Membre"],"Moderator":["Modérateur"],"Visitor":["Visiteur"],"Click to mention %1$s in your message.":["Cliquer pour citer %1$s dans votre message."],"Participants":["Participants"],"%1$s has entered the groupchat":["%1$s a rejoint le salon"],"%1$s has left the groupchat":["%1$s a quitté le salon"],"%1$s is now a moderator":["%1$s est désormais un modérateur"],"%1$s is no longer a moderator":["%1$s n’est plus un modérateur"],"%1$s has been given a voice":["%1$s s\'est vu accorder la parole"],"%1$s has been muted":["%1$s a été mis en sourdine"],"%1$s and %2$s":["%1$s et %2$s"],"%1$s are typing":["%1$s est en train d’écrire"],"%1$s have stopped typing":["%1$s a arrêté d’écrire"],"%1$s have gone away":["%1$s n’est plus disponible"],"%1$s have entered the groupchat":["%1$s a rejoint le salon"],"%1$s have left the groupchat":["%1$s a quitté le salon"],"%1$s are now moderators":["%1$s sont désormais modérateurs"],"%1$s are no longer moderators":["%1$s ne sont plus modérateurs"],"%1$s have been given voices":["%1$s se sont vus accorder la parole"],"%1$s have been muted":["%1$s ont été mis en sourdine"],"Change user\'s affiliation to admin":["Changer le rôle de l’utilisateur en administrateur"],"Ban user by changing their affiliation to outcast":["Bannir un utilisateur en changeant son affiliation"],"Clear the chat area":["Fermer cette fenêtre de discussion"],"Close this groupchat":["Fermer ce groupe de discussion"],"Change user role to participant":["Changer le rôle de l’utilisateur en participant"],"Remove this groupchat":["Supprimer ce salon"],"Kick user from groupchat":["Expulser l’utilisateur du salon"],"Write in 3rd person":["Écrire à la troisième personne"],"Grant membership to a user":["Autoriser l’utilisateur à être membre"],"Opens up the moderator tools GUI":["Ouvre l\'interface graphique des outils de modération"],"Remove user\'s ability to post messages":["Retirer le droit d’envoyer des messages"],"Change your nickname":["Changer votre pseudo"],"Grant moderator role to user":["Changer le rôle de l’utilisateur en modérateur"],"Grant ownership of this groupchat":["Accorder la propriété de ce salon"],"Register your nickname":["Enregistrer votre pseudo"],"Revoke the user\'s current affiliation":["Révoquer l\'affiliation actuelle de l\'utilisateur"],"Set groupchat subject":["Définir le sujet du salon"],"Set groupchat subject (alias for /subject)":["Définir le sujet du salon (alias pour /subject)"],"Allow muted user to post messages":["Autoriser les utilisateurs muets à poster des messages"],"You are about to retract this message.":["Vous êtes sur le point de retirer ce message."],"You may optionally include a message, explaining the reason for the retraction.":["Vous pouvez, de façon optionnelle, inclure un message expliquant la raison du retrait."],"Message Retraction":["Retrait du message"],"Optional reason":["Raison facultative"],"Sorry, you\'re not allowed to retract this message":["Désolé, vous n\'êtes pas autorisé à retirer ce message"],"A timeout occurred while trying to retract the message":["Une erreur s\'est produite lors du retrait du message, le délai d\'attente est dépassé"],"Sorry, you\'re not allowed to retract this message.":["Désolé, vous n\'êtes pas autorisé a retirer ce message."],"Show more information about this groupchat":["Afficher plus d’informations sur ce salon"],"Configure":["Configurer"],"Configure this groupchat":["Configurer ce salon"],"Invite someone to join this groupchat":["Inviter quelqu’un à rejoindre ce salon"],"Show topic":["Afficher le sujet"],"Hide topic":["Masquer le sujet"],"Show the topic message in the heading":["Afficher le message de sujet dans l\'en-tête"],"Hide the topic in the heading":["Masquer le sujet dans l\'en-tête"],"Moderate":["Modérer"],"Moderate this groupchat":["Modérer ce salon"],"Destroy":["Détruire"],"Leave":["Quitter"],"Leave and close this groupchat":["Quitter et fermer ce salon"],"Are you sure you want to leave this groupchat?":["Voulez-vous vraiment quitter ce salon ?"],"Hide the list of participants":["Cacher la liste des participants"],"Forbidden: you do not have the necessary role in order to do that.":["Interdit : vous n’avez pas le rôle nécessaire pour faire ça."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Interdit : vous n’avez pas l’affiliation nécessaire pour faire ça."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erreur : la commande « %1$s » prend deux paramètres, le pseudo de l’utilisateur et une raison optionnelle."],"Error: couldn\'t find a groupchat participant based on your arguments":["Erreur : ne trouve pas de participant au salon sur la base de vos arguments"],"Error: found multiple groupchat participant based on your arguments":["Erreur : plusieurs participants au salon trouvés sur la base de vos arguments"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Impossible de trouver de participant avec ce pseudo. Il se peut qu’il ait quitté le salon."],"Sorry, an error happened while running the command.":["Désolé, une erreur est survenue lors de l\'exécution de la commande."],"Check your browser\'s developer console for details.":["Vérifiez les erreurs dans la console de développement de votre navigateur."],"Are you sure you want to destroy this groupchat?":["Voulez-vous vraiment détruire ce salon ?"],"Please enter the XMPP address of this groupchat to confirm":["Veuillez saisir l’adresse XMPP de ce salon pour confirmation"],"name@example.org":["nom@exemple.org"],"Optional reason for destroying this groupchat":["Raison optionnelle pour détruire ce salon"],"Optional XMPP address for a new groupchat that replaces this one":["Adresse XMPP optionnelle du nouveau salon qui remplace celui-ci"],"replacement@example.org":["remplacement@exemple.org"],"Your nickname is \\"%1$s\\"":["Votre pseudo est \\"%1$s\\""],"Error: invalid number of arguments":["Erreur : nombre d’arguments invalide"],"This action was done by %1$s.":["Cette action a été réalisée par %1$s."],"The reason given is: \\"%1$s\\".":["La raison indiquée est : « %1$s »."],"Groupchats":["Salons"],"Add a new groupchat":["Ajouter un nouveau salon"],"Query for groupchats":["Chercher un salon"],"Sorry, an error occurred while trying to submit the config form.":["Désolé, une erreur est survenue lors de la validation du formulaire de configuration."],"Close these announcements":["Fermer ces annonces"],"Announcements":["Annonces"],"Click to open this server message":["Cliquez pour ouvrir le message de ce serveur"],"Notification from %1$s":["Notification depuis %1$s"],"%1$s says":["%1$s dit"],"has gone offline":["s’est déconnecté"],"has gone away":["est absent"],"is busy":["est occupé"],"has come online":["s’est déconnecté"],"wants to be your contact":["veut être votre contact"],"Hide":["Cacher"],"Execute":["Exécuter"],"On which entity do you want to run commands?":["Sur quelle entité voulez-vous lancer des commandes ?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Certains services et entités XMPP permettent à des utilisateurs privilégiés d’exécuter des commandes ad-hoc sur eux."],"Commands found":["Commandes trouvées"],"List available commands":["Lister les commandes disponibles"],"No commands found":["Aucune commande trouvée"],"Sorry, an error occurred while looking for commands on that entity.":["Désolé, une erreur est survenue en cherchant des commandes sur cette entité."],"The specified entity doesn\'t support ad-hoc commands":["L’entité spécifiée ne prend pas en charge les commandes ad-hoc"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Désolé, une erreur s’est produite lors de l’exécution de la commande. Vérifiez la console de développement de votre navigateur pour plus de détails"],"About":["À propos"],"Commands":["Commandes"],"Settings":["Préférences"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s libre %2$s qui vous est fourni par %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduisez-le %2$s dans votre langue"],"Log out":["Se déconnecter"],"Click to change your chat status":["Cliquez pour changer votre statut"],"Show details about this chat client":["Afficher plus d’informations sur ce client"],"Your avatar image":["Votre image d’avatar"],"Checkbox for selecting the following fingerprint":["Case à cocher pour sélectionner l’empreinte OMEMO suivante"],"Device without a fingerprint":["Client sans empreinte de clé OMEMO"],"Checkbox for selecting the following device":["Case à cocher pour sélectionner le périphérique OMEMO suivant"],"Other OMEMO-enabled devices":["Autres clients ayant activé le chiffrement OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Case à cocher pour sélectionner les empreintes de tous les autres clients OMEMO"],"Remove checked devices and close":["Supprimer les clients OMEMO sélectionnés, et fermer"],"Select all":["Tout sélectionner"],"This device\'s OMEMO fingerprint":["Empreinte de clé OMEMO de ce client"],"Generate new keys and fingerprint":["Générer de nouvelles clés et empreintes de clés"],"Your Profile":["Votre profil"],"XMPP Address (JID)":["Adresse XMPP (JID)"],"Save and close":["Enregistrer et fermer"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilisez une virgule pour séparer plusieurs rôles. Vos rôles sont affichés à côté de votre nom dans vos messages."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Désolé, quelque chose s’est mal passé pendant la sauvegarde de votre profil."],"You can check your browser\'s developer console for any error output.":["Vous pouvez surveiller toute erreur qui apparaîtrait dans la console de développement de votre navigateur."],"Away":["Absent"],"Busy":["Occupé"],"Custom status":["Statut personnel"],"Offline":["Déconnecté"],"Online":["En ligne"],"Away for long":["Absent pour une longue durée"],"Change chat status":["changer votre statut de chat"],"Personal status message":["Message de statut personnel"],"I am %1$s":["Je suis %1$s"],"Are you sure you want to log out?":["Voulez-vous vraiment vous déconnecter ?"],"online":["en ligne"],"busy":["occupé"],"away for long":["absent pour une longue durée"],"away":["absent"],"offline":["Déconnecté"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Désolé, impossible de déchiffrer un message chiffré avec OMEMO à cause d’une erreur."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ne semble pas avoir un client qui supporte OMEMO. Le chiffrement ne sera plus possible dans ce groupe de discussion."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Impossible d’utiliser le chiffrement bout à bout dans ce salon, soit parce qu’il est semi-anonyme, soit parce que tous les participants ne gèrent pas OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Impossible d’utiliser le chiffrement bout à bout parce que %1$s utilise un client qui ne gère pas OMEMO."],"Messages are being sent in plaintext":["Les messages sont envoyés en clair"],"Messages are sent encrypted":["Vos messages sont envoyés chiffrés"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Ce salon doit être réservé aux membres et non-anonyme pour permettre les messages chiffrés OMEMO"],"Sorry, an error occurred while trying to remove the devices.":["Désolé, une erreur est survenue en tentant de supprimer les clients OMEMO."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Voulez-vous vraiment générer de nouvelles clefs OMEMO ? Ceci retirera vos anciennes clefs et tous les messages déjà chiffrés ne seront plus déchiffrables sur ce client."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Désolé, impossible d\'envoyer un message chiffré parce que %1$s nécessitent que vous soyez abonné à leur présence afin de voir leurs informations OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Désolé, impossible d\'envoyer un message chiffré parce que le serveur distant de %1$s n\'est pas joignable"],"Unable to send an encrypted message due to an unexpected error.":["Impossible d’envoyer un message chiffré à cause d’une erreur."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Désolé, impossible de trouver un appareil auquel envoyer un message chiffré avec OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ceci est un message chiffré avec OMEMO, que votre client ne semble pas prendre en charge. Pour plus d’informations, allez voir https://conversations.im/omemo"]," e.g. conversejs.org":[" par exemple conversejs.org"],"Fetch registration form":["Récupération du formulaire d’enregistrement"],"Tip: A list of public XMPP providers is available":["Astuce : une liste publique de fournisseurs XMPP est disponible"],"here":["ici"],"Sorry, we\'re unable to connect to your chosen provider.":["Désolé, nous n’avons pas pu nous connecter à votre fournisseur."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Désolé, le fournisseur indiqué ne supporte pas l’enregistrement de compte en ligne. Merci d’essayer avec un autre fournisseur."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Quelque chose a échoué lors de l’établissement de la connexion avec « %1$s ». Existe-t-il vraiment ?"],"Now logging you in":["En cours de connexion"],"Registered successfully":["Enregistré avec succès"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Le fournisseur a rejeté votre demande d’inscription. Merci de vérifier que les données que vous avez fournies sont correctes."],"Leave this groupchat":["Quitter ce salon"],"Click to toggle the list of open groupchats":["Cliquer pour ouvrir la liste des salons ouverts"],"Open Groupchats":["Salons ouverts"],"Are you sure you want to leave the groupchat %1$s?":["Voulez-vous vraiment quitter le salon « %1$s » ?"],"Add":["Ajouter"],"Add a Contact":["Ajouter un contact"],"This contact is busy":["Ce contact est occupé"],"This contact is online":["Ce contact est connecté"],"This contact is offline":["Ce contact est déconnecté"],"This contact is unavailable":["Ce contact est indisponible"],"This contact is away for an extended period":["Ce contact est absent"],"This contact is away":["Ce contact est absent"],"Contact name":["Nom du contact"],"Optional nickname":["Pseudonyme optionnel"],"Sorry, could not find a contact with that name":["Désolé, impossible de trouver un contact avec ce nom"],"This contact has already been added":["Ce contact est déjà enregistré"],"Filter":["Filtrer"],"Filter by contact name":["Filtrer par nom de contact"],"Filter by group name":["Filtrer par nom de groupe"],"Filter by status":["Filtrer par statut"],"Any":["Aucun"],"Unread":["Non lu"],"Chatty":["Bavard"],"Extended Away":["Absence longue durée"],"Click to remove %1$s as a contact":["Cliquez pour retirer le contact %1$s"],"Click to accept the contact request from %1$s":["Cliquez pour accepter la demande d’ajout de contact de %1$s"],"Click to decline the contact request from %1$s":["Cliquez pour décliner la demande d’ajout de contact de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Cliquez pour discuter avec %1$s (adresse XMPP : %2$s)"],"Are you sure you want to decline this contact request?":["Voulez-vous vraiment rejeter cette demande d’ajout de contact ?"],"Contacts":["Contacts"],"Add a contact":["Ajouter un contact"],"Re-sync your contacts":["Resynchroniser vos contacts"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[152],{518:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"fr"},"Create your account":["Créer votre compte"],"Please enter the XMPP provider to register with:":["Veuillez saisir le fournisseur XMPP auprès duquel s’inscrire :"],"Already have a chat account?":["Vous avez déjà un compte ?"],"Log in here":["Connectez-vous ici"],"Account Registration:":["Création de compte :"],"Register":["S’inscrire"],"Choose a different provider":["Choisir un autre fournisseur"],"Hold tight, we\'re fetching the registration form…":["Ne bougez pas, on va chercher le formulaire d’inscription…"],"Cancel":["Annuler"],"The connection has dropped, attempting to reconnect.":["La connexion a été perdue, tentative de reconnexion en cours."],"An error occurred while connecting to the chat server.":["Une erreur est survenue lors de la connexion au serveur de discussion."],"Your XMPP address and/or password is incorrect. Please try again.":["Votre addresse XMPP et/ou votre mot de passe sont/est incorrect(s). Veuillez réessayer."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Désolé, nous n’avons pas pu nous connecter à l’hôte XMPP avec le domaine : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Le serveur XMPP n’a pas proposé un mécanisme d’authentification pris en charge"],"Undecryptable OMEMO message":["Message OMEMO non déchiffrable"],"Sorry, could not determine upload URL.":["Désolé, impossible de déterminer l’URL d’envoi de fichier."],"Sorry, could not determine file upload URL.":["Désolé, impossible de déterminer l’URL pour envoyer le fichier."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Désolé, le téléversement du fichier a échoué. Votre serveur a répondu : « %1$s »"],"Sorry, could not succesfully upload your file.":["Désolé, le téléversement du fichier a échoué."],"You\'re not allowed to retract your message.":["Vous n’êtes pas autorisé(e) a retirer votre message."],"Sorry, an error occurred while trying to retract your message.":["Désolé, une erreur s’est produite lors du retrait de votre message."],"You\'re not allowed to send a message.":["Vous n’êtes pas autorisé(e) à envoyer de message."],"Sorry, an error occurred while trying to send your message.":["Désolé, une erreur est survenue lors de l’envoi de votre message."],"Sorry, looks like file upload is not supported by your server.":["Désolé, votre serveur semble ne pas prendre en charge le téléversement de fichiers."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La taille de votre fichier, %1$s, dépasse le maximum autorisé par votre serveur, qui est %2$s."],"Smileys and emotions":["Émoticônes"],"People":["Personnes"],"Activities":["Activités"],"Travel":["Voyage"],"Objects":["Objets"],"Animals and nature":["Animaux et nature"],"Food and drink":["Cuisine et boissons"],"Symbols":["Symboles"],"Flags":["Drapeaux"],"Stickers":["Autocollants"],"This groupchat is not anonymous":["Ce salon n’est pas anonyme"],"This groupchat now shows unavailable members":["Ce salon affiche maintenant les membres indisponibles"],"This groupchat does not show unavailable members":["Ce salon n’affiche pas les membres indisponibles"],"The groupchat configuration has changed":["Les paramètres de ce salon ont été modifiés"],"Groupchat logging is now enabled":["L’inscription est maintenant activé sur ce salon"],"Groupchat logging is now disabled":["L’inscription est maintenant désactivé sur ce salon"],"This groupchat is now no longer anonymous":["Ce salon n’est plus anonyme"],"This groupchat is now semi-anonymous":["Ce salon est maintenant semi-anonyme"],"This groupchat is now fully-anonymous":["Ce salon est maintenant entièrement anonyme"],"A new groupchat has been created":["Un nouveau salon a été créé"],"Your nickname has been automatically set to %1$s":["Votre pseudo a été automatiquement défini à  : %1$s"],"Your nickname has been changed to %1$s":["Votre pseudo a été modifié en : %1$s"],"You have been banned from this groupchat":["Vous avez été banni de ce salon"],"You have exited this groupchat due to a technical problem":["Vous avez été retiré de ce salon à cause d’un problème technique"],"You have been kicked from this groupchat":["Vous avez été expulsé de ce salon"],"You have been removed from this groupchat because of an affiliation change":["Vous avez été retiré de ce salon du fait d’un changement d’affiliation"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Vous avez été retiré de ce salon parce que ce salon est devenu réservé aux membres et vous n’êtes pas membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Vous avez été retiré de ce salon parce que le service sur lequel il est hébergé est en train d’être arrêté"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Votre retrait de message n\'a pas été délivré parce que vous n’êtes pas présent(e) dans le salon."],"Your message was not delivered because you weren\'t allowed to send it.":["Votre message n’a pas été délivré car vous n’avez pas été autorisé à l’envoyer."],"Your message was not delivered because you\'re not present in the groupchat.":["Votre message n\'a pas été délivré parce que vous n\'êtes pas présent dans le salon."],"A timeout happened while while trying to retract your message.":["Une erreur s\'est produite lors du retrait du message ; le délai d\'attente est dépassé."],"You\'re not allowed to register yourself in this groupchat.":["Vous n’êtes pas autorisé à vous enregistrer vous-mêmes dans ce salon."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Vous n’êtes pas autorisé à vous inscrire dans ce salon parce qu’il est réservé aux membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Impossible d’enregistrer votre pseudo dans ce salon, il ne gère pas l’enregistrement."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Impossible d’enregistrer votre pseudo dans ce salon, un formulaire invalide a été envoyé."],"Topic set by %1$s":["Le sujet a été défini par %1$s"],"Topic cleared by %1$s":["Le sujet de ce salon a été retiré par %1$s"],"%1$s has been banned by %2$s":["%1$s a été banni par %2$s"],"%1$s has been banned":["%1$s a été banni"],"%1$s\'s nickname has changed":["Le pseudo de %1$s a changé"],"%1$s has been kicked out by %2$s":["%1$s a été expulsé par %2$s"],"%1$s has been kicked out":["%1$s a été expulsé"],"%1$s has been removed because of an affiliation change":["%1$s a été supprimé à cause d’un changement d’affiliation"],"%1$s has been removed for not being a member":["%1$s a été supprimé car il n’est pas membre"],"%1$s is no longer an admin of this groupchat":["%1$s n’est plus un administrateur de ce salon"],"%1$s is no longer an owner of this groupchat":["%1$s n’est plus un propriétaire de ce salon"],"%1$s is no longer banned from this groupchat":["%1$s n’est plus banni de ce salon"],"%1$s is no longer a member of this groupchat":["%1$s n\'est plus membre de ce salon"],"%1$s is now a member of this groupchat":["%1$s est désormais membre de ce salon"],"%1$s is now an %2$s of this groupchat":["%1$s est maintenant %2$s de ce salon"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Le pseudo choisi est réservé ou actuellement utilisé, veuillez en choisir un différent."],"Password incorrect":["Mot de passe incorrect"],"You are not on the member list of this groupchat.":["Vous n’êtes pas dans la liste des membres de ce salon."],"You have been banned from this groupchat.":["Vous avez été banni de ce salon."],"You are not allowed to create new groupchats.":["Vous n’êtes pas autorisé à créer des salons."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Votre pseudo n’est pas conforme à la politique de ce salon."],"This groupchat does not (yet) exist.":["Ce salon n’existe pas (pour l’instant)."],"This groupchat has reached its maximum number of participants.":["Ce salon a atteint sa limite maximale d’occupants."],"Remote server not found":["Serveur distant introuvable"],"The explanation given is: \\"%1$s\\".":["La raison indiquée est : « %1$s »."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vous invite à rejoindre le salon : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vous invite à rejoindre le salon : %2$s, avec le message suivant : « %3$s »"],"Error":["Erreur"],"Sorry, something went wrong while trying to save your bookmark.":["Désolé, quelque chose s’est mal passé pendant la sauvegarde de ce marque-page."],"Timeout Error":["Erreur de délai d\'attente dépassé"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Ce serveur n\'a pas renvoyé vos marque-pages dans le temps imparti. Vous pouvez recharger la page pour les demander à nouveau."],"My contacts":["Mes contacts"],"Pending contacts":["Contacts en attente"],"Contact requests":["Demandes de contacts"],"Ungrouped":["Sans groupe"],"New messages":["Nouveaux messages"],"Sorry, there was an error while trying to add %1$s as a contact.":["Désolé, il y a eu une erreur lors de la tentative d’ajout de %1$s comme contact."],"This client does not allow presence subscriptions":["Ce client ne permet pas les mises à jour de disponibilité"],"Click to hide these contacts":["Cliquez pour cacher ces contacts"],"Unbookmark this groupchat":["Retirer ce salon des marque-pages"],"Click to open this groupchat":["Cliquer pour ouvrir ce salon"],"Click to toggle the bookmarks list":["Cliquer pour ouvrir la liste des salons"],"Bookmarks":["Marques-page"],"Bookmark this groupchat":["Mettre ce salon en marque-page"],"Would you like this groupchat to be automatically joined upon startup?":["Voulez-vous que ce salon soit automatiquement rejoint au démarrage ?"],"The name for this bookmark:":["Nom de ce marque-page :"],"What should your nickname for this groupchat be?":["Que devrait être votre pseudo sur ce salon ?"],"Save":["Sauvegarder"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Voulez-vous vraiment supprimer le marque-page « %1$s » ?"],"Unbookmark":["Retirer le marque-page"],"Bookmark":["Marque-page"],"Close":["Fermer"],"OK":["OK"],"Image: ":["Image : "],"Download audio file \\"%1$s\\"":["Télécharger le fichier audio « %1$s »"],"Download file \\"%1$s\\"":["Télécharger le fichier « %1$s »"],"Cancel Editing":["Annuler l’édition"],"Edit":["Éditer"],"Retract":["Retirer"],"Message versions":["Versions du message"],"Retry":["Réessayer"],"Uploading file:":["Téléversement du fichier :"],"%1$s has removed this message":["%1$s a supprimé ce message"],"This message has been edited":["Ce message a été modifié"],"Show more":["Afficher plus"],"Show less":["Afficher moins"],"No message history available.":["Aucun historique des messages n\'est disponible."],"Search results":["Résultats de recherche"],"Search":["Rechercher"],"Insert emojis":["Insérer un emoji"],"Send the message":["Envoyer le message"],"Start a call":["Démarrer un appel"],"Message characters remaining":["Caractères de message restants"],"Hide participants":["Cacher les participants"],"Show participants":["Afficher les participants"],"Choose a file to send":["Choisir un fichier à envoyer"],"Click to write as a normal (non-spoiler) message":["Cliquez pour écrire un message sans spoiler"],"Click to write your message as a spoiler":["Cliquez pour écrire votre message en tant que spoiler"],"The User\'s Profile Image":["Image de profil de l’utilisateur"],"Trusted":["De confiance"],"Untrusted":["Pas de confiance"],"OMEMO Fingerprints":["Empreintes de clé OMEMO"],"No OMEMO-enabled devices found":["Aucun client compatible avec le chiffrement OMEMO n\'a été trouvé"],"Remove as contact":["Supprimer ce contact"],"XMPP Address":["Adresse XMPP"],"Email":["Courriel"],"Full Name":["Nom complet"],"Nickname":["Pseudo"],"Refresh":["Rafraîchir"],"Role":["Rôle"],"URL":["URL"],"%1$s is typing":["%1$s est en train d’écrire"],"%1$s has stopped typing":["%1$s a arrêté d’écrire"],"%1$s has gone away":["%1$s n’est plus disponible"],"Remove messages":["Effacer les messages"],"Close this chat":["Fermer cette fenêtre de discussion"],"Write in the third person":["Écrire à la troisième personne"],"Show this menu":["Afficher ce menu"],"Hidden message":["Message caché"],"Message":["Message"],"Optional hint":["Indice optionnel"],"You have unread messages":["Vous avez de nouveaux messages"],"Details":["Détails"],"See more information about this person":["Afficher plus d\'informations sur cette personne"],"Close and end this conversation":["Fermer et terminer cette conversation"],"Sorry, the connection has been lost, and your message could not be sent":["Désolé, la connexion a été perdue et votre message n’a pas pu être envoyé"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Sachez que d\'autres clients (et serveurs) XMPP/Jabber peuvent ne pas encore prendre en charge les rétractations et que ce message peut ne pas être supprimé partout."],"Are you sure you want to retract this message?":["Voulez-vous vraiment retirer ce message ?"],"Confirm":["Confirmer"],"You have an unsent message which will be lost if you continue. Are you sure?":["Vous avez un message non envoyé qui sera perdu si vous continuez. Êtes-vous sûr ?"],"Are you sure you want to clear the messages from this conversation?":["Voulez-vous vraiment effacer les messages de cette conversation ?"],"%1$s has gone offline":["%1$s s’est déconnecté"],"%1$s is busy":["%1$s est occupé"],"%1$s is online":["%1$s est en ligne"],"Sorry, something went wrong while trying to refresh":["Désolé, quelque chose s’est mal passé mal lors de la tentative de réactualisation"],"Are you sure you want to remove this contact?":["Voulez-vous vraiment retirer ce contact ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Désolé, il y a eu une erreur lors de la tentative de retrait de %1$s comme contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Pour améliorer les performances, nous stockons vos données dans ce navigateur. Décochez cette case si vous êtes sur un ordinateur public, ou si vous voulez que vos données soient supprimées lorsque vous vous déconnecterez. Il est important que vous vous déconnectiez explicitement, sinon les données stockées ne seront pas forcément toutes supprimées. Notez que lorsque l’ordinateur utilisé n’est pas considéré de confiance, le chiffrement OMEMO n’est PAS disponible."],"This is a trusted device":["Ceci est un appareil de confiance"],"Password":["Mot de passe"],"Create an account":["Créer un compte"],"Don\'t have a chat account?":["Vous n’avez pas de compte ?"],"Log in":["Se connecter"],"Disconnected":["Déconnecté"],"Click here to log in anonymously":["Cliquez ici pour se connecter anonymement"],"Username":["Nom"],"user@domain":["utilisateur@domaine"],"Please enter a valid XMPP address":["Veuillez saisir une adresse XMPP valide"],"Chat Contacts":["Contacts de chat"],"Toggle chat":["Ouvrir la discussion"],"Click to restore this chat":["Cliquez pour afficher cette discussion"],"Minimized":["Réduit(s)"],"Minimize":["Réduire"],"Minimize this chat":["Réduire cette discussion"],"Minimize this groupchat":["Réduire ce groupe de discussion"],"This user is a moderator.":["Cet utilisateur est un modérateur."],"This user can send messages in this groupchat.":["Cet utilisateur peut envoyer des messages dans ce salon."],"This user can NOT send messages in this groupchat.":["Cet utilisateur ne peut PAS envoyer de messages dans ce salon."],"Owner":["Propriétaire"],"Admin":["Administrateur"],"Member":["Membre"],"Moderator":["Modérateur"],"Visitor":["Visiteur"],"Click to mention %1$s in your message.":["Cliquer pour citer %1$s dans votre message."],"Participants":["Participants"],"This field is required":["Ce champ est requis"],"Join":["Rejoindre"],"Enter a new Groupchat":["Entrer dans un nouveau salon"],"name@conference.example.org":["nom@chat.example.org"],"Groupchat name":["Nom du salon"],"Groupchat address":["Adresse du salon"],"Groupchat id is invalid.":["L’identifiant du groupe de discussion est invalide."],"Invite":["Inviter"],"Invite someone to this groupchat":["Inviter quelqu’un à ce groupe de discussion"],"user@example.org":["utilisateur@exemple.org"],"Optional reason for the invitation":["Raison facultative pour l’invitation"],"Show groupchats":["Afficher les salons"],"Server address":["Adresse du serveur"],"Show more information on this groupchat":["Afficher plus d’informations sur ce salon"],"Query for Groupchats":["Chercher un salon"],"Description:":["Description :"],"Groupchat Address (JID):":["Adresse du salon (JID) :"],"Participants:":["Participants :"],"Features:":["Caractéristiques :"],"Requires authentication":["Nécessite une authentification"],"Hidden":["Caché"],"Requires an invitation":["Nécessite une invitation"],"Moderated":["Modéré"],"Non-anonymous":["Non-anonyme"],"Open":["Ouvert"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semi-anonyme"],"Temporary":["Temporaire"],"Unmoderated":["Non modéré"],"conference.example.org":["chat.exemple.org"],"Groupchats found":["Salons trouvés"],"No groupchats found":["Aucun salon trouvé"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Les modérateurs sont des utilisateurs privilégiés qui peuvent changer les rôles d\'autres utilisateurs (exceptés les administrateurs ou les propriétaires d\'affiliation)."],"The default role, implies that you can read and write messages.":["Le rôle par défaut donne le droit de lire et écrire des messages."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Les visiteurs ne sont pas autorisés à écrire dans une conversation à plusieurs sous modération."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["L\'affiliation la plus distinctive est celle de propriétaire. Un propriétaire peut changer les rôles et les affiliations de tout les utilisateurs."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["L\'affiliation d\'administrateur est la 2e plus haute. Un administrateur peut changer les rôles de tout les utilisateurs sauf le propriétaire."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Donner l\'affiliation de « banni » exclue un utilisateur."],"Change role":["Changer de rôle"],"New Role":["Nouveau rôle"],"Reason":["Motif"],"Change affiliation":["Changer d\'affiliation"],"New affiliation":["Nouvelle affiliation"],"Affiliation":["Affiliation"],"Moderator Tools":["Outils de modération"],"No users with that affiliation found.":["Aucun utilisateur trouvé avec cette affiliation."],"No users with that role found.":["Aucun utilisateur trouvé avec ce rôle."],"Type here to filter the search results":["Écrivez ici pour filtrer les résultats de recherche"],"Show users":["Afficher les utilisateurs"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Des rôles sont désignés pour autoriser ou non certaines actions dans une conversation à plusieurs. Les désignations peuvent être explicites, ou hérités implicitement d\'une affiliation. Un rôle qui n\'est pas hérité d\'une affiliation est valable que pendant la session de l\'utilisateur."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Typiquement, une affiliation est un titre à vie qui donne un rôle particulier avec ses privilèges et ses responsabilités. Par exemple, les administrateurs et les propriétaires ont d\'office le rôle de modérateur."],"Timeout error while trying to set the affiliation":["Un problème de délai est survenu lors de la modification de l\'affiliation"],"Sorry, you\'re not allowed to make that change":["Désolé, vous n’êtes pas autorisé(e) à faire cette modification"],"Sorry, something went wrong while trying to set the affiliation":["Désolé, un problème est survenu lors de la modification de l\'affiliation"],"Affiliation changed":["Affiliation modifiée"],"Role changed":["Rôle modifié"],"You\'re not allowed to make that change":["Vous n’êtes pas autorisé·e à faire cette modification"],"Sorry, something went wrong while trying to set the role":["Désolé, un problème est survenu lors de la modification de rôle"],"Topic":["Sujet"],"Topic author":["Auteur du sujet"],"Groupchat address (JID)":["Adresse du salon (JID)"],"Message archiving":["Archivage des messages"],"Messages are archived on the server":["Les messages sont archivés sur le serveur"],"Description":["Description"],"Features":["Caractéristiques"],"This groupchat is not publicly searchable":["Ce salon ne peut pas être recherché publiquement"],"This groupchat is restricted to members only":["Ce salon est restreint aux membres uniquement"],"Members only":["Membres uniquement"],"Participants entering this groupchat need to request permission to write":["Les participants qui entrent dans ce salon doivent demander la permission pour écrire"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Ce salon ne nécessite pas de mot de passe pour y accéder"],"No password required":["Pas de mot de passe nécessaire"],"Not anonymous":["Non-anonyme"],"All other groupchat participants can see your XMPP address":["Tous les autres occupants de ce salon peuvent voir votre adresse XMPP"],"Not moderated":["Non modéré"],"Participants entering this groupchat can write right away":["Les participants qui entrent dans ce salon peuvent écrire directement"],"Online users":["Utilisateurs en ligne"],"Anyone can join this groupchat":["N’importe qui peut rejoindre ce salon"],"This groupchat requires a password before entry":["Ce salon nécessite un mot de passe pour y accéder"],"Password protected":["Protégé par mot de passe"],"Persistent":["Persistant"],"This groupchat persists even if it\'s unoccupied":["Ce salon persiste même s’il est inoccupé"],"Only moderators can see your XMPP address":["Seuls les modérateurs peuvent voir votre adresse XMPP"],"This groupchat will disappear once the last person leaves":["Ce salon disparaîtra au départ de la dernière personne"],"This groupchat is publicly searchable":["Ce salon peut être recherché publiquement"],"Groupchat info for %1$s":["Informations sur le salon %1$s"],"You\'re not allowed to send messages in this room":["Vous n\'êtes pas autorisé à envoyer des messages dans ce salon"],"The conversation has moved. Click below to enter.":["Ce salon a déménagé. Cliquez ci-dessous pour rejoindre sa nouvelle adresse."],"This groupchat no longer exists":["Ce salon n’existe plus"],"Hide the groupchat topic":["Masquer le sujet de la discussion de groupe"],"This groupchat is bookmarked":["Cette salon est mis en marque-page"],"Enter groupchat":["Entrer dans le salon"],"Choose a nickname to enter":["Choisir un surnom"],"Please choose your nickname":["Veuillez choisir votre pseudo"],"This groupchat requires a password":["Ce salon nécessite un mot de passe"],"Password: ":["Mot de passe : "],"Submit":["Soumettre"],"%1$s has entered the groupchat":["%1$s a rejoint le salon"],"%1$s has left the groupchat":["%1$s a quitté le salon"],"%1$s is now a moderator":["%1$s est désormais un modérateur"],"%1$s is no longer a moderator":["%1$s n’est plus un modérateur"],"%1$s has been given a voice":["%1$s s\'est vu accorder la parole"],"%1$s has been muted":["%1$s a été mis en sourdine"],"%1$s and %2$s":["%1$s et %2$s"],"%1$s are typing":["%1$s est en train d’écrire"],"%1$s have stopped typing":["%1$s a arrêté d’écrire"],"%1$s have gone away":["%1$s n’est plus disponible"],"%1$s have entered the groupchat":["%1$s a rejoint le salon"],"%1$s have left the groupchat":["%1$s a quitté le salon"],"%1$s are now moderators":["%1$s sont désormais modérateurs"],"%1$s are no longer moderators":["%1$s ne sont plus modérateurs"],"%1$s have been given voices":["%1$s se sont vus accorder la parole"],"%1$s have been muted":["%1$s ont été mis en sourdine"],"Change user\'s affiliation to admin":["Changer le rôle de l’utilisateur en administrateur"],"Ban user by changing their affiliation to outcast":["Bannir un utilisateur en changeant son affiliation"],"Clear the chat area":["Fermer cette fenêtre de discussion"],"Close this groupchat":["Fermer ce groupe de discussion"],"Change user role to participant":["Changer le rôle de l’utilisateur en participant"],"Remove this groupchat":["Supprimer ce salon"],"Kick user from groupchat":["Expulser l’utilisateur du salon"],"Write in 3rd person":["Écrire à la troisième personne"],"Grant membership to a user":["Autoriser l’utilisateur à être membre"],"Opens up the moderator tools GUI":["Ouvre l\'interface graphique des outils de modération"],"Remove user\'s ability to post messages":["Retirer le droit d’envoyer des messages"],"Change your nickname":["Changer votre pseudo"],"Grant moderator role to user":["Changer le rôle de l’utilisateur en modérateur"],"Grant ownership of this groupchat":["Accorder la propriété de ce salon"],"Register your nickname":["Enregistrer votre pseudo"],"Revoke the user\'s current affiliation":["Révoquer l\'affiliation actuelle de l\'utilisateur"],"Set groupchat subject":["Définir le sujet du salon"],"Set groupchat subject (alias for /subject)":["Définir le sujet du salon (alias pour /subject)"],"Allow muted user to post messages":["Autoriser les utilisateurs muets à poster des messages"],"You are about to retract this message.":["Vous êtes sur le point de retirer ce message."],"You may optionally include a message, explaining the reason for the retraction.":["Vous pouvez, de façon optionnelle, inclure un message expliquant la raison du retrait."],"Message Retraction":["Retrait du message"],"Optional reason":["Raison facultative"],"Sorry, you\'re not allowed to retract this message":["Désolé, vous n\'êtes pas autorisé à retirer ce message"],"A timeout occurred while trying to retract the message":["Une erreur s\'est produite lors du retrait du message, le délai d\'attente est dépassé"],"Sorry, you\'re not allowed to retract this message.":["Désolé, vous n\'êtes pas autorisé a retirer ce message."],"Show more information about this groupchat":["Afficher plus d’informations sur ce salon"],"Configure":["Configurer"],"Configure this groupchat":["Configurer ce salon"],"Invite someone to join this groupchat":["Inviter quelqu’un à rejoindre ce salon"],"Show topic":["Afficher le sujet"],"Hide topic":["Masquer le sujet"],"Show the topic message in the heading":["Afficher le message de sujet dans l\'en-tête"],"Hide the topic in the heading":["Masquer le sujet dans l\'en-tête"],"Moderate":["Modérer"],"Moderate this groupchat":["Modérer ce salon"],"Destroy":["Détruire"],"Leave":["Quitter"],"Leave and close this groupchat":["Quitter et fermer ce salon"],"Are you sure you want to leave this groupchat?":["Voulez-vous vraiment quitter ce salon ?"],"Hide the list of participants":["Cacher la liste des participants"],"Forbidden: you do not have the necessary role in order to do that.":["Interdit : vous n’avez pas le rôle nécessaire pour faire ça."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Interdit : vous n’avez pas l’affiliation nécessaire pour faire ça."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erreur : la commande « %1$s » prend deux paramètres, le pseudo de l’utilisateur et une raison optionnelle."],"Error: couldn\'t find a groupchat participant based on your arguments":["Erreur : ne trouve pas de participant au salon sur la base de vos arguments"],"Error: found multiple groupchat participant based on your arguments":["Erreur : plusieurs participants au salon trouvés sur la base de vos arguments"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Impossible de trouver de participant avec ce pseudo. Il se peut qu’il ait quitté le salon."],"Sorry, an error happened while running the command.":["Désolé, une erreur est survenue lors de l\'exécution de la commande."],"Check your browser\'s developer console for details.":["Vérifiez les erreurs dans la console de développement de votre navigateur."],"Are you sure you want to destroy this groupchat?":["Voulez-vous vraiment détruire ce salon ?"],"Please enter the XMPP address of this groupchat to confirm":["Veuillez saisir l’adresse XMPP de ce salon pour confirmation"],"name@example.org":["nom@exemple.org"],"Optional reason for destroying this groupchat":["Raison optionnelle pour détruire ce salon"],"Optional XMPP address for a new groupchat that replaces this one":["Adresse XMPP optionnelle du nouveau salon qui remplace celui-ci"],"replacement@example.org":["remplacement@exemple.org"],"Your nickname is \\"%1$s\\"":["Votre pseudo est \\"%1$s\\""],"Error: invalid number of arguments":["Erreur : nombre d’arguments invalide"],"This action was done by %1$s.":["Cette action a été réalisée par %1$s."],"The reason given is: \\"%1$s\\".":["La raison indiquée est : « %1$s »."],"Groupchats":["Salons"],"Add a new groupchat":["Ajouter un nouveau salon"],"Query for groupchats":["Chercher un salon"],"Sorry, an error occurred while trying to submit the config form.":["Désolé, une erreur est survenue lors de la validation du formulaire de configuration."],"Close these announcements":["Fermer ces annonces"],"Announcements":["Annonces"],"Click to open this server message":["Cliquez pour ouvrir le message de ce serveur"],"Notification from %1$s":["Notification depuis %1$s"],"%1$s says":["%1$s dit"],"Encrypted message received":["Message chiffré reçu"],"has gone offline":["s’est déconnecté"],"has gone away":["est absent"],"is busy":["est occupé"],"has come online":["s’est déconnecté"],"wants to be your contact":["veut être votre contact"],"Hide":["Cacher"],"Execute":["Exécuter"],"On which entity do you want to run commands?":["Sur quelle entité voulez-vous lancer des commandes ?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Certains services et entités XMPP permettent à des utilisateurs privilégiés d’exécuter des commandes ad-hoc sur eux."],"Commands found":["Commandes trouvées"],"List available commands":["Lister les commandes disponibles"],"No commands found":["Aucune commande trouvée"],"Sorry, an error occurred while looking for commands on that entity.":["Désolé, une erreur est survenue en cherchant des commandes sur cette entité."],"The specified entity doesn\'t support ad-hoc commands":["L’entité spécifiée ne prend pas en charge les commandes ad-hoc"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Désolé, une erreur s’est produite lors de l’exécution de la commande. Vérifiez la console de développement de votre navigateur pour plus de détails"],"About":["À propos"],"Commands":["Commandes"],"Settings":["Préférences"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s libre %2$s qui vous est fourni par %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduisez-le %2$s dans votre langue"],"Log out":["Se déconnecter"],"Click to change your chat status":["Cliquez pour changer votre statut"],"Show details about this chat client":["Afficher plus d’informations sur ce client"],"Your avatar image":["Votre image d’avatar"],"Checkbox for selecting the following fingerprint":["Case à cocher pour sélectionner l’empreinte OMEMO suivante"],"Device without a fingerprint":["Client sans empreinte de clé OMEMO"],"Checkbox for selecting the following device":["Case à cocher pour sélectionner le périphérique OMEMO suivant"],"Other OMEMO-enabled devices":["Autres clients ayant activé le chiffrement OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Case à cocher pour sélectionner les empreintes de tous les autres clients OMEMO"],"Remove checked devices and close":["Supprimer les clients OMEMO sélectionnés, et fermer"],"Select all":["Tout sélectionner"],"This device\'s OMEMO fingerprint":["Empreinte de clé OMEMO de ce client"],"Generate new keys and fingerprint":["Générer de nouvelles clés et empreintes de clés"],"Your Profile":["Votre profil"],"XMPP Address (JID)":["Adresse XMPP (JID)"],"Save and close":["Enregistrer et fermer"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilisez une virgule pour séparer plusieurs rôles. Vos rôles sont affichés à côté de votre nom dans vos messages."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Désolé, quelque chose s’est mal passé pendant la sauvegarde de votre profil."],"You can check your browser\'s developer console for any error output.":["Vous pouvez surveiller toute erreur qui apparaîtrait dans la console de développement de votre navigateur."],"Away":["Absent"],"Busy":["Occupé"],"Custom status":["Statut personnel"],"Offline":["Déconnecté"],"Online":["En ligne"],"Away for long":["Absent pour une longue durée"],"Change chat status":["changer votre statut de chat"],"Personal status message":["Message de statut personnel"],"I am %1$s":["Je suis %1$s"],"Are you sure you want to log out?":["Voulez-vous vraiment vous déconnecter ?"],"online":["en ligne"],"busy":["occupé"],"away for long":["absent pour une longue durée"],"away":["absent"],"offline":["Déconnecté"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Désolé, impossible de déchiffrer un message chiffré avec OMEMO à cause d’une erreur."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Désolé, impossible de déchiffrer un message chiffré avec OMEMO parce que nous n\'avons pas le JID pour cet utilisateur."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ne semble pas avoir un client qui supporte OMEMO. Le chiffrement ne sera plus possible dans ce groupe de discussion."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Impossible d’utiliser le chiffrement bout à bout dans ce salon, soit parce qu’il est semi-anonyme, soit parce que tous les participants ne gèrent pas OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Impossible d’utiliser le chiffrement bout à bout parce que %1$s utilise un client qui ne gère pas OMEMO."],"Messages are being sent in plaintext":["Les messages sont envoyés en clair"],"Messages are sent encrypted":["Vos messages sont envoyés chiffrés"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Ce salon doit être réservé aux membres et non-anonyme pour permettre les messages chiffrés OMEMO"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Désolé, impossible d\'envoyer un message chiffré parce que %1$s nécessitent que vous soyez abonné à leur présence afin de voir leurs informations OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Désolé, impossible d\'envoyer un message chiffré parce que le serveur distant de %1$s n\'est pas joignable"],"Unable to send an encrypted message due to an unexpected error.":["Impossible d’envoyer un message chiffré à cause d’une erreur."],"Sorry, an error occurred while trying to remove the devices.":["Désolé, une erreur est survenue en tentant de supprimer les clients OMEMO."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Voulez-vous vraiment générer de nouvelles clefs OMEMO ? Ceci retirera vos anciennes clefs et tous les messages déjà chiffrés ne seront plus déchiffrables sur ce client."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Désolé, impossible de trouver un appareil auquel envoyer un message chiffré avec OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ceci est un message chiffré avec OMEMO, que votre client ne semble pas prendre en charge. Pour plus d’informations, allez voir https://conversations.im/omemo"]," e.g. conversejs.org":[" par exemple conversejs.org"],"Fetch registration form":["Récupération du formulaire d’enregistrement"],"Tip: A list of public XMPP providers is available":["Astuce : une liste publique de fournisseurs XMPP est disponible"],"here":["ici"],"Sorry, we\'re unable to connect to your chosen provider.":["Désolé, nous n’avons pas pu nous connecter à votre fournisseur."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Désolé, le fournisseur indiqué ne supporte pas l’enregistrement de compte en ligne. Merci d’essayer avec un autre fournisseur."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Quelque chose a échoué lors de l’établissement de la connexion avec « %1$s ». Existe-t-il vraiment ?"],"Now logging you in":["En cours de connexion"],"Registered successfully":["Enregistré avec succès"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Le fournisseur a rejeté votre demande d’inscription. Merci de vérifier que les données que vous avez fournies sont correctes."],"Leave this groupchat":["Quitter ce salon"],"Click to toggle the list of open groupchats":["Cliquer pour ouvrir la liste des salons ouverts"],"Open Groupchats":["Salons ouverts"],"Are you sure you want to leave the groupchat %1$s?":["Voulez-vous vraiment quitter le salon « %1$s » ?"],"Add":["Ajouter"],"Add a Contact":["Ajouter un contact"],"This contact is busy":["Ce contact est occupé"],"This contact is online":["Ce contact est connecté"],"This contact is offline":["Ce contact est déconnecté"],"This contact is unavailable":["Ce contact est indisponible"],"This contact is away for an extended period":["Ce contact est absent"],"This contact is away":["Ce contact est absent"],"Contact name":["Nom du contact"],"Optional nickname":["Pseudonyme optionnel"],"Sorry, could not find a contact with that name":["Désolé, impossible de trouver un contact avec ce nom"],"This contact has already been added":["Ce contact est déjà enregistré"],"Filter":["Filtrer"],"Filter by contact name":["Filtrer par nom de contact"],"Filter by group name":["Filtrer par nom de groupe"],"Filter by status":["Filtrer par statut"],"Any":["Aucun"],"Unread":["Non lu"],"Chatty":["Bavard"],"Extended Away":["Absence longue durée"],"Click to remove %1$s as a contact":["Cliquez pour retirer le contact %1$s"],"Click to accept the contact request from %1$s":["Cliquez pour accepter la demande d’ajout de contact de %1$s"],"Click to decline the contact request from %1$s":["Cliquez pour décliner la demande d’ajout de contact de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Cliquez pour discuter avec %1$s (adresse XMPP : %2$s)"],"Are you sure you want to decline this contact request?":["Voulez-vous vraiment rejeter cette demande d’ajout de contact ?"],"Contacts":["Contacts"],"Add a contact":["Ajouter un contact"],"Re-sync your contacts":["Resynchroniser vos contacts"]}}}')}}]); //# sourceMappingURL=fr-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/gl-LC_MESSAGES-converse-po.js b/src/conversejs/locales/gl-LC_MESSAGES-converse-po.js index 5a6faa5bfa7bab9ce0a7da970962f189f85fdef2..f91ea91ff8dae401436c672fece8e0f5c458e5d2 100644 --- a/src/conversejs/locales/gl-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/gl-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{431:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"gl"},"Create your account":["Cree a súa conta"],"Please enter the XMPP provider to register with:":["Por favor, introduza o provedor XMPP no que rexistrarse:"],"Already have a chat account?":["Xa ten unha conta?"],"Log in here":["Conéctese aquÃ"],"Account Registration:":["Rexistro de conta:"],"Register":["Rexistrar"],"Choose a different provider":["Escoller un provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Agarde, estamos solicitando o formulario de rexistro…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["Cortouse a comunicación, intentando recuperala."],"An error occurred while connecting to the chat server.":["Algo fallou ao conectar co servidor da conversa."],"Your XMPP address and/or password is incorrect. Please try again.":["O teu enderezo XMPP e/ou contrasinal son incorrectos. Inténtao de novo."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Lamentámolo, non podemos conectar co servidor XMPP con dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor XMPP non ofrece un mecanismo de autenticación soportado"],"Sorry, could not determine upload URL.":["Lamentámolo, non se puido determinar a URL de subida."],"Sorry, could not determine file upload URL.":["Lamentámolo, non se determinou a URL de subida do ficheiro."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Lamentámolo, non se subeu o ficheiro. A resposta do servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Lamentámolo, non se subeu o seu ficheiro."],"You\'re not allowed to retract your message.":["Non podes retractar desta mensaxe."],"Sorry, an error occurred while trying to retract your message.":["Lamentámolo, algo fallou ó intentar retractar a mensaxe."],"You\'re not allowed to send a message.":["Non tes permiso para enviar unha mensaxe."],"Sorry, an error occurred while trying to send your message.":["Lamentámolo, algo fallou ó intentar enviar a mensaxe."],"Sorry, looks like file upload is not supported by your server.":["Lamentámolo, semella que o servidor non soporta a subida de ficheiros."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamaño do ficheiro, %1$s, excede o lÃmite establecido no servidor, que é %2$s."],"Smileys and emotions":["Sorrisos e emocións"],"People":["Xente"],"Activities":["Actividades"],"Travel":["Viaxar"],"Objects":["Obxetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":["Bandeiras"],"Stickers":["Pegatinas"],"This groupchat is not anonymous":["Esta conversa en grupo non é anónima"],"This groupchat now shows unavailable members":["Esta conversa en grupo agora mostra membros non dispoñibles"],"This groupchat does not show unavailable members":["Esta conversa en grupo non mostra membros non dispoñibles"],"The groupchat configuration has changed":["A configuración da conversa en grupo cambiou"],"Groupchat logging is now enabled":["O rexistro da conversa de grupo está activado"],"Groupchat logging is now disabled":["O rexistro da conversa de grupo está desactivado"],"This groupchat is now no longer anonymous":["Esta conversa en grupo xa non é anónima"],"This groupchat is now semi-anonymous":["Esta conversa en grupo agora é semi-anónima"],"This groupchat is now fully-anonymous":["Esta conversa en grupo agora é totalmente anónima"],"A new groupchat has been created":["Creouse unha nova conversa en grupo"],"Your nickname has been automatically set to %1$s":["O seu alcume estableceuse automáticamente como %1$s"],"Your nickname has been changed to %1$s":["O seu alcume foi cambiado a %1$s"],"You have been banned from this groupchat":["ExcluÃronte desta conversa en grupo"],"You have exited this groupchat due to a technical problem":["SaÃches desta conversa en grupo debido a un problema técnico"],"You have been kicked from this groupchat":["Expulsáronte desta conversa en grupo"],"You have been removed from this groupchat because of an affiliation change":["Sacáronte desta conversa en grupo debido a un cambio na afiliación"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Elimináronte desta conversa en grupo porque o grupo cambiou a só-membros e ti non es membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Elimináronte da conversa en grupo porque o servicio de hospedaxe foi apagado"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Non se enviou a retracción porque non estás presente na conversa en grupo."],"Your message was not delivered because you weren\'t allowed to send it.":["Non se enviou a mensaxe porque non tes permiso para enviala."],"Your message was not delivered because you\'re not present in the groupchat.":["Non se entregou a mensaxe porque non está presente en este grupo."],"A timeout happened while while trying to retract your message.":["Caducou a solicitude mentras intentabas retractar a mensaxe."],"You\'re not allowed to register yourself in this groupchat.":["Non podes rexistrarte a ti mesmo nesta conversa en grupo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Non ten permiso para rexistrarse na conversa en grupo porque é só para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Non pode rexistrar o seu usuario en este grupo, non soporta o rexistro."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Non pode rexistrar o seu usuario na conversa, os datos proporcionados non son válidos."],"Topic set by %1$s":["Asunto establecido por %1$s"],"Topic cleared by %1$s":["Asunto eliminado por %1$s"],"%1$s has been banned by %2$s":["%1$s foi excluÃdo por %2$s"],"%1$s has been banned":["%1$s foi excluÃdo"],"%1$s\'s nickname has changed":["Cambiou o alcume de %1$s"],"%1$s has been kicked out by %2$s":["%1$s foi expulsado por %2$s"],"%1$s has been kicked out":["%1$s foi expulsado"],"%1$s has been removed because of an affiliation change":["%1$s foi eliminado debido a un cambio de afiliación"],"%1$s has been removed for not being a member":["%1$s foi eliminado por non ser membro"],"%1$s is no longer an admin of this groupchat":["%1$s xa non é admin de esta conversa en grupo"],"%1$s is no longer an owner of this groupchat":["%1$s xa non é dono de esta conversa en grupo"],"%1$s is no longer banned from this groupchat":["%1$s xa non está excluÃda de esta conversa en grupo"],"%1$s is no longer a member of this groupchat":["%1$s xa non é membro de este grupo"],"%1$s is now a member of this groupchat":["%1$s é un membro de este grupo"],"%1$s is now an %2$s of this groupchat":["%1$s é o %2$s de esta conversa en grupo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O alcume escollido está reservado ou en uso, por favor escolla outro."],"Password incorrect":["Contrasinal incorrecto"],"You are not on the member list of this groupchat.":["Non es membro de esta conversa en grupo."],"You have been banned from this groupchat.":["Foches excluÃdo desta conversa en grupo."],"You are not allowed to create new groupchats.":["Non te permiso para crear novas conversas en grupo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["O seu alcume non segue as normas de esta conversa en grupo."],"This groupchat does not (yet) exist.":["Esta conversa en grupo non existe (aÃnda)."],"This groupchat has reached its maximum number of participants.":["Esta conversa en grupo alcanzou o número máximo de participantes."],"Remote server not found":["Non se atopou o servidor remoto"],"The explanation given is: \\"%1$s\\".":["A explicación dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidouna a unirse a conversa en grupo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidouna a unirse a conversa en grupo: %2$s, e deulle esta razón: \\"%3$s\\""],"Error":["Fallo"],"Sorry, something went wrong while trying to save your bookmark.":["Lamentámolo, algo fallou ao intentar gardar o marcador."],"Timeout Error":["Fallo de caducidade"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["O servidor non devolveu os teus marcadores no tempo estipulado. Podes recargar a páxina para solicitalos de novo."],"My contacts":["Os meus contactos"],"Pending contacts":["Contactos pendentes"],"Contact requests":["Solicitudes de contacto"],"Ungrouped":["Sen agrupar"],"New messages":["Novas mensaxes"],"Sorry, there was an error while trying to add %1$s as a contact.":["Lamentámolo, algo fallou ao intentar engadir a %1$s como contacto."],"This client does not allow presence subscriptions":["Este cliente non permite suscricións de presencia"],"Click to hide these contacts":["Pulse para ocultar estos contactos"],"Unbookmark this groupchat":["Desmarcar esta conversa de grupo"],"Click to open this groupchat":["Pulse para abrir esta conversa en grupo"],"Click to toggle the bookmarks list":["Pulse para mostrar a lista de marcadores"],"Bookmarks":["Marcadores"],"Bookmark this groupchat":["Marcar esta conversa de grupo"],"Would you like this groupchat to be automatically joined upon startup?":["DesexarÃa conectarse automáticamente ao inicio a esta conversa de grupo?"],"The name for this bookmark:":["O nome para este marcador:"],"What should your nickname for this groupchat be?":["Qué alcume desexa ter para esta conversa en grupo?"],"Save":["Gardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Realmente desexa eliminar o marcador \\"%1$s\\"?"],"Unbookmark":["Eliminar marcador"],"Bookmark":["Marcar"],"Close":["Pechar"],"OK":["OK"],"Image: ":["Imaxe: "],"Download audio file \\"%1$s\\"":["Descargar ficheiro de audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Descargar ficheiro \\"%1$s\\""],"Cancel Editing":["Cancelar a edición"],"Edit":["Editar"],"Retract":["Retractar"],"Message versions":["Versións da mensaxe"],"Retry":["Reintentar"],"Uploading file:":["Subindo ficheiro:"],"%1$s has removed this message":["%1$s foi eliminou esta mensaxe"],"This message has been edited":["Esta mensaxe foi editada"],"Show more":["Mostrar máis"],"Show less":["Mostrar menos"],"No message history available.":["Non está dispoñible o historial de mensaxes."],"Search results":["Resultados da busca"],"Search":["Buscar"],"Insert emojis":["Inserir emojis"],"Send the message":["Enviar a mensaxe"],"Start a call":["Iniciar chamada"],"Message characters remaining":["Caracteres restantes"],"Hide participants":["Agochar participantes"],"Show participants":["Mostrar participantes"],"Choose a file to send":["Escolla o ficheiro a enviar"],"Click to write as a normal (non-spoiler) message":["Preme para escribir unha mensaxe normal (non spoiler)"],"Click to write your message as a spoiler":["Preme para escribir unha mensaxe tipo spoiler"],"The User\'s Profile Image":["Imaxe de perfil do usuario"],"Trusted":["De confianza"],"Untrusted":["Non confiable"],"OMEMO Fingerprints":["Pegadas dixitais OMEMO"],"No OMEMO-enabled devices found":["Non se atoparon dispositivos con OMEMO activado"],"Remove as contact":["Eliminar como contacto"],"XMPP Address":["Enderezo XMPP"],"Email":["Correo-e"],"Full Name":["Nome completo"],"Nickname":["Alcume"],"Refresh":["Actualizar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s está a escribir"],"%1$s has stopped typing":["%1$s deixou de escribir"],"%1$s has gone away":["%1$s marchou"],"Remove messages":["Eliminar mensaxes"],"Close this chat":["Pechar esta conversa"],"Write in the third person":["Escribir en terceira persoa"],"Show this menu":["Mostrar este menú"],"Hidden message":["Mensaxes ocultas"],"Message":["Mensaxe"],"Optional hint":["Truco opcional"],"You have unread messages":["Ten mensaxes sen ler"],"Details":["Detalles"],"See more information about this person":["Mostrar máis información sobre esta persoa"],"Close and end this conversation":["Pechar e saÃr da conversa"],"Sorry, the connection has been lost, and your message could not be sent":["Mágoa!, perdeuse a conexión, a mensaxe non se puido enviar"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Ten en conta que outros clientes XMPP/Jabber (e servidores) poderÃan non ter soporte para retirar mensaxes polo que esta mensaxe poderÃa non ser eliminada deles."],"Are you sure you want to retract this message?":["Seguro que queres eliminar esta mensaxe?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Ten unha mensaxe sen enviar que perderá se segue adiante. Está seguro?"],"Are you sure you want to clear the messages from this conversation?":["Seguro que desexa eliminar as mensaxes de esta conversa?"],"%1$s has gone offline":["%1$s desconectouse"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está en liña"],"Sorry, something went wrong while trying to refresh":["Lamentámolo, algo fallou ao intentar actualizar"],"Are you sure you want to remove this contact?":["Seguro que quere eliminar este contacto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Lamentámolo, algo fallou ao intentar eliminar o contacto %1$s."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para mellorar o rendemento, almacenamos os seus datos no navegador. Desmarque esta opción si se trata de unha computadora pública para borrar os datos cando se desconecte. É importante que se desconecte de xeito explÃcito, se non non se borrarán os datos. O cifrado OMEMO non está dispoñible cando está a utilizar un dispositivo non confiable."],"This is a trusted device":["Este é un dispositivo de confianza"],"Password":["Contrasinal"],"Create an account":["Crear unha conta"],"Don\'t have a chat account?":["Non ten conta para conversar?"],"Log in":["Conectar"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Pulse aquà para conectar anónimamente"],"Username":["Nome de usuaria"],"user@domain":["usuaria@dominio"],"Please enter a valid XMPP address":["Por favor, introduza un enderezo XMPP válido"],"Chat Contacts":["Conversar con contactos"],"Toggle chat":["Iniciar chat"],"Click to restore this chat":["Pulse para restaurar esta conversa"],"Minimized":["Minimizada"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar esta conversa"],"Minimize this groupchat":["Minimizar esta conversa en grupo"],"This field is required":["Este campo é requerido"],"Join":["Unirse"],"Enter a new Groupchat":["Introduza unha nova Conversa en grupo"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Nome da conversa en grupo"],"Groupchat address":["Enderezo da conversa en grupo"],"Groupchat id is invalid.":["O id da conversa en grupo non é válido."],"Invite":["Convidar"],"Invite someone to this groupchat":["Convida a alguén a esta conversa en grupo"],"user@example.org":["nome@exemplo.org"],"Optional reason for the invitation":["Razón para o convite (optativo)"],"Show groupchats":["Mostra conversas en grupo"],"Server address":["Enderezo do servidor"],"Show more information on this groupchat":["Mostrar máis información sobre esta conversa en grupo"],"Query for Groupchats":["Busque Conversas en grupo"],"Description:":["Descrición:"],"Groupchat Address (JID):":["Enderezo da conversa en grupo (JID):"],"Participants:":["PartÃcipes:"],"Features:":["CaracterÃsticas:"],"Requires authentication":["Require autenticación"],"Hidden":["Oculto"],"Requires an invitation":["Require convite"],"Moderated":["Moderada"],"Non-anonymous":["Non anónima"],"Open":["Aberta"],"Permanent":["Permanente"],"Public":["Pública"],"Semi-anonymous":["Semi anónima"],"Temporary":["Temporal"],"Unmoderated":["Non moderada"],"conference.example.org":["conferencia.exemplo.org"],"Groupchats found":["Atopáronse conversas en grupo"],"No groupchats found":["Non se atoparon conversas en grupo"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Os moderadores son usuarios con privilexios que poden cambiar os roles de outros usuarios (excepto os de administradores e donos)."],"The default role, implies that you can read and write messages.":["O rol por omisión implica que pode ler e escribir mensaxes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Os visitantes non poden escribir mensaxes nunha sala multiusuario moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Dono é a maior afiliación. Os donos poden modificar os roles e afiliación dos outros usuarios."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin é o segundo maior nivel de afiliación. Admins poden modificar roles e afiliación de todos os usuarios menos dos donos."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para excluÃr un usuario, daslle a afiliación de \\"forasteiro\\"."],"Change role":["Cambiar rol"],"New Role":["Novo rol"],"Reason":["Razón"],"Change affiliation":["Cambiar a afiliación"],"New affiliation":["Nova afiliación"],"Affiliation":["Afiliación"],"Moderator Tools":["Ferramentas de moderador"],"No users with that affiliation found.":["Non se atoparon usuarios con esa afiliación."],"No users with that role found.":["Non se atoparon usuarios con ese rol."],"Type here to filter the search results":["Escribe aquà para filtrar os resultados da busca"],"Show users":["Mostrar usuarios"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Os roles asÃgnanse as usuarias para outorgar ou denegarlles certos permisos nunha conversa multiusuario. AsÃgnanse de xeito implÃcito ou explÃcito como parte da filiación. Un rol que non é debido a filiación só é valido durante a duración da sesión do usuario."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Unha afiliación é un tÃtulo de alto nivel que normalmente implica certo rol e que outorga certos privilexios e responsabilidades. Por exemplo, admins e donos teñen rol de moderador de xeito automático."],"Timeout error while trying to set the affiliation":["Fallo de caducidade ó intentar establecer a afiliación"],"Sorry, you\'re not allowed to make that change":["SentÃmolo, mais non tes permiso para realizar ese cambio"],"Sorry, something went wrong while trying to set the affiliation":["Lamentámolo, algo fallou ao establecer a afiliación"],"Affiliation changed":["Cambiou a afiliación"],"Role changed":["Rol cambiado"],"You\'re not allowed to make that change":["Non tes permiso para realizar ese cambio"],"Sorry, something went wrong while trying to set the role":["Lamentámolo, algo fallou ao intentar establer o rol"],"Topic":["Asunto"],"Topic author":["Autor do asunto"],"Groupchat address (JID)":["Enderezo da conversa en grupo (JID)"],"Message archiving":["Arquivado de mensaxes"],"Messages are archived on the server":["As mensaxes gárdanse no servidor"],"Description":["Descrición"],"Features":["CaracterÃsticas"],"This groupchat is not publicly searchable":["Esta conversa en grupo non está en listas públicas"],"This groupchat is restricted to members only":["Esta conversa en grupo é accesible só para membros"],"Members only":["Só para membros"],"Participants entering this groupchat need to request permission to write":["Os participantes da conversa deben solicitar permiso para escribir"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Esta conversa en grupo non solicita contrasinal para entrar"],"No password required":["Sen protección de contrasinal"],"Not anonymous":["Non anónima"],"All other groupchat participants can see your XMPP address":["Calquera outro participante da conversa pode ver o seu enderezo XMPP"],"Not moderated":["Non moderada"],"Participants entering this groupchat can write right away":["Os participantes poden escribir libremente"],"Online users":["Usuarias conectadas"],"Anyone can join this groupchat":["Calquera pode unirse a esta conversa en grupo"],"This groupchat requires a password before entry":["Esta conversa en grupo precisa un contrasinal para entrar"],"Password protected":["Protexido por contrasinal"],"Persistent":["Perenne"],"This groupchat persists even if it\'s unoccupied":["Esta conversa en grupo permanece incluso si está baldeira"],"Only moderators can see your XMPP address":["Só os moderadores poden ver o seu enderezo XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversa en grupo desaparecerá unha vez saia a última persoa"],"This groupchat is publicly searchable":["Esta conversa en grupo está en listas públicas"],"Groupchat info for %1$s":["Info da conversa en grupo para %1$s"],"You\'re not allowed to send messages in this room":["Non ten permiso para enviar mensaxes a esta sala"],"The conversation has moved. Click below to enter.":["Moveuse a conversa. Pulse abaixo para entrar."],"This groupchat no longer exists":["Esta conversa en grupo xa non existe"],"Hide the groupchat topic":["Agochar o asunto da conversa en grupo"],"This groupchat is bookmarked":["Esta conversa está nos marcadores"],"Enter groupchat":["Entrar na conversa en grupo"],"Choose a nickname to enter":["Escolle un alcume para entrar"],"Please choose your nickname":["Por favor, escolla o seu alcume"],"This groupchat requires a password":["Esta conversa en grupo precisa de un contrasinal"],"Password: ":["Contrasinal: "],"Submit":["Enviar"],"This user is a moderator.":["Esta usuaria é moderador."],"This user can send messages in this groupchat.":["Esta usuaria pode enviar mensaxes a conversa en grupo."],"This user can NOT send messages in this groupchat.":["Esta usuaria NON pode enviar mensaxes a conversa en grupo."],"Owner":["Propietario"],"Admin":["Admin"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Pulse para mencionar a %1$s na súa mensaxe."],"Participants":["Participantes"],"%1$s has entered the groupchat":["%1$s entrou na conversa en grupo"],"%1$s has left the groupchat":["%1$s deixou a conversa en grupo"],"%1$s is now a moderator":["%1$s agora é moderador"],"%1$s is no longer a moderator":["%1$s xa non é moderador"],"%1$s has been given a voice":["%1$s ten a palabra"],"%1$s has been muted":["%1$s foi acalado"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s está escribindo"],"%1$s have stopped typing":["%1$s deixou de escribir"],"%1$s have gone away":["%1$s marchou"],"%1$s have entered the groupchat":["%1$s entrou na conversa en grupo"],"%1$s have left the groupchat":["%1$s deixou a conversa en grupo"],"%1$s are now moderators":["%1$s agora son moderadores"],"%1$s are no longer moderators":["%1$s xa non son moderadores"],"%1$s have been given voices":["Concedéronlle a palabra a %1$s"],"%1$s have been muted":["%1$s foron acaladas"],"Change user\'s affiliation to admin":["Cambiar a afiliación da usuaria a admin"],"Ban user by changing their affiliation to outcast":["Prohibir usuario cambiando a filiación na sala"],"Clear the chat area":["Limpar o área de conversa"],"Close this groupchat":["Pechar esta conversa en grupo"],"Change user role to participant":["Cambiar o rol da usuaria a participante"],"Remove this groupchat":["Eliminar esta conversa en grupo"],"Kick user from groupchat":["Expulsar a usuaria da conversa en grupo"],"Write in 3rd person":["Escribir en terceira persoa"],"Grant membership to a user":["Conceder a membresÃa a unha usuaria"],"Opens up the moderator tools GUI":["Abre a interface gráfica de ferramentas de moderación"],"Remove user\'s ability to post messages":["Quitarlle a posibilidade de publicar mensaxes a usuaria"],"Change your nickname":["Cambiar o seu alcume"],"Grant moderator role to user":["Conceder rol de moderador a usuaria"],"Grant ownership of this groupchat":["Conceder a propiedade de esta conversa en grupo"],"Register your nickname":["Rexistrar o seu alcume"],"Revoke the user\'s current affiliation":["Repudiar a filiación actual do usuario"],"Set groupchat subject":["Establecer o asunto da conversa en grupo"],"Set groupchat subject (alias for /subject)":["Establecer o asunto da conversa (alias para /subject)"],"Allow muted user to post messages":["Permitir as usuarias acaladas publicar mensaxes"],"You are about to retract this message.":["Vas a eliminar esta mensaxe."],"You may optionally include a message, explaining the reason for the retraction.":["De xeito opcional poderÃas deixar un aviso, explicando a razón de tela eliminado."],"Message Retraction":["Eliminación da mensaxe"],"Optional reason":["Razón (optativo)"],"Sorry, you\'re not allowed to retract this message":["Desculpa, pero non tes permiso para borrar esta mensaxe"],"A timeout occurred while trying to retract the message":["Caducou a solicitude de borrado da mensaxe"],"Sorry, you\'re not allowed to retract this message.":["Desculpa, pero non tes permiso para borrar esta mensaxe."],"Show more information about this groupchat":["Mostrar máis información sobre esta conversa en grupo"],"Configure":["Configurar"],"Configure this groupchat":["Configurar a conversa en grupo"],"Invite someone to join this groupchat":["Convida a alguén a unirse a conversa en grupo"],"Show topic":["Mostrar o tema"],"Hide topic":["Agochar o tema"],"Show the topic message in the heading":["Mostrar o tema da conversa na cabeceira"],"Hide the topic in the heading":["Agochar o tema da conversa na cabeceira"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar esta conversa en grupo"],"Destroy":["DestruÃr"],"Leave":["SaÃr"],"Leave and close this groupchat":["Deixar e pechar esta conversa en grupo"],"Are you sure you want to leave this groupchat?":["Seguro que queres deixar a conversa en grupo?"],"Hide the list of participants":["Agochar a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibido: non ten os permisos necesarios para facer iso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibido: non ten a afiliación necesaria para facer iso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fallo: O comando \\"%1$s\\" precisa dous argumentos, o alcume do usuario e opcionalmente unha razón."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fallo: non se atopou ao participante da conversa con esos parámetros"],"Error: found multiple groupchat participant based on your arguments":["Fallo: atopáronse varios participantes con esos parámetros"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Non se atopou un participante con ese alcume. PoderÃa ter saÃdo da conversa."],"Sorry, an error happened while running the command.":["Lamentámolo, algo fallou ao executar o comando."],"Check your browser\'s developer console for details.":["Mira na consola de desenvolvedor do navegador para máis detalles."],"Are you sure you want to destroy this groupchat?":["Seguro que queres desbotar a conversa en grupo?"],"Please enter the XMPP address of this groupchat to confirm":["Por favor, escribe o provedor XMPP desta conversa en grupo para confirmar"],"name@example.org":["nome@exemplo.org"],"Optional reason for destroying this groupchat":["Razón para eliminar esta conversa en grupo (optativo)"],"Optional XMPP address for a new groupchat that replaces this one":["Enderezo XMPP optativo para a nova conversa en grupo que substitúe a esta"],"replacement@example.org":["substituta@exemplo.org"],"Your nickname is \\"%1$s\\"":["O seu alcume é \\"%1$s\\""],"Error: invalid number of arguments":["Fallo: número de argumentos non válido"],"This action was done by %1$s.":["Esta acción foi feita por %1$s."],"The reason given is: \\"%1$s\\".":["A razón dada é: \\"%1$s\\"."],"Groupchats":["Conversas en grupo"],"Add a new groupchat":["Engadir unha nova conversa en grupo"],"Query for groupchats":["Buscar conversas en grupo"],"Sorry, an error occurred while trying to submit the config form.":["Lamentámolo, algo fallou ao intentar enviar o formulario de configuración."],"Close these announcements":["Pechar estos anuncios"],"Announcements":["Anuncios"],"Click to open this server message":["Preme para abrir a esta mensaxe do servidor"],"Notification from %1$s":["Notificación de %1$s"],"%1$s says":["%1$s di"],"has gone offline":["non está en liña"],"has gone away":["marchou"],"is busy":["está ocupado"],"has come online":["voltou a estar en liña"],"wants to be your contact":["quere ser un contacto seu"],"Hide":["Agochar"],"Execute":["Executar"],"On which entity do you want to run commands?":["¿En qué entidade queres executar os comandos?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Certos servizos e entidades XMPP permÃtenlle a usuarias autorizadas executar comandos a medida neles."],"Commands found":["Comandos atopados"],"List available commands":["Lista de comandos dispoñibles"],"No commands found":["Non se atoparon comandos"],"Sorry, an error occurred while looking for commands on that entity.":["Lamentámolo, algo fallou ó buscar os comandos nesa entidade."],"The specified entity doesn\'t support ad-hoc commands":["A entidade indicada non soporta os comandos a medida"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Lamentámolo, algo fallou ao executar o comando. Mira os detalles na consola de desenvolvedora"],"About":["Acerca de"],"Commands":["Comandos"],"Settings":["Axustes"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Cliente de %1$s código aberto %2$s para conversas XMPP proporcionado por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$sTradúzao%2$s para o seu idioma"],"Log out":["Desconectar"],"Click to change your chat status":["Pulse para cambiar o estado da conversa"],"Show details about this chat client":["Mostrar detalles sobre esta conversa en grupo"],"Your avatar image":["A súa imaxe avatar"],"Checkbox for selecting the following fingerprint":["Marque para escoller a seguinte pegada dixital"],"Device without a fingerprint":["Dispositivo sen pegada dixital"],"Checkbox for selecting the following device":["Marca para escoller o seguinte dispositivo"],"Other OMEMO-enabled devices":["Outros dispositivos con OMEMO habilitado"],"Checkbox to select fingerprints of all other OMEMO devices":["Marque para seleccionar as pegadas dixitais OMEMO de todos os dispositivos"],"Remove checked devices and close":["Eliminar os dispositivos marcados e pechar"],"Select all":["Escoller todo"],"This device\'s OMEMO fingerprint":["Pegada dixital OMEMO de este dispositivo"],"Generate new keys and fingerprint":["Xerar novas chaves e pegada dixital"],"Your Profile":["O seu Perfil"],"XMPP Address (JID)":["Enderezo XMPP (JID)"],"Save and close":["Gardar e pechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilice comas para separar múltiples roles. Os seus roles móstranse xunto ao seu nome nas mensaxes."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Lamentámolo, algo fallou ao intentar gardar os datos do seu perfil."],"You can check your browser\'s developer console for any error output.":["Pode mirar na consola de desenvolvemento do navegador detalles do fallo."],"Away":["Fóra"],"Busy":["Ocupado"],"Custom status":["Estado personalizado"],"Offline":["Desconectado"],"Online":["Conectado"],"Away for long":["Fóra hai tempo"],"Change chat status":["Cambiar estado da conversa"],"Personal status message":["Mensaxe de estado persoal"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Seguro que quere desconectar?"],"online":["en liña"],"busy":["ocupado"],"away for long":["fóra hai tempo"],"away":["fóra"],"offline":["desconectado"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Lamentámolo, non se descifrou a mensaxe OMEMO debido a un fallo."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s non parece ter un cliente con soporte OMEMO. O cifrado da conversa no será posible en este grupo."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Non se puido utilizar o cifrado extremo-a-extremo nesta sala, ou a conversa ten certo anonimato ou non todas as participantes soportan OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Non se puido utilizar o cifrado extremo-a-extremo porque %1$s utilizar un cliente que non soporta OMEMO."],"Messages are being sent in plaintext":["As mensaxes estanse a enviar en texto plano"],"Messages are sent encrypted":["As mensaxes envÃanse cifradas"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Esta conversa de grupo ten que ser só para membros e non-anónima para poder usar mensaxes cifradas con OMEMO"],"Sorry, an error occurred while trying to remove the devices.":["Lamentámolo, algo fallou ao intentar eliminar os dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Realmente quere xerar unhas novas chaves OMEMO? Esto eliminará as antigas e todas as mensaxes anteriores cifradas con elas non se poderán ler neste dispositivo."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Lamentámolo, non podemos enviar unha mensaxe cifrada xa que %1$s require que te subscribas a súa presencia para poder ver a súa información OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Lamentámolo, non podemos enviar unha mensaxe cifrada porque non atopamos o servidor remoto de %1$s"],"Unable to send an encrypted message due to an unexpected error.":["Lamentámolo, non se enviou a mensaxe cifrada debido a un fallo."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Lamentámolo, non se atoparon dispositivos aos que enviar unha mensaxe OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta mensaxe está cifrada con OMEMO e o seu cliente non semella soportalo. Atope máis información en https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Obter formulario de rexistro"],"Tip: A list of public XMPP providers is available":["Tip: está dispoñible unha lista de servidores XMPP públicos"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Lamentámolo, non puidemos conectar co provedor escollido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Lamentámolo, o provedor escollido non soporta o rexistro directo. Por favor, inténteo con outro provedor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo foi mal ao intentar conectar con \\"%1$s\\". Seguro que existe?"],"Now logging you in":["Conectandoo"],"Registered successfully":["Rexistrado correctamente"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rexeitou o intento de rexistro. Por favor, comprobe a corrección dos datos introducidos."],"Leave this groupchat":["Deixar esta conversa en grupo"],"Click to toggle the list of open groupchats":["Pulse para activar a lista de conversas en grupo abertas"],"Open Groupchats":["Abrir conversas en grupo"],"Are you sure you want to leave the groupchat %1$s?":["Seguro que quere deixar a conversa en grupo %1$s?"],"Add":["Engadir"],"Add a Contact":["Engadir un contacto"],"This contact is busy":["Este contacto está ocupado"],"This contact is online":["Este contacto está en liña"],"This contact is offline":["Este contacto está desconectado"],"This contact is unavailable":["Este contacto non está dispoñible"],"This contact is away for an extended period":["Este contacto hai tempo que non está conectado"],"This contact is away":["Este contacto está fóra"],"Contact name":["Nome do contacto"],"Optional nickname":["Alcume opcional"],"Sorry, could not find a contact with that name":["Lamentámolo, non atopamos un contacto con ese nome"],"This contact has already been added":["Este contacto xa foi engadido"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contacto"],"Filter by group name":["Filtrar por nome de grupo"],"Filter by status":["Filtrar por estado"],"Any":["Calquera"],"Unread":["Sen ler"],"Chatty":["Falador"],"Extended Away":["Fóra por longo tempo"],"Click to remove %1$s as a contact":["Pulse para eliminar %1$s como contacto"],"Click to accept the contact request from %1$s":["Pulse para aceptar a solicitude de contacto de %1$s"],"Click to decline the contact request from %1$s":["Pulse para rexeitar a solicitude de contacto de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Preme para conversar con %1$s (enderezo XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Seguro que desexa rexeitar a solicitude do contacto?"],"Contacts":["Contactos"],"Add a contact":["Engadir un contacto"],"Re-sync your contacts":["Sincronizar contactos"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[153],{519:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"gl"},"Create your account":["Cree a súa conta"],"Please enter the XMPP provider to register with:":["Por favor, introduza o provedor XMPP no que rexistrarse:"],"Already have a chat account?":["Xa ten unha conta?"],"Log in here":["Conéctese aquÃ"],"Account Registration:":["Rexistro de conta:"],"Register":["Rexistrar"],"Choose a different provider":["Escoller un provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Agarde, estamos solicitando o formulario de rexistro…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["Cortouse a comunicación, intentando recuperala."],"An error occurred while connecting to the chat server.":["Algo fallou ao conectar co servidor da conversa."],"Your XMPP address and/or password is incorrect. Please try again.":["O teu enderezo XMPP e/ou contrasinal son incorrectos. Inténtao de novo."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Lamentámolo, non podemos conectar co servidor XMPP con dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor XMPP non ofrece un mecanismo de autenticación soportado"],"Undecryptable OMEMO message":["Mensaxe OMEMO non descifrable"],"Sorry, could not determine upload URL.":["Lamentámolo, non se puido determinar a URL de subida."],"Sorry, could not determine file upload URL.":["Lamentámolo, non se determinou a URL de subida do ficheiro."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Lamentámolo, non se subeu o ficheiro. A resposta do servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Lamentámolo, non se subeu o seu ficheiro."],"You\'re not allowed to retract your message.":["Non podes retractar desta mensaxe."],"Sorry, an error occurred while trying to retract your message.":["Lamentámolo, algo fallou ó intentar retractar a mensaxe."],"You\'re not allowed to send a message.":["Non tes permiso para enviar unha mensaxe."],"Sorry, an error occurred while trying to send your message.":["Lamentámolo, algo fallou ó intentar enviar a mensaxe."],"Sorry, looks like file upload is not supported by your server.":["Lamentámolo, semella que o servidor non soporta a subida de ficheiros."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamaño do ficheiro, %1$s, excede o lÃmite establecido no servidor, que é %2$s."],"Smileys and emotions":["Sorrisos e emocións"],"People":["Xente"],"Activities":["Actividades"],"Travel":["Viaxar"],"Objects":["Obxetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":["Bandeiras"],"Stickers":["Pegatinas"],"This groupchat is not anonymous":["Esta conversa en grupo non é anónima"],"This groupchat now shows unavailable members":["Esta conversa en grupo agora mostra membros non dispoñibles"],"This groupchat does not show unavailable members":["Esta conversa en grupo non mostra membros non dispoñibles"],"The groupchat configuration has changed":["A configuración da conversa en grupo cambiou"],"Groupchat logging is now enabled":["O rexistro da conversa de grupo está activado"],"Groupchat logging is now disabled":["O rexistro da conversa de grupo está desactivado"],"This groupchat is now no longer anonymous":["Esta conversa en grupo xa non é anónima"],"This groupchat is now semi-anonymous":["Esta conversa en grupo agora é semi-anónima"],"This groupchat is now fully-anonymous":["Esta conversa en grupo agora é totalmente anónima"],"A new groupchat has been created":["Creouse unha nova conversa en grupo"],"Your nickname has been automatically set to %1$s":["O seu alcume estableceuse automáticamente como %1$s"],"Your nickname has been changed to %1$s":["O seu alcume foi cambiado a %1$s"],"You have been banned from this groupchat":["ExcluÃronte desta conversa en grupo"],"You have exited this groupchat due to a technical problem":["SaÃches desta conversa en grupo debido a un problema técnico"],"You have been kicked from this groupchat":["Expulsáronte desta conversa en grupo"],"You have been removed from this groupchat because of an affiliation change":["Sacáronte desta conversa en grupo debido a un cambio na afiliación"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Elimináronte desta conversa en grupo porque o grupo cambiou a só-membros e ti non es membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Elimináronte da conversa en grupo porque o servicio de hospedaxe foi apagado"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Non se enviou a retracción porque non estás presente na conversa en grupo."],"Your message was not delivered because you weren\'t allowed to send it.":["Non se enviou a mensaxe porque non tes permiso para enviala."],"Your message was not delivered because you\'re not present in the groupchat.":["Non se entregou a mensaxe porque non está presente en este grupo."],"A timeout happened while while trying to retract your message.":["Caducou a solicitude mentras intentabas retractar a mensaxe."],"You\'re not allowed to register yourself in this groupchat.":["Non podes rexistrarte a ti mesmo nesta conversa en grupo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Non ten permiso para rexistrarse na conversa en grupo porque é só para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Non pode rexistrar o seu usuario en este grupo, non soporta o rexistro."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Non pode rexistrar o seu usuario na conversa, os datos proporcionados non son válidos."],"Topic set by %1$s":["Asunto establecido por %1$s"],"Topic cleared by %1$s":["Asunto eliminado por %1$s"],"%1$s has been banned by %2$s":["%1$s foi excluÃdo por %2$s"],"%1$s has been banned":["%1$s foi excluÃdo"],"%1$s\'s nickname has changed":["Cambiou o alcume de %1$s"],"%1$s has been kicked out by %2$s":["%1$s foi expulsado por %2$s"],"%1$s has been kicked out":["%1$s foi expulsado"],"%1$s has been removed because of an affiliation change":["%1$s foi eliminado debido a un cambio de afiliación"],"%1$s has been removed for not being a member":["%1$s foi eliminado por non ser membro"],"%1$s is no longer an admin of this groupchat":["%1$s xa non é admin de esta conversa en grupo"],"%1$s is no longer an owner of this groupchat":["%1$s xa non é dono de esta conversa en grupo"],"%1$s is no longer banned from this groupchat":["%1$s xa non está excluÃda de esta conversa en grupo"],"%1$s is no longer a member of this groupchat":["%1$s xa non é membro de este grupo"],"%1$s is now a member of this groupchat":["%1$s é un membro de este grupo"],"%1$s is now an %2$s of this groupchat":["%1$s é o %2$s de esta conversa en grupo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O alcume escollido está reservado ou en uso, por favor escolla outro."],"Password incorrect":["Contrasinal incorrecto"],"You are not on the member list of this groupchat.":["Non es membro de esta conversa en grupo."],"You have been banned from this groupchat.":["Foches excluÃdo desta conversa en grupo."],"You are not allowed to create new groupchats.":["Non te permiso para crear novas conversas en grupo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["O seu alcume non segue as normas de esta conversa en grupo."],"This groupchat does not (yet) exist.":["Esta conversa en grupo non existe (aÃnda)."],"This groupchat has reached its maximum number of participants.":["Esta conversa en grupo alcanzou o número máximo de participantes."],"Remote server not found":["Non se atopou o servidor remoto"],"The explanation given is: \\"%1$s\\".":["A explicación dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidouna a unirse a conversa en grupo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidouna a unirse a conversa en grupo: %2$s, e deulle esta razón: \\"%3$s\\""],"Error":["Fallo"],"Sorry, something went wrong while trying to save your bookmark.":["Lamentámolo, algo fallou ao intentar gardar o marcador."],"Timeout Error":["Fallo de caducidade"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["O servidor non devolveu os teus marcadores no tempo estipulado. Podes recargar a páxina para solicitalos de novo."],"Timeout while trying to fetch archived messages.":["Caducou a solicitude mentras se obtiñan as mensaxes arquivadas."],"An error occurred while querying for archived messages.":["Algo fallou mentras se obtiñan as mensaxes arquivadas."],"My contacts":["Os meus contactos"],"Pending contacts":["Contactos pendentes"],"Contact requests":["Solicitudes de contacto"],"Ungrouped":["Sen agrupar"],"New messages":["Novas mensaxes"],"Sorry, there was an error while trying to add %1$s as a contact.":["Lamentámolo, algo fallou ao intentar engadir a %1$s como contacto."],"This client does not allow presence subscriptions":["Este cliente non permite suscricións de presencia"],"Click to hide these contacts":["Pulse para ocultar estos contactos"],"Unbookmark this groupchat":["Desmarcar esta conversa de grupo"],"Click to open this groupchat":["Pulse para abrir esta conversa en grupo"],"Click to toggle the bookmarks list":["Pulse para mostrar a lista de marcadores"],"Bookmarks":["Marcadores"],"Bookmark this groupchat":["Marcar esta conversa de grupo"],"Would you like this groupchat to be automatically joined upon startup?":["DesexarÃa conectarse automáticamente ao inicio a esta conversa de grupo?"],"The name for this bookmark:":["O nome para este marcador:"],"What should your nickname for this groupchat be?":["Qué alcume desexa ter para esta conversa en grupo?"],"Save":["Gardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Realmente desexa eliminar o marcador \\"%1$s\\"?"],"Unbookmark":["Eliminar marcador"],"Bookmark":["Marcar"],"Close":["Pechar"],"OK":["OK"],"Image: ":["Imaxe: "],"Download audio file \\"%1$s\\"":["Descargar ficheiro de audio \\"%1$s\\""],"Download image file \\"%1$s\\"":["Descargar imaxe \\"%1$s\\""],"Download file \\"%1$s\\"":["Descargar ficheiro \\"%1$s\\""],"Cancel Editing":["Cancelar a edición"],"Edit":["Editar"],"Retract":["Retractar"],"Message versions":["Versións da mensaxe"],"Retry":["Reintentar"],"Uploading file:":["Subindo ficheiro:"],"%1$s has removed this message":["%1$s foi eliminou esta mensaxe"],"This message has been edited":["Esta mensaxe foi editada"],"Show more":["Mostrar máis"],"Show less":["Mostrar menos"],"No message history available.":["Non está dispoñible o historial de mensaxes."],"Search results":["Resultados da busca"],"Search":["Buscar"],"Insert emojis":["Inserir emojis"],"Send the message":["Enviar a mensaxe"],"Start a call":["Iniciar chamada"],"Message characters remaining":["Caracteres restantes"],"Hide participants":["Agochar participantes"],"Show participants":["Mostrar participantes"],"Choose a file to send":["Escolla o ficheiro a enviar"],"Click to write as a normal (non-spoiler) message":["Preme para escribir unha mensaxe normal (non spoiler)"],"Click to write your message as a spoiler":["Preme para escribir unha mensaxe tipo spoiler"],"The User\'s Profile Image":["Imaxe de perfil do usuario"],"Trusted":["De confianza"],"Untrusted":["Non confiable"],"OMEMO Fingerprints":["Pegadas dixitais OMEMO"],"No OMEMO-enabled devices found":["Non se atoparon dispositivos con OMEMO activado"],"Remove as contact":["Eliminar como contacto"],"XMPP Address":["Enderezo XMPP"],"Email":["Correo-e"],"Full Name":["Nome completo"],"Nickname":["Alcume"],"Refresh":["Actualizar"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s está a escribir"],"%1$s has stopped typing":["%1$s deixou de escribir"],"%1$s has gone away":["%1$s marchou"],"Remove messages":["Eliminar mensaxes"],"Close this chat":["Pechar esta conversa"],"Write in the third person":["Escribir en terceira persoa"],"Show this menu":["Mostrar este menú"],"Hidden message":["Mensaxes ocultas"],"Message":["Mensaxe"],"Optional hint":["Truco opcional"],"You have unread messages":["Ten mensaxes sen ler"],"Details":["Detalles"],"See more information about this person":["Mostrar máis información sobre esta persoa"],"Close and end this conversation":["Pechar e saÃr da conversa"],"Sorry, the connection has been lost, and your message could not be sent":["Mágoa!, perdeuse a conexión, a mensaxe non se puido enviar"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Ten en conta que outros clientes XMPP/Jabber (e servidores) poderÃan non ter soporte para retirar mensaxes polo que esta mensaxe poderÃa non ser eliminada deles."],"Are you sure you want to retract this message?":["Seguro que queres eliminar esta mensaxe?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Ten unha mensaxe sen enviar que perderá se segue adiante. Está seguro?"],"Are you sure you want to clear the messages from this conversation?":["Seguro que desexa eliminar as mensaxes de esta conversa?"],"%1$s has gone offline":["%1$s desconectouse"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está en liña"],"Sorry, something went wrong while trying to refresh":["Lamentámolo, algo fallou ao intentar actualizar"],"Are you sure you want to remove this contact?":["Seguro que quere eliminar este contacto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Lamentámolo, algo fallou ao intentar eliminar o contacto %1$s."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para mellorar o rendemento, almacenamos os teus datos no navegador. Desmarca esta opción se se trata dunha computadora pública para borrar os datos cando te desconectes. É importante que te desconectes de xeito explÃcito, se non non se borrarán os datos. O cifrado OMEMO non está dispoñible cando estás a utilizar un dispositivo non confiable."],"This is a trusted device":["Este é un dispositivo de confianza"],"Password":["Contrasinal"],"Create an account":["Crear unha conta"],"Don\'t have a chat account?":["Non ten conta para conversar?"],"Log in":["Conectar"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Pulse aquà para conectar anónimamente"],"Username":["Nome de usuaria"],"user@domain":["usuaria@dominio"],"Please enter a valid XMPP address":["Por favor, introduza un enderezo XMPP válido"],"Chat Contacts":["Conversar con contactos"],"Toggle chat":["Iniciar chat"],"Click to restore this chat":["Pulse para restaurar esta conversa"],"Minimized":["Minimizada"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar esta conversa"],"Minimize this groupchat":["Minimizar esta conversa en grupo"],"This user is a moderator.":["Esta usuaria é moderador."],"This user can send messages in this groupchat.":["Esta usuaria pode enviar mensaxes a conversa en grupo."],"This user can NOT send messages in this groupchat.":["Esta usuaria NON pode enviar mensaxes a conversa en grupo."],"Owner":["Propietario"],"Admin":["Admin"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Pulse para mencionar a %1$s na súa mensaxe."],"Participants":["Participantes"],"This field is required":["Este campo é requerido"],"Join":["Unirse"],"Enter a new Groupchat":["Introduza unha nova Conversa en grupo"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Nome da conversa en grupo"],"Groupchat address":["Enderezo da conversa en grupo"],"Groupchat id is invalid.":["O id da conversa en grupo non é válido."],"Invite":["Convidar"],"Invite someone to this groupchat":["Convida a alguén a esta conversa en grupo"],"user@example.org":["nome@exemplo.org"],"Optional reason for the invitation":["Razón para o convite (optativo)"],"Show groupchats":["Mostra conversas en grupo"],"Server address":["Enderezo do servidor"],"Show more information on this groupchat":["Mostrar máis información sobre esta conversa en grupo"],"Query for Groupchats":["Busque Conversas en grupo"],"Description:":["Descrición:"],"Groupchat Address (JID):":["Enderezo da conversa en grupo (JID):"],"Participants:":["PartÃcipes:"],"Features:":["CaracterÃsticas:"],"Requires authentication":["Require autenticación"],"Hidden":["Oculto"],"Requires an invitation":["Require convite"],"Moderated":["Moderada"],"Non-anonymous":["Non anónima"],"Open":["Aberta"],"Permanent":["Permanente"],"Public":["Pública"],"Semi-anonymous":["Semi anónima"],"Temporary":["Temporal"],"Unmoderated":["Non moderada"],"conference.example.org":["conferencia.exemplo.org"],"Groupchats found":["Atopáronse conversas en grupo"],"No groupchats found":["Non se atoparon conversas en grupo"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Os moderadores son usuarios con privilexios que poden cambiar os roles de outros usuarios (excepto os de administradores e donos)."],"The default role, implies that you can read and write messages.":["O rol por omisión implica que pode ler e escribir mensaxes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Os visitantes non poden escribir mensaxes nunha sala multiusuario moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Dono é a maior afiliación. Os donos poden modificar os roles e afiliación dos outros usuarios."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin é o segundo maior nivel de afiliación. Admins poden modificar roles e afiliación de todos os usuarios menos dos donos."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para excluÃr un usuario, daslle a afiliación de \\"forasteiro\\"."],"Change role":["Cambiar rol"],"New Role":["Novo rol"],"Reason":["Razón"],"Change affiliation":["Cambiar a afiliación"],"New affiliation":["Nova afiliación"],"Affiliation":["Afiliación"],"Moderator Tools":["Ferramentas de moderador"],"No users with that affiliation found.":["Non se atoparon usuarios con esa afiliación."],"No users with that role found.":["Non se atoparon usuarios con ese rol."],"Type here to filter the search results":["Escribe aquà para filtrar os resultados da busca"],"Show users":["Mostrar usuarios"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Os roles asÃgnanse ás usuarias para outorgar ou denegarlles certos permisos nunha conversa multiusuario. AsÃgnanse de xeito implÃcito ou explÃcito como parte da filiación. Un rol que non é debido a filiación só é valido durante a duración da sesión do usuario."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Unha afiliación é un tÃtulo de alto nivel que normalmente implica certo rol e que outorga certos privilexios e responsabilidades. Por exemplo, admins e donos teñen rol de moderador de xeito automático."],"Timeout error while trying to set the affiliation":["Fallo de caducidade ó intentar establecer a afiliación"],"Sorry, you\'re not allowed to make that change":["SentÃmolo, mais non tes permiso para realizar ese cambio"],"Sorry, something went wrong while trying to set the affiliation":["Lamentámolo, algo fallou ao establecer a afiliación"],"Affiliation changed":["Cambiou a afiliación"],"Role changed":["Rol cambiado"],"You\'re not allowed to make that change":["Non tes permiso para realizar ese cambio"],"Sorry, something went wrong while trying to set the role":["Lamentámolo, algo fallou ao intentar establer o rol"],"Topic":["Asunto"],"Topic author":["Autor do asunto"],"Groupchat address (JID)":["Enderezo da conversa en grupo (JID)"],"Message archiving":["Arquivado de mensaxes"],"Messages are archived on the server":["As mensaxes gárdanse no servidor"],"Description":["Descrición"],"Features":["CaracterÃsticas"],"This groupchat is not publicly searchable":["Esta conversa en grupo non está en listas públicas"],"This groupchat is restricted to members only":["Esta conversa en grupo é accesible só para membros"],"Members only":["Só para membros"],"Participants entering this groupchat need to request permission to write":["Os participantes da conversa deben solicitar permiso para escribir"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Esta conversa en grupo non solicita contrasinal para entrar"],"No password required":["Sen protección de contrasinal"],"Not anonymous":["Non anónima"],"All other groupchat participants can see your XMPP address":["Calquera outro participante da conversa pode ver o seu enderezo XMPP"],"Not moderated":["Non moderada"],"Participants entering this groupchat can write right away":["Os participantes poden escribir libremente"],"Online users":["Usuarias conectadas"],"Anyone can join this groupchat":["Calquera pode unirse a esta conversa en grupo"],"This groupchat requires a password before entry":["Esta conversa en grupo precisa un contrasinal para entrar"],"Password protected":["Protexido por contrasinal"],"Persistent":["Perenne"],"This groupchat persists even if it\'s unoccupied":["Esta conversa en grupo permanece incluso si está baldeira"],"Only moderators can see your XMPP address":["Só os moderadores poden ver o seu enderezo XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversa en grupo desaparecerá unha vez saia a última persoa"],"This groupchat is publicly searchable":["Esta conversa en grupo está en listas públicas"],"Groupchat info for %1$s":["Info da conversa en grupo para %1$s"],"You\'re not allowed to send messages in this room":["Non ten permiso para enviar mensaxes a esta sala"],"The conversation has moved. Click below to enter.":["Moveuse a conversa. Pulse abaixo para entrar."],"This groupchat no longer exists":["Esta conversa en grupo xa non existe"],"Hide the groupchat topic":["Agochar o asunto da conversa en grupo"],"This groupchat is bookmarked":["Esta conversa está nos marcadores"],"Enter groupchat":["Entrar na conversa en grupo"],"Choose a nickname to enter":["Escolle un alcume para entrar"],"Please choose your nickname":["Por favor, escolla o seu alcume"],"This groupchat requires a password":["Esta conversa en grupo precisa de un contrasinal"],"Password: ":["Contrasinal: "],"Submit":["Enviar"],"%1$s has entered the groupchat":["%1$s entrou na conversa en grupo"],"%1$s has left the groupchat":["%1$s deixou a conversa en grupo"],"%1$s is now a moderator":["%1$s agora é moderador"],"%1$s is no longer a moderator":["%1$s xa non é moderador"],"%1$s has been given a voice":["%1$s ten a palabra"],"%1$s has been muted":["%1$s foi acalado"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s está escribindo"],"%1$s have stopped typing":["%1$s deixou de escribir"],"%1$s have gone away":["%1$s marchou"],"%1$s have entered the groupchat":["%1$s entrou na conversa en grupo"],"%1$s have left the groupchat":["%1$s deixou a conversa en grupo"],"%1$s are now moderators":["%1$s agora son moderadores"],"%1$s are no longer moderators":["%1$s xa non son moderadores"],"%1$s have been given voices":["Concedéronlle a palabra a %1$s"],"%1$s have been muted":["%1$s foron acaladas"],"Change user\'s affiliation to admin":["Cambiar a afiliación da usuaria a admin"],"Ban user by changing their affiliation to outcast":["Prohibir usuario cambiando a filiación na sala"],"Clear the chat area":["Limpar o área de conversa"],"Close this groupchat":["Pechar esta conversa en grupo"],"Change user role to participant":["Cambiar o rol da usuaria a participante"],"Remove this groupchat":["Eliminar esta conversa en grupo"],"Kick user from groupchat":["Expulsar a usuaria da conversa en grupo"],"Write in 3rd person":["Escribir en terceira persoa"],"Grant membership to a user":["Conceder a membresÃa a unha usuaria"],"Opens up the moderator tools GUI":["Abre a interface gráfica de ferramentas de moderación"],"Remove user\'s ability to post messages":["Quitarlle a posibilidade de publicar mensaxes a usuaria"],"Change your nickname":["Cambiar o seu alcume"],"Grant moderator role to user":["Conceder rol de moderador a usuaria"],"Grant ownership of this groupchat":["Conceder a propiedade de esta conversa en grupo"],"Register your nickname":["Rexistrar o seu alcume"],"Revoke the user\'s current affiliation":["Repudiar a filiación actual do usuario"],"Set groupchat subject":["Establecer o asunto da conversa en grupo"],"Set groupchat subject (alias for /subject)":["Establecer o asunto da conversa (alias para /subject)"],"Allow muted user to post messages":["Permitir as usuarias acaladas publicar mensaxes"],"You are about to retract this message.":["Vas a eliminar esta mensaxe."],"You may optionally include a message, explaining the reason for the retraction.":["De xeito opcional poderÃas deixar un aviso, explicando a razón de tela eliminado."],"Message Retraction":["Eliminación da mensaxe"],"Optional reason":["Razón (optativo)"],"Sorry, you\'re not allowed to retract this message":["Desculpa, pero non tes permiso para borrar esta mensaxe"],"A timeout occurred while trying to retract the message":["Caducou a solicitude de borrado da mensaxe"],"Sorry, you\'re not allowed to retract this message.":["Desculpa, pero non tes permiso para borrar esta mensaxe."],"Show more information about this groupchat":["Mostrar máis información sobre esta conversa en grupo"],"Configure":["Configurar"],"Configure this groupchat":["Configurar a conversa en grupo"],"Invite someone to join this groupchat":["Convida a alguén a unirse a conversa en grupo"],"Show topic":["Mostrar o tema"],"Hide topic":["Agochar o tema"],"Show the topic message in the heading":["Mostrar o tema da conversa na cabeceira"],"Hide the topic in the heading":["Agochar o tema da conversa na cabeceira"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar esta conversa en grupo"],"Destroy":["DestruÃr"],"Leave":["SaÃr"],"Leave and close this groupchat":["Deixar e pechar esta conversa en grupo"],"Are you sure you want to leave this groupchat?":["Seguro que queres deixar a conversa en grupo?"],"Hide the list of participants":["Agochar a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Prohibido: non ten os permisos necesarios para facer iso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Prohibido: non ten a afiliación necesaria para facer iso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fallo: O comando \\"%1$s\\" precisa dous argumentos, o alcume do usuario e opcionalmente unha razón."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fallo: non se atopou ao participante da conversa con esos parámetros"],"Error: found multiple groupchat participant based on your arguments":["Fallo: atopáronse varios participantes con esos parámetros"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Non se atopou un participante con ese alcume. PoderÃa ter saÃdo da conversa."],"Sorry, an error happened while running the command.":["Lamentámolo, algo fallou ao executar o comando."],"Check your browser\'s developer console for details.":["Mira na consola de desenvolvedor do navegador para máis detalles."],"Are you sure you want to destroy this groupchat?":["Seguro que queres desbotar a conversa en grupo?"],"Please enter the XMPP address of this groupchat to confirm":["Por favor, escribe o provedor XMPP desta conversa en grupo para confirmar"],"name@example.org":["nome@exemplo.org"],"Optional reason for destroying this groupchat":["Razón para eliminar esta conversa en grupo (optativo)"],"Optional XMPP address for a new groupchat that replaces this one":["Enderezo XMPP optativo para a nova conversa en grupo que substitúe a esta"],"replacement@example.org":["substituta@exemplo.org"],"Your nickname is \\"%1$s\\"":["O seu alcume é \\"%1$s\\""],"Error: invalid number of arguments":["Fallo: número de argumentos non válido"],"This action was done by %1$s.":["Esta acción foi feita por %1$s."],"The reason given is: \\"%1$s\\".":["A razón dada é: \\"%1$s\\"."],"Groupchats":["Conversas en grupo"],"Add a new groupchat":["Engadir unha nova conversa en grupo"],"Query for groupchats":["Buscar conversas en grupo"],"Sorry, an error occurred while trying to submit the config form.":["Lamentámolo, algo fallou ao intentar enviar o formulario de configuración."],"Close these announcements":["Pechar estos anuncios"],"Announcements":["Anuncios"],"Click to open this server message":["Preme para abrir a esta mensaxe do servidor"],"Notification from %1$s":["Notificación de %1$s"],"%1$s says":["%1$s di"],"Encrypted message received":["Recibida unha mensaxe cifrada"],"has gone offline":["non está en liña"],"has gone away":["marchou"],"is busy":["está ocupado"],"has come online":["voltou a estar en liña"],"wants to be your contact":["quere ser un contacto seu"],"Hide":["Agochar"],"Execute":["Executar"],"On which entity do you want to run commands?":["¿En qué entidade queres executar os comandos?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Certos servizos e entidades XMPP permÃtenlle a usuarias autorizadas executar comandos a medida neles."],"Commands found":["Comandos atopados"],"List available commands":["Lista de comandos dispoñibles"],"No commands found":["Non se atoparon comandos"],"Sorry, an error occurred while looking for commands on that entity.":["Lamentámolo, algo fallou ó buscar os comandos nesa entidade."],"The specified entity doesn\'t support ad-hoc commands":["A entidade indicada non soporta os comandos a medida"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Lamentámolo, algo fallou ao executar o comando. Mira os detalles na consola de desenvolvedora"],"About":["Acerca de"],"Commands":["Comandos"],"Settings":["Axustes"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Cliente de %1$s código aberto %2$s para conversas XMPP proporcionado por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$sTradúzao%2$s para o seu idioma"],"Log out":["Desconectar"],"Click to change your chat status":["Pulse para cambiar o estado da conversa"],"Show details about this chat client":["Mostrar detalles sobre esta conversa en grupo"],"Your avatar image":["A súa imaxe avatar"],"Checkbox for selecting the following fingerprint":["Marque para escoller a seguinte pegada dixital"],"Device without a fingerprint":["Dispositivo sen pegada dixital"],"Checkbox for selecting the following device":["Marca para escoller o seguinte dispositivo"],"Other OMEMO-enabled devices":["Outros dispositivos con OMEMO habilitado"],"Checkbox to select fingerprints of all other OMEMO devices":["Marque para seleccionar as pegadas dixitais OMEMO de todos os dispositivos"],"Remove checked devices and close":["Eliminar os dispositivos marcados e pechar"],"Select all":["Escoller todo"],"This device\'s OMEMO fingerprint":["Pegada dixital OMEMO de este dispositivo"],"Generate new keys and fingerprint":["Xerar novas chaves e pegada dixital"],"Your Profile":["O seu Perfil"],"XMPP Address (JID)":["Enderezo XMPP (JID)"],"Save and close":["Gardar e pechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilice comas para separar múltiples roles. Os seus roles móstranse xunto ao seu nome nas mensaxes."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Lamentámolo, algo fallou ao intentar gardar os datos do seu perfil."],"You can check your browser\'s developer console for any error output.":["Pode mirar na consola de desenvolvemento do navegador detalles do fallo."],"Away":["Fóra"],"Busy":["Ocupado"],"Custom status":["Estado personalizado"],"Offline":["Desconectado"],"Online":["Conectado"],"Away for long":["Fóra hai tempo"],"Change chat status":["Cambiar estado da conversa"],"Personal status message":["Mensaxe de estado persoal"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Seguro que quere desconectar?"],"online":["en liña"],"busy":["ocupado"],"away for long":["fóra hai tempo"],"away":["fóra"],"offline":["desconectado"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Lamentámolo, non se descifrou a mensaxe OMEMO debido a un fallo."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Lamentámolo, non se descifrou a mensaxe OMEMO porque non temos o JID desta usuaria."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s non parece ter un cliente con soporte OMEMO. O cifrado da conversa no será posible en este grupo."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Non se puido utilizar o cifrado extremo-a-extremo nesta sala, ou a conversa ten certo anonimato ou non todas as participantes soportan OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Non se puido utilizar o cifrado extremo-a-extremo porque %1$s utilizar un cliente que non soporta OMEMO."],"Messages are being sent in plaintext":["As mensaxes estanse a enviar en texto plano"],"Messages are sent encrypted":["As mensaxes envÃanse cifradas"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Esta conversa de grupo ten que ser só para membros e non-anónima para poder usar mensaxes cifradas con OMEMO"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Lamentámolo, non podemos enviar unha mensaxe cifrada xa que %1$s require que te subscribas a súa presencia para poder ver a súa información OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Lamentámolo, non podemos enviar unha mensaxe cifrada porque non atopamos o servidor remoto de %1$s"],"Unable to send an encrypted message due to an unexpected error.":["Lamentámolo, non se enviou a mensaxe cifrada debido a un fallo."],"Sorry, an error occurred while trying to remove the devices.":["Lamentámolo, algo fallou ao intentar eliminar os dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Realmente quere xerar unhas novas chaves OMEMO? Esto eliminará as antigas e todas as mensaxes anteriores cifradas con elas non se poderán ler neste dispositivo."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Lamentámolo, non se atoparon dispositivos aos que enviar unha mensaxe OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta mensaxe está cifrada con OMEMO e o seu cliente non semella soportalo. Atope máis información en https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Obter formulario de rexistro"],"Tip: A list of public XMPP providers is available":["Tip: está dispoñible unha lista de servidores XMPP públicos"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Lamentámolo, non puidemos conectar co provedor escollido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Lamentámolo, o provedor escollido non soporta o rexistro directo. Por favor, inténteo con outro provedor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo foi mal ao intentar conectar con \\"%1$s\\". Seguro que existe?"],"Now logging you in":["Conectandoo"],"Registered successfully":["Rexistrado correctamente"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rexeitou o intento de rexistro. Por favor, comprobe a corrección dos datos introducidos."],"Leave this groupchat":["Deixar esta conversa en grupo"],"Click to toggle the list of open groupchats":["Pulse para activar a lista de conversas en grupo abertas"],"Open Groupchats":["Abrir conversas en grupo"],"Are you sure you want to leave the groupchat %1$s?":["Seguro que quere deixar a conversa en grupo %1$s?"],"Add":["Engadir"],"Add a Contact":["Engadir un contacto"],"This contact is busy":["Este contacto está ocupado"],"This contact is online":["Este contacto está en liña"],"This contact is offline":["Este contacto está desconectado"],"This contact is unavailable":["Este contacto non está dispoñible"],"This contact is away for an extended period":["Este contacto hai tempo que non está conectado"],"This contact is away":["Este contacto está fóra"],"Contact name":["Nome do contacto"],"Optional nickname":["Alcume opcional"],"Sorry, could not find a contact with that name":["Lamentámolo, non atopamos un contacto con ese nome"],"This contact has already been added":["Este contacto xa foi engadido"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contacto"],"Filter by group name":["Filtrar por nome de grupo"],"Filter by status":["Filtrar por estado"],"Any":["Calquera"],"Unread":["Sen ler"],"Chatty":["Falador"],"Extended Away":["Fóra por longo tempo"],"Click to remove %1$s as a contact":["Pulse para eliminar %1$s como contacto"],"Click to accept the contact request from %1$s":["Pulse para aceptar a solicitude de contacto de %1$s"],"Click to decline the contact request from %1$s":["Pulse para rexeitar a solicitude de contacto de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Preme para conversar con %1$s (enderezo XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Seguro que desexa rexeitar a solicitude do contacto?"],"Contacts":["Contactos"],"Add a contact":["Engadir un contacto"],"Re-sync your contacts":["Sincronizar contactos"]}}}')}}]); //# sourceMappingURL=gl-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/he-LC_MESSAGES-converse-po.js b/src/conversejs/locales/he-LC_MESSAGES-converse-po.js index f584d4d638779a6b91a12015e783756f44127c82..8122b0d3596e6487617b6261199597b50b66db1b 100644 --- a/src/conversejs/locales/he-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/he-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{432:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=(n != 1);","lang":"he"},"Create your account":["יצירת חשבון משלך"],"Please enter the XMPP provider to register with:":["× × ×œ×”×§×œ×™×“ ×ת ספק ×”Ö¾XMPP להרשמה מולו:"],"Already have a chat account?":["כבר יש לך חשבון להתכתבות?"],"Log in here":["×›× ×™×¡×” מכ×ן"],"Account Registration:":["×¨×™×©×•× ×—×©×‘×•×Ÿ:"],"Register":["הירש×"],"Choose a different provider":["× × ×œ×‘×—×•×¨ בספק ×חר"],"Hold tight, we\'re fetching the registration form…":["להחזיק חזק, ×× ×—× ×• מבי××™× ×ת טופס ההרשמה…"],"Cancel":["ביטול"],"The connection has dropped, attempting to reconnect.":["החיבור × ×§×˜×¢, מתבצע × ×™×¡×™×•×Ÿ חיבור מחדש."],"An error occurred while connecting to the chat server.":["×ירעה שגי××” במהלך ההתחברות לשרת הצ׳×ט."],"Your XMPP address and/or password is incorrect. Please try again.":["כתובת ×”Ö¾XMPP ו/×ו הססמה שגויי×. × × ×œ× ×¡×•×ª שוב."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["×œ× ×”×¦×œ×—× ×• להתחבר למ×רח ×”Ö¾XMPP ×¢× ×©× ×”×ž×ª×—×: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["שרת ×”Ö¾XMPP ×œ× ×”×¦×™×¢ ×ž× ×’× ×•×Ÿ ×ימות × ×ª×ž×š"],"Sorry, could not determine upload URL.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— ×ת כתובת ההעל××”, עמך הסליחה."],"Sorry, could not determine file upload URL.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— ×ת כתובת העל×ת הקבצי×, עמך הסליחה."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["העל×ת הקובץ שלך ×œ× ×”×¦×œ×™×—×”. תגובת השרת ×”×™×: „%1$sâ€, עמך הסליחה"],"Sorry, could not succesfully upload your file.":["העל×ת הקובץ שלך ×œ× ×”×¦×œ×™×—×”, עמך הסליחה."],"Sorry, looks like file upload is not supported by your server.":["× ×¨××” ×›×™ השרת שלך ××™× ×• תומך בהעל×ת קבצי×, עמך הסליחה."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["גודל הקובץ שלך, %1$s, חורג מהגודל המרבי שמרשה השרת ×©×”×•× %2$s."],"Smileys and emotions":["×—×™×™×›× ×™× ×•×¨×’×©×•× ×™×"],"People":["×× ×©×™×"],"Activities":["פעילויות"],"Travel":["טיול"],"Objects":["חפצי×"],"Animals and nature":["חיות וטבע"],"Food and drink":["מזון ושתייה"],"Symbols":["סמלי×"],"Flags":["דגלי×"],"Stickers":["מדבקות"],"This groupchat is not anonymous":["התכתבות קבוצתית זו ×–×” ××™× ×” ××œ×ž×•× ×™×ª"],"This groupchat now shows unavailable members":["התכתבות קבוצתית זו מציגה כעת ×—×‘×¨×™× ×©××™× × ×–×ž×™× ×™×"],"This groupchat does not show unavailable members":["התכתבות קבוצתית זו ××™× ×” מציגה ×—×‘×¨×™× ×©××™× × ×–×ž×™× ×™×"],"The groupchat configuration has changed":["הגדרות ההתכתבות הקבוצתית ×”×–×ת × ×¢×¨×›×•"],"Groupchat logging is now enabled":["תיעוד ההתכתבות הקבוצתית פעיל כעת"],"Groupchat logging is now disabled":["תיעוד ההתכתבות הקבוצתית מושבת כעת"],"This groupchat is now no longer anonymous":["ההתכתבות הקבוצתית ×”×–×ת ××™× ×” ××œ×ž×•× ×™×ª יותר"],"This groupchat is now semi-anonymous":["ההתכתבות הקבוצתית ×”×–×ת ×”×™× ××œ×ž×•× ×™×ª למחצה כעת"],"This groupchat is now fully-anonymous":["התכתבות קבוצתית זו ×”× ×” ××œ×ž×•× ×™×ª לחלוטין כעת"],"A new groupchat has been created":["× ×•×¦×¨×” התכתבות קבוצתית חדשה"],"Your nickname has been automatically set to %1$s":["×”×›×™× ×•×™ שלך הוגדר לכדי %1$s ×וטומטית"],"Your nickname has been changed to %1$s":["×”×›×™× ×•×™ שלך × ×¢×¨×š לכדי %1$s"],"You have been banned from this groupchat":["גישתך להתכתבות הקבוצתית הזו × ×—×¡×ž×”"],"You have been kicked from this groupchat":["× ×–×¨×§×ª מההתכתבות הקבוצתית ×”×–×ת"],"You have been removed from this groupchat because of an affiliation change":["הוסרת מההתכתבות הקבוצתית הזו עקב ×©×™× ×•×™ שיוך"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["הוסרת מההתכתבות הקבוצתית ×”×–×ת כיוון שההשתתפות מעתה מיועדת ×œ×—×‘×¨×™× ×‘×œ×‘×“ ולך ×ין חברות"],"You have been removed from this groupchat because the service hosting it is being shut down":["הוסרת מההתכתבות הקבוצתית ×”×–×ת כיוון ש×חסון השירות בהליכי כיבוי"],"Your message was not delivered because you weren\'t allowed to send it.":["ההודעה שלך ×œ× × ×©×œ×—×” כיוון ש×ין לך הרש××” לשלוח ×ותה."],"Your message was not delivered because you\'re not present in the groupchat.":["ההודעה שלך ×œ× × ×©×œ×—×” כיוון ש××™× ×š בהתכתבות קבוצתית זו."],"You\'re not allowed to register yourself in this groupchat.":["×ין לך הרש××” ×œ×”×™×¨×©× ×¢×¦×ž×ית להתכתבות קבוצתית זו."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["×ין לך הרש××” ×œ×”×™×¨×©× ×œ×”×ª×›×ª×‘×•×ª קבוצתית זו ×›×™ ×”×™× ×ž×™×•×¢×“×ª ×œ×—×‘×¨×™× ×‘×œ×‘×“."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["×œ× × ×™×ª×Ÿ ×œ×¨×©×•× ×ת ×”×›×™× ×•×™ לך בהתכתבות הקבוצתית ×”×–×ת, ×ין לה תמיכה בהרשמה."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["×ין ×פשרות ×œ×¨×©×•× ×ת ×”×›×™× ×•×™ שלך בהתכתבות הקבוצתית הזו, תצורת ×”× ×ª×•× ×™× ×©×¡×•×¤×§×” שגויה."],"Topic set by %1$s":["× ×•×©× ×”×ª×›×ª×‘×•×ª קבוצתית זו הוגדר על ידי %1$s"],"Topic cleared by %1$s":["× ×•×©× ×”×ª×›×ª×‘×•×ª קבוצתית זו × ×ž×—×§ על ידי %1$s"],"%1$s has been banned by %2$s":["הגישה של %1$s × ×—×¡×ž×” על ידי %2$s"],"%1$s has been banned":["הגישה של %1$s × ×—×¡×ž×”"],"%1$s\'s nickname has changed":["×”×›×™× ×•×™ של %1$s הוחלף"],"%1$s has been kicked out by %2$s":["%1$s × ×‘×¢×˜/×” על ידי %2$s"],"%1$s has been kicked out":["%1$s × ×‘×¢×˜/×”"],"%1$s has been removed because of an affiliation change":["%1$s הוסר/×” עקב ×©×™× ×•×™ שיוך"],"%1$s has been removed for not being a member":["%1$s הוסר/×” עקב העדר מעמד חברות"],"%1$s is no longer an admin of this groupchat":["התפקיד ×”× ×™×”×•×œ×™ של %1$s הוסר עבור ההתכתבות הקבוצתית הזו"],"%1$s is no longer an owner of this groupchat":["הבעלות של %1$s על ההתכתבות הקבוצתית הזו ××™× ×” תקפה עוד"],"%1$s is no longer banned from this groupchat":["הגישה של %1$s להתכתבות הקבוצתית הזו ××™× ×” חסומה יותר"],"%1$s is now an %2$s of this groupchat":["התפקיד של %1$s בהתכתבות הקבוצתית הזו ×”×•× ×¢×›×©×™×• %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["×”×›×™× ×•×™ שבחרת שמור ×ו בשימוש, × × ×œ×‘×—×•×¨ ב×חד ×חר."],"Password incorrect":["הססמה שגויה"],"You are not on the member list of this groupchat.":["××™× ×š ברשימת ×”×—×‘×¨×™× ×©×œ התכתבות קבוצתית זו."],"You have been banned from this groupchat.":["גישתך להתכתבות קבוצתית זו × ×—×¡×ž×”."],"You are not allowed to create new groupchats.":["×ין לך הרש××” ליצור התכתבויות קבוצתיות חדשות."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["×”×›×™× ×•×™ שלך ××™× ×• תו×× ×œ×ž×“×™× ×™×•×ª של ההתכתבות הקבוצתית הזו."],"This groupchat does not (yet) exist.":["התכתבות קבוצתית זו (עדיין) ××™× ×” קיימת."],"This groupchat has reached its maximum number of participants.":["התכתבות קבוצתית זו ×”×’×™×¢×” לרף ×”× ×•×›×—×™× ×”×¢×œ×™×•×Ÿ שלה."],"Remote server not found":["השרת המרוחק ×œ× × ×ž×¦×"],"The explanation given is: \\"%1$s\\".":["ההסבר שסופק הו×: „%1$sâ€."],"%1$s has invited you to join a groupchat: %2$s":["קיבלת ×”×–×ž× ×” מ×ת %1$s להצטרף להתכתבות קבוצתית: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["קיבלת ×”×–×ž× ×” מ×ת %1$s להצטרף להתכתבות קבוצתית: %2$s, הסיבה ×©× ×™×ª× ×” ×œ×”×–×ž× ×” הזו ×”×™×: „%3$sâ€"],"Error":["שגי××”"],"Sorry, something went wrong while trying to save your bookmark.":["משהו השתבש במהלך × ×™×¡×™×•×Ÿ שמירת ×”×¡×™×ž× ×™×™×” שלך, עמך הסליחה."],"Timeout Error":["שגי×ת ×ª×•× ×–×ž×Ÿ קצוב"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["×× ×©×™ הקשר שלי"],"Pending contacts":["×× ×©×™ קשר ×ž×ž×ª×™× ×™×"],"Contact requests":["בקשות ×יש קשר"],"Ungrouped":["×œ×œ× ×§×‘×•×¦×”"],"Sorry, there was an error while trying to add %1$s as a contact.":["הוספת %1$s ל×× ×©×™ הקשר × ×›×©×œ×”, עמך הסליחה."],"This client does not allow presence subscriptions":["לקוח ×–×” ×œ× ×ž×ª×™×¨ הרשמות × ×•×›×—×•×ª"],"Click to hide these contacts":["לחץ כדי להסתיר ×ת ×× ×©×™ קשר ×לה"],"Unbookmark this groupchat":["הסרת התכתבות קבוצתית זו ×ž×”×¡×™×ž× ×™×•×ª"],"Click to open this groupchat":["יש ללחוץ כדי לפתוח ×ת ההתכתבות הקבוצתית ×”×–×ת"],"Click to toggle the bookmarks list":["יש ללחוץ כדי להסתיר/להציג רשימת ×¡×™×ž× ×™×•×ª"],"Bookmarks":["×¡×™×ž× ×™×•×ª"],"Bookmark this groupchat":["הוספת התכתבות קבוצתית זו ×œ×¡×™×ž× ×™×•×ª"],"Would you like this groupchat to be automatically joined upon startup?":["להצטרף להתכתבות הקבוצתית ×”×–×ת ×¢× ×”×”×¤×¢×œ×”?"],"The name for this bookmark:":["×©× ×”×¡×™×ž× ×™×™×” ×”×–×ת:"],"What should your nickname for this groupchat be?":["מה ×מור להיות ×”×›×™× ×•×™ שלך בהתכתבות הקבוצתית ×”×–×ת?"],"Save":["שמירה"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["להסיר ×ת ×”×¡×™×ž× ×™×™×” „%1$sâ€?"],"Close":["סגירה"],"OK":["×ישור"],"Image: ":[""],"Download audio file \\"%1$s\\"":["הורדת קובץ השמע „%1$sâ€"],"Download file \\"%1$s\\"":["הורדת הקובץ „%1$sâ€"],"Edit":[""],"Retract":[""],"Message versions":["גרס×ות ההודעה"],"Retry":[""],"Uploading file:":["קובץ × ×©×œ×—:"],"This message has been edited":["ההודעה × ×¢×¨×›×”"],"Show more":["להציג עוד"],"No message history available.":["×ין היסטוריית הודעות ×–×ž×™× ×”."],"Search results":["תוצ×ות חיפוש"],"Search":["חיפוש"],"Insert emojis":["הוספת ×מוג׳י×"],"Send the message":["שליחת ההודעה"],"Start a call":["התחל שיחה"],"Message characters remaining":["×ª×•×•×™× ×©× ×•×ª×¨×• להודעה"],"Choose a file to send":["× × ×œ×‘×—×•×¨ קובץ לשליחה"],"Click to write as a normal (non-spoiler) message":["יש ללחוץ ×›×ן כדי לכתוב הודעת מצב רגילה (×œ× ×ž×•×ª×מת)"],"Click to write your message as a spoiler":["יש ללחוץ ×›×ן כדי לכתוב הודעת מצב מות×מת"],"The User\'s Profile Image":["×ª×ž×•× ×ª הפרופיל של המשתמש"],"Trusted":["מהימן"],"Untrusted":["בלתי מהימן"],"OMEMO Fingerprints":["טביעות ×צבע OMEMO"],"Remove as contact":["הסרה ×›×יש קשר"],"XMPP Address":["כתובת XMPP"],"Email":["דו×״ל"],"Full Name":["×©× ×ž×œ×"],"Nickname":["×©× ×›×™× ×•×™"],"Refresh":["×¨×¢× ×•×Ÿ"],"Role":["תפקיד"],"URL":["כתובת"],"%1$s is typing":["הקלדה מצד %1$s"],"%1$s has stopped typing":["ההקלדה של %1$s הפסיקה"],"%1$s has gone away":["הפעילות של %1$s מושהית"],"Remove messages":["הסרת הודעות"],"Write in the third person":["כתיבה בגוף השלישי"],"Show this menu":["הצגת תפריט ×–×”"],"Hidden message":["הודעה מוסתרת"],"Message":["הודעה"],"Optional hint":["רמז כרשות"],"You have unread messages":["יש לך הודעות ×©×œ× × ×§×¨×ו"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["יש לך הודעה ×©×œ× × ×©×œ×—×” שת×בד ×× ×œ× ×ª×™×©×ž×¨. להמשיך?"],"Are you sure you want to clear the messages from this conversation?":["×œ×¤× ×•×ª ×ת ההודעות מהדיון ×”×–×”?"],"%1$s has gone offline":["החיבור של %1$s × ×•×ª×§"],"%1$s is busy":["×ין ×–×ž×™× ×•×ª מצד %1$s"],"%1$s is online":["התחברות מצד %1$s"],"Sorry, something went wrong while trying to refresh":["×ירעה שגי××” במהלך × ×™×¡×™×•×Ÿ ×”×¨×¢× ×•×Ÿ, עמך הסליחה"],"Are you sure you want to remove this contact?":["להסיר ×יש קשר ×–×”?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["×ירעה שגי××” במהלך × ×™×¡×™×•×Ÿ הסרת %1$s ×›×יש קשר."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["כדי לשפר ×ת הביצועי×, ×× ×• ×©×•×ž×¨×™× ×ת ×”× ×ª×•× ×™× ×©×œ×š במטמון בדפדפן. יש לבטל סימון תיבה זו ×× ×ž×“×•×‘×¨ במחשב ציבורי ×ו ×©×‘×¨×¦×•× ×š ×©×”× ×ª×•× ×™× ×©×œ×š יימחקו ×¢× ×”×™×¦×™××” מהחשבון. חשבון מ×וד לצ×ת בצורה מפורשת ×חרת יתכן ×©×œ× ×›×œ ×”× ×ª×•× ×™× ×©× ×©×ž×¨×• יימחקו. לתשומת לבך, בעת שימוש במכשיר בלתי מהימן, ×ין תמיכה ×‘×”×¦×¤× ×ª OMEMO."],"This is a trusted device":["×–×” מכשיר מהימן"],"Create an account":["יצירת חשבון"],"Don\'t have a chat account?":["×ין לך חשבון התכתבות?"],"Log in":["×›× ×™×¡×”"],"Disconnected":["×ž× ×•×ª×§"],"Click here to log in anonymously":["יש ללחוץ ×›×ן כדי ×œ×”×™×›× ×¡ ב×ופן ××œ×ž×•× ×™"],"Username":["×©× ×ž×©×ª×ž×©"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["× × ×œ×”×§×œ×™×“ כתובת XMPP ×ª×§×™× ×”"],"Chat Contacts":["×× ×©×™ קשר בהתכתבות"],"Toggle chat":["הפעלה/כיבוי של התכתבות"],"Click to restore this chat":["יש ללחוץ כדי לשחזר ×ת ההתכתבות ×”×–×ת"],"Minimized":["ממוזער"],"This field is required":["שדה ×–×” × ×—×•×¥"],"Join":["הצטרפות"],"Enter a new Groupchat":["×›× ×™×¡×” להתכתבות קבוצתית חדשה"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["×©× ×”×”×ª×›×ª×‘×•×ª קבוצתית"],"Groupchat address":["כתובת התכתבות קבוצתית"],"Invite":["×”×–×ž× ×”"],"Show groupchats":["הצגת התכתבויות קבוצתיות"],"Server address":["כתובת שרת"],"Show more information on this groupchat":["הצגת מידע × ×•×¡×£ על ההתכתבות הקבוצתית ×”×–×ת"],"Query for Groupchats":["תש×ול התכתבויות קבוצתיות"],"Description:":["תי×ור:"],"Groupchat Address (JID):":["כתובת התכתבות קבוצתית (JID):"],"Participants:":["משתתפי×:"],"Features:":["×ª×›×•× ×•×ª:"],"Requires authentication":["× ×“×¨×© ×ימות"],"Hidden":["מוסתר"],"Requires an invitation":["× ×“×¨×©×ª ×”×–×ž× ×”"],"Moderated":["מפוקח"],"Non-anonymous":["בלתי ××œ×ž×•× ×™"],"Open":["פתוח"],"Permanent":["קבוע"],"Public":["ציבורי"],"Semi-anonymous":["××œ×ž×•× ×™ למחצה"],"Temporary":["×–×ž× ×™"],"Unmoderated":["×œ×œ× ×¤×™×§×•×—"],"conference.example.org":["conference.example.org"],"No groupchats found":["×œ× × ×ž×¦×ו התכתבויות קבוצתיות"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["×ž×¤×§×—×™× ×”× ×ž×©×ª×ž×©×™× ×ž×•×¨×©×™× ×©×™×›×•×œ×™× ×œ×©× ×•×ª ×ª×¤×§×™×“×™× ×©×œ ×ž×©×ª×ž×©×™× ××—×¨×™× (למעט ×ž× ×”×œ×™× ×ו בעלי×)."],"The default role, implies that you can read and write messages.":["תפקיד בררת המחדל, מעיד על היכולת שלך ×œ×§×¨×•× ×•×œ×›×ª×•×‘ הודעות."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["×ž×‘×§×¨×™× ×œ× ×™×›×•×œ×™× ×œ×›×ª×•×‘ הודעות בחדרי התכתבות מפוקחי×."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["×©×™× ×•×™ תפקיד"],"New Role":["תפקיד חדש"],"Reason":["סיבה"],"Change affiliation":["×©×™× ×•×™ שיוך"],"New affiliation":["שיוך חדש"],"Affiliation":["השתייכות"],"Moderator Tools":["כלי פיקוח"],"No users with that affiliation found.":["×œ× × ×ž×¦×ו ×ž×©×ª×ž×©×™× ×ž×©×•×™×›×™×."],"No users with that role found.":["×œ× × ×ž×¦×ו ×ž×©×ª×ž×©×™× ×‘×ª×¤×§×™×“ ×”×–×”."],"Type here to filter the search results":[""],"Show users":["הצגת משתמשי×"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["×ª×¤×§×™×“×™× ×ž×•×§×¦×™× ×œ×ž×©×ª×ž×©×™× ×›×“×™ ×œ×”×¢× ×™×§ ×œ×”× ×™×›×•×œ×•×ª מסוימות בסביבת חדר שיחה מרובה משתתפי×. ההקצ××” ×”×™× ×™×©×™×¨×” ×ו עקיפה כחלק מהגדרת ההשתייכות. תפקיד ש××™× ×• מתוקף ההשתייכות, תקף למהלך ×ותה הפעלה בלבד."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["× ×•×©×"],"Topic author":["יוצר ×”× ×•×©×"],"Groupchat address (JID)":["כתובת התכתבות קבוצתית (JID)"],"Message archiving":["העברת הודעות ל×רכיון"],"Messages are archived on the server":["ההודעות × ×©×ž×¨×•×ª ב×רכיון שבשרת"],"Description":["תי×ור"],"Features":["×ª×›×•× ×•×ª"],"This groupchat is not publicly searchable":["התכתבות קבוצתית זו ××™× ×” גלויה לחיפוש"],"This groupchat is restricted to members only":["התכתבות קבוצתית זו מוגבלת ×œ×—×‘×¨×™× ×‘×œ×‘×“"],"Members only":["×—×‘×¨×™× ×‘×œ×‘×“"],"Participants entering this groupchat need to request permission to write":["על ×ž×©×ª×ª×¤×™× ×—×“×©×™× ×‘×”×ª×›×ª×‘×•×ª קבוצתית זו לבקש הרש××” לכתוב"],"Name":["ש×"],"This groupchat does not require a password upon entry":["התכתבות קבוצתית זו ××™× ×” דורשת ססמה כדי ×œ×”×™×›× ×¡ ×ליה"],"No password required":["×œ× × ×“×¨×©×ª ססמה"],"Not anonymous":["×œ× ××œ×ž×•× ×™"],"All other groupchat participants can see your XMPP address":["כל ש×ר ×”×ž×©×ª×ª×¤×™× ×‘×”×ª×›×ª×‘×•×ª הקבוצתית ×™×›×•×œ×™× ×œ×¨×ות ×ת כתובת ×”Ö¾XMPP שלך"],"Not moderated":["×œ×œ× ×¤×™×§×•×—"],"Participants entering this groupchat can write right away":["×ž×©×ª×ª×¤×™× ×©× ×›× ×¡×™× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית ×”×–×ת ×™×›×•×œ×™× ×œ×›×ª×•×‘ מ×ותו הרגע"],"Online users":["×ž×©×ª×ž×©×™× ×ž×§×•×•× ×™×"],"Anyone can join this groupchat":["כל ×חד יכול להצטרף להתכתבות קבוצתית זו"],"This groupchat requires a password before entry":["התכתבות קבוצתית זו דורשת ססמה כדי ×œ×”×™×›× ×¡ ×ליה"],"Password protected":["×”×’× ×” בססמה"],"Persistent":["עקבי"],"This groupchat persists even if it\'s unoccupied":["התכתבות קבוצתית זו × ×©×ž×¨×ª ×’× ×× ×ין בה משתתפי×"],"Only moderators can see your XMPP address":["רק ×ž×©×’×™×—×™× ×™×›×•×œ×™× ×œ×¨×ות ×ת כתובת ×”Ö¾XMPP שלך"],"This groupchat will disappear once the last person leaves":["התכתבות קבוצתית זו ×ª×™×¢×œ× ×¢× ×™×¦×™×ת החבר ×”×חרון"],"This groupchat is publicly searchable":["התכתבות קבוצתית זו גלויה בחיפושי×"],"Groupchat info for %1$s":["פרטי התכתבות קבוצתית עבור %1$s"],"You\'re not allowed to send messages in this room":["×ין לך הרש××” לשלוח הודעות בחדר ×–×”"],"The conversation has moved. Click below to enter.":["הדיון הועבר. יש ללחוץ להלן כדי ×œ×”×™×›× ×¡."],"This groupchat no longer exists":["התכתבות קבוצתית זו ××™× ×” קיימת עוד"],"Enter groupchat":["×›× ×™×¡×” להתכתבות קבוצתית"],"Please choose your nickname":["× × ×œ×‘×—×•×¨ ×ת ×”×›×™× ×•×™ שלך"],"This groupchat requires a password":["התכתבות קבוצתית זו דורשת ססמה"],"Password: ":["ססמה: "],"Submit":["שליחה"],"This user is a moderator.":["הרש×ות המשתמש הן פיקוח."],"This user can send messages in this groupchat.":["למשתמש ×–×” יש הרש××” לשלוח הודעה בהתכתבות קבוצתית זו."],"This user can NOT send messages in this groupchat.":["למשתמש ×–×” ×ין ×פשרות לשלוח הודעות להתכתבות קבוצתית זו."],"Owner":["בעלי×"],"Admin":["×ž× ×”×œ"],"Member":["חבר"],"Moderator":["מפקח"],"Visitor":["מבקר"],"Click to mention %1$s in your message.":["יש ללחוץ כדי ל×זכר ×ת %1$s בהודעה שלך."],"Participants":["משתתפי×"],"%1$s has entered the groupchat":["%1$s × ×›× ×¡/×” להתכתבות הקבוצתית הזו"],"%1$s has left the groupchat":["%1$s עזב/×” ×ת ההתכתבות הקבוצתית הזו"],"%1$s is now a moderator":["×”×•×¢× ×§×• הרש×ות פיקוח לטובת %1$s"],"%1$s is no longer a moderator":["הרש×ות הפיקוח של %1$s הוסרו"],"%1$s has been muted":["הקול של %1$s הושתק"],"%1$s and %2$s":["%1$s ×•×’× %2$s"],"Change user\'s affiliation to admin":["×©× ×” ×¡×™× ×•×£ משתמש ×œ×ž× ×”×œ"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["החלפת תפקיד המשתמש למשתתף"],"Remove this groupchat":["הסרת ההתכתבות הקבוצתית ×”×–×ת"],"Kick user from groupchat":["לזרוק ×ת המשתמש מההתכתבות הקבוצתית"],"Write in 3rd person":["כתוב בגוף שלישי"],"Grant membership to a user":["×”×¢× ×§ חברות למשתמש"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["הסר יכולת משתמש ×œ×¤×¨×¡× ×”×•×“×¢×•×ª"],"Change your nickname":["×©× ×” ×ת ×”×©× ×›×™× ×•×™ שלך"],"Grant moderator role to user":["×”×¢× ×§ תפקיד ×חר××™ למשתמש"],"Grant ownership of this groupchat":["×”×¢× ×§×ª בעלות על התכתבות קבוצתית זו"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["הגדרת × ×•×©× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית"],"Set groupchat subject (alias for /subject)":["הגדרת × ×•×©× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית (×©× ×—×œ×•×¤×™ ל־‎/subject)"],"Allow muted user to post messages":["התר למשתמש מושתק ×œ×¤×¨×¡× ×”×•×“×¢×•×ª"],"Sorry, you\'re not allowed to retract this message":["×ין לך הרש×ות למשוך ×ת ההודעה ×”×–×ת, עמך הסליחה"],"Configure":[""],"Configure this groupchat":["הגדרות התכתבות קבוצתית זו"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["הסתרת רשימת המשתתפי×"],"Forbidden: you do not have the necessary role in order to do that.":["×סור: ×ין לך ×ת התפקיד המת××™× ×›×“×™ לבצע ×ת הפעולה ×”×–×ת."],"Forbidden: you do not have the necessary affiliation in order to do that.":["×סור: ×ין לך ×ת ההשתייכות ×”× ×“×¨×©×ª כדי לבצע ×ת הפעולה ×”×–×ת."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["שגי××”: הפקודה „%1$s†מקבלת ×©× ×™ ××¨×’×•×ž× ×˜×™×, ×›×™× ×•×™ המשתמש וסיבה כרשות."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["שגי××”: מספר ×”××¨×’×•×ž× ×˜×™× ×©×’×•×™"],"This action was done by %1$s.":["פעולה זו × ×¢×¨×›×” על ידי %1$s."],"The reason given is: \\"%1$s\\".":["הסיבה שסופקה ×”×™×: „%1$sâ€."],"Groupchats":["התכתבויות קבוצתיות"],"Add a new groupchat":["הוספת התכתבות קבוצתית חדשה"],"Query for groupchats":["תש×ול התכתבויות קבוצתיות"],"Announcements":[""],"Notification from %1$s":["התר××” מ×ת %1$s"],"%1$s says":["× ×מר על ידי %1$s"],"has gone offline":["כבר ×œ× ×ž×§×•×•×Ÿ"],"has gone away":["× ×¢×“×¨(ת)"],"is busy":["עסוק(×”) כעת"],"has come online":["התחבר/×”"],"wants to be your contact":["רוצה להצטרף ל×× ×©×™ הקשר שלך"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["על ×ודות"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["לקוח התכתבות דרך XMPP ב%1$sקוד פתוח%2$s שמוגש ×ž×˜×¢× %3$sOpokde%2$s"],"%1$s Translate %2$s it into your own language":["%1$sלתרג×%2$s ×–×ת לשפה שלך"],"Log out":["×”×ª× ×ª×§×•×ª"],"Click to change your chat status":["לחץ כדי ×œ×©× ×•×ª ×ת הודעת השיחה שלך"],"Show details about this chat client":["הצגת ×¤×¨×˜×™× ×¢×œ לקוח התכתבות ×–×”"],"Your avatar image":["×”×ª×ž×•× ×” המייצגת שלך"],"Checkbox for selecting the following fingerprint":["תיבת סימון לבחירת טביעת ×”×צבע הב××”"],"Device without a fingerprint":["מכשיר ×œ×œ× ×˜×‘×™×¢×•×ª ×צבע"],"Other OMEMO-enabled devices":["×ž×›×©×™×¨×™× ××—×¨×™× ×ª×•×ž×›×™ OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["תיבת סימון לבחירת טביעות ×צבע של כל מכשירי ×”Ö¾OMEMO ×”×חרי×"],"Remove checked devices and close":["להסיר ×ת ×”×ž×›×©×™×¨×™× ×”×ž×¡×•×ž× ×™× ×•×œ×¡×’×•×¨"],"Select all":["לבחור הכול"],"This device\'s OMEMO fingerprint":["טביעת ×צבע ×”Ö¾OMEMO של המכשיר"],"Generate new keys and fingerprint":["יצירת מפתחות וטביעות ×צבע חדשי×"],"Your Profile":["הפרופיל שלך"],"XMPP Address (JID)":["כתובת XMPP†(JID)"],"Save and close":["לשמור ולסגור"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["× ×™×ª×Ÿ להשתמש ×‘×¤×¡×™×§×™× ×›×“×™ להפריד בין מספר תפקידי×. ×”×ª×¤×§×™×“×™× ×ž×•×¤×™×¢×™× ×œ×™×“ ×”×©× ×‘×”×•×“×¢×•×ª שלך כחלק מההתכתבות."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ לשמור ×ת × ×ª×•× ×™ הפרופיל שלך, עמך הסליחה."],"You can check your browser\'s developer console for any error output.":["מוטב לחפש שגי×ות במסוף הפיתוח של הדפדפן שלך."],"Away":["× ×¢×“×¨"],"Busy":["עסוק"],"Custom status":["מצב מות××"],"Offline":["×œ× ×ž×§×•×•×Ÿ"],"Online":["מקוון"],"Away for long":["היעדרות לזמן מה"],"Change chat status":["החלפת מצב התכתבות"],"Personal status message":["הודעת מצב ×ישית"],"I am %1$s":["מצבי כעת ×”×™× ×• %1$s"],"Are you sure you want to log out?":["לצ×ת?"],"online":["מקוון"],"busy":["עסוק"],"away for long":["× ×¢×“×¨ לזמן מה"],"away":["× ×¢×“×¨"],"offline":["×œ× ×ž×§×•×•×Ÿ"],"Sorry, could not decrypt a received OMEMO message due to an error.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— הודעת OMEMO שהתקבלה עקב שגי××”, עמך הסליחה."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["×›× ×¨××” שהלקוח שמותקן ×צל %1$s ××™× ×• תומך ב־â€OMEMO. ×ין עוד תמיכה בהתכתבות ×ž×•×¦×¤× ×ª בהתכתבות הקבוצתית ×”×–×ת."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["×œ× × ×™×ª×Ÿ להשתמש ×‘×”×¦×¤× ×” מקצה לקצה כיוון שהלקוח של %1$s ××™× ×• תומך ב־OMEMO."],"Messages are being sent in plaintext":["ההודעות × ×©×œ×—×•×ª כטקסט פשוט"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ להסרת ×”×”×ª×§× ×™×, עמך הסליחה."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["לייצר מפתחות OMEMO חדשי×? פעולה זו תסיר ×ת המפתחות ×”×™×©× ×™× ×©×œ×š ו×ת כל ההודעות ×©×”×•×¦×¤× ×• בעבר ×œ× ×ª×”×™×” לך ×פשרות ×œ×¤×¢× ×— במכשיר ×”×–×”."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["×œ× ×”×¦×œ×—× ×• לשלוח הודעה ×ž×•×¦×¤× ×ª כיוון שקיימת דרישת מצד %1$s ×œ×”×™×¨×©× ×œ×ž×¦×‘ ×”× ×•×›×—×•×ª ×©×œ×”× ×›×“×™ לצפות בפרטי OMEMO, עמך הסליחה"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["×œ× ×”×¦×œ×—× ×• לשלוח הודעה ×ž×•×¦×¤× ×ª כיוון ×©×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת השרת המרוחק %1$s"],"Unable to send an encrypted message due to an unexpected error.":["×œ× × ×™×ª×Ÿ לשלוח הודעה ×ž×•×¦×¤× ×ª עקב שגי××” בלתי צפויה."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["זו הודעה ×©×ž×•×¦×¤× ×ª ב־OMEMO שכפי ×”× ×¨××” הלקוח שלך ××™× ×• תומך בה. × ×™×ª×Ÿ ×œ×ž×¦×•× ×¤×¨×˜×™× × ×•×¡×¤×™× ×‘×›×ª×•×‘×ª https://conversations.im/omemo"]," e.g. conversejs.org":[" למשל conversejs.org"],"Fetch registration form":["משוך טופס הרשמה"],"Tip: A list of public XMPP providers is available":["טיפ: רשימה פומבית של ספקי XMPP ×”×™× ×” ×–×ž×™× ×”"],"here":["×›×ן"],"Sorry, we\'re unable to connect to your chosen provider.":["×œ× ×”×¦×œ×—× ×• להתחבר לספק שבחרת, עמך הסליחה."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["מצטערי×, הספק ×©× ×™×ª×Ÿ ×œ× ×ª×•×ž×š ×‘×¨×™×©×•× ×—×©×‘×•× ×•×ª in band. ×× × × ×¡×” ×¢× ×¡×¤×§ ×חר."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["משהו השתבש במהלך ההתחברות ×¢× â€ž%1$sâ€. החיבור ×”×–×” ×§×™×™× ×‘×›×œ×œ?"],"Now logging you in":["כעת מחבר ×ותך ×¤× ×™×ž×”"],"Registered successfully":["× ×¨×©× ×‘×”×¦×œ×—×”"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["הספק דחה ×ת × ×™×¡×™×•×Ÿ ×”×¨×™×©×•× ×©×œ×š. × × ×œ×•×•×“× ×ת ×”× ×ª×•× ×™× ×©×”×§×œ×“×ª."],"Leave this groupchat":["יצי××” מההתכתבות הקבוצתית ×”×–×ת"],"Click to toggle the list of open groupchats":["יש ללחוץ כדי להציג/להסתיר ×ת רשימת קבוצות ההתכתבות הפתוחות"],"Open Groupchats":["התכתבויות קבוצתיות פתוחות"],"Are you sure you want to leave the groupchat %1$s?":["לעזוב ×ת ההתכתבות הקבוצתית %1$s?"],"Add":["הוסף"],"Add a Contact":["הוספת ×יש קשר"],"This contact is busy":["×יש קשר ×–×” עסוק"],"This contact is online":["×יש קשר ×–×” מקוון"],"This contact is offline":["×יש קשר ×–×” ××™× ×• מקוון"],"This contact is unavailable":["×יש קשר ×–×” ×œ× ×–×ž×™×Ÿ"],"This contact is away for an extended period":["×יש קשר ×–×” × ×¢×“×¨ למשך זמן ממושך"],"This contact is away":["×יש קשר ×–×” ×”×™× ×• × ×¢×“×¨"],"Contact name":["×©× ×יש קשר"],"Optional nickname":["×›×™× ×•×™ כרשות"],"Sorry, could not find a contact with that name":["×ין ×פשרות ×œ×ž×¦×•× ×יש קשר ×‘×©× ×–×”, עמך הסליחה"],"This contact has already been added":["×יש קשר ×–×” כבר × ×•×¡×£"],"Filter":["×ž×¡× ×Ÿ"],"Filter by contact name":["×¡×™× ×•×Ÿ לפי ×©× ×יש קשר"],"Filter by group name":["×¡×™× ×•×Ÿ לפי ×©× ×§×‘×•×¦×”"],"Filter by status":["×¡×™× ×•×Ÿ לפי מצב"],"Any":["כלשהו"],"Unread":["×œ× × ×§×¨×ו"],"Chatty":["×§×©×§×©× ×•×ª"],"Extended Away":["היעדרות ממושכת"],"Click to remove %1$s as a contact":["יש ללחוץ כדי להסיר ×ת ×יש הקשר %1$s"],"Click to accept the contact request from %1$s":["יש ללחוץ כדי לקבל בקשת ×יש קשר ×©× ×©×œ×—×” על ידי %1$s"],"Click to decline the contact request from %1$s":["יש ללחוץ כדי לסרב לבקשת הקשר שהגיעה מצד %1$s"],"Are you sure you want to decline this contact request?":["×”×× ×תה בטוח ×›×™ ×‘×¨×¦×•× ×š לסרב ×ת בקשת ×יש קשר ×–×”?"],"Contacts":["×× ×©×™ קשר"],"Add a contact":["הוסף ×יש קשר"],"Re-sync your contacts":["×¡× ×›×¨×•×Ÿ ×× ×©×™ הקשר שלך מחדש"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[154],{520:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=(n != 1);","lang":"he"},"Create your account":["יצירת חשבון משלך"],"Please enter the XMPP provider to register with:":["× × ×œ×”×§×œ×™×“ ×ת ספק ×”Ö¾XMPP להרשמה מולו:"],"Already have a chat account?":["כבר יש לך חשבון להתכתבות?"],"Log in here":["×›× ×™×¡×” מכ×ן"],"Account Registration:":["×¨×™×©×•× ×—×©×‘×•×Ÿ:"],"Register":["הירש×"],"Choose a different provider":["× × ×œ×‘×—×•×¨ בספק ×חר"],"Hold tight, we\'re fetching the registration form…":["להחזיק חזק, ×× ×—× ×• מבי××™× ×ת טופס ההרשמה…"],"Cancel":["ביטול"],"The connection has dropped, attempting to reconnect.":["החיבור × ×§×˜×¢, מתבצע × ×™×¡×™×•×Ÿ חיבור מחדש."],"An error occurred while connecting to the chat server.":["×ירעה שגי××” במהלך ההתחברות לשרת הצ׳×ט."],"Your XMPP address and/or password is incorrect. Please try again.":["כתובת ×”Ö¾XMPP ו/×ו הססמה שגויי×. × × ×œ× ×¡×•×ª שוב."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["×œ× ×”×¦×œ×—× ×• להתחבר למ×רח ×”Ö¾XMPP ×¢× ×©× ×”×ž×ª×—×: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["שרת ×”Ö¾XMPP ×œ× ×”×¦×™×¢ ×ž× ×’× ×•×Ÿ ×ימות × ×ª×ž×š"],"Undecryptable OMEMO message":["הודעת OMEMO ×©×œ× × ×™×ª×Ÿ להצפין"],"Sorry, could not determine upload URL.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— ×ת כתובת ההעל××”, עמך הסליחה."],"Sorry, could not determine file upload URL.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— ×ת כתובת העל×ת הקבצי×, עמך הסליחה."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["העל×ת הקובץ שלך ×œ× ×”×¦×œ×™×—×”. תגובת השרת ×”×™×: „%1$sâ€, עמך הסליחה"],"Sorry, could not succesfully upload your file.":["העל×ת הקובץ שלך ×œ× ×”×¦×œ×™×—×”, עמך הסליחה."],"You\'re not allowed to retract your message.":["×ין לך הרש××” למשוך ×ת ההודעה שלך."],"Sorry, an error occurred while trying to retract your message.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ למשוך ×ת ההודעה שלך, עמך סליחה."],"You\'re not allowed to send a message.":["×סור לך לשלוח הודעות."],"Sorry, an error occurred while trying to send your message.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ לשליחת ההודעה שלך, עמך הסליחה."],"Sorry, looks like file upload is not supported by your server.":["× ×¨××” ×›×™ השרת שלך ××™× ×• תומך בהעל×ת קבצי×, עמך הסליחה."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["גודל הקובץ שלך, %1$s, חורג מהגודל המרבי שמרשה השרת ×©×”×•× %2$s."],"Smileys and emotions":["×—×™×™×›× ×™× ×•×¨×’×©×•× ×™×"],"People":["×× ×©×™×"],"Activities":["פעילויות"],"Travel":["טיול"],"Objects":["חפצי×"],"Animals and nature":["חיות וטבע"],"Food and drink":["מזון ושתייה"],"Symbols":["סמלי×"],"Flags":["דגלי×"],"Stickers":["מדבקות"],"This groupchat is not anonymous":["התכתבות קבוצתית זו ×–×” ××™× ×” ××œ×ž×•× ×™×ª"],"This groupchat now shows unavailable members":["התכתבות קבוצתית זו מציגה כעת ×—×‘×¨×™× ×©××™× × ×–×ž×™× ×™×"],"This groupchat does not show unavailable members":["התכתבות קבוצתית זו ××™× ×” מציגה ×—×‘×¨×™× ×©××™× × ×–×ž×™× ×™×"],"The groupchat configuration has changed":["הגדרות ההתכתבות הקבוצתית ×”×–×ת × ×¢×¨×›×•"],"Groupchat logging is now enabled":["תיעוד ההתכתבות הקבוצתית פעיל כעת"],"Groupchat logging is now disabled":["תיעוד ההתכתבות הקבוצתית מושבת כעת"],"This groupchat is now no longer anonymous":["ההתכתבות הקבוצתית ×”×–×ת ××™× ×” ××œ×ž×•× ×™×ª יותר"],"This groupchat is now semi-anonymous":["ההתכתבות הקבוצתית ×”×–×ת ×”×™× ××œ×ž×•× ×™×ª למחצה כעת"],"This groupchat is now fully-anonymous":["התכתבות קבוצתית זו ×”× ×” ××œ×ž×•× ×™×ª לחלוטין כעת"],"A new groupchat has been created":["× ×•×¦×¨×” התכתבות קבוצתית חדשה"],"Your nickname has been automatically set to %1$s":["×”×›×™× ×•×™ שלך הוגדר לכדי %1$s ×וטומטית"],"Your nickname has been changed to %1$s":["×”×›×™× ×•×™ שלך × ×¢×¨×š לכדי %1$s"],"You have been banned from this groupchat":["גישתך להתכתבות הקבוצתית הזו × ×—×¡×ž×”"],"You have exited this groupchat due to a technical problem":["יצ×ת מההתכתבות הקבוצתית ×”×–×ת עקב תקלה ×˜×›× ×™×ª"],"You have been kicked from this groupchat":["× ×–×¨×§×ª מההתכתבות הקבוצתית ×”×–×ת"],"You have been removed from this groupchat because of an affiliation change":["הוסרת מההתכתבות הקבוצתית הזו עקב ×©×™× ×•×™ שיוך"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["הוסרת מההתכתבות הקבוצתית ×”×–×ת כיוון שההשתתפות מעתה מיועדת ×œ×—×‘×¨×™× ×‘×œ×‘×“ ולך ×ין חברות"],"You have been removed from this groupchat because the service hosting it is being shut down":["הוסרת מההתכתבות הקבוצתית ×”×–×ת כיוון ש×חסון השירות בהליכי כיבוי"],"Your message was not delivered because you weren\'t allowed to send it.":["ההודעה שלך ×œ× × ×©×œ×—×” כיוון ש×ין לך הרש××” לשלוח ×ותה."],"Your message was not delivered because you\'re not present in the groupchat.":["ההודעה שלך ×œ× × ×©×œ×—×” כיוון ש××™× ×š בהתכתבות קבוצתית זו."],"You\'re not allowed to register yourself in this groupchat.":["×ין לך הרש××” ×œ×”×™×¨×©× ×¢×¦×ž×ית להתכתבות קבוצתית זו."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["×ין לך הרש××” ×œ×”×™×¨×©× ×œ×”×ª×›×ª×‘×•×ª קבוצתית זו ×›×™ ×”×™× ×ž×™×•×¢×“×ª ×œ×—×‘×¨×™× ×‘×œ×‘×“."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["×œ× × ×™×ª×Ÿ ×œ×¨×©×•× ×ת ×”×›×™× ×•×™ לך בהתכתבות הקבוצתית ×”×–×ת, ×ין לה תמיכה בהרשמה."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["×ין ×פשרות ×œ×¨×©×•× ×ת ×”×›×™× ×•×™ שלך בהתכתבות הקבוצתית הזו, תצורת ×”× ×ª×•× ×™× ×©×¡×•×¤×§×” שגויה."],"Topic set by %1$s":["× ×•×©× ×”×ª×›×ª×‘×•×ª קבוצתית זו הוגדר על ידי %1$s"],"Topic cleared by %1$s":["× ×•×©× ×”×ª×›×ª×‘×•×ª קבוצתית זו × ×ž×—×§ על ידי %1$s"],"%1$s has been banned by %2$s":["הגישה של %1$s × ×—×¡×ž×” על ידי %2$s"],"%1$s has been banned":["הגישה של %1$s × ×—×¡×ž×”"],"%1$s\'s nickname has changed":["×”×›×™× ×•×™ של %1$s הוחלף"],"%1$s has been kicked out by %2$s":["%1$s × ×‘×¢×˜/×” על ידי %2$s"],"%1$s has been kicked out":["%1$s × ×‘×¢×˜/×”"],"%1$s has been removed because of an affiliation change":["%1$s הוסר/×” עקב ×©×™× ×•×™ שיוך"],"%1$s has been removed for not being a member":["%1$s הוסר/×” עקב העדר מעמד חברות"],"%1$s is no longer an admin of this groupchat":["התפקיד ×”× ×™×”×•×œ×™ של %1$s הוסר עבור ההתכתבות הקבוצתית הזו"],"%1$s is no longer an owner of this groupchat":["הבעלות של %1$s על ההתכתבות הקבוצתית הזו ××™× ×” תקפה עוד"],"%1$s is no longer banned from this groupchat":["הגישה של %1$s להתכתבות הקבוצתית הזו ××™× ×” חסומה יותר"],"%1$s is now an %2$s of this groupchat":["התפקיד של %1$s בהתכתבות הקבוצתית הזו ×”×•× ×¢×›×©×™×• %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["×”×›×™× ×•×™ שבחרת שמור ×ו בשימוש, × × ×œ×‘×—×•×¨ ב×חד ×חר."],"Password incorrect":["הססמה שגויה"],"You are not on the member list of this groupchat.":["××™× ×š ברשימת ×”×—×‘×¨×™× ×©×œ התכתבות קבוצתית זו."],"You have been banned from this groupchat.":["גישתך להתכתבות קבוצתית זו × ×—×¡×ž×”."],"You are not allowed to create new groupchats.":["×ין לך הרש××” ליצור התכתבויות קבוצתיות חדשות."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["×”×›×™× ×•×™ שלך ××™× ×• תו×× ×œ×ž×“×™× ×™×•×ª של ההתכתבות הקבוצתית הזו."],"This groupchat does not (yet) exist.":["התכתבות קבוצתית זו (עדיין) ××™× ×” קיימת."],"This groupchat has reached its maximum number of participants.":["התכתבות קבוצתית זו ×”×’×™×¢×” לרף ×”× ×•×›×—×™× ×”×¢×œ×™×•×Ÿ שלה."],"Remote server not found":["השרת המרוחק ×œ× × ×ž×¦×"],"The explanation given is: \\"%1$s\\".":["ההסבר שסופק הו×: „%1$sâ€."],"%1$s has invited you to join a groupchat: %2$s":["קיבלת ×”×–×ž× ×” מ×ת %1$s להצטרף להתכתבות קבוצתית: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["קיבלת ×”×–×ž× ×” מ×ת %1$s להצטרף להתכתבות קבוצתית: %2$s, הסיבה ×©× ×™×ª× ×” ×œ×”×–×ž× ×” הזו ×”×™×: „%3$sâ€"],"Error":["שגי××”"],"Sorry, something went wrong while trying to save your bookmark.":["משהו השתבש במהלך × ×™×¡×™×•×Ÿ שמירת ×”×¡×™×ž× ×™×™×” שלך, עמך הסליחה."],"Timeout Error":["שגי×ת ×ª×•× ×–×ž×Ÿ קצוב"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["×× ×©×™ הקשר שלי"],"Pending contacts":["×× ×©×™ קשר ×ž×ž×ª×™× ×™×"],"Contact requests":["בקשות ×יש קשר"],"Ungrouped":["×œ×œ× ×§×‘×•×¦×”"],"Sorry, there was an error while trying to add %1$s as a contact.":["הוספת %1$s ל×× ×©×™ הקשר × ×›×©×œ×”, עמך הסליחה."],"This client does not allow presence subscriptions":["לקוח ×–×” ×œ× ×ž×ª×™×¨ הרשמות × ×•×›×—×•×ª"],"Click to hide these contacts":["לחץ כדי להסתיר ×ת ×× ×©×™ קשר ×לה"],"Unbookmark this groupchat":["הסרת התכתבות קבוצתית זו ×ž×”×¡×™×ž× ×™×•×ª"],"Click to open this groupchat":["יש ללחוץ כדי לפתוח ×ת ההתכתבות הקבוצתית ×”×–×ת"],"Click to toggle the bookmarks list":["יש ללחוץ כדי להסתיר/להציג רשימת ×¡×™×ž× ×™×•×ª"],"Bookmarks":["×¡×™×ž× ×™×•×ª"],"Bookmark this groupchat":["הוספת התכתבות קבוצתית זו ×œ×¡×™×ž× ×™×•×ª"],"Would you like this groupchat to be automatically joined upon startup?":["להצטרף להתכתבות הקבוצתית ×”×–×ת ×¢× ×”×”×¤×¢×œ×”?"],"The name for this bookmark:":["×©× ×”×¡×™×ž× ×™×™×” ×”×–×ת:"],"What should your nickname for this groupchat be?":["מה ×מור להיות ×”×›×™× ×•×™ שלך בהתכתבות הקבוצתית ×”×–×ת?"],"Save":["שמירה"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["להסיר ×ת ×”×¡×™×ž× ×™×™×” „%1$sâ€?"],"Close":["סגירה"],"OK":["×ישור"],"Image: ":[""],"Download audio file \\"%1$s\\"":["הורדת קובץ השמע „%1$sâ€"],"Download file \\"%1$s\\"":["הורדת הקובץ „%1$sâ€"],"Edit":[""],"Retract":[""],"Message versions":["גרס×ות ההודעה"],"Retry":[""],"Uploading file:":["קובץ × ×©×œ×—:"],"This message has been edited":["ההודעה × ×¢×¨×›×”"],"Show more":["להציג עוד"],"No message history available.":["×ין היסטוריית הודעות ×–×ž×™× ×”."],"Search results":["תוצ×ות חיפוש"],"Search":["חיפוש"],"Insert emojis":["הוספת ×מוג׳י×"],"Send the message":["שליחת ההודעה"],"Start a call":["התחל שיחה"],"Message characters remaining":["×ª×•×•×™× ×©× ×•×ª×¨×• להודעה"],"Choose a file to send":["× × ×œ×‘×—×•×¨ קובץ לשליחה"],"Click to write as a normal (non-spoiler) message":["יש ללחוץ ×›×ן כדי לכתוב הודעת מצב רגילה (×œ× ×ž×•×ª×מת)"],"Click to write your message as a spoiler":["יש ללחוץ ×›×ן כדי לכתוב הודעת מצב מות×מת"],"The User\'s Profile Image":["×ª×ž×•× ×ª הפרופיל של המשתמש"],"Trusted":["מהימן"],"Untrusted":["בלתי מהימן"],"OMEMO Fingerprints":["טביעות ×צבע OMEMO"],"Remove as contact":["הסרה ×›×יש קשר"],"XMPP Address":["כתובת XMPP"],"Email":["דו×״ל"],"Full Name":["×©× ×ž×œ×"],"Nickname":["×©× ×›×™× ×•×™"],"Refresh":["×¨×¢× ×•×Ÿ"],"Role":["תפקיד"],"URL":["כתובת"],"%1$s is typing":["הקלדה מצד %1$s"],"%1$s has stopped typing":["ההקלדה של %1$s הפסיקה"],"%1$s has gone away":["הפעילות של %1$s מושהית"],"Remove messages":["הסרת הודעות"],"Write in the third person":["כתיבה בגוף השלישי"],"Show this menu":["הצגת תפריט ×–×”"],"Hidden message":["הודעה מוסתרת"],"Message":["הודעה"],"Optional hint":["רמז כרשות"],"You have unread messages":["יש לך הודעות ×©×œ× × ×§×¨×ו"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["יש לך הודעה ×©×œ× × ×©×œ×—×” שת×בד ×× ×œ× ×ª×™×©×ž×¨. להמשיך?"],"Are you sure you want to clear the messages from this conversation?":["×œ×¤× ×•×ª ×ת ההודעות מהדיון ×”×–×”?"],"%1$s has gone offline":["החיבור של %1$s × ×•×ª×§"],"%1$s is busy":["×ין ×–×ž×™× ×•×ª מצד %1$s"],"%1$s is online":["התחברות מצד %1$s"],"Sorry, something went wrong while trying to refresh":["×ירעה שגי××” במהלך × ×™×¡×™×•×Ÿ ×”×¨×¢× ×•×Ÿ, עמך הסליחה"],"Are you sure you want to remove this contact?":["להסיר ×יש קשר ×–×”?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["×ירעה שגי××” במהלך × ×™×¡×™×•×Ÿ הסרת %1$s ×›×יש קשר."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["כדי לשפר ×ת הביצועי×, ×× ×• ×©×•×ž×¨×™× ×ת ×”× ×ª×•× ×™× ×©×œ×š במטמון בדפדפן. יש לבטל סימון תיבה זו ×× ×ž×“×•×‘×¨ במחשב ציבורי ×ו ×©×‘×¨×¦×•× ×š ×©×”× ×ª×•× ×™× ×©×œ×š יימחקו ×¢× ×”×™×¦×™××” מהחשבון. חשבון מ×וד לצ×ת בצורה מפורשת ×חרת יתכן ×©×œ× ×›×œ ×”× ×ª×•× ×™× ×©× ×©×ž×¨×• יימחקו. לתשומת לבך, בעת שימוש במכשיר בלתי מהימן, ×ין תמיכה ×‘×”×¦×¤× ×ª OMEMO."],"This is a trusted device":["×–×” מכשיר מהימן"],"Password":["ססמה"],"Create an account":["יצירת חשבון"],"Don\'t have a chat account?":["×ין לך חשבון התכתבות?"],"Log in":["×›× ×™×¡×”"],"Disconnected":["×ž× ×•×ª×§"],"Click here to log in anonymously":["יש ללחוץ ×›×ן כדי ×œ×”×™×›× ×¡ ב×ופן ××œ×ž×•× ×™"],"Username":["×©× ×ž×©×ª×ž×©"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["× × ×œ×”×§×œ×™×“ כתובת XMPP ×ª×§×™× ×”"],"Chat Contacts":["×× ×©×™ קשר בהתכתבות"],"Toggle chat":["הפעלה/כיבוי של התכתבות"],"Click to restore this chat":["יש ללחוץ כדי לשחזר ×ת ההתכתבות ×”×–×ת"],"Minimized":["ממוזער"],"This user is a moderator.":["הרש×ות המשתמש הן פיקוח."],"This user can send messages in this groupchat.":["למשתמש ×–×” יש הרש××” לשלוח הודעה בהתכתבות קבוצתית זו."],"This user can NOT send messages in this groupchat.":["למשתמש ×–×” ×ין ×פשרות לשלוח הודעות להתכתבות קבוצתית זו."],"Owner":["בעלי×"],"Admin":["×ž× ×”×œ"],"Member":["חבר"],"Moderator":["מפקח"],"Visitor":["מבקר"],"Click to mention %1$s in your message.":["יש ללחוץ כדי ל×זכר ×ת %1$s בהודעה שלך."],"Participants":["משתתפי×"],"This field is required":["שדה ×–×” × ×—×•×¥"],"Join":["הצטרפות"],"Enter a new Groupchat":["×›× ×™×¡×” להתכתבות קבוצתית חדשה"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["×©× ×”×”×ª×›×ª×‘×•×ª קבוצתית"],"Groupchat address":["כתובת התכתבות קבוצתית"],"Invite":["×”×–×ž× ×”"],"Show groupchats":["הצגת התכתבויות קבוצתיות"],"Server address":["כתובת שרת"],"Show more information on this groupchat":["הצגת מידע × ×•×¡×£ על ההתכתבות הקבוצתית ×”×–×ת"],"Query for Groupchats":["תש×ול התכתבויות קבוצתיות"],"Description:":["תי×ור:"],"Groupchat Address (JID):":["כתובת התכתבות קבוצתית (JID):"],"Participants:":["משתתפי×:"],"Features:":["×ª×›×•× ×•×ª:"],"Requires authentication":["× ×“×¨×© ×ימות"],"Hidden":["מוסתר"],"Requires an invitation":["× ×“×¨×©×ª ×”×–×ž× ×”"],"Moderated":["מפוקח"],"Non-anonymous":["בלתי ××œ×ž×•× ×™"],"Open":["פתוח"],"Permanent":["קבוע"],"Public":["ציבורי"],"Semi-anonymous":["××œ×ž×•× ×™ למחצה"],"Temporary":["×–×ž× ×™"],"Unmoderated":["×œ×œ× ×¤×™×§×•×—"],"conference.example.org":["conference.example.org"],"Groupchats found":["התכתבויות קבוצתיות ×©× ×ž×¦×ו"],"No groupchats found":["×œ× × ×ž×¦×ו התכתבויות קבוצתיות"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["×ž×¤×§×—×™× ×”× ×ž×©×ª×ž×©×™× ×ž×•×¨×©×™× ×©×™×›×•×œ×™× ×œ×©× ×•×ª ×ª×¤×§×™×“×™× ×©×œ ×ž×©×ª×ž×©×™× ××—×¨×™× (למעט ×ž× ×”×œ×™× ×ו בעלי×)."],"The default role, implies that you can read and write messages.":["תפקיד בררת המחדל, מעיד על היכולת שלך ×œ×§×¨×•× ×•×œ×›×ª×•×‘ הודעות."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["×ž×‘×§×¨×™× ×œ× ×™×›×•×œ×™× ×œ×›×ª×•×‘ הודעות בחדרי התכתבות מפוקחי×."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["×©×™× ×•×™ תפקיד"],"New Role":["תפקיד חדש"],"Reason":["סיבה"],"Change affiliation":["×©×™× ×•×™ שיוך"],"New affiliation":["שיוך חדש"],"Affiliation":["השתייכות"],"Moderator Tools":["כלי פיקוח"],"No users with that affiliation found.":["×œ× × ×ž×¦×ו ×ž×©×ª×ž×©×™× ×ž×©×•×™×›×™×."],"No users with that role found.":["×œ× × ×ž×¦×ו ×ž×©×ª×ž×©×™× ×‘×ª×¤×§×™×“ ×”×–×”."],"Type here to filter the search results":[""],"Show users":["הצגת משתמשי×"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["×ª×¤×§×™×“×™× ×ž×•×§×¦×™× ×œ×ž×©×ª×ž×©×™× ×›×“×™ ×œ×”×¢× ×™×§ ×œ×”× ×™×›×•×œ×•×ª מסוימות בסביבת חדר שיחה מרובה משתתפי×. ההקצ××” ×”×™× ×™×©×™×¨×” ×ו עקיפה כחלק מהגדרת ההשתייכות. תפקיד ש××™× ×• מתוקף ההשתייכות, תקף למהלך ×ותה הפעלה בלבד."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["× ×•×©×"],"Topic author":["יוצר ×”× ×•×©×"],"Groupchat address (JID)":["כתובת התכתבות קבוצתית (JID)"],"Message archiving":["העברת הודעות ל×רכיון"],"Messages are archived on the server":["ההודעות × ×©×ž×¨×•×ª ב×רכיון שבשרת"],"Description":["תי×ור"],"Features":["×ª×›×•× ×•×ª"],"This groupchat is not publicly searchable":["התכתבות קבוצתית זו ××™× ×” גלויה לחיפוש"],"This groupchat is restricted to members only":["התכתבות קבוצתית זו מוגבלת ×œ×—×‘×¨×™× ×‘×œ×‘×“"],"Members only":["×—×‘×¨×™× ×‘×œ×‘×“"],"Participants entering this groupchat need to request permission to write":["על ×ž×©×ª×ª×¤×™× ×—×“×©×™× ×‘×”×ª×›×ª×‘×•×ª קבוצתית זו לבקש הרש××” לכתוב"],"Name":["ש×"],"This groupchat does not require a password upon entry":["התכתבות קבוצתית זו ××™× ×” דורשת ססמה כדי ×œ×”×™×›× ×¡ ×ליה"],"No password required":["×œ× × ×“×¨×©×ª ססמה"],"Not anonymous":["×œ× ××œ×ž×•× ×™"],"All other groupchat participants can see your XMPP address":["כל ש×ר ×”×ž×©×ª×ª×¤×™× ×‘×”×ª×›×ª×‘×•×ª הקבוצתית ×™×›×•×œ×™× ×œ×¨×ות ×ת כתובת ×”Ö¾XMPP שלך"],"Not moderated":["×œ×œ× ×¤×™×§×•×—"],"Participants entering this groupchat can write right away":["×ž×©×ª×ª×¤×™× ×©× ×›× ×¡×™× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית ×”×–×ת ×™×›×•×œ×™× ×œ×›×ª×•×‘ מ×ותו הרגע"],"Online users":["×ž×©×ª×ž×©×™× ×ž×§×•×•× ×™×"],"Anyone can join this groupchat":["כל ×חד יכול להצטרף להתכתבות קבוצתית זו"],"This groupchat requires a password before entry":["התכתבות קבוצתית זו דורשת ססמה כדי ×œ×”×™×›× ×¡ ×ליה"],"Password protected":["×”×’× ×” בססמה"],"Persistent":["עקבי"],"This groupchat persists even if it\'s unoccupied":["התכתבות קבוצתית זו × ×©×ž×¨×ª ×’× ×× ×ין בה משתתפי×"],"Only moderators can see your XMPP address":["רק ×ž×©×’×™×—×™× ×™×›×•×œ×™× ×œ×¨×ות ×ת כתובת ×”Ö¾XMPP שלך"],"This groupchat will disappear once the last person leaves":["התכתבות קבוצתית זו ×ª×™×¢×œ× ×¢× ×™×¦×™×ת החבר ×”×חרון"],"This groupchat is publicly searchable":["התכתבות קבוצתית זו גלויה בחיפושי×"],"Groupchat info for %1$s":["פרטי התכתבות קבוצתית עבור %1$s"],"You\'re not allowed to send messages in this room":["×ין לך הרש××” לשלוח הודעות בחדר ×–×”"],"The conversation has moved. Click below to enter.":["הדיון הועבר. יש ללחוץ להלן כדי ×œ×”×™×›× ×¡."],"This groupchat no longer exists":["התכתבות קבוצתית זו ××™× ×” קיימת עוד"],"Enter groupchat":["×›× ×™×¡×” להתכתבות קבוצתית"],"Please choose your nickname":["× × ×œ×‘×—×•×¨ ×ת ×”×›×™× ×•×™ שלך"],"This groupchat requires a password":["התכתבות קבוצתית זו דורשת ססמה"],"Password: ":["ססמה: "],"Submit":["שליחה"],"%1$s has entered the groupchat":["%1$s × ×›× ×¡/×” להתכתבות הקבוצתית הזו"],"%1$s has left the groupchat":["%1$s עזב/×” ×ת ההתכתבות הקבוצתית הזו"],"%1$s is now a moderator":["×”×•×¢× ×§×• הרש×ות פיקוח לטובת %1$s"],"%1$s is no longer a moderator":["הרש×ות הפיקוח של %1$s הוסרו"],"%1$s has been muted":["הקול של %1$s הושתק"],"%1$s and %2$s":["%1$s ×•×’× %2$s"],"Change user\'s affiliation to admin":["×©× ×” ×¡×™× ×•×£ משתמש ×œ×ž× ×”×œ"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["החלפת תפקיד המשתמש למשתתף"],"Remove this groupchat":["הסרת ההתכתבות הקבוצתית ×”×–×ת"],"Kick user from groupchat":["לזרוק ×ת המשתמש מההתכתבות הקבוצתית"],"Write in 3rd person":["כתוב בגוף שלישי"],"Grant membership to a user":["×”×¢× ×§ חברות למשתמש"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["הסר יכולת משתמש ×œ×¤×¨×¡× ×”×•×“×¢×•×ª"],"Change your nickname":["×©× ×” ×ת ×”×©× ×›×™× ×•×™ שלך"],"Grant moderator role to user":["×”×¢× ×§ תפקיד ×חר××™ למשתמש"],"Grant ownership of this groupchat":["×”×¢× ×§×ª בעלות על התכתבות קבוצתית זו"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["הגדרת × ×•×©× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית"],"Set groupchat subject (alias for /subject)":["הגדרת × ×•×©× ×œ×”×ª×›×ª×‘×•×ª הקבוצתית (×©× ×—×œ×•×¤×™ ל־‎/subject)"],"Allow muted user to post messages":["התר למשתמש מושתק ×œ×¤×¨×¡× ×”×•×“×¢×•×ª"],"Sorry, you\'re not allowed to retract this message":["×ין לך הרש×ות למשוך ×ת ההודעה ×”×–×ת, עמך הסליחה"],"Configure":[""],"Configure this groupchat":["הגדרות התכתבות קבוצתית זו"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["הסתרת רשימת המשתתפי×"],"Forbidden: you do not have the necessary role in order to do that.":["×סור: ×ין לך ×ת התפקיד המת××™× ×›×“×™ לבצע ×ת הפעולה ×”×–×ת."],"Forbidden: you do not have the necessary affiliation in order to do that.":["×סור: ×ין לך ×ת ההשתייכות ×”× ×“×¨×©×ª כדי לבצע ×ת הפעולה ×”×–×ת."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["שגי××”: הפקודה „%1$s†מקבלת ×©× ×™ ××¨×’×•×ž× ×˜×™×, ×›×™× ×•×™ המשתמש וסיבה כרשות."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["שגי××”: מספר ×”××¨×’×•×ž× ×˜×™× ×©×’×•×™"],"This action was done by %1$s.":["פעולה זו × ×¢×¨×›×” על ידי %1$s."],"The reason given is: \\"%1$s\\".":["הסיבה שסופקה ×”×™×: „%1$sâ€."],"Groupchats":["התכתבויות קבוצתיות"],"Add a new groupchat":["הוספת התכתבות קבוצתית חדשה"],"Query for groupchats":["תש×ול התכתבויות קבוצתיות"],"Announcements":[""],"Notification from %1$s":["התר××” מ×ת %1$s"],"%1$s says":["× ×מר על ידי %1$s"],"has gone offline":["כבר ×œ× ×ž×§×•×•×Ÿ"],"has gone away":["× ×¢×“×¨(ת)"],"is busy":["עסוק(×”) כעת"],"has come online":["התחבר/×”"],"wants to be your contact":["רוצה להצטרף ל×× ×©×™ הקשר שלך"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["על ×ודות"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["לקוח התכתבות דרך XMPP ב%1$sקוד פתוח%2$s שמוגש ×ž×˜×¢× %3$sOpokde%2$s"],"%1$s Translate %2$s it into your own language":["%1$sלתרג×%2$s ×–×ת לשפה שלך"],"Log out":["×”×ª× ×ª×§×•×ª"],"Click to change your chat status":["לחץ כדי ×œ×©× ×•×ª ×ת הודעת השיחה שלך"],"Show details about this chat client":["הצגת ×¤×¨×˜×™× ×¢×œ לקוח התכתבות ×–×”"],"Your avatar image":["×”×ª×ž×•× ×” המייצגת שלך"],"Checkbox for selecting the following fingerprint":["תיבת סימון לבחירת טביעת ×”×צבע הב××”"],"Device without a fingerprint":["מכשיר ×œ×œ× ×˜×‘×™×¢×•×ª ×צבע"],"Other OMEMO-enabled devices":["×ž×›×©×™×¨×™× ××—×¨×™× ×ª×•×ž×›×™ OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["תיבת סימון לבחירת טביעות ×צבע של כל מכשירי ×”Ö¾OMEMO ×”×חרי×"],"Remove checked devices and close":["להסיר ×ת ×”×ž×›×©×™×¨×™× ×”×ž×¡×•×ž× ×™× ×•×œ×¡×’×•×¨"],"Select all":["לבחור הכול"],"This device\'s OMEMO fingerprint":["טביעת ×צבע ×”Ö¾OMEMO של המכשיר"],"Generate new keys and fingerprint":["יצירת מפתחות וטביעות ×צבע חדשי×"],"Your Profile":["הפרופיל שלך"],"XMPP Address (JID)":["כתובת XMPP†(JID)"],"Save and close":["לשמור ולסגור"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["× ×™×ª×Ÿ להשתמש ×‘×¤×¡×™×§×™× ×›×“×™ להפריד בין מספר תפקידי×. ×”×ª×¤×§×™×“×™× ×ž×•×¤×™×¢×™× ×œ×™×“ ×”×©× ×‘×”×•×“×¢×•×ª שלך כחלק מההתכתבות."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ לשמור ×ת × ×ª×•× ×™ הפרופיל שלך, עמך הסליחה."],"You can check your browser\'s developer console for any error output.":["מוטב לחפש שגי×ות במסוף הפיתוח של הדפדפן שלך."],"Away":["× ×¢×“×¨"],"Busy":["עסוק"],"Custom status":["מצב מות××"],"Offline":["×œ× ×ž×§×•×•×Ÿ"],"Online":["מקוון"],"Away for long":["היעדרות לזמן מה"],"Change chat status":["החלפת מצב התכתבות"],"Personal status message":["הודעת מצב ×ישית"],"I am %1$s":["מצבי כעת ×”×™× ×• %1$s"],"Are you sure you want to log out?":["לצ×ת?"],"online":["מקוון"],"busy":["עסוק"],"away for long":["× ×¢×“×¨ לזמן מה"],"away":["× ×¢×“×¨"],"offline":["×œ× ×ž×§×•×•×Ÿ"],"Sorry, could not decrypt a received OMEMO message due to an error.":["×œ× × ×™×ª×Ÿ ×œ×¤×¢× ×— הודעת OMEMO שהתקבלה עקב שגי××”, עמך הסליחה."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["×›× ×¨××” שהלקוח שמותקן ×צל %1$s ××™× ×• תומך ב־â€OMEMO. ×ין עוד תמיכה בהתכתבות ×ž×•×¦×¤× ×ª בהתכתבות הקבוצתית ×”×–×ת."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["×œ× × ×™×ª×Ÿ להשתמש ×‘×”×¦×¤× ×” מקצה לקצה כיוון שהלקוח של %1$s ××™× ×• תומך ב־OMEMO."],"Messages are being sent in plaintext":["ההודעות × ×©×œ×—×•×ª כטקסט פשוט"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["×œ× ×”×¦×œ×—× ×• לשלוח הודעה ×ž×•×¦×¤× ×ª כיוון שקיימת דרישת מצד %1$s ×œ×”×™×¨×©× ×œ×ž×¦×‘ ×”× ×•×›×—×•×ª ×©×œ×”× ×›×“×™ לצפות בפרטי OMEMO, עמך הסליחה"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["×œ× ×”×¦×œ×—× ×• לשלוח הודעה ×ž×•×¦×¤× ×ª כיוון ×©×œ× × ×™×ª×Ÿ ×œ×ž×¦×•× ×ת השרת המרוחק %1$s"],"Unable to send an encrypted message due to an unexpected error.":["×œ× × ×™×ª×Ÿ לשלוח הודעה ×ž×•×¦×¤× ×ª עקב שגי××” בלתי צפויה."],"Sorry, an error occurred while trying to remove the devices.":["×ירעה שגי××” במהלך ×”× ×™×¡×™×•×Ÿ להסרת ×”×”×ª×§× ×™×, עמך הסליחה."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["לייצר מפתחות OMEMO חדשי×? פעולה זו תסיר ×ת המפתחות ×”×™×©× ×™× ×©×œ×š ו×ת כל ההודעות ×©×”×•×¦×¤× ×• בעבר ×œ× ×ª×”×™×” לך ×פשרות ×œ×¤×¢× ×— במכשיר ×”×–×”."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["זו הודעה ×©×ž×•×¦×¤× ×ª ב־OMEMO שכפי ×”× ×¨××” הלקוח שלך ××™× ×• תומך בה. × ×™×ª×Ÿ ×œ×ž×¦×•× ×¤×¨×˜×™× × ×•×¡×¤×™× ×‘×›×ª×•×‘×ª https://conversations.im/omemo"]," e.g. conversejs.org":[" למשל conversejs.org"],"Fetch registration form":["משוך טופס הרשמה"],"Tip: A list of public XMPP providers is available":["טיפ: רשימה פומבית של ספקי XMPP ×”×™× ×” ×–×ž×™× ×”"],"here":["×›×ן"],"Sorry, we\'re unable to connect to your chosen provider.":["×œ× ×”×¦×œ×—× ×• להתחבר לספק שבחרת, עמך הסליחה."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["מצטערי×, הספק ×©× ×™×ª×Ÿ ×œ× ×ª×•×ž×š ×‘×¨×™×©×•× ×—×©×‘×•× ×•×ª in band. ×× × × ×¡×” ×¢× ×¡×¤×§ ×חר."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["משהו השתבש במהלך ההתחברות ×¢× â€ž%1$sâ€. החיבור ×”×–×” ×§×™×™× ×‘×›×œ×œ?"],"Now logging you in":["כעת מחבר ×ותך ×¤× ×™×ž×”"],"Registered successfully":["× ×¨×©× ×‘×”×¦×œ×—×”"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["הספק דחה ×ת × ×™×¡×™×•×Ÿ ×”×¨×™×©×•× ×©×œ×š. × × ×œ×•×•×“× ×ת ×”× ×ª×•× ×™× ×©×”×§×œ×“×ª."],"Leave this groupchat":["יצי××” מההתכתבות הקבוצתית ×”×–×ת"],"Click to toggle the list of open groupchats":["יש ללחוץ כדי להציג/להסתיר ×ת רשימת קבוצות ההתכתבות הפתוחות"],"Open Groupchats":["התכתבויות קבוצתיות פתוחות"],"Are you sure you want to leave the groupchat %1$s?":["לעזוב ×ת ההתכתבות הקבוצתית %1$s?"],"Add":["הוסף"],"Add a Contact":["הוספת ×יש קשר"],"This contact is busy":["×יש קשר ×–×” עסוק"],"This contact is online":["×יש קשר ×–×” מקוון"],"This contact is offline":["×יש קשר ×–×” ××™× ×• מקוון"],"This contact is unavailable":["×יש קשר ×–×” ×œ× ×–×ž×™×Ÿ"],"This contact is away for an extended period":["×יש קשר ×–×” × ×¢×“×¨ למשך זמן ממושך"],"This contact is away":["×יש קשר ×–×” ×”×™× ×• × ×¢×“×¨"],"Contact name":["×©× ×יש קשר"],"Optional nickname":["×›×™× ×•×™ כרשות"],"Sorry, could not find a contact with that name":["×ין ×פשרות ×œ×ž×¦×•× ×יש קשר ×‘×©× ×–×”, עמך הסליחה"],"This contact has already been added":["×יש קשר ×–×” כבר × ×•×¡×£"],"Filter":["×ž×¡× ×Ÿ"],"Filter by contact name":["×¡×™× ×•×Ÿ לפי ×©× ×יש קשר"],"Filter by group name":["×¡×™× ×•×Ÿ לפי ×©× ×§×‘×•×¦×”"],"Filter by status":["×¡×™× ×•×Ÿ לפי מצב"],"Any":["כלשהו"],"Unread":["×œ× × ×§×¨×ו"],"Chatty":["×§×©×§×©× ×•×ª"],"Extended Away":["היעדרות ממושכת"],"Click to remove %1$s as a contact":["יש ללחוץ כדי להסיר ×ת ×יש הקשר %1$s"],"Click to accept the contact request from %1$s":["יש ללחוץ כדי לקבל בקשת ×יש קשר ×©× ×©×œ×—×” על ידי %1$s"],"Click to decline the contact request from %1$s":["יש ללחוץ כדי לסרב לבקשת הקשר שהגיעה מצד %1$s"],"Are you sure you want to decline this contact request?":["×”×× ×תה בטוח ×›×™ ×‘×¨×¦×•× ×š לסרב ×ת בקשת ×יש קשר ×–×”?"],"Contacts":["×× ×©×™ קשר"],"Add a contact":["הוסף ×יש קשר"],"Re-sync your contacts":["×¡× ×›×¨×•×Ÿ ×× ×©×™ הקשר שלך מחדש"]}}}')}}]); //# sourceMappingURL=he-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/hi-LC_MESSAGES-converse-po.js b/src/conversejs/locales/hi-LC_MESSAGES-converse-po.js index b7a2b59ec648110583ee71f38bbfa6b2e9ceb38c..956241d7af25b2df21105107c0168817cf6f353e 100644 --- a/src/conversejs/locales/hi-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/hi-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{433:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"hi"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["छोड़ें"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":["कà¥à¤·à¤®à¤¾à¤ करें, फ़ाईल अपलोड करने का यू.आ.à¤à¤². समठनहीं आया।"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["कà¥à¤·à¤®à¤¾à¤ करें, आपकी फ़ाईल अपलोड नहीं हो पाई। सरà¥à¤µà¤° का जवाब: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["कà¥à¤·à¤®à¤¾à¤ करें, आपकी फ़ाईल अपलोड नहीं हो पाई।"],"Sorry, looks like file upload is not supported by your server.":["कà¥à¤·à¤®à¤¾à¤ करें, लगता है आपके सरà¥à¤µà¤° पर फ़ाईल अपलोड की सेवा उपलबà¥à¤§ नहीं है।"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":["à¤à¤• नया कमरा बना दिया गया है"],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":["आपको इस कमरे से पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कर दिया गया है"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":["आपको इस कमरे से बाहर कर दिया गया है"],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s को पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कर दिया गया है"],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out":["%1$s को बाहर कर दिया गया है"],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["दिकà¥à¤•à¤¤"],"Sorry, something went wrong while trying to save your bookmark.":["कà¥à¤·à¤®à¤¾à¤ करें, आपका बà¥à¤•à¤®à¤¾à¤°à¥à¤• समà¥à¤à¤¾à¤²à¤¨à¥‡à¤‚ में कà¥à¤› गड़बड़ हà¥à¤ˆà¥¤"],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":["गà¥à¤°à¥à¤ª चैट कौ अनबà¥à¤•à¤®à¤¾à¤°à¥à¤• करें"],"Click to open this groupchat":["इस कमरे को खोलने के लिठयहाठकà¥à¤²à¤¿à¤• करें"],"Click to toggle the bookmarks list":["बà¥à¤•à¤®à¤¾à¤°à¥à¤•-सूची खोलें/बंद करें"],"Bookmarks":["बà¥à¤•à¤®à¤¾à¤°à¥à¤•"],"Bookmark this groupchat":["गà¥à¤°à¥à¤ª चैट कौ बà¥à¤•à¤®à¤¾à¤°à¥à¤• करें"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["इस बà¥à¤•à¤®à¤¾à¤°à¥à¤• का नाम:"],"What should your nickname for this groupchat be?":[""],"Save":["समà¥à¤à¤¾à¤²à¥‡à¤‚"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["कà¥à¤¯à¤¾ आप वाकई \\"%1$s\\" के बà¥à¤•à¤®à¤¾à¤°à¥à¤• को हटाना चाहते हैं?"],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":[""],"Show more":["और दिखाà¤à¤‚"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["इमोजी डालें"],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":["कोई फ़ाईल à¤à¥‡à¤œà¥‡à¤‚"],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":[""],"Refresh":[""],"Role":[""],"URL":[""],"%1$s is typing":["%1$s लिख रहे हैं"],"%1$s has stopped typing":["%1$s लिखते-लिखते रà¥à¤• गà¤"],"%1$s has gone away":[""],"Remove messages":["सनà¥à¤¦à¥‡à¤¶ हटाà¤à¤‚"],"Write in the third person":["अनà¥à¤¯ पà¥à¤°à¥à¤· में लिखें"],"Show this menu":["यह मेनà¥à¤¯à¥‚ देखाà¤à¤‚"],"Hidden message":[""],"Message":["सनà¥à¤¦à¥‡à¤¶"],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["कà¥à¤¯à¤¾ आप वाकई इस वारà¥à¤¤à¤¾à¤²à¤¾à¤ª के सनà¥à¤¦à¥‡à¤¶ हटाना चाहते हैं?"],"%1$s has gone offline":[""],"%1$s is busy":["%1$s वà¥à¤¯à¤¸à¥à¤¤ है"],"%1$s is online":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Password":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":["यूज़रनेम"],"user@domain":["यूज़र@डोमेन"],"Please enter a valid XMPP address":["कà¥à¤°à¤¿à¤ªà¤¯à¤¾ कोई मानà¥à¤¯ à¤à¤•à¥à¤¸.à¤à¤®.पी.पी. à¤à¤¡à¥à¤°à¥‡à¤¸ डालें"],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This field is required":[""],"Join":["हिसà¥à¤¸à¤¾ बनें"],"Enter a new Groupchat":["à¤à¤• नये कमरे का हिसà¥à¤¸à¤¾ बनें"],"name@conference.example.org":[""],"Groupchat address":[""],"Invite":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":["इस कमरे के बारे में और जानकारी दिखाà¤à¤‚"],"Query for Groupchats":[""],"Description:":["विवरण :"],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["छिपा हà¥à¤†"],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":["कोई कमरे नहीं मिले"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Role changed":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":[""],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Change user role to participant":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"A timeout occurred while trying to retract the message":[""],"Configure":[""],"Configure this groupchat":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["इस कमरे को छोड़ें"],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[155],{521:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"hi"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["छोड़ें"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":["कà¥à¤·à¤®à¤¾à¤ करें, फ़ाईल अपलोड करने का यू.आ.à¤à¤². समठनहीं आया।"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["कà¥à¤·à¤®à¤¾à¤ करें, आपकी फ़ाईल अपलोड नहीं हो पाई। सरà¥à¤µà¤° का जवाब: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["कà¥à¤·à¤®à¤¾à¤ करें, आपकी फ़ाईल अपलोड नहीं हो पाई।"],"Sorry, looks like file upload is not supported by your server.":["कà¥à¤·à¤®à¤¾à¤ करें, लगता है आपके सरà¥à¤µà¤° पर फ़ाईल अपलोड की सेवा उपलबà¥à¤§ नहीं है।"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":["à¤à¤• नया कमरा बना दिया गया है"],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":["आपको इस कमरे से पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कर दिया गया है"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":["आपको इस कमरे से बाहर कर दिया गया है"],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s को पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कर दिया गया है"],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out":["%1$s को बाहर कर दिया गया है"],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["दिकà¥à¤•à¤¤"],"Sorry, something went wrong while trying to save your bookmark.":["कà¥à¤·à¤®à¤¾à¤ करें, आपका बà¥à¤•à¤®à¤¾à¤°à¥à¤• समà¥à¤à¤¾à¤²à¤¨à¥‡à¤‚ में कà¥à¤› गड़बड़ हà¥à¤ˆà¥¤"],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":["गà¥à¤°à¥à¤ª चैट कौ अनबà¥à¤•à¤®à¤¾à¤°à¥à¤• करें"],"Click to open this groupchat":["इस कमरे को खोलने के लिठयहाठकà¥à¤²à¤¿à¤• करें"],"Click to toggle the bookmarks list":["बà¥à¤•à¤®à¤¾à¤°à¥à¤•-सूची खोलें/बंद करें"],"Bookmarks":["बà¥à¤•à¤®à¤¾à¤°à¥à¤•"],"Bookmark this groupchat":["गà¥à¤°à¥à¤ª चैट कौ बà¥à¤•à¤®à¤¾à¤°à¥à¤• करें"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["इस बà¥à¤•à¤®à¤¾à¤°à¥à¤• का नाम:"],"What should your nickname for this groupchat be?":[""],"Save":["समà¥à¤à¤¾à¤²à¥‡à¤‚"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["कà¥à¤¯à¤¾ आप वाकई \\"%1$s\\" के बà¥à¤•à¤®à¤¾à¤°à¥à¤• को हटाना चाहते हैं?"],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":[""],"Show more":["और दिखाà¤à¤‚"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["इमोजी डालें"],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":["कोई फ़ाईल à¤à¥‡à¤œà¥‡à¤‚"],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":[""],"Refresh":[""],"Role":[""],"URL":[""],"%1$s is typing":["%1$s लिख रहे हैं"],"%1$s has stopped typing":["%1$s लिखते-लिखते रà¥à¤• गà¤"],"%1$s has gone away":[""],"Remove messages":["सनà¥à¤¦à¥‡à¤¶ हटाà¤à¤‚"],"Write in the third person":["अनà¥à¤¯ पà¥à¤°à¥à¤· में लिखें"],"Show this menu":["यह मेनà¥à¤¯à¥‚ देखाà¤à¤‚"],"Hidden message":[""],"Message":["सनà¥à¤¦à¥‡à¤¶"],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["कà¥à¤¯à¤¾ आप वाकई इस वारà¥à¤¤à¤¾à¤²à¤¾à¤ª के सनà¥à¤¦à¥‡à¤¶ हटाना चाहते हैं?"],"%1$s has gone offline":[""],"%1$s is busy":["%1$s वà¥à¤¯à¤¸à¥à¤¤ है"],"%1$s is online":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Password":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":["यूज़रनेम"],"user@domain":["यूज़र@डोमेन"],"Please enter a valid XMPP address":["कà¥à¤°à¤¿à¤ªà¤¯à¤¾ कोई मानà¥à¤¯ à¤à¤•à¥à¤¸.à¤à¤®.पी.पी. à¤à¤¡à¥à¤°à¥‡à¤¸ डालें"],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":["हिसà¥à¤¸à¤¾ बनें"],"Enter a new Groupchat":["à¤à¤• नये कमरे का हिसà¥à¤¸à¤¾ बनें"],"name@conference.example.org":[""],"Groupchat address":[""],"Invite":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":["इस कमरे के बारे में और जानकारी दिखाà¤à¤‚"],"Query for Groupchats":[""],"Description:":["विवरण :"],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["छिपा हà¥à¤†"],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":["कोई कमरे नहीं मिले"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Role changed":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":[""],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Change user role to participant":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"A timeout occurred while trying to retract the message":[""],"Configure":[""],"Configure this groupchat":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["इस कमरे को छोड़ें"],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=hi-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/hu-LC_MESSAGES-converse-po.js b/src/conversejs/locales/hu-LC_MESSAGES-converse-po.js index 0a3f8515e197221c68aeaf1d0185bbd5939b7a5a..6e171edba0240be7758ac20cc671ec5b5a25e45d 100644 --- a/src/conversejs/locales/hu-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/hu-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{434:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"hu"},"Create your account":["Hozza létre fiókját"],"Please enter the XMPP provider to register with:":["Kérjük, adja meg az XMPP szolgáltatót a regisztráláshoz:"],"Already have a chat account?":["Már van csevegÅ‘ fiókja?"],"Log in here":["Bejelentkezés itt"],"Account Registration:":["Fiók Regisztráció:"],"Register":["Regisztráció"],"Choose a different provider":["Válasszon egy másik szolgáltatót"],"Hold tight, we\'re fetching the registration form…":["Tartson ki, most kérjük le a regisztrációs űrlapot…"],"Cancel":["Mégsem"],"The connection has dropped, attempting to reconnect.":["A kapcsolat megszakadt, megpróbál újra csatlakozni."],"An error occurred while connecting to the chat server.":["Hiba történt a chat szerverhez való csatlakozás közben."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sajnáljuk, nem tudtunk csatlakozni a domainhez tartozó XMPP gazdagéphez: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Az XMPP kiszolgáló nem ajánlott fel támogatott hitelesÃtési mechanizmust"],"Sorry, could not determine upload URL.":["Sajnáljuk, nem sikerült meghatározni a feltöltési URL-t."],"Sorry, could not determine file upload URL.":["Sajnáljuk, nem sikerült meghatározni a fájl feltöltési URL-jét."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sajnáljuk, a fájlt nem sikerült feltölteni. A szervered válasza: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Sajnáljuk, a fájlt nem sikerült feltölteni."],"Sorry, looks like file upload is not supported by your server.":["Sajnálom, úgy tűnik, hogy a szerver nem támogatja a fájl feltöltést."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["A fájlod mérete: %1$s meghaladja a szervered által megengedettet, ami: %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Ez a konferencia NEM névtelen"],"This groupchat now shows unavailable members":["A konferencia mostantól nem elérhetÅ‘ tagokat mutat"],"This groupchat does not show unavailable members":["Ez a konferencia nem mutat elérhetetlen tagokat"],"The groupchat configuration has changed":["A konferencia beállÃtása megváltozott"],"This groupchat is now no longer anonymous":["A konferencia most már nem névtelen"],"This groupchat is now semi-anonymous":["A konferencia most már félig névtelen"],"This groupchat is now fully-anonymous":["A konferencia most már teljesen névtelen"],"A new groupchat has been created":["Létrejött egy új konferencia"],"Your nickname has been automatically set to %1$s":["A beceneve automatikusan ez lett: %1$s"],"Your nickname has been changed to %1$s":["A beceneved a következÅ‘re módosult: %1$s"],"You have been banned from this groupchat":["Ki lettél tiltva ebbÅ‘l a konferenciából"],"You have been kicked from this groupchat":["Ki lettél dobva ebbÅ‘l a konferenciából"],"You have been removed from this groupchat because of an affiliation change":["Taglista módosÃtás miatt kiléptettünk a konferenciából"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Kiléptettünk a konferenciából, mert mostantól csak a taglistán szereplÅ‘k lehetnek jelen"],"You have been removed from this groupchat because the service hosting it is being shut down":["Kiléptettük a konferenciából, mert a szolgáltatás leállÃtásra került"],"You\'re not allowed to register yourself in this groupchat.":["Nem regisztrálhatod magad ebben a konferenciában."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nem regisztrálhatod magad ebben a konferenciában, mert meghÃvás alapú."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nem lehet regisztrálni a becenevedet ebben a konferenciában, a regisztrációt nem támogatja."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nem lehet regisztrálni a becenevedet ebben a konferenciában, érvénytelen az űrlap."],"Topic set by %1$s":["Témát beállÃtotta: %1$s"],"Topic cleared by %1$s":["A témát törölte: %1$s"],"%1$s has been banned":["%1$s ki lett tiltva"],"%1$s\'s nickname has changed":["%1$s beceneve módosult"],"%1$s has been kicked out":["%1$s ki lett dobva"],"%1$s has been removed because of an affiliation change":["%1$s el lett távolÃtva, tagság változás miatt"],"%1$s has been removed for not being a member":["%1$s el lett távolÃtva, mert nem volt tag"],"%1$s is no longer an admin of this groupchat":["%1$s már nem admin ebben a konferenciában"],"%1$s is no longer an owner of this groupchat":["%1$s már nem tulajdonos ebben a konferenciában"],"%1$s is no longer banned from this groupchat":["%1$s már nincs kitiltva ebbÅ‘l a konferenciából"],"%1$s is now an %2$s of this groupchat":["%1$s most már %2$s ebben a konferenciában"],"The nickname you chose is reserved or currently in use, please choose a different one.":["A kiválasztott becenév fenntartva vagy jelenleg használatban van, kérjük, válasszon másikat."],"You are not on the member list of this groupchat.":["Nem vagy a konferencia taglistáján."],"You have been banned from this groupchat.":["Ki lettél tiltva ebbÅ‘l a konferenciából."],"You are not allowed to create new groupchats.":["Nem hozhatsz létre új konferenciákat."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["A beceneved nem felel meg a konferencia szabályzatának."],"This groupchat does not (yet) exist.":["Ez a konferencia (még) nem létezik."],"This groupchat has reached its maximum number of participants.":["Ez a konferencia elérte a maximális jelenlévÅ‘k számát."],"Remote server not found":["Távoli kiszolgáló nem található"],"The explanation given is: \\"%1$s\\".":["A kapott magyarázat: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s meghÃvott a(z) %2$s nevű csevegÅ‘szobába"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s meghÃvott a(z) %2$s nevű csevegÅ‘szobába. Indoka: \\"%3$s\\""],"Error":["Hiba"],"Sorry, something went wrong while trying to save your bookmark.":["Sajnáljuk, valami hiba történt a könyvjelzÅ‘ mentése közben."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Névjegyeim"],"Pending contacts":["FüggÅ‘ kapcsolatok"],"Contact requests":["Partnerfelvételi kérések"],"Ungrouped":["Nem csoportosÃtott"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sajnáljuk, hiba történt a(z) %1$s nevű névjegy hozzáadása során."],"This client does not allow presence subscriptions":["Ez a kliens nem engedélyezi a jelenlét követését"],"Click to hide these contacts":["Kattintson ide a névjegyek elrejtéséhez"],"Unbookmark this groupchat":["Konferencia könyvjelzÅ‘jének törlése"],"Click to open this groupchat":["Belépés a konferenciába"],"Click to toggle the bookmarks list":["Kattintson a könyvjelzÅ‘k listájára váltáshoz"],"Bookmarks":["KönyvjelzÅ‘k"],"Bookmark this groupchat":["Konferencia megjelölése"],"Would you like this groupchat to be automatically joined upon startup?":["Szeretné ha induláskor automatikusan csatlakozna ehhez a konferenciához?"],"The name for this bookmark:":["A könyvjelzÅ‘ neve legyen:"],"What should your nickname for this groupchat be?":["Mi legyen a beceneve ebben a konferenciában?"],"Save":["Mentés"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Biztosan el szeretné távolÃtani a(z) \\"%1$s\\" könyvjelzÅ‘t?"],"Close":["Bezár"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Hangfájl letöltése \\"%1$s\\""],"Download file \\"%1$s\\"":["Fájl letöltése \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Ãœzenetverziók"],"Retry":[""],"Uploading file:":["Fájl feltöltése:"],"This message has been edited":["Ez az üzenet szerkesztve van"],"Show more":["Mutass többet"],"No message history available.":["Nem található elÅ‘zmény."],"Search results":["Keresés eredménye"],"Search":["Keresés"],"Insert emojis":["Emotikonok beszúrása"],"Start a call":["HÃvás indÃtása"],"Choose a file to send":["Válasszon ki egy fájlt küldéshez"],"Click to write as a normal (non-spoiler) message":["Kattintson normál (nem spoiler) üzenet Ãrásához"],"Click to write your message as a spoiler":["Kattintson spoiler üzenet Ãrásához"],"The User\'s Profile Image":["A felhasználó profilképe"],"Trusted":["MegbÃzható"],"Untrusted":["MegbÃzhatatlan"],"OMEMO Fingerprints":["OMEMO Ujjlenyomatok"],"Remove as contact":["TávolÃtsa el, mint kapcsolatot"],"XMPP Address":["XMPP CÃm"],"Email":["Email"],"Full Name":["Teljes név"],"Nickname":["Becenév"],"Refresh":["FrissÃtés"],"Role":["Szerepkör"],"URL":["URL"],"%1$s is typing":["%1$s éppen Ãr"],"%1$s has stopped typing":["%1$s abbahagyta a gépelést"],"%1$s has gone away":["%1$s távol van"],"Remove messages":["Ãœzenetek törlése"],"Write in the third person":["Ãrjon egyes szám harmadik személyben"],"Show this menu":["Mutasd a menüt"],"Hidden message":["Rejtett üzenet"],"Message":["Ãœzenet"],"Optional hint":["Választható tipp"],"You have unread messages":["Olvasatlan üzenetei vannak"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Biztosan törölni szeretné ebbÅ‘l a beszélgetésbÅ‘l származó üzeneteket?"],"%1$s has gone offline":["%1$s nem elérhetÅ‘vé vált"],"%1$s is busy":["%1$s elfoglalt"],"%1$s is online":["%1$s elérhetÅ‘"],"Sorry, something went wrong while trying to refresh":["Sajnáljuk, valami hiba történt frissÃtés közben"],"Are you sure you want to remove this contact?":["Valóban törölni szeretné a csevegÅ‘partnerét?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sajnáljuk, hiba történt %1$s mint ismerÅ‘s eltávolÃtása közben."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["A teljesÃtmény javÃtása érdekében a böngészÅ‘ben tároljuk az adatokat. Törölje a jelölÅ‘négyzetet, ha ez nyilvános számÃtógép vagy ha törölni kÃvánja adatait, amikor kijelentkezik. Fontos, hogy kifejezetten jelentkezzen ki, mert elÅ‘fordulhat, hogy nem az összes tárolt adat törlÅ‘dik. Kérjük, vegye figyelembe, ha nem megbÃzható eszközt használ, hogy az OMEMO titkosÃtás nem elérhetÅ‘."],"This is a trusted device":["Ez egy megbÃzható eszköz"],"Create an account":["Fiók létrehozása"],"Don\'t have a chat account?":["Nincs csevegÅ‘ fiókja?"],"Log in":["Bejelentkezés"],"Disconnected":["Szétkapcsolva"],"Click here to log in anonymously":["Kattintson ide a névtelen bejelentkezéshez"],"Username":["Felhasználónév"],"user@domain":["felhasználó@tartomány"],"Please enter a valid XMPP address":["Kérjük, adjon meg érvényes XMPP cÃmet"],"Chat Contacts":["CsevegÅ‘partnerek"],"Toggle chat":["CsevegÅ‘ablak"],"Click to restore this chat":["A csevegés visszaállÃtása"],"Minimized":["Minimalizálva"],"This field is required":["Ez a mezÅ‘ kötelezÅ‘"],"Join":["Csatlakozás"],"Enter a new Groupchat":["Adjon meg új Konferenciát"],"name@conference.example.org":["név@konferencia.példa.hu"],"Groupchat address":["Konferencia cÃme"],"Invite":["MeghÃvás"],"Show groupchats":["Konferenciák mutatása"],"Server address":["Kiszolgáló cÃme"],"Show more information on this groupchat":["További információk a konferenciáról"],"Query for Groupchats":["Konferenciák lekérdezése"],"Description:":["LeÃrás:"],"Groupchat Address (JID):":["Konferencia cÃme (JID):"],"Participants:":["RésztvevÅ‘k:"],"Features:":["JellemzÅ‘k:"],"Requires authentication":["AzonosÃtás szükséges"],"Hidden":["Rejtett"],"Requires an invitation":["MeghÃvás szükséges"],"Moderated":["Moderált"],"Non-anonymous":["NEM névtelen"],"Open":["Nyitott"],"Permanent":["Ãllandó"],"Public":["Nyilvános"],"Semi-anonymous":["Félig névtelen"],"Temporary":["Ideiglenes"],"Unmoderated":["Moderálatlan"],"conference.example.org":["konferencia@pelda.hu"],"No groupchats found":["Nem találhatók szobák"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":["Moderátor Eszközök"],"No users with that affiliation found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Témakör"],"Topic author":["Téma szerzÅ‘"],"Groupchat address (JID)":["Konferencia cÃme (JID)"],"Message archiving":["Ãœzenetarchiválás"],"Messages are archived on the server":["Ãœzenetek archiválva vannak a kiszolgálón"],"Description":["LeÃrás"],"Features":["JellemzÅ‘k"],"This groupchat is not publicly searchable":["Ez a konferencia nyilvánosan nem kereshetÅ‘"],"This groupchat is restricted to members only":["Ez a konferencia kizárólag tagoknak szól"],"Members only":["Csak tagoknak"],"Participants entering this groupchat need to request permission to write":["A belépÅ‘ résztvevÅ‘knek engedélyt kell kérni, hogy Ãrhassanak"],"Name":["Név"],"This groupchat does not require a password upon entry":["Ez a konferencia nem igényel jelszót belépéskor"],"No password required":["Nem szükséges jelszó"],"Not anonymous":["Nem névtelen"],"All other groupchat participants can see your XMPP address":["Minden konferencia-résztvevÅ‘ láthatja az XMPP felhasználónevét"],"Not moderated":["Moderálatlan"],"Participants entering this groupchat can write right away":["A belépÅ‘ résztvevÅ‘k egybÅ‘l Ãrhatnak is ide"],"Online users":["JelenlevÅ‘k"],"Anyone can join this groupchat":["Bárki csatlakozhat a konferenciához"],"This groupchat requires a password before entry":["A konferenciába belépéshez jelszó szükséges"],"Password protected":["Jelszóval védve"],"Persistent":["Ãllandó"],"This groupchat persists even if it\'s unoccupied":["Ez a konferencia akkor is fennmarad, ha üres"],"Only moderators can see your XMPP address":["Csak a moderátorok láthatják az Ön XMPP felhasználónevét"],"This groupchat will disappear once the last person leaves":["Ez a konferencia eltűnik, amint az utolsó ember elhagyja"],"This groupchat is publicly searchable":["Ez a konferencia nyilvánosan kereshetÅ‘"],"Groupchat info for %1$s":["Konferencia infó számára: %1$s"],"You\'re not allowed to send messages in this room":["Nem regisztrálhatod magad ebben a szobában."],"The conversation has moved. Click below to enter.":["A beszélgetés elköltözött. Kattintson az alábbi gombra, hogy belépjen."],"This groupchat no longer exists":["Ez a szoba nem létezik többé."],"Enter groupchat":["Belépés a konferenciába"],"Please choose your nickname":["Kérjük, válasszon becenevet"],"This groupchat requires a password":["Ez a konferencia jelszót igényel"],"Password: ":["Jelszó: "],"Submit":["Küldés"],"This user is a moderator.":["Ez a felhasználó egy moderátor."],"This user can send messages in this groupchat.":["Ez a felhasználó küldhet üzeneteket a konferenciában."],"This user can NOT send messages in this groupchat.":["Ez a felhasználó NEM küldhet üzeneteket a konferenciában."],"Owner":["Tulajdonos"],"Admin":["Adminisztrátor"],"Member":["Tag"],"Moderator":["Moderátor"],"Visitor":["Látogató"],"Click to mention %1$s in your message.":["Kattintson, hogy megemlÃtse Å‘t: %1$s."],"Participants":["RésztvevÅ‘k"],"%1$s has entered the groupchat":["%1$s belépett a konferenciába"],"%1$s has left the groupchat":["%1$s elhagyta a konferenciát"],"%1$s is now a moderator":["%1$s most már moderátor"],"%1$s is no longer a moderator":["%1$s többé már nem moderátor"],"%1$s has been muted":["%1$s el lett némÃtva"],"Change user\'s affiliation to admin":["A felhasználó adminisztrátorrá tétele"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["A felhasználó szerepének változtatása résztvevÅ‘re"],"Kick user from groupchat":["Felhasználó kirúgása a konferenciából"],"Write in 3rd person":["Ãrjon egyes szám harmadik személyben"],"Grant membership to a user":["Tagság megadása a felhasználónak"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["A felhasználó ne küldhessen üzeneteket"],"Change your nickname":["Becenév módosÃtása"],"Grant moderator role to user":["Moderátori jog adása a felhasználónak"],"Grant ownership of this groupchat":["Konferencia tulajdonjogának megadása"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Konferencia témájának beállÃtása"],"Set groupchat subject (alias for /subject)":["ÃllÃtsa be a konferencia tárgyát (álnév a /tárgynak)"],"Allow muted user to post messages":["ElnémÃtott felhasználók is küldhetnek üzeneteket"],"Configure":[""],"Configure this groupchat":["Konferencia beállÃtása"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["RésztvevÅ‘k listájának elrejtése"],"Forbidden: you do not have the necessary role in order to do that.":["Tilos: nincs meg a szükséges szerepköre, hogy ezt megtehesse."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Tilos: nincs meg a szükséges kapcsolata, hogy ezt megtehesse."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Hiba: a \\"%1$s\\" parancs két argumentumot tartalmaz, a felhasználó becenevét és adott esetben az okát."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["felhasznalo@pelda.hu"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Hiba: érvénytelen számú paraméter"],"This action was done by %1$s.":["Ezt a műveletet végezte: %1$s."],"The reason given is: \\"%1$s\\".":["Ennek ez az oka: \\"%1$s\\"."],"Groupchats":["Konferenciák"],"Add a new groupchat":["Új konferencia létrehozása"],"Query for groupchats":["Konferenciák lekérdezése"],"Announcements":[""],"Notification from %1$s":["ÉrtesÃtÅ‘ üzenet innen: %1$s"],"%1$s says":["%1$s mondja"],"has gone offline":["nem elérhetÅ‘vé vált"],"has gone away":["távol van"],"is busy":["elfoglalt"],"has come online":["elérhetÅ‘ lett"],"wants to be your contact":["szeretne ismerÅ‘söd lenni"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Névjegy"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s NyÃlt Forráskódú %2$s XMPP chat kliens az %3$s Opkode %2$s jóvoltából"],"%1$s Translate %2$s it into your own language":["%1$s LefordÃtani %2$s a saját nyelvére"],"Log out":["Kijelentkezés"],"Click to change your chat status":["Ide kattintva módosÃthatja a csevegési állapotát"],"Show details about this chat client":["További információk a csevegÅ‘ kliensrÅ‘l"],"Your avatar image":["A profilképed"],"Checkbox for selecting the following fingerprint":["JelölÅ‘négyzet az alábbi ujjlenyomat kiválasztására"],"Device without a fingerprint":["Eszköz ujjlenyomat nélkül"],"Other OMEMO-enabled devices":["Más OMEMO-engedélyezett eszközök"],"Checkbox to select fingerprints of all other OMEMO devices":["JelölÅ‘négyzet az összes egyéb OMEMO eszköz ujjlenyomatának kijelöléséhez"],"Remove checked devices and close":["EllenÅ‘rzött eszközök eltávolÃtása és bezárás"],"Select all":["Mindent kijelöl"],"This device\'s OMEMO fingerprint":["Készülékének OMEMO ujjlenyomata"],"Generate new keys and fingerprint":["Új kulcsok és ujjlenyomat létrehozása"],"Your Profile":["Profilod"],"XMPP Address (JID)":["XMPP CÃm (JID)"],"Save and close":["Mentés és bezárás"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Használjon vesszÅ‘ket több szerep szétválasztásához. A szerepek a neved mellett jelennek meg a csevegési üzenetekben."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Sajnáljuk, valami hiba történt a profiladatok mentése közben."],"You can check your browser\'s developer console for any error output.":["EllenÅ‘rizheti a böngészÅ‘ fejlesztÅ‘i konzolt bármilyen hiba kimenet esetén."],"Away":["Távol"],"Busy":["Elfoglalt"],"Custom status":["Egyéni állapot"],"Offline":["Nem elérhetÅ‘"],"Online":["ElérhetÅ‘"],"Away for long":["Hosszú ideje távol"],"Change chat status":["Chat-állapot módosÃtása"],"Personal status message":["Személyes állapot üzenet"],"I am %1$s":["%1$s vagyok"],"Are you sure you want to log out?":["Biztosan ki akar jelentkezni?"],"online":["elérhetÅ‘"],"busy":["elfoglalt"],"away for long":["sokáig távol"],"away":["távol"],"offline":["nem elérhetÅ‘"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sajnálom, nem lehet visszafejteni a kapott OMEMO üzenetet hiba miatt."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["Úgy tűnik, hogy %1$s egyik kliense sem támogatja az OMEMO-t . TitkosÃtott beszélgetés már nem lesz lehetséges ezen a konferencián."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["Ãœzenetek küldése egyszerű szövegként"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Sajnáljuk, de hiba történt az eszközök eltávolÃtása közben."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Biztos, hogy új OMEMO kulcsokat akar létrehozni? Ez eltávolÃtja a régi kulcsait, és minden korábbi titkosÃtott üzenete visszafejthetetlenné válik ezen az eszközön."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sajnáljuk, de nem tudunk elküldeni egy titkosÃtott üzenetet, mivel a %1$s távoli szervere nem található"],"Unable to send an encrypted message due to an unexpected error.":["Nem lehet elküldeni egy titkosÃtott üzenetet egy váratlan hiba miatt."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ez egy OMEMO kódolt üzenet, amelyet az ügyfele úgy tűnik, hogy nem támogatja. További információkat itt talál: https://conversations.im/omemo"]," e.g. conversejs.org":[" pl.: conversejs.org"],"Fetch registration form":["Regisztrációs űrlap"],"Tip: A list of public XMPP providers is available":["Tipp: A nyÃlvános XMPP szolgáltatókról egy lista elérhetÅ‘"],"here":["itt"],"Sorry, we\'re unable to connect to your chosen provider.":["Sajnáljuk, de nem tudunk csatlakozni a választott szolgáltatóhoz."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["A megadott szolgáltató nem támogatja a csevegÅ‘n keresztüli regisztrációt. Próbáljon meg egy másikat."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Valami hiba történt a következÅ‘höz kapcsolódás közben: \\"%1$s\\". Biztos benne, hogy létezik?"],"Now logging you in":["Most bejelentkezel"],"Registered successfully":["Sikeres regisztráció"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["A szolgáltató visszautasÃtotta a regisztrációs kérelmet. Kérem ellenÅ‘rÃzze a bevitt adatok pontosságát."],"Leave this groupchat":["Konferencia elhagyása"],"Click to toggle the list of open groupchats":["Kattintsunk a konferenciák listájára váltáshoz"],"Open Groupchats":["Használatban"],"Are you sure you want to leave the groupchat %1$s?":["Biztosan el akarja hagyni a konferenciát: %1$s?"],"Add":["Hozzáad"],"Add a Contact":["Új névjegy felvétele"],"This contact is busy":["Ez az ismerÅ‘s elfoglalt"],"This contact is online":["Ez az ismerÅ‘s elérhetÅ‘"],"This contact is offline":["Ez az ismerÅ‘s nem elérhetÅ‘"],"This contact is unavailable":["Ez az ismerÅ‘s elérhetetlen"],"This contact is away for an extended period":["Ez az ismerÅ‘s hosszú ideje távol van"],"This contact is away":["Ez az ismerÅ‘s távol van"],"Contact name":["Partner neve"],"Optional nickname":["Választható becenév"],"Sorry, could not find a contact with that name":["Sajnáljuk, de nem találunk csevegÅ‘partnert ezzel a névvel."],"Filter":["SzűrÅ‘"],"Filter by contact name":["Szűrés névjegy szerint"],"Filter by group name":["Szűrés csoport szerint"],"Filter by status":["Szűrés állapot szerint"],"Any":["Bármi"],"Unread":["Olvasatlan"],"Chatty":["Beszédes"],"Extended Away":["Hosszú távollét"],"Click to remove %1$s as a contact":["Kattintson %1$s nevű ismerÅ‘sének eltávolÃtásához"],"Click to accept the contact request from %1$s":["Kattintson %1$s kapcsolatkérésének elfogadásához"],"Click to decline the contact request from %1$s":["Kattintson %1$s kapcsolatkérésének elutasÃtásához"],"Are you sure you want to decline this contact request?":["Valóban elutasÃtja ezt a partnerkérelmet?"],"Contacts":["Kapcsolatok"],"Add a contact":["Új névjegy felvétele"],"Re-sync your contacts":["Újra szinkronizálni a névjegyeket"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[156],{522:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"hu"},"Create your account":["Hozza létre fiókját"],"Please enter the XMPP provider to register with:":["A regisztrációhoz adja meg az XMPP szolgáltatót:"],"Already have a chat account?":["Már van csevegÅ‘fiókja?"],"Log in here":["Bejelentkezés itt"],"Account Registration:":["Fiókregisztráció:"],"Register":["Regisztráció"],"Choose a different provider":["Válasszon egy másik szolgáltatót"],"Hold tight, we\'re fetching the registration form…":["Tartson ki, most kérjük le a regisztrációs űrlapot…"],"Cancel":["Mégse"],"The connection has dropped, attempting to reconnect.":["A kapcsolat megszakadt, megpróbál újra csatlakozni."],"An error occurred while connecting to the chat server.":["Hiba történt a csevegÅ‘kiszolgálóhoz kapcsolódáskor."],"Your XMPP address and/or password is incorrect. Please try again.":["Az XMPP-azonosÃtója vagy jelszava helytelen. Próbálja újra."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sajnáljuk, nem tudtunk csatlakozni a domainhez tartozó XMPP gazdagéphez: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Az XMPP kiszolgáló nem ajánlott fel támogatott hitelesÃtési mechanizmust"],"Undecryptable OMEMO message":["Nem visszafejthetÅ‘ OMEMO üzenet"],"Sorry, could not determine upload URL.":["Sajnáljuk, nem sikerült meghatározni a feltöltési URL-t."],"Sorry, could not determine file upload URL.":["Sajnáljuk, nem sikerült meghatározni a fájl feltöltési URL-jét."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sajnáljuk, a fájlt nem sikerült feltölteni. A kiszolgálója válasza: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Sajnáljuk, a fájlt nem sikerült feltölteni."],"You\'re not allowed to retract your message.":["Nem vonhatja vissza az üzenetét."],"Sorry, an error occurred while trying to retract your message.":["Sajnáljuk, hiba történt az üzenet visszavonásakor."],"You\'re not allowed to send a message.":["Nem küldhet üzenetet."],"Sorry, an error occurred while trying to send your message.":["Sajnáljuk, hiba történt az üzenet elküldésekor."],"Sorry, looks like file upload is not supported by your server.":["Sajnáljuk, úgy tűnik, hogy a kiszolgálója a feltöltést nem támogatja."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["A fájl mérete, %1$s, meghaladja a kiszolgáló által megengedettet, amely %2$s."],"Smileys and emotions":["Mosolyok és érzelmek"],"People":["Emberek"],"Activities":["Tevékenységek"],"Travel":["Utazás"],"Objects":["Tárgyak"],"Animals and nature":["Ãllatok és természet"],"Food and drink":["Étel és ital"],"Symbols":["Szimbólumok"],"Flags":["Zászlók"],"Stickers":["Matricák"],"This groupchat is not anonymous":["Ez a konferencia nem névtelen"],"This groupchat now shows unavailable members":["Ez a konferencia mostantól megjelenÃti az elérhetetlen tagokat"],"This groupchat does not show unavailable members":["Ez a konferencia nem jelenÃti meg az elérhetetlen tagokat"],"The groupchat configuration has changed":["A konferencia beállÃtása megváltozott"],"Groupchat logging is now enabled":["A konferencia naplózása mostantól bekapcsolt"],"Groupchat logging is now disabled":["A konferencia naplózása mostantól kikapcsolt"],"This groupchat is now no longer anonymous":["A konferencia most már nem névtelen"],"This groupchat is now semi-anonymous":["A konferencia most már félig névtelen"],"This groupchat is now fully-anonymous":["A konferencia most már teljesen névtelen"],"A new groupchat has been created":["Létrejött egy új konferencia"],"Your nickname has been automatically set to %1$s":["A beceneve automatikusan ez lett: %1$s"],"Your nickname has been changed to %1$s":["A beceneve a következÅ‘re módosult: %1$s"],"You have been banned from this groupchat":["Ki lett tiltva ebbÅ‘l a konferenciából"],"You have exited this groupchat due to a technical problem":["Műszaki probléma miatt kilépett ebbÅ‘l a konferenciából"],"You have been kicked from this groupchat":["Ki lett rúgva ebbÅ‘l a konferenciából"],"You have been removed from this groupchat because of an affiliation change":["Taglista módosÃtás miatt ki lett léptetve ebbÅ‘l a konferenciából"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Kiléptettük a konferenciából, mert mostantól csak a taglistán szereplÅ‘k lehetnek jelen"],"You have been removed from this groupchat because the service hosting it is being shut down":["Kiléptettük a konferenciából, mert a szolgáltatás leállÃtásra került"],"Your retraction was not delivered because you\'re not present in the groupchat.":["A visszavonása nem lett elküldve, mert nincs jelen a konferenciában."],"Your message was not delivered because you weren\'t allowed to send it.":["Az üzenete nem lett elküldve, mert nem volt hozzá jogosultsága."],"Your message was not delivered because you\'re not present in the groupchat.":["Az üzenete nem lett elküldve, mert nem volt jelen a konferenciában."],"A timeout happened while while trying to retract your message.":["IdÅ‘túllépés történt, amikor megpróbálta visszavonni az üzenetet."],"You\'re not allowed to register yourself in this groupchat.":["Nem regisztrálhatod magad ebben a konferenciában."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nem regisztrálhatod magad ebben a konferenciában, mert meghÃvás alapú."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nem lehet regisztrálni a becenevedet ebben a konferenciában, a regisztrációt nem támogatja."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nem lehet regisztrálni a becenevedet ebben a konferenciában, érvénytelen az űrlap."],"Topic set by %1$s":["Témát beállÃtotta: %1$s"],"Topic cleared by %1$s":["A témát törölte: %1$s"],"%1$s has been banned by %2$s":["%2$s kitiltotta: %1$s"],"%1$s has been banned":["%1$s ki lett tiltva"],"%1$s\'s nickname has changed":["%1$s beceneve módosult"],"%1$s has been kicked out by %2$s":["%2$s kidobta: %1$s"],"%1$s has been kicked out":["%1$s ki lett dobva"],"%1$s has been removed because of an affiliation change":["%1$s el lett távolÃtva, tagság változás miatt"],"%1$s has been removed for not being a member":["%1$s el lett távolÃtva, mert nem volt tag"],"%1$s is no longer an admin of this groupchat":["%1$s már nem admin ebben a konferenciában"],"%1$s is no longer an owner of this groupchat":["%1$s már nem tulajdonos ebben a konferenciában"],"%1$s is no longer banned from this groupchat":["%1$s már nincs kitiltva ebbÅ‘l a konferenciából"],"%1$s is no longer a member of this groupchat":["%1$s már nem tagja ennek a konferenciának"],"%1$s is now a member of this groupchat":["%1$s már tagja ennek a konferenciának"],"%1$s is now an %2$s of this groupchat":["%1$s most már %2$s ebben a konferenciában"],"The nickname you chose is reserved or currently in use, please choose a different one.":["A kiválasztott becenév fenntartva vagy jelenleg használatban van, kérjük, válasszon másikat."],"Password incorrect":["A jelszó helytelen"],"You are not on the member list of this groupchat.":["Nem vagy a konferencia taglistáján."],"You have been banned from this groupchat.":["Ki lettél tiltva ebbÅ‘l a konferenciából."],"You are not allowed to create new groupchats.":["Nem hozhatsz létre új konferenciákat."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["A beceneved nem felel meg a konferencia szabályzatának."],"This groupchat does not (yet) exist.":["Ez a konferencia (még) nem létezik."],"This groupchat has reached its maximum number of participants.":["Ez a konferencia elérte a maximális jelenlévÅ‘k számát."],"Remote server not found":["Távoli kiszolgáló nem található"],"The explanation given is: \\"%1$s\\".":["A kapott magyarázat: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s meghÃvott a(z) %2$s nevű csevegÅ‘szobába"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s meghÃvott a(z) %2$s nevű csevegÅ‘szobába. Indoka: \\"%3$s\\""],"Error":["Hiba"],"Sorry, something went wrong while trying to save your bookmark.":["Sajnáljuk, valami hiba történt a könyvjelzÅ‘ mentése közben."],"Timeout Error":["IdÅ‘túllépési hiba"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["A kiszolgáló nem adta vissza a könyvjelzÅ‘it a megengedett idÅ‘n belül. Újratöltheti az oldalt, hogy újra lekérje Å‘ket."],"My contacts":["CsevegÅ‘partnerek"],"Pending contacts":["FüggÅ‘ csevegÅ‘partnerek"],"Contact requests":["Partnerfelvételi kérések"],"Ungrouped":["Nem csoportosÃtott"],"New messages":["Új üzenetek"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sajnáljuk, hiba történt a(z) %1$s csevegÅ‘partner hozzáadásakor."],"This client does not allow presence subscriptions":["Ez a kliens nem engedélyezi a jelenlét követését"],"Click to hide these contacts":["Kattintson ide a csevegÅ‘partnerek elrejtéséhez"],"Unbookmark this groupchat":["Konferencia könyvjelzÅ‘jének törlése"],"Click to open this groupchat":["Belépés a konferenciába"],"Click to toggle the bookmarks list":["Kattintson a könyvjelzÅ‘k listájára váltáshoz"],"Bookmarks":["KönyvjelzÅ‘k"],"Bookmark this groupchat":["Konferencia megjelölése"],"Would you like this groupchat to be automatically joined upon startup?":["Szeretné ha induláskor automatikusan csatlakozna ehhez a konferenciához?"],"The name for this bookmark:":["A könyvjelzÅ‘ neve legyen:"],"What should your nickname for this groupchat be?":["Mi legyen a beceneve ebben a konferenciában?"],"Save":["Mentés"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Biztosan el szeretné távolÃtani a(z) \\"%1$s\\" könyvjelzÅ‘t?"],"Unbookmark":["KönyvjelzÅ‘ eltávolÃtása"],"Bookmark":["KönyvjelzÅ‘zés"],"Close":["Bezárás"],"OK":["OK"],"Image: ":["Kép: "],"Download audio file \\"%1$s\\"":["„%1$s†hangfájl letöltése"],"Download file \\"%1$s\\"":["„%1$s†fájl letöltése"],"Cancel Editing":["Szerkesztés megszakÃtása"],"Edit":["Szerkesztés"],"Retract":["Visszavonás"],"Message versions":["Ãœzenetverziók"],"Retry":["Újra"],"Uploading file:":["Fájl feltöltése:"],"%1$s has removed this message":["%1$s eltávolÃtotta ezt az üzenetet"],"This message has been edited":["Ez az üzenet szerkesztve van"],"Show more":["Több megjelenÃtése"],"Show less":["Kevesebb megjelenÃtése"],"No message history available.":["Nem található elÅ‘zmény."],"Search results":["Keresés eredménye"],"Search":["Keresés"],"Insert emojis":["Emodzsik beszúrása"],"Send the message":["Ãœzenet elküldése"],"Start a call":["HÃvás indÃtása"],"Message characters remaining":["HátralévÅ‘ karakterek"],"Hide participants":["RésztvevÅ‘k elrejtése"],"Show participants":["RésztvevÅ‘k megjelenÃtése"],"Choose a file to send":["Válasszon egy küldendÅ‘ fájlt"],"Click to write as a normal (non-spoiler) message":["Kattintson normál (nem spoiler) üzenet Ãrásához"],"Click to write your message as a spoiler":["Kattintson spoiler üzenet Ãrásához"],"The User\'s Profile Image":["A felhasználó profilképe"],"Trusted":["MegbÃzható"],"Untrusted":["MegbÃzhatatlan"],"OMEMO Fingerprints":["OMEMO ujjlenyomatok"],"No OMEMO-enabled devices found":["Nem található OMEMO-képes eszköz"],"Remove as contact":["EltávolÃtás a csevegÅ‘partnerekbÅ‘l"],"XMPP Address":["XMPP-cÃm"],"Email":["E-mail"],"Full Name":["Teljes név"],"Nickname":["Becenév"],"Refresh":["FrissÃtés"],"Role":["Szerepkör"],"URL":["URL"],"%1$s is typing":["%1$s éppen Ãr"],"%1$s has stopped typing":["%1$s abbahagyta a gépelést"],"%1$s has gone away":["%1$s távol van"],"Remove messages":["Ãœzenetek törlése"],"Close this chat":["CsevegÅ‘ablak bezárása"],"Write in the third person":["Ãrjon egyes szám harmadik személyben"],"Show this menu":["Mutasd a menüt"],"Hidden message":["Rejtett üzenet"],"Message":["Ãœzenet"],"Optional hint":["Választható tipp"],"You have unread messages":["Olvasatlan üzenetei vannak"],"Details":["Részletek"],"See more information about this person":["További információk errÅ‘l a személyrÅ‘l"],"Close and end this conversation":["Bezárás és a beszélgetés befejezése"],"Sorry, the connection has been lost, and your message could not be sent":["Sajnáljuk, a kapcsolat elveszett, és az üzenet nem küldhetÅ‘ el"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Vegye figyelembe, hogy más XMPP/Jabber kliensek (és kiszolgálók) még lehet, hogy nem támogatják a visszavonást, Ãgy lehet, hogy az üzenet nem lesz mindenhonnan eltávolÃtva."],"Are you sure you want to retract this message?":["Valóban visszavonja ezt az üzenetet?"],"Confirm":["MegerÅ‘sÃtés"],"You have an unsent message which will be lost if you continue. Are you sure?":["Van egy el nem küldött üzenete, amely elvész ha folytatja. Biztos benne?"],"Are you sure you want to clear the messages from this conversation?":["Valóban törölni szeretné az ebbÅ‘l a beszélgetésbÅ‘l származó üzeneteket?"],"%1$s has gone offline":["%1$s nem elérhetÅ‘vé vált"],"%1$s is busy":["%1$s elfoglalt"],"%1$s is online":["%1$s elérhetÅ‘"],"Sorry, something went wrong while trying to refresh":["Sajnáljuk, valami hiba történt frissÃtés közben"],"Are you sure you want to remove this contact?":["Valóban törölni szeretné ezt a csevegÅ‘partnert?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sajnáljuk, hiba történt %1$s eltávolÃtásakor a csevegÅ‘partnerek közül."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["A teljesÃtmény javÃtása érdekében a böngészÅ‘ben tároljuk az adatokat. Törölje a jelölÅ‘négyzetet, ha ez nyilvános számÃtógép vagy ha törölni kÃvánja adatait, amikor kijelentkezik. Fontos, hogy kifejezetten jelentkezzen ki, mert elÅ‘fordulhat, hogy nem az összes tárolt adat törlÅ‘dik. Kérjük, vegye figyelembe, ha nem megbÃzható eszközt használ, hogy az OMEMO titkosÃtás nem elérhetÅ‘."],"This is a trusted device":["Ez egy megbÃzható eszköz"],"Password":["Jelszó"],"Create an account":["Fiók létrehozása"],"Don\'t have a chat account?":["Nincs csevegÅ‘fiókja?"],"Log in":["Bejelentkezés"],"Disconnected":["Szétkapcsolva"],"Click here to log in anonymously":["Kattintson ide a névtelen bejelentkezéshez"],"Username":["Felhasználónév"],"user@domain":["felhasználó@tartomány"],"Please enter a valid XMPP address":["Kérjük, adjon meg érvényes XMPP cÃmet"],"Chat Contacts":["CsevegÅ‘partnerek"],"Toggle chat":["CsevegÅ‘ablak"],"Click to restore this chat":["A csevegés visszaállÃtása"],"Minimized":["Minimalizálva"],"Minimize":["Minimalizálás"],"Minimize this chat":["Csevegés minimalizálása"],"Minimize this groupchat":["Konferencia minimalizálása"],"This user is a moderator.":["Ez a felhasználó egy moderátor."],"This user can send messages in this groupchat.":["Ez a felhasználó küldhet üzeneteket a konferenciában."],"This user can NOT send messages in this groupchat.":["Ez a felhasználó NEM küldhet üzeneteket a konferenciában."],"Owner":["Tulajdonos"],"Admin":["Adminisztrátor"],"Member":["Tag"],"Moderator":["Moderátor"],"Visitor":["Látogató"],"Click to mention %1$s in your message.":["Kattintson, hogy megemlÃtse Å‘t: %1$s."],"Participants":["RésztvevÅ‘k"],"This field is required":["Ez a mezÅ‘ kötelezÅ‘"],"Join":["Csatlakozás"],"Enter a new Groupchat":["Adjon meg új Konferenciát"],"name@conference.example.org":["név@konferencia.példa.hu"],"Groupchat name":["Konferencia neve"],"Groupchat address":["Konferencia cÃme"],"Groupchat id is invalid.":["A konferenciaazonosÃtó érvénytelen."],"Invite":["MeghÃvás"],"Invite someone to this groupchat":["Valaki meghÃvása ebbe a konferenciába"],"user@example.org":["felhasznalo@example.org"],"Optional reason for the invitation":["MeghÃvás oka (nem kötelezÅ‘)"],"Show groupchats":["Konferenciák mutatása"],"Server address":["Kiszolgáló cÃme"],"Show more information on this groupchat":["További információk a konferenciáról"],"Query for Groupchats":["Konferenciák lekérdezése"],"Description:":["LeÃrás:"],"Groupchat Address (JID):":["Konferencia cÃme (JID):"],"Participants:":["RésztvevÅ‘k:"],"Features:":["JellemzÅ‘k:"],"Requires authentication":["AzonosÃtás szükséges"],"Hidden":["Rejtett"],"Requires an invitation":["MeghÃvás szükséges"],"Moderated":["Moderált"],"Non-anonymous":["NEM névtelen"],"Open":["Nyitott"],"Permanent":["Ãllandó"],"Public":["Nyilvános"],"Semi-anonymous":["Félig névtelen"],"Temporary":["Ideiglenes"],"Unmoderated":["Moderálatlan"],"conference.example.org":["konferencia@pelda.hu"],"Groupchats found":["Konferenciák találhatók"],"No groupchats found":["Nem találhatók szobák"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["A moderátorok olyan kiemelt felhasználók, akik módosÃthatják más felhasználók szerepköreit (kivéve az admin vagy tulajdonosi szintűekét)."],"The default role, implies that you can read and write messages.":["Az alapértelmezett szerepkör, azt jelenti, hogy üzeneteket olvashat és Ãrhat."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["A látogatók nem Ãrhatnak üzeneteket moderált többfelhasználós csevegÅ‘szobákba."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["A tulajdonos a legmagasabb szintű. A tulajdonosok módosÃthatják az összes felhasználó szintjét és szerepköreit."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Az admin a második legmagasabb szint. Az adminok módosÃthatják a többi felhasználó szintjét és szerepköreiket, kivéve a tulajdonosokét."],"To ban a user, you give them the affiliation of \\"outcast\\".":["A felhasználó kitiltásához állÃtsa be a „számkivetett†szintet."],"Change role":["Szerepkör módosÃtása"],"New Role":["Új szerepkör"],"Reason":["Ok"],"Change affiliation":["Szint módosÃtása"],"New affiliation":["Új szint"],"Affiliation":["Szint"],"Moderator Tools":["Moderátori eszközök"],"No users with that affiliation found.":["Nem található szint nélküli felhasználó."],"No users with that role found.":["Nincs felhasználó azzal a szerepkörrel."],"Type here to filter the search results":["Gépeljen ide a találatok szűréséhez"],"Show users":["Felhasználók megjelenÃtése"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["A szerepkörök a felhasználókhoz rendeltek, és különbözÅ‘ lehetÅ‘ségeket engedélyeznek vagy tiltanak le a többfelhasználós csevegésekben. Kiosztásuk explicit, vagy szint alapján implicit. Azok a szerepkörök, melyek nem a szintbÅ‘l fakadnak, csak a felhasználó munkamenetének idejére érvényesek."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["A szint egy hosszú életű jogosultság, amely általában bizonyos szerepkört takar, amely kiváltságokat és felelÅ‘sségeket ad. Például az adminok és tulajdonosok automatikusan rendelkeznek a moderátor szerepkörrel."],"Timeout error while trying to set the affiliation":["IdÅ‘túllépési hiba történt a szint beállÃtásakor"],"Sorry, you\'re not allowed to make that change":["Sajnáljuk, nem teheti meg ezt a módosÃtást"],"Sorry, something went wrong while trying to set the affiliation":["Sajnáljuk, hiba történt a szint beállÃtásakor"],"Affiliation changed":["Szint megváltozott"],"Role changed":["Szerepkör megváltozott"],"You\'re not allowed to make that change":["Nem végezheti el ezt a módosÃtást"],"Sorry, something went wrong while trying to set the role":["Sajnáljuk, valami hiba történt a szerepkör beállÃtásakor"],"Topic":["Témakör"],"Topic author":["Téma szerzÅ‘"],"Groupchat address (JID)":["Konferencia cÃme (JID)"],"Message archiving":["Ãœzenetarchiválás"],"Messages are archived on the server":["Ãœzenetek archiválva vannak a kiszolgálón"],"Description":["LeÃrás"],"Features":["JellemzÅ‘k"],"This groupchat is not publicly searchable":["Ez a konferencia nyilvánosan nem kereshetÅ‘"],"This groupchat is restricted to members only":["Ez a konferencia kizárólag tagoknak szól"],"Members only":["Csak tagoknak"],"Participants entering this groupchat need to request permission to write":["A belépÅ‘ résztvevÅ‘knek engedélyt kell kérni, hogy Ãrhassanak"],"Name":["Név"],"This groupchat does not require a password upon entry":["Ez a konferencia nem igényel jelszót belépéskor"],"No password required":["Nem szükséges jelszó"],"Not anonymous":["Nem névtelen"],"All other groupchat participants can see your XMPP address":["Minden konferencia-résztvevÅ‘ láthatja az XMPP felhasználónevét"],"Not moderated":["Moderálatlan"],"Participants entering this groupchat can write right away":["A belépÅ‘ résztvevÅ‘k egybÅ‘l Ãrhatnak is ide"],"Online users":["JelenlevÅ‘k"],"Anyone can join this groupchat":["Bárki csatlakozhat a konferenciához"],"This groupchat requires a password before entry":["A konferenciába belépéshez jelszó szükséges"],"Password protected":["Jelszóval védve"],"Persistent":["Ãllandó"],"This groupchat persists even if it\'s unoccupied":["Ez a konferencia akkor is fennmarad, ha üres"],"Only moderators can see your XMPP address":["Csak a moderátorok láthatják az Ön XMPP felhasználónevét"],"This groupchat will disappear once the last person leaves":["Ez a konferencia eltűnik, amint az utolsó ember elhagyja"],"This groupchat is publicly searchable":["Ez a konferencia nyilvánosan kereshetÅ‘"],"Groupchat info for %1$s":["Konferencia infó számára: %1$s"],"You\'re not allowed to send messages in this room":["Nem küldhet üzeneteket ebben a szobában"],"The conversation has moved. Click below to enter.":["A beszélgetés elköltözött. Kattintson az alábbi gombra, hogy belépjen."],"This groupchat no longer exists":["Ez a konferencia már nem létezik"],"Hide the groupchat topic":["A konferencia témájának elrejtése"],"This groupchat is bookmarked":["Ez a konferencia könyvjelzÅ‘zött"],"Enter groupchat":["Belépés a konferenciába"],"Choose a nickname to enter":["Válasszon egy becenevet a belépéshez"],"Please choose your nickname":["Kérjük, válasszon becenevet"],"This groupchat requires a password":["Ez a konferencia jelszót igényel"],"Password: ":["Jelszó: "],"Submit":["Küldés"],"%1$s has entered the groupchat":["%1$s belépett a konferenciába"],"%1$s has left the groupchat":["%1$s elhagyta a konferenciát"],"%1$s is now a moderator":["%1$s most már moderátor"],"%1$s is no longer a moderator":["%1$s többé már nem moderátor"],"%1$s has been given a voice":["%1$s hangot kapott"],"%1$s has been muted":["%1$s el lett némÃtva"],"%1$s and %2$s":["%1$s és %2$s"],"%1$s are typing":["%1$s gépel"],"%1$s have stopped typing":["%1$s abbahagyta a gépelést"],"%1$s have gone away":["%1$s távol van"],"%1$s have entered the groupchat":["%1$s belépett a konferenciába"],"%1$s have left the groupchat":["%1$s elhagyta a konferenciát"],"%1$s are now moderators":["%1$s most már moderátor"],"%1$s are no longer moderators":["%1$s többé már nem moderátor"],"%1$s have been given voices":["%1$s újra hangot kapott"],"%1$s have been muted":["%1$s el lett némÃtva"],"Change user\'s affiliation to admin":["A felhasználó adminisztrátorrá tétele"],"Ban user by changing their affiliation to outcast":["A felhasználó kitiltása a szintjének számkivetettre állÃtásával"],"Clear the chat area":["CsevegÅ‘terület törlése"],"Close this groupchat":["Konferencia bezárása"],"Change user role to participant":["A felhasználó szerepének változtatása résztvevÅ‘re"],"Remove this groupchat":["Konferencia eltávolÃtása"],"Kick user from groupchat":["Felhasználó kirúgása a konferenciából"],"Write in 3rd person":["Ãrjon egyes szám harmadik személyben"],"Grant membership to a user":["Tagság megadása a felhasználónak"],"Opens up the moderator tools GUI":["Megnyitja a moderátori eszközök felületét"],"Remove user\'s ability to post messages":["A felhasználó ne küldhessen üzeneteket"],"Change your nickname":["Becenév módosÃtása"],"Grant moderator role to user":["Moderátori jog adása a felhasználónak"],"Grant ownership of this groupchat":["Konferencia tulajdonjogának megadása"],"Register your nickname":["Becenév regisztrációja"],"Revoke the user\'s current affiliation":["A felhasználó jelenlegi szintjének visszavonása"],"Set groupchat subject":["Konferencia témájának beállÃtása"],"Set groupchat subject (alias for /subject)":["ÃllÃtsa be a konferencia tárgyát (álnév a /tárgynak)"],"Allow muted user to post messages":["ElnémÃtott felhasználók is küldhetnek üzeneteket"],"You are about to retract this message.":["Az üzenet visszavonására készül."],"You may optionally include a message, explaining the reason for the retraction.":["Hozzáadhat egy üzenetet, amelyben leÃrhatja a visszavonás okát."],"Message Retraction":["Ãœzenetvisszavonás"],"Optional reason":["Nem kötelezÅ‘ ok"],"Sorry, you\'re not allowed to retract this message":["Sajnáljuk, nem vonhatja vissza ezt az üzenetet"],"A timeout occurred while trying to retract the message":["IdÅ‘túllépés történt az üzenet visszavonásakor"],"Sorry, you\'re not allowed to retract this message.":["Nem vonhatja vissza ezt az üzenetet."],"Show more information about this groupchat":["További információk megjelenÃtése a konferenciáról"],"Configure":["BeállÃtás"],"Configure this groupchat":["Konferencia beállÃtása"],"Invite someone to join this groupchat":["Valaki meghÃvása ebbe a konferenciába"],"Show topic":["Téma megjelenÃtése"],"Hide topic":["Téma elrejtése"],"Show the topic message in the heading":["A témaüzenet megjelenÃtése a fejlécben"],"Hide the topic in the heading":["A téma elrejtése a fejlécben"],"Moderate":["Moderálás"],"Moderate this groupchat":["Konferencia moderálása"],"Destroy":["Törlés"],"Leave":["Kilépés"],"Leave and close this groupchat":["Kilépés és a konferencia bezárása"],"Are you sure you want to leave this groupchat?":["Valóban el akarja hagyni ezt a konferenciát?"],"Hide the list of participants":["RésztvevÅ‘k listájának elrejtése"],"Forbidden: you do not have the necessary role in order to do that.":["Tilos: nincs meg a szükséges szerepköre, hogy ezt megtehesse."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Tilos: nincs meg a szükséges kapcsolata, hogy ezt megtehesse."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Hiba: a „%1$s†parancs két argumentumot fogad, a felhasználó becenevét és adott esetben az okát."],"Error: couldn\'t find a groupchat participant based on your arguments":["Hiba: nem található konferencia résztvevÅ‘ az argumentumok alapján"],"Error: found multiple groupchat participant based on your arguments":["Hiba: több, az argumentumoknak megfelelÅ‘ konferencia-résztvevÅ‘ is található"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Nem található résztvevÅ‘ ezzel a becenévvel. Lehet hogy elhagyta a konferenciát."],"Sorry, an error happened while running the command.":["Sajnáljuk, valami hiba történt a parancs futtatásakor."],"Check your browser\'s developer console for details.":["Részletekért nézze meg a böngészÅ‘ fejlesztÅ‘i konzolját."],"Are you sure you want to destroy this groupchat?":["Valóban törölni akarja ezt a konferenciát?"],"Please enter the XMPP address of this groupchat to confirm":["A megerÅ‘sÃtéshez adja meg a konferencia XMPP-cÃmét"],"name@example.org":["felhasznalo@pelda.hu"],"Optional reason for destroying this groupchat":["Nem kötelezÅ‘ indok a konferencia megszüntetéséhez"],"Optional XMPP address for a new groupchat that replaces this one":["Nem kötelezÅ‘ XMPP-cÃm az új konferenciához, amely leváltja ezt"],"replacement@example.org":["felhasznalo@example.org"],"Your nickname is \\"%1$s\\"":["A beceneve „%1$sâ€"],"Error: invalid number of arguments":["Hiba: érvénytelen számú paraméter"],"This action was done by %1$s.":["Ezt a műveletet végezte: %1$s."],"The reason given is: \\"%1$s\\".":["Ennek ez az oka: \\"%1$s\\"."],"Groupchats":["Konferenciák"],"Add a new groupchat":["Új konferencia létrehozása"],"Query for groupchats":["Konferenciák lekérdezése"],"Sorry, an error occurred while trying to submit the config form.":["Sajnáljuk, hiba történt a beállÃtási űrlap elküldésekor."],"Close these announcements":["Ezen bejelentések bezárása"],"Announcements":["Bejelentések"],"Click to open this server message":["Kattintson a kiszolgálóüzenet megnyitásához"],"Notification from %1$s":["ÉrtesÃtÅ‘ üzenet innen: %1$s"],"%1$s says":["%1$s mondja"],"Encrypted message received":["TitkosÃtott üzenet fogadva"],"has gone offline":["nem elérhetÅ‘vé vált"],"has gone away":["távol van"],"is busy":["elfoglalt"],"has come online":["elérhetÅ‘ lett"],"wants to be your contact":["szeretne a csevegÅ‘partnere lenni"],"Hide":["Elrejtés"],"Execute":["Végrehajtás"],"On which entity do you want to run commands?":["Melyik entitáson akarja futtatni a parancsokat?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Egyes XMPP-szolgáltatások és entitások megengedik, hogy az arra jogosult felhasználók alkalmi parancsokat futtassanak rajtuk."],"Commands found":["Talált parancsok"],"List available commands":["ElérhetÅ‘ parancsok felsorolása"],"No commands found":["Nem találhatók parancsok"],"Sorry, an error occurred while looking for commands on that entity.":["Sajnáljuk, hiba történt az entitás parancsainak keresésekor."],"The specified entity doesn\'t support ad-hoc commands":["A megadott entitás nem támogatja az alkalmi parancsokat"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Sajnáljuk, hiba történt a parancs végrehajtásakor. A részletekért nézze meg a böngészÅ‘ fejlesztÅ‘i konzolját."],"About":["Névjegy"],"Commands":["Parancsok"],"Settings":["BeállÃtások"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s nyÃlt forráskódú %2$s XMPP csevegÅ‘kliens az %3$s Opkode %2$s jóvoltából"],"%1$s Translate %2$s it into your own language":["%1$s FordÃtsa le %2$s a saját nyelvére"],"Log out":["Kijelentkezés"],"Click to change your chat status":["Ide kattintva módosÃthatja a csevegési állapotát"],"Show details about this chat client":["További információk a csevegÅ‘ kliensrÅ‘l"],"Your avatar image":["A profilképed"],"Checkbox for selecting the following fingerprint":["JelölÅ‘négyzet az alábbi ujjlenyomat kiválasztására"],"Device without a fingerprint":["Eszköz ujjlenyomat nélkül"],"Checkbox for selecting the following device":["JelölÅ‘négyzet a következÅ‘ eszköz kiválasztására"],"Other OMEMO-enabled devices":["Más OMEMO-engedélyezett eszközök"],"Checkbox to select fingerprints of all other OMEMO devices":["JelölÅ‘négyzet az összes egyéb OMEMO eszköz ujjlenyomatának kijelöléséhez"],"Remove checked devices and close":["EllenÅ‘rzött eszközök eltávolÃtása és bezárás"],"Select all":["Mindent kijelöl"],"This device\'s OMEMO fingerprint":["Készülékének OMEMO ujjlenyomata"],"Generate new keys and fingerprint":["Új kulcsok és ujjlenyomat létrehozása"],"Your Profile":["Profilod"],"XMPP Address (JID)":["XMPP CÃm (JID)"],"Save and close":["Mentés és bezárás"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Használjon vesszÅ‘ket több szerep szétválasztásához. A szerepek a neved mellett jelennek meg a csevegési üzenetekben."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Sajnáljuk, valami hiba történt a profiladatok mentése közben."],"You can check your browser\'s developer console for any error output.":["EllenÅ‘rizheti a böngészÅ‘ fejlesztÅ‘i konzolt bármilyen hiba kimenet esetén."],"Away":["Távol"],"Busy":["Elfoglalt"],"Custom status":["Egyéni állapot"],"Offline":["Nem elérhetÅ‘"],"Online":["ElérhetÅ‘"],"Away for long":["Hosszú ideje távol"],"Change chat status":["Chat-állapot módosÃtása"],"Personal status message":["Személyes állapot üzenet"],"I am %1$s":["%1$s vagyok"],"Are you sure you want to log out?":["Biztosan ki akar jelentkezni?"],"online":["elérhetÅ‘"],"busy":["elfoglalt"],"away for long":["sokáig távol"],"away":["távol"],"offline":["nem elérhetÅ‘"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sajnáljuk, egy hiba miatt nem lehet visszafejteni a kapott OMEMO üzenetet."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Sajnáljuk, nem lehet visszafejteni a kapott OMEMO üzenetet, mert nincs meg a JID ahhoz a felhasználóhoz."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["Úgy tűnik, hogy %1$s egyik kliense sem támogatja az OMEMO-t . TitkosÃtott beszélgetés már nem lesz lehetséges ezen a konferencián."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Nem használható végpontok közötti titkosÃtás ebben a konferenciában, vagy a konferencia vagy anonim, vagy nem minden résztvevÅ‘ támogatja az OMEMO-t."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Nem használható végpontok közötti titkosÃtás, mert %1$s olyan klienset használ, ami nem támogatja az OMEMO-t."],"Messages are being sent in plaintext":["Ãœzenetek küldése egyszerű szövegként"],"Messages are sent encrypted":["Az üzenetek titkosÃtva lesznek elküldve"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Ennek a konferenciának csak a tagokat szabad engedélyeznie, és nem lehet anonim ahhoz, hogy támogassa az OMEMO-val titkosÃtott üzeneteket"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Sajnáljuk, de nem lehet elküldeni egy titkosÃtott üzenetet, mert %1$s megköveteli, hogy iratkozzon fel a jelenlétére ahhoz, hogy lássa az OMEMO-információit"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sajnáljuk, de nem lehet elküldeni egy titkosÃtott üzenetet, mert %1$s távoli kiszolgálója nem található"],"Unable to send an encrypted message due to an unexpected error.":["Nem lehet elküldeni egy titkosÃtott üzenetet egy váratlan hiba miatt."],"Sorry, an error occurred while trying to remove the devices.":["Sajnáljuk, hiba történt az eszközök eltávolÃtásakor."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Biztos, hogy új OMEMO kulcsokat akar létrehozni? Ez eltávolÃtja a régi kulcsait, és minden korábbi titkosÃtott üzenete visszafejthetetlenné válik ezen az eszközön."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Sajnáljuk, nem található eszköz, amire OMEMO-val titkosÃtott üzenetet lehet küldeni."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ez egy OMEMO kódolt üzenet, amelyet az ügyfele úgy tűnik, hogy nem támogatja. További információkat itt talál: https://conversations.im/omemo"]," e.g. conversejs.org":[" pl.: conversejs.org"],"Fetch registration form":["Regisztrációs űrlap"],"Tip: A list of public XMPP providers is available":["Tipp: A nyÃlvános XMPP szolgáltatókról egy lista elérhetÅ‘"],"here":["itt"],"Sorry, we\'re unable to connect to your chosen provider.":["Sajnáljuk, de nem tudunk csatlakozni a választott szolgáltatóhoz."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["A megadott szolgáltató nem támogatja a csevegÅ‘n keresztüli regisztrációt. Próbáljon meg egy másikat."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Valami hiba történt a következÅ‘höz kapcsolódás közben: \\"%1$s\\". Biztos benne, hogy létezik?"],"Now logging you in":["Most bejelentkezel"],"Registered successfully":["Sikeres regisztráció"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["A szolgáltató visszautasÃtotta a regisztrációs kérelmet. Kérem ellenÅ‘rÃzze a bevitt adatok pontosságát."],"Leave this groupchat":["Konferencia elhagyása"],"Click to toggle the list of open groupchats":["Kattintsunk a konferenciák listájára váltáshoz"],"Open Groupchats":["Használatban"],"Are you sure you want to leave the groupchat %1$s?":["Biztosan el akarja hagyni a konferenciát: %1$s?"],"Add":["Hozzáadás"],"Add a Contact":["Új csevegÅ‘partner hozzáadása"],"This contact is busy":["Ez a csevegÅ‘partner elfoglalt"],"This contact is online":["Ez az ismerÅ‘s elérhetÅ‘"],"This contact is offline":["Ez az ismerÅ‘s nem elérhetÅ‘"],"This contact is unavailable":["Ez az ismerÅ‘s elérhetetlen"],"This contact is away for an extended period":["Ez az ismerÅ‘s hosszú ideje távol van"],"This contact is away":["Ez az ismerÅ‘s távol van"],"Contact name":["Partner neve"],"Optional nickname":["Választható becenév"],"Sorry, could not find a contact with that name":["Sajnáljuk, nem található csevegÅ‘partnert ezzel a névvel"],"This contact has already been added":["Ez a csevegÅ‘partner már hozzá lett adva"],"Filter":["SzűrÅ‘"],"Filter by contact name":["Szűrés névjegy szerint"],"Filter by group name":["Szűrés csoport szerint"],"Filter by status":["Szűrés állapot szerint"],"Any":["Bármi"],"Unread":["Olvasatlan"],"Chatty":["Beszédes"],"Extended Away":["Hosszú távollét"],"Click to remove %1$s as a contact":["Kattintson %1$s nevű ismerÅ‘sének eltávolÃtásához"],"Click to accept the contact request from %1$s":["Kattintson %1$s kapcsolatkérésének elfogadásához"],"Click to decline the contact request from %1$s":["Kattintson %1$s kapcsolatkérésének elutasÃtásához"],"Click to chat with %1$s (XMPP address: %2$s)":["Kattintson a csevegéshez a következÅ‘vel: %1$s (XMPP-cÃm: %2$s)"],"Are you sure you want to decline this contact request?":["Valóban elutasÃtja ezt a partnerkérelmet?"],"Contacts":["Kapcsolatok"],"Add a contact":["Új névjegy felvétele"],"Re-sync your contacts":["Újra szinkronizálni a névjegyeket"]}}}')}}]); //# sourceMappingURL=hu-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/id-LC_MESSAGES-converse-po.js b/src/conversejs/locales/id-LC_MESSAGES-converse-po.js index df52c4d66ab9ec57d7e4df4e94638949dcba0ef9..42e2f242f84e0e20924e15949b6f9817afacd292 100644 --- a/src/conversejs/locales/id-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/id-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{435:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"id"},"Create your account":["Buat akun anda"],"Please enter the XMPP provider to register with:":["Silakan masukkan penyedia XMPP untuk mendaftar:"],"Already have a chat account?":["Sudah punya akun obrolan?"],"Log in here":["Masuk disini"],"Account Registration:":["Pendaftaran Akun:"],"Register":["Daftar"],"Choose a different provider":["Pilih penyedia yang berbeda"],"Hold tight, we\'re fetching the registration form…":["Pegang erat-erat, kami mengambil formulir pendaftaran …"],"Cancel":["Batal"],"The connection has dropped, attempting to reconnect.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":["Smileys dan emotions"],"People":["Orang"],"Activities":["Aktifitas"],"Travel":["Perjalanan"],"Objects":["Obyek"],"Animals and nature":["Hewan dan alam"],"Food and drink":["Makanan dan minuman"],"Symbols":["Simbol"],"Flags":["Bendera"],"Stickers":["Stiker"],"This groupchat is not anonymous":["Obrolan grup ini tidak anonim"],"This groupchat now shows unavailable members":["Obrolan grup ini sekarang menampilkan anggota yang tidak tersedia"],"This groupchat does not show unavailable members":["Obrolan grup ini tidak menunjukkan anggota yang tidak tersedia"],"The groupchat configuration has changed":["Konfigurasi obrolan grup telah berubah"],"Groupchat logging is now enabled":["Log masuk Obrolan Group tidak diaktifkan"],"Groupchat logging is now disabled":["Log masuk Obrolan Group sekarang dinonaktifkan"],"This groupchat is now no longer anonymous":["Obrolan grup ini sekarang tidak lagi anonim"],"This groupchat is now semi-anonymous":["Obrolan grup ini sekarang semi-anonim"],"This groupchat is now fully-anonymous":["Obrolan grup ini sekarang sepenuhnya anonim"],"A new groupchat has been created":["Obrolan grup baru telah dibuat"],"Your nickname has been automatically set to %1$s":["Nama panggilan Anda telah ditetapkan secara otomatis ke %1$s"],"Your nickname has been changed to %1$s":["Nama panggilan Anda telah diubah menjadi %1$s"],"You have been banned from this groupchat":["Anda telah diblokir dari obrolan grup ini"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["Simpan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["Tutup"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Versi pesan"],"Retry":[""],"Uploading file:":["Mengunggah berkas:"],"This message has been edited":["Pesan ini telah diubah"],"Show more":[""],"No message history available.":["Riwayat pesan tidak tersedia."],"Search results":["Hasil pencarian"],"Search":["Cari"],"Insert emojis":[""],"Send the message":["Mengirim pesan ini"],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Gambar profil pengguna"],"Trusted":["Dipercaya"],"Untrusted":["Tidak dipercaya"],"OMEMO Fingerprints":["Sidik Jari OMEMO"],"Remove as contact":["Hapus dari kontak"],"XMPP Address":["Alamat XMPP"],"Email":[""],"Full Name":[""],"Nickname":["Nama panggilan"],"Refresh":["Segarkan"],"Role":["Peran"],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Untuk meningkatkan kinerja, kami menyimpan data Anda di browser ini. Hapus centang kotak ini jika ini adalah komputer umum atau jika Anda ingin data Anda dihapus saat Anda logout. Penting bagi Anda untuk keluar secara eksplisit, jika tidak, tidak semua data yang di-cache mungkin dihapus. Harap dicatat, saat menggunakan perangkat yang tidak dipercaya, enkripsi OMEMO TIDAK tersedia."],"This is a trusted device":["Ini adalah perangkat tepercaya"],"Create an account":["Buat akun"],"Don\'t have a chat account?":["Belum punya akun obrolan?"],"Log in":["Masuk"],"Disconnected":[""],"Click here to log in anonymously":["Klik disini untuk masuk secara anonim"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This field is required":["Kolom ini harus diisi"],"Join":["Gabung"],"Enter a new Groupchat":["Masukan Grup chat baru"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Invite":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["Tersembunyi"],"Requires an invitation":[""],"Moderated":["Dimoderasi"],"Non-anonymous":[""],"Open":["Buka"],"Permanent":[""],"Public":["Publik"],"Semi-anonymous":["Semi-anonim"],"Temporary":["Sementara"],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderator adalah pengguna istimewa yang dapat mengubah peran pengguna lain (kecuali yang memiliki admin atau afiliasi pemilik."],"The default role, implies that you can read and write messages.":["Peran default, menyiratkan bahwa Anda dapat membaca dan menulis pesan."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Pengunjung tidak diperbolehkan menulis pesan dalam obrolan multi-pengguna yang dimoderasi."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Pemilik adalah afiliasi tertinggi. Pemilik dapat mengubah peran dan afiliasi dari semua pengguna lain."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin adalah afiliasi tertinggi kedua. Admin dapat mengubah peran dan afiliasi semua pengguna lain kecuali pemilik."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Untuk mencekal pengguna, Anda memberi mereka afiliasi “terbuangâ€."],"Change role":["Rubah peran"],"New Role":["Peran baru"],"Reason":["Alasan"],"Change affiliation":["Rubah afiliasi"],"New affiliation":["Afiliasi baru"],"Affiliation":["Afiliasi"],"Moderator Tools":["Alat Moderator"],"No users with that affiliation found.":["Tidak ada pengguna dengan afiliasi itu ditemukan."],"No users with that role found.":["Tidak ada pengguna dengan peran itu ditemukan."],"Type here to filter the search results":[""],"Show users":["Tampilkan pengguna"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Peran diberikan kepada pengguna untuk memberikan atau menolak kemampuan tertentu mereka dalam obrolan multi-pengguna. Mereka ditugaskan baik secara eksplisit maupun implisit sebagai bagian dari afiliasi. Peran yang bukan karena afiliasi, hanya berlaku selama durasi sesi pengguna."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Afiliasi adalah hak yang berumur panjang yang biasanya menyiratkan peran tertentu dan yang memberikan hak istimewa dan tanggung jawab. Misalnya admin dan pemilik secara otomatis memiliki peran moderator."],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["Topik"],"Topic author":["Penulis topik"],"Groupchat address (JID)":["Alamat Obrolan Grup"],"Message archiving":["Pengarsipan pesan"],"Messages are archived on the server":["Pesan diarsipkan di server"],"Description":["Keterangan"],"Features":["Fitur"],"This groupchat is not publicly searchable":["Obrolan grup ini tidak dapat ditelusuri untuk umum"],"This groupchat is restricted to members only":["Obrolan grup ini terbatas hanya untuk anggota"],"Members only":["Hanya anggota"],"Participants entering this groupchat need to request permission to write":["Peserta yang memasuki groupchat ini perlu meminta izin untuk menulis"],"Name":["Nama"],"This groupchat does not require a password upon entry":["Obrolan grup ini tidak memerlukan kata sandi saat masuk"],"No password required":["Tidak diperlukan kata sandi"],"Not anonymous":["Bukan anonim"],"All other groupchat participants can see your XMPP address":["Semua peserta groupchat lainnya dapat melihat alamat XMPP Anda"],"Not moderated":["Tidak dimoderasi"],"Participants entering this groupchat can write right away":["Peserta yang memasuki obrolan grup ini dapat langsung menulis"],"Online users":["Pengguna Online"],"Anyone can join this groupchat":["Siapa pun dapat bergabung dengan obrolan grup ini"],"This groupchat requires a password before entry":["Obrilan grup ini membutuhkan kata sandi untuk masuk"],"Password protected":["Dilindungi kata sandi"],"Persistent":["Tetap ada"],"This groupchat persists even if it\'s unoccupied":["Obrolan grup ini tetap ada meskipun tidak dihuni"],"Only moderators can see your XMPP address":["Hanya moderator yang dapat melihat alamat XMPP Anda"],"This groupchat will disappear once the last person leaves":["Obrolan grup ini akan hilang begitu orang terakhir pergi"],"This groupchat is publicly searchable":["Obrolan grup ini dapat dicari secara publik"],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Anda tidak diperbolehkan mengirim pesan di room ini"],"The conversation has moved. Click below to enter.":["Pembicaraan sudah dipindah. Klik dibawah untuk masuk."],"This groupchat no longer exists":["Obrolan Grup ini sudah tidak ada"],"Enter groupchat":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Configure":[""],"Configure this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Tentang"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s klien obrolan XMPP dipersembahkan oleh %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Terjemahkan %2$s ke dalam bahasa Anda sendiri"],"Log out":["Keluar"],"Click to change your chat status":["Klik untuk mengubah status obrolan Anda"],"Show details about this chat client":["Tampilkan detail tentang klien obrolan ini"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":["Centang untuk memilih sidik jari berikut"],"Device without a fingerprint":["Perangkat tanpa sidik jari"],"Other OMEMO-enabled devices":["Perangkat yang support OMEMO lainnya"],"Checkbox to select fingerprints of all other OMEMO devices":["Centang untuk memilih sidik jari dari semua perangkat OMEMO lainnya"],"Remove checked devices and close":["Hapus perangkat yang dicentang dan tutup"],"Select all":["Pilih semua"],"This device\'s OMEMO fingerprint":["Sidik jari OMEMO perangkat ini"],"Generate new keys and fingerprint":["Hasilkan kunci dan sidik jari baru"],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":["Simpan dan tutup"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":["Saya %1$s"],"Are you sure you want to log out?":["Anda yakin ingin keluar?"],"online":["online"],"busy":["sibuk"],"away for long":["pergi lama"],"away":["pergi"],"offline":["offline"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s tampaknya tidak memiliki klien yang mendukung OMEMO. Obrolan terenkripsi tidak lagi dapat dilakukan di obrolan grup ini."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Tidak dapat menggunakan enkripsi ujung ke ujung karena %1$s menggunakan klien yang tidak mendukung OMEMO."],"Messages are being sent in plaintext":["Pesan sedang dikirim dalam plaintext"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Maaf, terjadi kesalahan saat mencoba menghapus perangkat."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Anda yakin ingin membuat kunci OMEMO baru? Ini akan menghapus kunci lama Anda dan semua pesan yang dienkripsi sebelumnya tidak lagi dapat didekripsi pada perangkat ini."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Maaf, kami tidak dapat mengirim pesan terenkripsi karena %1$s mengharuskan Anda untuk berlangganan keberadaan mereka untuk melihat informasi OMEMO mereka"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Maaf, kami tidak dapat mengirim pesan terenkripsi karena server jarak jauh untuk %1$s tidak dapat ditemukan"],"Unable to send an encrypted message due to an unexpected error.":["Tidak dapat mengirim pesan terenkripsi karena kesalahan yang tidak terduga."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Maaf, tidak ada perangkat yang dapat kami gunakan untuk mengirim pesan terenkripsi OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ini adalah pesan terenkripsi OMEMO yang tampaknya tidak didukung oleh klien Anda. Temukan informasi lebih lanjut tentang https://conversations.im/omemo"]," e.g. conversejs.org":[" contoh: conversejs.org"],"Fetch registration form":["Ambil formulir pendaftaran"],"Tip: A list of public XMPP providers is available":["Tip: Daftar penyedia XMPP publik tersedia"],"here":["disini"],"Sorry, we\'re unable to connect to your chosen provider.":["Maaf, kami tidak dapat terhubung ke penyedia yang Anda pilih."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Maaf, penyedia yang diberikan tidak mendukung dalam pendaftaran akun band. Silakan coba dengan penyedia lain."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Terjadi kesalahan saat membuat koneksi dengan “%1$sâ€. Apakah Anda yakin itu ada?"],"Now logging you in":["Sekarang Anda masuk"],"Registered successfully":["Berhasil terdaftar"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Penyedia menolak upaya pendaftaran Anda. Silakan periksa nilai yang Anda masukkan apakah sudah benar."],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":["Klik untuk mengaktifkan daftar obrolan grup terbuka"],"Open Groupchats":["Buka Obrolan Grup"],"Are you sure you want to leave the groupchat %1$s?":["Anda yakin ingin keluar dari obrolan grup %1$s?"],"Add":["Tambah"],"Add a Contact":["Tambah kontak"],"This contact is busy":["Kontak ini sedang sibuk"],"This contact is online":["Kontak ini sedang online"],"This contact is offline":["Kontak ini sedang offline"],"This contact is unavailable":["Kontak ini tidak tersedia"],"This contact is away for an extended period":["Kontak ini tidak ada dalam waktu lama"],"This contact is away":["Kontak ini sedang pergi"],"Contact name":["Nama kontak"],"Optional nickname":["Nama panggilan opsional"],"Sorry, could not find a contact with that name":["Maaf, tidak dapat menemukan kontak dengan nama itu"],"This contact has already been added":["Kontak ini sudah ditambahkan"],"Filter":["Saring"],"Filter by contact name":["Saring berdasarkan nama kontak"],"Filter by group name":["Saring berdasarkan nama grup"],"Filter by status":["Saring berdasarkan status"],"Any":["Apa saja"],"Unread":["Belum dibaca"],"Chatty":["Cerewet"],"Extended Away":["Diperpanjang"],"Click to remove %1$s as a contact":["Klik untuk menghapus %1$s sebagai kontak"],"Click to accept the contact request from %1$s":["Klik untuk menerima permintaan kontak dari %1$s"],"Click to decline the contact request from %1$s":["Klik untuk menolak permintaan kontak dari %1$s"],"Are you sure you want to decline this contact request?":["Anda yakin ingin menolak permintaan kontak ini?"],"Contacts":["Kontak"],"Add a contact":["Tambah kontak"],"Re-sync your contacts":["Sinkronkan kembali kontak Anda"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[157],{523:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"id"},"Create your account":["Buat akun anda"],"Please enter the XMPP provider to register with:":["Silakan masukkan penyedia XMPP untuk mendaftar:"],"Already have a chat account?":["Sudah punya akun obrolan?"],"Log in here":["Masuk disini"],"Account Registration:":["Pendaftaran Akun:"],"Register":["Daftar"],"Choose a different provider":["Pilih penyedia yang berbeda"],"Hold tight, we\'re fetching the registration form…":["Pegang erat-erat, kami mengambil formulir pendaftaran …"],"Cancel":["Batal"],"The connection has dropped, attempting to reconnect.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":["Smileys dan emotions"],"People":["Orang"],"Activities":["Aktifitas"],"Travel":["Perjalanan"],"Objects":["Obyek"],"Animals and nature":["Hewan dan alam"],"Food and drink":["Makanan dan minuman"],"Symbols":["Simbol"],"Flags":["Bendera"],"Stickers":["Stiker"],"This groupchat is not anonymous":["Obrolan grup ini tidak anonim"],"This groupchat now shows unavailable members":["Obrolan grup ini sekarang menampilkan anggota yang tidak tersedia"],"This groupchat does not show unavailable members":["Obrolan grup ini tidak menunjukkan anggota yang tidak tersedia"],"The groupchat configuration has changed":["Konfigurasi obrolan grup telah berubah"],"Groupchat logging is now enabled":["Log masuk Obrolan Group tidak diaktifkan"],"Groupchat logging is now disabled":["Log masuk Obrolan Group sekarang dinonaktifkan"],"This groupchat is now no longer anonymous":["Obrolan grup ini sekarang tidak lagi anonim"],"This groupchat is now semi-anonymous":["Obrolan grup ini sekarang semi-anonim"],"This groupchat is now fully-anonymous":["Obrolan grup ini sekarang sepenuhnya anonim"],"A new groupchat has been created":["Obrolan grup baru telah dibuat"],"Your nickname has been automatically set to %1$s":["Nama panggilan Anda telah ditetapkan secara otomatis ke %1$s"],"Your nickname has been changed to %1$s":["Nama panggilan Anda telah diubah menjadi %1$s"],"You have been banned from this groupchat":["Anda telah diblokir dari obrolan grup ini"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["Simpan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["Tutup"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Versi pesan"],"Retry":[""],"Uploading file:":["Mengunggah berkas:"],"This message has been edited":["Pesan ini telah diubah"],"Show more":[""],"No message history available.":["Riwayat pesan tidak tersedia."],"Search results":["Hasil pencarian"],"Search":["Cari"],"Insert emojis":[""],"Send the message":["Mengirim pesan ini"],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Gambar profil pengguna"],"Trusted":["Dipercaya"],"Untrusted":["Tidak dipercaya"],"OMEMO Fingerprints":["Sidik Jari OMEMO"],"Remove as contact":["Hapus dari kontak"],"XMPP Address":["Alamat XMPP"],"Email":[""],"Full Name":[""],"Nickname":["Nama panggilan"],"Refresh":["Segarkan"],"Role":["Peran"],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Untuk meningkatkan kinerja, kami menyimpan data Anda di browser ini. Hapus centang kotak ini jika ini adalah komputer umum atau jika Anda ingin data Anda dihapus saat Anda logout. Penting bagi Anda untuk keluar secara eksplisit, jika tidak, tidak semua data yang di-cache mungkin dihapus. Harap dicatat, saat menggunakan perangkat yang tidak dipercaya, enkripsi OMEMO TIDAK tersedia."],"This is a trusted device":["Ini adalah perangkat tepercaya"],"Create an account":["Buat akun"],"Don\'t have a chat account?":["Belum punya akun obrolan?"],"Log in":["Masuk"],"Disconnected":[""],"Click here to log in anonymously":["Klik disini untuk masuk secara anonim"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":["Kolom ini harus diisi"],"Join":["Gabung"],"Enter a new Groupchat":["Masukan Grup chat baru"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Invite":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["Tersembunyi"],"Requires an invitation":[""],"Moderated":["Dimoderasi"],"Non-anonymous":[""],"Open":["Buka"],"Permanent":[""],"Public":["Publik"],"Semi-anonymous":["Semi-anonim"],"Temporary":["Sementara"],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderator adalah pengguna istimewa yang dapat mengubah peran pengguna lain (kecuali yang memiliki admin atau afiliasi pemilik."],"The default role, implies that you can read and write messages.":["Peran default, menyiratkan bahwa Anda dapat membaca dan menulis pesan."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Pengunjung tidak diperbolehkan menulis pesan dalam obrolan multi-pengguna yang dimoderasi."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Pemilik adalah afiliasi tertinggi. Pemilik dapat mengubah peran dan afiliasi dari semua pengguna lain."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin adalah afiliasi tertinggi kedua. Admin dapat mengubah peran dan afiliasi semua pengguna lain kecuali pemilik."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Untuk mencekal pengguna, Anda memberi mereka afiliasi “terbuangâ€."],"Change role":["Rubah peran"],"New Role":["Peran baru"],"Reason":["Alasan"],"Change affiliation":["Rubah afiliasi"],"New affiliation":["Afiliasi baru"],"Affiliation":["Afiliasi"],"Moderator Tools":["Alat Moderator"],"No users with that affiliation found.":["Tidak ada pengguna dengan afiliasi itu ditemukan."],"No users with that role found.":["Tidak ada pengguna dengan peran itu ditemukan."],"Type here to filter the search results":[""],"Show users":["Tampilkan pengguna"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Peran diberikan kepada pengguna untuk memberikan atau menolak kemampuan tertentu mereka dalam obrolan multi-pengguna. Mereka ditugaskan baik secara eksplisit maupun implisit sebagai bagian dari afiliasi. Peran yang bukan karena afiliasi, hanya berlaku selama durasi sesi pengguna."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Afiliasi adalah hak yang berumur panjang yang biasanya menyiratkan peran tertentu dan yang memberikan hak istimewa dan tanggung jawab. Misalnya admin dan pemilik secara otomatis memiliki peran moderator."],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["Topik"],"Topic author":["Penulis topik"],"Groupchat address (JID)":["Alamat Obrolan Grup"],"Message archiving":["Pengarsipan pesan"],"Messages are archived on the server":["Pesan diarsipkan di server"],"Description":["Keterangan"],"Features":["Fitur"],"This groupchat is not publicly searchable":["Obrolan grup ini tidak dapat ditelusuri untuk umum"],"This groupchat is restricted to members only":["Obrolan grup ini terbatas hanya untuk anggota"],"Members only":["Hanya anggota"],"Participants entering this groupchat need to request permission to write":["Peserta yang memasuki groupchat ini perlu meminta izin untuk menulis"],"Name":["Nama"],"This groupchat does not require a password upon entry":["Obrolan grup ini tidak memerlukan kata sandi saat masuk"],"No password required":["Tidak diperlukan kata sandi"],"Not anonymous":["Bukan anonim"],"All other groupchat participants can see your XMPP address":["Semua peserta groupchat lainnya dapat melihat alamat XMPP Anda"],"Not moderated":["Tidak dimoderasi"],"Participants entering this groupchat can write right away":["Peserta yang memasuki obrolan grup ini dapat langsung menulis"],"Online users":["Pengguna Online"],"Anyone can join this groupchat":["Siapa pun dapat bergabung dengan obrolan grup ini"],"This groupchat requires a password before entry":["Obrilan grup ini membutuhkan kata sandi untuk masuk"],"Password protected":["Dilindungi kata sandi"],"Persistent":["Tetap ada"],"This groupchat persists even if it\'s unoccupied":["Obrolan grup ini tetap ada meskipun tidak dihuni"],"Only moderators can see your XMPP address":["Hanya moderator yang dapat melihat alamat XMPP Anda"],"This groupchat will disappear once the last person leaves":["Obrolan grup ini akan hilang begitu orang terakhir pergi"],"This groupchat is publicly searchable":["Obrolan grup ini dapat dicari secara publik"],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Anda tidak diperbolehkan mengirim pesan di room ini"],"The conversation has moved. Click below to enter.":["Pembicaraan sudah dipindah. Klik dibawah untuk masuk."],"This groupchat no longer exists":["Obrolan Grup ini sudah tidak ada"],"Enter groupchat":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Configure":[""],"Configure this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Tentang"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s klien obrolan XMPP dipersembahkan oleh %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Terjemahkan %2$s ke dalam bahasa Anda sendiri"],"Log out":["Keluar"],"Click to change your chat status":["Klik untuk mengubah status obrolan Anda"],"Show details about this chat client":["Tampilkan detail tentang klien obrolan ini"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":["Centang untuk memilih sidik jari berikut"],"Device without a fingerprint":["Perangkat tanpa sidik jari"],"Other OMEMO-enabled devices":["Perangkat yang support OMEMO lainnya"],"Checkbox to select fingerprints of all other OMEMO devices":["Centang untuk memilih sidik jari dari semua perangkat OMEMO lainnya"],"Remove checked devices and close":["Hapus perangkat yang dicentang dan tutup"],"Select all":["Pilih semua"],"This device\'s OMEMO fingerprint":["Sidik jari OMEMO perangkat ini"],"Generate new keys and fingerprint":["Hasilkan kunci dan sidik jari baru"],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":["Simpan dan tutup"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":["Saya %1$s"],"Are you sure you want to log out?":["Anda yakin ingin keluar?"],"online":["online"],"busy":["sibuk"],"away for long":["pergi lama"],"away":["pergi"],"offline":["offline"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s tampaknya tidak memiliki klien yang mendukung OMEMO. Obrolan terenkripsi tidak lagi dapat dilakukan di obrolan grup ini."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Tidak dapat menggunakan enkripsi ujung ke ujung karena %1$s menggunakan klien yang tidak mendukung OMEMO."],"Messages are being sent in plaintext":["Pesan sedang dikirim dalam plaintext"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Maaf, kami tidak dapat mengirim pesan terenkripsi karena %1$s mengharuskan Anda untuk berlangganan keberadaan mereka untuk melihat informasi OMEMO mereka"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Maaf, kami tidak dapat mengirim pesan terenkripsi karena server jarak jauh untuk %1$s tidak dapat ditemukan"],"Unable to send an encrypted message due to an unexpected error.":["Tidak dapat mengirim pesan terenkripsi karena kesalahan yang tidak terduga."],"Sorry, an error occurred while trying to remove the devices.":["Maaf, terjadi kesalahan saat mencoba menghapus perangkat."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Anda yakin ingin membuat kunci OMEMO baru? Ini akan menghapus kunci lama Anda dan semua pesan yang dienkripsi sebelumnya tidak lagi dapat didekripsi pada perangkat ini."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Maaf, tidak ada perangkat yang dapat kami gunakan untuk mengirim pesan terenkripsi OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Ini adalah pesan terenkripsi OMEMO yang tampaknya tidak didukung oleh klien Anda. Temukan informasi lebih lanjut tentang https://conversations.im/omemo"]," e.g. conversejs.org":[" contoh: conversejs.org"],"Fetch registration form":["Ambil formulir pendaftaran"],"Tip: A list of public XMPP providers is available":["Tip: Daftar penyedia XMPP publik tersedia"],"here":["disini"],"Sorry, we\'re unable to connect to your chosen provider.":["Maaf, kami tidak dapat terhubung ke penyedia yang Anda pilih."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Maaf, penyedia yang diberikan tidak mendukung dalam pendaftaran akun band. Silakan coba dengan penyedia lain."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Terjadi kesalahan saat membuat koneksi dengan “%1$sâ€. Apakah Anda yakin itu ada?"],"Now logging you in":["Sekarang Anda masuk"],"Registered successfully":["Berhasil terdaftar"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Penyedia menolak upaya pendaftaran Anda. Silakan periksa nilai yang Anda masukkan apakah sudah benar."],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":["Klik untuk mengaktifkan daftar obrolan grup terbuka"],"Open Groupchats":["Buka Obrolan Grup"],"Are you sure you want to leave the groupchat %1$s?":["Anda yakin ingin keluar dari obrolan grup %1$s?"],"Add":["Tambah"],"Add a Contact":["Tambah kontak"],"This contact is busy":["Kontak ini sedang sibuk"],"This contact is online":["Kontak ini sedang online"],"This contact is offline":["Kontak ini sedang offline"],"This contact is unavailable":["Kontak ini tidak tersedia"],"This contact is away for an extended period":["Kontak ini tidak ada dalam waktu lama"],"This contact is away":["Kontak ini sedang pergi"],"Contact name":["Nama kontak"],"Optional nickname":["Nama panggilan opsional"],"Sorry, could not find a contact with that name":["Maaf, tidak dapat menemukan kontak dengan nama itu"],"This contact has already been added":["Kontak ini sudah ditambahkan"],"Filter":["Saring"],"Filter by contact name":["Saring berdasarkan nama kontak"],"Filter by group name":["Saring berdasarkan nama grup"],"Filter by status":["Saring berdasarkan status"],"Any":["Apa saja"],"Unread":["Belum dibaca"],"Chatty":["Cerewet"],"Extended Away":["Diperpanjang"],"Click to remove %1$s as a contact":["Klik untuk menghapus %1$s sebagai kontak"],"Click to accept the contact request from %1$s":["Klik untuk menerima permintaan kontak dari %1$s"],"Click to decline the contact request from %1$s":["Klik untuk menolak permintaan kontak dari %1$s"],"Are you sure you want to decline this contact request?":["Anda yakin ingin menolak permintaan kontak ini?"],"Contacts":["Kontak"],"Add a contact":["Tambah kontak"],"Re-sync your contacts":["Sinkronkan kembali kontak Anda"]}}}')}}]); //# sourceMappingURL=id-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/it-LC_MESSAGES-converse-po.js b/src/conversejs/locales/it-LC_MESSAGES-converse-po.js index af8b5fcd6cc17941781164c98dfdb5208ba9b9a5..c58890c812d0617522addf362d99de003b30e1a8 100644 --- a/src/conversejs/locales/it-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/it-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{436:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"it"},"Create your account":["Crea il tuo account"],"Please enter the XMPP provider to register with:":["Per favore inserisci il fornitore del servizio XMPP con cui registrarti:"],"Already have a chat account?":["Hai già un account?"],"Log in here":["Accedi qui"],"Account Registration:":["Registrazione account:"],"Register":["Registrati"],"Choose a different provider":["Scegli un altro fornitore"],"Hold tight, we\'re fetching the registration form…":["Tieniti forte, stiamo recuperando il modulo di registrazione…"],"Cancel":["Annulla"],"The connection has dropped, attempting to reconnect.":["La connessione è caduta, attendi la riconnessione."],"An error occurred while connecting to the chat server.":["Si è verificato un errore durante la connessione al server."],"Your XMPP address and/or password is incorrect. Please try again.":["Il tuo indirizzo XMPP e/o la tua password sono sbagliati. Riprova."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Spiacente, impossibile connettersi all\'host XMPP con il dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Il server XMPP non ha offerto un meccanismo di autenticazione supportato"],"Sorry, could not determine upload URL.":["Spiacente, impossibile determinare l\'URL di caricamento."],"Sorry, could not determine file upload URL.":["Spiacente, impossibile determinare l\'URL di caricamento del file."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Spiacente, impossibile caricare il tuo file. Risposta del tuo server: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Spiacente, caricamento del file non riuscito."],"You\'re not allowed to retract your message.":["Non ti è permesso di ritrattare il tuo messaggio."],"Sorry, an error occurred while trying to retract your message.":["Spiacente, si è verificato un errore tentando di ritrattare il tuo messaggio."],"You\'re not allowed to send a message.":["Non ti è permesso inviare un messaggio."],"Sorry, an error occurred while trying to send your message.":["Spiacente, si è verificato un errore tentando di inviare il tuo messaggio."],"Sorry, looks like file upload is not supported by your server.":["Spiacente, sembra che il caricamento dei file non sia supportato dal tuo server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La dimensione del tuo file, %1$s, supera il massimo consentito dal tuo server, che è %2$s."],"Smileys and emotions":["Faccine ed emoji"],"People":["Persone"],"Activities":["Attività "],"Travel":["Viaggi"],"Objects":["Oggetti"],"Animals and nature":["Animali e natura"],"Food and drink":["Cibo e bevande"],"Symbols":["Simboli"],"Flags":["Bandiere"],"Stickers":["Adesivi"],"This groupchat is not anonymous":["Questa conversazione di gruppo non è anonima"],"This groupchat now shows unavailable members":["Questa conversazione di gruppo ora mostra membri non disponibili"],"This groupchat does not show unavailable members":["Questa conversazione di gruppo non mostra i membri non disponibili"],"The groupchat configuration has changed":["La configurazione della conversazione di gruppo è cambiata"],"Groupchat logging is now enabled":["La registrazione della conversazione di gruppo ora è abilitata"],"Groupchat logging is now disabled":["La registrazione della conversazione di gruppo ora è disabilitata"],"This groupchat is now no longer anonymous":["Questa conversazione di gruppo ora non è più anonima"],"This groupchat is now semi-anonymous":["Questa conversazione di gruppo ora è semi-anonima"],"This groupchat is now fully-anonymous":["Questa conversazione di gruppo ora è completamente anonima"],"A new groupchat has been created":["Una nuova conversazione di gruppo è stata creata"],"Your nickname has been automatically set to %1$s":["Il tuo soprannome è stato impostato automaticamente come %1$s"],"Your nickname has been changed to %1$s":["Il tuo nickname è stato cambiato come %1$s"],"You have been banned from this groupchat":["Sei stato bandito da questa conversazione di gruppo"],"You have exited this groupchat due to a technical problem":["Sei uscito da questa conversazione di gruppo per un problema tecnico"],"You have been kicked from this groupchat":["Sei stato espulso da questa conversazione di gruppo"],"You have been removed from this groupchat because of an affiliation change":["Sei stato rimosso da questa conversazione di gruppo a causa di un cambio di affiliazione"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sei stato rimosso da questa conversazione di gruppo poiché ora è stata ristretta ai soli membri e tu non ne fai parte"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sei stato rimosso da questa conversazione di gruppo perchè il servizio di host è in fase di spegnimento"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Ritrattazione non consegnata perchè non partecipi alla conversazione di gruppo."],"Your message was not delivered because you weren\'t allowed to send it.":["Il tuo messaggio non è stato spedito perchè non ti è permesso inviare messaggi."],"Your message was not delivered because you\'re not present in the groupchat.":["Il tuo messaggio non è stato spedito perchè non partecipi alla conversazione di gruppo."],"A timeout happened while while trying to retract your message.":["Tempo scaduto tentando di ritrattare il tuo messaggio."],"You\'re not allowed to register yourself in this groupchat.":["Non ti è permesso registrarti in questa conversazione di gruppo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Non ti è permesso registrarti in questa conversazione di gruppo perchè è per soli membri."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Non ti è permesso registrare il tuo soprannome in questa conversazione di gruppo, non supporta la registrazione."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Non ti è permesso registrare il tuo soprannome in questa conversazione di gruppo, è stato fornito un modulo di dati non valido."],"Topic set by %1$s":["Argomento impostato da %1$s"],"Topic cleared by %1$s":["Argomento rimosso da %1$s"],"%1$s has been banned by %2$s":["%1$s è stato bannato da %2$s"],"%1$s has been banned":["%1$s è stato bannato"],"%1$s\'s nickname has changed":["%1$s nickname è cambiato"],"%1$s has been kicked out by %2$s":["%1$s è stato espulso da %2$s"],"%1$s has been kicked out":["%1$s è stato espulso"],"%1$s has been removed because of an affiliation change":["%1$s è stato rimosso a causa di un cambio di affiliazione"],"%1$s has been removed for not being a member":["%1$s è stato rimosso in quanto non membro"],"%1$s is no longer an admin of this groupchat":["%1$s non è più un amministratore di questa conversazione di gruppo"],"%1$s is no longer an owner of this groupchat":["%1$s non è più un proprietario di questa conversazione di gruppo"],"%1$s is no longer banned from this groupchat":["%1$s non è più bandito da questa conversazione di gruppo"],"%1$s is no longer a member of this groupchat":["%1$s non è più un membro di questa conversazione di gruppo"],"%1$s is now a member of this groupchat":["%1$s ora è un membro di questa conversazione di gruppo"],"%1$s is now an %2$s of this groupchat":["%1$s ora è un %2$s di questa conversazione di gruppo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Il soprannome che hai scelto è riservato o attualmente in uso, per favore scegline uno diverso."],"Password incorrect":["Password non corretta"],"You are not on the member list of this groupchat.":["Non sei sulla lista dei membri di questa conversazione di gruppo."],"You have been banned from this groupchat.":["Sei stato bandito da questa conversazione di gruppo."],"You are not allowed to create new groupchats.":["Non ti è permesso creare nuove conversazioni di gruppo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Il tuo soprannome non è conforme alle regole di questa conversazione di gruppo."],"This groupchat does not (yet) exist.":["Questa conversazione di gruppo non esiste (per ora)."],"This groupchat has reached its maximum number of participants.":["Questa conversazione di gruppo ha raggiunto il limite massimo di partecipanti."],"Remote server not found":["Server remoto non trovato"],"The explanation given is: \\"%1$s\\".":["La spiegazione data è: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s ti ha invitato a partecipare ad una conversazione di gruppo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s ti ha invitato a partecipare ad una conversazione di gruppo: %2$s, ed ha lasciato la seguente motivazione: “%3$sâ€"],"Error":["Errore"],"Sorry, something went wrong while trying to save your bookmark.":["Scusa, qualcosa è andato storto durante il salvataggio del tuo segnalibro."],"Timeout Error":["Errore di Tempo Scaduto"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Il server non ha consegnato i tuoi segnalibri entro il tempo consentito. Puoi ricaricare la pagina e richiederli ancora."],"My contacts":["I miei contatti"],"Pending contacts":["Contatti in attesa"],"Contact requests":["Richieste di contatto"],"Ungrouped":["Senza Gruppo"],"New messages":["Nuovi messaggi"],"Sorry, there was an error while trying to add %1$s as a contact.":["Scusa, si è verificato un errore durante il tentativo di aggiungere %1$s come contatto."],"This client does not allow presence subscriptions":["Questo client non consente sottoscrizioni di presenza"],"Click to hide these contacts":["Clicca per nascondere questi contatti"],"Unbookmark this groupchat":["Rimuovi dai segnalibri questa conversazione di gruppo"],"Click to open this groupchat":["Clicca per aprire questa conversazione di gruppo"],"Click to toggle the bookmarks list":["Clicca per aprire/chiudere l\'elenco dei segnalibri"],"Bookmarks":["Segnalibri"],"Bookmark this groupchat":["Aggiungi ai segnalibri questa conversazione di gruppo"],"Would you like this groupchat to be automatically joined upon startup?":["Vuoi unirti automaticamente a questa conversazione di gruppo subito dopo aver effettuato l\'accesso?"],"The name for this bookmark:":["Nome per questo segnalibro:"],"What should your nickname for this groupchat be?":["Quale dovrebbe essere il soprannome per questa conversazione di gruppo?"],"Save":["Salva"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Sei sicuro di voler rimuovere il segnalibro \\"%1$s\\"?"],"Unbookmark":["Elimina il segnalibro"],"Bookmark":["Segnalibro"],"Close":["Chiudi"],"OK":["OK"],"Image: ":["Immagine: "],"Download audio file \\"%1$s\\"":["Scarica file audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Scarica file \\"%1$s\\""],"Cancel Editing":["Annulla modifica"],"Edit":["Modifica"],"Retract":["Ritratta"],"Message versions":["Versioni del messaggio"],"Retry":["Riprova"],"Uploading file:":["Caricamento file:"],"%1$s has removed this message":["%1$s ha rimosso questo messaggio"],"This message has been edited":["Questo messaggio è stato modificato"],"Show more":["Mostra di più"],"Show less":["Mostra meno"],"No message history available.":["Nessuna cronologia del messaggio disponibile."],"Search results":["Cerca risultati"],"Search":["Cerca"],"Insert emojis":["Inserisci emoji"],"Send the message":["Invia il messaggio"],"Start a call":["Inizia una chiamata"],"Message characters remaining":["Caratteri rimanenti per il messaggio"],"Hide participants":["Nascondi partecipanti"],"Show participants":["Mosta partecipanti"],"Choose a file to send":["Scegli un file da inviare"],"Click to write as a normal (non-spoiler) message":["Clicca per scrivere un messaggio normale (senza spoiler)"],"Click to write your message as a spoiler":["Clicca per scrivere un messaggio come spoiler"],"The User\'s Profile Image":["L\'immagine di profilo dell\'utente"],"Trusted":["Fidato"],"Untrusted":["Non fidato"],"OMEMO Fingerprints":["Impronte OMEMO"],"No OMEMO-enabled devices found":["Nessun dispositivo OMEMO abilitato trovato"],"Remove as contact":["Rimuovi dai contatti"],"XMPP Address":["Indirizzo XMPP"],"Email":["Email"],"Full Name":["Nome Completo"],"Nickname":["Soprannome"],"Refresh":["Aggiorna"],"Role":["Ruolo"],"URL":["URL"],"%1$s is typing":["%1$s sta scrivendo"],"%1$s has stopped typing":["%1$s ha smesso di scrivere"],"%1$s has gone away":["%1$s si è allontanato"],"Remove messages":["Rimuovi messaggi"],"Close this chat":["Chiudi questa conversazione"],"Write in the third person":["Scrivi in terza persona"],"Show this menu":["Mostra questo menu"],"Hidden message":["Messaggio Nascosto"],"Message":["Messaggio"],"Optional hint":["Suggerimento opzionale"],"You have unread messages":["Hai messaggi non letti"],"Details":["Dettagli"],"See more information about this person":["Mostra più informazioni su questa persona"],"Close and end this conversation":["Chiudi e termina questa conversazione"],"Sorry, the connection has been lost, and your message could not be sent":["Spiacente, la connessione è stata persa e il tuo messaggio non è stato inviato"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tieni conto che altri client (e server) XMPP/Jabber potrebbero non supportare ancora il ritiro e questo messaggio potrebbe non essere rimosso dappertutto."],"Are you sure you want to retract this message?":["Sei sicuro di voler ritirare questo messaggio?"],"Confirm":["Conferma"],"You have an unsent message which will be lost if you continue. Are you sure?":["Hai un messaggio non inviato che sarà perso se continui. Sei sicuro?"],"Are you sure you want to clear the messages from this conversation?":["Sei sicuro di volere pulire i messaggi da questa conversazione?"],"%1$s has gone offline":["%1$s si è disconnesso"],"%1$s is busy":["%1$s è occupato"],"%1$s is online":["%1$s è in linea"],"Sorry, something went wrong while trying to refresh":["Scusa, qualcosa è andato storto durante il tentativo di aggiornamento"],"Are you sure you want to remove this contact?":["Sei sicuro di voler rimuovere questo contatto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Scusa, si è verificato un errore durante il tentativo di rimozione di %1$s come contatto."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per migliorare le prestazioni, memorizziamo i tuoi dati nella cache in questo browser. Deseleziona questa casella se si tratta di un computer pubblico o se desideri che i tuoi dati vengano eliminati quando esci. È importante disconnettersi esplicitamente, altrimenti non tutti i dati memorizzati nella cache potrebbero essere eliminati. Nota bene, quando utilizzi un dispositivo non fidato, la crittografia OMEMO NON è disponibile."],"This is a trusted device":["Questo è un dispositivo fidato"],"Password":["Password"],"Create an account":["Crea un account"],"Don\'t have a chat account?":["Non hai un account?"],"Log in":["Accedi"],"Disconnected":["Disconnesso"],"Click here to log in anonymously":["Clicca per accedere in modo anonimo"],"Username":["Nome utente"],"user@domain":["utente@dominio"],"Please enter a valid XMPP address":["Inserisci un indirizzo XMPP valido"],"Chat Contacts":["Contatti"],"Toggle chat":["Attiva/disattiva conversazione"],"Click to restore this chat":["Clicca per ripristinare questa conversazione"],"Minimized":["Ridotto"],"Minimize":["Ridotto"],"Minimize this chat":["Riduci questa conversazione"],"Minimize this groupchat":["Riduci questa conversazione"],"This field is required":["Questo campo è richiesto"],"Join":["Unisciti"],"Enter a new Groupchat":["Entra in una nuova Conversazione di gruppo"],"name@conference.example.org":["nome@conferenza.esempio.org"],"Groupchat name":["Nome conversazione di gruppo"],"Groupchat address":["Indirizzo conversazione di gruppo"],"Groupchat id is invalid.":["L\'ID della conversazione di gruppo non è valido."],"Invite":["Invita"],"Invite someone to this groupchat":["Invita qualcuno in questa conversazione di gruppo"],"user@example.org":["utente@esempio.org"],"Optional reason for the invitation":["Motivazione facoltativa per l\'invito"],"Show groupchats":["Mostra conversazioni di gruppo"],"Server address":["Indirizzo del server"],"Show more information on this groupchat":["Mostra più informazioni su questa conversazione di gruppo"],"Query for Groupchats":["Interroga per Conversazioni di gruppo"],"Description:":["Descrizione:"],"Groupchat Address (JID):":["Indirizzo conversazione di gruppo (JID):"],"Participants:":["Partecipanti:"],"Features:":["Funzionalità :"],"Requires authentication":["Richiede autenticazione"],"Hidden":["Nascosta"],"Requires an invitation":["Richiede un invito"],"Moderated":["Moderata"],"Non-anonymous":["Non anonima"],"Open":["Aperta"],"Permanent":["Permanente"],"Public":["Pubblica"],"Semi-anonymous":["Semi-anonima"],"Temporary":["Temporanea"],"Unmoderated":["Non moderata"],"conference.example.org":["conferenza.esempio.org"],"Groupchats found":["Conversazioni di gruppo trovate"],"No groupchats found":["Nessuna conversazione di gruppo trovata"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["I moderatori sono utenti privilegiati che possono cambiare i ruoli di altri utenti (ad eccezione degli amministratori o dei possessori di affiliazioni)."],"The default role, implies that you can read and write messages.":["Il ruolo predefinito, implica che tu possa leggere e scrivere messaggi."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Ai visitatori non è consentito di scrivere messaggi in una conversazione multi utente moderata."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietario è la più alta affiliazione. I proprietari possono modificare ruoli e affiliazioni di tutti gli altri utenti."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Amministratore è la seconda più alta affiliazione. Gli amministratori possono modificare ruoli e affiliazioni di tutti gli altri utenti ad eccezione dei proprietari."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per bandire un utente, puoi assegnare l\'affiliazione di \\"escluso\\"."],"Change role":["Cambia ruolo"],"New Role":["Nuovo Ruolo"],"Reason":["Motivazione"],"Change affiliation":["Cambia l\'affiliazione"],"New affiliation":["Nuova affiliazione"],"Affiliation":["Affiliazione"],"Moderator Tools":["Strumenti di Moderazione"],"No users with that affiliation found.":["Nessun utente con quell\'affiliazione trovato."],"No users with that role found.":["Nessun utente con quel ruolo trovato."],"Type here to filter the search results":["Scrivi qui per filtrare i risultati della ricerca"],"Show users":["Mostra utenti"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["I ruoli sono assegnati agli utenti e permettono o negano certe funzionalità nelle conversazioni multi utente. Sono assegnati sia esplicitamente che implicitamente come parte di un\'affiliazione. Un ruolo che non è dato per affiliazione è valido solo per la sessione corrente dell\'utente."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Un\'affiliazione è un diritto permanente che tipicamente implica un certo ruolo che garantisce privilegi e responsabilità . Per esempio amministratori e proprietari automaticamente hanno il ruolo di moderatore."],"Timeout error while trying to set the affiliation":["Tempo scaduto tentando di impostare l\'affiliazione"],"Sorry, you\'re not allowed to make that change":["Spiacente, non ti è permesso effettuare quella modifica"],"Sorry, something went wrong while trying to set the affiliation":["Scusa, si è verificato un errore durante l\'impostazione dell\'affiliazione"],"Affiliation changed":["Affiliazione cambiata"],"Role changed":["Ruolo cambiato"],"You\'re not allowed to make that change":["Non ti è permesso effettuare questa modifica"],"Sorry, something went wrong while trying to set the role":["Scusa, si è verificato un errore durante l\'impostazione del ruolo"],"Topic":["Argomento"],"Topic author":["Autore argomento"],"Groupchat address (JID)":["Indirizzo conversazione di gruppo (JID)"],"Message archiving":["Archiviazione Messaggi"],"Messages are archived on the server":["Messaggi sono archiviati sul server"],"Description":["Descrizione"],"Features":["Funzionalità "],"This groupchat is not publicly searchable":["Questa conversazione di gruppo non è cercabile pubblicamente"],"This groupchat is restricted to members only":["Questa conversazione di gruppo è ristretta ai soli membri"],"Members only":["Solo membri"],"Participants entering this groupchat need to request permission to write":["I partecipanti che entrano in questa conversazione di gruppo devono richiedere il permesso di scrivere"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Questa conversazione di gruppo non richiede una password per accedere"],"No password required":["Nessuna password richiesta"],"Not anonymous":["Non anonima"],"All other groupchat participants can see your XMPP address":["Tutti gli altri partecipanti alla conversazione di gruppo possono vedere il tuo indirizzo XMPP"],"Not moderated":["Non moderata"],"Participants entering this groupchat can write right away":["I partecipanti che entrano in questa conversazione di gruppo possono scrivere immediatamente"],"Online users":["Utenti in linea"],"Anyone can join this groupchat":["Chiunque può unirsi a questa conversazione di gruppo"],"This groupchat requires a password before entry":["Questa conversazione di gruppo richiede una password per accedere"],"Password protected":["Protetto da Password"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Questa conversazione di gruppo persiste anche se diventa inoccupata"],"Only moderators can see your XMPP address":["Solo i moderatori possono vedere il tuo indirizzo XMPP"],"This groupchat will disappear once the last person leaves":["Questa conversazione di gruppo sparirà se diventa inoccupata"],"This groupchat is publicly searchable":["Questa conversazione di gruppo è ricercabile pubblicamente"],"Groupchat info for %1$s":["Informazioni della conversazione di gruppo per %1$s"],"You\'re not allowed to send messages in this room":["Non ti è permesso inviare messaggi in questa stanza"],"The conversation has moved. Click below to enter.":["La conversazione si è trasferita. Clicca qui sotto per entrare."],"This groupchat no longer exists":["Questa conversazione di gruppo non esiste più"],"Hide the groupchat topic":["Nascondi l\'argomento della conversazione"],"This groupchat is bookmarked":["Questa conversazione è nei segnalibri"],"Enter groupchat":["Entra nella conversazione di gruppo"],"Choose a nickname to enter":["Scegli un soprannome per entrare"],"Please choose your nickname":["Per favore scegli il tuo soprannome"],"This groupchat requires a password":["Questa conversazione di gruppo richiede una password"],"Password: ":["Password: "],"Submit":["Invia"],"This user is a moderator.":["Questo utente è un moderatore."],"This user can send messages in this groupchat.":["Questo utente può inviare messaggi in questa conversazione di gruppo."],"This user can NOT send messages in this groupchat.":["Questo utente NON può inviare messaggi in questa conversazione di gruppo."],"Owner":["Proprietario"],"Admin":["Amministratore"],"Member":["Membro"],"Moderator":["Moderatore"],"Visitor":["Visitatore"],"Click to mention %1$s in your message.":["Clicca per menzionare %1$s nel tuo messaggio."],"Participants":["Partecipanti"],"%1$s has entered the groupchat":["%1$s è entrato nella conversazione di gruppo"],"%1$s has left the groupchat":["%1$s ha lasciato la conversazione di gruppo"],"%1$s is now a moderator":["%1$s ora è un moderatore"],"%1$s is no longer a moderator":["%1$s non è più un moderatore"],"%1$s has been given a voice":["%1$s ora può scrivere nella conversazione"],"%1$s has been muted":["%1$s è stato silenziato"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s stanno scrivendo"],"%1$s have stopped typing":["%1$s hanno smesso di scrivere"],"%1$s have gone away":["%1$s si sono allontanati"],"%1$s have entered the groupchat":["%1$s sono entrati nella conversazione di gruppo"],"%1$s have left the groupchat":["%1$s hanno abbandonato la conversazione di gruppo"],"%1$s are now moderators":["%1$s ora sono moderatori"],"%1$s are no longer moderators":["%1$s non sono più moderatori"],"%1$s have been given voices":["%1$s ora possono scrivere nella conversazione"],"%1$s have been muted":["%1$s sono stati silenziati"],"Change user\'s affiliation to admin":["Cambia l\'affiliazione dell\'utente ad amministratore"],"Ban user by changing their affiliation to outcast":["Bandisci l\'utente cambiando l\'affiliazione ad escluso"],"Clear the chat area":["Pulisci l\'area della conversazione"],"Close this groupchat":["Chiudi questa conversazione di gruppo"],"Change user role to participant":["Cambia il ruolo dell\'utente in partecipante"],"Remove this groupchat":["Rimuovi questa conversazione di gruppo"],"Kick user from groupchat":["Espelli utente dalla conversazione di gruppo"],"Write in 3rd person":["Scrivi in terza persona"],"Grant membership to a user":["Concedi lo stato di membro ad un utente"],"Opens up the moderator tools GUI":["Apri l\'interfaccia degli strumenti di moderazione"],"Remove user\'s ability to post messages":["Rimuovi la possibilità di inviare messaggi dell\'utente"],"Change your nickname":["Cambia il tuo soprannome"],"Grant moderator role to user":["Concedi il ruolo di moderatore all\'utente"],"Grant ownership of this groupchat":["Concedi la proprietà di questa conversazione di gruppo"],"Register your nickname":["Registra il tuo soprannome"],"Revoke the user\'s current affiliation":["Revoca l\'attuale affiliazione dell\'utente"],"Set groupchat subject":["Imposta l\'oggetto della conversazione di gruppo"],"Set groupchat subject (alias for /subject)":["Imposta l\'oggetto della conversazione di gruppo (alias per /oggetto)"],"Allow muted user to post messages":["Consenti all\'utente silenziato di inviare messaggi"],"You are about to retract this message.":["Stai per ritirare questo messaggio."],"You may optionally include a message, explaining the reason for the retraction.":["Puoi facoltativamente includere un messaggio, spiegando il motivo del ritiro."],"Message Retraction":["Ritiro Messaggio"],"Optional reason":["Motivazione facoltativa"],"Sorry, you\'re not allowed to retract this message":["Scusa, non ti è consentito di ritirare questo messaggio"],"A timeout occurred while trying to retract the message":["Tempo scaduto durante il tentativo di ritirare il tuo messaggio"],"Sorry, you\'re not allowed to retract this message.":["Scusa, non ti è consentito di ritirare questo messaggio."],"Show more information about this groupchat":["Mostra più informazioni su questa conversazione di gruppo"],"Configure":["Configura"],"Configure this groupchat":["Configura questa conversazione di gruppo"],"Invite someone to join this groupchat":["Invita qualcuno ad unirsi a questa conversazione di gruppo"],"Show topic":["Mostra argomento"],"Hide topic":["Nascondi argomento"],"Show the topic message in the heading":["Mostra l\'argomento nell\'intestazione"],"Hide the topic in the heading":["Nascondi l\'argomento nell\'intestazione"],"Moderate":["Modera"],"Moderate this groupchat":["Modera questa conversazione di gruppo"],"Destroy":["Distruggi"],"Leave":["Esci"],"Leave and close this groupchat":["Esci e chiudi questa conversazione di gruppo"],"Are you sure you want to leave this groupchat?":["Vuoi veramente abbandonare questa conversazione di gruppo?"],"Hide the list of participants":["Nascondi la lista dei partecipanti"],"Forbidden: you do not have the necessary role in order to do that.":["Non consentito: non hai il ruolo necessario per fare questo."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Non consentito: non hai l\'affiliazione necessaria per fare questo."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Errore: il comando \\"%1$s\\" richiede due argomenti, il soprannome dell\'utente e opzionalmente una motivazione."],"Error: couldn\'t find a groupchat participant based on your arguments":["Errore: non è stato possibile trovare un partecipante alla conversazione di gruppo con gli argomenti forniti"],"Error: found multiple groupchat participant based on your arguments":["Errore: trovati più partecipanti alla conversazione di gruppo con gli argomenti forniti"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Nessun partecipante trovato con quel nick. Potrebbe aver abbandonato la conversazione."],"Sorry, an error happened while running the command.":["Scusa, si è verificato un errore durante l\'esecuzione del comando."],"Check your browser\'s developer console for details.":["Controlla la console per sviluppatori del tuo browser per dettagli."],"Are you sure you want to destroy this groupchat?":["Vuoi veramente distruggere questa conversazione di gruppo?"],"Please enter the XMPP address of this groupchat to confirm":["Per favore inserisci l\'indirizzo XMPP di questa conversazione per confermare"],"name@example.org":["nome@esempio.org"],"Optional reason for destroying this groupchat":["Motivo facoltativo per distruggere questa conversazione"],"Optional XMPP address for a new groupchat that replaces this one":["Indirizzo XMPP facoltativo per la nuova conversazione che sostituisce questa"],"replacement@example.org":["sostituto@esempio.org"],"Your nickname is \\"%1$s\\"":["Il tuo soprannome è:\\" %1$s\\""],"Error: invalid number of arguments":["Errore: numero non valido di argomenti"],"This action was done by %1$s.":["Questa azione è stata fatta da %1$s."],"The reason given is: \\"%1$s\\".":["La motivazione data è: \\"%1$s\\"."],"Groupchats":["Conversazioni di gruppo"],"Add a new groupchat":["Aggiungi una nuova conversazione di gruppo"],"Query for groupchats":["Interroga per conversazioni di gruppo"],"Sorry, an error occurred while trying to submit the config form.":["Scusa, si è verificato un errore durante il tentativo di inviare il modulo di configurazione."],"Close these announcements":["Chiudi questi annunci"],"Announcements":["Annunci"],"Click to open this server message":["Clicca per aprire questo messaggio del server"],"Notification from %1$s":["Notifica da %1$s"],"%1$s says":["%1$s dice"],"has gone offline":["si è disconnesso"],"has gone away":["si è allontanato"],"is busy":["è occupato"],"has come online":["ora è in linea"],"wants to be your contact":["vuole essere un tuo contatto"],"Hide":["Nascondi"],"Execute":["Esegui"],"On which entity do you want to run commands?":["Su quale entità vuoi eseguire i comandi?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Alcuni servizi XMPP ed entità permettono agli utenti privilegiati di eseguire comandi ad-hoc."],"Commands found":["Comandi trovati"],"List available commands":["Elenca comandi disponibili"],"No commands found":["Nessun comando trovato"],"Sorry, an error occurred while looking for commands on that entity.":["Spiacente, si è verificato un errore cercando comandi su quella entità ."],"The specified entity doesn\'t support ad-hoc commands":["L\'entità specificata non supporta comandi ad-hoc"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Spiacente, si è verificato un errore tentando di eseguire il comando. Controlla la console del browser per i dettagli"],"About":["A proposito"],"Commands":["Comandi"],"Settings":["Impostazioni"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s Open Source %2$s sviluppato per voi da %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traducilo %2$s nella tua lingua"],"Log out":["Disconnettiti"],"Click to change your chat status":["Clicca per cambiare il tuo stato"],"Show details about this chat client":["Mostra più dettagli su questo client"],"Your avatar image":["La tua immagine di profilo"],"Checkbox for selecting the following fingerprint":["Casella di controllo per selezionare le impronte seguenti"],"Device without a fingerprint":["Dispositivo senza un\'impronta"],"Checkbox for selecting the following device":["Casella per selezionare il seguente dispositivo"],"Other OMEMO-enabled devices":["Altri dispositivi abilitati OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Casella di controllo per selezionare le impronte di tutti gli altri dispositivi OMEMO"],"Remove checked devices and close":["Rimuovi dispositivi selezionati e chiudi"],"Select all":["Seleziona tutto"],"This device\'s OMEMO fingerprint":["L\'impronta OMEMO di questo dispositivo"],"Generate new keys and fingerprint":["Genera nuove chiavi e impronte"],"Your Profile":["Il tuo Profilo"],"XMPP Address (JID)":["Indirizzo XMPP (JID)"],"Save and close":["Salva e chiudi"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilizza le virgole per separare più ruoli. I tuoi ruoli sono visualizzati accanto al tuo nome nei tuoi messaggi della conversazione."],"OMEMO":["OMEMO"],"Profile":["Profilo"],"Sorry, an error happened while trying to save your profile data.":["Scusa, si è verificato un errore durante il salvataggio dei dati del tuo profilo."],"You can check your browser\'s developer console for any error output.":["Puoi controllare la console per sviluppatori del tuo browser per qualsiasi output di errore."],"Away":["Assente"],"Busy":["Occupato"],"Custom status":["Stato personalizzato"],"Offline":["Non in linea"],"Online":["In linea"],"Away for long":["Assente da molto"],"Change chat status":["Clicca per cambiare il tuo stato"],"Personal status message":["Messaggio personale di stato"],"I am %1$s":["Io sono %1$s"],"Are you sure you want to log out?":["Sei sicuro di volerti disconnettere?"],"online":["in linea"],"busy":["occupato"],"away for long":["assente da molto"],"away":["assente"],"offline":["non in linea"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Spiacente, impossibile decifrare un messaggio OMEMO ricevuto a causa di un errore."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s non sembra abbia un client che supporta OMEMO. Non sembra sia possibile avere una conversazione criptata in questa conversazione di gruppo."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Impossibile usare la crittografia end-to-end in questa conversazione di gruppo, la conversazione è anonima o non tutti i partecipanti supportano OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Impossibile utilizzare la crittografia end-to-end perchè %1$s utilizza un client che non supporta OMEMO."],"Messages are being sent in plaintext":["I messaggi saranno inviati come testo normale"],"Messages are sent encrypted":["I messaggi vengono inviati cifrati"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Questa conversazione di gruppo deve essere per soli membri e non anonima per potere supportare i messaggi cifrati OMEMO"],"Sorry, an error occurred while trying to remove the devices.":["Scusa, si è verificato un errore durante la rimozione dei dispositivi."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Sei sicuro di voler generare delle nuove chiavi OMEMO? Questo rimuoverà le tue vecchie chiavi, e tutti i messaggi criptati in precedenza non saranno più decrittabili su questo dispositivo."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Scusa, non siamo in grado di inviare un messaggio criptato perchè %1$s richiede che tu sottoscriva il suo stato di presenza in modo da visualizzare le sue informazioni OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Scusa, non siamo in grado di inviare un messaggio criptato perchè il server remoto per %1$s non può essere trovato"],"Unable to send an encrypted message due to an unexpected error.":["Non siamo in grado di inviare un messaggio criptato a causa di un errore inaspettato."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Scusa, nessun dispositivo trovato al quale possiamo inviare un messaggio criptato OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Questo è un messaggio criptato OMEMO che il tuo client non sembra supportare. Trova più informazioni su https://conversations.im/omemo"]," e.g. conversejs.org":[" es. conversejs.org"],"Fetch registration form":["Recupera modulo di registrazione"],"Tip: A list of public XMPP providers is available":["Suggerimento: È disponibile un elenco di fornitori XMPP pubblici"],"here":["qui"],"Sorry, we\'re unable to connect to your chosen provider.":["Scusa, non siamo in grado di connetterci al fornitore che hai scelto."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Scusa, il fornitore specificato non supporta la registrazione di account da remoto. Per favore prova con un altro fornitore."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Qualcosa è andato storto durante la connessione con “%1$sâ€. Sei sicuro che esista?"],"Now logging you in":["Ora ti stiamo facendo accedere"],"Registered successfully":["Registrazione riuscita"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Il provider ha respinto il tentativo di registrazione. Per favore controlla che i dati inseriti siano corretti."],"Leave this groupchat":["Lascia questa conversazione di gruppo"],"Click to toggle the list of open groupchats":["Clicca per aprire/chiudere l\'elenco delle conversazioni di gruppo"],"Open Groupchats":["Conversazioni di gruppo aperte"],"Are you sure you want to leave the groupchat %1$s?":["Sei sicuro di voler lasciare la conversazione di gruppo \\"%1$s\\"?"],"Add":["Aggiungi"],"Add a Contact":["Aggiungi un Contatto"],"This contact is busy":["Questo contatto è occupato"],"This contact is online":["Questo contatto è in linea"],"This contact is offline":["Questo contatto non è in linea"],"This contact is unavailable":["Questo contatto non è disponibile"],"This contact is away for an extended period":["Questo contatto è lontano dal dispositivo da un lungo periodo"],"This contact is away":["Questo contatto è lontano dal dispositivo"],"Contact name":["Nome del contatto"],"Optional nickname":["Soprannome opzionale"],"Sorry, could not find a contact with that name":["Scusa, non è stato possibile trovare un contatto con quel nome"],"This contact has already been added":["Questo contatto è già stato aggiunto"],"Filter":["Filtra"],"Filter by contact name":["Filtra per nome del contatto"],"Filter by group name":["Filtra per nome del gruppo"],"Filter by status":["Filtra per stato"],"Any":["Qualsiasi"],"Unread":["Non letto"],"Chatty":["Chiaccherone"],"Extended Away":["Lontano da molto tempo"],"Click to remove %1$s as a contact":["Clicca per rimuovere %1$s dai contatti"],"Click to accept the contact request from %1$s":["Clicca per accettare la richiesta di contatto da %1$s"],"Click to decline the contact request from %1$s":["Clicca per rifiutare la richiesta di contatto da %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Clicca per parlare con %1$s (indirizzo XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Sei sicuro di voler rifiutare questa richiesta di contatto?"],"Contacts":["Contatti"],"Add a contact":["Aggiungi un contatto"],"Re-sync your contacts":["Ri-sincronizza i tuoi contatti"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[158],{524:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"it"},"Create your account":["Crea il tuo account"],"Please enter the XMPP provider to register with:":["Per favore inserisci il fornitore del servizio XMPP con cui registrarti:"],"Already have a chat account?":["Hai già un account?"],"Log in here":["Accedi qui"],"Account Registration:":["Registrazione account:"],"Register":["Registrati"],"Choose a different provider":["Scegli un altro fornitore"],"Hold tight, we\'re fetching the registration form…":["Tieniti forte, stiamo recuperando il modulo di registrazione…"],"Cancel":["Annulla"],"The connection has dropped, attempting to reconnect.":["La connessione è caduta, attendi la riconnessione."],"An error occurred while connecting to the chat server.":["Si è verificato un errore durante la connessione al server."],"Your XMPP address and/or password is incorrect. Please try again.":["Il tuo indirizzo XMPP e/o la tua password sono sbagliati. Riprova."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Spiacente, impossibile connettersi all\'host XMPP con il dominio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Il server XMPP non ha offerto un meccanismo di autenticazione supportato"],"Undecryptable OMEMO message":["Messaggio OMEMO non decifrabile"],"Sorry, could not determine upload URL.":["Spiacente, impossibile determinare l\'URL di caricamento."],"Sorry, could not determine file upload URL.":["Spiacente, impossibile determinare l\'URL di caricamento del file."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Spiacente, impossibile caricare il tuo file. Risposta del tuo server: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Spiacente, caricamento del file non riuscito."],"You\'re not allowed to retract your message.":["Non ti è permesso di ritrattare il tuo messaggio."],"Sorry, an error occurred while trying to retract your message.":["Spiacente, si è verificato un errore tentando di ritrattare il tuo messaggio."],"You\'re not allowed to send a message.":["Non ti è permesso inviare un messaggio."],"Sorry, an error occurred while trying to send your message.":["Spiacente, si è verificato un errore tentando di inviare il tuo messaggio."],"Sorry, looks like file upload is not supported by your server.":["Spiacente, sembra che il caricamento dei file non sia supportato dal tuo server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La dimensione del tuo file, %1$s, supera il massimo consentito dal tuo server, che è %2$s."],"Smileys and emotions":["Faccine ed emoji"],"People":["Persone"],"Activities":["Attività "],"Travel":["Viaggi"],"Objects":["Oggetti"],"Animals and nature":["Animali e natura"],"Food and drink":["Cibo e bevande"],"Symbols":["Simboli"],"Flags":["Bandiere"],"Stickers":["Adesivi"],"This groupchat is not anonymous":["Questa conversazione di gruppo non è anonima"],"This groupchat now shows unavailable members":["Questa conversazione di gruppo ora mostra membri non disponibili"],"This groupchat does not show unavailable members":["Questa conversazione di gruppo non mostra i membri non disponibili"],"The groupchat configuration has changed":["La configurazione della conversazione di gruppo è cambiata"],"Groupchat logging is now enabled":["La registrazione della conversazione di gruppo ora è abilitata"],"Groupchat logging is now disabled":["La registrazione della conversazione di gruppo ora è disabilitata"],"This groupchat is now no longer anonymous":["Questa conversazione di gruppo ora non è più anonima"],"This groupchat is now semi-anonymous":["Questa conversazione di gruppo ora è semi-anonima"],"This groupchat is now fully-anonymous":["Questa conversazione di gruppo ora è completamente anonima"],"A new groupchat has been created":["Una nuova conversazione di gruppo è stata creata"],"Your nickname has been automatically set to %1$s":["Il tuo soprannome è stato impostato automaticamente come %1$s"],"Your nickname has been changed to %1$s":["Il tuo nickname è stato cambiato come %1$s"],"You have been banned from this groupchat":["Sei stato bandito da questa conversazione di gruppo"],"You have exited this groupchat due to a technical problem":["Sei uscito da questa conversazione di gruppo per un problema tecnico"],"You have been kicked from this groupchat":["Sei stato espulso da questa conversazione di gruppo"],"You have been removed from this groupchat because of an affiliation change":["Sei stato rimosso da questa conversazione di gruppo a causa di un cambio di affiliazione"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sei stato rimosso da questa conversazione di gruppo poiché ora è stata ristretta ai soli membri e tu non ne fai parte"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sei stato rimosso da questa conversazione di gruppo perchè il servizio di host è in fase di spegnimento"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Ritrattazione non consegnata perchè non partecipi alla conversazione di gruppo."],"Your message was not delivered because you weren\'t allowed to send it.":["Il tuo messaggio non è stato spedito perchè non ti è permesso inviare messaggi."],"Your message was not delivered because you\'re not present in the groupchat.":["Il tuo messaggio non è stato spedito perchè non partecipi alla conversazione di gruppo."],"A timeout happened while while trying to retract your message.":["Tempo scaduto tentando di ritrattare il tuo messaggio."],"You\'re not allowed to register yourself in this groupchat.":["Non ti è permesso registrarti in questa conversazione di gruppo."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Non ti è permesso registrarti in questa conversazione di gruppo perchè è per soli membri."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Non ti è permesso registrare il tuo soprannome in questa conversazione di gruppo, non supporta la registrazione."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Non ti è permesso registrare il tuo soprannome in questa conversazione di gruppo, è stato fornito un modulo di dati non valido."],"Topic set by %1$s":["Argomento impostato da %1$s"],"Topic cleared by %1$s":["Argomento rimosso da %1$s"],"%1$s has been banned by %2$s":["%1$s è stato bannato da %2$s"],"%1$s has been banned":["%1$s è stato bannato"],"%1$s\'s nickname has changed":["%1$s nickname è cambiato"],"%1$s has been kicked out by %2$s":["%1$s è stato espulso da %2$s"],"%1$s has been kicked out":["%1$s è stato espulso"],"%1$s has been removed because of an affiliation change":["%1$s è stato rimosso a causa di un cambio di affiliazione"],"%1$s has been removed for not being a member":["%1$s è stato rimosso in quanto non membro"],"%1$s is no longer an admin of this groupchat":["%1$s non è più un amministratore di questa conversazione di gruppo"],"%1$s is no longer an owner of this groupchat":["%1$s non è più un proprietario di questa conversazione di gruppo"],"%1$s is no longer banned from this groupchat":["%1$s non è più bandito da questa conversazione di gruppo"],"%1$s is no longer a member of this groupchat":["%1$s non è più un membro di questa conversazione di gruppo"],"%1$s is now a member of this groupchat":["%1$s ora è un membro di questa conversazione di gruppo"],"%1$s is now an %2$s of this groupchat":["%1$s ora è un %2$s di questa conversazione di gruppo"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Il soprannome che hai scelto è riservato o attualmente in uso, per favore scegline uno diverso."],"Password incorrect":["Password non corretta"],"You are not on the member list of this groupchat.":["Non sei sulla lista dei membri di questa conversazione di gruppo."],"You have been banned from this groupchat.":["Sei stato bandito da questa conversazione di gruppo."],"You are not allowed to create new groupchats.":["Non ti è permesso creare nuove conversazioni di gruppo."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Il tuo soprannome non è conforme alle regole di questa conversazione di gruppo."],"This groupchat does not (yet) exist.":["Questa conversazione di gruppo non esiste (per ora)."],"This groupchat has reached its maximum number of participants.":["Questa conversazione di gruppo ha raggiunto il limite massimo di partecipanti."],"Remote server not found":["Server remoto non trovato"],"The explanation given is: \\"%1$s\\".":["La spiegazione data è: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s ti ha invitato a partecipare ad una conversazione di gruppo: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s ti ha invitato a partecipare ad una conversazione di gruppo: %2$s, ed ha lasciato la seguente motivazione: “%3$sâ€"],"Error":["Errore"],"Sorry, something went wrong while trying to save your bookmark.":["Scusa, qualcosa è andato storto durante il salvataggio del tuo segnalibro."],"Timeout Error":["Errore di Tempo Scaduto"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Il server non ha consegnato i tuoi segnalibri entro il tempo consentito. Puoi ricaricare la pagina e richiederli ancora."],"My contacts":["I miei contatti"],"Pending contacts":["Contatti in attesa"],"Contact requests":["Richieste di contatto"],"Ungrouped":["Senza Gruppo"],"New messages":["Nuovi messaggi"],"Sorry, there was an error while trying to add %1$s as a contact.":["Scusa, si è verificato un errore durante il tentativo di aggiungere %1$s come contatto."],"This client does not allow presence subscriptions":["Questo client non consente sottoscrizioni di presenza"],"Click to hide these contacts":["Clicca per nascondere questi contatti"],"Unbookmark this groupchat":["Rimuovi dai segnalibri questa conversazione di gruppo"],"Click to open this groupchat":["Clicca per aprire questa conversazione di gruppo"],"Click to toggle the bookmarks list":["Clicca per aprire/chiudere l\'elenco dei segnalibri"],"Bookmarks":["Segnalibri"],"Bookmark this groupchat":["Aggiungi ai segnalibri questa conversazione di gruppo"],"Would you like this groupchat to be automatically joined upon startup?":["Vuoi unirti automaticamente a questa conversazione di gruppo subito dopo aver effettuato l\'accesso?"],"The name for this bookmark:":["Nome per questo segnalibro:"],"What should your nickname for this groupchat be?":["Quale dovrebbe essere il soprannome per questa conversazione di gruppo?"],"Save":["Salva"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Sei sicuro di voler rimuovere il segnalibro \\"%1$s\\"?"],"Unbookmark":["Elimina il segnalibro"],"Bookmark":["Segnalibro"],"Close":["Chiudi"],"OK":["OK"],"Image: ":["Immagine: "],"Download audio file \\"%1$s\\"":["Scarica file audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Scarica file \\"%1$s\\""],"Cancel Editing":["Annulla modifica"],"Edit":["Modifica"],"Retract":["Ritratta"],"Message versions":["Versioni del messaggio"],"Retry":["Riprova"],"Uploading file:":["Caricamento file:"],"%1$s has removed this message":["%1$s ha rimosso questo messaggio"],"This message has been edited":["Questo messaggio è stato modificato"],"Show more":["Mostra di più"],"Show less":["Mostra meno"],"No message history available.":["Nessuna cronologia del messaggio disponibile."],"Search results":["Cerca risultati"],"Search":["Cerca"],"Insert emojis":["Inserisci emoji"],"Send the message":["Invia il messaggio"],"Start a call":["Inizia una chiamata"],"Message characters remaining":["Caratteri rimanenti per il messaggio"],"Hide participants":["Nascondi partecipanti"],"Show participants":["Mosta partecipanti"],"Choose a file to send":["Scegli un file da inviare"],"Click to write as a normal (non-spoiler) message":["Clicca per scrivere un messaggio normale (senza spoiler)"],"Click to write your message as a spoiler":["Clicca per scrivere un messaggio come spoiler"],"The User\'s Profile Image":["L\'immagine di profilo dell\'utente"],"Trusted":["Fidato"],"Untrusted":["Non fidato"],"OMEMO Fingerprints":["Impronte OMEMO"],"No OMEMO-enabled devices found":["Nessun dispositivo OMEMO abilitato trovato"],"Remove as contact":["Rimuovi dai contatti"],"XMPP Address":["Indirizzo XMPP"],"Email":["Email"],"Full Name":["Nome Completo"],"Nickname":["Soprannome"],"Refresh":["Aggiorna"],"Role":["Ruolo"],"URL":["URL"],"%1$s is typing":["%1$s sta scrivendo"],"%1$s has stopped typing":["%1$s ha smesso di scrivere"],"%1$s has gone away":["%1$s si è allontanato"],"Remove messages":["Rimuovi messaggi"],"Close this chat":["Chiudi questa conversazione"],"Write in the third person":["Scrivi in terza persona"],"Show this menu":["Mostra questo menu"],"Hidden message":["Messaggio Nascosto"],"Message":["Messaggio"],"Optional hint":["Suggerimento opzionale"],"You have unread messages":["Hai messaggi non letti"],"Details":["Dettagli"],"See more information about this person":["Mostra più informazioni su questa persona"],"Close and end this conversation":["Chiudi e termina questa conversazione"],"Sorry, the connection has been lost, and your message could not be sent":["Spiacente, la connessione è stata persa e il tuo messaggio non è stato inviato"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Tieni conto che altri client (e server) XMPP/Jabber potrebbero non supportare ancora il ritiro e questo messaggio potrebbe non essere rimosso dappertutto."],"Are you sure you want to retract this message?":["Sei sicuro di voler ritirare questo messaggio?"],"Confirm":["Conferma"],"You have an unsent message which will be lost if you continue. Are you sure?":["Hai un messaggio non inviato che sarà perso se continui. Sei sicuro?"],"Are you sure you want to clear the messages from this conversation?":["Sei sicuro di volere pulire i messaggi da questa conversazione?"],"%1$s has gone offline":["%1$s si è disconnesso"],"%1$s is busy":["%1$s è occupato"],"%1$s is online":["%1$s è in linea"],"Sorry, something went wrong while trying to refresh":["Scusa, qualcosa è andato storto durante il tentativo di aggiornamento"],"Are you sure you want to remove this contact?":["Sei sicuro di voler rimuovere questo contatto?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Scusa, si è verificato un errore durante il tentativo di rimozione di %1$s come contatto."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per migliorare le prestazioni, memorizziamo i tuoi dati nella cache in questo browser. Deseleziona questa casella se si tratta di un computer pubblico o se desideri che i tuoi dati vengano eliminati quando esci. È importante disconnettersi esplicitamente, altrimenti non tutti i dati memorizzati nella cache potrebbero essere eliminati. Nota bene, quando utilizzi un dispositivo non fidato, la crittografia OMEMO NON è disponibile."],"This is a trusted device":["Questo è un dispositivo fidato"],"Password":["Password"],"Create an account":["Crea un account"],"Don\'t have a chat account?":["Non hai un account?"],"Log in":["Accedi"],"Disconnected":["Disconnesso"],"Click here to log in anonymously":["Clicca per accedere in modo anonimo"],"Username":["Nome utente"],"user@domain":["utente@dominio"],"Please enter a valid XMPP address":["Inserisci un indirizzo XMPP valido"],"Chat Contacts":["Contatti"],"Toggle chat":["Attiva/disattiva conversazione"],"Click to restore this chat":["Clicca per ripristinare questa conversazione"],"Minimized":["Ridotto"],"Minimize":["Ridotto"],"Minimize this chat":["Riduci questa conversazione"],"Minimize this groupchat":["Riduci questa conversazione"],"This user is a moderator.":["Questo utente è un moderatore."],"This user can send messages in this groupchat.":["Questo utente può inviare messaggi in questa conversazione di gruppo."],"This user can NOT send messages in this groupchat.":["Questo utente NON può inviare messaggi in questa conversazione di gruppo."],"Owner":["Proprietario"],"Admin":["Amministratore"],"Member":["Membro"],"Moderator":["Moderatore"],"Visitor":["Visitatore"],"Click to mention %1$s in your message.":["Clicca per menzionare %1$s nel tuo messaggio."],"Participants":["Partecipanti"],"This field is required":["Questo campo è richiesto"],"Join":["Unisciti"],"Enter a new Groupchat":["Entra in una nuova Conversazione di gruppo"],"name@conference.example.org":["nome@conferenza.esempio.org"],"Groupchat name":["Nome conversazione di gruppo"],"Groupchat address":["Indirizzo conversazione di gruppo"],"Groupchat id is invalid.":["L\'ID della conversazione di gruppo non è valido."],"Invite":["Invita"],"Invite someone to this groupchat":["Invita qualcuno in questa conversazione di gruppo"],"user@example.org":["utente@esempio.org"],"Optional reason for the invitation":["Motivazione facoltativa per l\'invito"],"Show groupchats":["Mostra conversazioni di gruppo"],"Server address":["Indirizzo del server"],"Show more information on this groupchat":["Mostra più informazioni su questa conversazione di gruppo"],"Query for Groupchats":["Interroga per Conversazioni di gruppo"],"Description:":["Descrizione:"],"Groupchat Address (JID):":["Indirizzo conversazione di gruppo (JID):"],"Participants:":["Partecipanti:"],"Features:":["Funzionalità :"],"Requires authentication":["Richiede autenticazione"],"Hidden":["Nascosta"],"Requires an invitation":["Richiede un invito"],"Moderated":["Moderata"],"Non-anonymous":["Non anonima"],"Open":["Aperta"],"Permanent":["Permanente"],"Public":["Pubblica"],"Semi-anonymous":["Semi-anonima"],"Temporary":["Temporanea"],"Unmoderated":["Non moderata"],"conference.example.org":["conferenza.esempio.org"],"Groupchats found":["Conversazioni di gruppo trovate"],"No groupchats found":["Nessuna conversazione di gruppo trovata"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["I moderatori sono utenti privilegiati che possono cambiare i ruoli di altri utenti (ad eccezione degli amministratori o dei possessori di affiliazioni)."],"The default role, implies that you can read and write messages.":["Il ruolo predefinito, implica che tu possa leggere e scrivere messaggi."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Ai visitatori non è consentito di scrivere messaggi in una conversazione multi utente moderata."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietario è la più alta affiliazione. I proprietari possono modificare ruoli e affiliazioni di tutti gli altri utenti."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Amministratore è la seconda più alta affiliazione. Gli amministratori possono modificare ruoli e affiliazioni di tutti gli altri utenti ad eccezione dei proprietari."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per bandire un utente, puoi assegnare l\'affiliazione di \\"escluso\\"."],"Change role":["Cambia ruolo"],"New Role":["Nuovo Ruolo"],"Reason":["Motivazione"],"Change affiliation":["Cambia l\'affiliazione"],"New affiliation":["Nuova affiliazione"],"Affiliation":["Affiliazione"],"Moderator Tools":["Strumenti di Moderazione"],"No users with that affiliation found.":["Nessun utente con quell\'affiliazione trovato."],"No users with that role found.":["Nessun utente con quel ruolo trovato."],"Type here to filter the search results":["Scrivi qui per filtrare i risultati della ricerca"],"Show users":["Mostra utenti"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["I ruoli sono assegnati agli utenti e permettono o negano certe funzionalità nelle conversazioni multi utente. Sono assegnati sia esplicitamente che implicitamente come parte di un\'affiliazione. Un ruolo che non è dato per affiliazione è valido solo per la sessione corrente dell\'utente."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Un\'affiliazione è un diritto permanente che tipicamente implica un certo ruolo che garantisce privilegi e responsabilità . Per esempio amministratori e proprietari automaticamente hanno il ruolo di moderatore."],"Timeout error while trying to set the affiliation":["Tempo scaduto tentando di impostare l\'affiliazione"],"Sorry, you\'re not allowed to make that change":["Spiacente, non ti è permesso effettuare quella modifica"],"Sorry, something went wrong while trying to set the affiliation":["Scusa, si è verificato un errore durante l\'impostazione dell\'affiliazione"],"Affiliation changed":["Affiliazione cambiata"],"Role changed":["Ruolo cambiato"],"You\'re not allowed to make that change":["Non ti è permesso effettuare questa modifica"],"Sorry, something went wrong while trying to set the role":["Scusa, si è verificato un errore durante l\'impostazione del ruolo"],"Topic":["Argomento"],"Topic author":["Autore argomento"],"Groupchat address (JID)":["Indirizzo conversazione di gruppo (JID)"],"Message archiving":["Archiviazione Messaggi"],"Messages are archived on the server":["Messaggi sono archiviati sul server"],"Description":["Descrizione"],"Features":["Funzionalità "],"This groupchat is not publicly searchable":["Questa conversazione di gruppo non è cercabile pubblicamente"],"This groupchat is restricted to members only":["Questa conversazione di gruppo è ristretta ai soli membri"],"Members only":["Solo membri"],"Participants entering this groupchat need to request permission to write":["I partecipanti che entrano in questa conversazione di gruppo devono richiedere il permesso di scrivere"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Questa conversazione di gruppo non richiede una password per accedere"],"No password required":["Nessuna password richiesta"],"Not anonymous":["Non anonima"],"All other groupchat participants can see your XMPP address":["Tutti gli altri partecipanti alla conversazione di gruppo possono vedere il tuo indirizzo XMPP"],"Not moderated":["Non moderata"],"Participants entering this groupchat can write right away":["I partecipanti che entrano in questa conversazione di gruppo possono scrivere immediatamente"],"Online users":["Utenti in linea"],"Anyone can join this groupchat":["Chiunque può unirsi a questa conversazione di gruppo"],"This groupchat requires a password before entry":["Questa conversazione di gruppo richiede una password per accedere"],"Password protected":["Protetto da Password"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Questa conversazione di gruppo persiste anche se diventa inoccupata"],"Only moderators can see your XMPP address":["Solo i moderatori possono vedere il tuo indirizzo XMPP"],"This groupchat will disappear once the last person leaves":["Questa conversazione di gruppo sparirà se diventa inoccupata"],"This groupchat is publicly searchable":["Questa conversazione di gruppo è ricercabile pubblicamente"],"Groupchat info for %1$s":["Informazioni della conversazione di gruppo per %1$s"],"You\'re not allowed to send messages in this room":["Non ti è permesso inviare messaggi in questa stanza"],"The conversation has moved. Click below to enter.":["La conversazione si è trasferita. Clicca qui sotto per entrare."],"This groupchat no longer exists":["Questa conversazione di gruppo non esiste più"],"Hide the groupchat topic":["Nascondi l\'argomento della conversazione"],"This groupchat is bookmarked":["Questa conversazione è nei segnalibri"],"Enter groupchat":["Entra nella conversazione di gruppo"],"Choose a nickname to enter":["Scegli un soprannome per entrare"],"Please choose your nickname":["Per favore scegli il tuo soprannome"],"This groupchat requires a password":["Questa conversazione di gruppo richiede una password"],"Password: ":["Password: "],"Submit":["Invia"],"%1$s has entered the groupchat":["%1$s è entrato nella conversazione di gruppo"],"%1$s has left the groupchat":["%1$s ha lasciato la conversazione di gruppo"],"%1$s is now a moderator":["%1$s ora è un moderatore"],"%1$s is no longer a moderator":["%1$s non è più un moderatore"],"%1$s has been given a voice":["%1$s ora può scrivere nella conversazione"],"%1$s has been muted":["%1$s è stato silenziato"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s stanno scrivendo"],"%1$s have stopped typing":["%1$s hanno smesso di scrivere"],"%1$s have gone away":["%1$s si sono allontanati"],"%1$s have entered the groupchat":["%1$s sono entrati nella conversazione di gruppo"],"%1$s have left the groupchat":["%1$s hanno abbandonato la conversazione di gruppo"],"%1$s are now moderators":["%1$s ora sono moderatori"],"%1$s are no longer moderators":["%1$s non sono più moderatori"],"%1$s have been given voices":["%1$s ora possono scrivere nella conversazione"],"%1$s have been muted":["%1$s sono stati silenziati"],"Change user\'s affiliation to admin":["Cambia l\'affiliazione dell\'utente ad amministratore"],"Ban user by changing their affiliation to outcast":["Bandisci l\'utente cambiando l\'affiliazione ad escluso"],"Clear the chat area":["Pulisci l\'area della conversazione"],"Close this groupchat":["Chiudi questa conversazione di gruppo"],"Change user role to participant":["Cambia il ruolo dell\'utente in partecipante"],"Remove this groupchat":["Rimuovi questa conversazione di gruppo"],"Kick user from groupchat":["Espelli utente dalla conversazione di gruppo"],"Write in 3rd person":["Scrivi in terza persona"],"Grant membership to a user":["Concedi lo stato di membro ad un utente"],"Opens up the moderator tools GUI":["Apri l\'interfaccia degli strumenti di moderazione"],"Remove user\'s ability to post messages":["Rimuovi la possibilità di inviare messaggi dell\'utente"],"Change your nickname":["Cambia il tuo soprannome"],"Grant moderator role to user":["Concedi il ruolo di moderatore all\'utente"],"Grant ownership of this groupchat":["Concedi la proprietà di questa conversazione di gruppo"],"Register your nickname":["Registra il tuo soprannome"],"Revoke the user\'s current affiliation":["Revoca l\'attuale affiliazione dell\'utente"],"Set groupchat subject":["Imposta l\'oggetto della conversazione di gruppo"],"Set groupchat subject (alias for /subject)":["Imposta l\'oggetto della conversazione di gruppo (alias per /oggetto)"],"Allow muted user to post messages":["Consenti all\'utente silenziato di inviare messaggi"],"You are about to retract this message.":["Stai per ritirare questo messaggio."],"You may optionally include a message, explaining the reason for the retraction.":["Puoi facoltativamente includere un messaggio, spiegando il motivo del ritiro."],"Message Retraction":["Ritiro Messaggio"],"Optional reason":["Motivazione facoltativa"],"Sorry, you\'re not allowed to retract this message":["Scusa, non ti è consentito di ritirare questo messaggio"],"A timeout occurred while trying to retract the message":["Tempo scaduto durante il tentativo di ritirare il tuo messaggio"],"Sorry, you\'re not allowed to retract this message.":["Scusa, non ti è consentito di ritirare questo messaggio."],"Show more information about this groupchat":["Mostra più informazioni su questa conversazione di gruppo"],"Configure":["Configura"],"Configure this groupchat":["Configura questa conversazione di gruppo"],"Invite someone to join this groupchat":["Invita qualcuno ad unirsi a questa conversazione di gruppo"],"Show topic":["Mostra argomento"],"Hide topic":["Nascondi argomento"],"Show the topic message in the heading":["Mostra l\'argomento nell\'intestazione"],"Hide the topic in the heading":["Nascondi l\'argomento nell\'intestazione"],"Moderate":["Modera"],"Moderate this groupchat":["Modera questa conversazione di gruppo"],"Destroy":["Distruggi"],"Leave":["Esci"],"Leave and close this groupchat":["Esci e chiudi questa conversazione di gruppo"],"Are you sure you want to leave this groupchat?":["Vuoi veramente abbandonare questa conversazione di gruppo?"],"Hide the list of participants":["Nascondi la lista dei partecipanti"],"Forbidden: you do not have the necessary role in order to do that.":["Non consentito: non hai il ruolo necessario per fare questo."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Non consentito: non hai l\'affiliazione necessaria per fare questo."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Errore: il comando \\"%1$s\\" richiede due argomenti, il soprannome dell\'utente e opzionalmente una motivazione."],"Error: couldn\'t find a groupchat participant based on your arguments":["Errore: non è stato possibile trovare un partecipante alla conversazione di gruppo con gli argomenti forniti"],"Error: found multiple groupchat participant based on your arguments":["Errore: trovati più partecipanti alla conversazione di gruppo con gli argomenti forniti"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Nessun partecipante trovato con quel nick. Potrebbe aver abbandonato la conversazione."],"Sorry, an error happened while running the command.":["Scusa, si è verificato un errore durante l\'esecuzione del comando."],"Check your browser\'s developer console for details.":["Controlla la console per sviluppatori del tuo browser per dettagli."],"Are you sure you want to destroy this groupchat?":["Vuoi veramente distruggere questa conversazione di gruppo?"],"Please enter the XMPP address of this groupchat to confirm":["Per favore inserisci l\'indirizzo XMPP di questa conversazione per confermare"],"name@example.org":["nome@esempio.org"],"Optional reason for destroying this groupchat":["Motivo facoltativo per distruggere questa conversazione"],"Optional XMPP address for a new groupchat that replaces this one":["Indirizzo XMPP facoltativo per la nuova conversazione che sostituisce questa"],"replacement@example.org":["sostituto@esempio.org"],"Your nickname is \\"%1$s\\"":["Il tuo soprannome è:\\" %1$s\\""],"Error: invalid number of arguments":["Errore: numero non valido di argomenti"],"This action was done by %1$s.":["Questa azione è stata fatta da %1$s."],"The reason given is: \\"%1$s\\".":["La motivazione data è: \\"%1$s\\"."],"Groupchats":["Conversazioni di gruppo"],"Add a new groupchat":["Aggiungi una nuova conversazione di gruppo"],"Query for groupchats":["Interroga per conversazioni di gruppo"],"Sorry, an error occurred while trying to submit the config form.":["Scusa, si è verificato un errore durante il tentativo di inviare il modulo di configurazione."],"Close these announcements":["Chiudi questi annunci"],"Announcements":["Annunci"],"Click to open this server message":["Clicca per aprire questo messaggio del server"],"Notification from %1$s":["Notifica da %1$s"],"%1$s says":["%1$s dice"],"Encrypted message received":["Messaggio cifrato ricevuto"],"has gone offline":["si è disconnesso"],"has gone away":["si è allontanato"],"is busy":["è occupato"],"has come online":["ora è in linea"],"wants to be your contact":["vuole essere un tuo contatto"],"Hide":["Nascondi"],"Execute":["Esegui"],"On which entity do you want to run commands?":["Su quale entità vuoi eseguire i comandi?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Alcuni servizi XMPP ed entità permettono agli utenti privilegiati di eseguire comandi ad-hoc."],"Commands found":["Comandi trovati"],"List available commands":["Elenca comandi disponibili"],"No commands found":["Nessun comando trovato"],"Sorry, an error occurred while looking for commands on that entity.":["Spiacente, si è verificato un errore cercando comandi su quella entità ."],"The specified entity doesn\'t support ad-hoc commands":["L\'entità specificata non supporta comandi ad-hoc"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Spiacente, si è verificato un errore tentando di eseguire il comando. Controlla la console del browser per i dettagli"],"About":["A proposito"],"Commands":["Comandi"],"Settings":["Impostazioni"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s Open Source %2$s sviluppato per voi da %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traducilo %2$s nella tua lingua"],"Log out":["Disconnettiti"],"Click to change your chat status":["Clicca per cambiare il tuo stato"],"Show details about this chat client":["Mostra più dettagli su questo client"],"Your avatar image":["La tua immagine di profilo"],"Checkbox for selecting the following fingerprint":["Casella di controllo per selezionare le impronte seguenti"],"Device without a fingerprint":["Dispositivo senza un\'impronta"],"Checkbox for selecting the following device":["Casella per selezionare il seguente dispositivo"],"Other OMEMO-enabled devices":["Altri dispositivi abilitati OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Casella di controllo per selezionare le impronte di tutti gli altri dispositivi OMEMO"],"Remove checked devices and close":["Rimuovi dispositivi selezionati e chiudi"],"Select all":["Seleziona tutto"],"This device\'s OMEMO fingerprint":["L\'impronta OMEMO di questo dispositivo"],"Generate new keys and fingerprint":["Genera nuove chiavi e impronte"],"Your Profile":["Il tuo Profilo"],"XMPP Address (JID)":["Indirizzo XMPP (JID)"],"Save and close":["Salva e chiudi"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilizza le virgole per separare più ruoli. I tuoi ruoli sono visualizzati accanto al tuo nome nei tuoi messaggi della conversazione."],"OMEMO":["OMEMO"],"Profile":["Profilo"],"Sorry, an error happened while trying to save your profile data.":["Scusa, si è verificato un errore durante il salvataggio dei dati del tuo profilo."],"You can check your browser\'s developer console for any error output.":["Puoi controllare la console per sviluppatori del tuo browser per qualsiasi output di errore."],"Away":["Assente"],"Busy":["Occupato"],"Custom status":["Stato personalizzato"],"Offline":["Non in linea"],"Online":["In linea"],"Away for long":["Assente da molto"],"Change chat status":["Clicca per cambiare il tuo stato"],"Personal status message":["Messaggio personale di stato"],"I am %1$s":["Io sono %1$s"],"Are you sure you want to log out?":["Sei sicuro di volerti disconnettere?"],"online":["in linea"],"busy":["occupato"],"away for long":["assente da molto"],"away":["assente"],"offline":["non in linea"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Spiacente, impossibile decifrare un messaggio OMEMO ricevuto a causa di un errore."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Spiacenti, non è stato possibile decifrare un OMEMO ricevuto perché non abbiamo il JID per quell\'utente."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s non sembra abbia un client che supporta OMEMO. Non sembra sia possibile avere una conversazione criptata in questa conversazione di gruppo."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Impossibile usare la crittografia end-to-end in questa conversazione di gruppo, la conversazione è anonima o non tutti i partecipanti supportano OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Impossibile utilizzare la crittografia end-to-end perchè %1$s utilizza un client che non supporta OMEMO."],"Messages are being sent in plaintext":["I messaggi saranno inviati come testo normale"],"Messages are sent encrypted":["I messaggi vengono inviati cifrati"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Questa conversazione di gruppo deve essere per soli membri e non anonima per potere supportare i messaggi cifrati OMEMO"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Scusa, non siamo in grado di inviare un messaggio criptato perchè %1$s richiede che tu sottoscriva il suo stato di presenza in modo da visualizzare le sue informazioni OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Scusa, non siamo in grado di inviare un messaggio criptato perchè il server remoto per %1$s non può essere trovato"],"Unable to send an encrypted message due to an unexpected error.":["Non siamo in grado di inviare un messaggio criptato a causa di un errore inaspettato."],"Sorry, an error occurred while trying to remove the devices.":["Scusa, si è verificato un errore durante la rimozione dei dispositivi."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Sei sicuro di voler generare delle nuove chiavi OMEMO? Questo rimuoverà le tue vecchie chiavi, e tutti i messaggi criptati in precedenza non saranno più decrittabili su questo dispositivo."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Scusa, nessun dispositivo trovato al quale possiamo inviare un messaggio criptato OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Questo è un messaggio criptato OMEMO che il tuo client non sembra supportare. Trova più informazioni su https://conversations.im/omemo"]," e.g. conversejs.org":[" es. conversejs.org"],"Fetch registration form":["Recupera modulo di registrazione"],"Tip: A list of public XMPP providers is available":["Suggerimento: È disponibile un elenco di fornitori XMPP pubblici"],"here":["qui"],"Sorry, we\'re unable to connect to your chosen provider.":["Scusa, non siamo in grado di connetterci al fornitore che hai scelto."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Scusa, il fornitore specificato non supporta la registrazione di account da remoto. Per favore prova con un altro fornitore."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Qualcosa è andato storto durante la connessione con “%1$sâ€. Sei sicuro che esista?"],"Now logging you in":["Ora ti stiamo facendo accedere"],"Registered successfully":["Registrazione riuscita"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Il provider ha respinto il tentativo di registrazione. Per favore controlla che i dati inseriti siano corretti."],"Leave this groupchat":["Lascia questa conversazione di gruppo"],"Click to toggle the list of open groupchats":["Clicca per aprire/chiudere l\'elenco delle conversazioni di gruppo"],"Open Groupchats":["Conversazioni di gruppo aperte"],"Are you sure you want to leave the groupchat %1$s?":["Sei sicuro di voler lasciare la conversazione di gruppo \\"%1$s\\"?"],"Add":["Aggiungi"],"Add a Contact":["Aggiungi un Contatto"],"This contact is busy":["Questo contatto è occupato"],"This contact is online":["Questo contatto è in linea"],"This contact is offline":["Questo contatto non è in linea"],"This contact is unavailable":["Questo contatto non è disponibile"],"This contact is away for an extended period":["Questo contatto è lontano dal dispositivo da un lungo periodo"],"This contact is away":["Questo contatto è lontano dal dispositivo"],"Contact name":["Nome del contatto"],"Optional nickname":["Soprannome opzionale"],"Sorry, could not find a contact with that name":["Scusa, non è stato possibile trovare un contatto con quel nome"],"This contact has already been added":["Questo contatto è già stato aggiunto"],"Filter":["Filtra"],"Filter by contact name":["Filtra per nome del contatto"],"Filter by group name":["Filtra per nome del gruppo"],"Filter by status":["Filtra per stato"],"Any":["Qualsiasi"],"Unread":["Non letto"],"Chatty":["Chiaccherone"],"Extended Away":["Lontano da molto tempo"],"Click to remove %1$s as a contact":["Clicca per rimuovere %1$s dai contatti"],"Click to accept the contact request from %1$s":["Clicca per accettare la richiesta di contatto da %1$s"],"Click to decline the contact request from %1$s":["Clicca per rifiutare la richiesta di contatto da %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Clicca per parlare con %1$s (indirizzo XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Sei sicuro di voler rifiutare questa richiesta di contatto?"],"Contacts":["Contatti"],"Add a contact":["Aggiungi un contatto"],"Re-sync your contacts":["Ri-sincronizza i tuoi contatti"]}}}')}}]); //# sourceMappingURL=it-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/ja-LC_MESSAGES-converse-po.js b/src/conversejs/locales/ja-LC_MESSAGES-converse-po.js index c794a7f1295344edc2a54083969f5048f4ecfbcb..c4a6e1bb87b76e05113dd9e23d26ab0c33796263 100644 --- a/src/conversejs/locales/ja-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/ja-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[159],{437:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"ja"},"Create your account":["アカウントを作æˆã—ã¾ã™"],"Please enter the XMPP provider to register with:":["登録ã™ã‚‹ XMPP プãƒãƒã‚¤ãƒ€ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„:"],"Already have a chat account?":["アカウントを既ã«æŒã£ã¦ã„ã¾ã™ã‹ ?"],"Log in here":["ã“ã“ã§ãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„"],"Account Registration:":["アカウントã®ç™»éŒ²:"],"Register":["登録"],"Choose a different provider":["別ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã‚’é¸æŠž"],"Hold tight, we\'re fetching the registration form…":["ãŸã ã„ã¾å…¥åŠ›æ¬„ã‚’å–り寄ã›ã¦ã„ã¾ã™â€¦"],"Cancel":["ã‚ャンセル"],"The connection has dropped, attempting to reconnect.":["接続ãŒå¤±ã‚ã‚Œã¾ã—ãŸã€‚å†æŽ¥ç¶šã‚’試ã¿ã¾ã™ã€‚"],"An error occurred while connecting to the chat server.":["ãƒãƒ£ãƒƒãƒˆã‚µãƒ¼ãƒãƒ¼ã«æŽ¥ç¶šã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Your XMPP address and/or password is incorrect. Please try again.":["XMPP アドレス ã¨ãƒ‘スワードã®ä¸¡æ–¹ã¾ãŸã¯ä¸€æ–¹ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“。もã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。"],"Sorry, we could not connect to the XMPP host with domain: %1$s":["次ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã® XMPP ホストã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP サーãƒãƒ¼ã¯å¯¾å¿œã—ã¦ã„ã‚‹èªè¨¼å½¢å¼ã‚’æ示ã—ã¾ã›ã‚“ã§ã—ãŸ"],"Sorry, could not determine upload URL.":["アップãƒãƒ¼ãƒ‰ã® URL を確定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, could not determine file upload URL.":["ファイルアップãƒãƒ¼ãƒ‰ã® URL を確定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚サーãƒãƒ¼ã®å¿œç”: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"],"Sorry, looks like file upload is not supported by your server.":["サーãƒãƒ¼ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¯¾å¿œã—ã¦ã„ãªã„よã†ã§ã™ã€‚"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["ファイルã®ã‚µã‚¤ã‚º %1$s ã¯ã€ã‚µãƒ¼ãƒãƒ¼ã®åˆ¶é™å€¤ %2$s を超ãˆã¦ã„ã¾ã™ã€‚"],"Smileys and emotions":["スマイリーã¨æ„Ÿæƒ…アイコン"],"People":["人々"],"Activities":["å‹•å‘"],"Travel":["æ—…è¡Œ"],"Objects":["物"],"Animals and nature":["動物ã¨è‡ªç„¶"],"Food and drink":["食ã¹ç‰©ã¨é£²ã¿ç‰©"],"Symbols":["シンボル"],"Flags":["æ——"],"Stickers":["ステッカー"],"This groupchat is not anonymous":["ã“ã®è«‡è©±å®¤ã¯éžåŒ¿åã§ã™"],"This groupchat now shows unavailable members":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ä»¥å¤–ã«ã‚‚見ãˆã¾ã™"],"This groupchat does not show unavailable members":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ä»¥å¤–ã«ã¯è¦‹ãˆã¾ã›ã‚“"],"The groupchat configuration has changed":["談話室ã®è¨å®šãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ"],"Groupchat logging is now enabled":["談話室ã®è¨˜éŒ²ã‚’å–ã‚Šã¾ã™"],"Groupchat logging is now disabled":["談話室ã®è¨˜éŒ²ã‚’æ¢ã‚ã¾ã™"],"This groupchat is now no longer anonymous":["ã“ã®è«‡è©±å®¤ã¯åŒ¿åã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"This groupchat is now semi-anonymous":["ã“ã®è«‡è©±å®¤ã¯åŠåŒ¿åã§ã™"],"This groupchat is now fully-anonymous":["ã“ã®è«‡è©±å®¤ã¯åŒ¿åã§ã™"],"A new groupchat has been created":["æ–°ã—ã„談話室ãŒä½œæˆã•ã‚Œã¾ã—ãŸ"],"Your nickname has been automatically set to %1$s":["ニックãƒãƒ¼ãƒ ã¯è‡ªå‹•çš„ã« %1$s ã«è¨å®šã•ã‚Œã¾ã—ãŸ"],"Your nickname has been changed to %1$s":["ニックãƒãƒ¼ãƒ ã‚’ %1$s ã«å¤‰æ›´ã—ã¾ã—ãŸ"],"You have been banned from this groupchat":["ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"You have been kicked from this groupchat":["ã“ã®è«‡è©±å®¤ã‹ã‚‰è¹´ã‚Šå‡ºã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because of an affiliation change":["分掌ã®å¤‰æ›´ã®ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["談話室ãŒãƒ¡ãƒ³ãƒãƒ¼åˆ¶ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚メンãƒãƒ¼ã§ã¯ãªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because the service hosting it is being shut down":["サーãƒãƒ¼ãŒã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã™ã‚‹ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"Your message was not delivered because you weren\'t allowed to send it.":["メッセージをé€ä¿¡ã™ã‚‹æ¨©é™ãŒãªã„ãŸã‚ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯é…é€ã•ã‚Œã¾ã›ã‚“。"],"Your message was not delivered because you\'re not present in the groupchat.":["ã“ã®è«‡è©±å®¤ã«ã„ãªã„ãŸã‚ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯é…é€ã•ã‚Œã¾ã›ã‚“。"],"You\'re not allowed to register yourself in this groupchat.":["ã“ã®è«‡è©±å®¤ã«è‡ªåˆ†è‡ªèº«ã‚’登録ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼åˆ¶ã®ãŸã‚ã€ç™»éŒ²ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["登録ã«å¯¾å¿œã—ã¦ã„ãªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã«ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ を登録ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["データã®å½¢ãŒæ£ã—ããªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã«ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ を登録ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"],"Topic set by %1$s":["%1$s ãŒé¡Œã‚’è¨å®šã—ã¾ã—ãŸ"],"Topic cleared by %1$s":["%1$s ãŒé¡Œã‚’消去ã—ã¾ã—ãŸ"],"%1$s has been banned by %2$s":["%1$s 㯠%2$s ã«ã‚ˆã£ã¦ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"%1$s has been banned":["%1$s ã‚’ç· ã‚出ã—ã¾ã—ãŸ"],"%1$s\'s nickname has changed":["%1$s ã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"],"%1$s has been kicked out by %2$s":["%1$s 㯠%2$s ã«ã‚ˆã£ã¦è¹´ã‚Šå‡ºã•ã‚Œã¾ã—ãŸ"],"%1$s has been kicked out":["%1$s を蹴り出ã—ã¾ã—ãŸ"],"%1$s has been removed because of an affiliation change":["分掌ã®å¤‰æ›´ã®ãŸã‚ã€%1$s を削除ã—ã¾ã—ãŸ"],"%1$s has been removed for not being a member":["メンãƒãƒ¼ã§ãªããªã£ãŸãŸã‚ã€%1$s を削除ã—ã¾ã—ãŸ"],"%1$s is no longer an admin of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ç®¡ç†äººã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is no longer an owner of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ä¸»å®°è€…ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is no longer banned from this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"%1$s is no longer a member of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is now a member of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚Šã¾ã—ãŸ"],"%1$s is now an %2$s of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã® %2$s ã«ãªã‚Šã¾ã—ãŸ"],"The nickname you chose is reserved or currently in use, please choose a different one.":["ãã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯äºˆç´„ã•ã‚Œã¦ã„ã‚‹ã‹æ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚別ã®ã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„。"],"Password incorrect":["パスワードãŒé•ã„ã¾ã™"],"You are not on the member list of this groupchat.":["ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“。"],"You have been banned from this groupchat.":["ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸã€‚"],"You are not allowed to create new groupchats.":["æ–°ã—ã„談話室を作æˆã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["ニックãƒãƒ¼ãƒ ãŒã“ã®è«‡è©±å®¤ã®ãƒãƒªã‚·ãƒ¼ã«å¾“ã£ã¦ã„ã¾ã›ã‚“。"],"This groupchat does not (yet) exist.":["ã“ã®è«‡è©±å®¤ã¯(ã¾ã )å˜åœ¨ã—ã¾ã›ã‚“。"],"This groupchat has reached its maximum number of participants.":["ã“ã®è«‡è©±å®¤ã¯å…¥å®¤è€…æ•°ã®ä¸Šé™ã«é”ã—ã¦ã„ã¾ã™ã€‚"],"Remote server not found":["サーãƒãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"The explanation given is: \\"%1$s\\".":["ç†ç”±ã¯æ¬¡ã®ã¨ãŠã‚Š: \\"%1$s\\""],"%1$s has invited you to join a groupchat: %2$s":["%1$s ãŒã‚ãªãŸã‚’談話室 %2$s ã¸æ‹›å¾…ã—ã¦ã„ã¾ã™"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s ãŒã‚ãªãŸã‚’談話室%2$s ã¸æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚案内: \\"%3$s\\""],"Error":["エラー"],"Sorry, something went wrong while trying to save your bookmark.":["ブックマークã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"],"Timeout Error":["タイムアウトエラー"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["サーãƒãƒ¼ã¯æ™‚間内ã«ãƒ–ックマークã«å¿œç”ã—ã¾ã›ã‚“ã§ã—ãŸã€‚ã‚‚ã†ä¸€åº¦è©¦ã™ã«ã¯ã“ã®ãƒšãƒ¼ã‚¸ã‚’リãƒãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。"],"My contacts":["相手先一覧"],"Pending contacts":["ä¿ç•™ä¸ã®ç›¸æ‰‹å…ˆ"],"Contact requests":["会話ã«å‘¼ã³å‡ºã—"],"Ungrouped":["未整ç†"],"New messages":["æ–°ã—ã„メッセージ"],"Sorry, there was an error while trying to add %1$s as a contact.":["%1$s を相手先ã¨ã—ã¦è¿½åŠ ã—よã†ã¨ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚"],"This client does not allow presence subscriptions":["ã“ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¯åœ¨ç±çŠ¶æ³ã®ç”³è¾¼ã‚’許å¯ã—ã¦ã„ã¾ã›ã‚“"],"Click to hide these contacts":["クリックã—ã¦ã“れらã®ç›¸æ‰‹å…ˆã‚’éš ã™"],"Unbookmark this groupchat":["ã“ã®è«‡è©±å®¤ã‚’ブックマークã‹ã‚‰ã¯ãšã™"],"Click to open this groupchat":["クリックã—ã¦ã“ã®è«‡è©±å®¤ã‚’é–‹ã"],"Click to toggle the bookmarks list":["クリックã—ã¦ãƒ–ックマーク一覧を開閉"],"Bookmarks":["ブックマーク"],"Bookmark this groupchat":["ã“ã®è«‡è©±å®¤ã‚’ブックマーク"],"Would you like this groupchat to be automatically joined upon startup?":["起動時ã«ã“ã®è«‡è©±å®¤ã«è‡ªå‹•çš„ã«å…¥ã‚Šã¾ã™ã‹ ?"],"The name for this bookmark:":["ã“ã®ãƒ–ックマークã®åå‰:"],"What should your nickname for this groupchat be?":["ã“ã®è«‡è©±å®¤ã§ã®ã‚ãªãŸã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯ä½•ã«ã—ã¾ã™ã‹ ?"],"Save":["ä¿å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒ–ックマーク \\"%1$s\\" を削除ã—ã¦ã‚‚ã„ã„ã§ã™ã‹ ?"],"Unbookmark":["ブックマーク解除"],"Bookmark":["ブックマーク"],"Close":["é–‰ã˜ã‚‹"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["ダウンãƒãƒ¼ãƒ‰éŸ³å£°ãƒ•ã‚¡ã‚¤ãƒ« \\"%1$s\\""],"Download file \\"%1$s\\"":["ダウンãƒãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ« \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["メッセージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³"],"Retry":[""],"Uploading file:":["アップãƒãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«:"],"%1$s has removed this message":["%1$s ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’削除ã—ã¾ã—ãŸ"],"This message has been edited":["メッセージã¯ç·¨é›†ã•ã‚Œã¦ã„ã¾ã™"],"Show more":["ã‚‚ã£ã¨è¦‹ã‚‹"],"No message history available.":["メッセージ履æ´ã¯ã‚ã‚Šã¾ã›ã‚“。"],"Search results":["検索çµæžœ"],"Search":["検索"],"Insert emojis":["絵文å—を挿入"],"Send the message":["メッセージをé€ä¿¡"],"Start a call":["呼ã³å‡ºã™"],"Message characters remaining":["残り文å—æ•°"],"Choose a file to send":["é€ä¿¡ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"],"Click to write as a normal (non-spoiler) message":["クリックã—ã¦ã€æ™®é€š(ãƒã‚¿ãƒãƒ¬ãªã—)ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ã—ã¦æ›¸ã込む"],"Click to write your message as a spoiler":["クリックã—ã¦ã€ãƒã‚¿ãƒãƒ¬ã¨ã—ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ã込む"],"The User\'s Profile Image":["ユーザーã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ç”»åƒ"],"Trusted":["信用ã§ãã‚‹"],"Untrusted":["信用ã§ããªã„"],"OMEMO Fingerprints":["OMEMO 指紋"],"No OMEMO-enabled devices found":["OMEMO 利用å¯èƒ½ãªãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"Remove as contact":["相手先を削除"],"XMPP Address":["XMPP アドレス"],"Email":["Eメール"],"Full Name":["åå‰(フルãƒãƒ¼ãƒ )"],"Nickname":["ニックãƒãƒ¼ãƒ "],"Refresh":["å†èªè¾¼"],"Role":["å½¹"],"URL":["URL"],"%1$s is typing":["%1$s ã¯å…¥åŠ›ä¸"],"%1$s has stopped typing":["%1$s ã¯å…¥åŠ›ã‚’ä¸æ–ã—ã¾ã—ãŸ"],"%1$s has gone away":["%1$s ã¯é›¢å¸ä¸"],"Remove messages":["メッセージを削除"],"Close this chat":["ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’é–‰ã˜ã‚‹"],"Write in the third person":["三人称ã§æ›¸ã"],"Show this menu":["ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’表示"],"Hidden message":["ç§ä¿¡"],"Message":["メッセージ"],"Optional hint":["ãã®ä»–ã®ãƒ’ント"],"You have unread messages":["未èªã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™"],"Details":["詳細"],"See more information about this person":["ã“ã®äººã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Close and end this conversation":["é–‰ã˜ã¦ã“ã®ä¼šè©±ã‚’終了"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["別㮠XMPP/Jabber クライアント(ãŠã‚ˆã³ã‚µãƒ¼ãƒãƒ¼)ã¯æ’¤å›žã«å¯¾å¿œã—ã¦ãŠã‚‰ãšã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã©ã“ã§ã§ã‚‚削除ã•ã‚Œã‚‹ã‚ã‘ã§ã¯ãªã„ã“ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。"],"Are you sure you want to retract this message?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’撤回ã—ã¾ã™ã‹ ?"],"Confirm":["確定"],"You have an unsent message which will be lost if you continue. Are you sure?":["ã“ã®ã¾ã¾ç¶šã‘ã‚‹ã¨å¤±ã‚れる未é€ä¿¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ ?"],"Are you sure you want to clear the messages from this conversation?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒãƒ£ãƒƒãƒˆæ¬„ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’消去ã—ã¾ã™ã‹ ?"],"%1$s has gone offline":["%1$s ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"%1$s is busy":["%1$s ã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"%1$s is online":["%1$s ã¯åœ¨å¸ã—ã¦ã„ã¾ã™"],"Sorry, something went wrong while trying to refresh":["復元ã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Are you sure you want to remove this contact?":["ã»ã‚“ã¨ã†ã«ã“ã®ç›¸æ‰‹å…ˆã‚’削除ã—ã¾ã™ã‹ ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["%1$s を相手先ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["性能改善ã®ãŸã‚ã€ã“ã®ãƒ–ラウザーã«ãƒ‡ãƒ¼ã‚¿ã‚’ã‚ャッシュã—ã¾ã™ã€‚共用コンピューターã®å ´åˆã‚„ã€ãƒã‚°ã‚¢ã‚¦ãƒˆæ™‚ã«ãƒ‡ãƒ¼ã‚¿ã‚’消去ã—ãŸã„å ´åˆã¯ã€ã“ã®æ¬„ã®ãƒã‚§ãƒƒã‚¯ã‚’ã¯ãšã—ã¦ãã ã•ã„。確実ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãªã„ã¨ã€ã‚ャッシュデータãŒæ®‹ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ä¿¡é ¼ã®ãªã„機器ã§ã®åˆ©ç”¨ã®å ´åˆã«ã¯ OMEMO ãŒä½¿ãˆãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"],"This is a trusted device":["ã“ã‚Œã¯ä¿¡é ¼ã§ãるデãƒã‚¤ã‚¹ã§ã™"],"Password":["パスワード"],"Create an account":["アカウントを作æˆ"],"Don\'t have a chat account?":["アカウントをæŒã£ã¦ã„ã¾ã›ã‚“ã‹ ?"],"Log in":["ãƒã‚°ã‚¤ãƒ³"],"Disconnected":["切æ–ã•ã‚Œã¾ã—ãŸ"],"Click here to log in anonymously":["クリックã—ã¦åŒ¿åã¨ã—ã¦ãƒã‚°ã‚¤ãƒ³"],"Username":["ユーザーå"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["æ£ã—ã„ XMPP アドレスを入力ã—ã¦ãã ã•ã„"],"Chat Contacts":["相手先"],"Toggle chat":["ãƒãƒ£ãƒƒãƒˆã‚’é–‹é–‰"],"Click to restore this chat":["クリックã—ã¦ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’復元"],"Minimized":["é¢ã®æœ€å°åŒ–窓"],"Minimize":["最å°åŒ–"],"Minimize this chat":["ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’最å°åŒ–"],"Minimize this groupchat":["ã“ã®è«‡è©±å®¤ã‚’最å°åŒ–"],"This field is required":["ã“ã®æ¬„ã¯å¿…é ˆã§ã™"],"Join":["入室ã™ã‚‹"],"Enter a new Groupchat":["æ–°ã—ã„談話室ã«å…¥ã‚‹"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["談話室å"],"Groupchat address":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹"],"Groupchat id is invalid.":["談話室 ID ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“。"],"Invite":["招待"],"Invite someone to this groupchat":["ã“ã®è«‡è©±å®¤ã«æ‹›å¾…"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["招待ã®ç†ç”±(ä»»æ„)"],"Show groupchats":["談話室を表示"],"Server address":["サーãƒãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹"],"Show more information on this groupchat":["ã“ã®è«‡è©±å®¤ã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Query for Groupchats":["談話室ã®æ¤œç´¢"],"Description:":["説明:"],"Groupchat Address (JID):":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ (JID):"],"Participants:":["入室者:"],"Features:":["特徴:"],"Requires authentication":["èªè¨¼ã®è¦æ±‚"],"Hidden":["éžå…¬é–‹è«‡è©±å®¤"],"Requires an invitation":["招待ã®è¦æ±‚"],"Moderated":["å¸ä¼šã‚ã‚Š"],"Non-anonymous":["éžåŒ¿å談話室"],"Open":["開放"],"Permanent":["常è¨"],"Public":["公開談話室"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["臨時"],"Unmoderated":["発言制é™ãªã—談話室"],"conference.example.org":["conference.example.org"],"No groupchats found":["談話室ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["å¸ä¼šè€…ã¯ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼(分掌ãŒç®¡ç†äººã¾ãŸã¯ä¸»å®°è€…ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’除ã)ã®å½¹ã‚’変更ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã™ã€‚"],"The default role, implies that you can read and write messages.":["デフォルトã®å½¹ã¯ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’èªã‚€ã“ã¨ã¨æ›¸ãã“ã¨ãŒã§ãã¾ã™ã€‚"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["å‚è´è€…ã¯ã€ç™ºè¨€åˆ¶é™ã®ã‚る談話室ã§ã¯æ›¸ãè¾¼ã¿ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“。"],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["主宰者ã¯æœ€ã‚‚高ã„分掌ã§ã™ã€‚主宰者ã¯ä»–ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å½¹ã¨åˆ†æŽŒã‚’変更ã§ãã¾ã™ã€‚"],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["管ç†äººã¯2番ã‚ã«é«˜ã„分掌ã§ã™ã€‚管ç†äººã¯ã€ä¸»å®°è€…以外ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å½¹ã¨åˆ†æŽŒã‚’変更ã§ãã¾ã™ã€‚"],"To ban a user, you give them the affiliation of \\"outcast\\".":["ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç· ã‚出ã™ã«ã¯ã€ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åˆ†æŽŒã‚’「追放者ã€ã«å¤‰æ›´ã—ã¾ã™ã€‚"],"Change role":["役を変更"],"New Role":["æ–°ã—ã„å½¹"],"Reason":["ç†ç”±"],"Change affiliation":["分掌を変更"],"New affiliation":["æ–°ã—ã„分掌"],"Affiliation":["分掌"],"Moderator Tools":["å¸ä¼šè€…ツール"],"No users with that affiliation found.":["ãã®åˆ†æŽŒã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"No users with that role found.":["ã“ã®å½¹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"Type here to filter the search results":["検索çµæžœã‚’絞り込むã«ã¯ã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„"],"Show users":["ユーザーを表示"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["å½¹ã¨ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è«‡è©±å®¤ã§ã®æ©Ÿèƒ½ã‚’許å¯ã¾ãŸã¯ç¦æ¢ã™ã‚‹ã“ã¨ã‚’割り当ã¦ã‚‹ã‚‚ã®ã§ã™ã€‚ãã‚Œã¯åˆ†æŽŒã®ä¸€éƒ¨ã¨ã—ã¦æ˜Žç¤ºçš„ã¾ãŸã¯æš—黙的ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚分掌ã«ã‚ˆã‚‰ãªã„å½¹ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æœŸé–“ã®ã¿æœ‰åŠ¹ã§ã™ã€‚"],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["分掌ã¯ã€ç‰¹å®šã®å½¹ã«å¯¾å¿œã—ã¦ã„ã¦æ¨©é™ã¨è²¬ä»»ã‚’付与ã™ã‚‹ã€é•·æœŸé–“有効ãªè³‡æ ¼ã§ã™ã€‚ãŸã¨ãˆã°ã€ç®¡ç†äººã‚„主宰者ã¨ã„ã†åˆ†æŽŒã¯ã€è‡ªå‹•çš„ã«å¸ä¼šè€…ã¨ã„ã†å½¹ã«ãªã‚Šã¾ã™ã€‚"],"Sorry, something went wrong while trying to set the affiliation":["分掌をè¨å®šã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Affiliation changed":["分掌を変更ã—ã¾ã—ãŸ"],"Role changed":["役を変更ã—ã¾ã—ãŸ"],"You\'re not allowed to make that change":["ã“れを変更ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"Sorry, something went wrong while trying to set the role":["å½¹ã®è¨å®šã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Topic":["é¡Œ"],"Topic author":["é¡Œã®è¨å®šè€…"],"Groupchat address (JID)":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ (JID)"],"Message archiving":["記録ä¿ç®¡"],"Messages are archived on the server":["メッセージã¯ã‚µãƒ¼ãƒä¸Šã«ä¿ç®¡ã•ã‚Œã¾ã™"],"Description":["説明"],"Features":["摘è¦"],"This groupchat is not publicly searchable":["ã“ã®è«‡è©±å®¤ã¯å…¬ã«æ¤œç´¢ã•ã‚Œã¾ã›ã‚“"],"This groupchat is restricted to members only":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ã®ã¿å…¥å®¤ã§ãã¾ã™"],"Members only":["メンãƒãƒ¼åˆ¶"],"Participants entering this groupchat need to request permission to write":["ã“ã®è«‡è©±å®¤ã®å‚åŠ è€…ã¯æ›¸è¾¼æ¨©ã‚’å¾—ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"],"Name":["åå‰"],"This groupchat does not require a password upon entry":["ã“ã®è«‡è©±å®¤ã«å…¥ã‚‹ã«ã¯ãƒ‘スワードã¯ä¸è¦ã§ã™"],"No password required":["パスワードä¸è¦"],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["ã™ã¹ã¦ã®å…¥å®¤è€…ã¯ã‚ãªãŸã® XMPP アドレスを見るã“ã¨ãŒã§ãã¾ã™"],"Not moderated":["å¸ä¼šãªã—"],"Participants entering this groupchat can write right away":["ã“ã®è«‡è©±å®¤ã®å‚åŠ è€…ã¯ç›´ã¡ã«æ›¸ã込むã“ã¨ãŒã§ãã¾ã™"],"Online users":["オンラインユーザー"],"Anyone can join this groupchat":["誰ã§ã‚‚ã“ã®è«‡è©±å®¤ã«å‚åŠ ã§ãã¾ã™"],"This groupchat requires a password before entry":["ã“ã®è«‡è©±å®¤ã«å…¥ã‚‹ã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™"],"Password protected":["パスワード制"],"Persistent":["常è¨"],"This groupchat persists even if it\'s unoccupied":["ã“ã®è«‡è©±å®¤ã¯èª°ã‚‚ã„ãªããªã£ã¦ã‚‚å˜ç¶šã—ã¾ã™"],"Only moderators can see your XMPP address":["å¸ä¼šè€…ã®ã¿ãŒ XMPP アドレスを見るã“ã¨ãŒã§ãã¾ã™"],"This groupchat will disappear once the last person leaves":["ã“ã®è«‡è©±å®¤ã¯æœ€å¾Œã®åœ¨å®¤è€…ãŒé€€å‡ºã™ã‚‹ã¨æ¶ˆæ»…ã—ã¾ã™"],"This groupchat is publicly searchable":["ã“ã®è«‡è©±å®¤ã¯å…¬ã«æ¤œç´¢ã•ã‚Œã¾ã™"],"Groupchat info for %1$s":["%1$s ã®è«‡è©±å®¤æƒ…å ±"],"You\'re not allowed to send messages in this room":["ã“ã®è«‡è©±å®¤ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"The conversation has moved. Click below to enter.":["会話ã¯å ´æ‰€ã‚’移ã—ã¾ã—ãŸã€‚å‚åŠ ã™ã‚‹ã«ã¯ä¸‹ã‚’クリックã—ã¦ãã ã•ã„。"],"This groupchat no longer exists":["ã“ã®è«‡è©±å®¤ã¯ã‚‚ã†å˜åœ¨ã—ã¦ã„ã¾ã›ã‚“"],"Hide the groupchat topic":["談話室ã®é¡Œã‚’éžè¡¨ç¤º"],"This groupchat is bookmarked":["ã“ã®è«‡è©±å®¤ã¯ãƒ–ックマークã•ã‚Œã¦ã„ã¾ã™"],"Enter groupchat":["談話室ã«å…¥ã‚‹"],"Choose a nickname to enter":["ニックãƒãƒ¼ãƒ ã‚’é¸æŠž"],"Please choose your nickname":["ニックãƒãƒ¼ãƒ ã‚’é¸ã‚“ã§ãã ã•ã„"],"This groupchat requires a password":["ã“ã®è«‡è©±å®¤ã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™"],"Password: ":["パスワード: "],"Submit":["é€ä¿¡"],"This user is a moderator.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å¸ä¼šè€…ã§ã™ã€‚"],"This user can send messages in this groupchat.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®è«‡è©±å®¤ã§ç™ºè¨€ã§ãã¾ã™ã€‚"],"This user can NOT send messages in this groupchat.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®è«‡è©±å®¤ã§ç™ºè¨€ã§ãã¾ã›ã‚“。"],"Owner":["主宰者"],"Admin":["管ç†è€…"],"Member":["メンãƒãƒ¼"],"Moderator":["å¸ä¼šè€…"],"Visitor":["å‚è´è€…"],"Click to mention %1$s in your message.":["クリックã—ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ %1$s ã«è¨€åŠã—ã¾ã™ã€‚"],"Participants":["å‚åŠ è€…"],"%1$s has entered the groupchat":["%1$s ã¯å…¥å®¤ã—ã¾ã—ãŸ"],"%1$s has left the groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‚’退出ã—ã¾ã—ãŸ"],"%1$s is now a moderator":["%1$s ã¯å¸ä¼šè€…ã«ãªã‚Šã¾ã—ãŸ"],"%1$s is no longer a moderator":["%1$s ã¯å¸ä¼šè€…ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s has been given a voice":["%1$s ã¯ç™ºè¨€æ¨©ã‚’å¾—ã¾ã—ãŸ"],"%1$s has been muted":["%1$s ã¯ç™ºè¨€æ¨©ã‚’失ã„ã¾ã—ãŸ"],"%1$s and %2$s":["%1$s 㨠%2$s"],"%1$s are typing":["%1$s ã¯å…¥åŠ›ä¸"],"%1$s have stopped typing":["%1$s ã¯å…¥åŠ›ã‚’ä¸æ–ã—ã¾ã—ãŸ"],"%1$s have gone away":["%1$s ã¯é›¢å¸ä¸"],"%1$s have entered the groupchat":["%1$s ã¯å…¥å®¤ã—ã¾ã—ãŸ"],"%1$s have left the groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‚’退出ã—ã¾ã—ãŸ"],"Change user\'s affiliation to admin":["ユーザーã®åˆ†æŽŒã‚’管ç†äººã«å¤‰æ›´"],"Ban user by changing their affiliation to outcast":["ユーザーã®åˆ†æŽŒã‚’「追放者ã€ã«å¤‰æ›´ã—ã€ç· ã‚出ã™"],"Clear the chat area":["ãƒãƒ£ãƒƒãƒˆæ¬„をクリア"],"Close this groupchat":["ã“ã®è«‡è©±å®¤ã‚’é–‰ã˜ã‚‹"],"Change user role to participant":["ユーザーã®å½¹ã‚’å‚åŠ è€…ã«å¤‰æ›´"],"Remove this groupchat":["ã“ã®è«‡è©±å®¤ã‚’削除"],"Kick user from groupchat":["ユーザーを談話室ã‹ã‚‰è¹´ã‚Šå‡ºã™"],"Write in 3rd person":["第三者ã«æ›¸ã"],"Grant membership to a user":["ユーザーã«ãƒ¡ãƒ³ãƒãƒ¼æ¨©ã‚’与ãˆã‚‹"],"Opens up the moderator tools GUI":["å¸ä¼šè€…ツール GUI ã‚’é–‹ã"],"Remove user\'s ability to post messages":["ユーザーをã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ãè¾¼ã‚ãªã„よã†ã«ã™ã‚‹"],"Change your nickname":["ニックãƒãƒ¼ãƒ を変更"],"Grant moderator role to user":["ユーザーã«å¸ä¼šè€…ã®å½¹ã‚’与ãˆã‚‹"],"Grant ownership of this groupchat":["ã“ã®è«‡è©±å®¤ã®ä¸»å®°è€…ã«ã™ã‚‹"],"Register your nickname":["ニックãƒãƒ¼ãƒ を登録"],"Revoke the user\'s current affiliation":["ユーザーã®ç¾åœ¨ã®åˆ†æŽŒã‚’ç ´æ£„"],"Set groupchat subject":["談話室ã®é¡Œã‚’è¨å®š"],"Set groupchat subject (alias for /subject)":["談話室ã®é¡Œã‚’è¨å®š (コマンド /subject )"],"Allow muted user to post messages":["発言権ã®ãªã„ユーザーã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ›¸ãè¾¼ã¿ã‚’許å¯ã™ã‚‹"],"You are about to retract this message.":["ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’撤回ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚"],"You may optionally include a message, explaining the reason for the retraction.":["撤回ã«ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚„ç†ç”±èª¬æ˜Žã‚’付ã‘ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“。"],"Message Retraction":["メッセージã®æ’¤å›ž"],"Optional reason":["ç†ç”±(ä»»æ„)"],"Sorry, you\'re not allowed to retract this message":["メッセージを撤回ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"A timeout occurred while trying to retract the message":["メッセージを撤回ã™ã‚‹éš›ã«ã‚¿ã‚¤ãƒ アウトãŒç™ºç”Ÿã—ã¾ã—ãŸ"],"Sorry, you\'re not allowed to retract this message.":["メッセージを撤回ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Show more information about this groupchat":["ã“ã®è«‡è©±å®¤ã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Configure":["è¨å®š"],"Configure this groupchat":["ã“ã®è«‡è©±å®¤ã‚’調整ã™ã‚‹"],"Invite someone to join this groupchat":["誰ã‹ã‚’ã“ã®è«‡è©±å®¤ã«æ‹›å¾…ã—ã¾ã™"],"Show topic":["題を表示"],"Hide topic":["題をéžè¡¨ç¤º"],"Show the topic message in the heading":["題をヘッダーã«è¡¨ç¤ºã—ã¾ã™"],"Hide the topic in the heading":["題をヘッダーã«è¡¨ç¤ºã—ã¾ã›ã‚“"],"Moderate":["調節"],"Moderate this groupchat":["ã“ã®è«‡è©±å®¤ã‚’調節ã—ã¾ã™"],"Destroy":["閉鎖"],"Leave":["退出"],"Leave and close this groupchat":["談話室ã‹ã‚‰é€€å‡ºã—ã¦é–‰ã˜ã‚‹"],"Are you sure you want to leave this groupchat?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ã‹ã‚‰é€€å‡ºã—ã¾ã™ã‹ ?"],"Hide the list of participants":["入室者ã®ä¸€è¦§ã‚’éš ã™"],"Forbidden: you do not have the necessary role in order to do that.":["ç¦æ¢: ã“ã®æ“作ã«å¿…è¦ãªå½¹ã«ã‚ã‚Šã¾ã›ã‚“。"],"Forbidden: you do not have the necessary affiliation in order to do that.":["ç¦æ¢: ã“ã®æ“作ã«å¿…è¦ãªåˆ†æŽŒã«ã‚ã‚Šã¾ã›ã‚“。"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["エラー: コマンド \\"%1$s\\" ã¯2ã¤ã®å¼•æ•°ã‚’ã¨ã‚Šã¾ã™ã€‚ユーザーã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¨ã€ç†ç”±(ã“ã‚Œã¯ä»»æ„)ã§ã™ã€‚"],"Error: couldn\'t find a groupchat participant based on your arguments":["エラー: 談話室ã®å‚åŠ è€…ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"],"Error: found multiple groupchat participant based on your arguments":["エラー: 談話室ã®å‚åŠ è€…ãŒè¤‡æ•°è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"],"Sorry, an error happened while running the command.":["コマンド実行ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚"],"Check your browser\'s developer console for details.":["詳細ã¯ãƒ–ラウザーã®é–‹ç™ºè€…コンソールを確èªã—ã¦ãã ã•ã„。"],"Are you sure you want to destroy this groupchat?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ã‚’閉鎖ã—ã¾ã™ã‹ ?"],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["ニックãƒãƒ¼ãƒ 㯠\\"%1$s\\" ã§ã™"],"Error: invalid number of arguments":["エラー: 引数ã®æ•°ãŒé•ã„ã¾ã™"],"This action was done by %1$s.":["ã“れ㯠%1$s ã«ã‚ˆã£ã¦å®Ÿè¡Œã•ã‚Œã¾ã—ãŸã€‚"],"The reason given is: \\"%1$s\\".":["ç†ç”±ã¯æ¬¡ã®ã¨ãŠã‚Š: \\"%1$s\\""],"Groupchats":["談話室"],"Add a new groupchat":["æ–°ã—ã„è«‡è©±å®¤ã‚’è¿½åŠ "],"Query for groupchats":["談話室ã®æ¤œç´¢"],"Sorry, an error occurred while trying to submit the config form.":["è¨å®šæ¬„ã‚’å—ã‘付ã‘ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Close these announcements":["ã“れらã®ãŠçŸ¥ã‚‰ã›ã‚’é–‰ã˜ã‚‹"],"Announcements":["ãŠçŸ¥ã‚‰ã›"],"Click to open this server message":["クリックã—ã¦ã“ã®ã‚µãƒ¼ãƒãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é–‹ã"],"Notification from %1$s":["%1$s ã‹ã‚‰ã®é€šçŸ¥"],"%1$s says":["%1$s æ›°ã"],"has gone offline":["ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"has gone away":["ã¯é›¢å¸ä¸"],"is busy":["ã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"has come online":["ã¯åœ¨å¸ã«ãªã‚Šã¾ã—ãŸ"],"wants to be your contact":["ã¯ã‚ãªãŸã®ç›¸æ‰‹å…ˆã«ãªã‚ŠãŸãŒã£ã¦ã„ã¾ã™"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["概è¦"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s オープンソース %2$s XMPP ãƒãƒ£ãƒƒãƒˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ ( %3$s Opkode %2$s æä¾›)"],"%1$s Translate %2$s it into your own language":["ã‚ãªãŸã®è¨€èªžã¸ %1$s 翻訳 %2$s"],"Log out":["ãƒã‚°ã‚¢ã‚¦ãƒˆ"],"Click to change your chat status":["クリックã—ã¦åœ¨å¸çŠ¶æ³ã‚’変更"],"Show details about this chat client":["ã“ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Your avatar image":["ã‚¢ãƒã‚¿ãƒ¼ç”»åƒ"],"Checkbox for selecting the following fingerprint":["次ã®æŒ‡ç´‹ã‚’é¸æŠžã™ã‚‹ãŸã‚ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹"],"Device without a fingerprint":["指紋ã®ãªã„デãƒã‚¤ã‚¹"],"Other OMEMO-enabled devices":["OMEMO を利用å¯èƒ½ãªä»–ã®ãƒ‡ãƒã‚¤ã‚¹"],"Checkbox to select fingerprints of all other OMEMO devices":["ä»–ã® OMEMO デãƒã‚¤ã‚¹ã‚’ã™ã¹ã¦é¸æŠžã™ã‚‹ãŸã‚ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹"],"Remove checked devices and close":["é¸æŠžã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’削除ã—ã¦é–‰ã˜ã‚‹"],"Select all":["ã™ã¹ã¦ã‚’é¸æŠž"],"This device\'s OMEMO fingerprint":["ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã® OMEMO 指紋"],"Generate new keys and fingerprint":["æ–°ã—ã„éµã¨æŒ‡ç´‹ã‚’生æˆ"],"Your Profile":["プãƒãƒ•ã‚£ãƒ¼ãƒ«"],"XMPP Address (JID)":["XMPP アドレス (JID)"],"Save and close":["ä¿å˜ã—ã¦é–‰ã˜ã‚‹"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["複数ã®å½¹ã¯ã‚³ãƒ³ãƒžã§åŒºåˆ‡ã£ã¦ãã ã•ã„。役ã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®åå‰ã®æ¬¡ã®è¡Œã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚"],"OMEMO":["OMEMO"],"Profile":["プãƒãƒ•ã‚£ãƒ¼ãƒ«"],"Sorry, an error happened while trying to save your profile data.":["プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®ä¿å˜ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚"],"You can check your browser\'s developer console for any error output.":["エラー出力ã¯ãƒ–ラウザã®é–‹ç™ºè€…コンソールã§ç¢ºèªã§ãã¾ã™ã€‚"],"Away":["離å¸ä¸"],"Busy":["å–ã‚Šè¾¼ã¿ä¸"],"Custom status":["独自ã®åœ¨å¸çŠ¶æ³"],"Offline":["オフライン"],"Online":["オンライン"],"Away for long":["ä¸åœ¨"],"Change chat status":["在å¸çŠ¶æ³ã‚’変更"],"Personal status message":["個別ã®åœ¨å¸çŠ¶æ³ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"],"I am %1$s":["ç§ã¯ã„ã¾ %1$s"],"Are you sure you want to log out?":["ã»ã‚“ã¨ã†ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¾ã™ã‹ ?"],"online":["在å¸"],"busy":["å–ã‚Šè¾¼ã¿ä¸"],"away for long":["ä¸åœ¨"],"away":["離å¸ä¸"],"offline":["オフライン"],"Sorry, could not decrypt a received OMEMO message due to an error.":["エラーã®ãŸã‚ã€å—ä¿¡ã—㟠OMEMO メッセージを復å·ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s 㯠OMEMO 対応ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’æŒã£ã¦ã„ãªã„よã†ã§ã™ã€‚ã“ã®è«‡è©±å®¤ã§ã¯æš—å·åŒ–ã•ã‚ŒãŸä¼šè©±ã¯ã§ãã¾ã›ã‚“。"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["%1$s 㯠OMEMO éžå¯¾å¿œã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’使用ã—ã¦ã„ã‚‹ãŸã‚ã€ç«¯æœ«é–“æš—å·åŒ–を使用ã§ãã¾ã›ã‚“。"],"Messages are being sent in plaintext":["メッセージã¯å¹³æ–‡ã®ã¾ã¾é€ã‚‰ã‚Œã¾ã™"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["デãƒã‚¤ã‚¹ã‚’切æ–ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["本当ã«ã€æ–°ã—ã„ OMEMO éµã‚’生æˆã—ã¾ã™ã‹ ? å¤ã„éµã¯å‰Šé™¤ã•ã‚Œã€ã“ã‚Œã¾ã§ã«æš—å·åŒ–ã•ã‚ŒãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å¾©å·ã§ããªããªã‚Šã¾ã™ã€‚"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["%1$s ã¯ã€OMEMO æƒ…å ±ã‚’å–å¾—ã™ã‚‹ã«ã¯ãã®åœ¨å¸çŠ¶æ³é€šçŸ¥ã‚’申ã—込むã“ã¨ã‚’è¦æ±‚ã—ã¦ã„ã‚‹ãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["%1$s ã®ãƒªãƒ¢ãƒ¼ãƒˆã‚µãƒ¼ãƒãƒ¼ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ããªã‹ã£ãŸãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“"],"Unable to send an encrypted message due to an unexpected error.":["予期ã—ãªã„エラーã®ãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“。"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["OMEMO æš—å·åŒ–メッセージをé€ã‚‹ãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["ã“れ㯠OMEMO メッセージã§ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒå¯¾å¿œã—ã¦ã„ãªã„よã†ã§ã™ã€‚詳細㯠https://conversations.im/omemo ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"]," e.g. conversejs.org":[" 例: conversejs.org"],"Fetch registration form":["入力欄をå–り寄ã›"],"Tip: A list of public XMPP providers is available":["ヒント: 公開 XMPP プãƒãƒã‚¤ãƒ€ãƒ¼ã®ä¸€è¦§ã¯"],"here":["ã“ã“"],"Sorry, we\'re unable to connect to your chosen provider.":["ãã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["ã“ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã¯ãƒãƒ³ãƒ‰å†…アカウント登録ã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。別ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã§è©¦ã—ã¦ãã ã•ã„。"],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["\\"%1$s\\" ã¨ã®æŽ¥ç¶šç¢ºç«‹ã®éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚ã»ã‚“ã¨ã†ã«ãã‚Œã¯å˜åœ¨ã—ã¦ã„ã¾ã™ã‹ ?"],"Now logging you in":["ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™"],"Registered successfully":["登録ã«æˆåŠŸã—ã¾ã—ãŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["プãƒãƒã‚¤ãƒ€ãƒ¼ã¯ç™»éŒ²ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚入力内容ãŒæ£ã—ã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。"],"Leave this groupchat":["談話室ã‹ã‚‰é€€å‡º"],"Click to toggle the list of open groupchats":["クリックã—ã¦è«‡è©±å®¤ä¸€è¦§ã‚’é–‹é–‰"],"Open Groupchats":["å‚åŠ ä¸ã®è«‡è©±å®¤"],"Are you sure you want to leave the groupchat %1$s?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ \\"%1$s\\" ã‹ã‚‰é€€å‡ºã—ã¾ã™ã‹ ?"],"Add":["è¿½åŠ "],"Add a Contact":["ç›¸æ‰‹å…ˆã‚’è¿½åŠ "],"This contact is busy":["ã“ã®ç›¸æ‰‹å…ˆã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"This contact is online":["ã“ã®ç›¸æ‰‹å…ˆã¯åœ¨å¸ã—ã¦ã„ã¾ã™"],"This contact is offline":["ã“ã®ç›¸æ‰‹å…ˆã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"This contact is unavailable":["ã“ã®ç›¸æ‰‹å…ˆã¯ä¸é€šã§ã™"],"This contact is away for an extended period":["ã“ã®ç›¸æ‰‹å…ˆã¯ä¸åœ¨ã§ã™"],"This contact is away":["ã“ã®ç›¸æ‰‹å…ˆã¯é›¢å¸ä¸ã§ã™"],"Contact name":["åå‰"],"Optional nickname":["ニックãƒãƒ¼ãƒ (ä»»æ„)"],"Sorry, could not find a contact with that name":["ãã®åå‰ã®ç›¸æ‰‹å…ˆã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"],"This contact has already been added":["ã“ã®ç›¸æ‰‹å…ˆã¯æ—¢ã«è¿½åŠ 済ã¿ã§ã™"],"Filter":["絞り込ã¿"],"Filter by contact name":["相手先åã§çµžã‚Šè¾¼ã¿"],"Filter by group name":["グループåã§çµžã‚Šè¾¼ã¿"],"Filter by status":["在å¸çŠ¶æ³ã§çµžã‚Šè¾¼ã¿"],"Any":["ã™ã¹ã¦"],"Unread":["未èª"],"Chatty":["ãƒãƒ£ãƒƒãƒˆå¯"],"Extended Away":["長期ä¸åœ¨"],"Click to remove %1$s as a contact":["クリックã—㦠%1$s を相手先ã‹ã‚‰å‰Šé™¤"],"Click to accept the contact request from %1$s":["クリックã—㦠%1$s ã‹ã‚‰ã®ç”³è¾¼ã‚’å—諾"],"Click to decline the contact request from %1$s":["クリックã—㦠%1$s ã‹ã‚‰ã®ç”³è¾¼ã‚’æ‹’å¦"],"Click to chat with %1$s (XMPP address: %2$s)":["クリックã—㦠%1$s (XMPP アドレス: %2$s) ã¨ãƒãƒ£ãƒƒãƒˆ"],"Are you sure you want to decline this contact request?":["ã»ã‚“ã¨ã†ã«ã“ã®ç”³è¾¼ã‚’æ‹’å¦ã—ã¾ã™ã‹ ?"],"Contacts":["相手先"],"Add a contact":["ç›¸æ‰‹å…ˆã‚’è¿½åŠ "],"Re-sync your contacts":["相手先をå†åŒæœŸ"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[159],{525:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"ja"},"Create your account":["アカウントを作æˆã—ã¾ã™"],"Please enter the XMPP provider to register with:":["登録ã™ã‚‹ XMPP プãƒãƒã‚¤ãƒ€ãƒ¼ã‚’入力ã—ã¦ãã ã•ã„:"],"Already have a chat account?":["アカウントを既ã«æŒã£ã¦ã„ã¾ã™ã‹ ?"],"Log in here":["ã“ã“ã§ãƒã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„"],"Account Registration:":["アカウントã®ç™»éŒ²:"],"Register":["登録"],"Choose a different provider":["別ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã‚’é¸æŠž"],"Hold tight, we\'re fetching the registration form…":["ãŸã ã„ã¾å…¥åŠ›æ¬„ã‚’å–り寄ã›ã¦ã„ã¾ã™â€¦"],"Cancel":["ã‚ャンセル"],"The connection has dropped, attempting to reconnect.":["接続ãŒå¤±ã‚ã‚Œã¾ã—ãŸã€‚å†æŽ¥ç¶šã‚’試ã¿ã¾ã™ã€‚"],"An error occurred while connecting to the chat server.":["ãƒãƒ£ãƒƒãƒˆã‚µãƒ¼ãƒãƒ¼ã«æŽ¥ç¶šã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Your XMPP address and/or password is incorrect. Please try again.":["XMPP アドレス ã¨ãƒ‘スワードã®ä¸¡æ–¹ã¾ãŸã¯ä¸€æ–¹ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“。もã†ä¸€åº¦ã‚„ã‚Šç›´ã—ã¦ãã ã•ã„。"],"Sorry, we could not connect to the XMPP host with domain: %1$s":["次ã®ãƒ‰ãƒ¡ã‚¤ãƒ³ã® XMPP ホストã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸ: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP サーãƒãƒ¼ã¯å¯¾å¿œã—ã¦ã„ã‚‹èªè¨¼å½¢å¼ã‚’æ示ã—ã¾ã›ã‚“ã§ã—ãŸ"],"Sorry, could not determine upload URL.":["アップãƒãƒ¼ãƒ‰ã® URL を確定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, could not determine file upload URL.":["ファイルアップãƒãƒ¼ãƒ‰ã® URL を確定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚サーãƒãƒ¼ã®å¿œç”: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["ファイルã®ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"],"Sorry, looks like file upload is not supported by your server.":["サーãƒãƒ¼ã¯ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ãƒãƒ¼ãƒ‰ã«å¯¾å¿œã—ã¦ã„ãªã„よã†ã§ã™ã€‚"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["ファイルã®ã‚µã‚¤ã‚º %1$s ã¯ã€ã‚µãƒ¼ãƒãƒ¼ã®åˆ¶é™å€¤ %2$s を超ãˆã¦ã„ã¾ã™ã€‚"],"Smileys and emotions":["スマイリーã¨æ„Ÿæƒ…アイコン"],"People":["人々"],"Activities":["å‹•å‘"],"Travel":["æ—…è¡Œ"],"Objects":["物"],"Animals and nature":["動物ã¨è‡ªç„¶"],"Food and drink":["食ã¹ç‰©ã¨é£²ã¿ç‰©"],"Symbols":["シンボル"],"Flags":["æ——"],"Stickers":["ステッカー"],"This groupchat is not anonymous":["ã“ã®è«‡è©±å®¤ã¯éžåŒ¿åã§ã™"],"This groupchat now shows unavailable members":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ä»¥å¤–ã«ã‚‚見ãˆã¾ã™"],"This groupchat does not show unavailable members":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ä»¥å¤–ã«ã¯è¦‹ãˆã¾ã›ã‚“"],"The groupchat configuration has changed":["談話室ã®è¨å®šãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ"],"Groupchat logging is now enabled":["談話室ã®è¨˜éŒ²ã‚’å–ã‚Šã¾ã™"],"Groupchat logging is now disabled":["談話室ã®è¨˜éŒ²ã‚’æ¢ã‚ã¾ã™"],"This groupchat is now no longer anonymous":["ã“ã®è«‡è©±å®¤ã¯åŒ¿åã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"This groupchat is now semi-anonymous":["ã“ã®è«‡è©±å®¤ã¯åŠåŒ¿åã§ã™"],"This groupchat is now fully-anonymous":["ã“ã®è«‡è©±å®¤ã¯åŒ¿åã§ã™"],"A new groupchat has been created":["æ–°ã—ã„談話室ãŒä½œæˆã•ã‚Œã¾ã—ãŸ"],"Your nickname has been automatically set to %1$s":["ニックãƒãƒ¼ãƒ ã¯è‡ªå‹•çš„ã« %1$s ã«è¨å®šã•ã‚Œã¾ã—ãŸ"],"Your nickname has been changed to %1$s":["ニックãƒãƒ¼ãƒ ã‚’ %1$s ã«å¤‰æ›´ã—ã¾ã—ãŸ"],"You have been banned from this groupchat":["ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"You have been kicked from this groupchat":["ã“ã®è«‡è©±å®¤ã‹ã‚‰è¹´ã‚Šå‡ºã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because of an affiliation change":["分掌ã®å¤‰æ›´ã®ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["談話室ãŒãƒ¡ãƒ³ãƒãƒ¼åˆ¶ã«å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚メンãƒãƒ¼ã§ã¯ãªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"You have been removed from this groupchat because the service hosting it is being shut down":["サーãƒãƒ¼ãŒã‚·ãƒ£ãƒƒãƒˆãƒ€ã‚¦ãƒ³ã™ã‚‹ãŸã‚ã€ã“ã®è«‡è©±å®¤ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸ"],"Your message was not delivered because you weren\'t allowed to send it.":["メッセージをé€ä¿¡ã™ã‚‹æ¨©é™ãŒãªã„ãŸã‚ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯é…é€ã•ã‚Œã¾ã›ã‚“。"],"Your message was not delivered because you\'re not present in the groupchat.":["ã“ã®è«‡è©±å®¤ã«ã„ãªã„ãŸã‚ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯é…é€ã•ã‚Œã¾ã›ã‚“。"],"You\'re not allowed to register yourself in this groupchat.":["ã“ã®è«‡è©±å®¤ã«è‡ªåˆ†è‡ªèº«ã‚’登録ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼åˆ¶ã®ãŸã‚ã€ç™»éŒ²ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["登録ã«å¯¾å¿œã—ã¦ã„ãªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã«ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ を登録ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["データã®å½¢ãŒæ£ã—ããªã„ãŸã‚ã€ã“ã®è«‡è©±å®¤ã«ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ を登録ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。"],"Topic set by %1$s":["%1$s ãŒé¡Œã‚’è¨å®šã—ã¾ã—ãŸ"],"Topic cleared by %1$s":["%1$s ãŒé¡Œã‚’消去ã—ã¾ã—ãŸ"],"%1$s has been banned by %2$s":["%1$s 㯠%2$s ã«ã‚ˆã£ã¦ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"%1$s has been banned":["%1$s ã‚’ç· ã‚出ã—ã¾ã—ãŸ"],"%1$s\'s nickname has changed":["%1$s ã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯å¤‰æ›´ã•ã‚Œã¾ã—ãŸ"],"%1$s has been kicked out by %2$s":["%1$s 㯠%2$s ã«ã‚ˆã£ã¦è¹´ã‚Šå‡ºã•ã‚Œã¾ã—ãŸ"],"%1$s has been kicked out":["%1$s を蹴り出ã—ã¾ã—ãŸ"],"%1$s has been removed because of an affiliation change":["分掌ã®å¤‰æ›´ã®ãŸã‚ã€%1$s を削除ã—ã¾ã—ãŸ"],"%1$s has been removed for not being a member":["メンãƒãƒ¼ã§ãªããªã£ãŸãŸã‚ã€%1$s を削除ã—ã¾ã—ãŸ"],"%1$s is no longer an admin of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ç®¡ç†äººã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is no longer an owner of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ä¸»å®°è€…ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is no longer banned from this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸ"],"%1$s is no longer a member of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s is now a member of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ã«ãªã‚Šã¾ã—ãŸ"],"%1$s is now an %2$s of this groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã® %2$s ã«ãªã‚Šã¾ã—ãŸ"],"The nickname you chose is reserved or currently in use, please choose a different one.":["ãã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯äºˆç´„ã•ã‚Œã¦ã„ã‚‹ã‹æ—¢ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚別ã®ã‚‚ã®ã‚’é¸ã‚“ã§ãã ã•ã„。"],"Password incorrect":["パスワードãŒé•ã„ã¾ã™"],"You are not on the member list of this groupchat.":["ã“ã®è«‡è©±å®¤ã®ãƒ¡ãƒ³ãƒãƒ¼ä¸€è¦§ã«ã‚ã‚Šã¾ã›ã‚“。"],"You have been banned from this groupchat.":["ã“ã®è«‡è©±å®¤ã‹ã‚‰ç· ã‚出ã•ã‚Œã¾ã—ãŸã€‚"],"You are not allowed to create new groupchats.":["æ–°ã—ã„談話室を作æˆã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["ニックãƒãƒ¼ãƒ ãŒã“ã®è«‡è©±å®¤ã®ãƒãƒªã‚·ãƒ¼ã«å¾“ã£ã¦ã„ã¾ã›ã‚“。"],"This groupchat does not (yet) exist.":["ã“ã®è«‡è©±å®¤ã¯(ã¾ã )å˜åœ¨ã—ã¾ã›ã‚“。"],"This groupchat has reached its maximum number of participants.":["ã“ã®è«‡è©±å®¤ã¯å…¥å®¤è€…æ•°ã®ä¸Šé™ã«é”ã—ã¦ã„ã¾ã™ã€‚"],"Remote server not found":["サーãƒãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"The explanation given is: \\"%1$s\\".":["ç†ç”±ã¯æ¬¡ã®ã¨ãŠã‚Š: \\"%1$s\\""],"%1$s has invited you to join a groupchat: %2$s":["%1$s ãŒã‚ãªãŸã‚’談話室 %2$s ã¸æ‹›å¾…ã—ã¦ã„ã¾ã™"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s ãŒã‚ãªãŸã‚’談話室%2$s ã¸æ‹›å¾…ã—ã¦ã„ã¾ã™ã€‚案内: \\"%3$s\\""],"Error":["エラー"],"Sorry, something went wrong while trying to save your bookmark.":["ブックマークã®ä¿å˜ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"],"Timeout Error":["タイムアウトエラー"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["サーãƒãƒ¼ã¯æ™‚間内ã«ãƒ–ックマークã«å¿œç”ã—ã¾ã›ã‚“ã§ã—ãŸã€‚ã‚‚ã†ä¸€åº¦è©¦ã™ã«ã¯ã“ã®ãƒšãƒ¼ã‚¸ã‚’リãƒãƒ¼ãƒ‰ã—ã¦ãã ã•ã„。"],"My contacts":["相手先一覧"],"Pending contacts":["ä¿ç•™ä¸ã®ç›¸æ‰‹å…ˆ"],"Contact requests":["会話ã«å‘¼ã³å‡ºã—"],"Ungrouped":["未整ç†"],"New messages":["æ–°ã—ã„メッセージ"],"Sorry, there was an error while trying to add %1$s as a contact.":["%1$s を相手先ã¨ã—ã¦è¿½åŠ ã—よã†ã¨ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚"],"This client does not allow presence subscriptions":["ã“ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã¯åœ¨ç±çŠ¶æ³ã®ç”³è¾¼ã‚’許å¯ã—ã¦ã„ã¾ã›ã‚“"],"Click to hide these contacts":["クリックã—ã¦ã“れらã®ç›¸æ‰‹å…ˆã‚’éš ã™"],"Unbookmark this groupchat":["ã“ã®è«‡è©±å®¤ã‚’ブックマークã‹ã‚‰ã¯ãšã™"],"Click to open this groupchat":["クリックã—ã¦ã“ã®è«‡è©±å®¤ã‚’é–‹ã"],"Click to toggle the bookmarks list":["クリックã—ã¦ãƒ–ックマーク一覧を開閉"],"Bookmarks":["ブックマーク"],"Bookmark this groupchat":["ã“ã®è«‡è©±å®¤ã‚’ブックマーク"],"Would you like this groupchat to be automatically joined upon startup?":["起動時ã«ã“ã®è«‡è©±å®¤ã«è‡ªå‹•çš„ã«å…¥ã‚Šã¾ã™ã‹ ?"],"The name for this bookmark:":["ã“ã®ãƒ–ックマークã®åå‰:"],"What should your nickname for this groupchat be?":["ã“ã®è«‡è©±å®¤ã§ã®ã‚ãªãŸã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¯ä½•ã«ã—ã¾ã™ã‹ ?"],"Save":["ä¿å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒ–ックマーク \\"%1$s\\" を削除ã—ã¦ã‚‚ã„ã„ã§ã™ã‹ ?"],"Unbookmark":["ブックマーク解除"],"Bookmark":["ブックマーク"],"Close":["é–‰ã˜ã‚‹"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["ダウンãƒãƒ¼ãƒ‰éŸ³å£°ãƒ•ã‚¡ã‚¤ãƒ« \\"%1$s\\""],"Download file \\"%1$s\\"":["ダウンãƒãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ« \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["メッセージã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³"],"Retry":[""],"Uploading file:":["アップãƒãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«:"],"%1$s has removed this message":["%1$s ã¯ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’削除ã—ã¾ã—ãŸ"],"This message has been edited":["メッセージã¯ç·¨é›†ã•ã‚Œã¦ã„ã¾ã™"],"Show more":["ã‚‚ã£ã¨è¦‹ã‚‹"],"No message history available.":["メッセージ履æ´ã¯ã‚ã‚Šã¾ã›ã‚“。"],"Search results":["検索çµæžœ"],"Search":["検索"],"Insert emojis":["絵文å—を挿入"],"Send the message":["メッセージをé€ä¿¡"],"Start a call":["呼ã³å‡ºã™"],"Message characters remaining":["残り文å—æ•°"],"Choose a file to send":["é€ä¿¡ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"],"Click to write as a normal (non-spoiler) message":["クリックã—ã¦ã€æ™®é€š(ãƒã‚¿ãƒãƒ¬ãªã—)ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ã—ã¦æ›¸ã込む"],"Click to write your message as a spoiler":["クリックã—ã¦ã€ãƒã‚¿ãƒãƒ¬ã¨ã—ã¦ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ã込む"],"The User\'s Profile Image":["ユーザーã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ç”»åƒ"],"Trusted":["信用ã§ãã‚‹"],"Untrusted":["信用ã§ããªã„"],"OMEMO Fingerprints":["OMEMO 指紋"],"No OMEMO-enabled devices found":["OMEMO 利用å¯èƒ½ãªãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"Remove as contact":["相手先を削除"],"XMPP Address":["XMPP アドレス"],"Email":["Eメール"],"Full Name":["åå‰(フルãƒãƒ¼ãƒ )"],"Nickname":["ニックãƒãƒ¼ãƒ "],"Refresh":["å†èªè¾¼"],"Role":["å½¹"],"URL":["URL"],"%1$s is typing":["%1$s ã¯å…¥åŠ›ä¸"],"%1$s has stopped typing":["%1$s ã¯å…¥åŠ›ã‚’ä¸æ–ã—ã¾ã—ãŸ"],"%1$s has gone away":["%1$s ã¯é›¢å¸ä¸"],"Remove messages":["メッセージを削除"],"Close this chat":["ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’é–‰ã˜ã‚‹"],"Write in the third person":["三人称ã§æ›¸ã"],"Show this menu":["ã“ã®ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’表示"],"Hidden message":["ç§ä¿¡"],"Message":["メッセージ"],"Optional hint":["ãã®ä»–ã®ãƒ’ント"],"You have unread messages":["未èªã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™"],"Details":["詳細"],"See more information about this person":["ã“ã®äººã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Close and end this conversation":["é–‰ã˜ã¦ã“ã®ä¼šè©±ã‚’終了"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["別㮠XMPP/Jabber クライアント(ãŠã‚ˆã³ã‚µãƒ¼ãƒãƒ¼)ã¯æ’¤å›žã«å¯¾å¿œã—ã¦ãŠã‚‰ãšã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã©ã“ã§ã§ã‚‚削除ã•ã‚Œã‚‹ã‚ã‘ã§ã¯ãªã„ã“ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。"],"Are you sure you want to retract this message?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’撤回ã—ã¾ã™ã‹ ?"],"Confirm":["確定"],"You have an unsent message which will be lost if you continue. Are you sure?":["ã“ã®ã¾ã¾ç¶šã‘ã‚‹ã¨å¤±ã‚れる未é€ä¿¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ ?"],"Are you sure you want to clear the messages from this conversation?":["ã»ã‚“ã¨ã†ã«ã“ã®ãƒãƒ£ãƒƒãƒˆæ¬„ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’消去ã—ã¾ã™ã‹ ?"],"%1$s has gone offline":["%1$s ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"%1$s is busy":["%1$s ã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"%1$s is online":["%1$s ã¯åœ¨å¸ã—ã¦ã„ã¾ã™"],"Sorry, something went wrong while trying to refresh":["復元ã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Are you sure you want to remove this contact?":["ã»ã‚“ã¨ã†ã«ã“ã®ç›¸æ‰‹å…ˆã‚’削除ã—ã¾ã™ã‹ ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["%1$s を相手先ã‹ã‚‰å‰Šé™¤ã—よã†ã¨ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["性能改善ã®ãŸã‚ã€ã“ã®ãƒ–ラウザーã«ãƒ‡ãƒ¼ã‚¿ã‚’ã‚ャッシュã—ã¾ã™ã€‚共用コンピューターã®å ´åˆã‚„ã€ãƒã‚°ã‚¢ã‚¦ãƒˆæ™‚ã«ãƒ‡ãƒ¼ã‚¿ã‚’消去ã—ãŸã„å ´åˆã¯ã€ã“ã®æ¬„ã®ãƒã‚§ãƒƒã‚¯ã‚’ã¯ãšã—ã¦ãã ã•ã„。確実ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ãªã„ã¨ã€ã‚ャッシュデータãŒæ®‹ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ä¿¡é ¼ã®ãªã„機器ã§ã®åˆ©ç”¨ã®å ´åˆã«ã¯ OMEMO ãŒä½¿ãˆãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。"],"This is a trusted device":["ã“ã‚Œã¯ä¿¡é ¼ã§ãるデãƒã‚¤ã‚¹ã§ã™"],"Password":["パスワード"],"Create an account":["アカウントを作æˆ"],"Don\'t have a chat account?":["アカウントをæŒã£ã¦ã„ã¾ã›ã‚“ã‹ ?"],"Log in":["ãƒã‚°ã‚¤ãƒ³"],"Disconnected":["切æ–ã•ã‚Œã¾ã—ãŸ"],"Click here to log in anonymously":["クリックã—ã¦åŒ¿åã¨ã—ã¦ãƒã‚°ã‚¤ãƒ³"],"Username":["ユーザーå"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["æ£ã—ã„ XMPP アドレスを入力ã—ã¦ãã ã•ã„"],"Chat Contacts":["相手先"],"Toggle chat":["ãƒãƒ£ãƒƒãƒˆã‚’é–‹é–‰"],"Click to restore this chat":["クリックã—ã¦ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’復元"],"Minimized":["é¢ã®æœ€å°åŒ–窓"],"Minimize":["最å°åŒ–"],"Minimize this chat":["ã“ã®ãƒãƒ£ãƒƒãƒˆã‚’最å°åŒ–"],"Minimize this groupchat":["ã“ã®è«‡è©±å®¤ã‚’最å°åŒ–"],"This user is a moderator.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯å¸ä¼šè€…ã§ã™ã€‚"],"This user can send messages in this groupchat.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®è«‡è©±å®¤ã§ç™ºè¨€ã§ãã¾ã™ã€‚"],"This user can NOT send messages in this groupchat.":["ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯ã“ã®è«‡è©±å®¤ã§ç™ºè¨€ã§ãã¾ã›ã‚“。"],"Owner":["主宰者"],"Admin":["管ç†è€…"],"Member":["メンãƒãƒ¼"],"Moderator":["å¸ä¼šè€…"],"Visitor":["å‚è´è€…"],"Click to mention %1$s in your message.":["クリックã—ã¦ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ %1$s ã«è¨€åŠã—ã¾ã™ã€‚"],"Participants":["å‚åŠ è€…"],"This field is required":["ã“ã®æ¬„ã¯å¿…é ˆã§ã™"],"Join":["入室ã™ã‚‹"],"Enter a new Groupchat":["æ–°ã—ã„談話室ã«å…¥ã‚‹"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["談話室å"],"Groupchat address":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹"],"Groupchat id is invalid.":["談話室 ID ãŒæ£ã—ãã‚ã‚Šã¾ã›ã‚“。"],"Invite":["招待"],"Invite someone to this groupchat":["ã“ã®è«‡è©±å®¤ã«æ‹›å¾…"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["招待ã®ç†ç”±(ä»»æ„)"],"Show groupchats":["談話室を表示"],"Server address":["サーãƒãƒ¼ã‚¢ãƒ‰ãƒ¬ã‚¹"],"Show more information on this groupchat":["ã“ã®è«‡è©±å®¤ã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Query for Groupchats":["談話室ã®æ¤œç´¢"],"Description:":["説明:"],"Groupchat Address (JID):":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ (JID):"],"Participants:":["入室者:"],"Features:":["特徴:"],"Requires authentication":["èªè¨¼ã®è¦æ±‚"],"Hidden":["éžå…¬é–‹è«‡è©±å®¤"],"Requires an invitation":["招待ã®è¦æ±‚"],"Moderated":["å¸ä¼šã‚ã‚Š"],"Non-anonymous":["éžåŒ¿å談話室"],"Open":["開放"],"Permanent":["常è¨"],"Public":["公開談話室"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["臨時"],"Unmoderated":["発言制é™ãªã—談話室"],"conference.example.org":["conference.example.org"],"No groupchats found":["談話室ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["å¸ä¼šè€…ã¯ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼(分掌ãŒç®¡ç†äººã¾ãŸã¯ä¸»å®°è€…ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’除ã)ã®å½¹ã‚’変更ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã™ã€‚"],"The default role, implies that you can read and write messages.":["デフォルトã®å½¹ã¯ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’èªã‚€ã“ã¨ã¨æ›¸ãã“ã¨ãŒã§ãã¾ã™ã€‚"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["å‚è´è€…ã¯ã€ç™ºè¨€åˆ¶é™ã®ã‚る談話室ã§ã¯æ›¸ãè¾¼ã¿ãŒè¨±ã•ã‚Œã¦ã„ã¾ã›ã‚“。"],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["主宰者ã¯æœ€ã‚‚高ã„分掌ã§ã™ã€‚主宰者ã¯ä»–ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å½¹ã¨åˆ†æŽŒã‚’変更ã§ãã¾ã™ã€‚"],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["管ç†äººã¯2番ã‚ã«é«˜ã„分掌ã§ã™ã€‚管ç†äººã¯ã€ä¸»å®°è€…以外ã®ã™ã¹ã¦ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å½¹ã¨åˆ†æŽŒã‚’変更ã§ãã¾ã™ã€‚"],"To ban a user, you give them the affiliation of \\"outcast\\".":["ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’ç· ã‚出ã™ã«ã¯ã€ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®åˆ†æŽŒã‚’「追放者ã€ã«å¤‰æ›´ã—ã¾ã™ã€‚"],"Change role":["役を変更"],"New Role":["æ–°ã—ã„å½¹"],"Reason":["ç†ç”±"],"Change affiliation":["分掌を変更"],"New affiliation":["æ–°ã—ã„分掌"],"Affiliation":["分掌"],"Moderator Tools":["å¸ä¼šè€…ツール"],"No users with that affiliation found.":["ãã®åˆ†æŽŒã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"No users with that role found.":["ã“ã®å½¹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"Type here to filter the search results":["検索çµæžœã‚’絞り込むã«ã¯ã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„"],"Show users":["ユーザーを表示"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["å½¹ã¨ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«è«‡è©±å®¤ã§ã®æ©Ÿèƒ½ã‚’許å¯ã¾ãŸã¯ç¦æ¢ã™ã‚‹ã“ã¨ã‚’割り当ã¦ã‚‹ã‚‚ã®ã§ã™ã€‚ãã‚Œã¯åˆ†æŽŒã®ä¸€éƒ¨ã¨ã—ã¦æ˜Žç¤ºçš„ã¾ãŸã¯æš—黙的ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¾ã™ã€‚分掌ã«ã‚ˆã‚‰ãªã„å½¹ã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã®æœŸé–“ã®ã¿æœ‰åŠ¹ã§ã™ã€‚"],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["分掌ã¯ã€ç‰¹å®šã®å½¹ã«å¯¾å¿œã—ã¦ã„ã¦æ¨©é™ã¨è²¬ä»»ã‚’付与ã™ã‚‹ã€é•·æœŸé–“有効ãªè³‡æ ¼ã§ã™ã€‚ãŸã¨ãˆã°ã€ç®¡ç†äººã‚„主宰者ã¨ã„ã†åˆ†æŽŒã¯ã€è‡ªå‹•çš„ã«å¸ä¼šè€…ã¨ã„ã†å½¹ã«ãªã‚Šã¾ã™ã€‚"],"Sorry, something went wrong while trying to set the affiliation":["分掌をè¨å®šã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Affiliation changed":["分掌を変更ã—ã¾ã—ãŸ"],"Role changed":["役を変更ã—ã¾ã—ãŸ"],"You\'re not allowed to make that change":["ã“れを変更ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"Sorry, something went wrong while trying to set the role":["å½¹ã®è¨å®šã«å¤±æ•—ã—ãŸã‚ˆã†ã§ã™"],"Topic":["é¡Œ"],"Topic author":["é¡Œã®è¨å®šè€…"],"Groupchat address (JID)":["談話室ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ (JID)"],"Message archiving":["記録ä¿ç®¡"],"Messages are archived on the server":["メッセージã¯ã‚µãƒ¼ãƒä¸Šã«ä¿ç®¡ã•ã‚Œã¾ã™"],"Description":["説明"],"Features":["摘è¦"],"This groupchat is not publicly searchable":["ã“ã®è«‡è©±å®¤ã¯å…¬ã«æ¤œç´¢ã•ã‚Œã¾ã›ã‚“"],"This groupchat is restricted to members only":["ã“ã®è«‡è©±å®¤ã¯ãƒ¡ãƒ³ãƒãƒ¼ã®ã¿å…¥å®¤ã§ãã¾ã™"],"Members only":["メンãƒãƒ¼åˆ¶"],"Participants entering this groupchat need to request permission to write":["ã“ã®è«‡è©±å®¤ã®å‚åŠ è€…ã¯æ›¸è¾¼æ¨©ã‚’å¾—ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™"],"Name":["åå‰"],"This groupchat does not require a password upon entry":["ã“ã®è«‡è©±å®¤ã«å…¥ã‚‹ã«ã¯ãƒ‘スワードã¯ä¸è¦ã§ã™"],"No password required":["パスワードä¸è¦"],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["ã™ã¹ã¦ã®å…¥å®¤è€…ã¯ã‚ãªãŸã® XMPP アドレスを見るã“ã¨ãŒã§ãã¾ã™"],"Not moderated":["å¸ä¼šãªã—"],"Participants entering this groupchat can write right away":["ã“ã®è«‡è©±å®¤ã®å‚åŠ è€…ã¯ç›´ã¡ã«æ›¸ã込むã“ã¨ãŒã§ãã¾ã™"],"Online users":["オンラインユーザー"],"Anyone can join this groupchat":["誰ã§ã‚‚ã“ã®è«‡è©±å®¤ã«å‚åŠ ã§ãã¾ã™"],"This groupchat requires a password before entry":["ã“ã®è«‡è©±å®¤ã«å…¥ã‚‹ã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™"],"Password protected":["パスワード制"],"Persistent":["常è¨"],"This groupchat persists even if it\'s unoccupied":["ã“ã®è«‡è©±å®¤ã¯èª°ã‚‚ã„ãªããªã£ã¦ã‚‚å˜ç¶šã—ã¾ã™"],"Only moderators can see your XMPP address":["å¸ä¼šè€…ã®ã¿ãŒ XMPP アドレスを見るã“ã¨ãŒã§ãã¾ã™"],"This groupchat will disappear once the last person leaves":["ã“ã®è«‡è©±å®¤ã¯æœ€å¾Œã®åœ¨å®¤è€…ãŒé€€å‡ºã™ã‚‹ã¨æ¶ˆæ»…ã—ã¾ã™"],"This groupchat is publicly searchable":["ã“ã®è«‡è©±å®¤ã¯å…¬ã«æ¤œç´¢ã•ã‚Œã¾ã™"],"Groupchat info for %1$s":["%1$s ã®è«‡è©±å®¤æƒ…å ±"],"You\'re not allowed to send messages in this room":["ã“ã®è«‡è©±å®¤ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"The conversation has moved. Click below to enter.":["会話ã¯å ´æ‰€ã‚’移ã—ã¾ã—ãŸã€‚å‚åŠ ã™ã‚‹ã«ã¯ä¸‹ã‚’クリックã—ã¦ãã ã•ã„。"],"This groupchat no longer exists":["ã“ã®è«‡è©±å®¤ã¯ã‚‚ã†å˜åœ¨ã—ã¦ã„ã¾ã›ã‚“"],"Hide the groupchat topic":["談話室ã®é¡Œã‚’éžè¡¨ç¤º"],"This groupchat is bookmarked":["ã“ã®è«‡è©±å®¤ã¯ãƒ–ックマークã•ã‚Œã¦ã„ã¾ã™"],"Enter groupchat":["談話室ã«å…¥ã‚‹"],"Choose a nickname to enter":["ニックãƒãƒ¼ãƒ ã‚’é¸æŠž"],"Please choose your nickname":["ニックãƒãƒ¼ãƒ ã‚’é¸ã‚“ã§ãã ã•ã„"],"This groupchat requires a password":["ã“ã®è«‡è©±å®¤ã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™"],"Password: ":["パスワード: "],"Submit":["é€ä¿¡"],"%1$s has entered the groupchat":["%1$s ã¯å…¥å®¤ã—ã¾ã—ãŸ"],"%1$s has left the groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‚’退出ã—ã¾ã—ãŸ"],"%1$s is now a moderator":["%1$s ã¯å¸ä¼šè€…ã«ãªã‚Šã¾ã—ãŸ"],"%1$s is no longer a moderator":["%1$s ã¯å¸ä¼šè€…ã§ã¯ãªããªã‚Šã¾ã—ãŸ"],"%1$s has been given a voice":["%1$s ã¯ç™ºè¨€æ¨©ã‚’å¾—ã¾ã—ãŸ"],"%1$s has been muted":["%1$s ã¯ç™ºè¨€æ¨©ã‚’失ã„ã¾ã—ãŸ"],"%1$s and %2$s":["%1$s 㨠%2$s"],"%1$s are typing":["%1$s ã¯å…¥åŠ›ä¸"],"%1$s have stopped typing":["%1$s ã¯å…¥åŠ›ã‚’ä¸æ–ã—ã¾ã—ãŸ"],"%1$s have gone away":["%1$s ã¯é›¢å¸ä¸"],"%1$s have entered the groupchat":["%1$s ã¯å…¥å®¤ã—ã¾ã—ãŸ"],"%1$s have left the groupchat":["%1$s ã¯ã“ã®è«‡è©±å®¤ã‚’退出ã—ã¾ã—ãŸ"],"Change user\'s affiliation to admin":["ユーザーã®åˆ†æŽŒã‚’管ç†äººã«å¤‰æ›´"],"Ban user by changing their affiliation to outcast":["ユーザーã®åˆ†æŽŒã‚’「追放者ã€ã«å¤‰æ›´ã—ã€ç· ã‚出ã™"],"Clear the chat area":["ãƒãƒ£ãƒƒãƒˆæ¬„をクリア"],"Close this groupchat":["ã“ã®è«‡è©±å®¤ã‚’é–‰ã˜ã‚‹"],"Change user role to participant":["ユーザーã®å½¹ã‚’å‚åŠ è€…ã«å¤‰æ›´"],"Remove this groupchat":["ã“ã®è«‡è©±å®¤ã‚’削除"],"Kick user from groupchat":["ユーザーを談話室ã‹ã‚‰è¹´ã‚Šå‡ºã™"],"Write in 3rd person":["第三者ã«æ›¸ã"],"Grant membership to a user":["ユーザーã«ãƒ¡ãƒ³ãƒãƒ¼æ¨©ã‚’与ãˆã‚‹"],"Opens up the moderator tools GUI":["å¸ä¼šè€…ツール GUI ã‚’é–‹ã"],"Remove user\'s ability to post messages":["ユーザーをã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’書ãè¾¼ã‚ãªã„よã†ã«ã™ã‚‹"],"Change your nickname":["ニックãƒãƒ¼ãƒ を変更"],"Grant moderator role to user":["ユーザーã«å¸ä¼šè€…ã®å½¹ã‚’与ãˆã‚‹"],"Grant ownership of this groupchat":["ã“ã®è«‡è©±å®¤ã®ä¸»å®°è€…ã«ã™ã‚‹"],"Register your nickname":["ニックãƒãƒ¼ãƒ を登録"],"Revoke the user\'s current affiliation":["ユーザーã®ç¾åœ¨ã®åˆ†æŽŒã‚’ç ´æ£„"],"Set groupchat subject":["談話室ã®é¡Œã‚’è¨å®š"],"Set groupchat subject (alias for /subject)":["談話室ã®é¡Œã‚’è¨å®š (コマンド /subject )"],"Allow muted user to post messages":["発言権ã®ãªã„ユーザーã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®æ›¸ãè¾¼ã¿ã‚’許å¯ã™ã‚‹"],"You are about to retract this message.":["ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’撤回ã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚"],"You may optionally include a message, explaining the reason for the retraction.":["撤回ã«ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚„ç†ç”±èª¬æ˜Žã‚’付ã‘ã¦ã‚‚ã‹ã¾ã„ã¾ã›ã‚“。"],"Message Retraction":["メッセージã®æ’¤å›ž"],"Optional reason":["ç†ç”±(ä»»æ„)"],"Sorry, you\'re not allowed to retract this message":["メッセージを撤回ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“"],"A timeout occurred while trying to retract the message":["メッセージを撤回ã™ã‚‹éš›ã«ã‚¿ã‚¤ãƒ アウトãŒç™ºç”Ÿã—ã¾ã—ãŸ"],"Sorry, you\'re not allowed to retract this message.":["メッセージを撤回ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。"],"Show more information about this groupchat":["ã“ã®è«‡è©±å®¤ã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Configure":["è¨å®š"],"Configure this groupchat":["ã“ã®è«‡è©±å®¤ã‚’調整ã™ã‚‹"],"Invite someone to join this groupchat":["誰ã‹ã‚’ã“ã®è«‡è©±å®¤ã«æ‹›å¾…ã—ã¾ã™"],"Show topic":["題を表示"],"Hide topic":["題をéžè¡¨ç¤º"],"Show the topic message in the heading":["題をヘッダーã«è¡¨ç¤ºã—ã¾ã™"],"Hide the topic in the heading":["題をヘッダーã«è¡¨ç¤ºã—ã¾ã›ã‚“"],"Moderate":["調節"],"Moderate this groupchat":["ã“ã®è«‡è©±å®¤ã‚’調節ã—ã¾ã™"],"Destroy":["閉鎖"],"Leave":["退出"],"Leave and close this groupchat":["談話室ã‹ã‚‰é€€å‡ºã—ã¦é–‰ã˜ã‚‹"],"Are you sure you want to leave this groupchat?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ã‹ã‚‰é€€å‡ºã—ã¾ã™ã‹ ?"],"Hide the list of participants":["入室者ã®ä¸€è¦§ã‚’éš ã™"],"Forbidden: you do not have the necessary role in order to do that.":["ç¦æ¢: ã“ã®æ“作ã«å¿…è¦ãªå½¹ã«ã‚ã‚Šã¾ã›ã‚“。"],"Forbidden: you do not have the necessary affiliation in order to do that.":["ç¦æ¢: ã“ã®æ“作ã«å¿…è¦ãªåˆ†æŽŒã«ã‚ã‚Šã¾ã›ã‚“。"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["エラー: コマンド \\"%1$s\\" ã¯2ã¤ã®å¼•æ•°ã‚’ã¨ã‚Šã¾ã™ã€‚ユーザーã®ãƒ‹ãƒƒã‚¯ãƒãƒ¼ãƒ ã¨ã€ç†ç”±(ã“ã‚Œã¯ä»»æ„)ã§ã™ã€‚"],"Error: couldn\'t find a groupchat participant based on your arguments":["エラー: 談話室ã®å‚åŠ è€…ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"],"Error: found multiple groupchat participant based on your arguments":["エラー: 談話室ã®å‚åŠ è€…ãŒè¤‡æ•°è¦‹ã¤ã‹ã‚Šã¾ã—ãŸ"],"Sorry, an error happened while running the command.":["コマンド実行ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚"],"Check your browser\'s developer console for details.":["詳細ã¯ãƒ–ラウザーã®é–‹ç™ºè€…コンソールを確èªã—ã¦ãã ã•ã„。"],"Are you sure you want to destroy this groupchat?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ã‚’閉鎖ã—ã¾ã™ã‹ ?"],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["ニックãƒãƒ¼ãƒ 㯠\\"%1$s\\" ã§ã™"],"Error: invalid number of arguments":["エラー: 引数ã®æ•°ãŒé•ã„ã¾ã™"],"This action was done by %1$s.":["ã“れ㯠%1$s ã«ã‚ˆã£ã¦å®Ÿè¡Œã•ã‚Œã¾ã—ãŸã€‚"],"The reason given is: \\"%1$s\\".":["ç†ç”±ã¯æ¬¡ã®ã¨ãŠã‚Š: \\"%1$s\\""],"Groupchats":["談話室"],"Add a new groupchat":["æ–°ã—ã„è«‡è©±å®¤ã‚’è¿½åŠ "],"Query for groupchats":["談話室ã®æ¤œç´¢"],"Sorry, an error occurred while trying to submit the config form.":["è¨å®šæ¬„ã‚’å—ã‘付ã‘ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Close these announcements":["ã“れらã®ãŠçŸ¥ã‚‰ã›ã‚’é–‰ã˜ã‚‹"],"Announcements":["ãŠçŸ¥ã‚‰ã›"],"Click to open this server message":["クリックã—ã¦ã“ã®ã‚µãƒ¼ãƒãƒ¼ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é–‹ã"],"Notification from %1$s":["%1$s ã‹ã‚‰ã®é€šçŸ¥"],"%1$s says":["%1$s æ›°ã"],"has gone offline":["ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"has gone away":["ã¯é›¢å¸ä¸"],"is busy":["ã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"has come online":["ã¯åœ¨å¸ã«ãªã‚Šã¾ã—ãŸ"],"wants to be your contact":["ã¯ã‚ãªãŸã®ç›¸æ‰‹å…ˆã«ãªã‚ŠãŸãŒã£ã¦ã„ã¾ã™"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["概è¦"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s オープンソース %2$s XMPP ãƒãƒ£ãƒƒãƒˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆ ( %3$s Opkode %2$s æä¾›)"],"%1$s Translate %2$s it into your own language":["ã‚ãªãŸã®è¨€èªžã¸ %1$s 翻訳 %2$s"],"Log out":["ãƒã‚°ã‚¢ã‚¦ãƒˆ"],"Click to change your chat status":["クリックã—ã¦åœ¨å¸çŠ¶æ³ã‚’変更"],"Show details about this chat client":["ã“ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«ã¤ã„ã¦ã®è©³ç´°ã‚’見る"],"Your avatar image":["ã‚¢ãƒã‚¿ãƒ¼ç”»åƒ"],"Checkbox for selecting the following fingerprint":["次ã®æŒ‡ç´‹ã‚’é¸æŠžã™ã‚‹ãŸã‚ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹"],"Device without a fingerprint":["指紋ã®ãªã„デãƒã‚¤ã‚¹"],"Other OMEMO-enabled devices":["OMEMO を利用å¯èƒ½ãªä»–ã®ãƒ‡ãƒã‚¤ã‚¹"],"Checkbox to select fingerprints of all other OMEMO devices":["ä»–ã® OMEMO デãƒã‚¤ã‚¹ã‚’ã™ã¹ã¦é¸æŠžã™ã‚‹ãŸã‚ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹"],"Remove checked devices and close":["é¸æŠžã—ãŸãƒ‡ãƒã‚¤ã‚¹ã‚’削除ã—ã¦é–‰ã˜ã‚‹"],"Select all":["ã™ã¹ã¦ã‚’é¸æŠž"],"This device\'s OMEMO fingerprint":["ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã® OMEMO 指紋"],"Generate new keys and fingerprint":["æ–°ã—ã„éµã¨æŒ‡ç´‹ã‚’生æˆ"],"Your Profile":["プãƒãƒ•ã‚£ãƒ¼ãƒ«"],"XMPP Address (JID)":["XMPP アドレス (JID)"],"Save and close":["ä¿å˜ã—ã¦é–‰ã˜ã‚‹"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["複数ã®å½¹ã¯ã‚³ãƒ³ãƒžã§åŒºåˆ‡ã£ã¦ãã ã•ã„。役ã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®åå‰ã®æ¬¡ã®è¡Œã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚"],"OMEMO":["OMEMO"],"Profile":["プãƒãƒ•ã‚£ãƒ¼ãƒ«"],"Sorry, an error happened while trying to save your profile data.":["プãƒãƒ•ã‚£ãƒ¼ãƒ«ã®ä¿å˜ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸã€‚"],"You can check your browser\'s developer console for any error output.":["エラー出力ã¯ãƒ–ラウザã®é–‹ç™ºè€…コンソールã§ç¢ºèªã§ãã¾ã™ã€‚"],"Away":["離å¸ä¸"],"Busy":["å–ã‚Šè¾¼ã¿ä¸"],"Custom status":["独自ã®åœ¨å¸çŠ¶æ³"],"Offline":["オフライン"],"Online":["オンライン"],"Away for long":["ä¸åœ¨"],"Change chat status":["在å¸çŠ¶æ³ã‚’変更"],"Personal status message":["個別ã®åœ¨å¸çŠ¶æ³ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸"],"I am %1$s":["ç§ã¯ã„ã¾ %1$s"],"Are you sure you want to log out?":["ã»ã‚“ã¨ã†ã«ãƒã‚°ã‚¢ã‚¦ãƒˆã—ã¾ã™ã‹ ?"],"online":["在å¸"],"busy":["å–ã‚Šè¾¼ã¿ä¸"],"away for long":["ä¸åœ¨"],"away":["離å¸ä¸"],"offline":["オフライン"],"Sorry, could not decrypt a received OMEMO message due to an error.":["エラーã®ãŸã‚ã€å—ä¿¡ã—㟠OMEMO メッセージを復å·ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s 㯠OMEMO 対応ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’æŒã£ã¦ã„ãªã„よã†ã§ã™ã€‚ã“ã®è«‡è©±å®¤ã§ã¯æš—å·åŒ–ã•ã‚ŒãŸä¼šè©±ã¯ã§ãã¾ã›ã‚“。"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["%1$s 㯠OMEMO éžå¯¾å¿œã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’使用ã—ã¦ã„ã‚‹ãŸã‚ã€ç«¯æœ«é–“æš—å·åŒ–を使用ã§ãã¾ã›ã‚“。"],"Messages are being sent in plaintext":["メッセージã¯å¹³æ–‡ã®ã¾ã¾é€ã‚‰ã‚Œã¾ã™"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["%1$s ã¯ã€OMEMO æƒ…å ±ã‚’å–å¾—ã™ã‚‹ã«ã¯ãã®åœ¨å¸çŠ¶æ³é€šçŸ¥ã‚’申ã—込むã“ã¨ã‚’è¦æ±‚ã—ã¦ã„ã‚‹ãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["%1$s ã®ãƒªãƒ¢ãƒ¼ãƒˆã‚µãƒ¼ãƒãƒ¼ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ããªã‹ã£ãŸãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“"],"Unable to send an encrypted message due to an unexpected error.":["予期ã—ãªã„エラーã®ãŸã‚ã€æš—å·åŒ–メッセージをé€ä¿¡ã§ãã¾ã›ã‚“。"],"Sorry, an error occurred while trying to remove the devices.":["デãƒã‚¤ã‚¹ã‚’切æ–ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["本当ã«ã€æ–°ã—ã„ OMEMO éµã‚’生æˆã—ã¾ã™ã‹ ? å¤ã„éµã¯å‰Šé™¤ã•ã‚Œã€ã“ã‚Œã¾ã§ã«æš—å·åŒ–ã•ã‚ŒãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¯ã“ã®ãƒ‡ãƒã‚¤ã‚¹ã§ã¯å¾©å·ã§ããªããªã‚Šã¾ã™ã€‚"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["OMEMO æš—å·åŒ–メッセージをé€ã‚‹ãƒ‡ãƒã‚¤ã‚¹ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["ã“れ㯠OMEMO メッセージã§ã€ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒå¯¾å¿œã—ã¦ã„ãªã„よã†ã§ã™ã€‚詳細㯠https://conversations.im/omemo ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"]," e.g. conversejs.org":[" 例: conversejs.org"],"Fetch registration form":["入力欄をå–り寄ã›"],"Tip: A list of public XMPP providers is available":["ヒント: 公開 XMPP プãƒãƒã‚¤ãƒ€ãƒ¼ã®ä¸€è¦§ã¯"],"here":["ã“ã“"],"Sorry, we\'re unable to connect to your chosen provider.":["ãã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã«æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["ã“ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã¯ãƒãƒ³ãƒ‰å†…アカウント登録ã«å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。別ã®ãƒ—ãƒãƒã‚¤ãƒ€ãƒ¼ã§è©¦ã—ã¦ãã ã•ã„。"],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["\\"%1$s\\" ã¨ã®æŽ¥ç¶šç¢ºç«‹ã®éš›ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ã“ã‚Šã¾ã—ãŸã€‚ã»ã‚“ã¨ã†ã«ãã‚Œã¯å˜åœ¨ã—ã¦ã„ã¾ã™ã‹ ?"],"Now logging you in":["ãƒã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™"],"Registered successfully":["登録ã«æˆåŠŸã—ã¾ã—ãŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["プãƒãƒã‚¤ãƒ€ãƒ¼ã¯ç™»éŒ²ã‚’æ‹’å¦ã—ã¾ã—ãŸã€‚入力内容ãŒæ£ã—ã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。"],"Leave this groupchat":["談話室ã‹ã‚‰é€€å‡º"],"Click to toggle the list of open groupchats":["クリックã—ã¦è«‡è©±å®¤ä¸€è¦§ã‚’é–‹é–‰"],"Open Groupchats":["å‚åŠ ä¸ã®è«‡è©±å®¤"],"Are you sure you want to leave the groupchat %1$s?":["ã»ã‚“ã¨ã†ã«ã“ã®è«‡è©±å®¤ \\"%1$s\\" ã‹ã‚‰é€€å‡ºã—ã¾ã™ã‹ ?"],"Add":["è¿½åŠ "],"Add a Contact":["ç›¸æ‰‹å…ˆã‚’è¿½åŠ "],"This contact is busy":["ã“ã®ç›¸æ‰‹å…ˆã¯å–ã‚Šè¾¼ã¿ä¸ã§ã™"],"This contact is online":["ã“ã®ç›¸æ‰‹å…ˆã¯åœ¨å¸ã—ã¦ã„ã¾ã™"],"This contact is offline":["ã“ã®ç›¸æ‰‹å…ˆã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™"],"This contact is unavailable":["ã“ã®ç›¸æ‰‹å…ˆã¯ä¸é€šã§ã™"],"This contact is away for an extended period":["ã“ã®ç›¸æ‰‹å…ˆã¯ä¸åœ¨ã§ã™"],"This contact is away":["ã“ã®ç›¸æ‰‹å…ˆã¯é›¢å¸ä¸ã§ã™"],"Contact name":["åå‰"],"Optional nickname":["ニックãƒãƒ¼ãƒ (ä»»æ„)"],"Sorry, could not find a contact with that name":["ãã®åå‰ã®ç›¸æ‰‹å…ˆã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸ"],"This contact has already been added":["ã“ã®ç›¸æ‰‹å…ˆã¯æ—¢ã«è¿½åŠ 済ã¿ã§ã™"],"Filter":["絞り込ã¿"],"Filter by contact name":["相手先åã§çµžã‚Šè¾¼ã¿"],"Filter by group name":["グループåã§çµžã‚Šè¾¼ã¿"],"Filter by status":["在å¸çŠ¶æ³ã§çµžã‚Šè¾¼ã¿"],"Any":["ã™ã¹ã¦"],"Unread":["未èª"],"Chatty":["ãƒãƒ£ãƒƒãƒˆå¯"],"Extended Away":["長期ä¸åœ¨"],"Click to remove %1$s as a contact":["クリックã—㦠%1$s を相手先ã‹ã‚‰å‰Šé™¤"],"Click to accept the contact request from %1$s":["クリックã—㦠%1$s ã‹ã‚‰ã®ç”³è¾¼ã‚’å—諾"],"Click to decline the contact request from %1$s":["クリックã—㦠%1$s ã‹ã‚‰ã®ç”³è¾¼ã‚’æ‹’å¦"],"Click to chat with %1$s (XMPP address: %2$s)":["クリックã—㦠%1$s (XMPP アドレス: %2$s) ã¨ãƒãƒ£ãƒƒãƒˆ"],"Are you sure you want to decline this contact request?":["ã»ã‚“ã¨ã†ã«ã“ã®ç”³è¾¼ã‚’æ‹’å¦ã—ã¾ã™ã‹ ?"],"Contacts":["相手先"],"Add a contact":["ç›¸æ‰‹å…ˆã‚’è¿½åŠ "],"Re-sync your contacts":["相手先をå†åŒæœŸ"]}}}')}}]); //# sourceMappingURL=ja-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/lt-LC_MESSAGES-converse-po.js b/src/conversejs/locales/lt-LC_MESSAGES-converse-po.js index 55c1d1ac03feed6f9e18ee6c096df26d6fc5e6fb..213b9cd4333ff9b1a3231412639318e51c5efee7 100644 --- a/src/conversejs/locales/lt-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/lt-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{438:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 1 : 2);","lang":"lt"},"Create your account":["Sukurti jÅ«sų paskyrÄ…"],"Please enter the XMPP provider to register with:":["PraÅ¡ome nurodyti XMPP teikÄ—jÄ… registracijai:"],"Already have a chat account?":["Jau turite pokalbių paskyrÄ…?"],"Log in here":["Prisijunkite Äia"],"Account Registration:":["Paskyros registracija:"],"Register":["Registruotis"],"Choose a different provider":["Pasirinkite kitÄ… teikÄ—jÄ…"],"Hold tight, we\'re fetching the registration form…":["Palaukite, parsiunÄiame registracijos formÄ…..."],"Cancel":["AtÅ¡aukti"],"The connection has dropped, attempting to reconnect.":["RyÅ¡ys nutrÅ«ko, bandoma prisijungti iÅ¡ naujo."],"An error occurred while connecting to the chat server.":["Bandant prisijungti prie pokalbių serverio įvyko klaida."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["AtsipraÅ¡ome, nepavyko prisijungti prie XMPP serverio su domenu: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP serveris nepateikÄ— palaikomo autentifikavimo mechanizmo"],"Sorry, could not determine upload URL.":["Deja, nepavyko nustatyti URL įkÄ—limui."],"Sorry, could not determine file upload URL.":["Deja, nepavyko nustatyti URL failo įkÄ—limui."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Deja, nepavyko sÄ—kmingai įkelti jÅ«sų failo. JÅ«sų serverio atsakas: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Deja, nepavyko sÄ—kmingai įkelti jÅ«sų failo."],"Sorry, looks like file upload is not supported by your server.":["Deja, panaÅ¡u, kad jÅ«sų serveris nepalaiko failų įkÄ—limo."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["JÅ«sų failo dYdis, %1$s, virÅ¡yja serverio maksimalų leistinÄ…, kuris yra %2$s."],"Smileys and emotions":["Å ypsenÄ—lÄ—s ir emocijos"],"People":["ŽmonÄ—s"],"Activities":["Veiklos"],"Travel":["KelionÄ—"],"Objects":["Objektai"],"Animals and nature":["GyvÅ«nai ir gamta"],"Food and drink":["Valgiai ir gÄ—rimai"],"Symbols":["Simboliai"],"Flags":["VÄ—liavos"],"Stickers":["Lipdukai"],"Your nickname has been automatically set to %1$s":["JÅ«sų slapyvardis buvo automatiÅ¡kai nustatytas kaip %1$s"],"Your nickname has been changed to %1$s":["JÅ«sų slapyvardis buvo pakeistas į %1$s"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Negalima užregistruoti jÅ«sų slapyvardžio Å¡iame kambaryje, jis nepalaiko registracijos."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Negalima užregistruoti jÅ«sų slapyvardžio Å¡iame kambaryje, pateikta neteisinga duomenų forma."],"Topic set by %1$s":["TemÄ… nustatÄ— %1$s"],"Topic cleared by %1$s":["TemÄ… iÅ¡trynÄ— %1$s"],"%1$s has been banned":["%1$s buvo užblokuotas"],"%1$s\'s nickname has changed":["%1$s slapyvardis buvo pakeistas"],"%1$s has been kicked out":["%1$s buvo paÅ¡alintas"],"%1$s has been removed because of an affiliation change":["%1$s buvo paÅ¡alintas dÄ—l narystÄ—s pakeitimo"],"%1$s has been removed for not being a member":["%1$s buvo paÅ¡alintas nes nÄ—ra narys"],"The nickname you chose is reserved or currently in use, please choose a different one.":["JÅ«sų pasirinktas slapyvardis rezervuotas arba jau naudojamas, praÅ¡ome pasirinkti kitÄ…"],"You are not on the member list of this groupchat.":["JÅ«s nesate Å¡io kambario narių sÄ…raÅ¡e."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["JÅ«sų slapyvardis neatitinka Å¡io kambario politikos."],"This groupchat does not (yet) exist.":["Å is kambarys (dar) neegzistuoja."],"This groupchat has reached its maximum number of participants.":["Pasiektas Å¡io kambario dalyvių maksimalus skaiÄius."],"Remote server not found":["NutolÄ™s serveris nerastas"],"The explanation given is: \\"%1$s\\".":["Pateiktas paaiÅ¡kinimas: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s pakvietÄ— jus prisijungti prie kambario: %2$s, ir pateikÄ— tokiÄ… priežastį: \\"%3$s\\""],"Error":["Klaida"],"Sorry, something went wrong while trying to save your bookmark.":["Deja, įvyko klaida bandant iÅ¡saugoti jÅ«sų žymÄ™."],"Timeout Error":["Pasibaugusio laiko klaida"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Serveris nepateikÄ— jÅ«sų žymių per nustatytÄ… laikÄ…. Galite perkrauti puslapį norint užklausti vÄ—l."],"My contacts":["Mano kontaktai"],"Pending contacts":["Nepatvirtinti kontaktai"],"Contact requests":["PraÅ¡ymai pridÄ—ti prie kontaktų"],"Ungrouped":["Nesugrupuota"],"Sorry, there was an error while trying to add %1$s as a contact.":["Deja, įvyko klaida bandant pridÄ—ti %1$s kaip kontaktÄ…."],"This client does not allow presence subscriptions":["Å is klientas neleidžia aktyvumo prenumeratos"],"Click to hide these contacts":["SpustelÄ—kite norint paslÄ—pti Å¡iuos kontaktus"],"Unbookmark this groupchat":["Panaikinti Å¡io kambario žymÄ™"],"Click to toggle the bookmarks list":["SpustelÄ—kite, kad įjungtumÄ—te žymių sÄ…raÅ¡Ä…"],"Bookmarks":["ŽymÄ—s"],"Bookmark this groupchat":["Sukurti Å¡io kambario žymÄ™"],"Would you like this groupchat to be automatically joined upon startup?":["Ar pageidaujate atidaryti šį kambarį automatiÅ¡kai kai prisijungiate?"],"The name for this bookmark:":["ŽymÄ—s vardas:"],"What should your nickname for this groupchat be?":["Koks bus jÅ«sų slapyvardis Å¡iame kambaryje?"],"Save":["IÅ¡saugoti"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ar tikrai norite iÅ¡trinti žymÄ™ \\"%1$s\\"?"],"Close":["Uždaryti"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Parsiųsti audio failÄ… \\"%1$s\\""],"Download file \\"%1$s\\"":["Parsiųsti failÄ… \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["PraneÅ¡imo versijos"],"Retry":[""],"Uploading file:":["Ä®keliamas failas:"],"This message has been edited":["Å is praneÅ¡imas buvo redaguotas"],"No message history available.":["ŽinuÄių istorija nepasiekiama."],"Search results":["PaieÅ¡kos rezultatai"],"Search":["PaieÅ¡ka"],"Start a call":["PradÄ—ti skambutį"],"Choose a file to send":["Pasirinkite failÄ… siuntimui"],"Click to write as a normal (non-spoiler) message":["SpustelÄ—kite, jei norite paraÅ¡yti įprastÄ… (neatskleidžiamÄ…) praneÅ¡imÄ…"],"Click to write your message as a spoiler":["SpustelÄ—kite, jei norite paraÅ¡yti praneÅ¡imÄ… kaip atskleidÄ—jÄ…"],"The User\'s Profile Image":["Vartotojo profilio nuotrauka"],"Trusted":["Patikimas"],"Untrusted":["Nepatikimas"],"OMEMO Fingerprints":["OMEMO atspaudai"],"XMPP Address":["XMPP adresas"],"Email":["El. paÅ¡tas"],"Full Name":["Visas vardas"],"Nickname":["Slapyvardis"],"Refresh":["Perkrauti"],"Role":["Vaidmuo"],"URL":["URL"],"Remove messages":["PaÅ¡alinti praneÅ¡imus"],"Write in the third person":["RaÅ¡ykite treÄiuoju asmeniu"],"Show this menu":["Rodyti šį meniu"],"Hidden message":["PaslÄ—ptas praneÅ¡imas"],"Message":["PraneÅ¡imas"],"Optional hint":["Neprivaloma užuomina"],"You have unread messages":["JÅ«s turite neperskaitytų praneÅ¡imų"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Turite žinoti, kad kiti XMPP/Jabber klientai (ir serveriai) gali dar nepalaikyti žinutÄ—s atÅ¡aukimo ir Å¡i žinutÄ— galbÅ«t nebus paÅ¡alinta visur."],"Confirm":["Patvirtinti"],"You have an unsent message which will be lost if you continue. Are you sure?":["Turite neiÅ¡siųstÄ… žinutÄ™, kuri dings jei tÄ™site. Ar esate tikri?"],"Are you sure you want to remove this contact?":["Ar tikrai norite paÅ¡alinti šį kontaktÄ…?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Deja, įvyko klaida bandant paÅ¡alinti %1$s iÅ¡ kontaktų."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Greitaveikos padidinimui mes saugome duomenų podÄ—lį jÅ«sų narÅ¡ykleje. Nuimkite varnelÄ™ Å¡iame laukelyje, jeigu tai yra vieÅ¡as kompiuteris arba jei norite, kad jÅ«sų duomenys bÅ«tų iÅ¡trinti, kai atsijungiate. Yra svarbu atlikti atsijungimo veiksmÄ…, kitaip ne visi iÅ¡augoti duomenys bus iÅ¡trinti. Atkreipiame dÄ—mesį, kad naudojant nepatikimÄ… įrenginį OMEMO Å¡ifravimas NÄ–RA galimas."],"This is a trusted device":["Tai yra patikimas įrenginys"],"Create an account":["Sukurti paskyrÄ…"],"Don\'t have a chat account?":["Neturite pokalbių paskyros?"],"Disconnected":[""],"Click here to log in anonymously":["SpustelÄ—kite Äia norÄ—dami prisijungti anonimiÅ¡kai"],"Username":["Vartotojo vardas"],"user@domain":["vartotojas@domenas"],"Please enter a valid XMPP address":["Ä®veskite teisingÄ… XMPP adresÄ…"],"Chat Contacts":["Pokalbio kontaktai"],"Toggle chat":["Perjungti pokalbius"],"Click to restore this chat":["SpustelÄ—kite, kad atstatytumÄ—te pokalbį"],"Minimized":["Minimizuotas"],"This field is required":["Å is laukelis yra privalomas"],"Join":["Prisijungti"],"Enter a new Groupchat":["Ä®vesti naujÄ… kambarį"],"name@conference.example.org":["vardas@conference.pavyzdys.lt"],"Groupchat address":["Kambario adresas"],"Invite":["Pakviesti"],"Server address":["Serverio adresas"],"Show more information on this groupchat":["Parodyti daugiau informacijos apie šį kambarį"],"Query for Groupchats":["Kambarių užklausa"],"Description:":["ApraÅ¡ymas:"],"Participants:":["Dalyviai:"],"Features:":["SavybÄ—s:"],"Requires authentication":["Reikalinga autentikacija"],"Hidden":["PaslÄ—ptas"],"Requires an invitation":["Reikalingas pakvietimas"],"Moderated":["Moderuojamas"],"Non-anonymous":["Ne anonimiÅ¡kas"],"Open":["Atidarytas"],"Permanent":["Pastovus"],"Public":["VieÅ¡as"],"Semi-anonymous":["Pusiau anonimiÅ¡kas"],"Temporary":["Laikinas"],"Unmoderated":["Nemoderuojamas"],"conference.example.org":["conference.pavyzdys.lt"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatoriai yra privilegijuoti vartotojai, kurie gali keisti kitų vartotojų vaidmenis (iÅ¡skyrus administratoriaus ir savininko narystes)."],"The default role, implies that you can read and write messages.":["Standartinis vaidmuo, leidžia skaityti ir raÅ¡yti žinutes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Lankytojams neleidžiama raÅ¡yti žinuÄių moderuojamame grupiniame pokalbyje."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Savininkas yra aukÅ¡Äiausias narystÄ—s tipas. Savininkai gali keisti visų kitų vartotojų vaidmenis ir narystes."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administratorius yra antras pagal svarbumÄ… narystÄ—s tipas. Administratoriai gali keisti keisti visų kitų vartotojų vaidmenis ir narystes, iÅ¡skyrus savininkus."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Norint uždrausti vartotojui prieigÄ… jam suteikiama \\"iÅ¡tremtas\\" narystÄ—."],"Reason":["Priežastis"],"New affiliation":["Nauja narystÄ—"],"Affiliation":["NarystÄ—"],"No users with that affiliation found.":["Nerasta vartotojų su Å¡ia naryste."],"No users with that role found.":["Nerasta vartotojų su Å¡iuo vaidmeniu."],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Vaidmenys priskiriami vartotojams siekiant suteikti ar atimti tam tikras galimybes grupiniame pokalbyje. Jie priskiriami tiesiogiai ar netesiogiai su naryste. Vaidmuo nesusijÄ™s su naryste galioja tik vartotojo sesijos metu."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["NarystÄ— tai ilgalaikÄ— teisÄ—, kuri paprastai suteikia tam tikrÄ… vaidmenį, kuris suteikia privilegijas ir atsakomybes. Pavyzdžiui administratoriai ir savininkai automatiÅ¡kai gauna moderatoriaus vaidmenį."],"Affiliation changed":["NarystÄ— pasikeitÄ—"],"Topic":["Tema"],"Topic author":["Temos autorius"],"Message archiving":["PraneÅ¡imų archivavimas"],"Messages are archived on the server":["PraneÅ¡imai archivuojami serveryje"],"Description":["ApraÅ¡ymas"],"Features":["SavybÄ—s"],"This groupchat is not publicly searchable":["Å is kambarys neprieinamas vieÅ¡oje paieÅ¡koje"],"Members only":["Tik nariams"],"Participants entering this groupchat need to request permission to write":["Dalyviai turi papraÅ¡yti raÅ¡ymo leidimo įeinant į kambarį"],"Name":["Vardas"],"This groupchat does not require a password upon entry":["Å is kambarys nereikalauja slaptažodžio įėjimui"],"No password required":["Slaptažodis nereikalingas"],"All other groupchat participants can see your XMPP address":["Visi kiti kambario dalyviai gali matyti jÅ«sų XMPP adresÄ…"],"Not moderated":["Ne moderuojamas"],"Participants entering this groupchat can write right away":["Dalyviams leidžiama raÅ¡yti iÅ¡kart įeinant į šį kambarį"],"Anyone can join this groupchat":["Bet kas gali įeiti į šį kambarį"],"This groupchat requires a password before entry":["Å is kambarys reikalauja slaptažodžio įėjimui"],"Password protected":["Apsaugotas slaptažodžiu"],"Persistent":["Pastovus"],"This groupchat persists even if it\'s unoccupied":["Å is kambarys iÅ¡lieka net kai neturi lankytojų"],"Only moderators can see your XMPP address":["Tik moderatoriai gali matyti jÅ«sų XMPP adresÄ…"],"This groupchat will disappear once the last person leaves":["Å is kambarys dings kai paskutinis žmogus iÅ¡eis"],"This groupchat is publicly searchable":["Å is kambarys prieinamas vieÅ¡oje paieÅ¡koje"],"Groupchat info for %1$s":["Kambario informacija apie %1$s"],"The conversation has moved. Click below to enter.":["Pokalbis buvo perkeltas. SpustelÄ—kite žemiau įėjimui."],"Enter groupchat":["Ä®eiti į kambarį"],"Please choose your nickname":["PraÅ¡ome pasirinkti slapyvardį"],"This groupchat requires a password":["Å is kambarys reikalauja slaptažodžio"],"Password: ":["Slaptažodis: "],"Submit":["Pateikti"],"This user is a moderator.":["Å is vartotojas yra moderatorius"],"This user can send messages in this groupchat.":["Å is vartotojas gali siųsti praneÅ¡imus Å¡iame kambaryje."],"This user can NOT send messages in this groupchat.":["Å is vartotojas NEGALI siųsti praneÅ¡imų Å¡iame kambaryje."],"Owner":["Savininkas"],"Admin":["Administratorius"],"Member":["Narys"],"Moderator":["Moderatorius"],"Visitor":["Lankytojas"],"Click to mention %1$s in your message.":["SpustelÄ—kite norint paminÄ—ti %1$s savo praneÅ¡ime."],"Participants":["Dalyviai"],"%1$s is now a moderator":["%1$s dabar yra moderatorius"],"%1$s is no longer a moderator":["%1$s daugiau nÄ—ra moderatorius"],"Change user\'s affiliation to admin":["Pakeisti vartotojo narystÄ™ į administratoriaus"],"Ban user by changing their affiliation to outcast":["Uždrauskite vartotojui prieigÄ… pakeisdami jo narystÄ™ į iÅ¡tremto"],"Change user role to participant":["Pakeisti vartotojo vaidmenį į dalyvio"],"Kick user from groupchat":["PaÅ¡alinti vartotojÄ… iÅ¡ kambario"],"Write in 3rd person":["RaÅ¡yti treÄiuoju asmeniu"],"Grant membership to a user":["Suteikti vartotojui nario statusÄ…"],"Opens up the moderator tools GUI":["Atidaro moderatoriaus įrankių grafinÄ™ sÄ…sajÄ…"],"Remove user\'s ability to post messages":["Atimti iÅ¡ vartotojo teisÄ™ raÅ¡yti žinutes"],"Change your nickname":["Pakeisti jÅ«sų slapyvardį"],"Grant moderator role to user":["Suteikti vartotojui moderatoriaus vaidmenį"],"Grant ownership of this groupchat":["Suteikti Å¡io kambario savininko teises"],"Revoke the user\'s current affiliation":["AtÅ¡aukti vartotojo esamÄ… narystÄ™"],"Set groupchat subject":["Nustatyti kambario temÄ…"],"Set groupchat subject (alias for /subject)":["Nustatyti kambario temÄ… (slapyvardis /subject)"],"Allow muted user to post messages":["Leisti vartotojui be balso teisÄ—s raÅ¡yti praneÅ¡imus"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["PaslÄ—pti dalyvių sÄ…raÅ¡Ä…"],"Forbidden: you do not have the necessary role in order to do that.":["Uždrausta: jÅ«s neturite tinkamo vaidmens tam atlikti."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Uždrausta: jÅ«sų narystÄ— nÄ—ra tinkama tam atlikti."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Klaida: \\"%1$s\\" komandai reikalingi du argumentai, vartotojo vardas ir neprivalomai priežastis."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["vardas@pavyzdys.lt"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Klaida: netinkamas argumentų skaiÄius"],"This action was done by %1$s.":["Šį veiksmÄ… atliko %1$s."],"The reason given is: \\"%1$s\\".":["Pateikta priežastis: \\"%1$s\\"."],"Announcements":[""],"Notification from %1$s":["PraneÅ¡imas iÅ¡ %1$s"],"%1$s says":["%1$s sako"],"has gone offline":["atsijungÄ—"],"has gone away":["pasiÅ¡alinÄ™s"],"is busy":["užsiÄ—mÄ™s"],"has come online":["prisijungÄ—"],"wants to be your contact":["nori bÅ«ti jÅ«sų kontaktu"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Apie"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Atviro Kodo %2$s XMPP pokalbių klientas pateiktas jums %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s IÅ¡verskite %2$s jį į jÅ«sų kalbÄ…"],"Log out":["Atsijungti"],"Click to change your chat status":["SpustelÄ—kite norÄ—dami pakeisti pokalbio bÅ«senÄ…"],"Show details about this chat client":["Parodyti Å¡io pokalbių kliento duomenis"],"Your avatar image":["JÅ«sų pseudoportretas"],"Checkbox for selecting the following fingerprint":["PažymÄ—ti Å¡io atspaudo pasirinkimui"],"Device without a fingerprint":["Ä®renginys be atspaudo"],"Other OMEMO-enabled devices":["Kiti įrenginiai su įjungtu OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["PažymÄ—ti, kad pasirinkti visų kitų OMEMO įrenginių atspaudus"],"Remove checked devices and close":["IÅ¡trinti pasirinktus įrenginius ir uždaryti"],"Select all":["Pasirinkti viskÄ…"],"This device\'s OMEMO fingerprint":["Å io įrenginio OMEMO atspaudas"],"Generate new keys and fingerprint":["Sugeneruoti naujus raktus ir atspaudÄ…"],"Your Profile":["JÅ«sų profilis"],"Save and close":["IÅ¡saugoti ir uždaryti"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Kelių vaidmenų atskirimui naudokite kablelius. JÅ«sų vaidmenys rodomi Å¡alia jÅ«sų vardo jÅ«sų praneÅ¡imuose."],"OMEMO":[""],"You can check your browser\'s developer console for any error output.":["Galite patikrinti ar yra kokių nors klaidų jÅ«sų narÅ¡yklÄ—s vystytojo konsolÄ—je."],"Away":["PasiÅ¡alinÄ™s"],"Busy":["UžsiÄ—mÄ™s"],"Custom status":["Pritaikyta bÅ«sena"],"Offline":["NeprisijungÄ™s"],"Online":["PrisijungÄ™s"],"Away for long":["Ilgai pasiÅ¡alinÄ™s"],"Change chat status":["Keisti pokalbio bÅ«senÄ…"],"Personal status message":["Asmeninis bÅ«senos praneÅ¡imas"],"I am %1$s":["AÅ¡ esu %1$s"],"Are you sure you want to log out?":["Ar tikrai norite atsijungti?"],"online":["prisijungÄ™s"],"busy":["užsiÄ—mÄ™s"],"away for long":["ilgai pasiÅ¡alinÄ™s"],"away":["pasiÅ¡alinÄ™s"],"offline":["neprisijungÄ™s"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Deja, dÄ—l klaidos nepavyko iÅ¡Å¡ifruoti gauto OMEMO praneÅ¡imo."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s tikriausiai neturi kliento palaikanÄio OMEMO. Daugiau nebus galima naudoti pokalbių Å¡ifravimÄ… Å¡iame kambaryje."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Negalima panaudoti taÅ¡kas-į-taÅ¡kÄ… Å¡ifravimo, kadangi %1$s naudoja klietÄ… nepalaikantį OMEMO."],"Messages are being sent in plaintext":["PraneÅ¡imai siunÄiami atviru tekstu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ar esate tikri, kad norite sugeneruoti naujus OMEMO raktus? Å is veiksmas paÅ¡alins senus raktus ir visi anksÄiau Å¡ifruoti praneÅ¡imai daugiau negalÄ—s bÅ«ti iÅ¡Å¡ifruoti Å¡iame įrenginyje."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Deja, negalime nusiųsti užšifruoto praneÅ¡imo, nes %1$s reikalauja, kad butumÄ—te prenumeravÄ™ jo (jos) bÅ«senÄ…, kad galÄ—tumete matyti jo (jos) OMEMO informacijÄ…"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Deja, negalime nusiųsti užšifruoto praneÅ¡imo, nes %1$s nutolÄ™s serveris nerastas"],"Unable to send an encrypted message due to an unexpected error.":["Neįmanoma nusiųsti užšifruoto praneÅ¡imo dÄ—l nenumatytos klaidos."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Deja, nerasta įrenginių kur galima bÅ«tų nusiųsti OMEMO Å¡ifruotÄ… žinutÄ™."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tai yra OMEMO užšifruotas praneÅ¡imas, kurio jÅ«sų klientas tikriausiai nepalaiko. Daugiau informacijos rasite https://conversations.im/omemo"]," e.g. conversejs.org":[" pvz. converse.org"],"Fetch registration form":["Parsiųsti registracijos formÄ…"],"Tip: A list of public XMPP providers is available":["Patarimas: Yra pasiekiamas sÄ…raÅ¡as viešų XMPP teikÄ—jų"],"here":["Äia"],"Sorry, we\'re unable to connect to your chosen provider.":["Deja, mes negalimeprisijungti prie jÅ«sų pasirinkto teikÄ—jo."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Deja, nurodytas teikÄ—jas nepalaiko tiesioginÄ—s paskyros registracijos. PraÅ¡ome pabandyti kitÄ… teikÄ—jÄ…."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ä®vyko klaida bandant užmegzti ryšį su \\"%1$s\\". Ar esate tikri, kad jis egzistuoja?"],"Now logging you in":["Dabar jus prijungiame"],"Registered successfully":["SÄ—kmingai užregistruotas"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["TeikÄ—jas atmetÄ— jÅ«sų registracijos bandymÄ…. PraÅ¡ome patikrinti ar jÅ«sų pateiktos reikÅ¡mÄ—s teisingos."],"Leave this groupchat":["IÅ¡eiti iÅ¡ Å¡io kambario"],"Click to toggle the list of open groupchats":["SpustelÄ—kite, kad parodyti sÄ…raÅ¡Ä… kambarių"],"Open Groupchats":["Atidaryti Kambarius"],"Add":["PridÄ—ti"],"Add a Contact":["PridÄ—ti kontaktÄ…"],"This contact is busy":["Å is kontaktas yra užsiÄ—mÄ™s"],"This contact is online":["Å is kontaktas yra prisijungÄ™s"],"This contact is offline":["Å is kontaktas yra atsijungÄ™s"],"This contact is unavailable":["Å is kontaktas yra nepasiekiamas"],"This contact is away for an extended period":["Å is kontaktas yra ilgai pasiÅ¡alinÄ™s"],"This contact is away":["Å is kontaktas yra pasiÅ¡alinÄ™s"],"Contact name":["Kontakto vardas"],"Optional nickname":["Neprivalomas slapyvardis"],"Sorry, could not find a contact with that name":["Deja, nepavyko rasti kontakto su Å¡iuo vardu"],"Filter":["Filtras"],"Filter by contact name":["Filtruoti pagal kontakto vardÄ…"],"Filter by group name":["Filtruoti pagal grupÄ—s pavadinimÄ…"],"Filter by status":["Filtruoti pagal bÅ«senÄ…"],"Any":["Bet kuris"],"Unread":["Neskaityta"],"Chatty":["Kalbus"],"Extended Away":["Ilgai pasiÅ¡alinÄ™s"],"Click to remove %1$s as a contact":["SpustelÄ—kite, jei norite paÅ¡alinti %1$s iÅ¡ kontaktų"],"Click to accept the contact request from %1$s":["SpustelÄ—kite, jei norite priimti praÅ¡ymÄ… pridÄ—ti į kontaktus iÅ¡ %1$s"],"Click to decline the contact request from %1$s":["SpustelÄ—kite, jei norite atmesti praÅ¡ymÄ… pridÄ—ti į kontaktus iÅ¡ %1$s"],"Are you sure you want to decline this contact request?":["Ar tikrai norite atmesti šį praÅ¡ymÄ… pridÄ—ti į kontaktus?"],"Contacts":["Kontaktai"],"Add a contact":["PridÄ—ti kontaktÄ…"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[160],{526:function(a){a.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=(n % 10 == 1 && (n % 100 < 11 || n % 100 > 19)) ? 0 : ((n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 1 : 2);","lang":"lt"},"Create your account":["Sukurti jÅ«sų paskyrÄ…"],"Please enter the XMPP provider to register with:":["PraÅ¡ome nurodyti XMPP teikÄ—jÄ… registracijai:"],"Already have a chat account?":["Jau turite pokalbių paskyrÄ…?"],"Log in here":["Prisijunkite Äia"],"Account Registration:":["Paskyros registracija:"],"Register":["Registruotis"],"Choose a different provider":["Pasirinkite kitÄ… teikÄ—jÄ…"],"Hold tight, we\'re fetching the registration form…":["Palaukite, parsiunÄiame registracijos formÄ…..."],"Cancel":["AtÅ¡aukti"],"The connection has dropped, attempting to reconnect.":["RyÅ¡ys nutrÅ«ko, bandoma prisijungti iÅ¡ naujo."],"An error occurred while connecting to the chat server.":["Bandant prisijungti prie pokalbių serverio įvyko klaida."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["AtsipraÅ¡ome, nepavyko prisijungti prie XMPP serverio su domenu: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP serveris nepateikÄ— palaikomo autentifikavimo mechanizmo"],"Sorry, could not determine upload URL.":["Deja, nepavyko nustatyti URL įkÄ—limui."],"Sorry, could not determine file upload URL.":["Deja, nepavyko nustatyti URL failo įkÄ—limui."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Deja, nepavyko sÄ—kmingai įkelti jÅ«sų failo. JÅ«sų serverio atsakas: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Deja, nepavyko sÄ—kmingai įkelti jÅ«sų failo."],"Sorry, looks like file upload is not supported by your server.":["Deja, panaÅ¡u, kad jÅ«sų serveris nepalaiko failų įkÄ—limo."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["JÅ«sų failo dYdis, %1$s, virÅ¡yja serverio maksimalų leistinÄ…, kuris yra %2$s."],"Smileys and emotions":["Å ypsenÄ—lÄ—s ir emocijos"],"People":["ŽmonÄ—s"],"Activities":["Veiklos"],"Travel":["KelionÄ—s"],"Objects":["Objektai"],"Animals and nature":["GyvÅ«nai ir gamta"],"Food and drink":["Valgiai ir gÄ—rimai"],"Symbols":["Simboliai"],"Flags":["VÄ—liavos"],"Stickers":["Lipdukai"],"Your nickname has been automatically set to %1$s":["JÅ«sų slapyvardis buvo automatiÅ¡kai nustatytas kaip %1$s"],"Your nickname has been changed to %1$s":["JÅ«sų slapyvardis buvo pakeistas į %1$s"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Negalima užregistruoti jÅ«sų slapyvardžio Å¡iame kambaryje, jis nepalaiko registracijos."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Negalima užregistruoti jÅ«sų slapyvardžio Å¡iame kambaryje, pateikta neteisinga duomenų forma."],"Topic set by %1$s":["TemÄ… nustatÄ— %1$s"],"Topic cleared by %1$s":["TemÄ… iÅ¡trynÄ— %1$s"],"%1$s has been banned":["%1$s buvo užblokuotas"],"%1$s\'s nickname has changed":["%1$s slapyvardis buvo pakeistas"],"%1$s has been kicked out":["%1$s buvo paÅ¡alintas"],"%1$s has been removed because of an affiliation change":["%1$s buvo paÅ¡alintas dÄ—l narystÄ—s pakeitimo"],"%1$s has been removed for not being a member":["%1$s buvo paÅ¡alintas nes nÄ—ra narys"],"The nickname you chose is reserved or currently in use, please choose a different one.":["JÅ«sų pasirinktas slapyvardis rezervuotas arba jau naudojamas, praÅ¡ome pasirinkti kitÄ…"],"You are not on the member list of this groupchat.":["JÅ«s nesate Å¡io kambario narių sÄ…raÅ¡e."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["JÅ«sų slapyvardis neatitinka Å¡io kambario politikos."],"This groupchat does not (yet) exist.":["Å is kambarys (dar) neegzistuoja."],"This groupchat has reached its maximum number of participants.":["Pasiektas Å¡io kambario dalyvių maksimalus skaiÄius."],"Remote server not found":["NutolÄ™s serveris nerastas"],"The explanation given is: \\"%1$s\\".":["Pateiktas paaiÅ¡kinimas: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s pakvietÄ— jus prisijungti prie kambario: %2$s, ir pateikÄ— tokiÄ… priežastį: \\"%3$s\\""],"Error":["Klaida"],"Sorry, something went wrong while trying to save your bookmark.":["Deja, įvyko klaida bandant iÅ¡saugoti jÅ«sų žymÄ™."],"Timeout Error":["Pasibaugusio laiko klaida"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Serveris nepateikÄ— jÅ«sų žymių per nustatytÄ… laikÄ…. Galite perkrauti puslapį norint užklausti vÄ—l."],"My contacts":["Mano kontaktai"],"Pending contacts":["Nepatvirtinti kontaktai"],"Contact requests":["PraÅ¡ymai pridÄ—ti prie kontaktų"],"Ungrouped":["Nesugrupuota"],"Sorry, there was an error while trying to add %1$s as a contact.":["Deja, įvyko klaida bandant pridÄ—ti %1$s kaip kontaktÄ…."],"This client does not allow presence subscriptions":["Å is klientas neleidžia aktyvumo prenumeratos"],"Click to hide these contacts":["SpustelÄ—kite norint paslÄ—pti Å¡iuos kontaktus"],"Unbookmark this groupchat":["Panaikinti Å¡io kambario žymÄ™"],"Click to toggle the bookmarks list":["SpustelÄ—kite, kad įjungtumÄ—te žymių sÄ…raÅ¡Ä…"],"Bookmarks":["ŽymÄ—s"],"Bookmark this groupchat":["Sukurti Å¡io kambario žymÄ™"],"Would you like this groupchat to be automatically joined upon startup?":["Ar pageidaujate atidaryti šį kambarį automatiÅ¡kai kai prisijungiate?"],"The name for this bookmark:":["ŽymÄ—s vardas:"],"What should your nickname for this groupchat be?":["Koks bus jÅ«sų slapyvardis Å¡iame kambaryje?"],"Save":["IÅ¡saugoti"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ar tikrai norite iÅ¡trinti žymÄ™ \\"%1$s\\"?"],"Close":["Uždaryti"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Parsiųsti audio failÄ… \\"%1$s\\""],"Download file \\"%1$s\\"":["Parsiųsti failÄ… \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["PraneÅ¡imo versijos"],"Retry":[""],"Uploading file:":["Ä®keliamas failas:"],"This message has been edited":["Å is praneÅ¡imas buvo redaguotas"],"No message history available.":["ŽinuÄių istorijos nÄ—ra."],"Search results":["PaieÅ¡kos rezultatai"],"Search":["PaieÅ¡ka"],"Start a call":["PradÄ—ti skambutį"],"Choose a file to send":["Pasirinkite failÄ… siuntimui"],"Click to write as a normal (non-spoiler) message":["SpustelÄ—kite, jei norite paraÅ¡yti įprastÄ… (neatskleidžiamÄ…) praneÅ¡imÄ…"],"Click to write your message as a spoiler":["SpustelÄ—kite, jei norite paraÅ¡yti praneÅ¡imÄ… kaip atskleidÄ—jÄ…"],"The User\'s Profile Image":["Vartotojo profilio nuotrauka"],"Trusted":["Patikimas"],"Untrusted":["Nepatikimas"],"OMEMO Fingerprints":["OMEMO atspaudai"],"XMPP Address":["XMPP adresas"],"Email":["El. paÅ¡tas"],"Full Name":["Visas vardas"],"Nickname":["Slapyvardis"],"Refresh":["Perkrauti"],"Role":["Vaidmuo"],"URL":["URL"],"Remove messages":["PaÅ¡alinti praneÅ¡imus"],"Write in the third person":["RaÅ¡ykite treÄiuoju asmeniu"],"Show this menu":["Rodyti šį meniu"],"Hidden message":["PaslÄ—ptas praneÅ¡imas"],"Message":["PraneÅ¡imas"],"Optional hint":["Neprivaloma užuomina"],"You have unread messages":["JÅ«s turite neperskaitytų praneÅ¡imų"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Turite žinoti, kad kiti XMPP/Jabber klientai (ir serveriai) gali dar nepalaikyti žinutÄ—s atÅ¡aukimo ir Å¡i žinutÄ— galbÅ«t nebus paÅ¡alinta visur."],"Confirm":["Patvirtinti"],"You have an unsent message which will be lost if you continue. Are you sure?":["Turite neiÅ¡siųstÄ… žinutÄ™, kuri dings jei tÄ™site. Ar esate tikri?"],"Are you sure you want to remove this contact?":["Ar tikrai norite paÅ¡alinti šį kontaktÄ…?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Deja, įvyko klaida bandant paÅ¡alinti %1$s iÅ¡ kontaktų."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Greitaveikos padidinimui mes saugome duomenų podÄ—lį jÅ«sų narÅ¡ykleje. Nuimkite varnelÄ™ Å¡iame laukelyje, jeigu tai yra vieÅ¡as kompiuteris arba jei norite, kad jÅ«sų duomenys bÅ«tų iÅ¡trinti, kai atsijungiate. Yra svarbu atlikti atsijungimo veiksmÄ…, kitaip ne visi iÅ¡augoti duomenys bus iÅ¡trinti. Atkreipiame dÄ—mesį, kad naudojant nepatikimÄ… įrenginį OMEMO Å¡ifravimas NÄ–RA galimas."],"This is a trusted device":["Tai yra patikimas įrenginys"],"Create an account":["Sukurti paskyrÄ…"],"Don\'t have a chat account?":["Neturite pokalbių paskyros?"],"Disconnected":[""],"Click here to log in anonymously":["SpustelÄ—kite Äia norÄ—dami prisijungti anonimiÅ¡kai"],"Username":["Vartotojo vardas"],"user@domain":["vartotojas@domenas"],"Please enter a valid XMPP address":["Ä®veskite teisingÄ… XMPP adresÄ…"],"Chat Contacts":["Pokalbio kontaktai"],"Toggle chat":["Perjungti pokalbius"],"Click to restore this chat":["SpustelÄ—kite, kad atstatytumÄ—te pokalbį"],"Minimized":["Minimizuotas"],"This user is a moderator.":["Å is vartotojas yra moderatorius"],"This user can send messages in this groupchat.":["Å is vartotojas gali siųsti praneÅ¡imus Å¡iame kambaryje."],"This user can NOT send messages in this groupchat.":["Å is vartotojas NEGALI siųsti praneÅ¡imų Å¡iame kambaryje."],"Owner":["Savininkas"],"Admin":["Administratorius"],"Member":["Narys"],"Moderator":["Moderatorius"],"Visitor":["Lankytojas"],"Click to mention %1$s in your message.":["SpustelÄ—kite norint paminÄ—ti %1$s savo praneÅ¡ime."],"Participants":["Dalyviai"],"This field is required":["Å is laukelis yra privalomas"],"Join":["Prisijungti"],"Enter a new Groupchat":["Ä®vesti naujÄ… kambarį"],"name@conference.example.org":["vardas@conference.pavyzdys.lt"],"Groupchat address":["Kambario adresas"],"Invite":["Pakviesti"],"Server address":["Serverio adresas"],"Show more information on this groupchat":["Parodyti daugiau informacijos apie šį kambarį"],"Query for Groupchats":["Kambarių užklausa"],"Description:":["ApraÅ¡ymas:"],"Participants:":["Dalyviai:"],"Features:":["SavybÄ—s:"],"Requires authentication":["Reikalinga autentikacija"],"Hidden":["PaslÄ—ptas"],"Requires an invitation":["Reikalingas pakvietimas"],"Moderated":["Moderuojamas"],"Non-anonymous":["Ne anonimiÅ¡kas"],"Open":["Atidarytas"],"Permanent":["Pastovus"],"Public":["VieÅ¡as"],"Semi-anonymous":["Pusiau anonimiÅ¡kas"],"Temporary":["Laikinas"],"Unmoderated":["Nemoderuojamas"],"conference.example.org":["conference.pavyzdys.lt"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatoriai yra privilegijuoti vartotojai, kurie gali keisti kitų vartotojų vaidmenis (iÅ¡skyrus administratoriaus ir savininko narystes)."],"The default role, implies that you can read and write messages.":["Standartinis vaidmuo, leidžia skaityti ir raÅ¡yti žinutes."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Lankytojams neleidžiama raÅ¡yti žinuÄių moderuojamame grupiniame pokalbyje."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Savininkas yra aukÅ¡Äiausias narystÄ—s tipas. Savininkai gali keisti visų kitų vartotojų vaidmenis ir narystes."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Administratorius yra antras pagal svarbumÄ… narystÄ—s tipas. Administratoriai gali keisti keisti visų kitų vartotojų vaidmenis ir narystes, iÅ¡skyrus savininkus."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Norint uždrausti vartotojui prieigÄ… jam suteikiama \\"iÅ¡tremtas\\" narystÄ—."],"Reason":["Priežastis"],"New affiliation":["Nauja narystÄ—"],"Affiliation":["NarystÄ—"],"No users with that affiliation found.":["Nerasta vartotojų su Å¡ia naryste."],"No users with that role found.":["Nerasta vartotojų su Å¡iuo vaidmeniu."],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Vaidmenys priskiriami vartotojams siekiant suteikti ar atimti tam tikras galimybes grupiniame pokalbyje. Jie priskiriami tiesiogiai ar netesiogiai su naryste. Vaidmuo nesusijÄ™s su naryste galioja tik vartotojo sesijos metu."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["NarystÄ— tai ilgalaikÄ— teisÄ—, kuri paprastai suteikia tam tikrÄ… vaidmenį, kuris suteikia privilegijas ir atsakomybes. Pavyzdžiui administratoriai ir savininkai automatiÅ¡kai gauna moderatoriaus vaidmenį."],"Affiliation changed":["NarystÄ— pasikeitÄ—"],"Topic":["Tema"],"Topic author":["Temos autorius"],"Message archiving":["PraneÅ¡imų archivavimas"],"Messages are archived on the server":["PraneÅ¡imai archivuojami serveryje"],"Description":["ApraÅ¡ymas"],"Features":["SavybÄ—s"],"This groupchat is not publicly searchable":["Å is kambarys neprieinamas vieÅ¡oje paieÅ¡koje"],"Members only":["Tik nariams"],"Participants entering this groupchat need to request permission to write":["Dalyviai turi papraÅ¡yti raÅ¡ymo leidimo įeinant į kambarį"],"Name":["Vardas"],"This groupchat does not require a password upon entry":["Å is kambarys nereikalauja slaptažodžio įėjimui"],"No password required":["Slaptažodis nereikalingas"],"All other groupchat participants can see your XMPP address":["Visi kiti kambario dalyviai gali matyti jÅ«sų XMPP adresÄ…"],"Not moderated":["Ne moderuojamas"],"Participants entering this groupchat can write right away":["Dalyviams leidžiama raÅ¡yti iÅ¡kart įeinant į šį kambarį"],"Anyone can join this groupchat":["Bet kas gali įeiti į šį kambarį"],"This groupchat requires a password before entry":["Å is kambarys reikalauja slaptažodžio įėjimui"],"Password protected":["Apsaugotas slaptažodžiu"],"Persistent":["Pastovus"],"This groupchat persists even if it\'s unoccupied":["Å is kambarys iÅ¡lieka net kai neturi lankytojų"],"Only moderators can see your XMPP address":["Tik moderatoriai gali matyti jÅ«sų XMPP adresÄ…"],"This groupchat will disappear once the last person leaves":["Å is kambarys dings kai paskutinis žmogus iÅ¡eis"],"This groupchat is publicly searchable":["Å is kambarys prieinamas vieÅ¡oje paieÅ¡koje"],"Groupchat info for %1$s":["Kambario informacija apie %1$s"],"The conversation has moved. Click below to enter.":["Pokalbis buvo perkeltas. SpustelÄ—kite žemiau įėjimui."],"Enter groupchat":["Ä®eiti į kambarį"],"Please choose your nickname":["PraÅ¡ome pasirinkti slapyvardį"],"This groupchat requires a password":["Å is kambarys reikalauja slaptažodžio"],"Password: ":["Slaptažodis: "],"Submit":["Pateikti"],"%1$s is now a moderator":["%1$s dabar yra moderatorius"],"%1$s is no longer a moderator":["%1$s daugiau nÄ—ra moderatorius"],"Change user\'s affiliation to admin":["Pakeisti vartotojo narystÄ™ į administratoriaus"],"Ban user by changing their affiliation to outcast":["Uždrauskite vartotojui prieigÄ… pakeisdami jo narystÄ™ į iÅ¡tremto"],"Change user role to participant":["Pakeisti vartotojo vaidmenį į dalyvio"],"Kick user from groupchat":["PaÅ¡alinti vartotojÄ… iÅ¡ kambario"],"Write in 3rd person":["RaÅ¡yti treÄiuoju asmeniu"],"Grant membership to a user":["Suteikti vartotojui nario statusÄ…"],"Opens up the moderator tools GUI":["Atidaro moderatoriaus įrankių grafinÄ™ sÄ…sajÄ…"],"Remove user\'s ability to post messages":["Atimti iÅ¡ vartotojo teisÄ™ raÅ¡yti žinutes"],"Change your nickname":["Pakeisti jÅ«sų slapyvardį"],"Grant moderator role to user":["Suteikti vartotojui moderatoriaus vaidmenį"],"Grant ownership of this groupchat":["Suteikti Å¡io kambario savininko teises"],"Revoke the user\'s current affiliation":["AtÅ¡aukti vartotojo esamÄ… narystÄ™"],"Set groupchat subject":["Nustatyti kambario temÄ…"],"Set groupchat subject (alias for /subject)":["Nustatyti kambario temÄ… (slapyvardis /subject)"],"Allow muted user to post messages":["Leisti vartotojui be balso teisÄ—s raÅ¡yti praneÅ¡imus"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["PaslÄ—pti dalyvių sÄ…raÅ¡Ä…"],"Forbidden: you do not have the necessary role in order to do that.":["Uždrausta: jÅ«s neturite tinkamo vaidmens tam atlikti."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Uždrausta: jÅ«sų narystÄ— nÄ—ra tinkama tam atlikti."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Klaida: \\"%1$s\\" komandai reikalingi du argumentai, vartotojo vardas ir neprivalomai priežastis."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["vardas@pavyzdys.lt"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Klaida: netinkamas argumentų skaiÄius"],"This action was done by %1$s.":["Šį veiksmÄ… atliko %1$s."],"The reason given is: \\"%1$s\\".":["Pateikta priežastis: \\"%1$s\\"."],"Announcements":[""],"Notification from %1$s":["PraneÅ¡imas iÅ¡ %1$s"],"%1$s says":["%1$s sako"],"has gone offline":["atsijungÄ—"],"has gone away":["pasiÅ¡alinÄ™s"],"is busy":["užsiÄ—mÄ™s"],"has come online":["prisijungÄ—"],"wants to be your contact":["nori bÅ«ti jÅ«sų kontaktu"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Apie"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Atviro Kodo %2$s XMPP pokalbių klientas pateiktas jums %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s IÅ¡verskite %2$s jį į jÅ«sų kalbÄ…"],"Log out":["Atsijungti"],"Click to change your chat status":["SpustelÄ—kite norÄ—dami pakeisti pokalbio bÅ«senÄ…"],"Show details about this chat client":["Parodyti Å¡io pokalbių kliento duomenis"],"Your avatar image":["JÅ«sų pseudoportretas"],"Checkbox for selecting the following fingerprint":["PažymÄ—ti Å¡io atspaudo pasirinkimui"],"Device without a fingerprint":["Ä®renginys be atspaudo"],"Other OMEMO-enabled devices":["Kiti įrenginiai su įjungtu OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["PažymÄ—ti, kad pasirinkti visų kitų OMEMO įrenginių atspaudus"],"Remove checked devices and close":["IÅ¡trinti pasirinktus įrenginius ir uždaryti"],"Select all":["Pasirinkti viskÄ…"],"This device\'s OMEMO fingerprint":["Å io įrenginio OMEMO atspaudas"],"Generate new keys and fingerprint":["Sugeneruoti naujus raktus ir atspaudÄ…"],"Your Profile":["JÅ«sų profilis"],"Save and close":["IÅ¡saugoti ir uždaryti"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Kelių vaidmenų atskirimui naudokite kablelius. JÅ«sų vaidmenys rodomi Å¡alia jÅ«sų vardo jÅ«sų praneÅ¡imuose."],"OMEMO":[""],"You can check your browser\'s developer console for any error output.":["Galite patikrinti ar yra kokių nors klaidų jÅ«sų narÅ¡yklÄ—s vystytojo konsolÄ—je."],"Away":["PasiÅ¡alinÄ™s"],"Busy":["UžsiÄ—mÄ™s"],"Custom status":["Pritaikyta bÅ«sena"],"Offline":["NeprisijungÄ™s"],"Online":["PrisijungÄ™s"],"Away for long":["Ilgai pasiÅ¡alinÄ™s"],"Change chat status":["Keisti pokalbio bÅ«senÄ…"],"Personal status message":["Asmeninis bÅ«senos praneÅ¡imas"],"I am %1$s":["AÅ¡ esu %1$s"],"Are you sure you want to log out?":["Ar tikrai norite atsijungti?"],"online":["prisijungÄ™s"],"busy":["užsiÄ—mÄ™s"],"away for long":["ilgai pasiÅ¡alinÄ™s"],"away":["pasiÅ¡alinÄ™s"],"offline":["neprisijungÄ™s"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Deja, dÄ—l klaidos nepavyko iÅ¡Å¡ifruoti gauto OMEMO praneÅ¡imo."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s tikriausiai neturi kliento palaikanÄio OMEMO. Daugiau nebus galima naudoti pokalbių Å¡ifravimÄ… Å¡iame kambaryje."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Negalima panaudoti taÅ¡kas-į-taÅ¡kÄ… Å¡ifravimo, kadangi %1$s naudoja klietÄ… nepalaikantį OMEMO."],"Messages are being sent in plaintext":["PraneÅ¡imai siunÄiami atviru tekstu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Deja, negalime nusiųsti užšifruoto praneÅ¡imo, nes %1$s reikalauja, kad butumÄ—te prenumeravÄ™ jo (jos) bÅ«senÄ…, kad galÄ—tumete matyti jo (jos) OMEMO informacijÄ…"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Deja, negalime nusiųsti užšifruoto praneÅ¡imo, nes %1$s nutolÄ™s serveris nerastas"],"Unable to send an encrypted message due to an unexpected error.":["Neįmanoma nusiųsti užšifruoto praneÅ¡imo dÄ—l nenumatytos klaidos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ar esate tikri, kad norite sugeneruoti naujus OMEMO raktus? Å is veiksmas paÅ¡alins senus raktus ir visi anksÄiau Å¡ifruoti praneÅ¡imai daugiau negalÄ—s bÅ«ti iÅ¡Å¡ifruoti Å¡iame įrenginyje."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Deja, nerasta įrenginių kur galima bÅ«tų nusiųsti OMEMO Å¡ifruotÄ… žinutÄ™."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Tai yra OMEMO užšifruotas praneÅ¡imas, kurio jÅ«sų klientas tikriausiai nepalaiko. Daugiau informacijos rasite https://conversations.im/omemo"]," e.g. conversejs.org":[" pvz. converse.org"],"Fetch registration form":["Parsiųsti registracijos formÄ…"],"Tip: A list of public XMPP providers is available":["Patarimas: Yra pasiekiamas sÄ…raÅ¡as viešų XMPP teikÄ—jų"],"here":["Äia"],"Sorry, we\'re unable to connect to your chosen provider.":["Deja, mes negalimeprisijungti prie jÅ«sų pasirinkto teikÄ—jo."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Deja, nurodytas teikÄ—jas nepalaiko tiesioginÄ—s paskyros registracijos. PraÅ¡ome pabandyti kitÄ… teikÄ—jÄ…."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Ä®vyko klaida bandant užmegzti ryšį su \\"%1$s\\". Ar esate tikri, kad jis egzistuoja?"],"Now logging you in":["Dabar jus prijungiame"],"Registered successfully":["SÄ—kmingai užregistruotas"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["TeikÄ—jas atmetÄ— jÅ«sų registracijos bandymÄ…. PraÅ¡ome patikrinti ar jÅ«sų pateiktos reikÅ¡mÄ—s teisingos."],"Leave this groupchat":["IÅ¡eiti iÅ¡ Å¡io kambario"],"Click to toggle the list of open groupchats":["SpustelÄ—kite, kad parodyti sÄ…raÅ¡Ä… kambarių"],"Open Groupchats":["Atidaryti Kambarius"],"Add":["PridÄ—ti"],"Add a Contact":["PridÄ—ti kontaktÄ…"],"This contact is busy":["Å is kontaktas yra užsiÄ—mÄ™s"],"This contact is online":["Å is kontaktas yra prisijungÄ™s"],"This contact is offline":["Å is kontaktas yra atsijungÄ™s"],"This contact is unavailable":["Å is kontaktas yra nepasiekiamas"],"This contact is away for an extended period":["Å is kontaktas yra ilgai pasiÅ¡alinÄ™s"],"This contact is away":["Å is kontaktas yra pasiÅ¡alinÄ™s"],"Contact name":["Kontakto vardas"],"Optional nickname":["Neprivalomas slapyvardis"],"Sorry, could not find a contact with that name":["Deja, nepavyko rasti kontakto su Å¡iuo vardu"],"Filter":["Filtras"],"Filter by contact name":["Filtruoti pagal kontakto vardÄ…"],"Filter by group name":["Filtruoti pagal grupÄ—s pavadinimÄ…"],"Filter by status":["Filtruoti pagal bÅ«senÄ…"],"Any":["Bet kuris"],"Unread":["Neskaityta"],"Chatty":["Kalbus"],"Extended Away":["Ilgai pasiÅ¡alinÄ™s"],"Click to remove %1$s as a contact":["SpustelÄ—kite, jei norite paÅ¡alinti %1$s iÅ¡ kontaktų"],"Click to accept the contact request from %1$s":["SpustelÄ—kite, jei norite priimti praÅ¡ymÄ… pridÄ—ti į kontaktus iÅ¡ %1$s"],"Click to decline the contact request from %1$s":["SpustelÄ—kite, jei norite atmesti praÅ¡ymÄ… pridÄ—ti į kontaktus iÅ¡ %1$s"],"Are you sure you want to decline this contact request?":["Ar tikrai norite atmesti šį praÅ¡ymÄ… pridÄ—ti į kontaktus?"],"Contacts":["Kontaktai"],"Add a contact":["PridÄ—ti kontaktÄ…"]}}}')}}]); //# sourceMappingURL=lt-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/mr-LC_MESSAGES-converse-po.js b/src/conversejs/locales/mr-LC_MESSAGES-converse-po.js index 4ccb78e55294100aa3262fb6e5d36f00706dee9b..02ce636cf6a64154ea4826617f0696f75b81fb55 100644 --- a/src/conversejs/locales/mr-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/mr-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{439:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"mr"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["रदà¥à¤¦ करा"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"You\'re not allowed to retract your message.":[""],"Sorry, an error occurred while trying to retract your message.":[""],"You\'re not allowed to send a message.":[""],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":[""],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":[""],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":[""],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["बंद करा"],"OK":["ठीक आहे"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["संदेश आवृतà¥à¤¤à¥à¤¯à¤¾"],"Retry":[""],"Uploading file:":["फाइल अपलोड करीत आहे:"],"This message has been edited":["हा संदेश संपादित केला गेला आहे"],"Show more":[""],"Show less":[""],"No message history available.":[""],"Search results":["शोध परिणाम"],"Search":["शोधा"],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¤¤à¤¿à¤®à¤¾"],"Trusted":["विशà¥à¤µà¤¾à¤¸à¥"],"Untrusted":["अविशà¥à¤µà¤¾à¤¸à¥‚"],"OMEMO Fingerprints":["OMEMO फिंगरपà¥à¤°à¤¿à¤‚टà¥à¤¸"],"No OMEMO-enabled devices found":[""],"Remove as contact":["संपरà¥à¤• मà¥à¤¹à¤£à¥‚न काढा"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["टोपणनाव"],"Refresh":["रीफà¥à¤°à¥‡à¤¶"],"Role":[""],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":["हे à¤à¤• विशà¥à¤µà¤¸à¤¨à¥€à¤¯ डिवà¥à¤¹à¤¾à¤‡à¤¸ आहे"],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":["लॉग इन करा"],"Disconnected":[""],"Click here to log in anonymously":["अनामिकपणे लॉग इन करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी येथे कà¥à¤²à¤¿à¤• करा"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This field is required":[""],"Join":["सामील वà¥à¤¹à¤¾"],"Enter a new Groupchat":["नवीन गà¥à¤°à¥à¤ªà¤šà¥…ट पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ करा"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":[""],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":[""],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"Groupchats found":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, you\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["विषय"],"Topic author":["विषय लेखक"],"Groupchat address (JID)":["गà¥à¤°à¥à¤ªà¤šà¥…ट पतà¥à¤¤à¤¾ (JID)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["वरà¥à¤£à¤¨"],"Features":["वैशिषà¥à¤Ÿà¥à¤¯à¥‡"],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":["नाव"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":["ऑनलाइन वापरकरà¥à¤¤à¥‡"],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":[""],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["हे गà¥à¤°à¥à¤ª चॅट यापà¥à¤¢à¥‡ असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही"],"Hide the groupchat topic":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s have entered the groupchat":[""],"%1$s have left the groupchat":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"%1$s have been muted":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Optional reason":[""],"Sorry, you\'re not allowed to retract this message":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Show more information about this groupchat":[""],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional reason for destroying this groupchat":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[161],{527:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"mr"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["रदà¥à¤¦ करा"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"You\'re not allowed to retract your message.":[""],"Sorry, an error occurred while trying to retract your message.":[""],"You\'re not allowed to send a message.":[""],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":[""],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":[""],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Timeout while trying to fetch archived messages.":[""],"An error occurred while querying for archived messages.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":[""],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["बंद करा"],"OK":["ठीक आहे"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["संदेश आवृतà¥à¤¤à¥à¤¯à¤¾"],"Retry":[""],"Uploading file:":["फाइल अपलोड करीत आहे:"],"This message has been edited":["हा संदेश संपादित केला गेला आहे"],"Show more":[""],"Show less":[""],"No message history available.":[""],"Search results":["शोध परिणाम"],"Search":["शोधा"],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¤¤à¤¿à¤®à¤¾"],"Trusted":["विशà¥à¤µà¤¾à¤¸à¥"],"Untrusted":["अविशà¥à¤µà¤¾à¤¸à¥‚"],"OMEMO Fingerprints":["OMEMO फिंगरपà¥à¤°à¤¿à¤‚टà¥à¤¸"],"No OMEMO-enabled devices found":[""],"Remove as contact":["संपरà¥à¤• मà¥à¤¹à¤£à¥‚न काढा"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["टोपणनाव"],"Refresh":["रीफà¥à¤°à¥‡à¤¶"],"Role":[""],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":["हे à¤à¤• विशà¥à¤µà¤¸à¤¨à¥€à¤¯ डिवà¥à¤¹à¤¾à¤‡à¤¸ आहे"],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":["लॉग इन करा"],"Disconnected":[""],"Click here to log in anonymously":["अनामिकपणे लॉग इन करणà¥à¤¯à¤¾à¤¸à¤¾à¤ ी येथे कà¥à¤²à¤¿à¤• करा"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":["सामील वà¥à¤¹à¤¾"],"Enter a new Groupchat":["नवीन गà¥à¤°à¥à¤ªà¤šà¥…ट पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ करा"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":[""],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":[""],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"Groupchats found":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, you\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["विषय"],"Topic author":["विषय लेखक"],"Groupchat address (JID)":["गà¥à¤°à¥à¤ªà¤šà¥…ट पतà¥à¤¤à¤¾ (JID)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["वरà¥à¤£à¤¨"],"Features":["वैशिषà¥à¤Ÿà¥à¤¯à¥‡"],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":["नाव"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":["ऑनलाइन वापरकरà¥à¤¤à¥‡"],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":[""],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["हे गà¥à¤°à¥à¤ª चॅट यापà¥à¤¢à¥‡ असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही"],"Hide the groupchat topic":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s have entered the groupchat":[""],"%1$s have left the groupchat":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"%1$s have been muted":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Optional reason":[""],"Sorry, you\'re not allowed to retract this message":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Show more information about this groupchat":[""],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional reason for destroying this groupchat":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=mr-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/nb-LC_MESSAGES-converse-po.js b/src/conversejs/locales/nb-LC_MESSAGES-converse-po.js index 7f0369ab2c185e48e55b1c6332d8c735848bc849..041313d5c7b3b67679735c9ead485b8004551d87 100644 --- a/src/conversejs/locales/nb-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/nb-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{440:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nb"},"Create your account":["Opprett kontoen din"],"Please enter the XMPP provider to register with:":["Skriv inn XMPP-tilbyderen Ã¥ registrere med:"],"Already have a chat account?":["Har du allerede en sludrekonto?"],"Log in here":["Logg inn her"],"Account Registration:":["Kontoregistrering:"],"Register":["Registrér deg"],"Choose a different provider":["Velg en annen tilbyder"],"Hold tight, we\'re fetching the registration form…":["Hold an, henter registreringsskjemaet…"],"Cancel":["Avbryt"],"The connection has dropped, attempting to reconnect.":["Tilkoblingen har gÃ¥tt ned, prøver Ã¥ koble til igjen."],"An error occurred while connecting to the chat server.":["En feil skjedde under tilkobling til sludretjeneren."],"Your XMPP address and/or password is incorrect. Please try again.":["Din XMPP adresse og/eller passord er feilaktig. Prøv igjen."],"The XMPP server did not offer a supported authentication mechanism":["XMPP-tjeneren tilbudte ikke en støttet identitetsbekreftelsesmekanisme"],"Sorry, could not determine upload URL.":["Beklager, kunne ikke fastsette opplastingsnettadresse."],"Sorry, could not determine file upload URL.":["Beklager, kunne ikke fastsette filopplastingsnettadresse."],"Sorry, could not succesfully upload your file.":["Kunne ikke laste opp filen din."],"Sorry, looks like file upload is not supported by your server.":["Beklager, det ser ikke ut til at filopplasting støttes av tjeneren din."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Størrelsen pÃ¥ filen din, %1$s, overstiger maks tillatt størrelse for tjeneren din, som er %2$s."],"People":["Folk"],"Activities":["Aktiviteter"],"Travel":["Reise"],"Objects":["Objekter"],"Animals and nature":["Dyr og natur"],"Food and drink":["Mat og drikke"],"Symbols":["Symboler"],"Flags":["Flagg"],"Stickers":["Klistremerker"],"This groupchat is not anonymous":["Denne gruppesludringen er ikke anonym"],"This groupchat now shows unavailable members":["Denne gruppesludringen viser nÃ¥ utilgjengelige medlemmer"],"This groupchat does not show unavailable members":["Denne gruppesludringen viser ikke utilgjengelige medlemmer"],"The groupchat configuration has changed":["Dette gruppesludringsoppsettet har blitt endret"],"Groupchat logging is now enabled":["Gruppesludringslogging er nÃ¥ pÃ¥slÃ¥tt"],"Groupchat logging is now disabled":["Gruppesludringslogging er nÃ¥ avskrudd"],"This groupchat is now no longer anonymous":["Denne gruppesludringen er ikke lenger anonym"],"This groupchat is now semi-anonymous":["Denne gruppesludringen er nÃ¥ semi-anonym"],"This groupchat is now fully-anonymous":["Denne gruppesludringen er nÃ¥ helt anonym"],"A new groupchat has been created":["En ny gruppesludring har blitt opprettet"],"Your nickname has been automatically set to %1$s":["Ditt kallenavn har blitt automatisk endret til %1$s"],"Your nickname has been changed to %1$s":["Ditt kallenavn har blitt endret til %1$s"],"You have been banned from this groupchat":["Du har blitt utestengt fra denne gruppesludringen"],"You have been kicked from this groupchat":["Du ble kastet ut av denne gruppesludringen"],"You have been removed from this groupchat because of an affiliation change":["Du har blitt fjernet fra denne gruppesludringen som følge av en tilknytningsendring"],"You have been removed from this groupchat because the service hosting it is being shut down":["Du har blitt fjernet fra denne gruppesludringen fordi tjeneren som huser den blir slÃ¥tt av"],"Your message was not delivered because you weren\'t allowed to send it.":["Meldingen din ble ikke levert fordi du ikke tillates Ã¥ sende den."],"Your message was not delivered because you\'re not present in the groupchat.":["Meldingen din ble ikke levert fordi du ikke er i gruppesludringen."],"You\'re not allowed to register yourself in this groupchat.":["Du tillates ikke Ã¥ registrere deg selv i denne gruppesludringen."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Du tillates ikke Ã¥ registrere deg i dette rommet fordi det er forbeholdt medlemmer."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan ikke registrere kallenavnet ditt i denne gruppesludringen, siden den ikke støtter det."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan ikke registrere kallenavnet ditt i denne gruppesludringen, ugydlig dataskjema innsendt."],"%1$s has been banned by %2$s":["%1$s har blitt utestengt %2$s"],"%1$s has been banned":["%1$s har blitt utestengt"],"%1$s\'s nickname has changed":["%1$s sitt kallenavn er endret"],"%1$s has been kicked out by %2$s":["%1$s ble kastet ut %2$s"],"%1$s has been kicked out":["%1$s ble kastet ut"],"%1$s has been removed because of an affiliation change":["%1$s har blitt fjernet pÃ¥ grunn av en tilknytningsendring"],"%1$s has been removed for not being a member":["%1$s har blitt fjernet pÃ¥ grunn av at vedkommende ikke er medlem"],"%1$s is no longer an admin of this groupchat":["%1$s er ikke lenger en administrator for gruppesludringen"],"%1$s is no longer an owner of this groupchat":["%1$s eier ikke lenger dette rommet"],"%1$s is no longer banned from this groupchat":["%1$s er ikke lenger bannlyst fra denne gruppesludringen"],"%1$s is no longer a member of this groupchat":["%1$s er ikke lenger medlem av denne gruppesludringen"],"%1$s is now a member of this groupchat":["%1$s er nÃ¥ medlem av denne gruppesludringen"],"%1$s is now an %2$s of this groupchat":["%1$s er nÃ¥ %2$s i dette rommet"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Kallenavnet du valgte er reservert eller i bruk for tiden, velg noe annet."],"Password incorrect":["Feil passord"],"You are not on the member list of this groupchat.":["Du er ikke pÃ¥ medlemslisten til denne gruppesludringen."],"You have been banned from this groupchat.":["Du har blitt utestengt fra denne gruppesludringen."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Kallenavnet ditt overholder ikke rommets regler."],"This groupchat does not (yet) exist.":["Denne gruppesludringen finnes ikke enda."],"This groupchat has reached its maximum number of participants.":["Denne gruppesludringen har nÃ¥dd maksimalt antall brukere."],"Remote server not found":["Tjeneren annensteds hen ble ikke funnet"],"%1$s has invited you to join a groupchat: %2$s":["%1$s har invitert deg til Ã¥ ta del i en gruppesludring: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s har invitert deg til Ã¥ ta del i rommet: %2$s, etterlot følgende forklaring: \\"%3$s\\""],"Error":["Feil"],"Sorry, something went wrong while trying to save your bookmark.":["Noe gikk galt under lagring av ditt bokmerke."],"Timeout Error":["Tidsavbruddsfeil"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Tjeneren kom ikke med bokmerkene innen tidsfristen. Du kan gjeninnlaste siden for Ã¥ forespørre dem igjen."],"My contacts":["Mine Kontakter"],"Pending contacts":["Kontakter som venter pÃ¥ godkjenning"],"Contact requests":["Kontaktforespørsler"],"Ungrouped":["Ugrupperte"],"New messages":["Nye meldinger"],"Sorry, there was an error while trying to add %1$s as a contact.":["En feil inntraff under tillegg av %1$s som kontakt."],"This client does not allow presence subscriptions":["Denne klienten tillater ikke tilstedeværelsesabonnementer"],"Click to hide these contacts":["Klikk for Ã¥ skjule disse kontaktene"],"Unbookmark this groupchat":["Fjern bokmerkning av denne gruppesludringen"],"Click to open this groupchat":["Klikk for Ã¥ Ã¥pne denne gruppesludringen"],"Click to toggle the bookmarks list":["Klikk for Ã¥ veksle visning av bokmerkelisten"],"Bookmarks":["Bokmerker"],"Bookmark this groupchat":["Bokmerk denne gruppesludringen"],"Would you like this groupchat to be automatically joined upon startup?":["Ønsker du Ã¥ automatisk ta del i denne gruppesludringen ved oppstart?"],"The name for this bookmark:":["Bokmerkets navn:"],"What should your nickname for this groupchat be?":["Hva lags kallenavn ønsker du for denne gruppesludringen?"],"Save":["Lagre"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Er du sikker pÃ¥ at du ønsker Ã¥ fjerne bokmerket \\"%1$s\\"?"],"Unbookmark":["Fjern bokmerke"],"Bookmark":["Legg til bokmerke"],"Close":["Lukk"],"OK":["OK"],"Image: ":[""],"Edit":[""],"Retract":[""],"Message versions":["Meldingsversjoner"],"Retry":[""],"Uploading file:":["Laster opp fil:"],"%1$s has removed this message":["%1$s har fjernet denne meldingen"],"This message has been edited":["Denne meldingen har blitt endret"],"Show more":["Vis mer"],"No message history available.":["Ingen meldingshistorikk tilgjengelig."],"Search":["Søk"],"Insert emojis":["Sett inn smilefjes"],"Send the message":["Send meldingen"],"Start a call":["Start en samtale"],"Choose a file to send":["Velg en fil Ã¥ sende"],"The User\'s Profile Image":["Brukerens profilbilde"],"Trusted":["Betrodd"],"Untrusted":["Ubetrodd"],"OMEMO Fingerprints":["OMEMO-fingeravtrykk"],"XMPP Address":["XMPP-adresse"],"Email":["E-post"],"Full Name":["Fullt navn"],"Nickname":["Kallenavn"],"Refresh":["Gjenoppfrisk"],"Role":["Rolle"],"URL":["Nettadresse"],"%1$s is typing":["%1$s skriver"],"%1$s has gone away":["%1$s har blitt borte"],"Remove messages":["Fjern meldinger"],"Write in the third person":["Skriv i tredjeperson"],"Show this menu":["Viser denne menyen"],"Hidden message":["Skjult melding"],"Message":["Melding"],"Optional hint":["Valgfritt hint"],"You have unread messages":["Du har uleste meldinger"],"Details":["Detaljer"],"Close and end this conversation":["Lukk og avslutt denne samtalen"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Ha i minnet at andre XMPP/Jabber-klienter (og tjenere) kanskje ikke støtter tilbaketrekkinger enda, og at meldingen derfor ikke blir fjernet overalt."],"Confirm":["Bekreft"],"You have an unsent message which will be lost if you continue. Are you sure?":["Du har en usendt melding som vil gÃ¥ tapt hvis du fortsetter. Er du sikker?"],"Are you sure you want to clear the messages from this conversation?":["Er du sikker pÃ¥ at du vil fjerne meldingene fra denne samtalen?"],"%1$s has gone offline":["%1$s har logget av"],"%1$s is busy":["%1$s er opptatt"],"%1$s is online":["%1$s er pÃ¥logget"],"Are you sure you want to remove this contact?":["Er du sikker pÃ¥ at du vil fjerne denne kontakten?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Feil under fjerning av %1$s som kontakt."],"This is a trusted device":["Dette er en betrodd enhet"],"Create an account":["Opprett en konto"],"Don\'t have a chat account?":["Har du ikke en sludrekonto?"],"Log in":["Logg inn"],"Disconnected":["Frakoblet"],"Click here to log in anonymously":["Klikk her for Ã¥ logge inn anonymt"],"Username":["Brukernavn"],"user@domain":["bruker@domene"],"Please enter a valid XMPP address":["Skriv inn et gydlig XMPP-brukernavn"],"Chat Contacts":["Sludrekontakter"],"Toggle chat":["Endre chatten"],"Click to restore this chat":["Klikk for Ã¥ gjenopprette denne samtalen"],"Minimized":["Minimert"],"This field is required":["PÃ¥krevd felt"],"Join":["Ta del"],"name@conference.example.org":["navn@konferanse.eksempel.no"],"Groupchat name":["Gruppesludringsnavn"],"Groupchat address":["Gruppesludringsadresse"],"Invite":["Invitér"],"Server address":["Tjeneradresse"],"Show more information on this groupchat":["Vis mer info om denne gruppesludringen"],"Query for Groupchats":["Spør for rom"],"Description:":["Beskrivelse:"],"Groupchat Address (JID):":["Gruppesludringsadresse (JID):"],"Participants:":["Deltagere:"],"Features:":["Egenskaper:"],"Requires authentication":["Krever Godkjenning"],"Hidden":["Skjult"],"Requires an invitation":["Krever en invitasjon"],"Moderated":["Moderert"],"Non-anonymous":["Ikke-Anonym"],"Permanent":["Permanent"],"Public":["Alle"],"Semi-anonymous":["Semi-anonymt"],"Temporary":["Midlertidig"],"Unmoderated":["Umoderert"],"conference.example.org":["konferanse@eksempel.no"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatorer er priviligerte brukere, som kan endre andre brukeres roller (unntatt de med admin- eller eier-tilknytninger."],"The default role, implies that you can read and write messages.":["Forvalgt rolle impliserer at du kan lese og skrive meldinger."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besøkere tillates ikke Ã¥ skrive meldinger i en moderert flerbrukersludring."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["«Eier» er høyeste tilknytning. Eiere kan andre brukeres roller og tilknytninger."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["«Admin» er nest høyeste tilknytning. Administratorer kan endre andre brukeres tilknytninger, unntatt eiere."],"Change role":["Endre rolle"],"New Role":["Ny rolle"],"Reason":["Begrunnelse"],"New affiliation":["Ny tilknytning"],"Affiliation":["Tilknytning"],"Moderator Tools":["Moderatorverktøy"],"No users with that affiliation found.":["Fant ingen brukere med den tilknytningen."],"Type here to filter the search results":["Skriv her for Ã¥ filtrere søkeresultatene"],"Show users":["Vis brukere"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Roller tildeles brukere for Ã¥ innvilge eller nekte bruk av gitte egenskaper i en flerbrukersludring. De tildeles enten eksplisitt, eller implisitt som del av tilknytningen. En rolle som ikke er en tilknytning varer kun ut brukerøkta."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["En tilknytning er en langtlevende pÃ¥skjønning som typisk impliserer en gitt rolle, og innvilger privilegier og ansvar. For eksempel har administratorer og eiere automatisk moderatorrollen."],"Affiliation changed":["Tilknytning endret"],"Topic":["Emne"],"Topic author":["Emnestarter"],"Groupchat address (JID)":["Romadresse (JID)"],"Message archiving":["Meldingsarkivering"],"Messages are archived on the server":["Meldinger arkiveres pÃ¥ tjeneren"],"Description":["Beskrivelse"],"Features":["Funksjoner"],"Members only":["Kun for medlemmer"],"Participants entering this groupchat need to request permission to write":["Deltagere som tar del i denne gruppesludringen mÃ¥ forespørre skrivetilgang"],"No password required":["Inget passord kreves"],"Not anonymous":["Ikke-anonym"],"Participants entering this groupchat can write right away":["Deltagere som tar del i denne gruppesludringen kan skrive umiddelbart"],"Online users":["PÃ¥loggede brukere"],"Password protected":["Passordbeskyttet"],"Persistent":["Vedvarende"],"Groupchat info for %1$s":["Gruppeslduringsinfo for %1$s"],"You\'re not allowed to send messages in this room":["Du tillates ikke Ã¥ sende meldinger i dette rommet."],"The conversation has moved. Click below to enter.":["Samtalen har flyttet. Ta del i den ved Ã¥ klikke nedenfor."],"This groupchat no longer exists":["Denne gruppesludringen finnes ikke lenger."],"Enter groupchat":["Ta del i gruppesludringen"],"Please choose your nickname":["Endre kallenavnet ditt"],"Password: ":["Passord: "],"Submit":["Send"],"This user is a moderator.":["Denne brukeren er moderator."],"Owner":["Eier"],"Admin":["Administrator"],"Member":["Medlem"],"Moderator":["Moderator"],"Visitor":["Besøkende"],"Click to mention %1$s in your message.":["Klikk for Ã¥ nevne %1$s i meldingen din."],"Participants":["Deltagere"],"%1$s is now a moderator":["%1$s er nÃ¥ moderator"],"%1$s has been given a voice":["%1$s har blitt gitt stemme."],"%1$s has been muted":["%1$s har blitt forstummet"],"%1$s and %2$s":["%1$s og %2$s"],"%1$s have left the groupchat":["%1$s har forlatt gruppesludringen"],"Change user\'s affiliation to admin":["Endre brukerens tilknytning til administrator"],"Ban user by changing their affiliation to outcast":["Bannlys bruker ved Ã¥ endre deres tilhørighet til fredløs"],"Write in 3rd person":["Skriv i tredjeperson"],"Grant membership to a user":["Skjenk medlemskap til en bruker"],"Opens up the moderator tools GUI":["Ã…pner grafisk grensesnitt for moderatorverktøy"],"Remove user\'s ability to post messages":["Fjern brukerens muligheter til Ã¥ skrive meldinger"],"Change your nickname":["Endre ditt kallenavn"],"Grant moderator role to user":["Tildel moderatorrolle til bruker"],"Revoke the user\'s current affiliation":["Tilbakekall brukerens nÃ¥værende tilhørighet"],"Set groupchat subject":["Sett gruppesludringsemne"],"Allow muted user to post messages":["Tillat stumme brukere Ã¥ skrive meldinger"],"Sorry, you\'re not allowed to retract this message":["Du tillates ikke Ã¥ trekke tilbake denne meldingen"],"Sorry, you\'re not allowed to retract this message.":["Du tillates ikke Ã¥ trekke tilbake denne meldingen."],"Invite someone to join this groupchat":["Inviter noen til Ã¥ ta del i denne gruppesludringen"],"Show topic":["Vis emne"],"Hide topic":["Skjul emne"],"Destroy":["Ødelegg"],"Leave":["Forlat"],"Are you sure you want to leave this groupchat?":["Er du sikker pÃ¥ at ønsker Ã¥ forlate denne gruppesludringen?"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Feil: \\"%1$s\\"-kommandoen tar to argumenter, brukerens kallenavn og alternativt en grunn."],"name@example.org":["navn@eksempel.no"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Feil: Ugyldig antall argumenter"],"This action was done by %1$s.":["Handlingen ble utført av %1$s."],"The reason given is: \\"%1$s\\".":["Oppgitt Ã¥rsak er: \\"%1$s\\"."],"Groupchats":["Gruppeslduringer"],"Add a new groupchat":["Legg til ny gruppesludring"],"Query for groupchats":["Spørring for gruppesludringer"],"Sorry, an error occurred while trying to submit the config form.":["En feil skjedde ved forsøk pÃ¥ Ã¥ sende inn oppsettsskjemaet."],"Close these announcements":["Lukk disse kunngjøringene"],"Announcements":["Kunngjøringer"],"Click to open this server message":["Klikk for Ã¥ Ã¥pne denne tjenermeldingen"],"Notification from %1$s":["Merknad fra %1$s"],"%1$s says":["%1$s sier"],"has gone offline":["har logget av"],"has gone away":["har blitt borte"],"is busy":["er opptatt"],"has come online":["har logget pÃ¥"],"wants to be your contact":["ønsker Ã¥ bli kontaktfestet"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Om"],"Commands":[""],"%1$s Translate %2$s it into your own language":["%1$sOversett%2$s det til ditt eget sprÃ¥k"],"Log out":["Logg Av"],"Click to change your chat status":["Klikk for Ã¥ endre din meldingsstatus"],"Show details about this chat client":["Vis flere detaljer om denne sludreklienten"],"Your avatar image":["Ditt avatarbilde"],"Checkbox for selecting the following fingerprint":["Avkryssningsboks for valg av følgende fingeravtrykk"],"Device without a fingerprint":["Enhet uten fingeravtrykk"],"Checkbox to select fingerprints of all other OMEMO devices":["Utkryssningsboks for Ã¥ velge fingeravtrykkene for alle andre OMEMO-enheter"],"Remove checked devices and close":["Fjern avkryssede enheter og lukk"],"This device\'s OMEMO fingerprint":["Denne enhetens OMEMO-fingeravtrykk"],"Generate new keys and fingerprint":["Generer nye nøkler og fingeravtrykk"],"Your Profile":["Din profil"],"XMPP Address (JID)":["XMPP-adresse (JID)"],"Save and close":["Lagre og lukk"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Bruk komma for Ã¥ inndele flere roller. Dine roller vieses ved siden av navnet ditt i sludremeldingene dine."],"OMEMO":["OMEMO"],"Profile":["Profil"],"You can check your browser\'s developer console for any error output.":["Du kan sjekke din nettlesers utviklerkonsoll for feil-utdata."],"Away":["Borte"],"Busy":["Opptatt"],"Custom status":["Personlig status"],"Offline":["Avlogget"],"Online":["PÃ¥logget"],"Personal status message":["Personlig statusmelding"],"I am %1$s":["Jeg er %1$s"],"Are you sure you want to log out?":["Er du sikker pÃ¥ at du vil logge ut?"],"online":["pÃ¥logget"],"busy":["opptatt"],"away for long":["borte lenge"],"away":["borte"],"offline":["avlogget"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Kunne ikke dekryptere mottatt OMEMO-melding som følge av feil."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ser ikke ut til Ã¥ være en klient som støtter OMEMO. Krypter sludring vil ikke lenger være mulig i denne gruppesludringen."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan ikke bruke ende-til-ende -kryptering, fordi %1$s bruker en klient som ikke støtter OMEMO."],"Messages are being sent in plaintext":["Meldinger blir sendt i klartekst"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["En feil skjedde ved forsøk pÃ¥ Ã¥ fjerne enhetene."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Kunne ikke sende kryptert melding fordi %1$s krever at du mÃ¥ abonnere pÃ¥ deres tilstedeværelse for Ã¥ kunne se deres OMEMO-info."],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Kunne ikke sende kryptert melding fordi fjerntjeneren for %1$s ikke ble funnet."],"Unable to send an encrypted message due to an unexpected error.":["Kunne ikke sende kryptert melding som følge av feil."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dette er en OMEMO-kryptert melding som din klient ikke ser ut til Ã¥ støtte. Mer info er Ã¥ finne pÃ¥ https://conversations.im/omemo"]," e.g. conversejs.org":[" f.eks. conversejs.org"],"Fetch registration form":["Hent registreringsskjema"],"Tip: A list of public XMPP providers is available":["Tips: En liste med offentlige XMPP-tilbydere er tilgjengelig"],"here":["her"],"Sorry, we\'re unable to connect to your chosen provider.":["Kunne ikke koble til din valgte tilbyder."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Beklager, den valgte tilbyderen støtter ikke kontoregistrering i utvekslingsnettet. Prøv igjen med en annen tilbyder."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Noe gikk galt under etablering av forbindelse til \\"%1$s\\". Er du sikker pÃ¥ at det eksisterer?"],"Now logging you in":["Logger deg inn"],"Registered successfully":["Registrering var vellykket"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Tilbyderen avviste ditt registreringsforsøk. Sjekk verdiene du skrev inn."],"Leave this groupchat":["Forlat denne gruppesludringen"],"Click to toggle the list of open groupchats":["Klikk for Ã¥ veksle visning av Ã¥pne rom"],"Open Groupchats":["Ã…pne gruppesludringer"],"Add":["Legg Til"],"This contact is busy":["Denne kontakten er opptatt"],"This contact is online":["Kontakten er pÃ¥logget"],"This contact is offline":["Kontakten er avlogget"],"This contact is unavailable":["Kontakten er utilgjengelig"],"This contact is away for an extended period":["Kontakten er borte for en lengre periode"],"This contact is away":["Kontakten er borte"],"Contact name":["Kontaktnavn"],"Optional nickname":["Valgfritt kallenavn"],"Sorry, could not find a contact with that name":["Fant ingen slik kontakt"],"This contact has already been added":["Denne kontakten har allerede blitt lagt til"],"Filter":["Filter"],"Filter by group name":["Filtrer etter gruppenavn"],"Filter by status":["Filtrer etter status"],"Any":["Enhver"],"Unread":["Ulest"],"Chatty":["Pratsom"],"Extended Away":["Utvidet lediggang"],"Click to remove %1$s as a contact":["Klikk for Ã¥ fjerne %1$s som kontakt"],"Click to accept the contact request from %1$s":["Klikk for Ã¥ godta denne kontaktforespørselen fra %1$s"],"Click to decline the contact request from %1$s":["Klikk for Ã¥ avslÃ¥ denne kontaktforespørselen fra %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Klikk for Ã¥ sludre med %1$s (XMPP adresse: %2$s)"],"Are you sure you want to decline this contact request?":["Er du sikker pÃ¥ at du vil avslÃ¥ denne kontaktforespørselen?"],"Contacts":["Kontakter"],"Add a contact":["Legg til en Kontakt"],"Re-sync your contacts":["Synkroniser dine kontakter igjen"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[162],{528:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nb"},"Create your account":["Opprett kontoen din"],"Please enter the XMPP provider to register with:":["Skriv inn XMPP-tilbyderen Ã¥ registrere med:"],"Already have a chat account?":["Har du allerede en sludrekonto?"],"Log in here":["Logg inn her"],"Account Registration:":["Kontoregistrering:"],"Register":["Registrér deg"],"Choose a different provider":["Velg en annen tilbyder"],"Hold tight, we\'re fetching the registration form…":["Hold an, henter registreringsskjemaet…"],"Cancel":["Avbryt"],"The connection has dropped, attempting to reconnect.":["Tilkoblingen har gÃ¥tt ned, prøver Ã¥ koble til igjen."],"An error occurred while connecting to the chat server.":["En feil skjedde under tilkobling til sludretjeneren."],"Your XMPP address and/or password is incorrect. Please try again.":["Din XMPP adresse og/eller passord er feilaktig. Prøv igjen."],"The XMPP server did not offer a supported authentication mechanism":["XMPP-tjeneren tilbudte ikke en støttet identitetsbekreftelsesmekanisme"],"Sorry, could not determine upload URL.":["Beklager, kunne ikke fastsette opplastingsnettadresse."],"Sorry, could not determine file upload URL.":["Beklager, kunne ikke fastsette filopplastingsnettadresse."],"Sorry, could not succesfully upload your file.":["Kunne ikke laste opp filen din."],"Sorry, looks like file upload is not supported by your server.":["Beklager, det ser ikke ut til at filopplasting støttes av tjeneren din."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Størrelsen pÃ¥ filen din, %1$s, overstiger maks tillatt størrelse for tjeneren din, som er %2$s."],"People":["Folk"],"Activities":["Aktiviteter"],"Travel":["Reise"],"Objects":["Objekter"],"Animals and nature":["Dyr og natur"],"Food and drink":["Mat og drikke"],"Symbols":["Symboler"],"Flags":["Flagg"],"Stickers":["Klistremerker"],"This groupchat is not anonymous":["Denne gruppesludringen er ikke anonym"],"This groupchat now shows unavailable members":["Denne gruppesludringen viser nÃ¥ utilgjengelige medlemmer"],"This groupchat does not show unavailable members":["Denne gruppesludringen viser ikke utilgjengelige medlemmer"],"The groupchat configuration has changed":["Dette gruppesludringsoppsettet har blitt endret"],"Groupchat logging is now enabled":["Gruppesludringslogging er nÃ¥ pÃ¥slÃ¥tt"],"Groupchat logging is now disabled":["Gruppesludringslogging er nÃ¥ avskrudd"],"This groupchat is now no longer anonymous":["Denne gruppesludringen er ikke lenger anonym"],"This groupchat is now semi-anonymous":["Denne gruppesludringen er nÃ¥ semi-anonym"],"This groupchat is now fully-anonymous":["Denne gruppesludringen er nÃ¥ helt anonym"],"A new groupchat has been created":["En ny gruppesludring har blitt opprettet"],"Your nickname has been automatically set to %1$s":["Ditt kallenavn har blitt automatisk endret til %1$s"],"Your nickname has been changed to %1$s":["Ditt kallenavn har blitt endret til %1$s"],"You have been banned from this groupchat":["Du har blitt utestengt fra denne gruppesludringen"],"You have been kicked from this groupchat":["Du ble kastet ut av denne gruppesludringen"],"You have been removed from this groupchat because of an affiliation change":["Du har blitt fjernet fra denne gruppesludringen som følge av en tilknytningsendring"],"You have been removed from this groupchat because the service hosting it is being shut down":["Du har blitt fjernet fra denne gruppesludringen fordi tjeneren som huser den blir slÃ¥tt av"],"Your message was not delivered because you weren\'t allowed to send it.":["Meldingen din ble ikke levert fordi du ikke tillates Ã¥ sende den."],"Your message was not delivered because you\'re not present in the groupchat.":["Meldingen din ble ikke levert fordi du ikke er i gruppesludringen."],"You\'re not allowed to register yourself in this groupchat.":["Du tillates ikke Ã¥ registrere deg selv i denne gruppesludringen."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Du tillates ikke Ã¥ registrere deg i dette rommet fordi det er forbeholdt medlemmer."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan ikke registrere kallenavnet ditt i denne gruppesludringen, siden den ikke støtter det."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan ikke registrere kallenavnet ditt i denne gruppesludringen, ugydlig dataskjema innsendt."],"%1$s has been banned by %2$s":["%1$s har blitt utestengt %2$s"],"%1$s has been banned":["%1$s har blitt utestengt"],"%1$s\'s nickname has changed":["%1$s sitt kallenavn er endret"],"%1$s has been kicked out by %2$s":["%1$s ble kastet ut %2$s"],"%1$s has been kicked out":["%1$s ble kastet ut"],"%1$s has been removed because of an affiliation change":["%1$s har blitt fjernet pÃ¥ grunn av en tilknytningsendring"],"%1$s has been removed for not being a member":["%1$s har blitt fjernet pÃ¥ grunn av at vedkommende ikke er medlem"],"%1$s is no longer an admin of this groupchat":["%1$s er ikke lenger en administrator for gruppesludringen"],"%1$s is no longer an owner of this groupchat":["%1$s eier ikke lenger dette rommet"],"%1$s is no longer banned from this groupchat":["%1$s er ikke lenger bannlyst fra denne gruppesludringen"],"%1$s is no longer a member of this groupchat":["%1$s er ikke lenger medlem av denne gruppesludringen"],"%1$s is now a member of this groupchat":["%1$s er nÃ¥ medlem av denne gruppesludringen"],"%1$s is now an %2$s of this groupchat":["%1$s er nÃ¥ %2$s i dette rommet"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Kallenavnet du valgte er reservert eller i bruk for tiden, velg noe annet."],"Password incorrect":["Feil passord"],"You are not on the member list of this groupchat.":["Du er ikke pÃ¥ medlemslisten til denne gruppesludringen."],"You have been banned from this groupchat.":["Du har blitt utestengt fra denne gruppesludringen."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Kallenavnet ditt overholder ikke rommets regler."],"This groupchat does not (yet) exist.":["Denne gruppesludringen finnes ikke enda."],"This groupchat has reached its maximum number of participants.":["Denne gruppesludringen har nÃ¥dd maksimalt antall brukere."],"Remote server not found":["Tjeneren annensteds hen ble ikke funnet"],"%1$s has invited you to join a groupchat: %2$s":["%1$s har invitert deg til Ã¥ ta del i en gruppesludring: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s har invitert deg til Ã¥ ta del i rommet: %2$s, etterlot følgende forklaring: \\"%3$s\\""],"Error":["Feil"],"Sorry, something went wrong while trying to save your bookmark.":["Noe gikk galt under lagring av ditt bokmerke."],"Timeout Error":["Tidsavbruddsfeil"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Tjeneren kom ikke med bokmerkene innen tidsfristen. Du kan gjeninnlaste siden for Ã¥ forespørre dem igjen."],"My contacts":["Mine Kontakter"],"Pending contacts":["Kontakter som venter pÃ¥ godkjenning"],"Contact requests":["Kontaktforespørsler"],"Ungrouped":["Ugrupperte"],"New messages":["Nye meldinger"],"Sorry, there was an error while trying to add %1$s as a contact.":["En feil inntraff under tillegg av %1$s som kontakt."],"This client does not allow presence subscriptions":["Denne klienten tillater ikke tilstedeværelsesabonnementer"],"Click to hide these contacts":["Klikk for Ã¥ skjule disse kontaktene"],"Unbookmark this groupchat":["Fjern bokmerkning av denne gruppesludringen"],"Click to open this groupchat":["Klikk for Ã¥ Ã¥pne denne gruppesludringen"],"Click to toggle the bookmarks list":["Klikk for Ã¥ veksle visning av bokmerkelisten"],"Bookmarks":["Bokmerker"],"Bookmark this groupchat":["Bokmerk denne gruppesludringen"],"Would you like this groupchat to be automatically joined upon startup?":["Ønsker du Ã¥ automatisk ta del i denne gruppesludringen ved oppstart?"],"The name for this bookmark:":["Bokmerkets navn:"],"What should your nickname for this groupchat be?":["Hva lags kallenavn ønsker du for denne gruppesludringen?"],"Save":["Lagre"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Er du sikker pÃ¥ at du ønsker Ã¥ fjerne bokmerket \\"%1$s\\"?"],"Unbookmark":["Fjern bokmerke"],"Bookmark":["Legg til bokmerke"],"Close":["Lukk"],"OK":["OK"],"Image: ":["Bilde: "],"Edit":["Rediger"],"Retract":["Trekk tilbake"],"Message versions":["Meldingsversjoner"],"Retry":["Prøv igjen"],"Uploading file:":["Laster opp fil:"],"%1$s has removed this message":["%1$s har fjernet denne meldingen"],"This message has been edited":["Denne meldingen har blitt endret"],"Show more":["Vis mer"],"No message history available.":["Ingen meldingshistorikk tilgjengelig."],"Search":["Søk"],"Insert emojis":["Sett inn smilefjes"],"Send the message":["Send meldingen"],"Start a call":["Start en samtale"],"Choose a file to send":["Velg en fil Ã¥ sende"],"The User\'s Profile Image":["Brukerens profilbilde"],"Trusted":["Betrodd"],"Untrusted":["Ubetrodd"],"OMEMO Fingerprints":["OMEMO-fingeravtrykk"],"XMPP Address":["XMPP-adresse"],"Email":["E-post"],"Full Name":["Fullt navn"],"Nickname":["Kallenavn"],"Refresh":["Gjenoppfrisk"],"Role":["Rolle"],"URL":["Nettadresse"],"%1$s is typing":["%1$s skriver"],"%1$s has gone away":["%1$s har blitt borte"],"Remove messages":["Fjern meldinger"],"Write in the third person":["Skriv i tredjeperson"],"Show this menu":["Viser denne menyen"],"Hidden message":["Skjult melding"],"Message":["Melding"],"Optional hint":["Valgfritt hint"],"You have unread messages":["Du har uleste meldinger"],"Details":["Detaljer"],"Close and end this conversation":["Lukk og avslutt denne samtalen"],"Sorry, the connection has been lost, and your message could not be sent":["Forbindelsen gikk tapt, og meldingen din kunne ikke sendes"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Ha i minnet at andre XMPP/Jabber-klienter (og tjenere) kanskje ikke støtter tilbaketrekkinger enda, og at meldingen derfor ikke blir fjernet overalt."],"Confirm":["Bekreft"],"You have an unsent message which will be lost if you continue. Are you sure?":["Du har en usendt melding som vil gÃ¥ tapt hvis du fortsetter. Er du sikker?"],"Are you sure you want to clear the messages from this conversation?":["Er du sikker pÃ¥ at du vil fjerne meldingene fra denne samtalen?"],"%1$s has gone offline":["%1$s har logget av"],"%1$s is busy":["%1$s er opptatt"],"%1$s is online":["%1$s er pÃ¥logget"],"Are you sure you want to remove this contact?":["Er du sikker pÃ¥ at du vil fjerne denne kontakten?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Feil under fjerning av %1$s som kontakt."],"This is a trusted device":["Dette er en betrodd enhet"],"Create an account":["Opprett en konto"],"Don\'t have a chat account?":["Har du ikke en sludrekonto?"],"Log in":["Logg inn"],"Disconnected":["Frakoblet"],"Click here to log in anonymously":["Klikk her for Ã¥ logge inn anonymt"],"Username":["Brukernavn"],"user@domain":["bruker@domene"],"Please enter a valid XMPP address":["Skriv inn et gydlig XMPP-brukernavn"],"Chat Contacts":["Sludrekontakter"],"Toggle chat":["Endre chatten"],"Click to restore this chat":["Klikk for Ã¥ gjenopprette denne samtalen"],"Minimized":["Minimert"],"This user is a moderator.":["Denne brukeren er moderator."],"Owner":["Eier"],"Admin":["Administrator"],"Member":["Medlem"],"Moderator":["Moderator"],"Visitor":["Besøkende"],"Click to mention %1$s in your message.":["Klikk for Ã¥ nevne %1$s i meldingen din."],"Participants":["Deltagere"],"This field is required":["PÃ¥krevd felt"],"Join":["Ta del"],"name@conference.example.org":["navn@konferanse.eksempel.no"],"Groupchat name":["Gruppesludringsnavn"],"Groupchat address":["Gruppesludringsadresse"],"Invite":["Invitér"],"Server address":["Tjeneradresse"],"Show more information on this groupchat":["Vis mer info om denne gruppesludringen"],"Query for Groupchats":["Spør for rom"],"Description:":["Beskrivelse:"],"Groupchat Address (JID):":["Gruppesludringsadresse (JID):"],"Participants:":["Deltagere:"],"Features:":["Egenskaper:"],"Requires authentication":["Krever Godkjenning"],"Hidden":["Skjult"],"Requires an invitation":["Krever en invitasjon"],"Moderated":["Moderert"],"Non-anonymous":["Ikke-Anonym"],"Permanent":["Permanent"],"Public":["Alle"],"Semi-anonymous":["Semi-anonymt"],"Temporary":["Midlertidig"],"Unmoderated":["Umoderert"],"conference.example.org":["konferanse@eksempel.no"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatorer er priviligerte brukere, som kan endre andre brukeres roller (unntatt de med admin- eller eier-tilknytninger."],"The default role, implies that you can read and write messages.":["Forvalgt rolle impliserer at du kan lese og skrive meldinger."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Besøkere tillates ikke Ã¥ skrive meldinger i en moderert flerbrukersludring."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["«Eier» er høyeste tilknytning. Eiere kan andre brukeres roller og tilknytninger."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["«Admin» er nest høyeste tilknytning. Administratorer kan endre andre brukeres tilknytninger, unntatt eiere."],"Change role":["Endre rolle"],"New Role":["Ny rolle"],"Reason":["Begrunnelse"],"New affiliation":["Ny tilknytning"],"Affiliation":["Tilknytning"],"Moderator Tools":["Moderatorverktøy"],"No users with that affiliation found.":["Fant ingen brukere med den tilknytningen."],"Type here to filter the search results":["Skriv her for Ã¥ filtrere søkeresultatene"],"Show users":["Vis brukere"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Roller tildeles brukere for Ã¥ innvilge eller nekte bruk av gitte egenskaper i en flerbrukersludring. De tildeles enten eksplisitt, eller implisitt som del av tilknytningen. En rolle som ikke er en tilknytning varer kun ut brukerøkta."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["En tilknytning er en langtlevende pÃ¥skjønning som typisk impliserer en gitt rolle, og innvilger privilegier og ansvar. For eksempel har administratorer og eiere automatisk moderatorrollen."],"Affiliation changed":["Tilknytning endret"],"Topic":["Emne"],"Topic author":["Emnestarter"],"Groupchat address (JID)":["Romadresse (JID)"],"Message archiving":["Meldingsarkivering"],"Messages are archived on the server":["Meldinger arkiveres pÃ¥ tjeneren"],"Description":["Beskrivelse"],"Features":["Funksjoner"],"Members only":["Kun for medlemmer"],"Participants entering this groupchat need to request permission to write":["Deltagere som tar del i denne gruppesludringen mÃ¥ forespørre skrivetilgang"],"No password required":["Inget passord kreves"],"Not anonymous":["Ikke-anonym"],"Participants entering this groupchat can write right away":["Deltagere som tar del i denne gruppesludringen kan skrive umiddelbart"],"Online users":["PÃ¥loggede brukere"],"Password protected":["Passordbeskyttet"],"Persistent":["Vedvarende"],"Groupchat info for %1$s":["Gruppeslduringsinfo for %1$s"],"You\'re not allowed to send messages in this room":["Du tillates ikke Ã¥ sende meldinger i dette rommet."],"The conversation has moved. Click below to enter.":["Samtalen har flyttet. Ta del i den ved Ã¥ klikke nedenfor."],"This groupchat no longer exists":["Denne gruppesludringen finnes ikke lenger."],"Enter groupchat":["Ta del i gruppesludringen"],"Please choose your nickname":["Endre kallenavnet ditt"],"Password: ":["Passord: "],"Submit":["Send"],"%1$s is now a moderator":["%1$s er nÃ¥ moderator"],"%1$s has been given a voice":["%1$s har blitt gitt stemme."],"%1$s has been muted":["%1$s har blitt forstummet"],"%1$s and %2$s":["%1$s og %2$s"],"%1$s have left the groupchat":["%1$s har forlatt gruppesludringen"],"Change user\'s affiliation to admin":["Endre brukerens tilknytning til administrator"],"Ban user by changing their affiliation to outcast":["Bannlys bruker ved Ã¥ endre deres tilhørighet til fredløs"],"Write in 3rd person":["Skriv i tredjeperson"],"Grant membership to a user":["Skjenk medlemskap til en bruker"],"Opens up the moderator tools GUI":["Ã…pner grafisk grensesnitt for moderatorverktøy"],"Remove user\'s ability to post messages":["Fjern brukerens muligheter til Ã¥ skrive meldinger"],"Change your nickname":["Endre ditt kallenavn"],"Grant moderator role to user":["Tildel moderatorrolle til bruker"],"Revoke the user\'s current affiliation":["Tilbakekall brukerens nÃ¥værende tilhørighet"],"Set groupchat subject":["Sett gruppesludringsemne"],"Allow muted user to post messages":["Tillat stumme brukere Ã¥ skrive meldinger"],"Sorry, you\'re not allowed to retract this message":["Du tillates ikke Ã¥ trekke tilbake denne meldingen"],"Sorry, you\'re not allowed to retract this message.":["Du tillates ikke Ã¥ trekke tilbake denne meldingen."],"Invite someone to join this groupchat":["Inviter noen til Ã¥ ta del i denne gruppesludringen"],"Show topic":["Vis emne"],"Hide topic":["Skjul emne"],"Destroy":["Ødelegg"],"Leave":["Forlat"],"Are you sure you want to leave this groupchat?":["Er du sikker pÃ¥ at ønsker Ã¥ forlate denne gruppesludringen?"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Feil: \\"%1$s\\"-kommandoen tar to argumenter, brukerens kallenavn og alternativt en grunn."],"name@example.org":["navn@eksempel.no"],"Optional XMPP address for a new groupchat that replaces this one":["Valgfri XMPP-adresse for en ny gruppesludring som erstatter denne"],"Error: invalid number of arguments":["Feil: Ugyldig antall argumenter"],"This action was done by %1$s.":["Handlingen ble utført av %1$s."],"The reason given is: \\"%1$s\\".":["Oppgitt Ã¥rsak er: \\"%1$s\\"."],"Groupchats":["Gruppeslduringer"],"Add a new groupchat":["Legg til ny gruppesludring"],"Query for groupchats":["Spørring for gruppesludringer"],"Sorry, an error occurred while trying to submit the config form.":["En feil skjedde ved forsøk pÃ¥ Ã¥ sende inn oppsettsskjemaet."],"Close these announcements":["Lukk disse kunngjøringene"],"Announcements":["Kunngjøringer"],"Click to open this server message":["Klikk for Ã¥ Ã¥pne denne tjenermeldingen"],"Notification from %1$s":["Merknad fra %1$s"],"%1$s says":["%1$s sier"],"has gone offline":["har logget av"],"has gone away":["har blitt borte"],"is busy":["er opptatt"],"has come online":["har logget pÃ¥"],"wants to be your contact":["ønsker Ã¥ bli kontaktfestet"],"Hide":["Skjul"],"Execute":["Kjør"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Noen XMPP-tjenester og instanser tillater priviligerte brukere Ã¥ kjøre ad-hoc-kommandoer i dem."],"List available commands":["List opp tilgjengelige kommandoer"],"Sorry, an error occurred while looking for commands on that entity.":["Klarte ikke Ã¥ se etter kommandoer pÃ¥ denne identiteten."],"About":["Om"],"Commands":["Kommandoer"],"%1$s Translate %2$s it into your own language":["%1$sOversett%2$s det til ditt eget sprÃ¥k"],"Log out":["Logg Av"],"Click to change your chat status":["Klikk for Ã¥ endre din meldingsstatus"],"Show details about this chat client":["Vis flere detaljer om denne sludreklienten"],"Your avatar image":["Ditt avatarbilde"],"Checkbox for selecting the following fingerprint":["Avkryssningsboks for valg av følgende fingeravtrykk"],"Device without a fingerprint":["Enhet uten fingeravtrykk"],"Checkbox to select fingerprints of all other OMEMO devices":["Utkryssningsboks for Ã¥ velge fingeravtrykkene for alle andre OMEMO-enheter"],"Remove checked devices and close":["Fjern avkryssede enheter og lukk"],"This device\'s OMEMO fingerprint":["Denne enhetens OMEMO-fingeravtrykk"],"Generate new keys and fingerprint":["Generer nye nøkler og fingeravtrykk"],"Your Profile":["Din profil"],"XMPP Address (JID)":["XMPP-adresse (JID)"],"Save and close":["Lagre og lukk"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Bruk komma for Ã¥ inndele flere roller. Dine roller vieses ved siden av navnet ditt i sludremeldingene dine."],"OMEMO":["OMEMO"],"Profile":["Profil"],"You can check your browser\'s developer console for any error output.":["Du kan sjekke din nettlesers utviklerkonsoll for feil-utdata."],"Away":["Borte"],"Busy":["Opptatt"],"Custom status":["Personlig status"],"Offline":["Avlogget"],"Online":["PÃ¥logget"],"Personal status message":["Personlig statusmelding"],"I am %1$s":["Jeg er %1$s"],"Are you sure you want to log out?":["Er du sikker pÃ¥ at du vil logge ut?"],"online":["pÃ¥logget"],"busy":["opptatt"],"away for long":["borte lenge"],"away":["borte"],"offline":["avlogget"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Kunne ikke dekryptere mottatt OMEMO-melding som følge av feil."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ser ikke ut til Ã¥ være en klient som støtter OMEMO. Krypter sludring vil ikke lenger være mulig i denne gruppesludringen."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan ikke bruke ende-til-ende -kryptering, fordi %1$s bruker en klient som ikke støtter OMEMO."],"Messages are being sent in plaintext":["Meldinger blir sendt i klartekst"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Denne gruppesludringen mÃ¥ være kun for medlemmer, og ikke anonym for Ã¥ støtte OMEMO-krypterte meldinger"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Kunne ikke sende kryptert melding fordi %1$s krever at du mÃ¥ abonnere pÃ¥ deres tilstedeværelse for Ã¥ kunne se deres OMEMO-info."],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Kunne ikke sende kryptert melding fordi fjerntjeneren for %1$s ikke ble funnet."],"Unable to send an encrypted message due to an unexpected error.":["Kunne ikke sende kryptert melding som følge av feil."],"Sorry, an error occurred while trying to remove the devices.":["En feil skjedde ved forsøk pÃ¥ Ã¥ fjerne enhetene."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dette er en OMEMO-kryptert melding som din klient ikke ser ut til Ã¥ støtte. Mer info er Ã¥ finne pÃ¥ https://conversations.im/omemo"]," e.g. conversejs.org":[" f.eks. conversejs.org"],"Fetch registration form":["Hent registreringsskjema"],"Tip: A list of public XMPP providers is available":["Tips: En liste med offentlige XMPP-tilbydere er tilgjengelig"],"here":["her"],"Sorry, we\'re unable to connect to your chosen provider.":["Kunne ikke koble til din valgte tilbyder."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Beklager, den valgte tilbyderen støtter ikke kontoregistrering i utvekslingsnettet. Prøv igjen med en annen tilbyder."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Noe gikk galt under etablering av forbindelse til \\"%1$s\\". Er du sikker pÃ¥ at det eksisterer?"],"Now logging you in":["Logger deg inn"],"Registered successfully":["Registrering var vellykket"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Tilbyderen avviste ditt registreringsforsøk. Sjekk verdiene du skrev inn."],"Leave this groupchat":["Forlat denne gruppesludringen"],"Click to toggle the list of open groupchats":["Klikk for Ã¥ veksle visning av Ã¥pne rom"],"Open Groupchats":["Ã…pne gruppesludringer"],"Add":["Legg Til"],"This contact is busy":["Denne kontakten er opptatt"],"This contact is online":["Kontakten er pÃ¥logget"],"This contact is offline":["Kontakten er avlogget"],"This contact is unavailable":["Kontakten er utilgjengelig"],"This contact is away for an extended period":["Kontakten er borte for en lengre periode"],"This contact is away":["Kontakten er borte"],"Contact name":["Kontaktnavn"],"Optional nickname":["Valgfritt kallenavn"],"Sorry, could not find a contact with that name":["Fant ingen slik kontakt"],"This contact has already been added":["Denne kontakten har allerede blitt lagt til"],"Filter":["Filter"],"Filter by group name":["Filtrer etter gruppenavn"],"Filter by status":["Filtrer etter status"],"Any":["Enhver"],"Unread":["Ulest"],"Chatty":["Pratsom"],"Extended Away":["Utvidet lediggang"],"Click to remove %1$s as a contact":["Klikk for Ã¥ fjerne %1$s som kontakt"],"Click to accept the contact request from %1$s":["Klikk for Ã¥ godta denne kontaktforespørselen fra %1$s"],"Click to decline the contact request from %1$s":["Klikk for Ã¥ avslÃ¥ denne kontaktforespørselen fra %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Klikk for Ã¥ sludre med %1$s (XMPP adresse: %2$s)"],"Are you sure you want to decline this contact request?":["Er du sikker pÃ¥ at du vil avslÃ¥ denne kontaktforespørselen?"],"Contacts":["Kontakter"],"Add a contact":["Legg til en Kontakt"],"Re-sync your contacts":["Synkroniser dine kontakter igjen"]}}}')}}]); //# sourceMappingURL=nb-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/nl-LC_MESSAGES-converse-po.js b/src/conversejs/locales/nl-LC_MESSAGES-converse-po.js index e6d193799bc33c067584eaf50156d186ac85e5fb..94150b7e6c5903b778f9a1ad89039bd5dcfc8ada 100644 --- a/src/conversejs/locales/nl-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/nl-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{441:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nl"},"Create your account":["Maak je account aan"],"Please enter the XMPP provider to register with:":["Voer de XMPP-host in waarje je bij wilt registreren:"],"Already have a chat account?":["Heb je al een account?"],"Log in here":["Log hier in"],"Account Registration:":["Accountregistratie:"],"Register":["Registreren"],"Choose a different provider":["Kies een andere provider"],"Hold tight, we\'re fetching the registration form…":["Even geduld, we halen het registratieformulier op…"],"Cancel":["Annuleren"],"The connection has dropped, attempting to reconnect.":["De verbinding is verbroken, poging tot opnieuw verbinden."],"An error occurred while connecting to the chat server.":["Er trad een fout op bij het verbinden met de gespreksserver."],"Your XMPP address and/or password is incorrect. Please try again.":["Je XMPP adres is onjuist. Probeer het opnieuw."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sorry, we konden geen verbinding maken met deze XMPP-host: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["De XMPP-server bood geen ondersteund authenticatiemechanisme aan"],"Undecryptable OMEMO message":["Onontsleutelbaar OMEMO-bericht"],"Sorry, could not determine upload URL.":["Sorry, kon de upload-URL niet bepalen."],"Sorry, could not determine file upload URL.":["Sorry, kon de bestandsupload-URL niet bepalen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sorry, kon het bestand niet uploaden. De server geeft het volgende aan: ‘%1$s’"],"Sorry, could not succesfully upload your file.":["Sorry, kon het bestand niet uploaden."],"You\'re not allowed to retract your message.":[""],"Sorry, looks like file upload is not supported by your server.":["Sorry, het uploaden van bestanden wordt niet ondersteund door je server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["De grootte van het bestand, %1$s, overschrijdt %2$s, het maximum toegestaan door je server."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Dit groepsgesprek is niet anoniem"],"This groupchat now shows unavailable members":["Dit groepsgesprek toont nu niet-beschikbare leden"],"This groupchat does not show unavailable members":["Dit groepsgesprek toont geen niet-beschikbare leden"],"The groupchat configuration has changed":["De configuratie van het groepsgesprek is gewijzigd"],"This groupchat is now no longer anonymous":["Dit groepsgesprek is niet langer anoniem"],"This groupchat is now semi-anonymous":["Dit groepsgesprek is nu semi-anoniem"],"This groupchat is now fully-anonymous":["Dit groepsgesprek is nu volledig anoniem"],"A new groupchat has been created":["Een nieuw groepsgesprek is aangemaakt"],"Your nickname has been automatically set to %1$s":["Je bijnaam is automatisch ingesteld op %1$s"],"Your nickname has been changed to %1$s":["Je bijnaam is gewijzigd naar %1$s"],"You have been banned from this groupchat":["Je bent verbannen uit dit groepsgesprek"],"You have been kicked from this groupchat":["Je bent uit dit groepsgesprek geschopt"],"You have been removed from this groupchat because of an affiliation change":["Je bent uit dit groepsgesprek verwijderd wegens een wijziging in lidmaatschap"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Je bent verwijderd uit dit groepsgesprek omdat het nu enkel toegankelijk is voor leden, en je geen lid bent"],"You have been removed from this groupchat because the service hosting it is being shut down":["Je zit niet langer in het groepsgesprek omdat de server van het groepsgesprek uitgeschakeld wordt"],"Your message was not delivered because you\'re not present in the groupchat.":["Je bericht werd niet afgeleverd omdat je niet aanwezig bent in dit groepsgesprek."],"You\'re not allowed to register yourself in this groupchat.":["Je hebt geen toestemming om jezelf in dit groepsgesprek te registreren."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Je hebt geen toestemming om jezelf in dit groepsgesprek te registreren, omdat het enkel toegankelijk is voor leden."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan je bijnaam niet registreren voor dit groepsgesprek omdat dit niet ondersteund wordt."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan je bijnaam voor dit groepsgesprek niet registreren, ongeldige data ingevoerd."],"Topic set by %1$s":["Onderwerp ingesteld door %1$s"],"Topic cleared by %1$s":["Onderwerp gewist door %1$s"],"%1$s has been banned":["%1$s is verbannen"],"%1$s\'s nickname has changed":["De bijnaam van %1$s is gewijzigd"],"%1$s has been kicked out":["%1$s is weggeschopt"],"%1$s has been removed because of an affiliation change":["%1$s is verwijderd wegens een wijziging in lidmaatschap"],"%1$s has been removed for not being a member":["%1$s is verwijderd wegens geen lid te zijn"],"%1$s is no longer an admin of this groupchat":["%1$s is niet langer beheerder van dit groepsgesprek"],"%1$s is no longer an owner of this groupchat":["%1$s is niet langer eigenaar van dit groepsgesprek"],"%1$s is no longer banned from this groupchat":["%1$s is niet langer verbannen uit dit groepsgesprek"],"%1$s is no longer a member of this groupchat":["%1$s is niet langer lid van dit groepsgesprek"],"%1$s is now a member of this groupchat":["%1$s is nu lid van dit groepsgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nu %2$s van dit groepsgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["De bijnaam die je hebt gekozen is gereserveerd of momenteel in gebruik, kies er een andere."],"Password incorrect":["Onjuist wachtwoord"],"You are not on the member list of this groupchat.":["Je staat niet op de deelnemerslijst van dit groepsgesprek."],"You have been banned from this groupchat.":["Je bent verbannen uit dit groepsgesprek."],"You are not allowed to create new groupchats.":["Je hebt geen toestemming om nieuwe groepsgesprekken aan te maken."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Je bijnaam stemt niet overeen met het beleid van dit groepsgesprek."],"This groupchat does not (yet) exist.":["Dit groepsgesprek bestaat (nog) niet."],"This groupchat has reached its maximum number of participants.":["Dit groepsgesprek heeft het maximale aantal gebruikers bereikt."],"Remote server not found":["Server niet gevonden"],"The explanation given is: \\"%1$s\\".":["De opgegeven reden is: ‘%1$s’."],"%1$s has invited you to join a groupchat: %2$s":["%1$s heeft je uitgenodigd aan het groepsgesprek „%2$s†deel te nemen"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s heeft je uitgenodigd om deel te nemen aan het groepsgesprek ‘%2$s’ met de volgende reden: ‘%3$s’"],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Sorry, er ging iets mis bij het opslaan van je bladwijzer."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Mijn contacten"],"Pending contacts":["Contacten in afwachting"],"Contact requests":["Contactverzoeken"],"Ungrouped":["Ongegroepeerd"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sorry, er trad een fout op bij het toevoegen van %1$s als contact."],"This client does not allow presence subscriptions":["Deze cliënt biedt geen ondersteuning voor aanwezigheidsabonnementen"],"Click to hide these contacts":["Klik om deze contacten te verbergen"],"Unbookmark this groupchat":["Bladwijzer voor dit groepsgesprek verwijderen"],"Click to open this groupchat":["Klik om dit groepsgesprek te openen"],"Click to toggle the bookmarks list":["Klik om de lijst met bladwijzers te tonen/verbergen"],"Bookmarks":["Bladwijzers"],"Bookmark this groupchat":["Groepsgesprek toevoegen aan bladwijzers"],"Would you like this groupchat to be automatically joined upon startup?":["Wil je bij opstarten automatisch deelnemen aan dit groepsgesprek?"],"The name for this bookmark:":["De naam voor deze bladwijzer:"],"What should your nickname for this groupchat be?":["Welke bijnaam wil je voor dit groepsgesprek?"],"Save":["Opslaan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Weet je zeker dat je de bladwijzer ‘%1$s’ wil verwijderen?"],"Close":["Sluiten"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Audiobestand ‘%1$s’ downloaden"],"Download file \\"%1$s\\"":["Bestand ‘%1$s’ downloaden"],"Edit":[""],"Retract":[""],"Message versions":["Berichtversies"],"Retry":[""],"Uploading file:":["Bestand uploaden:"],"This message has been edited":["Dit bericht is bewerkt"],"Show more":["Meer tonen"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Voeg smiley’s in"],"Start a call":["Plaats een oproep"],"Message characters remaining":["Resterende berichttekens"],"Choose a file to send":["Kies een bestand om te verzenden"],"Click to write as a normal (non-spoiler) message":["Klik hier om een gewoon (niet-verborgen) bericht te schrijven"],"Click to write your message as a spoiler":["Klik hier om een verborgen bericht te schrijven"],"The User\'s Profile Image":["Profielafbeelding van gebruiker"],"Trusted":["Vertrouwd"],"Untrusted":["Onvertrouwd"],"OMEMO Fingerprints":["OMEMO-vingerafdrukken"],"Remove as contact":["Contact verwijderen"],"XMPP Address":["XMPP-adres"],"Email":["E-mail"],"Full Name":["Volledige naam"],"Nickname":["Bijnaam"],"Refresh":["Verversen"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s is aan het typen"],"%1$s has stopped typing":["%1$s is opgehouden met typen"],"%1$s has gone away":["%1$s is afwezig"],"Remove messages":["Berichten verwijderen"],"Write in the third person":["Schrijf in de derde persoon"],"Show this menu":["Toon dit menu"],"Hidden message":["Verborgen bericht"],"Message":["Bericht"],"Optional hint":["Facultatieve tip"],"You have unread messages":["Je hebt ongelezen berichten"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["Je hebt een onverzonden bericht dat verloren zal gaan als je verder gaat. Ben je zeker?"],"Are you sure you want to clear the messages from this conversation?":["Weet je zeker dat je de berichten in dit gesprek wil wissen?"],"%1$s has gone offline":["%1$s is offline"],"%1$s is busy":["%1$s is bezet"],"%1$s is online":["%1$s is online"],"Sorry, something went wrong while trying to refresh":["Sorry, er ging iets mis bij het verversen"],"Are you sure you want to remove this contact?":["Weet je zeker dat je dit contact wil verwijderen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sorry, er trad een fout op bij het verwijderen van %1$s als contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Om prestaties te verbeteren slaan we je data op in de cache van de browser. Vink dit niet aan indien je op een openbare computer bent of indien je wilt dat je data verwijderd wordt bij het uitloggen. Het is van belang dat je zelf expliciet uitlogt, anders kan het zijn dat er data in de cache achterblijft. Let op, als je een niet-vertrouwd apparaat gebruikt is OMEMO-versleuteling NIET mogelijk."],"This is a trusted device":["Dit is een vertrouwd apparaat"],"Create an account":["Account aanmaken"],"Don\'t have a chat account?":["Heb je geen account?"],"Log in":["Inloggen"],"Disconnected":[""],"Click here to log in anonymously":["Klik hier om anoniem in te loggen"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Voer een geldig XMPP-adres in"],"Chat Contacts":["Gesprekscontacten"],"Toggle chat":["Gesprek openen"],"Click to restore this chat":["Klik om dit gesprek te herstellen"],"Minimized":["Geminimaliseerd"],"This field is required":["Dit veld is verplicht"],"Join":["Deelnemen"],"Enter a new Groupchat":["Deelnemen aan nieuw groepsgesprek"],"name@conference.example.org":["naam@groepsgesprek.voorbeeld.be"],"Groupchat name":["Naam groepsgesprek"],"Groupchat address":["Gespreksadres"],"Invite":["Uitnodigen"],"Show groupchats":["Groepsgesprekken tonen"],"Server address":["Serveradres"],"Show more information on this groupchat":["Toon meer informatie over dit groepsgesprek"],"Query for Groupchats":["Zoeken naar gesprekken"],"Description:":["Beschrijving:"],"Groupchat Address (JID):":["XMPP/Jabber-ID voor dit groepsgesprek:"],"Participants:":["Deelnemers:"],"Features:":["Functies:"],"Requires authentication":["Authenticatie vereist"],"Hidden":["Verborgen"],"Requires an invitation":["Uitnodiging vereist"],"Moderated":["Gemodereerd"],"Non-anonymous":["Niet-anoniem"],"Open":["Open"],"Permanent":["Blijvend"],"Public":["Openbaar"],"Semi-anonymous":["Semi-anoniem"],"Temporary":["Tijdelijk"],"Unmoderated":["Niet gemodereerd"],"conference.example.org":["groepsgesprek.voorbeeld.be"],"No groupchats found":["Geen groepsgesprekken gevonden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Onderwerp"],"Topic author":["Auteur van het onderwerp"],"Groupchat address (JID)":["XMPP/Jabber-ID van groepsgesprek"],"Message archiving":["Berichtarchivering"],"Messages are archived on the server":["Berichten worden gearchiveerd op de server"],"Description":["Beschrijving"],"Features":["Eigenschappen"],"This groupchat is not publicly searchable":["Dit groepsgesprek is niet openbaar vindbaar"],"This groupchat is restricted to members only":["Dit groepsgesprek is enkel toegankelijk voor leden"],"Members only":["Alleen-leden"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan dit groepsgesprek hebben toestemming nodig voor ze berichten kunnen sturen"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Dit groepsgesprek vereist geen wachtwoord voor toegang"],"No password required":["Geen wachtwoord nodig"],"Not anonymous":["Niet-anoniem"],"All other groupchat participants can see your XMPP address":["Alle gebruikers in dit groepsgesprek kunnen je XMPP-adres zien"],"Not moderated":["Niet gemodereerd"],"Participants entering this groupchat can write right away":["Deelnemers aan dit groepsgesprek kunnen onmiddelijk berichten sturen"],"Online users":["Gebruikers online"],"Anyone can join this groupchat":["Iedereen kan deelnemen aan dit gesprek"],"This groupchat requires a password before entry":["Dit groepsgesprek vereist een wachtwoord voor toegang"],"Password protected":["Beveiligd met wachtwoord"],"Persistent":["Blijvend"],"This groupchat persists even if it\'s unoccupied":["Dit groepsgesprek blijft bestaan, zelfs als er niemand aanwezig is"],"Only moderators can see your XMPP address":["Enkel moderatoren kunnen je XMPP-adres zien"],"This groupchat will disappear once the last person leaves":["Dit groepsgesprek zal verdwijnen van zodra de laatste deelnemer het verlaat"],"This groupchat is publicly searchable":["Dit groepsgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Info over groepsgesprek %1$s"],"You\'re not allowed to send messages in this room":["Je hebt geen toestemming om berichten te verzenden in deze gespreksruimte"],"The conversation has moved. Click below to enter.":["Het gesprek is verplaatst. Klik hieronder om deel te nemen."],"This groupchat no longer exists":["Dit groepsgesprek bestaat niet meer"],"Enter groupchat":["Deelnemen aan groepsgesprek"],"Please choose your nickname":["Kies je bijnaam"],"This groupchat requires a password":["Dit groepsgesprek vereist een wachtwoord"],"Password: ":["Wachtwoord: "],"Submit":["Indienen"],"This user is a moderator.":["Deze gebruiker is een moderator."],"This user can send messages in this groupchat.":["Deze gebruiker kan berichten sturen in dit groepsgesprek."],"This user can NOT send messages in this groupchat.":["Deze gebruiker kan GEEN berichten sturen in dit groepsgesprek."],"Owner":["Eigenaar"],"Admin":["Beheerder"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Bezoeker"],"Click to mention %1$s in your message.":["Klik om %1$s in je bericht te vermelden."],"Participants":["Deelnemers"],"%1$s has entered the groupchat":["%1$s neemt deel aan het groepsgesprek"],"%1$s has left the groupchat":["%1$s heeft het groepsgesprek verlaten"],"%1$s is now a moderator":["%1$s is nu een moderator"],"%1$s is no longer a moderator":["%1$s is geen moderator meer"],"%1$s has been given a voice":["%1$s heeft een stem gekregen"],"%1$s has been muted":["%1$s is gedempt"],"Change user\'s affiliation to admin":["Lidmaatschap van gebruiker wijzigen naar beheerder"],"Ban user by changing their affiliation to outcast":["Gebruiker verbannen door diens affiliatie te veranderen naar verstoteling"],"Clear the chat area":["Gespreksruimte leegmaken"],"Change user role to participant":["Rol van gebruiker wijzigen naar deelnemer"],"Remove this groupchat":["Dit groepsgesprek verwijderen"],"Kick user from groupchat":["Gebruiker uit groepsgesprek schoppen"],"Write in 3rd person":["Schrijf in de derde persoon"],"Grant membership to a user":["Verleen lidmaatschap aan een gebruiker"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Mogelijkheid van gebruiker om berichten te schrijven verwijderen"],"Change your nickname":["Wijzig je bijnaam"],"Grant moderator role to user":["Rol van gebruiker wijzigen naar moderator"],"Grant ownership of this groupchat":["Eigendom van dit groepsgesprek verlenen"],"Register your nickname":["Je bijnaam registreren"],"Revoke the user\'s current affiliation":["Huidige affiliatie van de gebruiker intrekken"],"Set groupchat subject":["Gespreksonderwerp instellen"],"Set groupchat subject (alias for /subject)":["Gespreksonderwerp instellen (alias voor /subject)"],"Allow muted user to post messages":["Gedempte gebruikers berichten laten schrijven"],"Configure":[""],"Configure this groupchat":["Configureer dit groepsgesprek"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Verberg de deelnemerslijst"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toestemming: je hebt niet de benodigde rol om dit te doen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toestemming: je hebt niet de benodigde affiliatie om dat te doen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: de opdracht ‘%1$s’ aanvaardt twee parameters, de bijnaam van de gebruiker en optioneel een reden."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: geen groepsgespreksdeelnemer gevonden gebaseerd op je argumenten"],"Error: found multiple groupchat participant based on your arguments":["Fout: meerdere groepsgespreksdeelnemers gevonden gebaseerd op je argumenten"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["gebruiker@voorbeeld.be"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Je bijnaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldig aantal argumenten"],"This action was done by %1$s.":["Deze actie is uitgevoerd door %1$s."],"The reason given is: \\"%1$s\\".":["De opgegeven reden is: ‘%1$s’."],"Groupchats":["Groepgesprekken"],"Add a new groupchat":["Nieuw groepsgesprek toevoegen"],"Query for groupchats":["Zoeken naar gesprekken"],"Announcements":[""],"Notification from %1$s":["Melding van %1$s"],"%1$s says":["%1$s zegt"],"has gone offline":["is offline"],"has gone away":["is nu afwezig"],"is busy":["is bezet"],"has come online":["is online"],"wants to be your contact":["wil je contact zijn"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Info"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Vrije %2$s XMPP-chatcliënt gemaakt door %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaal %2$s het in je eigen taal"],"Log out":["Afmelden"],"Click to change your chat status":["Klik hier om je gespreksstatus te wijzigen"],"Show details about this chat client":["Toon meer informatie over deze chatcliënt"],"Your avatar image":["Jouw avatarafbeelding"],"Checkbox for selecting the following fingerprint":["Selectievakje voor het selecteren van de volgende vingerafdruk"],"Device without a fingerprint":["Apparaat zonder vingerafdruk"],"Other OMEMO-enabled devices":["Overige OMEMO-apparaten"],"Checkbox to select fingerprints of all other OMEMO devices":["Selectievakje om vingerafdrukken van alle andere OMEMO-apparaten te selecteren"],"Remove checked devices and close":["Geselecteerde apparaten verwijderen en sluiten"],"Select all":["Alles selecteren"],"This device\'s OMEMO fingerprint":["De OMEMO-vingerafdruk van dit apparaat"],"Generate new keys and fingerprint":["Nieuwe sleutels en vingerafdruk genereren"],"Your Profile":["Je profiel"],"XMPP Address (JID)":["XMPP-adres (JID)"],"Save and close":["Opslaan en sluiten"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruik komma’s om meerdere rollen op te geven. Je rollen worden naast je naam op je chatberichten getoond."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Sorry, er ging iets mis bij het opslaan van je profielgegevens."],"You can check your browser\'s developer console for any error output.":["Je kan de ontwikkelaarsconsole van je browser nakijken voor foutenuitvoer."],"Away":["Afwezig"],"Busy":["Bezet"],"Custom status":["Aangepaste status"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Langdurig afwezig"],"Change chat status":["Gespreksstatus wijzigen"],"Personal status message":["Persoonlijk statusbericht"],"I am %1$s":["Ik ben %1$s"],"Are you sure you want to log out?":["Weet je zeker dat je wil afmelden?"],"online":["online"],"busy":["bezet"],"away for long":["langdurig afwezig"],"away":["afwezig"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sorry, door een fout kon het ontvangen OMEMO-bericht niet worden ontsleuteld."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s lijkt geen gebruik te maken van een cliënt met ondersteuning voor OMEMO. Het zal niet meer mogelijk zijn versleutelde berichten te sturen in dit groepsgesprek."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan geen eind-tot-eind-versleuteling gebruiken omdat %1$s een cliënt gebruikt die geen ondersteuning biedt voor OMEMO."],"Messages are being sent in plaintext":["Berichten worden onversleuteld verzonden"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Er trad een fout op bij het verwijderen van de apparaten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Weet je zeker dat je nieuwe OMEMO-sleutels wil genereren? Dit zal je oude sleutels verwijderen, en alle voorheen versleutelde berichten zullen niet meer ontsleutelbaar zijn op dit apparaat."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Sorry, we kunnen geen versleutelde berichten sturen omdat %1$s vereist dat je geabonneerd bent op zijn/haar aanwezigheid om zijn/haar OMEMO-informatie te bekijken"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sorry, we kunnen geen versleutelde berichten sturen omdat de externe server voor %1$s niet gevonden kon worden"],"Unable to send an encrypted message due to an unexpected error.":["Kan geen versleutelde berichten sturen door een onverwachte fout."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Sorry, geen apparaten gevonden waarnaar we een OMEMO-versleuteld bericht kunnen verzenden."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dit is een OMEMO-versleuteld bericht, wat jouw software niet ondersteunt. Meer informatie op https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Registratieformulier ophalen"],"Tip: A list of public XMPP providers is available":["Tip: er is een lijst met openbare XMPP-leveranciers beschikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Sorry, we konden geen verbinding maken met je gekozen leverancier."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Sorry, de opgegeven leverancier biedt geen ondersteuning voor inbandaccountregistratie. Probeer een andere leverancier."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Er ging iets mis bij het verbinden met ‘%1$s’. Weet je zeker dat het bestaat?"],"Now logging you in":["Bezig met aanmelden"],"Registered successfully":["Geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["De leverancier weigerde je registratieverzoek. Controleer de waarden die je invoerde."],"Leave this groupchat":["Dit groepsgesprek verlaten"],"Click to toggle the list of open groupchats":["Klik om de lijst met open groepsgesprekken te tonen/verbergen"],"Open Groupchats":["Open groepsgesprekken"],"Are you sure you want to leave the groupchat %1$s?":["Weet je zeker dat je het gesprek ‘%1$s’ wil verlaten?"],"Add":["Toevoegen"],"Add a Contact":["Voeg een contact toe"],"This contact is busy":["Dit contact is bezet"],"This contact is online":["Dit contact is online"],"This contact is offline":["Dit contact is offline"],"This contact is unavailable":["Dit contact is niet beschikbaar"],"This contact is away for an extended period":["Dit contact is uitgebreid afwezig"],"This contact is away":["Dit contact is afwezig"],"Contact name":["Contactnaam"],"Optional nickname":["Facultatieve bijnaam"],"Sorry, could not find a contact with that name":["Sorry, kon geen contact vinden met die naam"],"This contact has already been added":["Dit contact werd al toegevoegd"],"Filter":["Filteren"],"Filter by contact name":["Filteren op contactnaam"],"Filter by group name":["Filteren op groepsnaam"],"Filter by status":["Filteren op status"],"Any":["Elke"],"Unread":["Ongelezen"],"Chatty":["Spraakzaam"],"Extended Away":["Uitgebreid afwezig"],"Click to remove %1$s as a contact":["Klik om %1$s als contact te verwijderen"],"Click to accept the contact request from %1$s":["Klik om het contactverzoek van %1$s te aanvaarden"],"Click to decline the contact request from %1$s":["Klik om het contactverzoek van %1$s te weigeren"],"Are you sure you want to decline this contact request?":["Weet je zeker dat je dit contactverzoek wil weigeren?"],"Contacts":["Contacten"],"Add a contact":["Voeg een contact toe"],"Re-sync your contacts":["Hersynchroniseer je contacten"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[163],{529:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nl"},"Create your account":["Maak je account aan"],"Please enter the XMPP provider to register with:":["Voer de XMPP-host in waarje je bij wilt registreren:"],"Already have a chat account?":["Heb je al een account?"],"Log in here":["Log hier in"],"Account Registration:":["Accountregistratie:"],"Register":["Registreren"],"Choose a different provider":["Kies een andere provider"],"Hold tight, we\'re fetching the registration form…":["Even geduld, we halen het registratieformulier op…"],"Cancel":["Annuleren"],"The connection has dropped, attempting to reconnect.":["De verbinding is verbroken, poging tot opnieuw verbinden."],"An error occurred while connecting to the chat server.":["Er trad een fout op bij het verbinden met de gespreksserver."],"Your XMPP address and/or password is incorrect. Please try again.":["Je XMPP adres is onjuist. Probeer het opnieuw."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sorry, we konden geen verbinding maken met deze XMPP-host: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["De XMPP-server bood geen ondersteund authenticatiemechanisme aan"],"Undecryptable OMEMO message":["Onontsleutelbaar OMEMO-bericht"],"Sorry, could not determine upload URL.":["Sorry, kon de upload-URL niet bepalen."],"Sorry, could not determine file upload URL.":["Sorry, kon de bestandsupload-URL niet bepalen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sorry, kon het bestand niet uploaden. De server geeft het volgende aan: ‘%1$s’"],"Sorry, could not succesfully upload your file.":["Sorry, kon het bestand niet uploaden."],"You\'re not allowed to retract your message.":[""],"Sorry, looks like file upload is not supported by your server.":["Sorry, het uploaden van bestanden wordt niet ondersteund door je server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["De grootte van het bestand, %1$s, overschrijdt %2$s, het maximum toegestaan door je server."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Dit groepsgesprek is niet anoniem"],"This groupchat now shows unavailable members":["Dit groepsgesprek toont nu niet-beschikbare leden"],"This groupchat does not show unavailable members":["Dit groepsgesprek toont geen niet-beschikbare leden"],"The groupchat configuration has changed":["De configuratie van het groepsgesprek is gewijzigd"],"This groupchat is now no longer anonymous":["Dit groepsgesprek is niet langer anoniem"],"This groupchat is now semi-anonymous":["Dit groepsgesprek is nu semi-anoniem"],"This groupchat is now fully-anonymous":["Dit groepsgesprek is nu volledig anoniem"],"A new groupchat has been created":["Een nieuw groepsgesprek is aangemaakt"],"Your nickname has been automatically set to %1$s":["Je bijnaam is automatisch ingesteld op %1$s"],"Your nickname has been changed to %1$s":["Je bijnaam is gewijzigd naar %1$s"],"You have been banned from this groupchat":["Je bent verbannen uit dit groepsgesprek"],"You have been kicked from this groupchat":["Je bent uit dit groepsgesprek geschopt"],"You have been removed from this groupchat because of an affiliation change":["Je bent uit dit groepsgesprek verwijderd wegens een wijziging in lidmaatschap"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Je bent verwijderd uit dit groepsgesprek omdat het nu enkel toegankelijk is voor leden, en je geen lid bent"],"You have been removed from this groupchat because the service hosting it is being shut down":["Je zit niet langer in het groepsgesprek omdat de server van het groepsgesprek uitgeschakeld wordt"],"Your message was not delivered because you\'re not present in the groupchat.":["Je bericht werd niet afgeleverd omdat je niet aanwezig bent in dit groepsgesprek."],"You\'re not allowed to register yourself in this groupchat.":["Je hebt geen toestemming om jezelf in dit groepsgesprek te registreren."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Je hebt geen toestemming om jezelf in dit groepsgesprek te registreren, omdat het enkel toegankelijk is voor leden."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan je bijnaam niet registreren voor dit groepsgesprek omdat dit niet ondersteund wordt."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan je bijnaam voor dit groepsgesprek niet registreren, ongeldige data ingevoerd."],"Topic set by %1$s":["Onderwerp ingesteld door %1$s"],"Topic cleared by %1$s":["Onderwerp gewist door %1$s"],"%1$s has been banned":["%1$s is verbannen"],"%1$s\'s nickname has changed":["De bijnaam van %1$s is gewijzigd"],"%1$s has been kicked out":["%1$s is weggeschopt"],"%1$s has been removed because of an affiliation change":["%1$s is verwijderd wegens een wijziging in lidmaatschap"],"%1$s has been removed for not being a member":["%1$s is verwijderd wegens geen lid te zijn"],"%1$s is no longer an admin of this groupchat":["%1$s is niet langer beheerder van dit groepsgesprek"],"%1$s is no longer an owner of this groupchat":["%1$s is niet langer eigenaar van dit groepsgesprek"],"%1$s is no longer banned from this groupchat":["%1$s is niet langer verbannen uit dit groepsgesprek"],"%1$s is no longer a member of this groupchat":["%1$s is niet langer lid van dit groepsgesprek"],"%1$s is now a member of this groupchat":["%1$s is nu lid van dit groepsgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nu %2$s van dit groepsgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["De bijnaam die je hebt gekozen is gereserveerd of momenteel in gebruik, kies er een andere."],"Password incorrect":["Onjuist wachtwoord"],"You are not on the member list of this groupchat.":["Je staat niet op de deelnemerslijst van dit groepsgesprek."],"You have been banned from this groupchat.":["Je bent verbannen uit dit groepsgesprek."],"You are not allowed to create new groupchats.":["Je hebt geen toestemming om nieuwe groepsgesprekken aan te maken."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Je bijnaam stemt niet overeen met het beleid van dit groepsgesprek."],"This groupchat does not (yet) exist.":["Dit groepsgesprek bestaat (nog) niet."],"This groupchat has reached its maximum number of participants.":["Dit groepsgesprek heeft het maximale aantal gebruikers bereikt."],"Remote server not found":["Server niet gevonden"],"The explanation given is: \\"%1$s\\".":["De opgegeven reden is: ‘%1$s’."],"%1$s has invited you to join a groupchat: %2$s":["%1$s heeft je uitgenodigd aan het groepsgesprek „%2$s†deel te nemen"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s heeft je uitgenodigd om deel te nemen aan het groepsgesprek ‘%2$s’ met de volgende reden: ‘%3$s’"],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Sorry, er ging iets mis bij het opslaan van je bladwijzer."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Mijn contacten"],"Pending contacts":["Contacten in afwachting"],"Contact requests":["Contactverzoeken"],"Ungrouped":["Ongegroepeerd"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sorry, er trad een fout op bij het toevoegen van %1$s als contact."],"This client does not allow presence subscriptions":["Deze cliënt biedt geen ondersteuning voor aanwezigheidsabonnementen"],"Click to hide these contacts":["Klik om deze contacten te verbergen"],"Unbookmark this groupchat":["Bladwijzer voor dit groepsgesprek verwijderen"],"Click to open this groupchat":["Klik om dit groepsgesprek te openen"],"Click to toggle the bookmarks list":["Klik om de lijst met bladwijzers te tonen/verbergen"],"Bookmarks":["Bladwijzers"],"Bookmark this groupchat":["Groepsgesprek toevoegen aan bladwijzers"],"Would you like this groupchat to be automatically joined upon startup?":["Wil je bij opstarten automatisch deelnemen aan dit groepsgesprek?"],"The name for this bookmark:":["De naam voor deze bladwijzer:"],"What should your nickname for this groupchat be?":["Welke bijnaam wil je voor dit groepsgesprek?"],"Save":["Opslaan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Weet je zeker dat je de bladwijzer ‘%1$s’ wil verwijderen?"],"Close":["Sluiten"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Audiobestand ‘%1$s’ downloaden"],"Download file \\"%1$s\\"":["Bestand ‘%1$s’ downloaden"],"Edit":[""],"Retract":[""],"Message versions":["Berichtversies"],"Retry":[""],"Uploading file:":["Bestand uploaden:"],"This message has been edited":["Dit bericht is bewerkt"],"Show more":["Meer tonen"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Voeg smiley’s in"],"Start a call":["Plaats een oproep"],"Message characters remaining":["Resterende berichttekens"],"Choose a file to send":["Kies een bestand om te verzenden"],"Click to write as a normal (non-spoiler) message":["Klik hier om een gewoon (niet-verborgen) bericht te schrijven"],"Click to write your message as a spoiler":["Klik hier om een verborgen bericht te schrijven"],"The User\'s Profile Image":["Profielafbeelding van gebruiker"],"Trusted":["Vertrouwd"],"Untrusted":["Onvertrouwd"],"OMEMO Fingerprints":["OMEMO-vingerafdrukken"],"Remove as contact":["Contact verwijderen"],"XMPP Address":["XMPP-adres"],"Email":["E-mail"],"Full Name":["Volledige naam"],"Nickname":["Bijnaam"],"Refresh":["Verversen"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s is aan het typen"],"%1$s has stopped typing":["%1$s is opgehouden met typen"],"%1$s has gone away":["%1$s is afwezig"],"Remove messages":["Berichten verwijderen"],"Write in the third person":["Schrijf in de derde persoon"],"Show this menu":["Toon dit menu"],"Hidden message":["Verborgen bericht"],"Message":["Bericht"],"Optional hint":["Facultatieve tip"],"You have unread messages":["Je hebt ongelezen berichten"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["Je hebt een onverzonden bericht dat verloren zal gaan als je verder gaat. Ben je zeker?"],"Are you sure you want to clear the messages from this conversation?":["Weet je zeker dat je de berichten in dit gesprek wil wissen?"],"%1$s has gone offline":["%1$s is offline"],"%1$s is busy":["%1$s is bezet"],"%1$s is online":["%1$s is online"],"Sorry, something went wrong while trying to refresh":["Sorry, er ging iets mis bij het verversen"],"Are you sure you want to remove this contact?":["Weet je zeker dat je dit contact wil verwijderen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sorry, er trad een fout op bij het verwijderen van %1$s als contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Om prestaties te verbeteren slaan we je data op in de cache van de browser. Vink dit niet aan indien je op een openbare computer bent of indien je wilt dat je data verwijderd wordt bij het uitloggen. Het is van belang dat je zelf expliciet uitlogt, anders kan het zijn dat er data in de cache achterblijft. Let op, als je een niet-vertrouwd apparaat gebruikt is OMEMO-versleuteling NIET mogelijk."],"This is a trusted device":["Dit is een vertrouwd apparaat"],"Create an account":["Account aanmaken"],"Don\'t have a chat account?":["Heb je geen account?"],"Log in":["Inloggen"],"Disconnected":[""],"Click here to log in anonymously":["Klik hier om anoniem in te loggen"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Voer een geldig XMPP-adres in"],"Chat Contacts":["Gesprekscontacten"],"Toggle chat":["Gesprek openen"],"Click to restore this chat":["Klik om dit gesprek te herstellen"],"Minimized":["Geminimaliseerd"],"This user is a moderator.":["Deze gebruiker is een moderator."],"This user can send messages in this groupchat.":["Deze gebruiker kan berichten sturen in dit groepsgesprek."],"This user can NOT send messages in this groupchat.":["Deze gebruiker kan GEEN berichten sturen in dit groepsgesprek."],"Owner":["Eigenaar"],"Admin":["Beheerder"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Bezoeker"],"Click to mention %1$s in your message.":["Klik om %1$s in je bericht te vermelden."],"Participants":["Deelnemers"],"This field is required":["Dit veld is verplicht"],"Join":["Deelnemen"],"Enter a new Groupchat":["Deelnemen aan nieuw groepsgesprek"],"name@conference.example.org":["naam@groepsgesprek.voorbeeld.be"],"Groupchat name":["Naam groepsgesprek"],"Groupchat address":["Gespreksadres"],"Invite":["Uitnodigen"],"Show groupchats":["Groepsgesprekken tonen"],"Server address":["Serveradres"],"Show more information on this groupchat":["Toon meer informatie over dit groepsgesprek"],"Query for Groupchats":["Zoeken naar gesprekken"],"Description:":["Beschrijving:"],"Groupchat Address (JID):":["XMPP/Jabber-ID voor dit groepsgesprek:"],"Participants:":["Deelnemers:"],"Features:":["Functies:"],"Requires authentication":["Authenticatie vereist"],"Hidden":["Verborgen"],"Requires an invitation":["Uitnodiging vereist"],"Moderated":["Gemodereerd"],"Non-anonymous":["Niet-anoniem"],"Open":["Open"],"Permanent":["Blijvend"],"Public":["Openbaar"],"Semi-anonymous":["Semi-anoniem"],"Temporary":["Tijdelijk"],"Unmoderated":["Niet gemodereerd"],"conference.example.org":["groepsgesprek.voorbeeld.be"],"No groupchats found":["Geen groepsgesprekken gevonden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Onderwerp"],"Topic author":["Auteur van het onderwerp"],"Groupchat address (JID)":["XMPP/Jabber-ID van groepsgesprek"],"Message archiving":["Berichtarchivering"],"Messages are archived on the server":["Berichten worden gearchiveerd op de server"],"Description":["Beschrijving"],"Features":["Eigenschappen"],"This groupchat is not publicly searchable":["Dit groepsgesprek is niet openbaar vindbaar"],"This groupchat is restricted to members only":["Dit groepsgesprek is enkel toegankelijk voor leden"],"Members only":["Alleen-leden"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan dit groepsgesprek hebben toestemming nodig voor ze berichten kunnen sturen"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Dit groepsgesprek vereist geen wachtwoord voor toegang"],"No password required":["Geen wachtwoord nodig"],"Not anonymous":["Niet-anoniem"],"All other groupchat participants can see your XMPP address":["Alle gebruikers in dit groepsgesprek kunnen je XMPP-adres zien"],"Not moderated":["Niet gemodereerd"],"Participants entering this groupchat can write right away":["Deelnemers aan dit groepsgesprek kunnen onmiddelijk berichten sturen"],"Online users":["Gebruikers online"],"Anyone can join this groupchat":["Iedereen kan deelnemen aan dit gesprek"],"This groupchat requires a password before entry":["Dit groepsgesprek vereist een wachtwoord voor toegang"],"Password protected":["Beveiligd met wachtwoord"],"Persistent":["Blijvend"],"This groupchat persists even if it\'s unoccupied":["Dit groepsgesprek blijft bestaan, zelfs als er niemand aanwezig is"],"Only moderators can see your XMPP address":["Enkel moderatoren kunnen je XMPP-adres zien"],"This groupchat will disappear once the last person leaves":["Dit groepsgesprek zal verdwijnen van zodra de laatste deelnemer het verlaat"],"This groupchat is publicly searchable":["Dit groepsgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Info over groepsgesprek %1$s"],"You\'re not allowed to send messages in this room":["Je hebt geen toestemming om berichten te verzenden in deze gespreksruimte"],"The conversation has moved. Click below to enter.":["Het gesprek is verplaatst. Klik hieronder om deel te nemen."],"This groupchat no longer exists":["Dit groepsgesprek bestaat niet meer"],"Enter groupchat":["Deelnemen aan groepsgesprek"],"Please choose your nickname":["Kies je bijnaam"],"This groupchat requires a password":["Dit groepsgesprek vereist een wachtwoord"],"Password: ":["Wachtwoord: "],"Submit":["Indienen"],"%1$s has entered the groupchat":["%1$s neemt deel aan het groepsgesprek"],"%1$s has left the groupchat":["%1$s heeft het groepsgesprek verlaten"],"%1$s is now a moderator":["%1$s is nu een moderator"],"%1$s is no longer a moderator":["%1$s is geen moderator meer"],"%1$s has been given a voice":["%1$s heeft een stem gekregen"],"%1$s has been muted":["%1$s is gedempt"],"Change user\'s affiliation to admin":["Lidmaatschap van gebruiker wijzigen naar beheerder"],"Ban user by changing their affiliation to outcast":["Gebruiker verbannen door diens affiliatie te veranderen naar verstoteling"],"Clear the chat area":["Gespreksruimte leegmaken"],"Change user role to participant":["Rol van gebruiker wijzigen naar deelnemer"],"Remove this groupchat":["Dit groepsgesprek verwijderen"],"Kick user from groupchat":["Gebruiker uit groepsgesprek schoppen"],"Write in 3rd person":["Schrijf in de derde persoon"],"Grant membership to a user":["Verleen lidmaatschap aan een gebruiker"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Mogelijkheid van gebruiker om berichten te schrijven verwijderen"],"Change your nickname":["Wijzig je bijnaam"],"Grant moderator role to user":["Rol van gebruiker wijzigen naar moderator"],"Grant ownership of this groupchat":["Eigendom van dit groepsgesprek verlenen"],"Register your nickname":["Je bijnaam registreren"],"Revoke the user\'s current affiliation":["Huidige affiliatie van de gebruiker intrekken"],"Set groupchat subject":["Gespreksonderwerp instellen"],"Set groupchat subject (alias for /subject)":["Gespreksonderwerp instellen (alias voor /subject)"],"Allow muted user to post messages":["Gedempte gebruikers berichten laten schrijven"],"Configure":[""],"Configure this groupchat":["Configureer dit groepsgesprek"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Verberg de deelnemerslijst"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toestemming: je hebt niet de benodigde rol om dit te doen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toestemming: je hebt niet de benodigde affiliatie om dat te doen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: de opdracht ‘%1$s’ aanvaardt twee parameters, de bijnaam van de gebruiker en optioneel een reden."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: geen groepsgespreksdeelnemer gevonden gebaseerd op je argumenten"],"Error: found multiple groupchat participant based on your arguments":["Fout: meerdere groepsgespreksdeelnemers gevonden gebaseerd op je argumenten"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["gebruiker@voorbeeld.be"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Je bijnaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldig aantal argumenten"],"This action was done by %1$s.":["Deze actie is uitgevoerd door %1$s."],"The reason given is: \\"%1$s\\".":["De opgegeven reden is: ‘%1$s’."],"Groupchats":["Groepgesprekken"],"Add a new groupchat":["Nieuw groepsgesprek toevoegen"],"Query for groupchats":["Zoeken naar gesprekken"],"Announcements":[""],"Notification from %1$s":["Melding van %1$s"],"%1$s says":["%1$s zegt"],"has gone offline":["is offline"],"has gone away":["is nu afwezig"],"is busy":["is bezet"],"has come online":["is online"],"wants to be your contact":["wil je contact zijn"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Info"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Vrije %2$s XMPP-chatcliënt gemaakt door %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaal %2$s het in je eigen taal"],"Log out":["Afmelden"],"Click to change your chat status":["Klik hier om je gespreksstatus te wijzigen"],"Show details about this chat client":["Toon meer informatie over deze chatcliënt"],"Your avatar image":["Jouw avatarafbeelding"],"Checkbox for selecting the following fingerprint":["Selectievakje voor het selecteren van de volgende vingerafdruk"],"Device without a fingerprint":["Apparaat zonder vingerafdruk"],"Other OMEMO-enabled devices":["Overige OMEMO-apparaten"],"Checkbox to select fingerprints of all other OMEMO devices":["Selectievakje om vingerafdrukken van alle andere OMEMO-apparaten te selecteren"],"Remove checked devices and close":["Geselecteerde apparaten verwijderen en sluiten"],"Select all":["Alles selecteren"],"This device\'s OMEMO fingerprint":["De OMEMO-vingerafdruk van dit apparaat"],"Generate new keys and fingerprint":["Nieuwe sleutels en vingerafdruk genereren"],"Your Profile":["Je profiel"],"XMPP Address (JID)":["XMPP-adres (JID)"],"Save and close":["Opslaan en sluiten"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruik komma’s om meerdere rollen op te geven. Je rollen worden naast je naam op je chatberichten getoond."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Sorry, er ging iets mis bij het opslaan van je profielgegevens."],"You can check your browser\'s developer console for any error output.":["Je kan de ontwikkelaarsconsole van je browser nakijken voor foutenuitvoer."],"Away":["Afwezig"],"Busy":["Bezet"],"Custom status":["Aangepaste status"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Langdurig afwezig"],"Change chat status":["Gespreksstatus wijzigen"],"Personal status message":["Persoonlijk statusbericht"],"I am %1$s":["Ik ben %1$s"],"Are you sure you want to log out?":["Weet je zeker dat je wil afmelden?"],"online":["online"],"busy":["bezet"],"away for long":["langdurig afwezig"],"away":["afwezig"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sorry, door een fout kon het ontvangen OMEMO-bericht niet worden ontsleuteld."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s lijkt geen gebruik te maken van een cliënt met ondersteuning voor OMEMO. Het zal niet meer mogelijk zijn versleutelde berichten te sturen in dit groepsgesprek."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan geen eind-tot-eind-versleuteling gebruiken omdat %1$s een cliënt gebruikt die geen ondersteuning biedt voor OMEMO."],"Messages are being sent in plaintext":["Berichten worden onversleuteld verzonden"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Sorry, we kunnen geen versleutelde berichten sturen omdat %1$s vereist dat je geabonneerd bent op zijn/haar aanwezigheid om zijn/haar OMEMO-informatie te bekijken"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sorry, we kunnen geen versleutelde berichten sturen omdat de externe server voor %1$s niet gevonden kon worden"],"Unable to send an encrypted message due to an unexpected error.":["Kan geen versleutelde berichten sturen door een onverwachte fout."],"Sorry, an error occurred while trying to remove the devices.":["Er trad een fout op bij het verwijderen van de apparaten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Weet je zeker dat je nieuwe OMEMO-sleutels wil genereren? Dit zal je oude sleutels verwijderen, en alle voorheen versleutelde berichten zullen niet meer ontsleutelbaar zijn op dit apparaat."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Sorry, geen apparaten gevonden waarnaar we een OMEMO-versleuteld bericht kunnen verzenden."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dit is een OMEMO-versleuteld bericht, wat jouw software niet ondersteunt. Meer informatie op https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Registratieformulier ophalen"],"Tip: A list of public XMPP providers is available":["Tip: er is een lijst met openbare XMPP-leveranciers beschikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Sorry, we konden geen verbinding maken met je gekozen leverancier."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Sorry, de opgegeven leverancier biedt geen ondersteuning voor inbandaccountregistratie. Probeer een andere leverancier."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Er ging iets mis bij het verbinden met ‘%1$s’. Weet je zeker dat het bestaat?"],"Now logging you in":["Bezig met aanmelden"],"Registered successfully":["Geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["De leverancier weigerde je registratieverzoek. Controleer de waarden die je invoerde."],"Leave this groupchat":["Dit groepsgesprek verlaten"],"Click to toggle the list of open groupchats":["Klik om de lijst met open groepsgesprekken te tonen/verbergen"],"Open Groupchats":["Open groepsgesprekken"],"Are you sure you want to leave the groupchat %1$s?":["Weet je zeker dat je het gesprek ‘%1$s’ wil verlaten?"],"Add":["Toevoegen"],"Add a Contact":["Voeg een contact toe"],"This contact is busy":["Dit contact is bezet"],"This contact is online":["Dit contact is online"],"This contact is offline":["Dit contact is offline"],"This contact is unavailable":["Dit contact is niet beschikbaar"],"This contact is away for an extended period":["Dit contact is uitgebreid afwezig"],"This contact is away":["Dit contact is afwezig"],"Contact name":["Contactnaam"],"Optional nickname":["Facultatieve bijnaam"],"Sorry, could not find a contact with that name":["Sorry, kon geen contact vinden met die naam"],"This contact has already been added":["Dit contact werd al toegevoegd"],"Filter":["Filteren"],"Filter by contact name":["Filteren op contactnaam"],"Filter by group name":["Filteren op groepsnaam"],"Filter by status":["Filteren op status"],"Any":["Elke"],"Unread":["Ongelezen"],"Chatty":["Spraakzaam"],"Extended Away":["Uitgebreid afwezig"],"Click to remove %1$s as a contact":["Klik om %1$s als contact te verwijderen"],"Click to accept the contact request from %1$s":["Klik om het contactverzoek van %1$s te aanvaarden"],"Click to decline the contact request from %1$s":["Klik om het contactverzoek van %1$s te weigeren"],"Are you sure you want to decline this contact request?":["Weet je zeker dat je dit contactverzoek wil weigeren?"],"Contacts":["Contacten"],"Add a contact":["Voeg een contact toe"],"Re-sync your contacts":["Hersynchroniseer je contacten"]}}}')}}]); //# sourceMappingURL=nl-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/nl_BE-LC_MESSAGES-converse-po.js b/src/conversejs/locales/nl_BE-LC_MESSAGES-converse-po.js index 83c5b9ae6f0a8336b84ef621fe6e1fc614a40330..faeda2c7c9fcc13cd024558d4a3669eff97e771b 100644 --- a/src/conversejs/locales/nl_BE-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/nl_BE-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{442:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nl_BE"},"Create your account":["Maakt uwen account aan"],"Please enter the XMPP provider to register with:":["Voerd den XMPP-leverancier in waarbij da’ g’u wild registreren:"],"Already have a chat account?":["Hebd’ al nen account?"],"Log in here":["Meld u hier aan"],"Account Registration:":["Accountregistratie:"],"Register":["Registreren"],"Choose a different provider":["Kiesd nen andere leverancier"],"Hold tight, we\'re fetching the registration form…":["Efkens geduld, w’halen het registratieformulier op…"],"Cancel":["Annuleren"],"The connection has dropped, attempting to reconnect.":["De verbinding is verbroken, poging tot opnieuw verbinden."],"An error occurred while connecting to the chat server.":["Der trad een fout op bij het verbinden me’ de gespreksserver."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sorry, we konden geen verbinding maken me’ dezen XMPP-host: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Den XMPP-server bood geen ondersteund authenticatiemechanisme aan"],"Sorry, could not determine upload URL.":["Sorry, kon den upload-URL nie bepalen."],"Sorry, could not determine file upload URL.":["Sorry, kon den bestandsupload-URL nie bepalen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sorry, kon het bestand niet uploaden. De server geeft het volgende aan: ‘%1$s’"],"Sorry, could not succesfully upload your file.":["Sorry, kon het bestand nie uploaden."],"Sorry, looks like file upload is not supported by your server.":["Sorry, bestandsupload word nie ondersteund door uwe server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["De grootte van het bestand, %1$s, overschrijd het maximum toegelaten door uwe server, %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Dit groepsgesprek is nie anoniem"],"This groupchat now shows unavailable members":["Dit groepsgesprek toond nu nie-beschikbare leden"],"This groupchat does not show unavailable members":["Dit groepsgesprek toond geen nie-beschikbare leden"],"The groupchat configuration has changed":["De configuratie van het groepsgesprek is gewijzigd"],"This groupchat is now no longer anonymous":["Dit groepsgesprek is nie meer anoniem"],"This groupchat is now semi-anonymous":["Dit groepsgesprek is nu semi-anoniem"],"This groupchat is now fully-anonymous":["Dit groepsgesprek is nu volledig anoniem"],"A new groupchat has been created":["Een nieuw groepsgesprek is aangemaakt"],"Your nickname has been automatically set to %1$s":["Uwen bijnaam is automatisch ingesteld op %1$s"],"Your nickname has been changed to %1$s":["Uwen bijnaam is gewijzigd naar %1$s"],"You have been banned from this groupchat":["Ge zijt uit dit groepsgesprek verbannen"],"You have been kicked from this groupchat":["Ge zijt uit dit groepsgesprek geschopt"],"You have been removed from this groupchat because of an affiliation change":["Ge zijt uit dit groepsgesprek verwijderd omwille van een wijziging in lidmaatschap"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ge zijt uit dit groepsgesprek verwijderd omdat het nu enkel toegankelijk is voor leden, en ge geen lid zijt"],"You have been removed from this groupchat because the service hosting it is being shut down":["Ge zijt uit dit groepsgesprek verwijderd omdat de server dervan wordt uitgeschakeld"],"Your message was not delivered because you\'re not present in the groupchat.":["Uw bericht werd niet afgeleverd omda\' ge ni\' aanwezig zijt in het groepsgesprek."],"You\'re not allowed to register yourself in this groupchat.":["Ge hebt geen toelating voor uw eigen in dit groepsgesprek te registreren."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Ge hebt geen toelating voor uw eigen in dit groepsgesprek te registreren, omdat het enkel toegankelijk is voor leden."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan uwen bijnaam niet registreren in dit groepsgesprek met dat het geen ondersteuning biedt voor registratie."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan uwen bijnaam niet registreren in dit groepsgesprek, ongeldige gegevens ingevoerd."],"Topic set by %1$s":["Onderwerp ingesteld door %1$s"],"Topic cleared by %1$s":["Onderwerp gewist door %1$s"],"%1$s has been banned":["%1$s is verbannen"],"%1$s\'s nickname has changed":["Den bijnaam van %1$s is gewijzigd"],"%1$s has been kicked out":["%1$s is weggeschopt"],"%1$s has been removed because of an affiliation change":["%1$s is verwijderd omwille van een wijziging in lidmaatschap"],"%1$s has been removed for not being a member":["%1$s is verwijderd omwille van geen lid te zijn"],"%1$s is no longer an admin of this groupchat":["%1$s is ge(n)en beheerder meer van dit groepsgesprek"],"%1$s is no longer an owner of this groupchat":["%1$s is ge(n)en eigenaar meer van dit groepsgesprek"],"%1$s is no longer banned from this groupchat":["%1$s is niet meer verbannen uit dit groepsgesprek"],"%1$s is no longer a member of this groupchat":["%1$s is geen lid meer van dit groepsgesprek"],"%1$s is now a member of this groupchat":["%1$s is nu lid van dit groepsgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nu %2$s van dit groepsgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Den bijnaam die ge gekozen hebd is gereserveerd of momenteel in gebruik, kiesd der nen anderen."],"Password incorrect":["Verkeerd wachtwoord"],"You are not on the member list of this groupchat.":["Ge staat niet op den deelnemerslijst van dit groepsgesprek."],"You have been banned from this groupchat.":["Ge zijt uit dit groepsgesprek verbannen."],"You are not allowed to create new groupchats.":["Ge hebt geen toelating voor nieuwe groepsgesprekken aan te maken."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Uwen bijnaam stemt niet overeen met het beleid van dit groepsgesprek."],"This groupchat does not (yet) exist.":["Dit groepsgesprek bestaat (nog) niet."],"This groupchat has reached its maximum number of participants.":["Dit groepsgesprek heeft het maximaal aantal gebruikers bereikt."],"Remote server not found":["Server niet gevonden"],"The explanation given is: \\"%1$s\\".":["D’opgegeven reden is: ‘%1$s’."],"%1$s has invited you to join a groupchat: %2$s":["%1$s heeft u uitgenodigd in het groepsgesprek ‘%2$s’"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s heeft u uitgenodigd in het groepsgesprek ‘%2$s’ en gaf volgende reden: “%3$sâ€"],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Sorry, der ging iets mis bij het opslaan van uwen bladwijzer."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Mijn contacten"],"Pending contacts":["Contacten in afwachting"],"Contact requests":["Contactverzoeken"],"Ungrouped":["Ongegroepeerd"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sorry, der trad een fout op bij het toevoegen van %1$s als contact."],"This client does not allow presence subscriptions":["Deze cliënt bied geen ondersteuning voor aanwezigheidsabonnementen"],"Click to hide these contacts":["Klikt voor deze contacten te verbergen"],"Unbookmark this groupchat":["Bladwijzer voor dit gesprek verwijderen"],"Click to open this groupchat":["Klikt voor dit groepsgesprek t’openen"],"Click to toggle the bookmarks list":["Klikt voor de lijst met bladwijzers te tonen/verbergen"],"Bookmarks":["Bladwijzers"],"Bookmark this groupchat":["Gesprek toevoegen aan bladwijzers"],"Would you like this groupchat to be automatically joined upon startup?":["Wild g’automatisch deelnemen aan dit groepsgesprek bij opstarten?"],"The name for this bookmark:":["De naam voor dezen bladwijzer:"],"What should your nickname for this groupchat be?":["Wa moet uwen bijnaam in dit groepsgesprek zijn?"],"Save":["Opslaan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Zij’ ge zeker da’ ge den bladwijzer ‘%1$s’ wild verwijderen?"],"Close":["Sluiten"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Audiobestand ‘%1$s’ downloaden"],"Download file \\"%1$s\\"":["Bestand ‘%1$s’ downloaden"],"Edit":[""],"Retract":[""],"Message versions":["Berichtversies"],"Retry":[""],"Uploading file:":["Bestand uploaden:"],"This message has been edited":["Dit bericht is bewerkt"],"Show more":["Meer tonen"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Voegd smiley’s in"],"Start a call":["Plaatst nen oproep"],"Message characters remaining":["Resterende berichttekens"],"Choose a file to send":["Kiesd een bestand voor te verzenden"],"Click to write as a normal (non-spoiler) message":["Klikt hier voor een gewoon (nie’-verborgen) bericht te schrijven"],"Click to write your message as a spoiler":["Klikt hier voor een verborgen bericht te schrijven"],"The User\'s Profile Image":["Profielafbeelding van gebruiker"],"Trusted":["Vertrouwd"],"Untrusted":["Onvertrouwd"],"OMEMO Fingerprints":["OMEMO-vingerafdrukken"],"Remove as contact":["Contact verwijderen"],"XMPP Address":["XMPP-adres"],"Email":["E-mail"],"Full Name":["Volledige naam"],"Nickname":["Bijnaam"],"Refresh":["Vernieuwen"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s is aan ’t typen"],"%1$s has stopped typing":["%1$s is gestopt met typen"],"%1$s has gone away":["%1$s is afwezig"],"Remove messages":["Berichten verwijderen"],"Write in the third person":["Schrijfd in den derde persoon"],"Show this menu":["Toond dit menu"],"Hidden message":["Verborgen bericht"],"Message":["Bericht"],"Optional hint":["Facultatieven tip"],"You have unread messages":["Ge hebd ongelezen berichten"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["Ge hebt een onverzonden bericht da\' verloren zal gaan als ge verder ga. Zijde zeker?"],"Are you sure you want to clear the messages from this conversation?":["Zij’ ge zeker da’ ge de berichten in dit gesprek wild wissen?"],"%1$s has gone offline":["%1$s is offline"],"%1$s is busy":["%1$s is bezet"],"%1$s is online":["%1$s is online"],"Sorry, something went wrong while trying to refresh":["Sorry, der ging iets mis bij het verversen"],"Are you sure you want to remove this contact?":["Zij’ ge zeker da’ ge dit contact wild verwijderen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sorry, der trad een fout op bij het verwijderen van %1$s als contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Voor prestaties te verbeteren slaan we uw gegevens op in het cachegeheugen van van dezen browser. Vinkt dit niet aan als dit een openbare computer is of als ge wilt dat uw gegevens worden verwijderd bij het uiloggen. Het is van belang dat ge zelf expliciet uitlogt, anders kan het zijn dat der gegevens in het cachegeheugen achterblijven. Let op, als ge een niet-vertrouwd apparaat gebruikt is OMEMO-versleuteling NIET mogelijk."],"This is a trusted device":["Dit is een vertrouwd apparaat"],"Create an account":["Account aanmaken"],"Don\'t have a chat account?":["Hebde genen account?"],"Log in":["Inloggen"],"Disconnected":[""],"Click here to log in anonymously":["Klikt hier voor anoniem aan te melden"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Voerd een geldig XMPP-adres in"],"Chat Contacts":["Gesprekscontacten"],"Toggle chat":["Gesprek openen"],"Click to restore this chat":["Klikt voor dit gesprek t’herstellen"],"Minimized":["Geminimaliseerd"],"This field is required":["Dees veld is verplicht"],"Join":["Deelnemen"],"Enter a new Groupchat":["Deelnemen aan nieuw groepsgesprek"],"name@conference.example.org":["naam@groepsgesprek.voorbeeld.be"],"Groupchat name":["Gespreksnaam"],"Groupchat address":["Gespreksadres"],"Invite":["Uitnodigen"],"Show groupchats":["Groepsgesprekken tonen"],"Server address":["Serveradres"],"Show more information on this groupchat":["Toond meer informatie over dit groepsgesprek"],"Query for Groupchats":["Zoeken naar gesprekken"],"Description:":["Beschrijving:"],"Groupchat Address (JID):":["Gespreksadres (JID):"],"Participants:":["Deelnemers:"],"Features:":["Functies:"],"Requires authentication":["Authenticatie vereist"],"Hidden":["Verborgen"],"Requires an invitation":["Uitnodiging vereist"],"Moderated":["Gemodereerd"],"Non-anonymous":["Nie-anoniem"],"Open":["Open"],"Permanent":["Blijvend"],"Public":["Openbaar"],"Semi-anonymous":["Semi-anoniem"],"Temporary":["Tijdelijk"],"Unmoderated":["Nie’ gemodereerd"],"conference.example.org":["groepsgesprek.voorbeeld.be"],"No groupchats found":["Geen groepsgesprekken gevonden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Onderwerp"],"Topic author":["Auteur van het onderwerp"],"Groupchat address (JID)":["Gespreksadres (JID)"],"Message archiving":["Berichtarchivering"],"Messages are archived on the server":["Berichten worden gearchiveerd op de server"],"Description":["Beschrijving"],"Features":["Functies"],"This groupchat is not publicly searchable":["Dit groepsgesprek is niet openbaar vindbaar"],"This groupchat is restricted to members only":["Dit groepsgesprek is enkel toegankelijk voor leden"],"Members only":["Alleen-leden"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan dit groepsgesprek hebben toestemming nodig voordat ze berichten kunnen sturen"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Dit groepsgesprek vereist geen paswoord voor toegang"],"No password required":["Geen paswoord nodig"],"Not anonymous":["Niet-anoniem"],"All other groupchat participants can see your XMPP address":["Alle gebruikers in dit groepsgesprek kunnen uwen XMPP-adres zien"],"Not moderated":["Niet gemodereerd"],"Participants entering this groupchat can write right away":["Deelnemers aan dit groepsgesprek kunnen onmiddellijk berichten sturen"],"Online users":["Gebruikers online"],"Anyone can join this groupchat":["Iedereen kan deelnemen aan dit gesprek"],"This groupchat requires a password before entry":["Dit groepsgesprek vereist een paswoord voor toegang"],"Password protected":["Beveiligd met paswoord"],"Persistent":["Blijvend"],"This groupchat persists even if it\'s unoccupied":["Dit groepsgesprek blijft bestaan, zelfs als der niemand aanwezig is"],"Only moderators can see your XMPP address":["Enkel moderatoren kunnen uwen XMPP-adres zien"],"This groupchat will disappear once the last person leaves":["Dit groepsgesprek zal verdwijnen van zodra dat de laatsten deelnemer het verlaat"],"This groupchat is publicly searchable":["Dit groepsgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Info over groepsgesprek %1$s"],"You\'re not allowed to send messages in this room":["Ge hebt geen toelating om berichten te verzenden in dees groepsgesprek"],"The conversation has moved. Click below to enter.":["Het gesprek is verplaatst. Klikt hieronder voor deel te nemen."],"This groupchat no longer exists":["Dit groepsgesprek bestaat niet meer"],"Enter groupchat":["Deelnemen aan groepsgesprek"],"Please choose your nickname":["Kiesd uwen bijnaam"],"This groupchat requires a password":["Dit groepsgesprek vereist een paswoord"],"Password: ":["Wachtwoord: "],"Submit":["Indienen"],"This user is a moderator.":["Deze gebruiker is ne moderator."],"This user can send messages in this groupchat.":["Deze gebruiker kan berichten sturen in dit groepsgesprek."],"This user can NOT send messages in this groupchat.":["Deze gebruiker kan GEEN berichten sturen in dit groepsgesprek."],"Owner":["Eigenaar"],"Admin":["Beheerder"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Bezoeker"],"Click to mention %1$s in your message.":["Klikt voor %1$s in uw bericht te vermelden."],"Participants":["Deelnemers"],"%1$s has entered the groupchat":["%1$s neemt deel aan het groepsgesprek"],"%1$s has left the groupchat":["%1$s heeft het groepsgesprek verlaten"],"%1$s is now a moderator":["%1$s is nu ne moderator"],"%1$s is no longer a moderator":["%1$s is gene moderator meer"],"%1$s has been given a voice":["%1$s heeft een stem gekregen"],"%1$s has been muted":["%1$s is gedempt"],"Change user\'s affiliation to admin":["Lidmaatschap van gebruiker wijzigen naar beheerder"],"Ban user by changing their affiliation to outcast":["Gebruiker verbannen door diens affiliatie te veranderen naar verschoppeling"],"Clear the chat area":["De gespreksruimte leegmaken"],"Change user role to participant":["Rol van gebruiker wijzigen naar deelnemer"],"Remove this groupchat":["Dit groepsgesprek verwijderen"],"Kick user from groupchat":["Gebruiker uit groepsgesprek schoppen"],"Write in 3rd person":["Schrijfd in den derde persoon"],"Grant membership to a user":["Verleend lidmaatschap aan ne gebruiker"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Mogelijkheid van gebruiker voor berichten te schrijven verwijderen"],"Change your nickname":["Wijzigd uwen bijnaam"],"Grant moderator role to user":["Rol van gebruiker wijzigen naar moderator"],"Grant ownership of this groupchat":["Eigendom van dit groepsgesprek verlenen"],"Register your nickname":["Uwen bijnaam registreren"],"Revoke the user\'s current affiliation":["De affiliatie van de gebruiker intrekken"],"Set groupchat subject":["Gespreksonderwerp instellen"],"Set groupchat subject (alias for /subject)":["Gespreksonderwerp instellen (alias voor /subject)"],"Allow muted user to post messages":["Gedempte gebruikers berichten laten schrijven"],"Configure":[""],"Configure this groupchat":["Configureerd dit groepsgesprek"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Verbergt den deelnemerslijst"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toelating: ge hebt niet de benodigde rol voor dit te doen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toelating: ge hebt niet de benodigde affiliatie voor dit te doen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: den opdracht ‘%1$s’ aanvaard twee parameters, den bijnaam van de gebruiker en optioneel een reden."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: kan geen gespreksdeelnemer niet vinden gebaseerd op uw argumenten"],"Error: found multiple groupchat participant based on your arguments":["Fout: meerdere groepsgespreksdeelnemers gevonden gebaseerd op uw argumenten"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["gebruiker@voorbeeld.be"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Uwen bijnaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldig aantal argumenten"],"This action was done by %1$s.":["Deze actie is uitgevoerd door %1$s."],"The reason given is: \\"%1$s\\".":["D’opgegeven reden is: ‘%1$s’."],"Groupchats":["Groepgesprekken"],"Add a new groupchat":["Nieuw groepsgesprek toevoegen"],"Query for groupchats":["Zoeken naar gesprekken"],"Announcements":[""],"Notification from %1$s":["Melding van %1$s"],"%1$s says":["%1$s zegd"],"has gone offline":["is offline"],"has gone away":["is afwezig"],"is busy":["is bezet"],"has come online":["is online"],"wants to be your contact":["wild uw contact zijn"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Info"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Vrije %2$s XMPP-chatcliënt gemaakt door %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaalt %2$s het in uw eigen taal"],"Log out":["Afmelden"],"Click to change your chat status":["Klikt hier voor uw gespreksstatus te wijzigen"],"Show details about this chat client":["Toont meer informatie over dezen chatcliënt"],"Your avatar image":["Uw avatarafbeelding"],"Checkbox for selecting the following fingerprint":["Selectievakske voor het selecteren van de volgende vingerafdruk"],"Device without a fingerprint":["Apparaat zonder vingerafdruk"],"Other OMEMO-enabled devices":["Overige OMEMO-apparaten"],"Checkbox to select fingerprints of all other OMEMO devices":["Selectievakske voor vingerafdrukken van alle andere OMEMO-apparaten te selecteren"],"Remove checked devices and close":["Geselecteerde apparaten verwijderen en sluiten"],"Select all":["Alles selecteren"],"This device\'s OMEMO fingerprint":["De OMEMO-vingerafdruk van dit apparaat"],"Generate new keys and fingerprint":["Nieuwe sleutels en vingerafdruk genereren"],"Your Profile":["Uw profiel"],"XMPP Address (JID)":["XMPP-adres (JID)"],"Save and close":["Opslaan en sluiten"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruikt komma’s voor meerdere rollen op te geven. Uw rollen worden naast uwe naam op uw berichten weergegeven."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Sorry, der is een fout opgetreden bij het opslaan van uw profielgegevens."],"You can check your browser\'s developer console for any error output.":["Ge kunt de ontwikkelaarsconsole van uwen browser nakijken voor foutenuitvoer."],"Away":["Afwezig"],"Busy":["Bezet"],"Custom status":["Aangepaste status"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Langdurig afwezig"],"Change chat status":["Gespreksstatus wijzigen"],"Personal status message":["Persoonlijk statusbericht"],"I am %1$s":["Ik ben %1$s"],"Are you sure you want to log out?":["Zij’ ge zeker da’ g’u wild afmelden?"],"online":["online"],"busy":["bezet"],"away for long":["langdurig afwezig"],"away":["afwezig"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sorry, door en fout kon het ontvangen OMEMO-bericht niet ontsleuteld worden."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s lijkt geen gebruik te maken van ne cliënt met ondersteuning voor OMEMO. Het gaat niet meer mogelijk zijn van versleutelde berichten te sturen in dit groepsgesprek."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan geen eind-tot-eind-versleuteling gebruiken omdat %1$s ne cliënt gebruikt die dat geen ondersteuning biedt voor OMEMO."],"Messages are being sent in plaintext":["Berichten worden onversleuteld verzonden"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Der is een fout opgetreden bij het verwijderen van de apparaten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Zijt ge zeker dat ge nieuwe OMEMO-sleutels wilt genereren? Dit gaat uw oude sleutels verwijderen, en alle voorheen versleutelde berichten gaan niet meer ontsleutelbaar zijn op dit apparaat."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Sorry, we kunnen geen versleutelde berichten sturen omdat %1$s vereist dat ge geabonneerd zijt op zijn/haar aanwezigheid voor zijn/haar OMEMO-informatie te bekijken"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sorry, we kunnen geen versleutelde berichten sturen omdat den externe server voor %1$s niet kon gevonden worden"],"Unable to send an encrypted message due to an unexpected error.":["Kan geen versleutelde berichten sturen door een onverwachte fout."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Sorry, geen apparaten gevonden naarwaar we een OMEMO-versleuteld bericht kunnen verzenden."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dit is een OMEMO-versleuteld bericht, wat dat uwe cliënt niet ondersteunt. Meer informatie op https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Registratieformulier ophalen"],"Tip: A list of public XMPP providers is available":["Tip: der is ne lijst met openbare XMPP-leveranciers beschikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Sorry, we konden geen verbinding maken met uwe gekozen leverancier."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Sorry, den opgegeven leverancier bied geen ondersteuning voor inbandaccountregistratie. Probeerd nen andere leverancier."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Der ging iets mis bij het verbinden met ‘%1$s’. Zij’ ge zeker dat het bestaat?"],"Now logging you in":["Bezig met aanmelden"],"Registered successfully":["Geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["De leverancier weigerde uw registratieverzoek. Controleerd de waarden die g’invoerde."],"Leave this groupchat":["Dit gesprek verlaten"],"Click to toggle the list of open groupchats":["Klikt voor de lijst me’ groepsgesprekken te tonen/verbergen"],"Open Groupchats":["Open groepsgesprekken"],"Are you sure you want to leave the groupchat %1$s?":["Zijt ge zeker dat ge het gesprek ‘%1$s’ wilt verlaten?"],"Add":["Toevoegen"],"Add a Contact":["Voeg een contact toe"],"This contact is busy":["Dit contact is bezet"],"This contact is online":["Dit contact is online"],"This contact is offline":["Dit contact is offline"],"This contact is unavailable":["Dit contact is nie beschikbaar"],"This contact is away for an extended period":["Dit contact is uitgebreid afwezig"],"This contact is away":["Dit contact is afwezig"],"Contact name":["Contactnaam"],"Optional nickname":["Facultatieven bijnaam"],"Sorry, could not find a contact with that name":["Sorry, kon geen contact vinden met die naam"],"This contact has already been added":["Dees contact werd al toegevoegd"],"Filter":["Filteren"],"Filter by contact name":["Filteren op contactnaam"],"Filter by group name":["Filteren op groepsnaam"],"Filter by status":["Filteren op status"],"Any":["Elke"],"Unread":["Ongelezen"],"Chatty":["Spraakzaam"],"Extended Away":["Uitgebreid afwezig"],"Click to remove %1$s as a contact":["Klikt voor %1$s als contact te verwijderen"],"Click to accept the contact request from %1$s":["Klikt voor het contactverzoek van %1$s t’aanvaarden"],"Click to decline the contact request from %1$s":["Klikt voor het contactverzoek van %1$s te weigeren"],"Are you sure you want to decline this contact request?":["Zij’ ge zeker da’ ge dit contactverzoek wild weigeren?"],"Contacts":["Contacten"],"Add a contact":["Voeg een contact toe"],"Re-sync your contacts":["Hersynchroniseert uw contacten"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[164],{530:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"nl_BE"},"Create your account":["Maakt uwen account aan"],"Please enter the XMPP provider to register with:":["Voerd den XMPP-leverancier in waarbij da’ g’u wild registreren:"],"Already have a chat account?":["Hebd’ al nen account?"],"Log in here":["Meld u hier aan"],"Account Registration:":["Accountregistratie:"],"Register":["Registreren"],"Choose a different provider":["Kiesd nen andere leverancier"],"Hold tight, we\'re fetching the registration form…":["Efkens geduld, w’halen het registratieformulier op…"],"Cancel":["Annuleren"],"The connection has dropped, attempting to reconnect.":["De verbinding is verbroken, poging tot opnieuw verbinden."],"An error occurred while connecting to the chat server.":["Der trad een fout op bij het verbinden me’ de gespreksserver."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Sorry, we konden geen verbinding maken me’ dezen XMPP-host: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Den XMPP-server bood geen ondersteund authenticatiemechanisme aan"],"Sorry, could not determine upload URL.":["Sorry, kon den upload-URL nie bepalen."],"Sorry, could not determine file upload URL.":["Sorry, kon den bestandsupload-URL nie bepalen."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Sorry, kon het bestand niet uploaden. De server geeft het volgende aan: ‘%1$s’"],"Sorry, could not succesfully upload your file.":["Sorry, kon het bestand nie uploaden."],"Sorry, looks like file upload is not supported by your server.":["Sorry, bestandsupload word nie ondersteund door uwe server."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["De grootte van het bestand, %1$s, overschrijd het maximum toegelaten door uwe server, %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Dit groepsgesprek is nie anoniem"],"This groupchat now shows unavailable members":["Dit groepsgesprek toond nu nie-beschikbare leden"],"This groupchat does not show unavailable members":["Dit groepsgesprek toond geen nie-beschikbare leden"],"The groupchat configuration has changed":["De configuratie van het groepsgesprek is gewijzigd"],"This groupchat is now no longer anonymous":["Dit groepsgesprek is nie meer anoniem"],"This groupchat is now semi-anonymous":["Dit groepsgesprek is nu semi-anoniem"],"This groupchat is now fully-anonymous":["Dit groepsgesprek is nu volledig anoniem"],"A new groupchat has been created":["Een nieuw groepsgesprek is aangemaakt"],"Your nickname has been automatically set to %1$s":["Uwen bijnaam is automatisch ingesteld op %1$s"],"Your nickname has been changed to %1$s":["Uwen bijnaam is gewijzigd naar %1$s"],"You have been banned from this groupchat":["Ge zijt uit dit groepsgesprek verbannen"],"You have been kicked from this groupchat":["Ge zijt uit dit groepsgesprek geschopt"],"You have been removed from this groupchat because of an affiliation change":["Ge zijt uit dit groepsgesprek verwijderd omwille van een wijziging in lidmaatschap"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ge zijt uit dit groepsgesprek verwijderd omdat het nu enkel toegankelijk is voor leden, en ge geen lid zijt"],"You have been removed from this groupchat because the service hosting it is being shut down":["Ge zijt uit dit groepsgesprek verwijderd omdat de server dervan wordt uitgeschakeld"],"Your message was not delivered because you\'re not present in the groupchat.":["Uw bericht werd niet afgeleverd omda\' ge ni\' aanwezig zijt in het groepsgesprek."],"You\'re not allowed to register yourself in this groupchat.":["Ge hebt geen toelating voor uw eigen in dit groepsgesprek te registreren."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Ge hebt geen toelating voor uw eigen in dit groepsgesprek te registreren, omdat het enkel toegankelijk is voor leden."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Kan uwen bijnaam niet registreren in dit groepsgesprek met dat het geen ondersteuning biedt voor registratie."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Kan uwen bijnaam niet registreren in dit groepsgesprek, ongeldige gegevens ingevoerd."],"Topic set by %1$s":["Onderwerp ingesteld door %1$s"],"Topic cleared by %1$s":["Onderwerp gewist door %1$s"],"%1$s has been banned":["%1$s is verbannen"],"%1$s\'s nickname has changed":["Den bijnaam van %1$s is gewijzigd"],"%1$s has been kicked out":["%1$s is weggeschopt"],"%1$s has been removed because of an affiliation change":["%1$s is verwijderd omwille van een wijziging in lidmaatschap"],"%1$s has been removed for not being a member":["%1$s is verwijderd omwille van geen lid te zijn"],"%1$s is no longer an admin of this groupchat":["%1$s is ge(n)en beheerder meer van dit groepsgesprek"],"%1$s is no longer an owner of this groupchat":["%1$s is ge(n)en eigenaar meer van dit groepsgesprek"],"%1$s is no longer banned from this groupchat":["%1$s is niet meer verbannen uit dit groepsgesprek"],"%1$s is no longer a member of this groupchat":["%1$s is geen lid meer van dit groepsgesprek"],"%1$s is now a member of this groupchat":["%1$s is nu lid van dit groepsgesprek"],"%1$s is now an %2$s of this groupchat":["%1$s is nu %2$s van dit groepsgesprek"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Den bijnaam die ge gekozen hebd is gereserveerd of momenteel in gebruik, kiesd der nen anderen."],"Password incorrect":["Verkeerd wachtwoord"],"You are not on the member list of this groupchat.":["Ge staat niet op den deelnemerslijst van dit groepsgesprek."],"You have been banned from this groupchat.":["Ge zijt uit dit groepsgesprek verbannen."],"You are not allowed to create new groupchats.":["Ge hebt geen toelating voor nieuwe groepsgesprekken aan te maken."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Uwen bijnaam stemt niet overeen met het beleid van dit groepsgesprek."],"This groupchat does not (yet) exist.":["Dit groepsgesprek bestaat (nog) niet."],"This groupchat has reached its maximum number of participants.":["Dit groepsgesprek heeft het maximaal aantal gebruikers bereikt."],"Remote server not found":["Server niet gevonden"],"The explanation given is: \\"%1$s\\".":["D’opgegeven reden is: ‘%1$s’."],"%1$s has invited you to join a groupchat: %2$s":["%1$s heeft u uitgenodigd in het groepsgesprek ‘%2$s’"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s heeft u uitgenodigd in het groepsgesprek ‘%2$s’ en gaf volgende reden: “%3$sâ€"],"Error":["Fout"],"Sorry, something went wrong while trying to save your bookmark.":["Sorry, der ging iets mis bij het opslaan van uwen bladwijzer."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Mijn contacten"],"Pending contacts":["Contacten in afwachting"],"Contact requests":["Contactverzoeken"],"Ungrouped":["Ongegroepeerd"],"Sorry, there was an error while trying to add %1$s as a contact.":["Sorry, der trad een fout op bij het toevoegen van %1$s als contact."],"This client does not allow presence subscriptions":["Deze cliënt bied geen ondersteuning voor aanwezigheidsabonnementen"],"Click to hide these contacts":["Klikt voor deze contacten te verbergen"],"Unbookmark this groupchat":["Bladwijzer voor dit gesprek verwijderen"],"Click to open this groupchat":["Klikt voor dit groepsgesprek t’openen"],"Click to toggle the bookmarks list":["Klikt voor de lijst met bladwijzers te tonen/verbergen"],"Bookmarks":["Bladwijzers"],"Bookmark this groupchat":["Gesprek toevoegen aan bladwijzers"],"Would you like this groupchat to be automatically joined upon startup?":["Wild g’automatisch deelnemen aan dit groepsgesprek bij opstarten?"],"The name for this bookmark:":["De naam voor dezen bladwijzer:"],"What should your nickname for this groupchat be?":["Wa moet uwen bijnaam in dit groepsgesprek zijn?"],"Save":["Opslaan"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Zij’ ge zeker da’ ge den bladwijzer ‘%1$s’ wild verwijderen?"],"Close":["Sluiten"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["Audiobestand ‘%1$s’ downloaden"],"Download file \\"%1$s\\"":["Bestand ‘%1$s’ downloaden"],"Edit":[""],"Retract":[""],"Message versions":["Berichtversies"],"Retry":[""],"Uploading file:":["Bestand uploaden:"],"This message has been edited":["Dit bericht is bewerkt"],"Show more":["Meer tonen"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":["Voegd smiley’s in"],"Start a call":["Plaatst nen oproep"],"Message characters remaining":["Resterende berichttekens"],"Choose a file to send":["Kiesd een bestand voor te verzenden"],"Click to write as a normal (non-spoiler) message":["Klikt hier voor een gewoon (nie’-verborgen) bericht te schrijven"],"Click to write your message as a spoiler":["Klikt hier voor een verborgen bericht te schrijven"],"The User\'s Profile Image":["Profielafbeelding van gebruiker"],"Trusted":["Vertrouwd"],"Untrusted":["Onvertrouwd"],"OMEMO Fingerprints":["OMEMO-vingerafdrukken"],"Remove as contact":["Contact verwijderen"],"XMPP Address":["XMPP-adres"],"Email":["E-mail"],"Full Name":["Volledige naam"],"Nickname":["Bijnaam"],"Refresh":["Vernieuwen"],"Role":["Rol"],"URL":["URL"],"%1$s is typing":["%1$s is aan ’t typen"],"%1$s has stopped typing":["%1$s is gestopt met typen"],"%1$s has gone away":["%1$s is afwezig"],"Remove messages":["Berichten verwijderen"],"Write in the third person":["Schrijfd in den derde persoon"],"Show this menu":["Toond dit menu"],"Hidden message":["Verborgen bericht"],"Message":["Bericht"],"Optional hint":["Facultatieven tip"],"You have unread messages":["Ge hebd ongelezen berichten"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["Ge hebt een onverzonden bericht da\' verloren zal gaan als ge verder ga. Zijde zeker?"],"Are you sure you want to clear the messages from this conversation?":["Zij’ ge zeker da’ ge de berichten in dit gesprek wild wissen?"],"%1$s has gone offline":["%1$s is offline"],"%1$s is busy":["%1$s is bezet"],"%1$s is online":["%1$s is online"],"Sorry, something went wrong while trying to refresh":["Sorry, der ging iets mis bij het verversen"],"Are you sure you want to remove this contact?":["Zij’ ge zeker da’ ge dit contact wild verwijderen?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Sorry, der trad een fout op bij het verwijderen van %1$s als contact."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Voor prestaties te verbeteren slaan we uw gegevens op in het cachegeheugen van van dezen browser. Vinkt dit niet aan als dit een openbare computer is of als ge wilt dat uw gegevens worden verwijderd bij het uiloggen. Het is van belang dat ge zelf expliciet uitlogt, anders kan het zijn dat der gegevens in het cachegeheugen achterblijven. Let op, als ge een niet-vertrouwd apparaat gebruikt is OMEMO-versleuteling NIET mogelijk."],"This is a trusted device":["Dit is een vertrouwd apparaat"],"Create an account":["Account aanmaken"],"Don\'t have a chat account?":["Hebde genen account?"],"Log in":["Inloggen"],"Disconnected":[""],"Click here to log in anonymously":["Klikt hier voor anoniem aan te melden"],"Username":["Gebruikersnaam"],"user@domain":["gebruiker@domein"],"Please enter a valid XMPP address":["Voerd een geldig XMPP-adres in"],"Chat Contacts":["Gesprekscontacten"],"Toggle chat":["Gesprek openen"],"Click to restore this chat":["Klikt voor dit gesprek t’herstellen"],"Minimized":["Geminimaliseerd"],"This user is a moderator.":["Deze gebruiker is ne moderator."],"This user can send messages in this groupchat.":["Deze gebruiker kan berichten sturen in dit groepsgesprek."],"This user can NOT send messages in this groupchat.":["Deze gebruiker kan GEEN berichten sturen in dit groepsgesprek."],"Owner":["Eigenaar"],"Admin":["Beheerder"],"Member":["Lid"],"Moderator":["Moderator"],"Visitor":["Bezoeker"],"Click to mention %1$s in your message.":["Klikt voor %1$s in uw bericht te vermelden."],"Participants":["Deelnemers"],"This field is required":["Dees veld is verplicht"],"Join":["Deelnemen"],"Enter a new Groupchat":["Deelnemen aan nieuw groepsgesprek"],"name@conference.example.org":["naam@groepsgesprek.voorbeeld.be"],"Groupchat name":["Gespreksnaam"],"Groupchat address":["Gespreksadres"],"Invite":["Uitnodigen"],"Show groupchats":["Groepsgesprekken tonen"],"Server address":["Serveradres"],"Show more information on this groupchat":["Toond meer informatie over dit groepsgesprek"],"Query for Groupchats":["Zoeken naar gesprekken"],"Description:":["Beschrijving:"],"Groupchat Address (JID):":["Gespreksadres (JID):"],"Participants:":["Deelnemers:"],"Features:":["Functies:"],"Requires authentication":["Authenticatie vereist"],"Hidden":["Verborgen"],"Requires an invitation":["Uitnodiging vereist"],"Moderated":["Gemodereerd"],"Non-anonymous":["Nie-anoniem"],"Open":["Open"],"Permanent":["Blijvend"],"Public":["Openbaar"],"Semi-anonymous":["Semi-anoniem"],"Temporary":["Tijdelijk"],"Unmoderated":["Nie’ gemodereerd"],"conference.example.org":["groepsgesprek.voorbeeld.be"],"No groupchats found":["Geen groepsgesprekken gevonden"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Onderwerp"],"Topic author":["Auteur van het onderwerp"],"Groupchat address (JID)":["Gespreksadres (JID)"],"Message archiving":["Berichtarchivering"],"Messages are archived on the server":["Berichten worden gearchiveerd op de server"],"Description":["Beschrijving"],"Features":["Functies"],"This groupchat is not publicly searchable":["Dit groepsgesprek is niet openbaar vindbaar"],"This groupchat is restricted to members only":["Dit groepsgesprek is enkel toegankelijk voor leden"],"Members only":["Alleen-leden"],"Participants entering this groupchat need to request permission to write":["Deelnemers aan dit groepsgesprek hebben toestemming nodig voordat ze berichten kunnen sturen"],"Name":["Naam"],"This groupchat does not require a password upon entry":["Dit groepsgesprek vereist geen paswoord voor toegang"],"No password required":["Geen paswoord nodig"],"Not anonymous":["Niet-anoniem"],"All other groupchat participants can see your XMPP address":["Alle gebruikers in dit groepsgesprek kunnen uwen XMPP-adres zien"],"Not moderated":["Niet gemodereerd"],"Participants entering this groupchat can write right away":["Deelnemers aan dit groepsgesprek kunnen onmiddellijk berichten sturen"],"Online users":["Gebruikers online"],"Anyone can join this groupchat":["Iedereen kan deelnemen aan dit gesprek"],"This groupchat requires a password before entry":["Dit groepsgesprek vereist een paswoord voor toegang"],"Password protected":["Beveiligd met paswoord"],"Persistent":["Blijvend"],"This groupchat persists even if it\'s unoccupied":["Dit groepsgesprek blijft bestaan, zelfs als der niemand aanwezig is"],"Only moderators can see your XMPP address":["Enkel moderatoren kunnen uwen XMPP-adres zien"],"This groupchat will disappear once the last person leaves":["Dit groepsgesprek zal verdwijnen van zodra dat de laatsten deelnemer het verlaat"],"This groupchat is publicly searchable":["Dit groepsgesprek is openbaar vindbaar"],"Groupchat info for %1$s":["Info over groepsgesprek %1$s"],"You\'re not allowed to send messages in this room":["Ge hebt geen toelating om berichten te verzenden in dees groepsgesprek"],"The conversation has moved. Click below to enter.":["Het gesprek is verplaatst. Klikt hieronder voor deel te nemen."],"This groupchat no longer exists":["Dit groepsgesprek bestaat niet meer"],"Enter groupchat":["Deelnemen aan groepsgesprek"],"Please choose your nickname":["Kiesd uwen bijnaam"],"This groupchat requires a password":["Dit groepsgesprek vereist een paswoord"],"Password: ":["Wachtwoord: "],"Submit":["Indienen"],"%1$s has entered the groupchat":["%1$s neemt deel aan het groepsgesprek"],"%1$s has left the groupchat":["%1$s heeft het groepsgesprek verlaten"],"%1$s is now a moderator":["%1$s is nu ne moderator"],"%1$s is no longer a moderator":["%1$s is gene moderator meer"],"%1$s has been given a voice":["%1$s heeft een stem gekregen"],"%1$s has been muted":["%1$s is gedempt"],"Change user\'s affiliation to admin":["Lidmaatschap van gebruiker wijzigen naar beheerder"],"Ban user by changing their affiliation to outcast":["Gebruiker verbannen door diens affiliatie te veranderen naar verschoppeling"],"Clear the chat area":["De gespreksruimte leegmaken"],"Change user role to participant":["Rol van gebruiker wijzigen naar deelnemer"],"Remove this groupchat":["Dit groepsgesprek verwijderen"],"Kick user from groupchat":["Gebruiker uit groepsgesprek schoppen"],"Write in 3rd person":["Schrijfd in den derde persoon"],"Grant membership to a user":["Verleend lidmaatschap aan ne gebruiker"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Mogelijkheid van gebruiker voor berichten te schrijven verwijderen"],"Change your nickname":["Wijzigd uwen bijnaam"],"Grant moderator role to user":["Rol van gebruiker wijzigen naar moderator"],"Grant ownership of this groupchat":["Eigendom van dit groepsgesprek verlenen"],"Register your nickname":["Uwen bijnaam registreren"],"Revoke the user\'s current affiliation":["De affiliatie van de gebruiker intrekken"],"Set groupchat subject":["Gespreksonderwerp instellen"],"Set groupchat subject (alias for /subject)":["Gespreksonderwerp instellen (alias voor /subject)"],"Allow muted user to post messages":["Gedempte gebruikers berichten laten schrijven"],"Configure":[""],"Configure this groupchat":["Configureerd dit groepsgesprek"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Verbergt den deelnemerslijst"],"Forbidden: you do not have the necessary role in order to do that.":["Geen toelating: ge hebt niet de benodigde rol voor dit te doen."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Geen toelating: ge hebt niet de benodigde affiliatie voor dit te doen."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Fout: den opdracht ‘%1$s’ aanvaard twee parameters, den bijnaam van de gebruiker en optioneel een reden."],"Error: couldn\'t find a groupchat participant based on your arguments":["Fout: kan geen gespreksdeelnemer niet vinden gebaseerd op uw argumenten"],"Error: found multiple groupchat participant based on your arguments":["Fout: meerdere groepsgespreksdeelnemers gevonden gebaseerd op uw argumenten"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["gebruiker@voorbeeld.be"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Uwen bijnaam is \\"%1$s\\""],"Error: invalid number of arguments":["Fout: ongeldig aantal argumenten"],"This action was done by %1$s.":["Deze actie is uitgevoerd door %1$s."],"The reason given is: \\"%1$s\\".":["D’opgegeven reden is: ‘%1$s’."],"Groupchats":["Groepgesprekken"],"Add a new groupchat":["Nieuw groepsgesprek toevoegen"],"Query for groupchats":["Zoeken naar gesprekken"],"Announcements":[""],"Notification from %1$s":["Melding van %1$s"],"%1$s says":["%1$s zegd"],"has gone offline":["is offline"],"has gone away":["is afwezig"],"is busy":["is bezet"],"has come online":["is online"],"wants to be your contact":["wild uw contact zijn"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Info"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Vrije %2$s XMPP-chatcliënt gemaakt door %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Vertaalt %2$s het in uw eigen taal"],"Log out":["Afmelden"],"Click to change your chat status":["Klikt hier voor uw gespreksstatus te wijzigen"],"Show details about this chat client":["Toont meer informatie over dezen chatcliënt"],"Your avatar image":["Uw avatarafbeelding"],"Checkbox for selecting the following fingerprint":["Selectievakske voor het selecteren van de volgende vingerafdruk"],"Device without a fingerprint":["Apparaat zonder vingerafdruk"],"Other OMEMO-enabled devices":["Overige OMEMO-apparaten"],"Checkbox to select fingerprints of all other OMEMO devices":["Selectievakske voor vingerafdrukken van alle andere OMEMO-apparaten te selecteren"],"Remove checked devices and close":["Geselecteerde apparaten verwijderen en sluiten"],"Select all":["Alles selecteren"],"This device\'s OMEMO fingerprint":["De OMEMO-vingerafdruk van dit apparaat"],"Generate new keys and fingerprint":["Nieuwe sleutels en vingerafdruk genereren"],"Your Profile":["Uw profiel"],"XMPP Address (JID)":["XMPP-adres (JID)"],"Save and close":["Opslaan en sluiten"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Gebruikt komma’s voor meerdere rollen op te geven. Uw rollen worden naast uwe naam op uw berichten weergegeven."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Sorry, der is een fout opgetreden bij het opslaan van uw profielgegevens."],"You can check your browser\'s developer console for any error output.":["Ge kunt de ontwikkelaarsconsole van uwen browser nakijken voor foutenuitvoer."],"Away":["Afwezig"],"Busy":["Bezet"],"Custom status":["Aangepaste status"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Langdurig afwezig"],"Change chat status":["Gespreksstatus wijzigen"],"Personal status message":["Persoonlijk statusbericht"],"I am %1$s":["Ik ben %1$s"],"Are you sure you want to log out?":["Zij’ ge zeker da’ g’u wild afmelden?"],"online":["online"],"busy":["bezet"],"away for long":["langdurig afwezig"],"away":["afwezig"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Sorry, door en fout kon het ontvangen OMEMO-bericht niet ontsleuteld worden."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s lijkt geen gebruik te maken van ne cliënt met ondersteuning voor OMEMO. Het gaat niet meer mogelijk zijn van versleutelde berichten te sturen in dit groepsgesprek."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Kan geen eind-tot-eind-versleuteling gebruiken omdat %1$s ne cliënt gebruikt die dat geen ondersteuning biedt voor OMEMO."],"Messages are being sent in plaintext":["Berichten worden onversleuteld verzonden"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Sorry, we kunnen geen versleutelde berichten sturen omdat %1$s vereist dat ge geabonneerd zijt op zijn/haar aanwezigheid voor zijn/haar OMEMO-informatie te bekijken"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Sorry, we kunnen geen versleutelde berichten sturen omdat den externe server voor %1$s niet kon gevonden worden"],"Unable to send an encrypted message due to an unexpected error.":["Kan geen versleutelde berichten sturen door een onverwachte fout."],"Sorry, an error occurred while trying to remove the devices.":["Der is een fout opgetreden bij het verwijderen van de apparaten."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Zijt ge zeker dat ge nieuwe OMEMO-sleutels wilt genereren? Dit gaat uw oude sleutels verwijderen, en alle voorheen versleutelde berichten gaan niet meer ontsleutelbaar zijn op dit apparaat."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Sorry, geen apparaten gevonden naarwaar we een OMEMO-versleuteld bericht kunnen verzenden."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Dit is een OMEMO-versleuteld bericht, wat dat uwe cliënt niet ondersteunt. Meer informatie op https://conversations.im/omemo"]," e.g. conversejs.org":[" bv. conversejs.org"],"Fetch registration form":["Registratieformulier ophalen"],"Tip: A list of public XMPP providers is available":["Tip: der is ne lijst met openbare XMPP-leveranciers beschikbaar"],"here":["hier"],"Sorry, we\'re unable to connect to your chosen provider.":["Sorry, we konden geen verbinding maken met uwe gekozen leverancier."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Sorry, den opgegeven leverancier bied geen ondersteuning voor inbandaccountregistratie. Probeerd nen andere leverancier."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Der ging iets mis bij het verbinden met ‘%1$s’. Zij’ ge zeker dat het bestaat?"],"Now logging you in":["Bezig met aanmelden"],"Registered successfully":["Geregistreerd"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["De leverancier weigerde uw registratieverzoek. Controleerd de waarden die g’invoerde."],"Leave this groupchat":["Dit gesprek verlaten"],"Click to toggle the list of open groupchats":["Klikt voor de lijst me’ groepsgesprekken te tonen/verbergen"],"Open Groupchats":["Open groepsgesprekken"],"Are you sure you want to leave the groupchat %1$s?":["Zijt ge zeker dat ge het gesprek ‘%1$s’ wilt verlaten?"],"Add":["Toevoegen"],"Add a Contact":["Voeg een contact toe"],"This contact is busy":["Dit contact is bezet"],"This contact is online":["Dit contact is online"],"This contact is offline":["Dit contact is offline"],"This contact is unavailable":["Dit contact is nie beschikbaar"],"This contact is away for an extended period":["Dit contact is uitgebreid afwezig"],"This contact is away":["Dit contact is afwezig"],"Contact name":["Contactnaam"],"Optional nickname":["Facultatieven bijnaam"],"Sorry, could not find a contact with that name":["Sorry, kon geen contact vinden met die naam"],"This contact has already been added":["Dees contact werd al toegevoegd"],"Filter":["Filteren"],"Filter by contact name":["Filteren op contactnaam"],"Filter by group name":["Filteren op groepsnaam"],"Filter by status":["Filteren op status"],"Any":["Elke"],"Unread":["Ongelezen"],"Chatty":["Spraakzaam"],"Extended Away":["Uitgebreid afwezig"],"Click to remove %1$s as a contact":["Klikt voor %1$s als contact te verwijderen"],"Click to accept the contact request from %1$s":["Klikt voor het contactverzoek van %1$s t’aanvaarden"],"Click to decline the contact request from %1$s":["Klikt voor het contactverzoek van %1$s te weigeren"],"Are you sure you want to decline this contact request?":["Zij’ ge zeker da’ ge dit contactverzoek wild weigeren?"],"Contacts":["Contacten"],"Add a contact":["Voeg een contact toe"],"Re-sync your contacts":["Hersynchroniseert uw contacten"]}}}')}}]); //# sourceMappingURL=nl_BE-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/oc-LC_MESSAGES-converse-po.js b/src/conversejs/locales/oc-LC_MESSAGES-converse-po.js index b85d7a7743617737b954cefed6a294b7a1ce726f..a2a11b21dfd417930d6357f0bcd4961e8164cfdb 100644 --- a/src/conversejs/locales/oc-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/oc-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{443:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"oc"},"Create your account":["Creatz vòstre compte"],"Please enter the XMPP provider to register with:":["Volgatz picar lo provesidor XMPP ont se marcar :"],"Already have a chat account?":["Avètz ja un compte ?"],"Log in here":["Connectatz-vos aquÃ"],"Account Registration:":["Creacion del compte :"],"Register":["Se marcar"],"Choose a different provider":["Causir un autre provesidor"],"Hold tight, we\'re fetching the registration form…":["Demoratz aquÃ, sèm a quèrre lo formulari d’inscripcion…"],"Cancel":["Anullar"],"The connection has dropped, attempting to reconnect.":["La connexion es estada perduda, ensag de reconnexion."],"An error occurred while connecting to the chat server.":["O planhèm, una error s’es producha en se connectar al servidor de chat."],"Your XMPP address and/or password is incorrect. Please try again.":["Vòstra adreça XMPP e/o senhal es incorrèct. Tornatz ensajar."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["O planhèm, avèm pas pogut nos connectar a l’òste XMPP amb lo domeni : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Lo servidor XMPP a pas prepausat un mecanisme d’autentificacion pres en carga"],"Sorry, could not determine upload URL.":["Determinacion impossibla de l’URL de mandadÃs del fichièr."],"Sorry, could not determine file upload URL.":["Determinacion impossibla de l’URL per enviar lo fichièr."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["O planhèm, lo mandadÃs del fichièr a pas reüssit. Vòstre servidor a respondut : « %1$s »"],"Sorry, could not succesfully upload your file.":["O planhèm, lo mandadÃs del fichièr a pas reüssit."],"Sorry, looks like file upload is not supported by your server.":["O planhèm, lo servidor sembla pas gerir lo mandadÃs de fichièrs."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La talha del fichièr, %1$s, subrepassa lo maximum autorizat per vòstre servidor, que es %2$s."],"Smileys and emotions":["Smileys e emocions"],"People":["Gents"],"Activities":["Activitats"],"Travel":["Viatge"],"Objects":["Objèctes"],"Animals and nature":["Animals e natura"],"Food and drink":["Beure e manjar"],"Symbols":["Simbòls"],"Flags":["Drapèus"],"Stickers":["Pegasolets"],"This groupchat is not anonymous":["Aquesta sala es pas anonima"],"This groupchat now shows unavailable members":["Aquesta sala mòstra ara los membres indisponibles"],"This groupchat does not show unavailable members":["Aquesta sala mòstra pas los membres indisponibles"],"The groupchat configuration has changed":["Los paramètres d’aquesta sala son estats cambiats"],"Groupchat logging is now enabled":["L’enregistrament es ara activat per la sala"],"Groupchat logging is now disabled":["L’enregistrament es ara desactivat per la sala"],"This groupchat is now no longer anonymous":["Aquesta sala es pas mai anonima"],"This groupchat is now semi-anonymous":["Aquesta sala es ara semianonima"],"This groupchat is now fully-anonymous":["Aquesta es ara complètament anonima"],"A new groupchat has been created":["Una nòva sala es estada creada"],"Your nickname has been automatically set to %1$s":["Vòstre escais-nos es estat automaticament definit a : %1$s"],"Your nickname has been changed to %1$s":["Vòstre escais-nom es estat cambiat per « %1$s »"],"You have been banned from this groupchat":["Sètz forabandit d’aquesta sala"],"You have been kicked from this groupchat":["Sètz estat expulsat d’aquesta sala"],"You have been removed from this groupchat because of an affiliation change":["Sètz estat tirat de la sala a causa d’un cambiament d’afiliacion"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sètz estat levat d’aquesta sala perque aquesta sala es venguda reservada als membres e sètz pas membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sètz estat levat d’aquesta sala perque lo servici ont es albergat es a èsser arrestat"],"Your message was not delivered because you weren\'t allowed to send it.":["Lo messatge es pas estat liurat perque sètz pas autorizat a enviar de messatges."],"Your message was not delivered because you\'re not present in the groupchat.":["Vòstre messatge es pas estat liurat perque sètz pas present a la sala."],"You\'re not allowed to register yourself in this groupchat.":["Sètz pas autorizat a vos inscriure vos meteis a la sala."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Sètz pas autorizat a vos inscriure a aquesta sala perque es reservada als membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Inscripcion impossibla de vòstre escais-nom a la sala, gerÃs pas l’enregistrament."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Inscripcion impossibla de vòstre escais-nom a la sala, un formulari invalid es estat enviat."],"Topic set by %1$s":["Lo subjècte es estat definit per %1$s"],"Topic cleared by %1$s":["Subjècte tirat per %1$s"],"%1$s has been banned by %2$s":["%1$s es estat forabandit per %2$s"],"%1$s has been banned":["%1$s es estat forabandit"],"%1$s\'s nickname has changed":["L’escais-nom de %1$s a cambiat"],"%1$s has been kicked out by %2$s":["%1$s es estat expulsat per %2$s"],"%1$s has been kicked out":["%1$s es estat expulsat"],"%1$s has been removed because of an affiliation change":["%1$s es estat tirat a causa d’un cambiament d’afiliacion"],"%1$s has been removed for not being a member":["%1$s es estat levat per es pas membre"],"%1$s is no longer an admin of this groupchat":["%1$s es pas mai administrator de la sala"],"%1$s is no longer an owner of this groupchat":["%1$s es pas mai lo proprietari d’aquesta sala"],"%1$s is no longer banned from this groupchat":["%1$s es pas mai forabandit d’aquesta sala"],"%1$s is no longer a member of this groupchat":["%1$s es pas mai membre d’aquesta sala"],"%1$s is now a member of this groupchat":["%1$s es ara membre d’aquesta sala"],"%1$s is now an %2$s of this groupchat":["%1$s es ara %2$s d’aquesta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["L’escais-nom causit es reservat o actualament utilizat, volgatz ne causir un diferent."],"Password incorrect":["Senhal incorrècte"],"You are not on the member list of this groupchat.":["Sètz pas dins la lista dels membres d’aquesta sala."],"You have been banned from this groupchat.":["Sètz estat forabandit d’aquesta sala."],"You are not allowed to create new groupchats.":["Avètz pas lo drech de crear de salas."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Vòstre escais-nom respècta pas la politica d’aquesta sala."],"This groupchat does not (yet) exist.":["Aquesta sala existÃs pas (pel moment)."],"This groupchat has reached its maximum number of participants.":["Aquesta sala a atengut sa limita de participants."],"Remote server not found":["Servidor alonhat pas trobat"],"The explanation given is: \\"%1$s\\".":["L’explicacion donada es  : « %1$s »."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vos a convidat a rejónher la sala : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vos a convidat a rejónher la sala : %2$s, e a daissat lo messatge seguent : « %3$s »"],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["Quicòm s’es pas passat coma caliá pendent la salvagarda d’aqueste marcapagina."],"Timeout Error":["Error de relambi"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Lo servidor a pas tornat vòstres marcapaginas pendent lo temps autorizat. Podètz actualizar la pagina per los tornar demandar."],"My contacts":["Mos contactes"],"Pending contacts":["Contactes en espèra"],"Contact requests":["Demandas de contactes"],"Ungrouped":["Sens grop"],"New messages":["Messatges novèls"],"Sorry, there was an error while trying to add %1$s as a contact.":["O planhèm, una error s’es producha en ajustar %1$s als contacts."],"This client does not allow presence subscriptions":["Aqueste client permet pas las mesas a jorn de preséncia"],"Click to hide these contacts":["Clicatz per rescondre los contactes"],"Unbookmark this groupchat":["Levar aquesta sala dels marcapaginas"],"Click to open this groupchat":["Clicar per dobrir aquesta sala"],"Click to toggle the bookmarks list":["Clicar per dobrir la lista de las salas"],"Bookmarks":["Marcapaginas"],"Bookmark this groupchat":["Ajustar aquesta sala als marcapaginas"],"Would you like this groupchat to be automatically joined upon startup?":["Volètz rejónher aquesta sala automaticament a l’aviada ?"],"The name for this bookmark:":["Nom d’aqueste marcapagina :"],"What should your nickname for this groupchat be?":["Quin escais-nom volètz utilizar per aquesta sala ?"],"Save":["Salvagardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Volètz vertadièrament suprimir aqueste marcapagina « %1$s » ?"],"Close":["Tampar"],"OK":["D’acòrdi"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Telecargar lo fichièr à udio « %1$s »"],"Download file \\"%1$s\\"":["Telecargar lo fichièr « %1$s »"],"Edit":[""],"Retract":[""],"Message versions":["Versions del messatge"],"Retry":[""],"Uploading file:":["MandadÃs de fichièr :"],"%1$s has removed this message":["%1$s a suprimit aqueste messatge"],"This message has been edited":["Aqueste messatge es estat modificat"],"Show more":["Ne veire mai"],"No message history available.":["Cap d’istoric de messatges pas disponible."],"Search results":["Resultats de recèrca"],"Search":["Cercar"],"Insert emojis":["Inserir un emoji"],"Send the message":["Enviar lo messatge"],"Start a call":["Aviar una sonada"],"Message characters remaining":["Caractèrs demorants pel messatge"],"Choose a file to send":["Causir un fichièr a enviar"],"Click to write as a normal (non-spoiler) message":["Clicatz per escriure un messatge normal (cap d’intriga)"],"Click to write your message as a spoiler":["Clicatz per escriure un messatge amb una intriga"],"The User\'s Profile Image":["Imatge de perfil de l’utilizaire"],"Trusted":["Fisable"],"Untrusted":["Pas fisable"],"OMEMO Fingerprints":["Detadas clau OMEMO"],"No OMEMO-enabled devices found":["Cap de periferic amb lo chiframent OMEMO pas trobat"],"Remove as contact":["Suprimir aqueste contacte"],"XMPP Address":["Adreça XMPP"],"Email":["Corrièl"],"Full Name":["Nom complèt"],"Nickname":["Escais-nom"],"Refresh":["Actualizar"],"Role":["Ròtle"],"URL":["URL"],"%1$s is typing":["%1$s es a escriure"],"%1$s has stopped typing":["%1$s a arrestat d’escriure"],"%1$s has gone away":["%1$s es passat absent"],"Remove messages":["Escafar los messatges"],"Close this chat":["Tampar aquesta fenèstra de discussion"],"Write in the third person":["Escriure a la tresena persona"],"Show this menu":["Mostrar aqueste menú"],"Hidden message":["Messatge rescondut"],"Message":["Messatge"],"Optional hint":["Indici opcional"],"You have unread messages":["Avètz de nòus messatges"],"Details":["Detalhs"],"See more information about this person":["Mostrar mai d’informacions tocant aqueste degun"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["Volètz vertadièrament suprimir aqueste messatge ?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Avètz un messatge pas enviat que serà perdut se contunhatz. O volètz vertadièrament ?"],"Are you sure you want to clear the messages from this conversation?":["Volètz vertadièrament escafar los messatges d’aquesta conversacion ?"],"%1$s has gone offline":["%1$s es passat fòra linha"],"%1$s is busy":["%1$s es ocupat"],"%1$s is online":["%1$s es en linha"],"Sorry, something went wrong while trying to refresh":["Quicòm s’es pas passat coma caliá pendent l’ensag d’actualizacion"],"Are you sure you want to remove this contact?":["Volètz vertadièrament levar aqueste contacte ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["I a agut una error en ensajar de levar %1$s dels contactes."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per melhorar las qualitats tecnicas, gardam vòstras donadas dins lo cache del navegador. Desmarcatz aquesta casa se sètz sus un ordenador public, o se volètz que vòstras donadas sián suprimidas quand vos desconnectatz. Es important que vos desconnectetz explicitament, autrament totas las donadas en cache serà n pas suprimidas. Remarcatz que quand l’ordenador utilizat es pas fisable, lo chiframent OMEMO es PAS disponible."],"This is a trusted device":["Aquò es un periferic fisable"],"Password":["Senhal"],"Create an account":["Crear un compte"],"Don\'t have a chat account?":["Avètz pas de compte ?"],"Log in":["Connexion"],"Disconnected":["Desconnectat"],"Click here to log in anonymously":["Clicatz aquà per vos connectar anonimament"],"Username":["Nom d’utilizaire"],"user@domain":["utilizaire@domeni"],"Please enter a valid XMPP address":["Volgatz picar una adreça XMPP valida"],"Chat Contacts":["Contactes de chat"],"Toggle chat":["Dobrir la discussion"],"Click to restore this chat":["Clicatz per mostrar aquesta discussion"],"Minimized":["Reduch"],"Minimize this groupchat":["Reduire aqueste grop de discussion"],"This field is required":["Aqueste camp es requesit"],"Join":["Rejónher"],"Enter a new Groupchat":["Dintrar dins una nòva sala"],"name@conference.example.org":["nom@chat.exemple.org"],"Groupchat name":["Nom de la sala"],"Groupchat address":["Adreça de la sala"],"Invite":["Convidar"],"Invite someone to this groupchat":["Convidar qualqu’un al grop de discussion"],"user@example.org":["nom@exemple.org"],"Optional reason for the invitation":["Rason facultativa pel convit"],"Show groupchats":["Mostrar las salas"],"Server address":["Adreça del servidor"],"Show more information on this groupchat":["Mostrar mai d’informacions tocant aquesta sala"],"Query for Groupchats":["Cercar una sala"],"Description:":["Descripcion :"],"Groupchat Address (JID):":["Adreça de la sala (JID) :"],"Participants:":["Participants :"],"Features:":["Caracteristicas :"],"Requires authentication":["Demanda una autentificacion"],"Hidden":["Rescondut"],"Requires an invitation":["Demanda una invitacion"],"Moderated":["Moderat"],"Non-anonymous":["Pas anonime"],"Open":["Dobèrt"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semianonima"],"Temporary":["Temporari"],"Unmoderated":["Pas moderat"],"conference.example.org":["chat.exemple.org"],"No groupchats found":["Cap de sala pas trobada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Los moderators son d’utilizaires privilegiats que pòdon cambiar los ròtles dels autres utilizaires fòra los que son administrators o proprietaris d’afiliacions."],"The default role, implies that you can read and write messages.":["Lo ròtle per defaut significa que podètz legir e escriure de messatges."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Los visitaires son pas autorizats a escriure de messatges dins una conversacion multi-utilizaires moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietari es l’afiliacion mai nauta. Los proprietaris pòdon modificar los ròtles e afiliacions de totes los autres utilizaires."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin es la segonda afiliacion mai nauta. Los administrators pòdon modificar los ròtles e afiliacions de totes los autres utilizaires fòra los proprietaris."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per forabandir un utilizaire, donatz-li l’aficialicion d’ « exclús »."],"Change role":["Cambiar lo ròtle"],"New Role":["Ròtle novèl"],"Reason":["Rason"],"Change affiliation":["Cambiar l’afiliacion"],"New affiliation":["Afiliacion novèla"],"Affiliation":["Afiliacion"],"Moderator Tools":["Aisinas de moderador"],"No users with that affiliation found.":["Cap d’utilizaire pas trobat amb aquesta afiliacion."],"No users with that role found.":["Cap d’utilizaire pas trobat amb aqueste ròtle."],"Type here to filter the search results":[""],"Show users":["Mostrar los utilizaires"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Los ròtles son atribuits als utilizaires per lor donar o tirar unas capacitats dins una sala multi-utilizaires. Son atribuidas explicitament o implicitament amb una afiliacion. Un ròtle que ven pas d’una afiliacion, es pas que valid lo temps de la session de l’utilizaire."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliacion es un drech duradÃs qu’implica generalament a tal ròtle e que dòna de privilègis e de responsabilitats. Per exemple los administrators e los proprietaris an automaticament lo ròtle de moderator."],"Sorry, something went wrong while trying to set the affiliation":["Quicòm s’es pas passat coma caliá pendent la definicion de l’afiliacion"],"Affiliation changed":["Afiliacion cambiada"],"Role changed":["Ròtle cambiat"],"You\'re not allowed to make that change":["Avètz pas lo drech de cambiar aquò"],"Sorry, something went wrong while trying to set the role":["Quicòm s’es pas passat coma caliá pendent la definicion del ròtle"],"Topic":["Subjècte"],"Topic author":["Autor del subjècte"],"Groupchat address (JID)":["Adreça de la sala (JID)"],"Message archiving":["Conservacion dels messatges"],"Messages are archived on the server":["Los messatges son conservats al servidor"],"Description":["Descripcion"],"Features":["Caracteristicas"],"This groupchat is not publicly searchable":["Aquesta sala es pas publica per la recèrca"],"This groupchat is restricted to members only":["Aquesta sala es solament pels membres"],"Members only":["Membres solament"],"Participants entering this groupchat need to request permission to write":["Los participants d’aquesta conversacion devon aver la permission per escriure"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Aquesta sala necessita pas cap de senhal per i dintrar"],"No password required":["Cap de senhal pas requesit"],"Not anonymous":["Pas anonima"],"All other groupchat participants can see your XMPP address":["Totes los autres ocupants d’aquesta sala pòdon veire vòstra adreça XMPP"],"Not moderated":["Pas moderat"],"Participants entering this groupchat can write right away":["Los participants d’aquesta conversacion pòdon escriure dirèctament"],"Online users":["Utilizaires en linha"],"Anyone can join this groupchat":["Tot lo monde pòt participar a la sala"],"This groupchat requires a password before entry":["Aquesta sala necessita un senhal per i dintrar"],"Password protected":["Protegida per senhal"],"Persistent":["Persistenta"],"This groupchat persists even if it\'s unoccupied":["Aquesta sala demòra encara que siá pas ocupada"],"Only moderators can see your XMPP address":["Sols los moderators pòdon veire vòstra adreça XMPP"],"This groupchat will disappear once the last person leaves":["Aquesta sala desapareis quand la darrièra persona s’en va"],"This groupchat is publicly searchable":["Aquesta sala se pòt trobar amb la recèrca"],"Groupchat info for %1$s":["Informacions tocant la sala %1$s"],"You\'re not allowed to send messages in this room":["Sètz pas autorizat a enviar de messatges a aquesta sala"],"The conversation has moved. Click below to enter.":["La conversacion a mudat. Clicatz çai-jos per dintrar."],"This groupchat no longer exists":["Aquesta sala existÃs pas mai"],"Enter groupchat":["Dintrar a la sala"],"Please choose your nickname":["Volgatz causir un escais-nom"],"This groupchat requires a password":["Aquesta sala requesÃs un senhal"],"Password: ":["Senhal : "],"Submit":["Sosmetre"],"This user is a moderator.":["Aqueste utilizaire es moderator."],"This user can send messages in this groupchat.":["Aqueste utilizaire pòt enviar de messatge dins aquesta sala."],"This user can NOT send messages in this groupchat.":["Aqueste utilizaire pòt PAS enviar de messatge dins aquesta sala."],"Owner":["Proprietari"],"Admin":["Admin"],"Member":["Membre"],"Moderator":["Moderador"],"Visitor":["Visitaire"],"Click to mention %1$s in your message.":["Clicar per mencionar %1$s dins vòstre messatge."],"Participants":["Participants"],"%1$s has entered the groupchat":["%1$s a rejonch la sala"],"%1$s has left the groupchat":["%1$s a quitat la sala"],"%1$s is now a moderator":["%1$s es ara moderator"],"%1$s is no longer a moderator":["%1$s es pas mai moderator"],"%1$s has been given a voice":["%1$s pòt parlar ara"],"%1$s has been muted":["%1$s pòt pas mai parlar"],"Change user\'s affiliation to admin":["Cambiar lo ròtle de l’utilizaire en administrator"],"Ban user by changing their affiliation to outcast":["Forabandir un utilizaire en cambiar son afiliacion"],"Clear the chat area":["Escafar la zòna de conversacion"],"Change user role to participant":["Cambiar lo ròtle de l’utilizaire en participant"],"Remove this groupchat":["Suprimir aquesta sala"],"Kick user from groupchat":["Expulsar l’utilizaire d’aquesta sala"],"Write in 3rd person":["Escriure a la tresena persona"],"Grant membership to a user":["Permetre a l’utilizaire d’èsser membre"],"Opens up the moderator tools GUI":["DorbÃs las aisinas de moderacion"],"Remove user\'s ability to post messages":["Tirar lo drech d’enviar de messatges"],"Change your nickname":["Cambiar l’escais-nom"],"Grant moderator role to user":["Cambiar lo ròtle de l’utilizaire en moderator"],"Grant ownership of this groupchat":["Acordar la proprietat d’aquesta sala"],"Register your nickname":["Enregistrar l’escais-nom"],"Revoke the user\'s current affiliation":["Revocar l’afiliacion actuala de l’utilizaire"],"Set groupchat subject":["Definir lo subjècte de la sala"],"Set groupchat subject (alias for /subject)":["Definir lo subjècte de la sala (alias per /subject)"],"Allow muted user to post messages":["Permetre als utilizaires muts de publicar de messatges"],"Configure this groupchat":["Configurar d’aquesta sala"],"Hide topic":["Amagar subjècte"],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":["Quitar"],"Hide the list of participants":["Rescondre la lista dels participants"],"Forbidden: you do not have the necessary role in order to do that.":["Defendut : avètz pas lo ròtle necessari per far aquò."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Defendut : avètz pas l’afliacion que cal per aquò far."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error : la comanda « %1$s » pren dos paramètres, l’escais-nom de l’utilizaire e la rason d’un biais opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error : impossible de trobar un participant dins la sala segon vòstres arguments"],"Error: found multiple groupchat participant based on your arguments":["Error : impossible de trobar mantun participants en utilizar vòstres paramètres"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["nom@exemple.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Vòstre escais-nom es « %1$s »"],"Error: invalid number of arguments":["Error : nombre d’arguments invalid"],"This action was done by %1$s.":["Aquesta accion es estada realizada per %1$s."],"The reason given is: \\"%1$s\\".":["La rason indicada es  : « %1$s »."],"Groupchats":["Salas"],"Add a new groupchat":["Ajustar una sala novèla"],"Query for groupchats":["Cercar una sala"],"Announcements":["Anóncias"],"Notification from %1$s":["Notificacion de %1$s"],"%1$s says":["%1$s ditz"],"has gone offline":["s’es desconnectat"],"has gone away":["es absent"],"is busy":["es ocupat"],"has come online":["s’es connectat"],"wants to be your contact":["vòl èsser vòstre contacte"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["A prepaus"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s liure %2$s que vos es fornit per %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Tradusètz %2$s dins vòstra lenga"],"Log out":["Desconnexion"],"Click to change your chat status":["Clicatz per cambiar vòstre estat"],"Show details about this chat client":["Mostrar mai d’informacion tocant aqueste client"],"Your avatar image":["Vòstre imatge d’avatar"],"Checkbox for selecting the following fingerprint":["Casa de marcar per seleccionar la detada OMEMO seguenta"],"Device without a fingerprint":["Periferic sens detada OMEMO"],"Other OMEMO-enabled devices":["Autres clients amb lo chiframent OMEMO activat"],"Checkbox to select fingerprints of all other OMEMO devices":["Casa de marcar per dire de seleccionar las detada OMEMA de totes los periferics"],"Remove checked devices and close":["Suprimir los clients OMEMO seleccionats e tampar"],"Select all":["O seleccionar tot"],"This device\'s OMEMO fingerprint":["Detada OMEMO d’aqueste client"],"Generate new keys and fingerprint":["Generar de nòvas claus e detadas"],"Your Profile":["Vòstre perfil"],"XMPP Address (JID)":["Adreça XMPP (JID)"],"Save and close":["Enregistrar e tampar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilizatz una virgula per dire de separar los ròtles. Vòstres ròtles son mostrats a costat de vòstre nom dins los messatges."],"OMEMO":["OMEMO"],"Sorry, an error happened while trying to save your profile data.":["O planhèm, quicòm a trucat pendent la salvagarda del perfil."],"You can check your browser\'s developer console for any error output.":["Podètz verificar totas las errors dins la consòla de desvolopament del navegador."],"Away":["Absent"],"Busy":["Ocupat"],"Custom status":["Estat personal"],"Offline":["Desconnectat"],"Online":["En linha"],"Away for long":["Absent de longa"],"Change chat status":["cambiar vòstre estat de chat"],"Personal status message":["Messatge d’estat personal"],"I am %1$s":["Soi %1$s"],"Are you sure you want to log out?":["Volètz vertadièrament vos desconnectar ?"],"online":["en linha"],"busy":["ocupat"],"away for long":["absent de longa"],"away":["absent"],"offline":["desconnectat"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s sembla pas aver un client que siá compatible amb OMEMO. Lo chiframent serà pas mai possible dins aqueste grop de discussion."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Utilizacion impossibla del chiframent del cap a la fin perque %1$s utiliza un client qu’es pas compatible amb OMEMO."],"Messages are being sent in plaintext":["Los messatges son enviats en clar"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["O planhèm, una error s’es producha en ensajar de suprimir los clients OMEMO."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Volètz vertadièrament generar de nòvas claus OMEMO ? Aquò tirarà las ancianas claus e totes los messatges ja deschifrats poirà n pas mai èsser deschifrats sus aqueste periferic."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["O planhèm, impossible d’enviar un messatge chifrat a %1$s perque requerÃs que siatz abonat a sas mesas a jorn de preséncia per dire de veire las informacions OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["O planhèm, impossible d’enviar un messatge chifrat perque lo servidor alonhat de %1$s es pas disponible"],"Unable to send an encrypted message due to an unexpected error.":["MandadÃs impossible d’un messatge chifrat a causa d’una error imprevista."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["O planhèm, impossible de trobat un periferic al qual enviar un messatge chifrat amb OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Aquò es un messatge chifrat amb OMEMO, que vòstre client sembla pas prendre en carga. Per mai d’informacions, anatz veire https://conversations.im/omemo"]," e.g. conversejs.org":[" per exemple conversejs.org"],"Fetch registration form":["Recuperacion del formulari d’enregistrament"],"Tip: A list of public XMPP providers is available":["Astúcia : una lista publica de provesidors XMPP es disponibla"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Avèm pas pogut vos connectar a vòstre provesidor."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["O planhèm, lo provesidor es pas compatibla amb l’enregistrament de compte en linha. Mercés d’ensajar amb un autre provesidor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Quicòm a trucat pendent l’establiment de la connexion amb « %1$s ». Es segur qu’existÃs ?"],"Now logging you in":["Connexion"],"Registered successfully":["Corrèctament enregistrat"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Lo provesidor a regetat vòstra demanda d’inscripcion. Mercés de verificar que las donadas qu’avètz picadas sián corrèctas."],"Leave this groupchat":["Quitar aquesta sala"],"Click to toggle the list of open groupchats":["Clicar per dobrir la lista de las salas dobèrtas"],"Open Groupchats":["Salas dobèrtas"],"Are you sure you want to leave the groupchat %1$s?":["Volètz vertadièrament quitar la sala « %1$s » ?"],"Add":["Ajustar"],"Add a Contact":["Ajustar un contacte"],"This contact is busy":["Aqueste contacte es ocupat"],"This contact is online":["Aqueste contacte es connectat"],"This contact is offline":["Aqueste contacte es desconnectat"],"This contact is unavailable":["Aqueste contacte es pas disponible"],"This contact is away for an extended period":["Aqueste contacte es absent de longa"],"This contact is away":["Aqueste contacte es absent"],"Contact name":["Nom del contacte"],"Optional nickname":["Escais-nom opcional"],"Sorry, could not find a contact with that name":["Impossible de trobar un contacte amb aqueste nom"],"This contact has already been added":["Aqueste contacte es ja ajustat"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar per nom de contacte"],"Filter by group name":["Filtrar per nom de grop"],"Filter by status":["Filtrar per estat"],"Any":["Cap"],"Unread":["Pas legit"],"Chatty":["Charraire"],"Extended Away":["Absent de longa"],"Click to remove %1$s as a contact":["Clicar per levar %1$s dels contactes"],"Click to accept the contact request from %1$s":["Clicatz per acceptar la demanda d’apondon de %1$s"],"Click to decline the contact request from %1$s":["Clicatz per regetar la demanda d’apondon de %1$s"],"Are you sure you want to decline this contact request?":["Volètz vertadièrament regetar aquesta demanda d’apondon als contactes ?"],"Contacts":["Contactes"],"Add a contact":["Ajustar un contacte"],"Re-sync your contacts":["Tornar sincronizar vòstres contactes"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[165],{531:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"oc"},"Create your account":["Creatz vòstre compte"],"Please enter the XMPP provider to register with:":["Volgatz picar lo provesidor XMPP ont se marcar :"],"Already have a chat account?":["Avètz ja un compte ?"],"Log in here":["Connectatz-vos aquÃ"],"Account Registration:":["Creacion del compte :"],"Register":["Se marcar"],"Choose a different provider":["Causir un autre provesidor"],"Hold tight, we\'re fetching the registration form…":["Demoratz aquÃ, sèm a quèrre lo formulari d’inscripcion…"],"Cancel":["Anullar"],"The connection has dropped, attempting to reconnect.":["La connexion es estada perduda, ensag de reconnexion."],"An error occurred while connecting to the chat server.":["O planhèm, una error s’es producha en se connectar al servidor de chat."],"Your XMPP address and/or password is incorrect. Please try again.":["Vòstra adreça XMPP e/o senhal es incorrèct. Tornatz ensajar."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["O planhèm, avèm pas pogut nos connectar a l’òste XMPP amb lo domeni : %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Lo servidor XMPP a pas prepausat un mecanisme d’autentificacion pres en carga"],"Undecryptable OMEMO message":["Messatge OMEMO pas deschifrable"],"Sorry, could not determine upload URL.":["Determinacion impossibla de l’URL de mandadÃs del fichièr."],"Sorry, could not determine file upload URL.":["Determinacion impossibla de l’URL per enviar lo fichièr."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["O planhèm, lo mandadÃs del fichièr a pas reüssit. Vòstre servidor a respondut : « %1$s »"],"Sorry, could not succesfully upload your file.":["O planhèm, lo mandadÃs del fichièr a pas reüssit."],"You\'re not allowed to retract your message.":["Avètz pas lo drech de tirar vòstre messatge."],"Sorry, looks like file upload is not supported by your server.":["O planhèm, lo servidor sembla pas gerir lo mandadÃs de fichièrs."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["La talha del fichièr, %1$s, subrepassa lo maximum autorizat per vòstre servidor, que es %2$s."],"Smileys and emotions":["Smileys e emocions"],"People":["Gents"],"Activities":["Activitats"],"Travel":["Viatge"],"Objects":["Objèctes"],"Animals and nature":["Animals e natura"],"Food and drink":["Beure e manjar"],"Symbols":["Simbòls"],"Flags":["Drapèus"],"Stickers":["Pegasolets"],"This groupchat is not anonymous":["Aquesta sala es pas anonima"],"This groupchat now shows unavailable members":["Aquesta sala mòstra ara los membres indisponibles"],"This groupchat does not show unavailable members":["Aquesta sala mòstra pas los membres indisponibles"],"The groupchat configuration has changed":["Los paramètres d’aquesta sala son estats cambiats"],"Groupchat logging is now enabled":["L’enregistrament es ara activat per la sala"],"Groupchat logging is now disabled":["L’enregistrament es ara desactivat per la sala"],"This groupchat is now no longer anonymous":["Aquesta sala es pas mai anonima"],"This groupchat is now semi-anonymous":["Aquesta sala es ara semianonima"],"This groupchat is now fully-anonymous":["Aquesta es ara complètament anonima"],"A new groupchat has been created":["Una nòva sala es estada creada"],"Your nickname has been automatically set to %1$s":["Vòstre escais-nos es estat automaticament definit a : %1$s"],"Your nickname has been changed to %1$s":["Vòstre escais-nom es estat cambiat per « %1$s »"],"You have been banned from this groupchat":["Sètz forabandit d’aquesta sala"],"You have been kicked from this groupchat":["Sètz estat expulsat d’aquesta sala"],"You have been removed from this groupchat because of an affiliation change":["Sètz estat tirat de la sala a causa d’un cambiament d’afiliacion"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Sètz estat levat d’aquesta sala perque aquesta sala es venguda reservada als membres e sètz pas membre"],"You have been removed from this groupchat because the service hosting it is being shut down":["Sètz estat levat d’aquesta sala perque lo servici ont es albergat es a èsser arrestat"],"Your message was not delivered because you weren\'t allowed to send it.":["Lo messatge es pas estat liurat perque sètz pas autorizat a enviar de messatges."],"Your message was not delivered because you\'re not present in the groupchat.":["Vòstre messatge es pas estat liurat perque sètz pas present a la sala."],"You\'re not allowed to register yourself in this groupchat.":["Sètz pas autorizat a vos inscriure vos meteis a la sala."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Sètz pas autorizat a vos inscriure a aquesta sala perque es reservada als membres."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Inscripcion impossibla de vòstre escais-nom a la sala, gerÃs pas l’enregistrament."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Inscripcion impossibla de vòstre escais-nom a la sala, un formulari invalid es estat enviat."],"Topic set by %1$s":["Lo subjècte es estat definit per %1$s"],"Topic cleared by %1$s":["Subjècte tirat per %1$s"],"%1$s has been banned by %2$s":["%1$s es estat forabandit per %2$s"],"%1$s has been banned":["%1$s es estat forabandit"],"%1$s\'s nickname has changed":["L’escais-nom de %1$s a cambiat"],"%1$s has been kicked out by %2$s":["%1$s es estat expulsat per %2$s"],"%1$s has been kicked out":["%1$s es estat expulsat"],"%1$s has been removed because of an affiliation change":["%1$s es estat tirat a causa d’un cambiament d’afiliacion"],"%1$s has been removed for not being a member":["%1$s es estat levat per es pas membre"],"%1$s is no longer an admin of this groupchat":["%1$s es pas mai administrator de la sala"],"%1$s is no longer an owner of this groupchat":["%1$s es pas mai lo proprietari d’aquesta sala"],"%1$s is no longer banned from this groupchat":["%1$s es pas mai forabandit d’aquesta sala"],"%1$s is no longer a member of this groupchat":["%1$s es pas mai membre d’aquesta sala"],"%1$s is now a member of this groupchat":["%1$s es ara membre d’aquesta sala"],"%1$s is now an %2$s of this groupchat":["%1$s es ara %2$s d’aquesta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["L’escais-nom causit es reservat o actualament utilizat, volgatz ne causir un diferent."],"Password incorrect":["Senhal incorrècte"],"You are not on the member list of this groupchat.":["Sètz pas dins la lista dels membres d’aquesta sala."],"You have been banned from this groupchat.":["Sètz estat forabandit d’aquesta sala."],"You are not allowed to create new groupchats.":["Avètz pas lo drech de crear de salas."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Vòstre escais-nom respècta pas la politica d’aquesta sala."],"This groupchat does not (yet) exist.":["Aquesta sala existÃs pas (pel moment)."],"This groupchat has reached its maximum number of participants.":["Aquesta sala a atengut sa limita de participants."],"Remote server not found":["Servidor alonhat pas trobat"],"The explanation given is: \\"%1$s\\".":["L’explicacion donada es  : « %1$s »."],"%1$s has invited you to join a groupchat: %2$s":["%1$s vos a convidat a rejónher la sala : %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s vos a convidat a rejónher la sala : %2$s, e a daissat lo messatge seguent : « %3$s »"],"Error":["Error"],"Sorry, something went wrong while trying to save your bookmark.":["Quicòm s’es pas passat coma caliá pendent la salvagarda d’aqueste marcapagina."],"Timeout Error":["Error de relambi"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Lo servidor a pas tornat vòstres marcapaginas pendent lo temps autorizat. Podètz actualizar la pagina per los tornar demandar."],"My contacts":["Mos contactes"],"Pending contacts":["Contactes en espèra"],"Contact requests":["Demandas de contactes"],"Ungrouped":["Sens grop"],"New messages":["Messatges novèls"],"Sorry, there was an error while trying to add %1$s as a contact.":["O planhèm, una error s’es producha en ajustar %1$s als contacts."],"This client does not allow presence subscriptions":["Aqueste client permet pas las mesas a jorn de preséncia"],"Click to hide these contacts":["Clicatz per rescondre los contactes"],"Unbookmark this groupchat":["Levar aquesta sala dels marcapaginas"],"Click to open this groupchat":["Clicar per dobrir aquesta sala"],"Click to toggle the bookmarks list":["Clicar per dobrir la lista de las salas"],"Bookmarks":["Marcapaginas"],"Bookmark this groupchat":["Ajustar aquesta sala als marcapaginas"],"Would you like this groupchat to be automatically joined upon startup?":["Volètz rejónher aquesta sala automaticament a l’aviada ?"],"The name for this bookmark:":["Nom d’aqueste marcapagina :"],"What should your nickname for this groupchat be?":["Quin escais-nom volètz utilizar per aquesta sala ?"],"Save":["Salvagardar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Volètz vertadièrament suprimir aqueste marcapagina « %1$s » ?"],"Close":["Tampar"],"OK":["D’acòrdi"],"Image: ":["Imatge : "],"Download audio file \\"%1$s\\"":["Telecargar lo fichièr à udio « %1$s »"],"Download file \\"%1$s\\"":["Telecargar lo fichièr « %1$s »"],"Edit":["Editar"],"Retract":["Tirar"],"Message versions":["Versions del messatge"],"Retry":["Tornar ensajar"],"Uploading file:":["MandadÃs de fichièr :"],"%1$s has removed this message":["%1$s a suprimit aqueste messatge"],"This message has been edited":["Aqueste messatge es estat modificat"],"Show more":["Ne veire mai"],"No message history available.":["Cap d’istoric de messatges pas disponible."],"Search results":["Resultats de recèrca"],"Search":["Cercar"],"Insert emojis":["Inserir un emoji"],"Send the message":["Enviar lo messatge"],"Start a call":["Aviar una sonada"],"Message characters remaining":["Caractèrs demorants pel messatge"],"Choose a file to send":["Causir un fichièr a enviar"],"Click to write as a normal (non-spoiler) message":["Clicatz per escriure un messatge normal (cap d’intriga)"],"Click to write your message as a spoiler":["Clicatz per escriure un messatge amb una intriga"],"The User\'s Profile Image":["Imatge de perfil de l’utilizaire"],"Trusted":["Fisable"],"Untrusted":["Pas fisable"],"OMEMO Fingerprints":["Detadas clau OMEMO"],"No OMEMO-enabled devices found":["Cap de periferic amb lo chiframent OMEMO pas trobat"],"Remove as contact":["Suprimir aqueste contacte"],"XMPP Address":["Adreça XMPP"],"Email":["Corrièl"],"Full Name":["Nom complèt"],"Nickname":["Escais-nom"],"Refresh":["Actualizar"],"Role":["Ròtle"],"URL":["URL"],"%1$s is typing":["%1$s es a escriure"],"%1$s has stopped typing":["%1$s a arrestat d’escriure"],"%1$s has gone away":["%1$s es passat absent"],"Remove messages":["Escafar los messatges"],"Close this chat":["Tampar aquesta fenèstra de discussion"],"Write in the third person":["Escriure a la tresena persona"],"Show this menu":["Mostrar aqueste menú"],"Hidden message":["Messatge rescondut"],"Message":["Messatge"],"Optional hint":["Indici opcional"],"You have unread messages":["Avètz de nòus messatges"],"Details":["Detalhs"],"See more information about this person":["Mostrar mai d’informacions tocant aqueste degun"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["Volètz vertadièrament suprimir aqueste messatge ?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Avètz un messatge pas enviat que serà perdut se contunhatz. O volètz vertadièrament ?"],"Are you sure you want to clear the messages from this conversation?":["Volètz vertadièrament escafar los messatges d’aquesta conversacion ?"],"%1$s has gone offline":["%1$s es passat fòra linha"],"%1$s is busy":["%1$s es ocupat"],"%1$s is online":["%1$s es en linha"],"Sorry, something went wrong while trying to refresh":["Quicòm s’es pas passat coma caliá pendent l’ensag d’actualizacion"],"Are you sure you want to remove this contact?":["Volètz vertadièrament levar aqueste contacte ?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["I a agut una error en ensajar de levar %1$s dels contactes."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Per melhorar las qualitats tecnicas, gardam vòstras donadas dins lo cache del navegador. Desmarcatz aquesta casa se sètz sus un ordenador public, o se volètz que vòstras donadas sián suprimidas quand vos desconnectatz. Es important que vos desconnectetz explicitament, autrament totas las donadas en cache serà n pas suprimidas. Remarcatz que quand l’ordenador utilizat es pas fisable, lo chiframent OMEMO es PAS disponible."],"This is a trusted device":["Aquò es un periferic fisable"],"Password":["Senhal"],"Create an account":["Crear un compte"],"Don\'t have a chat account?":["Avètz pas de compte ?"],"Log in":["Connexion"],"Disconnected":["Desconnectat"],"Click here to log in anonymously":["Clicatz aquà per vos connectar anonimament"],"Username":["Nom d’utilizaire"],"user@domain":["utilizaire@domeni"],"Please enter a valid XMPP address":["Volgatz picar una adreça XMPP valida"],"Chat Contacts":["Contactes de chat"],"Toggle chat":["Dobrir la discussion"],"Click to restore this chat":["Clicatz per mostrar aquesta discussion"],"Minimized":["Reduch"],"Minimize this groupchat":["Reduire aqueste grop de discussion"],"This user is a moderator.":["Aqueste utilizaire es moderator."],"This user can send messages in this groupchat.":["Aqueste utilizaire pòt enviar de messatge dins aquesta sala."],"This user can NOT send messages in this groupchat.":["Aqueste utilizaire pòt PAS enviar de messatge dins aquesta sala."],"Owner":["Proprietari"],"Admin":["Admin"],"Member":["Membre"],"Moderator":["Moderador"],"Visitor":["Visitaire"],"Click to mention %1$s in your message.":["Clicar per mencionar %1$s dins vòstre messatge."],"Participants":["Participants"],"This field is required":["Aqueste camp es requesit"],"Join":["Rejónher"],"Enter a new Groupchat":["Dintrar dins una nòva sala"],"name@conference.example.org":["nom@chat.exemple.org"],"Groupchat name":["Nom de la sala"],"Groupchat address":["Adreça de la sala"],"Invite":["Convidar"],"Invite someone to this groupchat":["Convidar qualqu’un al grop de discussion"],"user@example.org":["nom@exemple.org"],"Optional reason for the invitation":["Rason facultativa pel convit"],"Show groupchats":["Mostrar las salas"],"Server address":["Adreça del servidor"],"Show more information on this groupchat":["Mostrar mai d’informacions tocant aquesta sala"],"Query for Groupchats":["Cercar una sala"],"Description:":["Descripcion :"],"Groupchat Address (JID):":["Adreça de la sala (JID) :"],"Participants:":["Participants :"],"Features:":["Caracteristicas :"],"Requires authentication":["Demanda una autentificacion"],"Hidden":["Rescondut"],"Requires an invitation":["Demanda una invitacion"],"Moderated":["Moderat"],"Non-anonymous":["Pas anonime"],"Open":["Dobèrt"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semianonima"],"Temporary":["Temporari"],"Unmoderated":["Pas moderat"],"conference.example.org":["chat.exemple.org"],"No groupchats found":["Cap de sala pas trobada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Los moderators son d’utilizaires privilegiats que pòdon cambiar los ròtles dels autres utilizaires fòra los que son administrators o proprietaris d’afiliacions."],"The default role, implies that you can read and write messages.":["Lo ròtle per defaut significa que podètz legir e escriure de messatges."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Los visitaires son pas autorizats a escriure de messatges dins una conversacion multi-utilizaires moderada."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietari es l’afiliacion mai nauta. Los proprietaris pòdon modificar los ròtles e afiliacions de totes los autres utilizaires."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin es la segonda afiliacion mai nauta. Los administrators pòdon modificar los ròtles e afiliacions de totes los autres utilizaires fòra los proprietaris."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Per forabandir un utilizaire, donatz-li l’aficialicion d’ « exclús »."],"Change role":["Cambiar lo ròtle"],"New Role":["Ròtle novèl"],"Reason":["Rason"],"Change affiliation":["Cambiar l’afiliacion"],"New affiliation":["Afiliacion novèla"],"Affiliation":["Afiliacion"],"Moderator Tools":["Aisinas de moderador"],"No users with that affiliation found.":["Cap d’utilizaire pas trobat amb aquesta afiliacion."],"No users with that role found.":["Cap d’utilizaire pas trobat amb aqueste ròtle."],"Type here to filter the search results":[""],"Show users":["Mostrar los utilizaires"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Los ròtles son atribuits als utilizaires per lor donar o tirar unas capacitats dins una sala multi-utilizaires. Son atribuidas explicitament o implicitament amb una afiliacion. Un ròtle que ven pas d’una afiliacion, es pas que valid lo temps de la session de l’utilizaire."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Una afiliacion es un drech duradÃs qu’implica generalament a tal ròtle e que dòna de privilègis e de responsabilitats. Per exemple los administrators e los proprietaris an automaticament lo ròtle de moderator."],"Sorry, something went wrong while trying to set the affiliation":["Quicòm s’es pas passat coma caliá pendent la definicion de l’afiliacion"],"Affiliation changed":["Afiliacion cambiada"],"Role changed":["Ròtle cambiat"],"You\'re not allowed to make that change":["Avètz pas lo drech de cambiar aquò"],"Sorry, something went wrong while trying to set the role":["Quicòm s’es pas passat coma caliá pendent la definicion del ròtle"],"Topic":["Subjècte"],"Topic author":["Autor del subjècte"],"Groupchat address (JID)":["Adreça de la sala (JID)"],"Message archiving":["Conservacion dels messatges"],"Messages are archived on the server":["Los messatges son conservats al servidor"],"Description":["Descripcion"],"Features":["Caracteristicas"],"This groupchat is not publicly searchable":["Aquesta sala es pas publica per la recèrca"],"This groupchat is restricted to members only":["Aquesta sala es solament pels membres"],"Members only":["Membres solament"],"Participants entering this groupchat need to request permission to write":["Los participants d’aquesta conversacion devon aver la permission per escriure"],"Name":["Nom"],"This groupchat does not require a password upon entry":["Aquesta sala necessita pas cap de senhal per i dintrar"],"No password required":["Cap de senhal pas requesit"],"Not anonymous":["Pas anonima"],"All other groupchat participants can see your XMPP address":["Totes los autres ocupants d’aquesta sala pòdon veire vòstra adreça XMPP"],"Not moderated":["Pas moderat"],"Participants entering this groupchat can write right away":["Los participants d’aquesta conversacion pòdon escriure dirèctament"],"Online users":["Utilizaires en linha"],"Anyone can join this groupchat":["Tot lo monde pòt participar a la sala"],"This groupchat requires a password before entry":["Aquesta sala necessita un senhal per i dintrar"],"Password protected":["Protegida per senhal"],"Persistent":["Persistenta"],"This groupchat persists even if it\'s unoccupied":["Aquesta sala demòra encara que siá pas ocupada"],"Only moderators can see your XMPP address":["Sols los moderators pòdon veire vòstra adreça XMPP"],"This groupchat will disappear once the last person leaves":["Aquesta sala desapareis quand la darrièra persona s’en va"],"This groupchat is publicly searchable":["Aquesta sala se pòt trobar amb la recèrca"],"Groupchat info for %1$s":["Informacions tocant la sala %1$s"],"You\'re not allowed to send messages in this room":["Sètz pas autorizat a enviar de messatges a aquesta sala"],"The conversation has moved. Click below to enter.":["La conversacion a mudat. Clicatz çai-jos per dintrar."],"This groupchat no longer exists":["Aquesta sala existÃs pas mai"],"Enter groupchat":["Dintrar a la sala"],"Please choose your nickname":["Volgatz causir un escais-nom"],"This groupchat requires a password":["Aquesta sala requesÃs un senhal"],"Password: ":["Senhal : "],"Submit":["Sosmetre"],"%1$s has entered the groupchat":["%1$s a rejonch la sala"],"%1$s has left the groupchat":["%1$s a quitat la sala"],"%1$s is now a moderator":["%1$s es ara moderator"],"%1$s is no longer a moderator":["%1$s es pas mai moderator"],"%1$s has been given a voice":["%1$s pòt parlar ara"],"%1$s has been muted":["%1$s pòt pas mai parlar"],"Change user\'s affiliation to admin":["Cambiar lo ròtle de l’utilizaire en administrator"],"Ban user by changing their affiliation to outcast":["Forabandir un utilizaire en cambiar son afiliacion"],"Clear the chat area":["Escafar la zòna de conversacion"],"Change user role to participant":["Cambiar lo ròtle de l’utilizaire en participant"],"Remove this groupchat":["Suprimir aquesta sala"],"Kick user from groupchat":["Expulsar l’utilizaire d’aquesta sala"],"Write in 3rd person":["Escriure a la tresena persona"],"Grant membership to a user":["Permetre a l’utilizaire d’èsser membre"],"Opens up the moderator tools GUI":["DorbÃs las aisinas de moderacion"],"Remove user\'s ability to post messages":["Tirar lo drech d’enviar de messatges"],"Change your nickname":["Cambiar l’escais-nom"],"Grant moderator role to user":["Cambiar lo ròtle de l’utilizaire en moderator"],"Grant ownership of this groupchat":["Acordar la proprietat d’aquesta sala"],"Register your nickname":["Enregistrar l’escais-nom"],"Revoke the user\'s current affiliation":["Revocar l’afiliacion actuala de l’utilizaire"],"Set groupchat subject":["Definir lo subjècte de la sala"],"Set groupchat subject (alias for /subject)":["Definir lo subjècte de la sala (alias per /subject)"],"Allow muted user to post messages":["Permetre als utilizaires muts de publicar de messatges"],"Configure this groupchat":["Configurar d’aquesta sala"],"Hide topic":["Amagar subjècte"],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":["Quitar"],"Hide the list of participants":["Rescondre la lista dels participants"],"Forbidden: you do not have the necessary role in order to do that.":["Defendut : avètz pas lo ròtle necessari per far aquò."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Defendut : avètz pas l’afliacion que cal per aquò far."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Error : la comanda « %1$s » pren dos paramètres, l’escais-nom de l’utilizaire e la rason d’un biais opcional."],"Error: couldn\'t find a groupchat participant based on your arguments":["Error : impossible de trobar un participant dins la sala segon vòstres arguments"],"Error: found multiple groupchat participant based on your arguments":["Error : impossible de trobar mantun participants en utilizar vòstres paramètres"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["nom@exemple.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Vòstre escais-nom es « %1$s »"],"Error: invalid number of arguments":["Error : nombre d’arguments invalid"],"This action was done by %1$s.":["Aquesta accion es estada realizada per %1$s."],"The reason given is: \\"%1$s\\".":["La rason indicada es  : « %1$s »."],"Groupchats":["Salas"],"Add a new groupchat":["Ajustar una sala novèla"],"Query for groupchats":["Cercar una sala"],"Announcements":["Anóncias"],"Notification from %1$s":["Notificacion de %1$s"],"%1$s says":["%1$s ditz"],"has gone offline":["s’es desconnectat"],"has gone away":["es absent"],"is busy":["es ocupat"],"has come online":["s’es connectat"],"wants to be your contact":["vòl èsser vòstre contacte"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["A prepaus"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["Client XMPP %1$s liure %2$s que vos es fornit per %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Tradusètz %2$s dins vòstra lenga"],"Log out":["Desconnexion"],"Click to change your chat status":["Clicatz per cambiar vòstre estat"],"Show details about this chat client":["Mostrar mai d’informacion tocant aqueste client"],"Your avatar image":["Vòstre imatge d’avatar"],"Checkbox for selecting the following fingerprint":["Casa de marcar per seleccionar la detada OMEMO seguenta"],"Device without a fingerprint":["Periferic sens detada OMEMO"],"Other OMEMO-enabled devices":["Autres clients amb lo chiframent OMEMO activat"],"Checkbox to select fingerprints of all other OMEMO devices":["Casa de marcar per dire de seleccionar las detada OMEMA de totes los periferics"],"Remove checked devices and close":["Suprimir los clients OMEMO seleccionats e tampar"],"Select all":["O seleccionar tot"],"This device\'s OMEMO fingerprint":["Detada OMEMO d’aqueste client"],"Generate new keys and fingerprint":["Generar de nòvas claus e detadas"],"Your Profile":["Vòstre perfil"],"XMPP Address (JID)":["Adreça XMPP (JID)"],"Save and close":["Enregistrar e tampar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Utilizatz una virgula per dire de separar los ròtles. Vòstres ròtles son mostrats a costat de vòstre nom dins los messatges."],"OMEMO":["OMEMO"],"Sorry, an error happened while trying to save your profile data.":["O planhèm, quicòm a trucat pendent la salvagarda del perfil."],"You can check your browser\'s developer console for any error output.":["Podètz verificar totas las errors dins la consòla de desvolopament del navegador."],"Away":["Absent"],"Busy":["Ocupat"],"Custom status":["Estat personal"],"Offline":["Desconnectat"],"Online":["En linha"],"Away for long":["Absent de longa"],"Change chat status":["cambiar vòstre estat de chat"],"Personal status message":["Messatge d’estat personal"],"I am %1$s":["Soi %1$s"],"Are you sure you want to log out?":["Volètz vertadièrament vos desconnectar ?"],"online":["en linha"],"busy":["ocupat"],"away for long":["absent de longa"],"away":["absent"],"offline":["desconnectat"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s sembla pas aver un client que siá compatible amb OMEMO. Lo chiframent serà pas mai possible dins aqueste grop de discussion."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Utilizacion impossibla del chiframent del cap a la fin perque %1$s utiliza un client qu’es pas compatible amb OMEMO."],"Messages are being sent in plaintext":["Los messatges son enviats en clar"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["O planhèm, impossible d’enviar un messatge chifrat a %1$s perque requerÃs que siatz abonat a sas mesas a jorn de preséncia per dire de veire las informacions OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["O planhèm, impossible d’enviar un messatge chifrat perque lo servidor alonhat de %1$s es pas disponible"],"Unable to send an encrypted message due to an unexpected error.":["MandadÃs impossible d’un messatge chifrat a causa d’una error imprevista."],"Sorry, an error occurred while trying to remove the devices.":["O planhèm, una error s’es producha en ensajar de suprimir los clients OMEMO."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Volètz vertadièrament generar de nòvas claus OMEMO ? Aquò tirarà las ancianas claus e totes los messatges ja deschifrats poirà n pas mai èsser deschifrats sus aqueste periferic."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["O planhèm, impossible de trobat un periferic al qual enviar un messatge chifrat amb OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Aquò es un messatge chifrat amb OMEMO, que vòstre client sembla pas prendre en carga. Per mai d’informacions, anatz veire https://conversations.im/omemo"]," e.g. conversejs.org":[" per exemple conversejs.org"],"Fetch registration form":["Recuperacion del formulari d’enregistrament"],"Tip: A list of public XMPP providers is available":["Astúcia : una lista publica de provesidors XMPP es disponibla"],"here":["aquÃ"],"Sorry, we\'re unable to connect to your chosen provider.":["Avèm pas pogut vos connectar a vòstre provesidor."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["O planhèm, lo provesidor es pas compatibla amb l’enregistrament de compte en linha. Mercés d’ensajar amb un autre provesidor."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Quicòm a trucat pendent l’establiment de la connexion amb « %1$s ». Es segur qu’existÃs ?"],"Now logging you in":["Connexion"],"Registered successfully":["Corrèctament enregistrat"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Lo provesidor a regetat vòstra demanda d’inscripcion. Mercés de verificar que las donadas qu’avètz picadas sián corrèctas."],"Leave this groupchat":["Quitar aquesta sala"],"Click to toggle the list of open groupchats":["Clicar per dobrir la lista de las salas dobèrtas"],"Open Groupchats":["Salas dobèrtas"],"Are you sure you want to leave the groupchat %1$s?":["Volètz vertadièrament quitar la sala « %1$s » ?"],"Add":["Ajustar"],"Add a Contact":["Ajustar un contacte"],"This contact is busy":["Aqueste contacte es ocupat"],"This contact is online":["Aqueste contacte es connectat"],"This contact is offline":["Aqueste contacte es desconnectat"],"This contact is unavailable":["Aqueste contacte es pas disponible"],"This contact is away for an extended period":["Aqueste contacte es absent de longa"],"This contact is away":["Aqueste contacte es absent"],"Contact name":["Nom del contacte"],"Optional nickname":["Escais-nom opcional"],"Sorry, could not find a contact with that name":["Impossible de trobar un contacte amb aqueste nom"],"This contact has already been added":["Aqueste contacte es ja ajustat"],"Filter":["Filtrar"],"Filter by contact name":["Filtrar per nom de contacte"],"Filter by group name":["Filtrar per nom de grop"],"Filter by status":["Filtrar per estat"],"Any":["Cap"],"Unread":["Pas legit"],"Chatty":["Charraire"],"Extended Away":["Absent de longa"],"Click to remove %1$s as a contact":["Clicar per levar %1$s dels contactes"],"Click to accept the contact request from %1$s":["Clicatz per acceptar la demanda d’apondon de %1$s"],"Click to decline the contact request from %1$s":["Clicatz per regetar la demanda d’apondon de %1$s"],"Are you sure you want to decline this contact request?":["Volètz vertadièrament regetar aquesta demanda d’apondon als contactes ?"],"Contacts":["Contactes"],"Add a contact":["Ajustar un contacte"],"Re-sync your contacts":["Tornar sincronizar vòstres contactes"]}}}')}}]); //# sourceMappingURL=oc-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/pl-LC_MESSAGES-converse-po.js b/src/conversejs/locales/pl-LC_MESSAGES-converse-po.js index 2f2127b1bc95e527b9f546e550e311e8a2b7685d..3423626bcbe7b02ed2078874f84ad77926bc352f 100644 --- a/src/conversejs/locales/pl-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/pl-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{444:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"pl"},"Create your account":["Utwórz wÅ‚asne konto"],"Please enter the XMPP provider to register with:":["ProszÄ™ wprowadzić dostawcÄ™ XMPP, aby zarejestrować siÄ™:"],"Already have a chat account?":["Masz już konto na czacie?"],"Log in here":["Zaloguj siÄ™ tutaj"],"Account Registration:":["Rejestracja Konta:"],"Register":["Zarejestruj siÄ™"],"Choose a different provider":["Wybierz innego dostawcÄ™"],"Hold tight, we\'re fetching the registration form…":["Czekaj, pobieram formularz rejestracyjny…"],"Cancel":["Anuluj"],"The connection has dropped, attempting to reconnect.":["PoÅ‚Ä…czenie zostaÅ‚o utracone, próbujÄ™ siÄ™ poÅ‚Ä…czyć ponownie."],"An error occurred while connecting to the chat server.":["WystÄ…piÅ‚ bÅ‚Ä…d w czasie Å‚Ä…czenia siÄ™ z serwerem."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Problem z poÅ‚Ä…czeniem do serwera XMPP w domenie: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Serwer XMPP nie oferuje wspieranego mechanizmu uwierzytelniania"],"Sorry, could not determine upload URL.":["Przepraszamy, nie można ustalić adresu URL przesyÅ‚ania."],"Sorry, could not determine file upload URL.":["Przepraszam, nie udaÅ‚o siÄ™ ustalić adresu URL wysyÅ‚ania plików."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Niestety nie udaÅ‚o siÄ™ przesÅ‚ać pliku. Odpowiedź Twojego serwera: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Niestety nie udaÅ‚o siÄ™ przesÅ‚ać pliku."],"Sorry, looks like file upload is not supported by your server.":["Przepraszamy, wyglÄ…da na to, że przesyÅ‚anie plików nie jest obsÅ‚ugiwane przez serwer."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Rozmiar Twojego pliku, %1$s, przekracza maksymalny dozwolony przez Twój serwer, który wynosi %2$s."],"Smileys and emotions":["Emotikony i emocje"],"People":["Ludzie"],"Activities":["DziaÅ‚ania"],"Travel":["Podróż"],"Objects":["Obiekty"],"Animals and nature":["ZwierzÄ™ta i przyroda"],"Food and drink":["Å»ywność i napoje"],"Symbols":["Symbole"],"Flags":["Flagi"],"Stickers":["Naklejki"],"This groupchat is not anonymous":["Ten czat grupowy nie jest anonimowy"],"This groupchat now shows unavailable members":["Ten czat grupowy pokazuje teraz niedostÄ™pnych czÅ‚onków"],"This groupchat does not show unavailable members":["Ten czat grupowy nie wyÅ›wietla niedostÄ™pnych czÅ‚onków"],"The groupchat configuration has changed":["Konfiguracja czatu grupowego ulegÅ‚a zmianie"],"Groupchat logging is now enabled":["Logowanie na czacie grupowym jest teraz wÅ‚Ä…czone"],"Groupchat logging is now disabled":["Rejestrowanie czatu grupowego jest teraz wyÅ‚Ä…czone"],"This groupchat is now no longer anonymous":["Ten czat grupowy nie jest już anonimowy"],"This groupchat is now semi-anonymous":["Ten czat grupowy jest teraz częściowo anonimowy"],"This groupchat is now fully-anonymous":["Ten czat grupowy jest teraz w peÅ‚ni anonimowy"],"A new groupchat has been created":["Utworzono nowy czat grupowy"],"Your nickname has been automatically set to %1$s":["Twój pseudonim zostaÅ‚ automatycznie ustawiony na %1$s"],"Your nickname has been changed to %1$s":["Twój pseudonim zostaÅ‚ zmieniony na %1$s"],"You have been banned from this groupchat":["ZostaÅ‚eÅ› zablokowany na tym czacie grupowym"],"You have been kicked from this groupchat":["ZostaÅ‚eÅ› wyrzucony z tego czatu grupowego"],"You have been removed from this groupchat because of an affiliation change":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego z powodu zmiany przynależnoÅ›ci"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego, ponieważ zmieniÅ‚ siÄ™ on na czat tylko dla czÅ‚onków i nie jesteÅ› czÅ‚onkiem"],"You have been removed from this groupchat because the service hosting it is being shut down":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego, ponieważ usÅ‚uga hostingowa jest zamykana"],"Your message was not delivered because you weren\'t allowed to send it.":["Twoja wiadomość nie zostaÅ‚a dostarczona, ponieważ nie możesz jej wysÅ‚ać."],"Your message was not delivered because you\'re not present in the groupchat.":["Twoja wiadomość nie zostaÅ‚a dostarczona, ponieważ nie jesteÅ› obecny na czacie grupowym."],"You\'re not allowed to register yourself in this groupchat.":["Nie możesz siÄ™ zarejestrować w tym czacie grupowym."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nie możesz siÄ™ zarejestrować w tym czacie grupowym, ponieważ jest on tylko dla czÅ‚onków."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nie można zarejestrować Twojego pseudonimu w tym czacie grupowym, nie obsÅ‚uguje rejestracji."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nie można zarejestrować Twojego pseudonimu w tym czacie grupowym, dostarczono nieprawidÅ‚owy formularz danych."],"Topic set by %1$s":["Temat ustawiony przez %1$s"],"Topic cleared by %1$s":["Temat wyczyszczony przez %1$s"],"%1$s has been banned":["%1$s zostaÅ‚ zbanowany"],"%1$s\'s nickname has changed":["%1$s zmieniÅ‚ pseudonim"],"%1$s has been kicked out":["%1$s zostaÅ‚ wyrzucony"],"%1$s has been removed because of an affiliation change":["%1$s zostaÅ‚ usuniÄ™ty z powodu zmiany przynależnoÅ›ci"],"%1$s has been removed for not being a member":["%1$s zostaÅ‚ usuniÄ™ty z powodu braku czÅ‚onkostwa"],"%1$s is no longer an admin of this groupchat":["%1$s nie jest już administratorem tego pokoju"],"%1$s is no longer an owner of this groupchat":["%1$s nie jest już wÅ‚aÅ›cicielem tego pokoju"],"%1$s is no longer banned from this groupchat":["%1$s nie jest już zablokowany w tym pokoju"],"%1$s is no longer a member of this groupchat":["%1$s nie jest już czÅ‚onkiem tej rozmowy grupowej"],"%1$s is now a member of this groupchat":["%1$s jest teraz czÅ‚onkiem tej rozmowy grupowej"],"%1$s is now an %2$s of this groupchat":["%1$s zostaÅ‚ %2$s tego pokoju"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Pseudonim, który wybraÅ‚eÅ› jest zastrzeżony lub obecnie używany, wybierz inny."],"Password incorrect":["NieprawidÅ‚owe hasÅ‚o"],"You are not on the member list of this groupchat.":["Nie jesteÅ› na liÅ›cie czÅ‚onków tej rozmowy grupowej."],"You have been banned from this groupchat.":["ZostaÅ‚eÅ› zablokowany na tym czacie grupowym"],"You are not allowed to create new groupchats.":["Nie wolno ci tworzyć nowych rozmów grupowych."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Twój pseudonim nie jest zgodny z zasadami tej rozmowy grupowej."],"This groupchat does not (yet) exist.":["Ta rozmowa grupowa nie istnieje (jeszcze)."],"This groupchat has reached its maximum number of participants.":["Ta rozmowa grupowa osiÄ…gnęła swojÄ… maksymalnÄ… liczbÄ™ uczestników."],"Remote server not found":["Nie znaleziono zdalnego serwera"],"The explanation given is: \\"%1$s\\".":["Podane wyjaÅ›nienie to: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s zaprosiÅ‚ ciÄ™ do udziaÅ‚u w rozmowie grupowej: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s zaprosiÅ‚ ciÄ™ do udziaÅ‚u w rozmowie grupowej: %2$s, i zostawiÅ‚ nastÄ™pujÄ…cy powód: \\"%3$s\\""],"Error":["BÅ‚Ä…d"],"Sorry, something went wrong while trying to save your bookmark.":["Przepraszamy, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby zapisania zakÅ‚adki."],"Timeout Error":["BÅ‚Ä…d limitu czasu"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Serwer nie zwróciÅ‚ zakÅ‚adek w wyznaczonym czasie. Możesz przeÅ‚adować stronÄ™, aby poprosić o nie ponownie."],"My contacts":["Moje kontakty"],"Pending contacts":["OczekujÄ…ce kontakty"],"Contact requests":["ProÅ›by o kontakt"],"Ungrouped":["Nie zgrupowane"],"New messages":["Nowe wiadomoÅ›ci"],"Sorry, there was an error while trying to add %1$s as a contact.":["Przepraszam, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby dodania %1$s jako kontaktu."],"This client does not allow presence subscriptions":["Ten klient nie zezwala na subskrypcje obecnoÅ›ci"],"Click to hide these contacts":["Kliknij, aby ukryć te kontakty"],"Unbookmark this groupchat":["UsuÅ„ zakÅ‚adkÄ™ do tego pokoju"],"Click to open this groupchat":["Kliknij, aby otworzyć ten czat grupowy"],"Click to toggle the bookmarks list":["Kliknij, aby przeÅ‚Ä…czyć listÄ™ zakÅ‚adek"],"Bookmarks":["ZakÅ‚adki"],"Bookmark this groupchat":["Dodaj zakÅ‚adkÄ™ tego pokoju"],"Would you like this groupchat to be automatically joined upon startup?":["Czy chcesz automatycznie doÅ‚Ä…czać do tej grupy podczas startu ?"],"The name for this bookmark:":["Nazwa dla tej zakÅ‚adki:"],"What should your nickname for this groupchat be?":["Jaki powinien być twój pseudonim dla tej rozmowy grupowej?"],"Save":["Zapisz"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Czy na pewno chcesz usunąć zakÅ‚adkÄ™ \\"%1$s\\"?"],"Close":["Zamknij"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Pobierz plik audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Pobierz plik \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Wersja wiadomoÅ›ci"],"Retry":[""],"Uploading file:":["PrzesyÅ‚any plik:"],"%1$s has removed this message":["%1$s usunÄ…Å‚ tÄ™ wiadomość"],"This message has been edited":["Ta wiadomość zostaÅ‚a zmodyfikowana"],"Show more":["Pokaż wiÄ™cej"],"No message history available.":["Historia wiadomoÅ›ci niedostÄ™pna."],"Search results":["Wyniki wyszukiwania"],"Search":["Szukaj"],"Insert emojis":["Wstaw emotkÄ™"],"Send the message":["WyÅ›lij wiadomość"],"Start a call":["Rozpocznij rozmowÄ™"],"Message characters remaining":["PozostaÅ‚e znaki wiadomoÅ›ci"],"Choose a file to send":["Wybierz plik do wysÅ‚ania"],"Click to write as a normal (non-spoiler) message":["Kliknij, aby napisać jako zwykÅ‚Ä… wiadomość (bez spoilera)"],"Click to write your message as a spoiler":["Kliknij, aby napisać wiadomość jako spoiler"],"The User\'s Profile Image":["ZdjÄ™cie profilowe użytkownika"],"Trusted":["Zaufany"],"Untrusted":["Niezaufany"],"OMEMO Fingerprints":["Odciski palców OMEMO"],"Remove as contact":["UsuÅ„ jako kontakt"],"XMPP Address":["Adres XMPP"],"Email":["Email"],"Full Name":["PeÅ‚na nazwa"],"Nickname":["Nick"],"Refresh":["OdÅ›wież"],"Role":["Rola"],"URL":["Adres URL"],"%1$s is typing":["%1$s pisze"],"%1$s has stopped typing":["%1$s przestaÅ‚ pisać"],"%1$s has gone away":["%1$s odszedÅ‚ od klawiatury"],"Remove messages":["UsuÅ„ wiadomoÅ›ci"],"Close this chat":["Zamknij ten czat"],"Write in the third person":["Napisz w trzeciej osobie"],"Show this menu":["Pokaż to menu"],"Hidden message":["Ukryta wiadomość"],"Message":["Wiadomość"],"Optional hint":["Opcjonalna wskazówka"],"You have unread messages":["Masz nieprzeczytane wiadomoÅ›ci"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["BÄ…dź Å›wiadomy, że inni klienci (i serwery) XMPP/Jabber mogÄ… jeszcze nie obsÅ‚ugiwać zwijania i że ta wiadomość może nie być wszÄ™dzie usuwana."],"Are you sure you want to retract this message?":["JesteÅ› pewien, że chcesz wycofać tÄ™ wiadomość?"],"Confirm":["Potwierdź"],"You have an unsent message which will be lost if you continue. Are you sure?":["Masz niewysÅ‚anÄ… wiadomość, która zostanie utracona, jeÅ›li bÄ™dziesz kontynuować. JesteÅ› pewien?"],"Are you sure you want to clear the messages from this conversation?":["JesteÅ› pewien, że chcesz wyczyÅ›cić wiadomoÅ›ci z tej rozmowy?"],"%1$s has gone offline":["%1$s rozÅ‚Ä…czyÅ‚ siÄ™"],"%1$s is busy":["%1$s jest zajÄ™ty"],"%1$s is online":["%1$s jest dostÄ™pny"],"Sorry, something went wrong while trying to refresh":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby odÅ›wieżenia"],"Are you sure you want to remove this contact?":["JesteÅ› pewien, że chcesz usunąć ten kontakt?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Przepraszam, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby usuniÄ™cia %1$s jako kontaktu."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Aby poprawić wydajność, przechowujemy dane użytkownika w pamiÄ™ci podrÄ™cznej tej przeglÄ…darki. UsuÅ„ zaznaczenie tego pola, jeÅ›li jest to komputer publiczny lub jeÅ›li chcesz, aby Twoje dane zostaÅ‚y usuniÄ™te po wylogowaniu siÄ™. Ważne jest, aby wyraźnie siÄ™ wylogować, w przeciwnym razie nie wszystkie dane zbuforowane mogÄ… zostać usuniÄ™te. Należy pamiÄ™tać, że w przypadku korzystania z niezaufanego urzÄ…dzenia, szyfrowanie OMEMO NIE jest dostÄ™pne."],"This is a trusted device":["To jest zaufane urzÄ…dzenie"],"Create an account":["Utwórz konto"],"Don\'t have a chat account?":["Nie masz konta na czacie?"],"Log in":["Zaloguj siÄ™"],"Disconnected":["RozÅ‚Ä…czono"],"Click here to log in anonymously":["Kliknij tutaj aby zalogować siÄ™ anonimowo"],"Username":["Nazwa użytkownika"],"user@domain":["użytkownik@domena"],"Please enter a valid XMPP address":["ProszÄ™ wpisać prawidÅ‚owy adres XMPP"],"Chat Contacts":["Kontakty czatu"],"Toggle chat":["PrzeÅ‚Ä…cz czat"],"Click to restore this chat":["Kliknij, aby przywrócić ten czat"],"Minimized":["Zminimalizowane"],"This field is required":["To pole jest wymagane"],"Join":["DoÅ‚Ä…cz"],"Enter a new Groupchat":["Wejdź do pokoju"],"name@conference.example.org":["nazwa@konferencja.domena.pl"],"Groupchat name":["Nazwa czatu grupowego"],"Groupchat address":["Adres pokoju"],"Invite":["ZaproÅ›"],"Show groupchats":["Pokaż pokoje"],"Server address":["Adres serwera"],"Show more information on this groupchat":["Pokaż wiÄ™cej informacji na temat tego czatu grupowego"],"Query for Groupchats":["Wyszukaj pokoje"],"Description:":["Opis:"],"Groupchat Address (JID):":["Nazwa pokoju (JID):"],"Participants:":["Uczestnicy:"],"Features:":["WÅ‚aÅ›ciwoÅ›ci:"],"Requires authentication":["Wymaga uwierzytelnienia"],"Hidden":["Ukryty"],"Requires an invitation":["Wymaga zaproszenia"],"Moderated":["Moderowany"],"Non-anonymous":["Nieanonimowy"],"Open":["Otwarte"],"Permanent":["StaÅ‚y"],"Public":["Publiczny"],"Semi-anonymous":["Częściowo anonimowy"],"Temporary":["Tymczasowe"],"Unmoderated":["Niemoderowane"],"conference.example.org":["conference.domena.pl"],"No groupchats found":["Nie znaleziono pokojów"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatorzy sÄ… uprzywilejowanymi użytkownikami, którzy mogÄ… zmieniać role innych użytkowników (z wyjÄ…tkiem tych z uprawnieniami administratora lub wÅ‚aÅ›ciciela)."],"The default role, implies that you can read and write messages.":["DomyÅ›lna rola, oznacza, że możesz czytać i pisać wiadomoÅ›ci."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["OdwiedzajÄ…cy nie mogÄ… pisać wiadomoÅ›ci w moderowanym czacie dla wielu użytkowników."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["WÅ‚aÅ›ciciel to najwyższa przynależność. WÅ‚aÅ›ciciele mogÄ… modyfikować role i Afiliacje wszystkich innych użytkowników."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin jest drugÄ… co do wielkoÅ›ci afiliacjÄ…. Administratorzy mogÄ… modyfikować role i przynależność wszystkich innych użytkowników oprócz wÅ‚aÅ›cicieli."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Aby zablokować użytkownika, dajesz mu przynależność \\"outcast\\"."],"Change role":["Zmiana roli"],"New Role":["Nowa rola"],"Reason":["Powód"],"Change affiliation":["ZmieÅ„ przynależność"],"New affiliation":["Nowa przynależność"],"Affiliation":["Przynależność"],"Moderator Tools":["NarzÄ™dzia moderatora"],"No users with that affiliation found.":["Nie znaleziono użytkowników z tÄ… przynależnoÅ›ciÄ…."],"No users with that role found.":["Nie znaleziono użytkowników z tÄ… rolÄ…."],"Type here to filter the search results":[""],"Show users":["Pokaż użytkowników"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Role sÄ… przypisane do użytkowników, aby przyznać lub odmówić im pewnych umiejÄ™tnoÅ›ci w czacie dla wielu użytkowników. SÄ… one przypisane w sposób wyraźny lub domyÅ›lny jako część przynależnoÅ›ci. Rola, która nie jest zwiÄ…zana z przynależnoÅ›ciÄ…, jest ważna tylko na czas trwania sesji użytkownika."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Przynależność jest dÅ‚ugotrwaÅ‚ym uprawnieniem, które zazwyczaj wiąże siÄ™ z pewnÄ… rolÄ… i które przyznaje przywileje i obowiÄ…zki. Na przykÅ‚ad administratorzy i wÅ‚aÅ›ciciele majÄ… automatycznie rolÄ™ moderatora."],"Sorry, something went wrong while trying to set the affiliation":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby ustalenia przynależnoÅ›ci"],"Affiliation changed":["Zmiana przynależnoÅ›ci"],"Role changed":["Zmieniono rolÄ™"],"You\'re not allowed to make that change":["Nie możesz dokonać tej zmiany"],"Sorry, something went wrong while trying to set the role":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby ustawienia roli"],"Topic":["Temat"],"Topic author":["Autor tematu"],"Groupchat address (JID)":["Nazwa czatu grupowego (JID)"],"Message archiving":["Archiwizowanie wiadomoÅ›ci"],"Messages are archived on the server":["WiadomoÅ›ci sÄ… archiwizowane na serwerze"],"Description":["Opis"],"Features":["MożliwoÅ›ci"],"This groupchat is not publicly searchable":["Ten czat grupowy nie jest publicznie dostÄ™pny"],"This groupchat is restricted to members only":["Ta rozmowa grupowa jest ograniczona tylko do czÅ‚onków"],"Members only":["Tylko dla czÅ‚onków"],"Participants entering this groupchat need to request permission to write":["Uczestnicy wchodzÄ…cy w ten czat grupowy muszÄ… poprosić o pozwolenie na pisanie"],"Name":["Nazwa"],"This groupchat does not require a password upon entry":["Ten czat grupowy nie wymaga hasÅ‚a przy wejÅ›ciu"],"No password required":["HasÅ‚o nie jest wymagane"],"Not anonymous":["Nie anonimowy"],"All other groupchat participants can see your XMPP address":["Wszyscy uczestnicy grupowego czatu widzÄ… TwojÄ… nazwÄ™ użytkownika XMPP"],"Not moderated":["Nie moderowany"],"Participants entering this groupchat can write right away":["Uczestnicy wchodzÄ…cy w ten czat grupowy mogÄ… pisać od razu"],"Online users":["DostÄ™pni użytkownicy"],"Anyone can join this groupchat":["Każdy może doÅ‚Ä…czyć do tego czatu grupowego"],"This groupchat requires a password before entry":["Pokój rozmów wymaga podania hasÅ‚a"],"Password protected":["Chronione hasÅ‚em"],"Persistent":["TrwaÅ‚y"],"This groupchat persists even if it\'s unoccupied":["Ten pokój przetrwa nawet bez użytkowników"],"Only moderators can see your XMPP address":["Tylko moderatorzy mogÄ… zobaczyć Twój adres XMPP"],"This groupchat will disappear once the last person leaves":["Ten pokój zniknie po opuszczeniu go przez ostatniego użytkownika"],"This groupchat is publicly searchable":["Ten czat grupowy jest publicznie dostÄ™pny"],"Groupchat info for %1$s":["Informacje o czacie grupowym dla %1$s"],"You\'re not allowed to send messages in this room":["Nie możesz wysyÅ‚ać wiadomoÅ›ci w tym pokoju"],"The conversation has moved. Click below to enter.":["Rozmowa zostaÅ‚a przeniesiona. Kliknij poniżej aby wejść."],"This groupchat no longer exists":["Ten czat grupowy już nie istnieje"],"Enter groupchat":["Wejdź do pokoju"],"Choose a nickname to enter":["Wybierz pseudonim, który chcesz wprowadzić"],"Please choose your nickname":["ProszÄ™ wybrać swój pseudonim"],"This groupchat requires a password":["WstÄ™p do pokoju wymaga podania hasÅ‚a"],"Password: ":["HasÅ‚o: "],"Submit":["WyÅ›lij"],"This user is a moderator.":["Ten użytkownik jest moderatorem."],"This user can send messages in this groupchat.":["Ten użytkownik może wysyÅ‚ać wiadomoÅ›ci w tym pokoju."],"This user can NOT send messages in this groupchat.":["Ten czÅ‚owiek NIE może rozmawiać w tym pokoju."],"Owner":["WÅ‚aÅ›ciciel"],"Admin":["Administrator"],"Member":["CzÅ‚onek"],"Moderator":["Moderator"],"Visitor":["Gość"],"Click to mention %1$s in your message.":["Kliknij aby wspomnieć o %1$s we wiadomoÅ›ci."],"Participants":["Uczestnicy"],"%1$s has entered the groupchat":["%1$s wszedÅ‚ do pokoju"],"%1$s has left the groupchat":["%1$s opuÅ›ciÅ‚ pokój"],"%1$s is now a moderator":["%1$s zostaÅ‚ moderatorem"],"%1$s is no longer a moderator":["%1$s nie jest już moderatorem"],"%1$s has been given a voice":["%1$s dostaÅ‚ gÅ‚os"],"%1$s has been muted":["%1$s zostaÅ‚ wyciszony"],"Change user\'s affiliation to admin":["Zmiana przynależnoÅ›ci użytkownika do administratora"],"Ban user by changing their affiliation to outcast":["Zablokuj użytkownika, zmieniajÄ…c ich przynależność do Outcast"],"Clear the chat area":["Wyczyść obszar czatu"],"Close this groupchat":["Zamknij ten pokój"],"Change user role to participant":["Zmiana roli użytkownika na uczestnika"],"Remove this groupchat":["UsuÅ„ ten czat grupowy"],"Kick user from groupchat":["Wyrzuć użytkownika z czatu grupowego"],"Write in 3rd person":["Pisz w trzeciej osobie"],"Grant membership to a user":["Przyznanie czÅ‚onkostwa użytkownikowi"],"Opens up the moderator tools GUI":["Otwiera narzÄ™dzia moderatora GUI"],"Remove user\'s ability to post messages":["UsuniÄ™cie możliwoÅ›ci wysyÅ‚ania wiadomoÅ›ci przez użytkownika"],"Change your nickname":["ZmieÅ„ swój pseudonim"],"Grant moderator role to user":["Przyznaj rolÄ™ moderatora użytkownikowi"],"Grant ownership of this groupchat":["UczyÅ„ wÅ‚aÅ›cicielem pokoju"],"Register your nickname":["Zarejestruj swój nick"],"Revoke the user\'s current affiliation":["Wycofanie aktualnej przynależnoÅ›ci użytkownika"],"Set groupchat subject":["Ustaw temat rozmowy grupowej"],"Set groupchat subject (alias for /subject)":["Ustaw temat rozmowy (alias dla /subject)"],"Allow muted user to post messages":["Pozwól uciszonemu czÅ‚owiekowi na rozmowÄ™"],"You are about to retract this message.":["Masz zamiar wycofać tÄ™ wiadomość."],"You may optionally include a message, explaining the reason for the retraction.":["Opcjonalnie możesz doÅ‚Ä…czyć wiadomość wyjaÅ›niajÄ…cÄ… powód zwiniÄ™cia."],"Message Retraction":["Wycofanie komunikatu"],"Optional reason":["Opcjonalny powód"],"A timeout occurred while trying to retract the message":["Podczas próby cofniÄ™cia komunikatu pojawiÅ‚ siÄ™ limit czasu"],"Sorry, you\'re not allowed to retract this message.":["Przepraszam, nie wolno ci wycofać tej wiadomoÅ›ci."],"Configure this groupchat":["Skonfiguruj ten pokój"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Ukrycie listy uczestników"],"Forbidden: you do not have the necessary role in order to do that.":["Zakazane: nie masz do tego niezbÄ™dnej roli."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Zabronione: nie masz dostÄ™pu ze wzglÄ™du na brak przynależnoÅ›ci.."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["BÅ‚Ä…d: polecenie \\"%1$s\\" przyjmuje dwa argumenty: pseudonim i opcjonalnie powód."],"Error: couldn\'t find a groupchat participant based on your arguments":["BÅ‚Ä…d: nie udaÅ‚o siÄ™ znaleźć uczestnika czatu grupowego na podstawie twoich argumentów"],"Error: found multiple groupchat participant based on your arguments":["BÅ‚Ä…d: znaleziono wielu uczestników czatu grupowego na podstawie twoich argumentów"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["np. użytkownik@przykÅ‚adowa-domena.pl"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Twój pseudonim to \\"%1$s\\""],"Error: invalid number of arguments":["BÅ‚Ä…d: nieprawidÅ‚owa liczba argumentów"],"This action was done by %1$s.":["Ta akcja zostaÅ‚a wykonana przez %1$s."],"The reason given is: \\"%1$s\\".":["Podany powód to: \\"%1$s\\"."],"Groupchats":["Rozmowy grupowe"],"Add a new groupchat":["Dodaj nowÄ… grupÄ™"],"Query for groupchats":["Wyszukaj pokoje"],"Announcements":["OgÅ‚oszenia"],"Notification from %1$s":["Powiadomienie od %1$s"],"%1$s says":["%1$s powiedziaÅ‚"],"has gone offline":["wyÅ‚Ä…czyÅ‚ siÄ™"],"has gone away":["uciekÅ‚"],"is busy":["zajÄ™ty"],"has come online":["poÅ‚Ä…czyÅ‚ siÄ™"],"wants to be your contact":["chce być twoim kontaktem"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Informacje"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s klient czatu XMPP dostarczony do Ciebie przez %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s PrzetÅ‚umaczyć %2$s na swój wÅ‚asny jÄ™zyk"],"Log out":["Wyloguj siÄ™"],"Click to change your chat status":["Kliknij aby zmienić status rozmowy"],"Show details about this chat client":["Pokaż szczegóły na temat tego klienta czatu"],"Your avatar image":["Twój awatar"],"Checkbox for selecting the following fingerprint":["Pole wyboru dla wybrania nastÄ™pujÄ…cego odcisku palca"],"Device without a fingerprint":["UrzÄ…dzenie bez odcisku palca"],"Other OMEMO-enabled devices":["PozostaÅ‚e urzÄ…dzenia z funkcjÄ… OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Zaznacz pole wyboru, aby wybrać odciski palców wszystkich innych urzÄ…dzeÅ„ OMEMO"],"Remove checked devices and close":["UsuÅ„ sprawdzone urzÄ…dzenia i zamknij"],"Select all":["Wybierz wszystkie"],"This device\'s OMEMO fingerprint":["Odcisk palca OMEMO tego urzÄ…dzenia"],"Generate new keys and fingerprint":["Wygeneruj nowe klucze i odcisk palca"],"Your Profile":["Twój profil"],"XMPP Address (JID)":["Adres XMPP (JID)"],"Save and close":["Zapisz i Zamknij"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Użyj przecinków, aby rozdzielić wiele ról. Twoje role sÄ… wyÅ›wietlane obok Twojego imienia i nazwiska w wiadomoÅ›ciach czatu."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["WystÄ…piÅ‚ bÅ‚Ä…d w trakcie próby zapisania Twoich danych profilowych."],"You can check your browser\'s developer console for any error output.":["Możesz sprawdzić konsolÄ™ dewelopera przeglÄ…darki pod kÄ…tem bÅ‚Ä™dów."],"Away":["Nieobecny"],"Busy":["ZajÄ™ty"],"Custom status":["WÅ‚asny status"],"Offline":["RozÅ‚Ä…czony"],"Online":["DostÄ™pny"],"Away for long":["DÅ‚użej nieobecny"],"Change chat status":["ZmieÅ„ status czatu"],"Personal status message":["Osobisty komunikat o statusie"],"I am %1$s":["Jestem %1$s"],"Are you sure you want to log out?":["JesteÅ› pewien, że chcesz siÄ™ wylogować?"],"online":["dostÄ™pny"],"busy":["zajÄ™ty"],"away for long":["dÅ‚użej nieobecny"],"away":["nieobecny"],"offline":["rozÅ‚Ä…czony"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Ups, problem z odszyfrowaniem odebranego komunikatu OMEMO z powodu bÅ‚Ä™du."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s wydaje siÄ™ mieć klienta, który nie obsÅ‚uguje OMEMO. Szyfrowany czat nie bÄ™dzie już możliwy w tym pokoju."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Nie można używać szyfrowania typu end-to-end, ponieważ %1$s używa klienta, który nie obsÅ‚uguje OMEMO."],"Messages are being sent in plaintext":["WiadomoÅ›ci sÄ… wysyÅ‚ane w postaci zwykÅ‚ego tekstu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["WystÄ…piÅ‚ bÅ‚Ä…d w czasie próby usuniÄ™cia urzÄ…dzenia."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Czy na pewno chcesz wygenerować nowe klucze OMEMO? Spowoduje to usuniÄ™cie starych kluczy, a wszystkie wczeÅ›niej zaszyfrowane wiadomoÅ›ci nie bÄ™dÄ… już mogÅ‚y być odszyfrowywane na tym urzÄ…dzeniu."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Przepraszamy, nie jesteÅ›my w stanie wysÅ‚ać zaszyfrowanej wiadomoÅ›ci, ponieważ %1$s wymaga subskrypcji ich statusu, aby zobaczyć ich informacje OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Przepraszamy, nie jesteÅ›my w stanie wysÅ‚ać zaszyfrowanej wiadomoÅ›ci, ponieważ nie można byÅ‚o znaleźć zdalnego serwera dla %1$s"],"Unable to send an encrypted message due to an unexpected error.":["Przepraszamy, z powodu bÅ‚Ä™du nie udaÅ‚o siÄ™ wysÅ‚ać wiadomoÅ›ci."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Przepraszamy, nie znaleziono urzÄ…dzeÅ„, do których możemy wysyÅ‚ać zaszyfrowane wiadomoÅ›ci OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["To jest zaszyfrowana wiadomość OMEMO, której twój klient nie obsÅ‚uguje. WiÄ™cej informacji na stronie https://conversations.im/omemo"]," e.g. conversejs.org":[" np. conversejs.org"],"Fetch registration form":["Pobierz formularz rejestracyjny"],"Tip: A list of public XMPP providers is available":["Porada: lista publicznych dostawców XMPP jest dostÄ™pna"],"here":["tutaj"],"Sorry, we\'re unable to connect to your chosen provider.":["WystÄ…piÅ‚ problem z nawiÄ…zaniem poÅ‚Ä…czenia siÄ™ z wybranym dostawcÄ…."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Przepraszamy, ale podany dostawca nie obsÅ‚uguje rejestracji. Spróbuj wskazać innego dostawcÄ™."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["CoÅ› poszÅ‚o nie tak podczas nawiÄ…zywania poÅ‚Ä…czenia z \\"%1$s\\". JesteÅ› pewien, że on istnieje?"],"Now logging you in":["Teraz logujÄ™ siÄ™"],"Registered successfully":["Zarejestrowany pomyÅ›lnie"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Dostawca odrzuciÅ‚ twojÄ… próbÄ™ rejestracji. Sprawdź proszÄ™ poprawność danych które zostaÅ‚y wprowadzone."],"Leave this groupchat":["Opuść ten pokój"],"Click to toggle the list of open groupchats":["Kliknij, aby przeÅ‚Ä…czyć listÄ™ otwartych czatów grupowych"],"Open Groupchats":["Otwarte rozmowy grupowe"],"Are you sure you want to leave the groupchat %1$s?":["JesteÅ› pewny, że chcesz wyjść z grupowego czatu %1$s?"],"Add":["Dodaj"],"Add a Contact":["Dodaj kontakt"],"This contact is busy":["Kontakt jest zajÄ™ty"],"This contact is online":["Kontakt jest poÅ‚Ä…czony"],"This contact is offline":["Kontakt jest niepoÅ‚Ä…czony"],"This contact is unavailable":["Kontakt jest niedostÄ™pny"],"This contact is away for an extended period":["Kontakt jest nieobecny przez dÅ‚uższÄ… chwilÄ™"],"This contact is away":["Kontakt jest nieobecny"],"Contact name":["Nazwa kontaktu"],"Optional nickname":["Opcjonalny nick"],"Sorry, could not find a contact with that name":["Przepraszamy, nie można odnaleźć kontaktu z tÄ… nazwÄ…"],"This contact has already been added":["Ten kontakt zostaÅ‚ już dodany"],"Filter":["Filtr"],"Filter by contact name":["Filtruj wedÅ‚ug nazwy kontaktu"],"Filter by group name":["Filtruj wedÅ‚ug nazwy grupy"],"Filter by status":["Filtruj wedÅ‚ug stanu"],"Any":["Dowolny"],"Unread":["Nieprzeczytane"],"Chatty":["Gotowy do rozmowy"],"Extended Away":["DÅ‚uższa nieobecność"],"Click to remove %1$s as a contact":["Kliknij, aby usunąć %1$s jako kontakt"],"Click to accept the contact request from %1$s":["Kliknij, aby zaakceptować proÅ›bÄ™ o kontakt od %1$s"],"Click to decline the contact request from %1$s":["Kliknij, aby odrzucić wniosek o kontakt z %1$s"],"Are you sure you want to decline this contact request?":["Czy potwierdzasz odrzucenie chÄ™ci nawiÄ…zania kontaktu?"],"Contacts":["Kontakty"],"Add a contact":["Dodaj kontakt"],"Re-sync your contacts":["Ponownie zsynchronizuj swoje kontakty"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[166],{532:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"pl"},"Create your account":["Utwórz wÅ‚asne konto"],"Please enter the XMPP provider to register with:":["ProszÄ™ wprowadzić dostawcÄ™ XMPP, aby zarejestrować siÄ™:"],"Already have a chat account?":["Masz już konto na czacie?"],"Log in here":["Zaloguj siÄ™ tutaj"],"Account Registration:":["Rejestracja Konta:"],"Register":["Zarejestruj siÄ™"],"Choose a different provider":["Wybierz innego dostawcÄ™"],"Hold tight, we\'re fetching the registration form…":["Czekaj, pobieram formularz rejestracyjny…"],"Cancel":["Anuluj"],"The connection has dropped, attempting to reconnect.":["PoÅ‚Ä…czenie zostaÅ‚o utracone, próbujÄ™ siÄ™ poÅ‚Ä…czyć ponownie."],"An error occurred while connecting to the chat server.":["WystÄ…piÅ‚ bÅ‚Ä…d w czasie Å‚Ä…czenia siÄ™ z serwerem."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Problem z poÅ‚Ä…czeniem do serwera XMPP w domenie: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Serwer XMPP nie oferuje wspieranego mechanizmu uwierzytelniania"],"Sorry, could not determine upload URL.":["Przepraszamy, nie można ustalić adresu URL przesyÅ‚ania."],"Sorry, could not determine file upload URL.":["Przepraszam, nie udaÅ‚o siÄ™ ustalić adresu URL wysyÅ‚ania plików."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Niestety nie udaÅ‚o siÄ™ przesÅ‚ać pliku. Odpowiedź Twojego serwera: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Niestety nie udaÅ‚o siÄ™ przesÅ‚ać pliku."],"Sorry, looks like file upload is not supported by your server.":["Przepraszamy, wyglÄ…da na to, że przesyÅ‚anie plików nie jest obsÅ‚ugiwane przez serwer."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Rozmiar Twojego pliku, %1$s, przekracza maksymalny dozwolony przez Twój serwer, który wynosi %2$s."],"Smileys and emotions":["Emotikony i emocje"],"People":["Ludzie"],"Activities":["DziaÅ‚ania"],"Travel":["Podróż"],"Objects":["Obiekty"],"Animals and nature":["ZwierzÄ™ta i przyroda"],"Food and drink":["Å»ywność i napoje"],"Symbols":["Symbole"],"Flags":["Flagi"],"Stickers":["Naklejki"],"This groupchat is not anonymous":["Ten czat grupowy nie jest anonimowy"],"This groupchat now shows unavailable members":["Ten czat grupowy pokazuje teraz niedostÄ™pnych czÅ‚onków"],"This groupchat does not show unavailable members":["Ten czat grupowy nie wyÅ›wietla niedostÄ™pnych czÅ‚onków"],"The groupchat configuration has changed":["Konfiguracja czatu grupowego ulegÅ‚a zmianie"],"Groupchat logging is now enabled":["Logowanie na czacie grupowym jest teraz wÅ‚Ä…czone"],"Groupchat logging is now disabled":["Rejestrowanie czatu grupowego jest teraz wyÅ‚Ä…czone"],"This groupchat is now no longer anonymous":["Ten czat grupowy nie jest już anonimowy"],"This groupchat is now semi-anonymous":["Ten czat grupowy jest teraz częściowo anonimowy"],"This groupchat is now fully-anonymous":["Ten czat grupowy jest teraz w peÅ‚ni anonimowy"],"A new groupchat has been created":["Utworzono nowy czat grupowy"],"Your nickname has been automatically set to %1$s":["Twój pseudonim zostaÅ‚ automatycznie ustawiony na %1$s"],"Your nickname has been changed to %1$s":["Twój pseudonim zostaÅ‚ zmieniony na %1$s"],"You have been banned from this groupchat":["ZostaÅ‚eÅ› zablokowany na tym czacie grupowym"],"You have been kicked from this groupchat":["ZostaÅ‚eÅ› wyrzucony z tego czatu grupowego"],"You have been removed from this groupchat because of an affiliation change":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego z powodu zmiany przynależnoÅ›ci"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego, ponieważ zmieniÅ‚ siÄ™ on na czat tylko dla czÅ‚onków i nie jesteÅ› czÅ‚onkiem"],"You have been removed from this groupchat because the service hosting it is being shut down":["ZostaÅ‚eÅ› usuniÄ™ty z tego czatu grupowego, ponieważ usÅ‚uga hostingowa jest zamykana"],"Your message was not delivered because you weren\'t allowed to send it.":["Twoja wiadomość nie zostaÅ‚a dostarczona, ponieważ nie możesz jej wysÅ‚ać."],"Your message was not delivered because you\'re not present in the groupchat.":["Twoja wiadomość nie zostaÅ‚a dostarczona, ponieważ nie jesteÅ› obecny na czacie grupowym."],"You\'re not allowed to register yourself in this groupchat.":["Nie możesz siÄ™ zarejestrować w tym czacie grupowym."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Nie możesz siÄ™ zarejestrować w tym czacie grupowym, ponieważ jest on tylko dla czÅ‚onków."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Nie można zarejestrować Twojego pseudonimu w tym czacie grupowym, nie obsÅ‚uguje rejestracji."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Nie można zarejestrować Twojego pseudonimu w tym czacie grupowym, dostarczono nieprawidÅ‚owy formularz danych."],"Topic set by %1$s":["Temat ustawiony przez %1$s"],"Topic cleared by %1$s":["Temat wyczyszczony przez %1$s"],"%1$s has been banned":["%1$s zostaÅ‚ zbanowany"],"%1$s\'s nickname has changed":["%1$s zmieniÅ‚ pseudonim"],"%1$s has been kicked out":["%1$s zostaÅ‚ wyrzucony"],"%1$s has been removed because of an affiliation change":["%1$s zostaÅ‚ usuniÄ™ty z powodu zmiany przynależnoÅ›ci"],"%1$s has been removed for not being a member":["%1$s zostaÅ‚ usuniÄ™ty z powodu braku czÅ‚onkostwa"],"%1$s is no longer an admin of this groupchat":["%1$s nie jest już administratorem tego pokoju"],"%1$s is no longer an owner of this groupchat":["%1$s nie jest już wÅ‚aÅ›cicielem tego pokoju"],"%1$s is no longer banned from this groupchat":["%1$s nie jest już zablokowany w tym pokoju"],"%1$s is no longer a member of this groupchat":["%1$s nie jest już czÅ‚onkiem tej rozmowy grupowej"],"%1$s is now a member of this groupchat":["%1$s jest teraz czÅ‚onkiem tej rozmowy grupowej"],"%1$s is now an %2$s of this groupchat":["%1$s zostaÅ‚ %2$s tego pokoju"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Pseudonim, który wybraÅ‚eÅ› jest zastrzeżony lub obecnie używany, wybierz inny."],"Password incorrect":["NieprawidÅ‚owe hasÅ‚o"],"You are not on the member list of this groupchat.":["Nie jesteÅ› na liÅ›cie czÅ‚onków tej rozmowy grupowej."],"You have been banned from this groupchat.":["ZostaÅ‚eÅ› zablokowany na tym czacie grupowym"],"You are not allowed to create new groupchats.":["Nie wolno ci tworzyć nowych rozmów grupowych."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Twój pseudonim nie jest zgodny z zasadami tej rozmowy grupowej."],"This groupchat does not (yet) exist.":["Ta rozmowa grupowa nie istnieje (jeszcze)."],"This groupchat has reached its maximum number of participants.":["Ta rozmowa grupowa osiÄ…gnęła swojÄ… maksymalnÄ… liczbÄ™ uczestników."],"Remote server not found":["Nie znaleziono zdalnego serwera"],"The explanation given is: \\"%1$s\\".":["Podane wyjaÅ›nienie to: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s zaprosiÅ‚ ciÄ™ do udziaÅ‚u w rozmowie grupowej: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s zaprosiÅ‚ ciÄ™ do udziaÅ‚u w rozmowie grupowej: %2$s, i zostawiÅ‚ nastÄ™pujÄ…cy powód: \\"%3$s\\""],"Error":["BÅ‚Ä…d"],"Sorry, something went wrong while trying to save your bookmark.":["Przepraszamy, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby zapisania zakÅ‚adki."],"Timeout Error":["BÅ‚Ä…d limitu czasu"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Serwer nie zwróciÅ‚ zakÅ‚adek w wyznaczonym czasie. Możesz przeÅ‚adować stronÄ™, aby poprosić o nie ponownie."],"My contacts":["Moje kontakty"],"Pending contacts":["OczekujÄ…ce kontakty"],"Contact requests":["ProÅ›by o kontakt"],"Ungrouped":["Nie zgrupowane"],"New messages":["Nowe wiadomoÅ›ci"],"Sorry, there was an error while trying to add %1$s as a contact.":["Przepraszam, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby dodania %1$s jako kontaktu."],"This client does not allow presence subscriptions":["Ten klient nie zezwala na subskrypcje obecnoÅ›ci"],"Click to hide these contacts":["Kliknij, aby ukryć te kontakty"],"Unbookmark this groupchat":["UsuÅ„ zakÅ‚adkÄ™ do tego pokoju"],"Click to open this groupchat":["Kliknij, aby otworzyć ten czat grupowy"],"Click to toggle the bookmarks list":["Kliknij, aby przeÅ‚Ä…czyć listÄ™ zakÅ‚adek"],"Bookmarks":["ZakÅ‚adki"],"Bookmark this groupchat":["Dodaj zakÅ‚adkÄ™ tego pokoju"],"Would you like this groupchat to be automatically joined upon startup?":["Czy chcesz automatycznie doÅ‚Ä…czać do tej grupy podczas startu ?"],"The name for this bookmark:":["Nazwa dla tej zakÅ‚adki:"],"What should your nickname for this groupchat be?":["Jaki powinien być twój pseudonim dla tej rozmowy grupowej?"],"Save":["Zapisz"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Czy na pewno chcesz usunąć zakÅ‚adkÄ™ \\"%1$s\\"?"],"Close":["Zamknij"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Pobierz plik audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Pobierz plik \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Wersja wiadomoÅ›ci"],"Retry":[""],"Uploading file:":["PrzesyÅ‚any plik:"],"%1$s has removed this message":["%1$s usunÄ…Å‚ tÄ™ wiadomość"],"This message has been edited":["Ta wiadomość zostaÅ‚a zmodyfikowana"],"Show more":["Pokaż wiÄ™cej"],"No message history available.":["Historia wiadomoÅ›ci niedostÄ™pna."],"Search results":["Wyniki wyszukiwania"],"Search":["Szukaj"],"Insert emojis":["Wstaw emotkÄ™"],"Send the message":["WyÅ›lij wiadomość"],"Start a call":["Rozpocznij rozmowÄ™"],"Message characters remaining":["PozostaÅ‚e znaki wiadomoÅ›ci"],"Choose a file to send":["Wybierz plik do wysÅ‚ania"],"Click to write as a normal (non-spoiler) message":["Kliknij, aby napisać jako zwykÅ‚Ä… wiadomość (bez spoilera)"],"Click to write your message as a spoiler":["Kliknij, aby napisać wiadomość jako spoiler"],"The User\'s Profile Image":["ZdjÄ™cie profilowe użytkownika"],"Trusted":["Zaufany"],"Untrusted":["Niezaufany"],"OMEMO Fingerprints":["Odciski palców OMEMO"],"Remove as contact":["UsuÅ„ jako kontakt"],"XMPP Address":["Adres XMPP"],"Email":["E-mail"],"Full Name":["PeÅ‚na nazwa"],"Nickname":["Nick"],"Refresh":["OdÅ›wież"],"Role":["Rola"],"URL":["Adres URL"],"%1$s is typing":["%1$s pisze"],"%1$s has stopped typing":["%1$s przestaÅ‚ pisać"],"%1$s has gone away":["%1$s odszedÅ‚ od klawiatury"],"Remove messages":["UsuÅ„ wiadomoÅ›ci"],"Close this chat":["Zamknij ten czat"],"Write in the third person":["Napisz w trzeciej osobie"],"Show this menu":["Pokaż to menu"],"Hidden message":["Ukryta wiadomość"],"Message":["Wiadomość"],"Optional hint":["Opcjonalna wskazówka"],"You have unread messages":["Masz nieprzeczytane wiadomoÅ›ci"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["BÄ…dź Å›wiadomy, że inni klienci (i serwery) XMPP/Jabber mogÄ… jeszcze nie obsÅ‚ugiwać zwijania i że ta wiadomość może nie być wszÄ™dzie usuwana."],"Are you sure you want to retract this message?":["JesteÅ› pewien, że chcesz wycofać tÄ™ wiadomość?"],"Confirm":["Potwierdź"],"You have an unsent message which will be lost if you continue. Are you sure?":["Masz niewysÅ‚anÄ… wiadomość, która zostanie utracona, jeÅ›li bÄ™dziesz kontynuować. JesteÅ› pewien?"],"Are you sure you want to clear the messages from this conversation?":["JesteÅ› pewien, że chcesz wyczyÅ›cić wiadomoÅ›ci z tej rozmowy?"],"%1$s has gone offline":["%1$s rozÅ‚Ä…czyÅ‚ siÄ™"],"%1$s is busy":["%1$s jest zajÄ™ty"],"%1$s is online":["%1$s jest dostÄ™pny"],"Sorry, something went wrong while trying to refresh":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby odÅ›wieżenia"],"Are you sure you want to remove this contact?":["JesteÅ› pewien, że chcesz usunąć ten kontakt?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Przepraszam, wystÄ…piÅ‚ bÅ‚Ä…d podczas próby usuniÄ™cia %1$s jako kontaktu."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Aby poprawić wydajność, przechowujemy dane użytkownika w pamiÄ™ci podrÄ™cznej tej przeglÄ…darki. UsuÅ„ zaznaczenie tego pola, jeÅ›li jest to komputer publiczny lub jeÅ›li chcesz, aby Twoje dane zostaÅ‚y usuniÄ™te po wylogowaniu siÄ™. Ważne jest, aby wyraźnie siÄ™ wylogować, w przeciwnym razie nie wszystkie dane zbuforowane mogÄ… zostać usuniÄ™te. Należy pamiÄ™tać, że w przypadku korzystania z niezaufanego urzÄ…dzenia, szyfrowanie OMEMO NIE jest dostÄ™pne."],"This is a trusted device":["To jest zaufane urzÄ…dzenie"],"Create an account":["Utwórz konto"],"Don\'t have a chat account?":["Nie masz konta na czacie?"],"Log in":["Zaloguj siÄ™"],"Disconnected":["RozÅ‚Ä…czono"],"Click here to log in anonymously":["Kliknij tutaj aby zalogować siÄ™ anonimowo"],"Username":["Nazwa użytkownika"],"user@domain":["użytkownik@domena"],"Please enter a valid XMPP address":["ProszÄ™ wpisać prawidÅ‚owy adres XMPP"],"Chat Contacts":["Kontakty czatu"],"Toggle chat":["PrzeÅ‚Ä…cz czat"],"Click to restore this chat":["Kliknij, aby przywrócić ten czat"],"Minimized":["Zminimalizowane"],"This user is a moderator.":["Ten użytkownik jest moderatorem."],"This user can send messages in this groupchat.":["Ten użytkownik może wysyÅ‚ać wiadomoÅ›ci w tym pokoju."],"This user can NOT send messages in this groupchat.":["Ten czÅ‚owiek NIE może rozmawiać w tym pokoju."],"Owner":["WÅ‚aÅ›ciciel"],"Admin":["Administrator"],"Member":["CzÅ‚onek"],"Moderator":["Moderator"],"Visitor":["Gość"],"Click to mention %1$s in your message.":["Kliknij aby wspomnieć o %1$s we wiadomoÅ›ci."],"Participants":["Uczestnicy"],"This field is required":["To pole jest wymagane"],"Join":["DoÅ‚Ä…cz"],"Enter a new Groupchat":["Wejdź do pokoju"],"name@conference.example.org":["nazwa@konferencja.domena.pl"],"Groupchat name":["Nazwa czatu grupowego"],"Groupchat address":["Adres pokoju"],"Invite":["ZaproÅ›"],"Show groupchats":["Pokaż pokoje"],"Server address":["Adres serwera"],"Show more information on this groupchat":["Pokaż wiÄ™cej informacji na temat tego czatu grupowego"],"Query for Groupchats":["Wyszukaj pokoje"],"Description:":["Opis:"],"Groupchat Address (JID):":["Nazwa pokoju (JID):"],"Participants:":["Uczestnicy:"],"Features:":["WÅ‚aÅ›ciwoÅ›ci:"],"Requires authentication":["Wymaga uwierzytelnienia"],"Hidden":["Ukryty"],"Requires an invitation":["Wymaga zaproszenia"],"Moderated":["Moderowany"],"Non-anonymous":["Nieanonimowy"],"Open":["Otwarte"],"Permanent":["StaÅ‚y"],"Public":["Publiczny"],"Semi-anonymous":["Częściowo anonimowy"],"Temporary":["Tymczasowe"],"Unmoderated":["Niemoderowane"],"conference.example.org":["conference.domena.pl"],"No groupchats found":["Nie znaleziono pokojów"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatorzy sÄ… uprzywilejowanymi użytkownikami, którzy mogÄ… zmieniać role innych użytkowników (z wyjÄ…tkiem tych z uprawnieniami administratora lub wÅ‚aÅ›ciciela)."],"The default role, implies that you can read and write messages.":["DomyÅ›lna rola, oznacza, że możesz czytać i pisać wiadomoÅ›ci."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["OdwiedzajÄ…cy nie mogÄ… pisać wiadomoÅ›ci w moderowanym czacie dla wielu użytkowników."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["WÅ‚aÅ›ciciel to najwyższa przynależność. WÅ‚aÅ›ciciele mogÄ… modyfikować role i Afiliacje wszystkich innych użytkowników."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin jest drugÄ… co do wielkoÅ›ci afiliacjÄ…. Administratorzy mogÄ… modyfikować role i przynależność wszystkich innych użytkowników oprócz wÅ‚aÅ›cicieli."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Aby zablokować użytkownika, dajesz mu przynależność \\"outcast\\"."],"Change role":["Zmiana roli"],"New Role":["Nowa rola"],"Reason":["Powód"],"Change affiliation":["ZmieÅ„ przynależność"],"New affiliation":["Nowa przynależność"],"Affiliation":["Przynależność"],"Moderator Tools":["NarzÄ™dzia moderatora"],"No users with that affiliation found.":["Nie znaleziono użytkowników z tÄ… przynależnoÅ›ciÄ…."],"No users with that role found.":["Nie znaleziono użytkowników z tÄ… rolÄ…."],"Type here to filter the search results":[""],"Show users":["Pokaż użytkowników"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Role sÄ… przypisane do użytkowników, aby przyznać lub odmówić im pewnych umiejÄ™tnoÅ›ci w czacie dla wielu użytkowników. SÄ… one przypisane w sposób wyraźny lub domyÅ›lny jako część przynależnoÅ›ci. Rola, która nie jest zwiÄ…zana z przynależnoÅ›ciÄ…, jest ważna tylko na czas trwania sesji użytkownika."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Przynależność jest dÅ‚ugotrwaÅ‚ym uprawnieniem, które zazwyczaj wiąże siÄ™ z pewnÄ… rolÄ… i które przyznaje przywileje i obowiÄ…zki. Na przykÅ‚ad administratorzy i wÅ‚aÅ›ciciele majÄ… automatycznie rolÄ™ moderatora."],"Sorry, something went wrong while trying to set the affiliation":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby ustalenia przynależnoÅ›ci"],"Affiliation changed":["Zmiana przynależnoÅ›ci"],"Role changed":["Zmieniono rolÄ™"],"You\'re not allowed to make that change":["Nie możesz dokonać tej zmiany"],"Sorry, something went wrong while trying to set the role":["Przepraszam, coÅ› poszÅ‚o nie tak podczas próby ustawienia roli"],"Topic":["Temat"],"Topic author":["Autor tematu"],"Groupchat address (JID)":["Nazwa czatu grupowego (JID)"],"Message archiving":["Archiwizowanie wiadomoÅ›ci"],"Messages are archived on the server":["WiadomoÅ›ci sÄ… archiwizowane na serwerze"],"Description":["Opis"],"Features":["MożliwoÅ›ci"],"This groupchat is not publicly searchable":["Ten czat grupowy nie jest publicznie dostÄ™pny"],"This groupchat is restricted to members only":["Ta rozmowa grupowa jest ograniczona tylko do czÅ‚onków"],"Members only":["Tylko dla czÅ‚onków"],"Participants entering this groupchat need to request permission to write":["Uczestnicy wchodzÄ…cy w ten czat grupowy muszÄ… poprosić o pozwolenie na pisanie"],"Name":["Nazwa"],"This groupchat does not require a password upon entry":["Ten czat grupowy nie wymaga hasÅ‚a przy wejÅ›ciu"],"No password required":["HasÅ‚o nie jest wymagane"],"Not anonymous":["Nie anonimowy"],"All other groupchat participants can see your XMPP address":["Wszyscy uczestnicy grupowego czatu widzÄ… TwojÄ… nazwÄ™ użytkownika XMPP"],"Not moderated":["Nie moderowany"],"Participants entering this groupchat can write right away":["Uczestnicy wchodzÄ…cy w ten czat grupowy mogÄ… pisać od razu"],"Online users":["DostÄ™pni użytkownicy"],"Anyone can join this groupchat":["Każdy może doÅ‚Ä…czyć do tego czatu grupowego"],"This groupchat requires a password before entry":["Pokój rozmów wymaga podania hasÅ‚a"],"Password protected":["Chronione hasÅ‚em"],"Persistent":["TrwaÅ‚y"],"This groupchat persists even if it\'s unoccupied":["Ten pokój przetrwa nawet bez użytkowników"],"Only moderators can see your XMPP address":["Tylko moderatorzy mogÄ… zobaczyć Twój adres XMPP"],"This groupchat will disappear once the last person leaves":["Ten pokój zniknie po opuszczeniu go przez ostatniego użytkownika"],"This groupchat is publicly searchable":["Ten czat grupowy jest publicznie dostÄ™pny"],"Groupchat info for %1$s":["Informacje o czacie grupowym dla %1$s"],"You\'re not allowed to send messages in this room":["Nie możesz wysyÅ‚ać wiadomoÅ›ci w tym pokoju"],"The conversation has moved. Click below to enter.":["Rozmowa zostaÅ‚a przeniesiona. Kliknij poniżej aby wejść."],"This groupchat no longer exists":["Ten czat grupowy już nie istnieje"],"Enter groupchat":["Wejdź do pokoju"],"Choose a nickname to enter":["Wybierz pseudonim, który chcesz wprowadzić"],"Please choose your nickname":["ProszÄ™ wybrać swój pseudonim"],"This groupchat requires a password":["WstÄ™p do pokoju wymaga podania hasÅ‚a"],"Password: ":["HasÅ‚o: "],"Submit":["WyÅ›lij"],"%1$s has entered the groupchat":["%1$s wszedÅ‚ do pokoju"],"%1$s has left the groupchat":["%1$s opuÅ›ciÅ‚ pokój"],"%1$s is now a moderator":["%1$s zostaÅ‚ moderatorem"],"%1$s is no longer a moderator":["%1$s nie jest już moderatorem"],"%1$s has been given a voice":["%1$s dostaÅ‚ gÅ‚os"],"%1$s has been muted":["%1$s zostaÅ‚ wyciszony"],"Change user\'s affiliation to admin":["Zmiana przynależnoÅ›ci użytkownika do administratora"],"Ban user by changing their affiliation to outcast":["Zablokuj użytkownika, zmieniajÄ…c ich przynależność do Outcast"],"Clear the chat area":["Wyczyść obszar czatu"],"Close this groupchat":["Zamknij ten pokój"],"Change user role to participant":["Zmiana roli użytkownika na uczestnika"],"Remove this groupchat":["UsuÅ„ ten czat grupowy"],"Kick user from groupchat":["Wyrzuć użytkownika z czatu grupowego"],"Write in 3rd person":["Pisz w trzeciej osobie"],"Grant membership to a user":["Przyznanie czÅ‚onkostwa użytkownikowi"],"Opens up the moderator tools GUI":["Otwiera narzÄ™dzia moderatora GUI"],"Remove user\'s ability to post messages":["UsuniÄ™cie możliwoÅ›ci wysyÅ‚ania wiadomoÅ›ci przez użytkownika"],"Change your nickname":["ZmieÅ„ swój pseudonim"],"Grant moderator role to user":["Przyznaj rolÄ™ moderatora użytkownikowi"],"Grant ownership of this groupchat":["UczyÅ„ wÅ‚aÅ›cicielem pokoju"],"Register your nickname":["Zarejestruj swój nick"],"Revoke the user\'s current affiliation":["Wycofanie aktualnej przynależnoÅ›ci użytkownika"],"Set groupchat subject":["Ustaw temat rozmowy grupowej"],"Set groupchat subject (alias for /subject)":["Ustaw temat rozmowy (alias dla /subject)"],"Allow muted user to post messages":["Pozwól uciszonemu czÅ‚owiekowi na rozmowÄ™"],"You are about to retract this message.":["Masz zamiar wycofać tÄ™ wiadomość."],"You may optionally include a message, explaining the reason for the retraction.":["Opcjonalnie możesz doÅ‚Ä…czyć wiadomość wyjaÅ›niajÄ…cÄ… powód zwiniÄ™cia."],"Message Retraction":["Wycofanie komunikatu"],"Optional reason":["Opcjonalny powód"],"A timeout occurred while trying to retract the message":["Podczas próby cofniÄ™cia komunikatu pojawiÅ‚ siÄ™ limit czasu"],"Sorry, you\'re not allowed to retract this message.":["Przepraszam, nie wolno ci wycofać tej wiadomoÅ›ci."],"Configure this groupchat":["Skonfiguruj ten pokój"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["Ukrycie listy uczestników"],"Forbidden: you do not have the necessary role in order to do that.":["Zakazane: nie masz do tego niezbÄ™dnej roli."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Zabronione: nie masz dostÄ™pu ze wzglÄ™du na brak przynależnoÅ›ci.."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["BÅ‚Ä…d: polecenie \\"%1$s\\" przyjmuje dwa argumenty: pseudonim i opcjonalnie powód."],"Error: couldn\'t find a groupchat participant based on your arguments":["BÅ‚Ä…d: nie udaÅ‚o siÄ™ znaleźć uczestnika czatu grupowego na podstawie twoich argumentów"],"Error: found multiple groupchat participant based on your arguments":["BÅ‚Ä…d: znaleziono wielu uczestników czatu grupowego na podstawie twoich argumentów"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["np. użytkownik@przykÅ‚adowa-domena.pl"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Twój pseudonim to \\"%1$s\\""],"Error: invalid number of arguments":["BÅ‚Ä…d: nieprawidÅ‚owa liczba argumentów"],"This action was done by %1$s.":["Ta akcja zostaÅ‚a wykonana przez %1$s."],"The reason given is: \\"%1$s\\".":["Podany powód to: \\"%1$s\\"."],"Groupchats":["Rozmowy grupowe"],"Add a new groupchat":["Dodaj nowÄ… grupÄ™"],"Query for groupchats":["Wyszukaj pokoje"],"Announcements":["OgÅ‚oszenia"],"Notification from %1$s":["Powiadomienie od %1$s"],"%1$s says":["%1$s powiedziaÅ‚"],"has gone offline":["wyÅ‚Ä…czyÅ‚ siÄ™"],"has gone away":["uciekÅ‚"],"is busy":["zajÄ™ty"],"has come online":["poÅ‚Ä…czyÅ‚ siÄ™"],"wants to be your contact":["chce być twoim kontaktem"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Informacje"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s klient czatu XMPP dostarczony do Ciebie przez %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s PrzetÅ‚umaczyć %2$s na swój wÅ‚asny jÄ™zyk"],"Log out":["Wyloguj siÄ™"],"Click to change your chat status":["Kliknij aby zmienić status rozmowy"],"Show details about this chat client":["Pokaż szczegóły na temat tego klienta czatu"],"Your avatar image":["Twój awatar"],"Checkbox for selecting the following fingerprint":["Pole wyboru dla wybrania nastÄ™pujÄ…cego odcisku palca"],"Device without a fingerprint":["UrzÄ…dzenie bez odcisku palca"],"Other OMEMO-enabled devices":["PozostaÅ‚e urzÄ…dzenia z funkcjÄ… OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Zaznacz pole wyboru, aby wybrać odciski palców wszystkich innych urzÄ…dzeÅ„ OMEMO"],"Remove checked devices and close":["UsuÅ„ sprawdzone urzÄ…dzenia i zamknij"],"Select all":["Wybierz wszystkie"],"This device\'s OMEMO fingerprint":["Odcisk palca OMEMO tego urzÄ…dzenia"],"Generate new keys and fingerprint":["Wygeneruj nowe klucze i odcisk palca"],"Your Profile":["Twój profil"],"XMPP Address (JID)":["Adres XMPP (JID)"],"Save and close":["Zapisz i Zamknij"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Użyj przecinków, aby rozdzielić wiele ról. Twoje role sÄ… wyÅ›wietlane obok Twojego imienia i nazwiska w wiadomoÅ›ciach czatu."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["WystÄ…piÅ‚ bÅ‚Ä…d w trakcie próby zapisania Twoich danych profilowych."],"You can check your browser\'s developer console for any error output.":["Możesz sprawdzić konsolÄ™ dewelopera przeglÄ…darki pod kÄ…tem bÅ‚Ä™dów."],"Away":["Nieobecny"],"Busy":["ZajÄ™ty"],"Custom status":["WÅ‚asny status"],"Offline":["RozÅ‚Ä…czony"],"Online":["DostÄ™pny"],"Away for long":["DÅ‚użej nieobecny"],"Change chat status":["ZmieÅ„ status czatu"],"Personal status message":["Osobisty komunikat o statusie"],"I am %1$s":["Jestem %1$s"],"Are you sure you want to log out?":["JesteÅ› pewien, że chcesz siÄ™ wylogować?"],"online":["dostÄ™pny"],"busy":["zajÄ™ty"],"away for long":["dÅ‚użej nieobecny"],"away":["nieobecny"],"offline":["rozÅ‚Ä…czony"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Ups, problem z odszyfrowaniem odebranego komunikatu OMEMO z powodu bÅ‚Ä™du."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s wydaje siÄ™ mieć klienta, który nie obsÅ‚uguje OMEMO. Szyfrowany czat nie bÄ™dzie już możliwy w tym pokoju."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Nie można używać szyfrowania typu end-to-end, ponieważ %1$s używa klienta, który nie obsÅ‚uguje OMEMO."],"Messages are being sent in plaintext":["WiadomoÅ›ci sÄ… wysyÅ‚ane w postaci zwykÅ‚ego tekstu"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Przepraszamy, nie jesteÅ›my w stanie wysÅ‚ać zaszyfrowanej wiadomoÅ›ci, ponieważ %1$s wymaga subskrypcji ich statusu, aby zobaczyć ich informacje OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Przepraszamy, nie jesteÅ›my w stanie wysÅ‚ać zaszyfrowanej wiadomoÅ›ci, ponieważ nie można byÅ‚o znaleźć zdalnego serwera dla %1$s"],"Unable to send an encrypted message due to an unexpected error.":["Przepraszamy, z powodu bÅ‚Ä™du nie udaÅ‚o siÄ™ wysÅ‚ać wiadomoÅ›ci."],"Sorry, an error occurred while trying to remove the devices.":["WystÄ…piÅ‚ bÅ‚Ä…d w czasie próby usuniÄ™cia urzÄ…dzenia."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Czy na pewno chcesz wygenerować nowe klucze OMEMO? Spowoduje to usuniÄ™cie starych kluczy, a wszystkie wczeÅ›niej zaszyfrowane wiadomoÅ›ci nie bÄ™dÄ… już mogÅ‚y być odszyfrowywane na tym urzÄ…dzeniu."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Przepraszamy, nie znaleziono urzÄ…dzeÅ„, do których możemy wysyÅ‚ać zaszyfrowane wiadomoÅ›ci OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["To jest zaszyfrowana wiadomość OMEMO, której twój klient nie obsÅ‚uguje. WiÄ™cej informacji na stronie https://conversations.im/omemo"]," e.g. conversejs.org":[" np. conversejs.org"],"Fetch registration form":["Pobierz formularz rejestracyjny"],"Tip: A list of public XMPP providers is available":["Porada: lista publicznych dostawców XMPP jest dostÄ™pna"],"here":["tutaj"],"Sorry, we\'re unable to connect to your chosen provider.":["WystÄ…piÅ‚ problem z nawiÄ…zaniem poÅ‚Ä…czenia siÄ™ z wybranym dostawcÄ…."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Przepraszamy, ale podany dostawca nie obsÅ‚uguje rejestracji. Spróbuj wskazać innego dostawcÄ™."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["CoÅ› poszÅ‚o nie tak podczas nawiÄ…zywania poÅ‚Ä…czenia z \\"%1$s\\". JesteÅ› pewien, że on istnieje?"],"Now logging you in":["Teraz logujÄ™ siÄ™"],"Registered successfully":["Zarejestrowany pomyÅ›lnie"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Dostawca odrzuciÅ‚ twojÄ… próbÄ™ rejestracji. Sprawdź proszÄ™ poprawność danych które zostaÅ‚y wprowadzone."],"Leave this groupchat":["Opuść ten pokój"],"Click to toggle the list of open groupchats":["Kliknij, aby przeÅ‚Ä…czyć listÄ™ otwartych czatów grupowych"],"Open Groupchats":["Otwarte rozmowy grupowe"],"Are you sure you want to leave the groupchat %1$s?":["JesteÅ› pewny, że chcesz wyjść z grupowego czatu %1$s?"],"Add":["Dodaj"],"Add a Contact":["Dodaj kontakt"],"This contact is busy":["Kontakt jest zajÄ™ty"],"This contact is online":["Kontakt jest poÅ‚Ä…czony"],"This contact is offline":["Kontakt jest niepoÅ‚Ä…czony"],"This contact is unavailable":["Kontakt jest niedostÄ™pny"],"This contact is away for an extended period":["Kontakt jest nieobecny przez dÅ‚uższÄ… chwilÄ™"],"This contact is away":["Kontakt jest nieobecny"],"Contact name":["Nazwa kontaktu"],"Optional nickname":["Opcjonalny nick"],"Sorry, could not find a contact with that name":["Przepraszamy, nie można odnaleźć kontaktu z tÄ… nazwÄ…"],"This contact has already been added":["Ten kontakt zostaÅ‚ już dodany"],"Filter":["Filtr"],"Filter by contact name":["Filtruj wedÅ‚ug nazwy kontaktu"],"Filter by group name":["Filtruj wedÅ‚ug nazwy grupy"],"Filter by status":["Filtruj wedÅ‚ug stanu"],"Any":["Dowolny"],"Unread":["Nieprzeczytane"],"Chatty":["Gotowy do rozmowy"],"Extended Away":["DÅ‚uższa nieobecność"],"Click to remove %1$s as a contact":["Kliknij, aby usunąć %1$s jako kontakt"],"Click to accept the contact request from %1$s":["Kliknij, aby zaakceptować proÅ›bÄ™ o kontakt od %1$s"],"Click to decline the contact request from %1$s":["Kliknij, aby odrzucić wniosek o kontakt z %1$s"],"Are you sure you want to decline this contact request?":["Czy potwierdzasz odrzucenie chÄ™ci nawiÄ…zania kontaktu?"],"Contacts":["Kontakty"],"Add a contact":["Dodaj kontakt"],"Re-sync your contacts":["Ponownie zsynchronizuj swoje kontakty"]}}}')}}]); //# sourceMappingURL=pl-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/pt-LC_MESSAGES-converse-po.js b/src/conversejs/locales/pt-LC_MESSAGES-converse-po.js index 62c6e2440806bd64939212d4d5a9ea08d4916e19..f02bafede7ac81612a0402ee25c08a1c782bc6d6 100644 --- a/src/conversejs/locales/pt-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/pt-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{445:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"pt"},"Create your account":["Criar a sua conta"],"Please enter the XMPP provider to register with:":["Por favor, insira o provedor XMPP para registar com:"],"Already have a chat account?":["Já tem uma conta de conversação?"],"Log in here":["Inicie a sessão aqui"],"Account Registration:":["Registo de conta:"],"Register":["Registar"],"Choose a different provider":["Escolha um provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Aguarde, nós estamos a obter o formulário de registo…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["A ligação foi interrompida, a tentar religar."],"An error occurred while connecting to the chat server.":["Ocorreu um erro enquanto ligava ao servidor de conversação."],"Your XMPP address and/or password is incorrect. Please try again.":["O seu endereço de XMPP e/ou a palavra-passe estão incorretos. Por favor, tente novamente."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Desculpe, nós nos foi possÃvel ligar ao hospedeiro de XMPP com o domÃnio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor de XMPP não ofereceu um motor de autenticação suportado"],"Sorry, could not determine upload URL.":["Desculpe, não foi possÃvel determinar o URL de envio."],"Sorry, could not determine file upload URL.":["Desculpe, não foi possÃvel determinar o URL de envoi do ficheiro."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Desculpe, não foi possÃvel enviar o seu ficheiro com sucesso. Resposta do seu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Desculpe, não foi possÃvel enviar o seu ficheiro com sucesso."],"Sorry, looks like file upload is not supported by your server.":["Desculpe, parece que o envio de ficheiro não é suportado pelo seu servidor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamanho do seu ficheiro, %1$s, excede o máximo permitido pelo seu servidor, que é %2$s."],"Smileys and emotions":["\\"Smileys\\" e emoções"],"People":["Pessoas"],"Activities":["Atividades"],"Travel":["Viagens"],"Objects":["Objetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":[""],"Stickers":["Autocolantes"],"This groupchat is not anonymous":["Esta sala de conversação não é anónima"],"This groupchat now shows unavailable members":["Esta sala de conversação mostra membros indisponÃveis"],"This groupchat does not show unavailable members":["Esta sala de conversação não mostra membros indisponÃveis"],"The groupchat configuration has changed":["A configuração da sala de conversação foi alterada"],"Groupchat logging is now enabled":["O inÃcio de sessão da sala de conversação está agora ativado"],"Groupchat logging is now disabled":["O inÃcio de sessão da sala de conversação está agora desativado"],"This groupchat is now no longer anonymous":["Esta sala de conversação já não é anónima"],"This groupchat is now semi-anonymous":["Esta sala de conversação agora é semi anónima"],"This groupchat is now fully-anonymous":["Esta sala de conversação agora é totalmente anónima"],"A new groupchat has been created":["Foi criada uma nova sala de conversação"],"Your nickname has been automatically set to %1$s":["O seu apelido foi definido automaticamente para %1$s"],"Your nickname has been changed to %1$s":["O seu apelido foi alterado para %1$s"],"You have been banned from this groupchat":["Foi banido desta sala de conversação"],"You have been kicked from this groupchat":["Foi expulso desta sala de conversação"],"You have been removed from this groupchat because of an affiliation change":["Foi removido da sala de conversação devido a uma alteração de afiliação"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Foi removido da sala de conversação porque esta foi alterada para somente membros e você não é um membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Foi removido da sala de conversação porque o serviço de hospedagem foi encerrado"],"Your message was not delivered because you weren\'t allowed to send it.":["A sua mensagem não foi entregue porque não está autorizado para a enviar."],"Your message was not delivered because you\'re not present in the groupchat.":["A sua mensagem não foi entregue porque não está presente na sala de conversação."],"You\'re not allowed to register yourself in this groupchat.":["Não está autorizado para se registar nesta sala de conversação."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Não está autorizado para se registar nesta sala de conversação porque é só para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Não é possÃvel registar o seu apelido nesta sala de conversação, esta não suporta o registo."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Não é possÃvel registar o seu apelido, nesta sala de conversação, o formulário de dados fornecido é inválido."],"Topic set by %1$s":["Topico definido por %1$s"],"Topic cleared by %1$s":["Topico limpo por %1$s"],"%1$s has been banned":["%1$s foi banido"],"%1$s\'s nickname has changed":["O apelido de %1$s foi alterado"],"%1$s has been kicked out":["%1$s foi expulso"],"%1$s has been removed because of an affiliation change":["%1$s foi removido devido a uma alteração de afiliação"],"%1$s has been removed for not being a member":["%1$s foi removido por não ser mais um membro"],"%1$s is no longer an admin of this groupchat":["%1$s não é mais um administrador desta sala"],"%1$s is no longer an owner of this groupchat":["%1$s não é mais um proprietário desta sala"],"%1$s is no longer banned from this groupchat":["%1$s não está mais banido desta sala"],"%1$s is now an %2$s of this groupchat":["%1$s se tornou %2$s desta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O apelido escolhido está reservado ou atualmente em uso, por favor, escolha outro."],"Password incorrect":["Palavra-passe incorreta"],"You are not on the member list of this groupchat.":["Não faz parte da lista de membros desta sala de conversação."],"You have been banned from this groupchat.":["Foi banido desta sala de conversação."],"You are not allowed to create new groupchats.":["Não está autorizado a criar novas salas de conversação."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["O seu apelido não está de acordo com as polÃticas desta sala de conversação."],"This groupchat does not (yet) exist.":["Esta sala de conversação (ainda) não existe."],"This groupchat has reached its maximum number of participants.":["A sala de conversação atingiu o número máximo de participantes."],"Remote server not found":["Servidor remoto não encontrado"],"The explanation given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidou-o para se juntar numa sala de conversação: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidou-o para se juntar numa sala de conversação: %2$s, e deixou o seguinte motivo: \\"%3$s\\""],"Error":["Erro"],"Sorry, something went wrong while trying to save your bookmark.":["Desculpe, ocorreu algo de errado enquanto tentava guardar o seu favorito."],"Timeout Error":["Erro de Expiração"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Meus contactos"],"Pending contacts":["Contactos pendentes"],"Contact requests":["Pedidos de contacto"],"Ungrouped":["Desagrupado"],"New messages":["Novas mensagens"],"Sorry, there was an error while trying to add %1$s as a contact.":["Desculpe, ocorreu um erro enquanto tentava adicionar %1$s como um contacto."],"This client does not allow presence subscriptions":["Este cliente não permite subscrições de presença"],"Click to hide these contacts":["Clique para ocultar estes contactos"],"Unbookmark this groupchat":["Remover esta sala de conversação dos favoritos"],"Click to open this groupchat":["Clique para abrir esta sala de conversação"],"Click to toggle the bookmarks list":["Clique para alternar a lista de favoritos"],"Bookmarks":["Favoritos"],"Bookmark this groupchat":["Marcar esta sala de conversação"],"Would you like this groupchat to be automatically joined upon startup?":["Deseja que esta sala de conversação seja associada automaticamente na inicialização?"],"The name for this bookmark:":["Nome para o favorito:"],"What should your nickname for this groupchat be?":["Qual deve ser o seu apelido para esta sala?"],"Save":["Salvar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Tem certeza de que deseja remover o favorito \\"%1$s\\"?"],"Close":["Fechar"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Transferir o ficheiro de áudio \\"%1$s\\""],"Download file \\"%1$s\\"":["Transferir ficheiro \\"%1$s"],"Edit":[""],"Retract":[""],"Message versions":["Versões da mensagem"],"Retry":[""],"Uploading file:":["A enviar ficheiro:"],"%1$s has removed this message":["%1$s removeu esta mensagem"],"This message has been edited":["Esta mensagem foi editada"],"Show more":["Mostrar mais"],"No message history available.":["Sem histórico de mensagens disponÃvel."],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":["Enviar a mensagem"],"Start a call":[""],"Message characters remaining":["Carateres restantes da mensagem"],"Choose a file to send":["Escolha um ficheiro para enviar"],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Imagem de Perfil do Utilizador"],"Trusted":["Confiado"],"Untrusted":["Desconfiado"],"OMEMO Fingerprints":["Impressões digitais OMEMO"],"No OMEMO-enabled devices found":["Não foram encontrados dispositivos preparados para OMEMO"],"Remove as contact":["Remover como contacto"],"XMPP Address":["Endereço de XMPP"],"Email":["E-mail"],"Full Name":["Nome completo"],"Nickname":["Apelido"],"Refresh":["Atualizar"],"Role":["Função"],"URL":["URL"],"%1$s is typing":["%1$s está a digitar"],"%1$s has stopped typing":["%1$s parou de digitar"],"%1$s has gone away":["%1$s está ausente"],"Remove messages":["Remover mensagens"],"Close this chat":["Feche esta conversação de grupo"],"Write in the third person":["Escrever em terceira pessoa"],"Show this menu":["Mostrar o menu"],"Hidden message":["Mensagem oculta"],"Message":["Mensagem"],"Optional hint":["Dica Opcional"],"You have unread messages":["Você tem mensagens não lidas"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["Tem a certeza de que deseja retrair esta mensagem?"],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Tem certeza que deseja limpar as mensagens dessa conversa?"],"%1$s has gone offline":["%1$s está offline"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está online"],"Sorry, something went wrong while trying to refresh":["Desculpe, algo deu errado ao tentar atualizar"],"Are you sure you want to remove this contact?":["Tem certeza de que deseja remover esse contato?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Desculpe, houve um erro ao tentar remover o contato %1$s ."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para melhorar o desempenho, armazenamos os seus dados em cache neste navegador. Desmarque esta caixa se este for um computador público ou se pretender que os seus dados sejam eliminados quando terminar a sessão. É importante que você se desconecte explicitamente, caso contrário não todos os dados armazenados em cache podem ser excluÃdos. Observe que, ao usar um aparelho não confiável, a criptografia OMEMO NÃO está disponÃvel."],"This is a trusted device":["Este é um aparelho confiável"],"Password":["Palavra-passe"],"Create an account":["Criando uma conta"],"Don\'t have a chat account?":["Não possui uma conta de bate papo?"],"Log in":["Iniciar sessão"],"Disconnected":[""],"Click here to log in anonymously":["Clique aqui para efetuar o login anonimamente"],"Username":["Utilizador"],"user@domain":["utilizador@domÃnio"],"Please enter a valid XMPP address":["Por favor entre com um endereço XMPP válido"],"Chat Contacts":["Contatos"],"Toggle chat":["Alternar bate-papo"],"Click to restore this chat":["Clique para restaurar este bate-papo"],"Minimized":["Minimizado"],"Minimize this groupchat":["Minimizar esta conversação de grupo"],"This field is required":["Este campo é obrigatório"],"Join":["Entrar"],"Enter a new Groupchat":["Entrar em uma nova sala"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Endereço da groupchat"],"Groupchat address":["Endereço da sala"],"Groupchat id is invalid.":["A id. da conversação de grupo é inválida."],"Invite":["convite"],"Invite someone to this groupchat":["Convidar qualquer pessoa para esta conversação de grupo"],"user@example.org":["por exemplo, utilizador@exemplo.org"],"Optional reason for the invitation":["Motivo opcional para o convite"],"Show groupchats":["Mostrar Salas"],"Server address":["Endereço do Servidor"],"Show more information on this groupchat":["Mostrar mais informações dessa sala"],"Query for Groupchats":["Consulta para Groupchats"],"Description:":["Descrição:"],"Groupchat Address (JID):":["Endereço da sala (JID):"],"Participants:":["Participantes:"],"Features:":["Recursos:"],"Requires authentication":["Requer autenticação"],"Hidden":["Escondido"],"Requires an invitation":["Requer um convite"],"Moderated":["Moderado"],"Non-anonymous":["Não anônimo"],"Open":["Sala aberta"],"Permanent":["Sala permanente"],"Public":["Público"],"Semi-anonymous":["Semi anônimo"],"Temporary":["Temporário"],"Unmoderated":["Sem moderação"],"conference.example.org":["conferencia.exemplo.org"],"No groupchats found":["Nenhuma sala encontrada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["Alterar função"],"New Role":["Nova Função"],"Reason":[""],"Change affiliation":["Alterar afiliação"],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":["Ferramentas de Moderador"],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":["Mostrar utilizadores"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Sorry, something went wrong while trying to set the affiliation":["Desculpe, ocorreu algo de errado enquanto tentava definir a afiliação"],"Affiliation changed":[""],"Role changed":["Função alterada"],"You\'re not allowed to make that change":["Não está autorizado a efetuar essa alteração"],"Sorry, something went wrong while trying to set the role":["Desculpe, ocorreu algo de errado enquanto tentava definir a função"],"Topic":["Tópico"],"Topic author":["Autor do tópico"],"Groupchat address (JID)":["Endereço da sala de conversação (JID)"],"Message archiving":["Arquivando mensagem"],"Messages are archived on the server":["As mensagens são arquivadas no servidor"],"Description":["Descrição"],"Features":["Recursos"],"This groupchat is not publicly searchable":["Esta conversação de grupo não aparece nas pesquisas públicas"],"This groupchat is restricted to members only":["Este groupchat é restrito apenas aos membros"],"Members only":["Apenas membros"],"Participants entering this groupchat need to request permission to write":["Os participantes que entram neste groupchat precisam solicitar permissão para escrever"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Essa sala não precisa de palavra-passe para entrar"],"No password required":["Nenhuma palavra-passe necessária"],"Not anonymous":["Não anónimo"],"All other groupchat participants can see your XMPP address":["Todos os outros participantes da conversação de grupo podem ver o seu endereço de XMPP"],"Not moderated":["Não moderada"],"Participants entering this groupchat can write right away":["Os participantes que entram neste groupchat podem escrever imediatamente"],"Online users":["Utilizadores On-line"],"Anyone can join this groupchat":["Qualquer um pode juntar-se a esta conversação de grupo"],"This groupchat requires a password before entry":["Essa sala precisa de palavra-passe antes de entrar"],"Password protected":["Protegido por palavra-passe"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Esta conversação de grupo existe mesmo se vazia"],"Only moderators can see your XMPP address":["Apenas os moderadores podem ver o seu endereço de XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversação de grupo deixará de existir quando todas as pessoas saÃrem"],"This groupchat is publicly searchable":["Esta conversação de grupo pode ser pesquisada publicamente"],"Groupchat info for %1$s":["Informações da sala em grupo para %1$s"],"You\'re not allowed to send messages in this room":["Não está autorizado para enviar mensagens nesta sala"],"The conversation has moved. Click below to enter.":["A conversação foi movida. Clique em baixo para entrar."],"This groupchat no longer exists":["Esta sala de conversação já não existe"],"Enter groupchat":["Entrar no groupchat"],"Please choose your nickname":["Por favor escolha seu apelido"],"This groupchat requires a password":["Essa sala de bate papo precisa de palavra-passe"],"Password: ":["Palavra-passe: "],"Submit":["Enviar"],"This user is a moderator.":["Esse utilizador é o moderador."],"This user can send messages in this groupchat.":["Este utilizador pode enviar mensagens nessa sala."],"This user can NOT send messages in this groupchat.":["Este utilizador NÃO pode enviar mensagens nessa sala."],"Owner":["Proprietário"],"Admin":["Administrador"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Clique para mencionar %1$s em sua mensagem."],"Participants":["Participantes"],"%1$s has entered the groupchat":["%1$s entrou no groupchat"],"%1$s has left the groupchat":["%1$s saiu do groupchat"],"%1$s is now a moderator":["%1$s é agora um moderador"],"%1$s is no longer a moderator":["%1$s não é mais um moderador"],"%1$s has been muted":["%1$s está mudo"],"Change user\'s affiliation to admin":["Mudar o utilizador para administrador"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Alterar a função do utilizador para o participante"],"Remove this groupchat":["Remover este groupchat"],"Kick user from groupchat":["Expulsar utilizador da sala"],"Write in 3rd person":["Escrever em terceira pessoa"],"Grant membership to a user":["Subscrever como utilizador membro"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Remover a habilidade do utilizador de postar mensagens"],"Change your nickname":["Escolha seu apelido"],"Grant moderator role to user":["Transformar utilizador em moderador"],"Grant ownership of this groupchat":["Conceder a propriedade desse batepapo"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Definir tópico do bate-papo"],"Set groupchat subject (alias for /subject)":["Definir o assunto do bate-papo (nome para/ assunto)"],"Allow muted user to post messages":["Permitir que o utilizador mudo publique mensagens"],"You are about to retract this message.":["Está prestes a retrair esta mensagem."],"You may optionally include a message, explaining the reason for the retraction.":["Pode opcionalmente incluir uma mensagem, a explicar o motivo da retração."],"Message Retraction":["Retração de Mensagem"],"Optional reason":["Motivo opcional"],"A timeout occurred while trying to retract the message":["Ocorreu uma expiração enquanto tentava retrair a mensagem"],"Sorry, you\'re not allowed to retract this message.":["Desculpe, não está autorizado a retrair esta mensagem."],"Configure":[""],"Configure this groupchat":["Configurar essa sala"],"Invite someone to join this groupchat":["Convide qualquer pessoa para se juntar a esta conversação de grupo"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["Esconder a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Proibido: você não tem nas permissões necessárias para fazer isso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Proibido: você não tem a afiliação necessária para fazer isso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erro: O comando \\"%1$s\\" precisa de dois argumentos, o apelido e opcionalmente a razão."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["por exemplo, utilizador@exemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Erro: número de argumentos inválido"],"This action was done by %1$s.":["Esta ação foi realizada por %1$s ."],"The reason given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"Groupchats":["Salas"],"Add a new groupchat":["Adicionar uma nova sala"],"Query for groupchats":["Consulta para Groupchats"],"Announcements":[""],"Notification from %1$s":["Mensagem de %1$s"],"%1$s says":["%1$s diz"],"has gone offline":["ficou offline"],"has gone away":["Este contato saiu"],"is busy":["ocupado"],"has come online":["Ficou on-line"],"wants to be your contact":["Quer ser seu contato"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Sobre"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":["%1$s Traduzir %2$s para seu próprio idioma"],"Log out":["Sair"],"Click to change your chat status":["Clique para mudar seu status no chat"],"Show details about this chat client":["Mostrar detalhes sobre este cliente de conversação"],"Your avatar image":["A imagem do seu avatar"],"Checkbox for selecting the following fingerprint":["Caixa de verificação para seleccionar a impressão digital seguinte"],"Device without a fingerprint":["Aparelho sem uma assinatura digital"],"Other OMEMO-enabled devices":["Outros aparelhos habilitados para OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Caixa de seleção para selecionar impressões digitais de todos os outros aparelhos OMEMO"],"Remove checked devices and close":["Remover os aparelhos verificados e fechar"],"Select all":["Selecionar todos"],"This device\'s OMEMO fingerprint":["A impressão digital OMEMO deste aparelho"],"Generate new keys and fingerprint":["Gerar novas chaves e impressão digital"],"Your Profile":["Seu Perfil"],"XMPP Address (JID)":["Endereço XMPP (JID)"],"Save and close":["Salvar e fechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Use vÃrgulas para separar várias funções. Suas funções são mostradas ao lado do seu nome em suas mensagens de bate-papo."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Desculpe, ocorreu um erro ao tentar salvar seus dados de perfil."],"You can check your browser\'s developer console for any error output.":["Você pode verificar o console do desenvolvedor do seu navegador para qualquer saÃda de erro."],"Away":["Fora"],"Busy":["Ocupado"],"Custom status":["Status customizado"],"Offline":["Off-line"],"Online":["On-line"],"Away for long":["Fora por muito tempo"],"Change chat status":["Alterar o estado do chat"],"Personal status message":["Mensagem de estado pessoal"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Tem a certeza que deseja terminar a sessão?"],"online":["on-line"],"busy":["ocupado"],"away for long":["fora por muito tempo"],"away":["fora"],"offline":["off-line"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Desculpe, não foi possÃvel descriptografar uma mensagem OMEMO recebida devido a um erro."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s não parece ter um cliente que suporte OMEMO. Bate-papo criptografado não será mais possÃvel neste grouchat."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Não é possÃvel usar criptografia de ponta a ponta porque %1$s usa um cliente que não suporta a OMEMO."],"Messages are being sent in plaintext":["As mensagens estão a ser enviadas em texto simples"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Desculpe, ocorreu um erro ao tentar remover os aparelhos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Tem certeza de que deseja gerar novas chaves OMEMO? Isso removerá as chaves antigas e todas as mensagens criptografadas anteriormente não serão mais descriptografadas neste aparelho."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Desculpe, não podemos enviar uma mensagem criptografada porque %1$s requer que você se inscreva para ver suas informações OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Desculpe, não podemos enviar uma mensagem criptografada porque o servidor remoto para %1$s não pôde ser encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Não é possÃvel enviar uma mensagem criptografada, devido a um erro inesperado."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta é uma mensagem encriptada OMEMO que o seu cliente não parece suportar. Encontre mais informações em https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Inserir formulário de inscrição"],"Tip: A list of public XMPP providers is available":["Dica: uma lista de provedores XMPP públicos está disponÃvel"],"here":["aqui"],"Sorry, we\'re unable to connect to your chosen provider.":["Desculpe, não podemos conectar ao provedor escolhido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Desculpe, o provedor fornecido não oferece suporte de banda para registro da conta. Experimente com um provedor diferente."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo deu errado ao estabelecer uma conexão com \\"%1$s\\". Você tem certeza que ele existe?"],"Now logging you in":["Agora você logou"],"Registered successfully":["Registrado com sucesso"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rejeitou sua tentativa de registro. Verifique os valores que você digitou para verificar a exatidão."],"Leave this groupchat":["Deixar a sala"],"Click to toggle the list of open groupchats":["Clique para alternar a lista de salas de conversação abertas"],"Open Groupchats":["Abrir Groupchats"],"Are you sure you want to leave the groupchat %1$s?":["Tem a certeza que deseja sair da sala de conversação \\"%1$s\\"?"],"Add":["Adicionar"],"Add a Contact":["Adicionar um contato"],"This contact is busy":["Este contato está ocupado"],"This contact is online":["Este contato está online"],"This contact is offline":["Este contato está offline"],"This contact is unavailable":["Este contato está indisponÃvel"],"This contact is away for an extended period":["Este contato está ausente por um longo perÃodo"],"This contact is away":["Este contato está ausente"],"Contact name":["Nome do contato"],"Optional nickname":["Apelido Opcional"],"Sorry, could not find a contact with that name":["Desculpe, não foi possÃvel encontrar um contato com esse nome"],"This contact has already been added":["Este contacto já foi adicionado"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contacto"],"Filter by group name":["Filtrar por nome do grupo"],"Filter by status":["Filtrar por estado"],"Any":["Qualquer"],"Unread":["Não lido"],"Chatty":["Conversar"],"Extended Away":["Ausência Longa"],"Click to remove %1$s as a contact":["Clique para remover %1$s como contato"],"Click to accept the contact request from %1$s":["Clique para aceitar a solicitação de contato de %1$s"],"Click to decline the contact request from %1$s":["Clique para recusar a solicitação de contato de %1$s"],"Are you sure you want to decline this contact request?":["Tem certeza de que deseja recusar essa solicitação de contato?"],"Contacts":["Contatos"],"Add a contact":["Adicionar um contato"],"Re-sync your contacts":["Voltar a sincronizar os meus contactos"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[167],{533:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"pt"},"Create your account":["Criar a sua conta"],"Please enter the XMPP provider to register with:":["Por favor, insira o provedor XMPP para registar com:"],"Already have a chat account?":["Já tem uma conta de conversação?"],"Log in here":["Inicie a sessão aqui"],"Account Registration:":["Registo de conta:"],"Register":["Registar"],"Choose a different provider":["Escolha um provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Aguarde, nós estamos a obter o formulário de registo…"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["A ligação foi interrompida, a tentar religar."],"An error occurred while connecting to the chat server.":["Ocorreu um erro enquanto ligava ao servidor de conversação."],"Your XMPP address and/or password is incorrect. Please try again.":["O seu endereço de XMPP e/ou a palavra-passe estão incorretos. Por favor, tente novamente."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Desculpe, nós nos foi possÃvel ligar ao hospedeiro de XMPP com o domÃnio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor de XMPP não ofereceu um motor de autenticação suportado"],"Sorry, could not determine upload URL.":["Desculpe, não foi possÃvel determinar o URL de envio."],"Sorry, could not determine file upload URL.":["Desculpe, não foi possÃvel determinar o URL de envoi do ficheiro."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Desculpe, não foi possÃvel enviar o seu ficheiro com sucesso. Resposta do seu servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Desculpe, não foi possÃvel enviar o seu ficheiro com sucesso."],"Sorry, looks like file upload is not supported by your server.":["Desculpe, parece que o envio de ficheiro não é suportado pelo seu servidor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamanho do seu ficheiro, %1$s, excede o máximo permitido pelo seu servidor, que é %2$s."],"Smileys and emotions":["\\"Smileys\\" e emoções"],"People":["Pessoas"],"Activities":["Atividades"],"Travel":["Viagens"],"Objects":["Objetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":[""],"Stickers":["Autocolantes"],"This groupchat is not anonymous":["Esta sala de conversação não é anónima"],"This groupchat now shows unavailable members":["Esta sala de conversação mostra membros indisponÃveis"],"This groupchat does not show unavailable members":["Esta sala de conversação não mostra membros indisponÃveis"],"The groupchat configuration has changed":["A configuração da sala de conversação foi alterada"],"Groupchat logging is now enabled":["O inÃcio de sessão da sala de conversação está agora ativado"],"Groupchat logging is now disabled":["O inÃcio de sessão da sala de conversação está agora desativado"],"This groupchat is now no longer anonymous":["Esta sala de conversação já não é anónima"],"This groupchat is now semi-anonymous":["Esta sala de conversação agora é semi anónima"],"This groupchat is now fully-anonymous":["Esta sala de conversação agora é totalmente anónima"],"A new groupchat has been created":["Foi criada uma nova sala de conversação"],"Your nickname has been automatically set to %1$s":["O seu apelido foi definido automaticamente para %1$s"],"Your nickname has been changed to %1$s":["O seu apelido foi alterado para %1$s"],"You have been banned from this groupchat":["Foi banido desta sala de conversação"],"You have been kicked from this groupchat":["Foi expulso desta sala de conversação"],"You have been removed from this groupchat because of an affiliation change":["Foi removido da sala de conversação devido a uma alteração de afiliação"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Foi removido da sala de conversação porque esta foi alterada para somente membros e você não é um membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Foi removido da sala de conversação porque o serviço de hospedagem foi encerrado"],"Your message was not delivered because you weren\'t allowed to send it.":["A sua mensagem não foi entregue porque não está autorizado para a enviar."],"Your message was not delivered because you\'re not present in the groupchat.":["A sua mensagem não foi entregue porque não está presente na sala de conversação."],"You\'re not allowed to register yourself in this groupchat.":["Não está autorizado para se registar nesta sala de conversação."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Não está autorizado para se registar nesta sala de conversação porque é só para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Não é possÃvel registar o seu apelido nesta sala de conversação, esta não suporta o registo."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Não é possÃvel registar o seu apelido, nesta sala de conversação, o formulário de dados fornecido é inválido."],"Topic set by %1$s":["Topico definido por %1$s"],"Topic cleared by %1$s":["Topico limpo por %1$s"],"%1$s has been banned":["%1$s foi banido"],"%1$s\'s nickname has changed":["O apelido de %1$s foi alterado"],"%1$s has been kicked out":["%1$s foi expulso"],"%1$s has been removed because of an affiliation change":["%1$s foi removido devido a uma alteração de afiliação"],"%1$s has been removed for not being a member":["%1$s foi removido por não ser mais um membro"],"%1$s is no longer an admin of this groupchat":["%1$s não é mais um administrador desta sala"],"%1$s is no longer an owner of this groupchat":["%1$s não é mais um proprietário desta sala"],"%1$s is no longer banned from this groupchat":["%1$s não está mais banido desta sala"],"%1$s is now an %2$s of this groupchat":["%1$s se tornou %2$s desta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O apelido escolhido está reservado ou atualmente em uso, por favor, escolha outro."],"Password incorrect":["Palavra-passe incorreta"],"You are not on the member list of this groupchat.":["Não faz parte da lista de membros desta sala de conversação."],"You have been banned from this groupchat.":["Foi banido desta sala de conversação."],"You are not allowed to create new groupchats.":["Não está autorizado a criar novas salas de conversação."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["O seu apelido não está de acordo com as polÃticas desta sala de conversação."],"This groupchat does not (yet) exist.":["Esta sala de conversação (ainda) não existe."],"This groupchat has reached its maximum number of participants.":["A sala de conversação atingiu o número máximo de participantes."],"Remote server not found":["Servidor remoto não encontrado"],"The explanation given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidou-o para se juntar numa sala de conversação: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidou-o para se juntar numa sala de conversação: %2$s, e deixou o seguinte motivo: \\"%3$s\\""],"Error":["Erro"],"Sorry, something went wrong while trying to save your bookmark.":["Desculpe, ocorreu algo de errado enquanto tentava guardar o seu favorito."],"Timeout Error":["Erro de Expiração"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Meus contactos"],"Pending contacts":["Contactos pendentes"],"Contact requests":["Pedidos de contacto"],"Ungrouped":["Desagrupado"],"New messages":["Novas mensagens"],"Sorry, there was an error while trying to add %1$s as a contact.":["Desculpe, ocorreu um erro enquanto tentava adicionar %1$s como um contacto."],"This client does not allow presence subscriptions":["Este cliente não permite subscrições de presença"],"Click to hide these contacts":["Clique para ocultar estes contactos"],"Unbookmark this groupchat":["Remover esta sala de conversação dos favoritos"],"Click to open this groupchat":["Clique para abrir esta sala de conversação"],"Click to toggle the bookmarks list":["Clique para alternar a lista de favoritos"],"Bookmarks":["Favoritos"],"Bookmark this groupchat":["Marcar esta sala de conversação"],"Would you like this groupchat to be automatically joined upon startup?":["Deseja que esta sala de conversação seja associada automaticamente na inicialização?"],"The name for this bookmark:":["Nome para o favorito:"],"What should your nickname for this groupchat be?":["Qual deve ser o seu apelido para esta sala?"],"Save":["Salvar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Tem certeza de que deseja remover o favorito \\"%1$s\\"?"],"Close":["Fechar"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Transferir o ficheiro de áudio \\"%1$s\\""],"Download file \\"%1$s\\"":["Transferir ficheiro \\"%1$s"],"Edit":[""],"Retract":[""],"Message versions":["Versões da mensagem"],"Retry":[""],"Uploading file:":["A enviar ficheiro:"],"%1$s has removed this message":["%1$s removeu esta mensagem"],"This message has been edited":["Esta mensagem foi editada"],"Show more":["Mostrar mais"],"No message history available.":["Sem histórico de mensagens disponÃvel."],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":["Enviar a mensagem"],"Start a call":[""],"Message characters remaining":["Carateres restantes da mensagem"],"Choose a file to send":["Escolha um ficheiro para enviar"],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Imagem de Perfil do Utilizador"],"Trusted":["Confiado"],"Untrusted":["Desconfiado"],"OMEMO Fingerprints":["Impressões digitais OMEMO"],"No OMEMO-enabled devices found":["Não foram encontrados dispositivos preparados para OMEMO"],"Remove as contact":["Remover como contacto"],"XMPP Address":["Endereço de XMPP"],"Email":["E-mail"],"Full Name":["Nome completo"],"Nickname":["Apelido"],"Refresh":["Atualizar"],"Role":["Função"],"URL":["URL"],"%1$s is typing":["%1$s está a digitar"],"%1$s has stopped typing":["%1$s parou de digitar"],"%1$s has gone away":["%1$s está ausente"],"Remove messages":["Remover mensagens"],"Close this chat":["Feche esta conversação de grupo"],"Write in the third person":["Escrever em terceira pessoa"],"Show this menu":["Mostrar o menu"],"Hidden message":["Mensagem oculta"],"Message":["Mensagem"],"Optional hint":["Dica Opcional"],"You have unread messages":["Você tem mensagens não lidas"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":["Tem a certeza de que deseja retrair esta mensagem?"],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Tem certeza que deseja limpar as mensagens dessa conversa?"],"%1$s has gone offline":["%1$s está offline"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está online"],"Sorry, something went wrong while trying to refresh":["Desculpe, algo deu errado ao tentar atualizar"],"Are you sure you want to remove this contact?":["Tem certeza de que deseja remover esse contato?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Desculpe, houve um erro ao tentar remover o contato %1$s ."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para melhorar o desempenho, armazenamos os seus dados em cache neste navegador. Desmarque esta caixa se este for um computador público ou se pretender que os seus dados sejam apagados quando terminar a sessão. É importante que você se desconecte explicitamente, caso contrário não todos os dados armazenados em cache podem ser apagados. Observe que, ao usar um aparelho não confiável, a criptografia OMEMO NÃO está disponÃvel."],"This is a trusted device":["Este é um aparelho confiável"],"Password":["Palavra-passe"],"Create an account":["Criando uma conta"],"Don\'t have a chat account?":["Não possui uma conta de bate papo?"],"Log in":["Iniciar sessão"],"Disconnected":[""],"Click here to log in anonymously":["Clique aqui para efetuar o login anonimamente"],"Username":["Utilizador"],"user@domain":["utilizador@domÃnio"],"Please enter a valid XMPP address":["Por favor entre com um endereço XMPP válido"],"Chat Contacts":["Contatos"],"Toggle chat":["Alternar bate-papo"],"Click to restore this chat":["Clique para restaurar este bate-papo"],"Minimized":["Minimizado"],"Minimize this groupchat":["Minimizar esta conversação de grupo"],"This user is a moderator.":["Esse utilizador é o moderador."],"This user can send messages in this groupchat.":["Este utilizador pode enviar mensagens nessa sala."],"This user can NOT send messages in this groupchat.":["Este utilizador NÃO pode enviar mensagens nessa sala."],"Owner":["Proprietário"],"Admin":["Administrador"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Clique para mencionar %1$s em sua mensagem."],"Participants":["Participantes"],"This field is required":["Este campo é obrigatório"],"Join":["Entrar"],"Enter a new Groupchat":["Entrar em uma nova sala"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Endereço da groupchat"],"Groupchat address":["Endereço da sala"],"Groupchat id is invalid.":["A id. da conversação de grupo é inválida."],"Invite":["convite"],"Invite someone to this groupchat":["Convidar qualquer pessoa para esta conversação de grupo"],"user@example.org":["por exemplo, utilizador@exemplo.org"],"Optional reason for the invitation":["Motivo opcional para o convite"],"Show groupchats":["Mostrar Salas"],"Server address":["Endereço do Servidor"],"Show more information on this groupchat":["Mostrar mais informações dessa sala"],"Query for Groupchats":["Consulta para Groupchats"],"Description:":["Descrição:"],"Groupchat Address (JID):":["Endereço da sala (JID):"],"Participants:":["Participantes:"],"Features:":["Recursos:"],"Requires authentication":["Requer autenticação"],"Hidden":["Escondido"],"Requires an invitation":["Requer um convite"],"Moderated":["Moderado"],"Non-anonymous":["Não anônimo"],"Open":["Sala aberta"],"Permanent":["Sala permanente"],"Public":["Público"],"Semi-anonymous":["Semi anônimo"],"Temporary":["Temporário"],"Unmoderated":["Sem moderação"],"conference.example.org":["conferencia.exemplo.org"],"No groupchats found":["Nenhuma sala encontrada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["Alterar função"],"New Role":["Nova Função"],"Reason":[""],"Change affiliation":["Alterar afiliação"],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":["Ferramentas de Moderador"],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":["Mostrar utilizadores"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Sorry, something went wrong while trying to set the affiliation":["Desculpe, ocorreu algo de errado enquanto tentava definir a afiliação"],"Affiliation changed":[""],"Role changed":["Função alterada"],"You\'re not allowed to make that change":["Não está autorizado a efetuar essa alteração"],"Sorry, something went wrong while trying to set the role":["Desculpe, ocorreu algo de errado enquanto tentava definir a função"],"Topic":["Tópico"],"Topic author":["Autor do tópico"],"Groupchat address (JID)":["Endereço da sala de conversação (JID)"],"Message archiving":["Arquivando mensagem"],"Messages are archived on the server":["As mensagens são arquivadas no servidor"],"Description":["Descrição"],"Features":["Recursos"],"This groupchat is not publicly searchable":["Esta conversação de grupo não aparece nas pesquisas públicas"],"This groupchat is restricted to members only":["Este groupchat é restrito apenas aos membros"],"Members only":["Apenas membros"],"Participants entering this groupchat need to request permission to write":["Os participantes que entram neste groupchat precisam solicitar permissão para escrever"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Essa sala não precisa de palavra-passe para entrar"],"No password required":["Nenhuma palavra-passe necessária"],"Not anonymous":["Não anónimo"],"All other groupchat participants can see your XMPP address":["Todos os outros participantes da conversação de grupo podem ver o seu endereço de XMPP"],"Not moderated":["Não moderada"],"Participants entering this groupchat can write right away":["Os participantes que entram neste groupchat podem escrever imediatamente"],"Online users":["Utilizadores On-line"],"Anyone can join this groupchat":["Qualquer um pode juntar-se a esta conversação de grupo"],"This groupchat requires a password before entry":["Essa sala precisa de palavra-passe antes de entrar"],"Password protected":["Protegido por palavra-passe"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Esta conversação de grupo existe mesmo se vazia"],"Only moderators can see your XMPP address":["Apenas os moderadores podem ver o seu endereço de XMPP"],"This groupchat will disappear once the last person leaves":["Esta conversação de grupo deixará de existir quando todas as pessoas saÃrem"],"This groupchat is publicly searchable":["Esta conversação de grupo pode ser pesquisada publicamente"],"Groupchat info for %1$s":["Informações da sala em grupo para %1$s"],"You\'re not allowed to send messages in this room":["Não está autorizado para enviar mensagens nesta sala"],"The conversation has moved. Click below to enter.":["A conversação foi movida. Clique em baixo para entrar."],"This groupchat no longer exists":["Esta sala de conversação já não existe"],"Enter groupchat":["Entrar no groupchat"],"Please choose your nickname":["Por favor escolha seu apelido"],"This groupchat requires a password":["Essa sala de bate papo precisa de palavra-passe"],"Password: ":["Palavra-passe: "],"Submit":["Enviar"],"%1$s has entered the groupchat":["%1$s entrou no groupchat"],"%1$s has left the groupchat":["%1$s saiu do groupchat"],"%1$s is now a moderator":["%1$s é agora um moderador"],"%1$s is no longer a moderator":["%1$s não é mais um moderador"],"%1$s has been muted":["%1$s está mudo"],"Change user\'s affiliation to admin":["Mudar o utilizador para administrador"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Alterar a função do utilizador para o participante"],"Remove this groupchat":["Remover este groupchat"],"Kick user from groupchat":["Expulsar utilizador da sala"],"Write in 3rd person":["Escrever em terceira pessoa"],"Grant membership to a user":["Subscrever como utilizador membro"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Remover a habilidade do utilizador de postar mensagens"],"Change your nickname":["Escolha seu apelido"],"Grant moderator role to user":["Transformar utilizador em moderador"],"Grant ownership of this groupchat":["Conceder a propriedade desse batepapo"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Definir tópico do bate-papo"],"Set groupchat subject (alias for /subject)":["Definir o assunto do bate-papo (nome para/ assunto)"],"Allow muted user to post messages":["Permitir que o utilizador mudo publique mensagens"],"You are about to retract this message.":["Está prestes a retrair esta mensagem."],"You may optionally include a message, explaining the reason for the retraction.":["Pode opcionalmente incluir uma mensagem, a explicar o motivo da retração."],"Message Retraction":["Retração de Mensagem"],"Optional reason":["Motivo opcional"],"A timeout occurred while trying to retract the message":["Ocorreu uma expiração enquanto tentava retrair a mensagem"],"Sorry, you\'re not allowed to retract this message.":["Desculpe, não está autorizado a retrair esta mensagem."],"Configure":[""],"Configure this groupchat":["Configurar essa sala"],"Invite someone to join this groupchat":["Convide qualquer pessoa para se juntar a esta conversação de grupo"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["Esconder a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Proibido: você não tem nas permissões necessárias para fazer isso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Proibido: você não tem a afiliação necessária para fazer isso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erro: O comando \\"%1$s\\" precisa de dois argumentos, o apelido e opcionalmente a razão."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["por exemplo, utilizador@exemplo.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Erro: número de argumentos inválido"],"This action was done by %1$s.":["Esta ação foi realizada por %1$s ."],"The reason given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"Groupchats":["Salas"],"Add a new groupchat":["Adicionar uma nova sala"],"Query for groupchats":["Consulta para Groupchats"],"Announcements":[""],"Notification from %1$s":["Mensagem de %1$s"],"%1$s says":["%1$s diz"],"has gone offline":["ficou offline"],"has gone away":["Este contato saiu"],"is busy":["ocupado"],"has come online":["Ficou on-line"],"wants to be your contact":["Quer ser seu contato"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Sobre"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":["%1$s Traduzir %2$s para seu próprio idioma"],"Log out":["Sair"],"Click to change your chat status":["Clique para mudar o seu estado no chat"],"Show details about this chat client":["Mostrar detalhes sobre este cliente de conversação"],"Your avatar image":["A imagem do seu avatar"],"Checkbox for selecting the following fingerprint":["Caixa de verificação para seleccionar a impressão digital seguinte"],"Device without a fingerprint":["Aparelho sem uma assinatura digital"],"Other OMEMO-enabled devices":["Outros aparelhos ativado para OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Caixa de seleção para selecionar impressões digitais de todos os outros aparelhos OMEMO"],"Remove checked devices and close":["Remover os aparelhos verificados e fechar"],"Select all":["Selecionar todos"],"This device\'s OMEMO fingerprint":["A impressão digital OMEMO deste aparelho"],"Generate new keys and fingerprint":["Gerar novas chaves e impressão digital"],"Your Profile":["Seu Perfil"],"XMPP Address (JID)":["Endereço XMPP (JID)"],"Save and close":["Salvar e fechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Use vÃrgulas para separar várias funções. Suas funções são mostradas ao lado do seu nome em suas mensagens de bate-papo."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Desculpe, ocorreu um erro ao tentar salvar seus dados de perfil."],"You can check your browser\'s developer console for any error output.":["Você pode verificar o console do desenvolvedor do seu navegador para qualquer saÃda de erro."],"Away":["Fora"],"Busy":["Ocupado"],"Custom status":["Estado customizado"],"Offline":["Off-line"],"Online":["On-line"],"Away for long":["Fora por muito tempo"],"Change chat status":["Alterar o estado do chat"],"Personal status message":["Mensagem de estado pessoal"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Tem a certeza que deseja terminar a sessão?"],"online":["on-line"],"busy":["ocupado"],"away for long":["fora por muito tempo"],"away":["fora"],"offline":["off-line"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Desculpe, não foi possÃvel descriptografar uma mensagem OMEMO recebida devido a um erro."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s não parece ter um cliente que suporte OMEMO. Bate-papo criptografado não será mais possÃvel neste grouchat."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Não é possÃvel usar criptografia de ponta a ponta porque %1$s usa um cliente que não suporta a OMEMO."],"Messages are being sent in plaintext":["As mensagens estão a ser enviadas em texto simples"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Desculpe, não podemos enviar uma mensagem criptografada porque %1$s requer que você se inscreva para ver suas informações OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Desculpe, não podemos enviar uma mensagem criptografada porque o servidor remoto para %1$s não pôde ser encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Não é possÃvel enviar uma mensagem criptografada, devido a um erro inesperado."],"Sorry, an error occurred while trying to remove the devices.":["Desculpe, ocorreu um erro ao tentar remover os aparelhos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Tem certeza de que deseja gerar novas chaves OMEMO? Isso removerá as chaves antigas e todas as mensagens criptografadas anteriormente não serão mais descriptografadas neste aparelho."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta é uma mensagem encriptada OMEMO que o seu cliente não parece suportar. Encontre mais informações em https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Inserir formulário de inscrição"],"Tip: A list of public XMPP providers is available":["Dica: uma lista de provedores XMPP públicos está disponÃvel"],"here":["aqui"],"Sorry, we\'re unable to connect to your chosen provider.":["Desculpe, não podemos conectar ao provedor escolhido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Desculpe, o provedor fornecido não oferece suporte de banda para registro da conta. Experimente com um provedor diferente."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo deu errado ao estabelecer uma conexão com \\"%1$s\\". Você tem certeza que ele existe?"],"Now logging you in":["Agora você logou"],"Registered successfully":["Registrado com sucesso"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rejeitou sua tentativa de registro. Verifique os valores que você digitou para verificar a exatidão."],"Leave this groupchat":["Deixar a sala"],"Click to toggle the list of open groupchats":["Clique para alternar a lista de salas de conversação abertas"],"Open Groupchats":["Abrir Groupchats"],"Are you sure you want to leave the groupchat %1$s?":["Tem a certeza que deseja sair da sala de conversação \\"%1$s\\"?"],"Add":["Adicionar"],"Add a Contact":["Adicionar um contato"],"This contact is busy":["Este contato está ocupado"],"This contact is online":["Este contato está online"],"This contact is offline":["Este contato está offline"],"This contact is unavailable":["Este contato está indisponÃvel"],"This contact is away for an extended period":["Este contato está ausente por um longo perÃodo"],"This contact is away":["Este contato está ausente"],"Contact name":["Nome do contato"],"Optional nickname":["Apelido Opcional"],"Sorry, could not find a contact with that name":["Desculpe, não foi possÃvel encontrar um contato com esse nome"],"This contact has already been added":["Este contacto já foi adicionado"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contacto"],"Filter by group name":["Filtrar por nome do grupo"],"Filter by status":["Filtrar por estado"],"Any":["Qualquer"],"Unread":["Não lido"],"Chatty":["Conversar"],"Extended Away":["Ausência Longa"],"Click to remove %1$s as a contact":["Clique para remover %1$s como contato"],"Click to accept the contact request from %1$s":["Clique para aceitar a solicitação de contato de %1$s"],"Click to decline the contact request from %1$s":["Clique para recusar a solicitação de contato de %1$s"],"Are you sure you want to decline this contact request?":["Tem certeza de que deseja recusar essa solicitação de contato?"],"Contacts":["Contatos"],"Add a contact":["Adicionar um contato"],"Re-sync your contacts":["Voltar a sincronizar os meus contactos"]}}}')}}]); //# sourceMappingURL=pt-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/pt_BR-LC_MESSAGES-converse-po.js b/src/conversejs/locales/pt_BR-LC_MESSAGES-converse-po.js index a1346cdf6db5bfb923687549e657654aa3a84f37..40a262edf98c52de9c437dd5c5b2f048fc724f98 100644 --- a/src/conversejs/locales/pt_BR-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/pt_BR-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{446:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"pt_BR"},"Create your account":["Criar sua conta"],"Please enter the XMPP provider to register with:":["Por favor entre com o provedor XMPP para registro:"],"Already have a chat account?":["Já possui uma conta de bate-papo?"],"Log in here":["Login aqui"],"Account Registration:":["Registro de Conta:"],"Register":["Registro"],"Choose a different provider":["Escolha um provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Espere, estamos carregando o formulário de inscrição …"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["A conexão caiu, tentando se reconectar."],"An error occurred while connecting to the chat server.":["Ocorreu um erro ao se conectar ao servidor de bate-papo."],"Your XMPP address and/or password is incorrect. Please try again.":["Seu endereço ID XMPP e/ou sua senha estão incorretas. Por favor, tente novamente."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Desculpe, não conseguimos nos conectar ao host XMPP com domÃnio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor XMPP não ofereceu um mecanismo de autenticação suportado"],"Sorry, could not determine upload URL.":["Desculpe, não foi possÃvel determinar a URL para upload."],"Sorry, could not determine file upload URL.":["Desculpe, não foi possÃvel determinar o endereço para upload de arquivos."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Desculpe, não foi possÃvel realizar o upload de seu arquivo. Resposta do servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Desculpe, não foi possÃvel realizar o upload de seu arquivo."],"You\'re not allowed to retract your message.":["Você não está autorizado a retrair sua mensagem."],"Sorry, an error occurred while trying to retract your message.":["Desculpe, ocorreu um erro ao tentar retrair sua mensagem."],"You\'re not allowed to send a message.":["Você não está autorizado a enviar uma mensagem."],"Sorry, an error occurred while trying to send your message.":["Desculpe, ocorreu um erro ao tentar enviar sua mensagem."],"Sorry, looks like file upload is not supported by your server.":["Desculpe, parece que o upload de arquivos não é suportado por seu servidor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamanho do arquivo, %1$s, excede o tamanho máximo permitido por seu servidor, que é %2$s."],"Smileys and emotions":["Smileys e emoticons"],"People":["Pessoas"],"Activities":["Atividades"],"Travel":["Viagem"],"Objects":["Objetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":["Bandeiras"],"Stickers":["Adesivos"],"This groupchat is not anonymous":["Essa sala não é anônima"],"This groupchat now shows unavailable members":["Agora esta sala mostra membros indisponÃveis"],"This groupchat does not show unavailable members":["Essa sala não mostra membros indisponÃveis"],"The groupchat configuration has changed":["A configuração da sala mudou"],"Groupchat logging is now enabled":["O log da sala está ativado"],"Groupchat logging is now disabled":["O log da sala está desativado"],"This groupchat is now no longer anonymous":["Essa sala não é mais anônima"],"This groupchat is now semi-anonymous":["Essa sala agora é semi anônima"],"This groupchat is now fully-anonymous":["Essa sala agora é totalmente anônima"],"A new groupchat has been created":["Uma nova sala foi criada"],"Your nickname has been automatically set to %1$s":["Seu apelido foi mudado automaticamente para %1$s"],"Your nickname has been changed to %1$s":["Seu apelido foi mudado para %1$s"],"You have been banned from this groupchat":["Você foi banido dessa sala"],"You have exited this groupchat due to a technical problem":["Você saiu deste grupo devido a um problema técnico"],"You have been kicked from this groupchat":["Você foi expulso dessa sala"],"You have been removed from this groupchat because of an affiliation change":["Você foi removido da sala devido a uma mudança de associação"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Você foi removido da sala porque ela foi mudada para somente membros e você não é um membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Você foi removido da sala porque o serviço está sendo desligado"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Sua retração não foi entregue porque você não está presente no grupo."],"Your message was not delivered because you weren\'t allowed to send it.":["Sua mensagem não foi entregue porque você não tem permissão para enviá-la."],"Your message was not delivered because you\'re not present in the groupchat.":["Sua mensagem não foi entregue porque você não está presente na sala."],"A timeout happened while while trying to retract your message.":["O tempo esgotou enquanto tentava retrair sua mensagem."],"You\'re not allowed to register yourself in this groupchat.":["Você não tem permissão de se registrar nessa sala."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Você não tem permissão de entrar nessa sala porque ela é apenas para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Não é possÃvel registrar apelidos nesta sala, pois não suporta registro."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Não é possÃvel registrar seu apelido nesta sala, formulário de dados inválido."],"Topic set by %1$s":["Tópico definido por %1$s"],"Topic cleared by %1$s":["Tópico liberado por %1$s"],"%1$s has been banned by %2$s":["%1$s foi banido por %2$s"],"%1$s has been banned":["%1$s foi banido"],"%1$s\'s nickname has changed":["O apelido de %1$s foi alterado"],"%1$s has been kicked out by %2$s":["%1$s foi expulso por %2$s"],"%1$s has been kicked out":["%1$s foi expulso"],"%1$s has been removed because of an affiliation change":["%1$s foi removido por causa de troca de associação"],"%1$s has been removed for not being a member":["%1$s foi removido por não ser mais um membro"],"%1$s is no longer an admin of this groupchat":["%1$s não é mais um administrador desta sala"],"%1$s is no longer an owner of this groupchat":["%1$s não é mais um proprietário desta sala"],"%1$s is no longer banned from this groupchat":["%1$s não está mais banido desta sala"],"%1$s is no longer a member of this groupchat":["%1$s não é mais um membro deste grupo"],"%1$s is now a member of this groupchat":["%1$s se tornou um membro desta sala"],"%1$s is now an %2$s of this groupchat":["%1$s se tornou %2$s desta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O apelido escolhido está atualmente em uso, por favor escolha outro."],"Password incorrect":["Senha incorreta"],"You are not on the member list of this groupchat.":["Você não é membro dessa sala."],"You have been banned from this groupchat.":["Você foi banido deste bate-papo em grupo."],"You are not allowed to create new groupchats.":["Você não tem permissão de criar novas salas."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Seu apelido não está de acordo com as regras da sala."],"This groupchat does not (yet) exist.":["Esta sala não existe (ainda)."],"This groupchat has reached its maximum number of participants.":["Esta sala atingiu o número máximo de ocupantes."],"Remote server not found":["Servidor remoto não encontrado"],"The explanation given is: \\"%1$s\\".":["A explicação dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidou você para entrar na sala: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidou você a participar de uma sala de bate-papo: %2$s, por seguinte motivo: \\"%3$s\\""],"Error":["Erro"],"Sorry, something went wrong while trying to save your bookmark.":["Desculpe, algo deu errado ao tentar salvar seu favorito."],"Timeout Error":["Erro de tempo limite"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["O servidor não retornou seus favoritos dentro do tempo permitido. Você pode recarregar a página para solicitá-los novamente."],"My contacts":["Meus contatos"],"Pending contacts":["Contados pendentes"],"Contact requests":["Solicitação de contatos"],"Ungrouped":["Desagrupado"],"New messages":["Novas mensagens"],"Sorry, there was an error while trying to add %1$s as a contact.":["Desculpe, houve um erro ao tentar adicionar %1$s como um contato."],"This client does not allow presence subscriptions":["Este cliente não permite assinaturas de presença"],"Click to hide these contacts":["Clique para esconder esses contatos"],"Unbookmark this groupchat":["Desmarcar a sala"],"Click to open this groupchat":["Clique para abrir essa sala"],"Click to toggle the bookmarks list":["Clique para alternar a lista de favoritos"],"Bookmarks":["Favoritos"],"Bookmark this groupchat":["Marcar essa sala nos favoritos"],"Would you like this groupchat to be automatically joined upon startup?":["Gostaria de entrar nessa sala automaticamente quando iniciar?"],"The name for this bookmark:":["Nome para o favorito:"],"What should your nickname for this groupchat be?":["Qual deve ser o seu apelido para esta sala?"],"Save":["Salvar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Tem certeza de que deseja remover o favorito \\"%1$s\\"?"],"Unbookmark":["Excluir de favoritos"],"Bookmark":["Favoritos"],"Close":["Fechar"],"OK":["OK"],"Image: ":["Imagem: "],"Download audio file \\"%1$s\\"":["Baixar arquivo de audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Baixar arquivo \\"%1$s\\""],"Cancel Editing":["Anular edição"],"Edit":["Editar"],"Retract":["Retirar"],"Message versions":["Versões de mensagem"],"Retry":["Tentar de novo"],"Uploading file:":["Fazendo upload de arquivo:"],"%1$s has removed this message":["%1$s excluiu esta mensagem"],"This message has been edited":["Esta mensagem foi editada"],"Show more":["Mostrar mais"],"Show less":["Mostrar menos"],"No message history available.":["Nenhum histórico de mensagens disponÃvel."],"Search results":["Procurar resultados"],"Search":["Procurar"],"Insert emojis":["Inserir emojis"],"Send the message":["Envie esta mensagem"],"Start a call":["Iniciar chamada"],"Message characters remaining":["Caracteres de mensagem restantes"],"Hide participants":["Ocultar participantes"],"Show participants":["Mostrar participantes"],"Choose a file to send":["Escolha um arquivo para enviar"],"Click to write as a normal (non-spoiler) message":["Clique para escrever como uma mensagem normal (sem estragar surpresa)"],"Click to write your message as a spoiler":["Clique para escrever sua mensagem como um Spoiler"],"The User\'s Profile Image":["A imagem de perfil do usuário"],"Trusted":["Confiável"],"Untrusted":["Não confiável"],"OMEMO Fingerprints":["OMEMO Impressões digitais"],"No OMEMO-enabled devices found":["Dispositivos com OMEMO ativado não encontrados"],"Remove as contact":["Remover contato"],"XMPP Address":["Endereço XMPP"],"Email":["Email"],"Full Name":["Nome Completo"],"Nickname":["Apelido"],"Refresh":["Atualizar"],"Role":["Função"],"URL":["URL"],"%1$s is typing":["%1$s está digitando"],"%1$s has stopped typing":["%1$s parou de digitar"],"%1$s has gone away":["%1$s está ausente"],"Remove messages":["Remover mensagens"],"Close this chat":["Feche este bate-papo"],"Write in the third person":["Escrever em terceira pessoa"],"Show this menu":["Mostrar o menu"],"Hidden message":["Mensagem oculta"],"Message":["Mensagem"],"Optional hint":["Dica Opcional"],"You have unread messages":["Você tem mensagens não lidas"],"Details":["Detalhes"],"See more information about this person":["Mostrar mais informações sobre esta pessoa"],"Close and end this conversation":["Encerrar e finalizar esta conversa"],"Sorry, the connection has been lost, and your message could not be sent":["Desculpe, a conexão caiu, por isto sua mensagem não podia ser enviada"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Esteja ciente de que outros clientes de XMPP/Jabber (e servidores) podem ainda não suportar retrações e que esta mensagem pode não ser excluÃda em todos os lugares."],"Are you sure you want to retract this message?":["Tem certeza que deseja retrair esta mensagem?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Você tem uma mensagem não enviada que será perdida se você continuar. Você tem certeza?"],"Are you sure you want to clear the messages from this conversation?":["Tem certeza que deseja limpar as mensagens dessa conversa?"],"%1$s has gone offline":["%1$s está offline"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está online"],"Sorry, something went wrong while trying to refresh":["Desculpe, algo deu errado ao tentar atualizar"],"Are you sure you want to remove this contact?":["Tem certeza de que deseja remover esse contato?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Desculpe, houve um erro ao tentar remover o contato %1$s ."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para melhorar a performance, armazenamos dados em seu navegador. Desmarque esta caixa se estiver em um computador público ou se quiser que seus dados sejam apagados quando sair. É importante que explicitamente saia da aplicação, cado contrário nem todos os dados armazenados serão apagados. Por favor, note que quando usando um dispositivo não confiável, a criptografia OMEMO não estará disponÃvel."],"This is a trusted device":["Este é um dispositivo confiável"],"Password":["Senha"],"Create an account":["Criando uma conta"],"Don\'t have a chat account?":["Não possui uma conta de bate papo?"],"Log in":["Entrar"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Clique aqui para efetuar o login anonimamente"],"Username":["Usuário"],"user@domain":["usuário@domÃnio"],"Please enter a valid XMPP address":["Por favor entre com um endereço XMPP válido"],"Chat Contacts":["Contatos"],"Toggle chat":["Alternar bate-papo"],"Click to restore this chat":["Clique para restaurar este bate-papo"],"Minimized":["Minimizado"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar este bate papo"],"Minimize this groupchat":["Minimizar este grupo"],"This field is required":["Este campo é obrigatório"],"Join":["Entrar"],"Enter a new Groupchat":["Entrar em uma nova sala"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Nome da sala"],"Groupchat address":["Endereço da sala"],"Groupchat id is invalid.":["ID do Grupo é inválido."],"Invite":["convite"],"Invite someone to this groupchat":["Convide alguém para este grupo"],"user@example.org":["usuário@exemplo.org"],"Optional reason for the invitation":["Motivo opcional para o convite"],"Show groupchats":["Mostrar Salas"],"Server address":["Endereço do Servidor"],"Show more information on this groupchat":["Mostrar mais informações dessa sala"],"Query for Groupchats":["Consulta do bate papo"],"Description:":["Descrição:"],"Groupchat Address (JID):":["Endereço da sala (JID):"],"Participants:":["Participantes:"],"Features:":["Recursos:"],"Requires authentication":["Requer autenticação"],"Hidden":["Escondido"],"Requires an invitation":["Requer um convite"],"Moderated":["Moderado"],"Non-anonymous":["Não anônimo"],"Open":["Sala aberta"],"Permanent":["Sala permanente"],"Public":["Público"],"Semi-anonymous":["Semi anônimo"],"Temporary":["Temporário"],"Unmoderated":["Sem moderação"],"conference.example.org":["conferencia.exemplo.org"],"Groupchats found":["Salas encontradas"],"No groupchats found":["Nenhuma sala encontrada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderadores são usuários privilegiados que podem alterar as funções de outros usuários (exceto aqueles com funções de administrador ou proprietário)."],"The default role, implies that you can read and write messages.":["A função padrão implica que você pode ler e gravar mensagens."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Visitantes não têm permissão para escrever mensagens em um bate-papo moderado para vários usuários."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietário é a afiliação mais alta. Os proprietários podem modificar funções e afiliações de todos os outros usuários."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin é a segunda maior afiliação. Os administradores podem modificar funções e afiliações de todos os outros usuários, exceto proprietários."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para banir um usuário, você atribui a ele a afiliação de \\"banido\\"."],"Change role":["Alterar função"],"New Role":["Nova função"],"Reason":["Razão"],"Change affiliation":["Alterar afiliação"],"New affiliation":["Nova afiliação"],"Affiliation":["Afiliação"],"Moderator Tools":["Ferramentas de Moderação"],"No users with that affiliation found.":["Nenhum usuário com essa afiliação encontrado."],"No users with that role found.":["Nenhum usuário com essa função encontrado."],"Type here to filter the search results":["Digite aqui para filtrar os resultados da busca"],"Show users":["Mostrar usuários"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["As funções são atribuÃdas aos usuários para conceder ou negar certas habilidades em um bate-papo com vários usuários. Eles são atribuÃdos explÃcita ou implicitamente como parte de uma afiliação. Uma função que não é devida a uma afiliação, é válida apenas pela duração da sessão do usuário."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Uma afiliação é um direito de longa duração que normalmente implica uma certa função e que concede privilégios e responsabilidades. Por exemplo, administradores e proprietários têm automaticamente a função de moderador."],"Timeout error while trying to set the affiliation":["O tempo esgotou ao tentar definir a afiliação"],"Sorry, you\'re not allowed to make that change":["Desculpe, você não está autorizado a fazer essa alteração"],"Sorry, something went wrong while trying to set the affiliation":["Desculpe, algo deu errado enquanto tentava definir a afiliação"],"Affiliation changed":["Afiliação alterada"],"Role changed":["Função alterada"],"You\'re not allowed to make that change":["Você não está autorizado a fazer essa alteração"],"Sorry, something went wrong while trying to set the role":["Desculpe, algo deu errado enquanto tentava definir a função"],"Topic":["Tópico"],"Topic author":["Autor do tópico"],"Groupchat address (JID)":["Endereço da sala (JID)"],"Message archiving":["Arquivando mensagem"],"Messages are archived on the server":["As mensagens são arquivadas no servidor"],"Description":["Descrição"],"Features":["Recursos"],"This groupchat is not publicly searchable":["Essa sala não aparece em pesquisas públicas"],"This groupchat is restricted to members only":["Essa sala é restrita apenas para membros"],"Members only":["Apenas membros"],"Participants entering this groupchat need to request permission to write":["Os participantes entrando nesta sala devem solicitar permissão para escrever"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Essa sala não precisa de senha para entrar"],"No password required":["Nenhuma senha necessária"],"Not anonymous":["Não anônimo"],"All other groupchat participants can see your XMPP address":["Todos os outros ocupantes da sala podem ver seu endereço XMPP"],"Not moderated":["Não moderada"],"Participants entering this groupchat can write right away":["Participantes entrando nesta sala podem escrever diretamente"],"Online users":["Usuários Online"],"Anyone can join this groupchat":["Qualquer um pode se juntar a essa sala"],"This groupchat requires a password before entry":["Essa sala precisa de senha antes de entrar"],"Password protected":["Protegido por senha"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Essa sala persistirá mesmo se estiver desocupada"],"Only moderators can see your XMPP address":["Apenas moderadores podem ver seu endereço XMPP"],"This groupchat will disappear once the last person leaves":["Esta sala desaparecerá assim que a última pessoa sair"],"This groupchat is publicly searchable":["Essa sala pode ser pesquisada publicamente"],"Groupchat info for %1$s":["Informações da sala em grupo para %1$s"],"You\'re not allowed to send messages in this room":["Você não tem permissão para enviar mensagens nesta sala"],"The conversation has moved. Click below to enter.":["Esta conversa foi movida. Clique abaixo para entrar de novo."],"This groupchat no longer exists":["Este grupo de conversa não existe mais"],"Hide the groupchat topic":["Ocultar o tópico do grupo"],"This groupchat is bookmarked":["Este grupo está nos favoritos"],"Enter groupchat":["Entrar na sala"],"Choose a nickname to enter":["Escolha um apelido para entrar"],"Please choose your nickname":["Por favor escolha seu apelido"],"This groupchat requires a password":["Essa sala de bate papo precisa da senha"],"Password: ":["Senha: "],"Submit":["Enviar"],"This user is a moderator.":["Esse usuário é o moderador."],"This user can send messages in this groupchat.":["Esse usuário pode enviar mensagens nessa sala."],"This user can NOT send messages in this groupchat.":["Esse usuário NÃO pode enviar mensagens nessa sala."],"Owner":["Dono"],"Admin":["Admin"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Clique para mencionar %1$s em sua mensagem."],"Participants":["Participantes"],"%1$s has entered the groupchat":["%1$s entrou na sala"],"%1$s has left the groupchat":["%1$s saiu da sala"],"%1$s is now a moderator":["%1$s é agora um moderador"],"%1$s is no longer a moderator":["%1$s não é mais um moderador"],"%1$s has been given a voice":["%1$s recebeu a palavra novamente"],"%1$s has been muted":["%1$s está mudo"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s está digitando"],"%1$s have stopped typing":["%1$s parou de digitar"],"%1$s have gone away":["%1$s está ausente"],"%1$s have entered the groupchat":["%1$s entrou na sala"],"%1$s have left the groupchat":["%1$s saiu da sala"],"%1$s are now moderators":["%1$s são agora moderadores"],"%1$s are no longer moderators":["%1$s não são mais moderadores"],"%1$s have been given voices":["%1$s foram dadas a palavra"],"%1$s have been muted":["%1$s foram silenciados"],"Change user\'s affiliation to admin":["Mudar o usuário para administrador"],"Ban user by changing their affiliation to outcast":["Banir o usuário alterando sua afiliação para banido"],"Clear the chat area":["Limpar a área de bate-papo"],"Close this groupchat":["Feche este grupo"],"Change user role to participant":["Alterar a função do usuário para o participante"],"Remove this groupchat":["Excluir esta sala"],"Kick user from groupchat":["Expulsar usuário da sala"],"Write in 3rd person":["Escrever em terceira pessoa"],"Grant membership to a user":["Subscrever como usuário membro"],"Opens up the moderator tools GUI":["Abre a interface gráfica das ferramentas do moderador"],"Remove user\'s ability to post messages":["Remover a habilidade do usuário de postar mensagens"],"Change your nickname":["Escolha seu apelido"],"Grant moderator role to user":["Transformar usuário em moderador"],"Grant ownership of this groupchat":["Conceder a propriedade desse batepapo"],"Register your nickname":["Escolha seu apelido"],"Revoke the user\'s current affiliation":["Revogar a afiliação atual do usuário"],"Set groupchat subject":["Definir tópico do bate-papo"],"Set groupchat subject (alias for /subject)":["Definir o assunto do bate-papo (nome para/ assunto)"],"Allow muted user to post messages":["Permitir que o usuário mudo publique mensagens"],"You are about to retract this message.":["Você está a ponto de retirar esta mensagem."],"You may optionally include a message, explaining the reason for the retraction.":["Opcionalmente, você pode incluir uma mensagem, explicando o motivo da retração."],"Message Retraction":["Retração de mensagens"],"Optional reason":["Motivo opcional"],"Sorry, you\'re not allowed to retract this message":["Desculpe, você não está autorizado a retrair esta mensagem"],"A timeout occurred while trying to retract the message":["O tempo esgotou enquanto tentava retrair a mensagem"],"Sorry, you\'re not allowed to retract this message.":["Desculpe, você não está autorizado a retrair esta mensagem."],"Show more information about this groupchat":["Mostrar mais informações sobre este grupo"],"Configure":["Configurar"],"Configure this groupchat":["Configurar essa sala"],"Invite someone to join this groupchat":["Convide alguém para se unir a este grupo"],"Show topic":["Mostrar tópico"],"Hide topic":["Ocultar assunto"],"Show the topic message in the heading":["Exiba a mensagem do tópico no rótulo"],"Hide the topic in the heading":["Oculte o tópico no rótulo"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar este grupo"],"Destroy":["Destruir"],"Leave":["Sair"],"Leave and close this groupchat":["Deixe e feche este grupo"],"Are you sure you want to leave this groupchat?":["Tem certeza que deseja sair do grupo?"],"Hide the list of participants":["Esconder a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Proibido: você não tem nas permissões necessárias para fazer isso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Proibido: você não tem a afiliação necessária para fazer isso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erro: O comando \\"%1$s\\" precisa de dois argumentos, o apelido e opcionalmente a razão."],"Error: couldn\'t find a groupchat participant based on your arguments":["Erro: não foi possÃvel encontrar um participante desta sala"],"Error: found multiple groupchat participant based on your arguments":["Erro: encontrou múltiplos participantes deste grupo na base da sua pesquisa"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Não foi possÃvel encontrar um participante com esse nome. Poderia ter deixado o grupo."],"Sorry, an error happened while running the command.":["Desculpe, aconteceu um erro durante a execução do comando."],"Check your browser\'s developer console for details.":["Verifique o console do desenvolvedor do seu navegador para obter mais detalhes."],"Are you sure you want to destroy this groupchat?":["Você tem certeza de que quer destruir este grupo?"],"Please enter the XMPP address of this groupchat to confirm":["Favor digitar o servidor XMPP deste grupo para confirmar"],"name@example.org":["nome@exemplo.org"],"Optional reason for destroying this groupchat":["Motivo opcional para destruir este grupo"],"Optional XMPP address for a new groupchat that replaces this one":["Servidor do XMPP opcional para um novo grupo que substitui este"],"replacement@example.org":["usuário@exemplo.org"],"Your nickname is \\"%1$s\\"":["Seu apelido é \\"%1$s\\""],"Error: invalid number of arguments":["Erro: número de argumentos inválido"],"This action was done by %1$s.":["Essa ação foi realizada para %1$s ."],"The reason given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"Groupchats":["Grupos"],"Add a new groupchat":["Adicionar um novo grupo"],"Query for groupchats":["Consulta por grupos"],"Sorry, an error occurred while trying to submit the config form.":["Desculpe, ocorreu um erro ao tentar enviar o formulário de configuração."],"Close these announcements":["Feche estes comunicados"],"Announcements":["Comunicados"],"Click to open this server message":["Clique para abrir esta mensagem no servidor"],"Notification from %1$s":["Mensagem de %1$s"],"%1$s says":["%1$s diz"],"has gone offline":["ficou offline"],"has gone away":["Este contato saiu"],"is busy":["ocupado"],"has come online":["Ficou on-line"],"wants to be your contact":["Quer ser seu contato"],"Hide":["Ocultar"],"Execute":["Executar"],"On which entity do you want to run commands?":["Em qual entidade você quer executar comandos?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Alguns serviços e entidades do XMPP permitem que usuários privilegiados executem comandos especÃficos neles."],"Commands found":["Comandos encontrados"],"List available commands":["Lista de comandos disponÃveis"],"No commands found":["Nenhum comando encontrado"],"Sorry, an error occurred while looking for commands on that entity.":["Desculpe, um erro ocorreu enquanto procurava comandos sobre essa entidade."],"The specified entity doesn\'t support ad-hoc commands":["Esta entidade não suporta comandos especÃficos"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Desculpe, ocorreu um erro ao tentar executar o comando. Veja o console do desenvolvedor para obter mais detalhes"],"About":["Sobre"],"Commands":["Comandos"],"Settings":["Configurações"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s XMPP cliente de bate papo oferecido a você por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduza %2$s para sua própria lingua"],"Log out":["Sair"],"Click to change your chat status":["Clique para mudar seu status no chat"],"Show details about this chat client":["Mostrar detalhes sobre este cliente do bate-papo"],"Your avatar image":["Sua imagem de perfil"],"Checkbox for selecting the following fingerprint":["Caixa de seleção da seguinte assinatura"],"Device without a fingerprint":["Dispositivo sem impressão digital"],"Checkbox for selecting the following device":["Markar caixa para selecionar o seguinte dispositivo"],"Other OMEMO-enabled devices":["Outros dispositivos com OMEMO habilitado"],"Checkbox to select fingerprints of all other OMEMO devices":["Caixa para selecionar assinaturas de todos os dispositivos OMEMO"],"Remove checked devices and close":["Remover dispositivos selecionados e fechar"],"Select all":["Selecionar tudo"],"This device\'s OMEMO fingerprint":["Assinatura OMEMO deste dispositivo"],"Generate new keys and fingerprint":["Gerar novas chaves e assinaturas"],"Your Profile":["Seu Perfil"],"XMPP Address (JID)":["Servidor do XMPP (JID)"],"Save and close":["Salvar e fechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Use vÃrgulas para separar múltiplos papéis. Seus papéis são exibidos ao lado de seu nome em suas mensagens."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Desculpe, aconteceu um erro ao tentar salvar seus dados de perfil."],"You can check your browser\'s developer console for any error output.":["Verifique o console de desenvolvedor de seu navegador em busca de mensagens de erro."],"Away":["Ausente"],"Busy":["Ocupado"],"Custom status":["Status customizado"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Ausente por bastante tempo"],"Change chat status":["Alterar o status do bate-papo"],"Personal status message":["Mensagem pessoal do status"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Tem certeza que quer sair?"],"online":["online"],"busy":["ocupado"],"away for long":["ausente a bastante tempo"],"away":["ausente"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Desculpe, não foi possÃvel decriptar uma mensagem OMEMO recebida devido a um erro."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s não parece ter um cliente com suporte a OMEMO. Mensagens encriptadas não mais serão possÃveis nesta sala."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Não é possÃvel usar criptografia de ponta a ponta neste grupo, ou o grupo tem algum anonimato ou nem todos os participantes suportam a OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Não é possÃvel usar criptografia ponto a ponto porque %1$s usa um cliente que não suporta OMEMO."],"Messages are being sent in plaintext":["Mensagens serão enviadas em texto puro"],"Messages are sent encrypted":["As mensagens são enviadas criptografadas"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Este groupo precisa ter apenas membros não anônimos para suportar as mensagens criptografadas OMEMO"],"Sorry, an error occurred while trying to remove the devices.":["Desculpe, ocorreu um erro enquanto tentava remover os dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Tem certeza de que deseja gerar novas chaves OMEMO? Isso removerá suas chaves antigas e todas as mensagens criptografadas anteriormente não poderão mais ser descriptografadas neste dispositivo."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Desculpe, não fomos capazes de enviar uma mensagem encriptada porque %1$s requer que você esteja em sua lista de contatos para ver suas informações OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Desculpe, não fomos capazes de enviar uma mensagem encriptada porque o servidor remoto de %1$s não pode ser encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Incapaz de mandar mensagem encriptada devido a erro inesperado."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Desculpe, nenhum dispositivo encontrado para o qual possamos enviar uma mensagem criptografada OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta é uma mensagem criptografada com OMEMO que seu cliente não parece ter suporte. Para maiores informações acesse https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Inserir formulário de inscrição"],"Tip: A list of public XMPP providers is available":["Dica: uma lista de provedores XMPP públicos está disponÃvel"],"here":["aqui"],"Sorry, we\'re unable to connect to your chosen provider.":["Desculpe, não podemos conectar ao provedor escolhido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Desculpe, o provedor fornecido não oferece suporte de banda para registro da conta. Experimente com um provedor diferente."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo deu errado ao estabelecer uma conexão com \\"%1$s\\". Você tem certeza que ele existe?"],"Now logging you in":["Agora você logou"],"Registered successfully":["Registrado com sucesso"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rejeitou sua tentativa de registro. Verifique os valores que você digitou para verificar a exatidão."],"Leave this groupchat":["Deixar a sala"],"Click to toggle the list of open groupchats":["Clique para alternar a lista de salas"],"Open Groupchats":["Abrir sala"],"Are you sure you want to leave the groupchat %1$s?":["Tem certeza que deseja sair do qrupo \\"%1$s\\"?"],"Add":["Adicionar"],"Add a Contact":["Adicionar contato"],"This contact is busy":["Este contato está ocupado"],"This contact is online":["Este contato está online"],"This contact is offline":["Este contato está offline"],"This contact is unavailable":["Este contato está indisponÃvel"],"This contact is away for an extended period":["Este contato está ausente por um longo perÃodo"],"This contact is away":["Este contato está ausente"],"Contact name":["Nome do contato"],"Optional nickname":["Apelido Opcional"],"Sorry, could not find a contact with that name":["Desculpe, não foi possÃvel encontrar um contato com este nome"],"This contact has already been added":["Este contato já foi adicionado"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contato"],"Filter by group name":["Filtrar por nome do grupo"],"Filter by status":["Filtrar por status"],"Any":["Qualquer"],"Unread":["Não lido"],"Chatty":["Conversar"],"Extended Away":["Ausência Longa"],"Click to remove %1$s as a contact":["Clique para remover %1$s como contato"],"Click to accept the contact request from %1$s":["Clique para aceitar a solicitação de contato de %1$s"],"Click to decline the contact request from %1$s":["Clique para recusar a solicitação de contato de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Clique para conversar com %1$s (servidor do XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Tem certeza de que deseja recusar essa solicitação de contato?"],"Contacts":["Contatos"],"Add a contact":["Adicionar contato"],"Re-sync your contacts":["Sincronize meus contatos de novo"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[168],{534:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n > 1;","lang":"pt_BR"},"Create your account":["Criar sua conta"],"Please enter the XMPP provider to register with:":["Por favor entre com o provedor XMPP para registro:"],"Already have a chat account?":["Já possui uma conta de bate-papo?"],"Log in here":["Login aqui"],"Account Registration:":["Registro de Conta:"],"Register":["Registro"],"Choose a different provider":["Escolha um provedor diferente"],"Hold tight, we\'re fetching the registration form…":["Espere, estamos carregando o formulário de inscrição …"],"Cancel":["Cancelar"],"The connection has dropped, attempting to reconnect.":["A conexão caiu, tentando se reconectar."],"An error occurred while connecting to the chat server.":["Ocorreu um erro ao se conectar ao servidor de bate-papo."],"Your XMPP address and/or password is incorrect. Please try again.":["Seu endereço ID XMPP e/ou sua senha estão incorretas. Por favor, tente novamente."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Desculpe, não conseguimos nos conectar ao host XMPP com domÃnio: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["O servidor XMPP não ofereceu um mecanismo de autenticação suportado"],"Undecryptable OMEMO message":["Mensagem OMEMO indecifrável"],"Sorry, could not determine upload URL.":["Desculpe, não foi possÃvel determinar a URL para upload."],"Sorry, could not determine file upload URL.":["Desculpe, não foi possÃvel determinar o endereço para upload de arquivos."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Desculpe, não foi possÃvel realizar o upload de seu arquivo. Resposta do servidor: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Desculpe, não foi possÃvel realizar o upload de seu arquivo."],"You\'re not allowed to retract your message.":["Você não está autorizado a retrair sua mensagem."],"Sorry, an error occurred while trying to retract your message.":["Desculpe, ocorreu um erro ao tentar retrair sua mensagem."],"You\'re not allowed to send a message.":["Você não está autorizado a enviar uma mensagem."],"Sorry, an error occurred while trying to send your message.":["Desculpe, ocorreu um erro ao tentar enviar sua mensagem."],"Sorry, looks like file upload is not supported by your server.":["Desculpe, parece que o upload de arquivos não é suportado por seu servidor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["O tamanho do arquivo, %1$s, excede o tamanho máximo permitido por seu servidor, que é %2$s."],"Smileys and emotions":["Smileys e emoticons"],"People":["Pessoas"],"Activities":["Atividades"],"Travel":["Viagem"],"Objects":["Objetos"],"Animals and nature":["Animais e natureza"],"Food and drink":["Comida e bebida"],"Symbols":["SÃmbolos"],"Flags":["Bandeiras"],"Stickers":["Adesivos"],"This groupchat is not anonymous":["Essa sala não é anônima"],"This groupchat now shows unavailable members":["Agora esta sala mostra membros indisponÃveis"],"This groupchat does not show unavailable members":["Essa sala não mostra membros indisponÃveis"],"The groupchat configuration has changed":["A configuração da sala mudou"],"Groupchat logging is now enabled":["O log da sala está ativado"],"Groupchat logging is now disabled":["O log da sala está desativado"],"This groupchat is now no longer anonymous":["Essa sala não é mais anônima"],"This groupchat is now semi-anonymous":["Essa sala agora é semi anônima"],"This groupchat is now fully-anonymous":["Essa sala agora é totalmente anônima"],"A new groupchat has been created":["Uma nova sala foi criada"],"Your nickname has been automatically set to %1$s":["Seu apelido foi mudado automaticamente para %1$s"],"Your nickname has been changed to %1$s":["Seu apelido foi mudado para %1$s"],"You have been banned from this groupchat":["Você foi banido dessa sala"],"You have exited this groupchat due to a technical problem":["Você saiu deste grupo devido a um problema técnico"],"You have been kicked from this groupchat":["Você foi expulso dessa sala"],"You have been removed from this groupchat because of an affiliation change":["Você foi removido da sala devido a uma mudança de associação"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Você foi removido da sala porque ela foi mudada para somente membros e você não é um membro"],"You have been removed from this groupchat because the service hosting it is being shut down":["Você foi removido da sala porque o serviço está sendo desligado"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Sua retração não foi entregue porque você não está presente no grupo."],"Your message was not delivered because you weren\'t allowed to send it.":["Sua mensagem não foi entregue porque você não tem permissão para enviá-la."],"Your message was not delivered because you\'re not present in the groupchat.":["Sua mensagem não foi entregue porque você não está presente na sala."],"A timeout happened while while trying to retract your message.":["O tempo esgotou enquanto tentava retrair sua mensagem."],"You\'re not allowed to register yourself in this groupchat.":["Você não tem permissão de se registrar nessa sala."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Você não tem permissão de entrar nessa sala porque ela é apenas para membros."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Não é possÃvel registrar apelidos nesta sala, pois não suporta registro."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Não é possÃvel registrar seu apelido nesta sala, formulário de dados inválido."],"Topic set by %1$s":["Tópico definido por %1$s"],"Topic cleared by %1$s":["Tópico liberado por %1$s"],"%1$s has been banned by %2$s":["%1$s foi banido por %2$s"],"%1$s has been banned":["%1$s foi banido"],"%1$s\'s nickname has changed":["O apelido de %1$s foi alterado"],"%1$s has been kicked out by %2$s":["%1$s foi expulso por %2$s"],"%1$s has been kicked out":["%1$s foi expulso"],"%1$s has been removed because of an affiliation change":["%1$s foi removido por causa de troca de associação"],"%1$s has been removed for not being a member":["%1$s foi removido por não ser mais um membro"],"%1$s is no longer an admin of this groupchat":["%1$s não é mais um administrador desta sala"],"%1$s is no longer an owner of this groupchat":["%1$s não é mais um proprietário desta sala"],"%1$s is no longer banned from this groupchat":["%1$s não está mais banido desta sala"],"%1$s is no longer a member of this groupchat":["%1$s não é mais um membro deste grupo"],"%1$s is now a member of this groupchat":["%1$s se tornou um membro desta sala"],"%1$s is now an %2$s of this groupchat":["%1$s se tornou %2$s desta sala"],"The nickname you chose is reserved or currently in use, please choose a different one.":["O apelido escolhido está atualmente em uso, por favor escolha outro."],"Password incorrect":["Senha incorreta"],"You are not on the member list of this groupchat.":["Você não é membro dessa sala."],"You have been banned from this groupchat.":["Você foi banido deste bate-papo em grupo."],"You are not allowed to create new groupchats.":["Você não tem permissão de criar novas salas."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Seu apelido não está de acordo com as regras da sala."],"This groupchat does not (yet) exist.":["Esta sala não existe (ainda)."],"This groupchat has reached its maximum number of participants.":["Esta sala atingiu o número máximo de ocupantes."],"Remote server not found":["Servidor remoto não encontrado"],"The explanation given is: \\"%1$s\\".":["A explicação dada é: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s convidou você para entrar na sala: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s convidou você a participar de uma sala de bate-papo: %2$s, por seguinte motivo: \\"%3$s\\""],"Error":["Erro"],"Sorry, something went wrong while trying to save your bookmark.":["Desculpe, algo deu errado ao tentar salvar seu favorito."],"Timeout Error":["Erro de tempo limite"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["O servidor não retornou seus favoritos dentro do tempo permitido. Você pode recarregar a página para solicitá-los novamente."],"My contacts":["Meus contatos"],"Pending contacts":["Contados pendentes"],"Contact requests":["Solicitação de contatos"],"Ungrouped":["Desagrupado"],"New messages":["Novas mensagens"],"Sorry, there was an error while trying to add %1$s as a contact.":["Desculpe, houve um erro ao tentar adicionar %1$s como um contato."],"This client does not allow presence subscriptions":["Este cliente não permite assinaturas de presença"],"Click to hide these contacts":["Clique para esconder esses contatos"],"Unbookmark this groupchat":["Desmarcar a sala"],"Click to open this groupchat":["Clique para abrir essa sala"],"Click to toggle the bookmarks list":["Clique para alternar a lista de favoritos"],"Bookmarks":["Favoritos"],"Bookmark this groupchat":["Marcar essa sala nos favoritos"],"Would you like this groupchat to be automatically joined upon startup?":["Gostaria de entrar nessa sala automaticamente quando iniciar?"],"The name for this bookmark:":["Nome para o favorito:"],"What should your nickname for this groupchat be?":["Qual deve ser o seu apelido para esta sala?"],"Save":["Salvar"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Tem certeza de que deseja remover o favorito \\"%1$s\\"?"],"Unbookmark":["Excluir de favoritos"],"Bookmark":["Favoritos"],"Close":["Fechar"],"OK":["OK"],"Image: ":["Imagem: "],"Download audio file \\"%1$s\\"":["Baixar arquivo de audio \\"%1$s\\""],"Download file \\"%1$s\\"":["Baixar arquivo \\"%1$s\\""],"Cancel Editing":["Anular edição"],"Edit":["Editar"],"Retract":["Retirar"],"Message versions":["Versões de mensagem"],"Retry":["Tentar de novo"],"Uploading file:":["Fazendo upload de arquivo:"],"%1$s has removed this message":["%1$s excluiu esta mensagem"],"This message has been edited":["Esta mensagem foi editada"],"Show more":["Mostrar mais"],"Show less":["Mostrar menos"],"No message history available.":["Nenhum histórico de mensagens disponÃvel."],"Search results":["Procurar resultados"],"Search":["Procurar"],"Insert emojis":["Inserir emojis"],"Send the message":["Envie esta mensagem"],"Start a call":["Iniciar chamada"],"Message characters remaining":["Caracteres de mensagem restantes"],"Hide participants":["Ocultar participantes"],"Show participants":["Mostrar participantes"],"Choose a file to send":["Escolha um arquivo para enviar"],"Click to write as a normal (non-spoiler) message":["Clique para escrever como uma mensagem normal (sem estragar surpresa)"],"Click to write your message as a spoiler":["Clique para escrever sua mensagem como um Spoiler"],"The User\'s Profile Image":["A imagem de perfil do usuário"],"Trusted":["Confiável"],"Untrusted":["Não confiável"],"OMEMO Fingerprints":["OMEMO Impressões digitais"],"No OMEMO-enabled devices found":["Dispositivos com OMEMO ativado não encontrados"],"Remove as contact":["Remover contato"],"XMPP Address":["Endereço XMPP"],"Email":["E-mail"],"Full Name":["Nome Completo"],"Nickname":["Apelido"],"Refresh":["Atualizar"],"Role":["Função"],"URL":["URL"],"%1$s is typing":["%1$s está digitando"],"%1$s has stopped typing":["%1$s parou de digitar"],"%1$s has gone away":["%1$s está ausente"],"Remove messages":["Remover mensagens"],"Close this chat":["Feche este bate-papo"],"Write in the third person":["Escrever em terceira pessoa"],"Show this menu":["Mostrar o menu"],"Hidden message":["Mensagem oculta"],"Message":["Mensagem"],"Optional hint":["Dica Opcional"],"You have unread messages":["Você tem mensagens não lidas"],"Details":["Detalhes"],"See more information about this person":["Mostrar mais informações sobre esta pessoa"],"Close and end this conversation":["Encerrar e finalizar esta conversa"],"Sorry, the connection has been lost, and your message could not be sent":["Desculpe, a conexão caiu, por isto sua mensagem não podia ser enviada"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["Esteja ciente de que outros clientes de XMPP/Jabber (e servidores) podem ainda não suportar retrações e que esta mensagem pode não ser excluÃda em todos os lugares."],"Are you sure you want to retract this message?":["Tem certeza que deseja retrair esta mensagem?"],"Confirm":["Confirmar"],"You have an unsent message which will be lost if you continue. Are you sure?":["Você tem uma mensagem não enviada que será perdida se você continuar. Você tem certeza?"],"Are you sure you want to clear the messages from this conversation?":["Tem certeza que deseja limpar as mensagens dessa conversa?"],"%1$s has gone offline":["%1$s está offline"],"%1$s is busy":["%1$s está ocupado"],"%1$s is online":["%1$s está online"],"Sorry, something went wrong while trying to refresh":["Desculpe, algo deu errado ao tentar atualizar"],"Are you sure you want to remove this contact?":["Tem certeza de que deseja remover esse contato?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Desculpe, houve um erro ao tentar remover o contato %1$s ."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Para melhorar a performance, armazenamos dados em seu navegador. Desmarque esta caixa se estiver em um computador público ou se quiser que seus dados sejam apagados quando sair. É importante que explicitamente saia da aplicação, cado contrário nem todos os dados armazenados serão apagados. Por favor, note que quando usando um dispositivo não confiável, a criptografia OMEMO não estará disponÃvel."],"This is a trusted device":["Este é um dispositivo confiável"],"Password":["Senha"],"Create an account":["Criando uma conta"],"Don\'t have a chat account?":["Não possui uma conta de bate papo?"],"Log in":["Entrar"],"Disconnected":["Desconectado"],"Click here to log in anonymously":["Clique aqui para efetuar o login anonimamente"],"Username":["Usuário"],"user@domain":["usuário@domÃnio"],"Please enter a valid XMPP address":["Por favor entre com um endereço XMPP válido"],"Chat Contacts":["Contatos"],"Toggle chat":["Alternar bate-papo"],"Click to restore this chat":["Clique para restaurar este bate-papo"],"Minimized":["Minimizado"],"Minimize":["Minimizar"],"Minimize this chat":["Minimizar este bate papo"],"Minimize this groupchat":["Minimizar este grupo"],"This user is a moderator.":["Esse usuário é o moderador."],"This user can send messages in this groupchat.":["Esse usuário pode enviar mensagens nessa sala."],"This user can NOT send messages in this groupchat.":["Esse usuário NÃO pode enviar mensagens nessa sala."],"Owner":["Dono"],"Admin":["Admin"],"Member":["Membro"],"Moderator":["Moderador"],"Visitor":["Visitante"],"Click to mention %1$s in your message.":["Clique para mencionar %1$s em sua mensagem."],"Participants":["Participantes"],"This field is required":["Este campo é obrigatório"],"Join":["Entrar"],"Enter a new Groupchat":["Entrar em uma nova sala"],"name@conference.example.org":["nome@conferencia.exemplo.org"],"Groupchat name":["Nome da sala"],"Groupchat address":["Endereço da sala"],"Groupchat id is invalid.":["ID do Grupo é inválido."],"Invite":["convite"],"Invite someone to this groupchat":["Convide alguém para este grupo"],"user@example.org":["usuário@exemplo.org"],"Optional reason for the invitation":["Motivo opcional para o convite"],"Show groupchats":["Mostrar Salas"],"Server address":["Endereço do Servidor"],"Show more information on this groupchat":["Mostrar mais informações dessa sala"],"Query for Groupchats":["Consulta do bate papo"],"Description:":["Descrição:"],"Groupchat Address (JID):":["Endereço da sala (JID):"],"Participants:":["Participantes:"],"Features:":["Recursos:"],"Requires authentication":["Requer autenticação"],"Hidden":["Escondido"],"Requires an invitation":["Requer um convite"],"Moderated":["Moderado"],"Non-anonymous":["Não anônimo"],"Open":["Sala aberta"],"Permanent":["Sala permanente"],"Public":["Público"],"Semi-anonymous":["Semi anônimo"],"Temporary":["Temporário"],"Unmoderated":["Sem moderação"],"conference.example.org":["conferencia.exemplo.org"],"Groupchats found":["Salas encontradas"],"No groupchats found":["Nenhuma sala encontrada"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderadores são usuários privilegiados que podem alterar as funções de outros usuários (exceto aqueles com funções de administrador ou proprietário)."],"The default role, implies that you can read and write messages.":["A função padrão implica que você pode ler e gravar mensagens."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Visitantes não têm permissão para escrever mensagens em um bate-papo moderado para vários usuários."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Proprietário é a afiliação mais alta. Os proprietários podem modificar funções e afiliações de todos os outros usuários."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Admin é a segunda maior afiliação. Os administradores podem modificar funções e afiliações de todos os outros usuários, exceto proprietários."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Para banir um usuário, você atribui a ele a afiliação de \\"banido\\"."],"Change role":["Alterar função"],"New Role":["Nova função"],"Reason":["Razão"],"Change affiliation":["Alterar afiliação"],"New affiliation":["Nova afiliação"],"Affiliation":["Afiliação"],"Moderator Tools":["Ferramentas de Moderação"],"No users with that affiliation found.":["Nenhum usuário com essa afiliação encontrado."],"No users with that role found.":["Nenhum usuário com essa função encontrado."],"Type here to filter the search results":["Digite aqui para filtrar os resultados da busca"],"Show users":["Mostrar usuários"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["As funções são atribuÃdas aos usuários para conceder ou negar certas habilidades em um bate-papo com vários usuários. Eles são atribuÃdos explÃcita ou implicitamente como parte de uma afiliação. Uma função que não é devida a uma afiliação, é válida apenas pela duração da sessão do usuário."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Uma afiliação é um direito de longa duração que normalmente implica uma certa função e que concede privilégios e responsabilidades. Por exemplo, administradores e proprietários têm automaticamente a função de moderador."],"Timeout error while trying to set the affiliation":["O tempo esgotou ao tentar definir a afiliação"],"Sorry, you\'re not allowed to make that change":["Desculpe, você não está autorizado a fazer essa alteração"],"Sorry, something went wrong while trying to set the affiliation":["Desculpe, algo deu errado enquanto tentava definir a afiliação"],"Affiliation changed":["Afiliação alterada"],"Role changed":["Função alterada"],"You\'re not allowed to make that change":["Você não está autorizado a fazer essa alteração"],"Sorry, something went wrong while trying to set the role":["Desculpe, algo deu errado enquanto tentava definir a função"],"Topic":["Tópico"],"Topic author":["Autor do tópico"],"Groupchat address (JID)":["Endereço da sala (JID)"],"Message archiving":["Arquivando mensagem"],"Messages are archived on the server":["As mensagens são arquivadas no servidor"],"Description":["Descrição"],"Features":["Recursos"],"This groupchat is not publicly searchable":["Essa sala não aparece em pesquisas públicas"],"This groupchat is restricted to members only":["Essa sala é restrita apenas para membros"],"Members only":["Apenas membros"],"Participants entering this groupchat need to request permission to write":["Os participantes entrando nesta sala devem solicitar permissão para escrever"],"Name":["Nome"],"This groupchat does not require a password upon entry":["Essa sala não precisa de senha para entrar"],"No password required":["Nenhuma senha necessária"],"Not anonymous":["Não anônimo"],"All other groupchat participants can see your XMPP address":["Todos os outros ocupantes da sala podem ver seu endereço XMPP"],"Not moderated":["Não moderada"],"Participants entering this groupchat can write right away":["Participantes entrando nesta sala podem escrever diretamente"],"Online users":["Usuários Online"],"Anyone can join this groupchat":["Qualquer um pode se juntar a essa sala"],"This groupchat requires a password before entry":["Essa sala precisa de senha antes de entrar"],"Password protected":["Protegido por senha"],"Persistent":["Persistente"],"This groupchat persists even if it\'s unoccupied":["Essa sala persistirá mesmo se estiver desocupada"],"Only moderators can see your XMPP address":["Apenas moderadores podem ver seu endereço XMPP"],"This groupchat will disappear once the last person leaves":["Esta sala desaparecerá assim que a última pessoa sair"],"This groupchat is publicly searchable":["Essa sala pode ser pesquisada publicamente"],"Groupchat info for %1$s":["Informações da sala em grupo para %1$s"],"You\'re not allowed to send messages in this room":["Você não tem permissão para enviar mensagens nesta sala"],"The conversation has moved. Click below to enter.":["Esta conversa foi movida. Clique abaixo para entrar de novo."],"This groupchat no longer exists":["Este grupo de conversa não existe mais"],"Hide the groupchat topic":["Ocultar o tópico do grupo"],"This groupchat is bookmarked":["Este grupo está nos favoritos"],"Enter groupchat":["Entrar na sala"],"Choose a nickname to enter":["Escolha um apelido para entrar"],"Please choose your nickname":["Por favor escolha seu apelido"],"This groupchat requires a password":["Essa sala de bate papo precisa da senha"],"Password: ":["Senha: "],"Submit":["Enviar"],"%1$s has entered the groupchat":["%1$s entrou na sala"],"%1$s has left the groupchat":["%1$s saiu da sala"],"%1$s is now a moderator":["%1$s é agora um moderador"],"%1$s is no longer a moderator":["%1$s não é mais um moderador"],"%1$s has been given a voice":["%1$s recebeu a palavra novamente"],"%1$s has been muted":["%1$s está mudo"],"%1$s and %2$s":["%1$s e %2$s"],"%1$s are typing":["%1$s está digitando"],"%1$s have stopped typing":["%1$s parou de digitar"],"%1$s have gone away":["%1$s está ausente"],"%1$s have entered the groupchat":["%1$s entrou na sala"],"%1$s have left the groupchat":["%1$s saiu da sala"],"%1$s are now moderators":["%1$s são agora moderadores"],"%1$s are no longer moderators":["%1$s não são mais moderadores"],"%1$s have been given voices":["%1$s foram dadas a palavra"],"%1$s have been muted":["%1$s foram silenciados"],"Change user\'s affiliation to admin":["Mudar o usuário para administrador"],"Ban user by changing their affiliation to outcast":["Banir o usuário alterando sua afiliação para banido"],"Clear the chat area":["Limpar a área de bate-papo"],"Close this groupchat":["Feche este grupo"],"Change user role to participant":["Alterar a função do usuário para o participante"],"Remove this groupchat":["Excluir esta sala"],"Kick user from groupchat":["Expulsar usuário da sala"],"Write in 3rd person":["Escrever em terceira pessoa"],"Grant membership to a user":["Subscrever como usuário membro"],"Opens up the moderator tools GUI":["Abre a interface gráfica das ferramentas do moderador"],"Remove user\'s ability to post messages":["Remover a habilidade do usuário de postar mensagens"],"Change your nickname":["Escolha seu apelido"],"Grant moderator role to user":["Transformar usuário em moderador"],"Grant ownership of this groupchat":["Conceder a propriedade desse batepapo"],"Register your nickname":["Escolha seu apelido"],"Revoke the user\'s current affiliation":["Revogar a afiliação atual do usuário"],"Set groupchat subject":["Definir tópico do bate-papo"],"Set groupchat subject (alias for /subject)":["Definir o assunto do bate-papo (nome para/ assunto)"],"Allow muted user to post messages":["Permitir que o usuário mudo publique mensagens"],"You are about to retract this message.":["Você está a ponto de retirar esta mensagem."],"You may optionally include a message, explaining the reason for the retraction.":["Opcionalmente, você pode incluir uma mensagem, explicando o motivo da retração."],"Message Retraction":["Retração de mensagens"],"Optional reason":["Motivo opcional"],"Sorry, you\'re not allowed to retract this message":["Desculpe, você não está autorizado a retrair esta mensagem"],"A timeout occurred while trying to retract the message":["O tempo esgotou enquanto tentava retrair a mensagem"],"Sorry, you\'re not allowed to retract this message.":["Desculpe, você não está autorizado a retrair esta mensagem."],"Show more information about this groupchat":["Mostrar mais informações sobre este grupo"],"Configure":["Configurar"],"Configure this groupchat":["Configurar essa sala"],"Invite someone to join this groupchat":["Convide alguém para se unir a este grupo"],"Show topic":["Mostrar tópico"],"Hide topic":["Ocultar assunto"],"Show the topic message in the heading":["Exiba a mensagem do tópico no rótulo"],"Hide the topic in the heading":["Oculte o tópico no rótulo"],"Moderate":["Moderar"],"Moderate this groupchat":["Moderar este grupo"],"Destroy":["Destruir"],"Leave":["Sair"],"Leave and close this groupchat":["Deixe e feche este grupo"],"Are you sure you want to leave this groupchat?":["Tem certeza que deseja sair do grupo?"],"Hide the list of participants":["Esconder a lista de participantes"],"Forbidden: you do not have the necessary role in order to do that.":["Proibido: você não tem nas permissões necessárias para fazer isso."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Proibido: você não tem a afiliação necessária para fazer isso."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Erro: O comando \\"%1$s\\" precisa de dois argumentos, o apelido e opcionalmente a razão."],"Error: couldn\'t find a groupchat participant based on your arguments":["Erro: não foi possÃvel encontrar um participante desta sala"],"Error: found multiple groupchat participant based on your arguments":["Erro: encontrou múltiplos participantes deste grupo na base da sua pesquisa"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Não foi possÃvel encontrar um participante com esse nome. Poderia ter deixado o grupo."],"Sorry, an error happened while running the command.":["Desculpe, aconteceu um erro durante a execução do comando."],"Check your browser\'s developer console for details.":["Verifique o console do desenvolvedor do seu navegador para obter mais detalhes."],"Are you sure you want to destroy this groupchat?":["Você tem certeza de que quer destruir este grupo?"],"Please enter the XMPP address of this groupchat to confirm":["Favor digitar o servidor XMPP deste grupo para confirmar"],"name@example.org":["nome@exemplo.org"],"Optional reason for destroying this groupchat":["Motivo opcional para destruir este grupo"],"Optional XMPP address for a new groupchat that replaces this one":["Servidor do XMPP opcional para um novo grupo que substitui este"],"replacement@example.org":["usuário@exemplo.org"],"Your nickname is \\"%1$s\\"":["Seu apelido é \\"%1$s\\""],"Error: invalid number of arguments":["Erro: número de argumentos inválido"],"This action was done by %1$s.":["Essa ação foi realizada para %1$s ."],"The reason given is: \\"%1$s\\".":["A razão dada é: \\"%1$s\\"."],"Groupchats":["Grupos"],"Add a new groupchat":["Adicionar um novo grupo"],"Query for groupchats":["Consulta por grupos"],"Sorry, an error occurred while trying to submit the config form.":["Desculpe, ocorreu um erro ao tentar enviar o formulário de configuração."],"Close these announcements":["Feche estes comunicados"],"Announcements":["Comunicados"],"Click to open this server message":["Clique para abrir esta mensagem no servidor"],"Notification from %1$s":["Mensagem de %1$s"],"%1$s says":["%1$s diz"],"Encrypted message received":["Mensagem criptografada recebida"],"has gone offline":["ficou offline"],"has gone away":["Este contato saiu"],"is busy":["ocupado"],"has come online":["Ficou on-line"],"wants to be your contact":["Quer ser seu contato"],"Hide":["Ocultar"],"Execute":["Executar"],"On which entity do you want to run commands?":["Em qual entidade você quer executar comandos?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Alguns serviços e entidades do XMPP permitem que usuários privilegiados executem comandos especÃficos neles."],"Commands found":["Comandos encontrados"],"List available commands":["Lista de comandos disponÃveis"],"No commands found":["Nenhum comando encontrado"],"Sorry, an error occurred while looking for commands on that entity.":["Desculpe, um erro ocorreu enquanto procurava comandos sobre essa entidade."],"The specified entity doesn\'t support ad-hoc commands":["Esta entidade não suporta comandos especÃficos"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Desculpe, ocorreu um erro ao tentar executar o comando. Veja o console do desenvolvedor para obter mais detalhes"],"About":["Sobre"],"Commands":["Comandos"],"Settings":["Configurações"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Open Source %2$s XMPP cliente de bate papo oferecido a você por %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s Traduza %2$s para sua própria lingua"],"Log out":["Sair"],"Click to change your chat status":["Clique para mudar seu status no chat"],"Show details about this chat client":["Mostrar detalhes sobre este cliente do bate-papo"],"Your avatar image":["Sua imagem de perfil"],"Checkbox for selecting the following fingerprint":["Caixa de seleção da seguinte assinatura"],"Device without a fingerprint":["Dispositivo sem impressão digital"],"Checkbox for selecting the following device":["Markar caixa para selecionar o seguinte dispositivo"],"Other OMEMO-enabled devices":["Outros dispositivos com OMEMO habilitado"],"Checkbox to select fingerprints of all other OMEMO devices":["Caixa para selecionar assinaturas de todos os dispositivos OMEMO"],"Remove checked devices and close":["Remover dispositivos selecionados e fechar"],"Select all":["Selecionar tudo"],"This device\'s OMEMO fingerprint":["Assinatura OMEMO deste dispositivo"],"Generate new keys and fingerprint":["Gerar novas chaves e assinaturas"],"Your Profile":["Seu Perfil"],"XMPP Address (JID)":["Servidor do XMPP (JID)"],"Save and close":["Salvar e fechar"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Use vÃrgulas para separar múltiplos papéis. Seus papéis são exibidos ao lado de seu nome em suas mensagens."],"OMEMO":["OMEMO"],"Profile":["Perfil"],"Sorry, an error happened while trying to save your profile data.":["Desculpe, aconteceu um erro ao tentar salvar seus dados de perfil."],"You can check your browser\'s developer console for any error output.":["Verifique o console de desenvolvedor de seu navegador em busca de mensagens de erro."],"Away":["Ausente"],"Busy":["Ocupado"],"Custom status":["Status customizado"],"Offline":["Offline"],"Online":["Online"],"Away for long":["Ausente por bastante tempo"],"Change chat status":["Alterar o status do bate-papo"],"Personal status message":["Mensagem pessoal do status"],"I am %1$s":["Estou %1$s"],"Are you sure you want to log out?":["Tem certeza que quer sair?"],"online":["online"],"busy":["ocupado"],"away for long":["ausente a bastante tempo"],"away":["ausente"],"offline":["offline"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Desculpe, não foi possÃvel decriptar uma mensagem OMEMO recebida devido a um erro."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s não parece ter um cliente com suporte a OMEMO. Mensagens encriptadas não mais serão possÃveis nesta sala."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Não é possÃvel usar criptografia de ponta a ponta neste grupo, ou o grupo tem algum anonimato ou nem todos os participantes suportam a OMEMO."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Não é possÃvel usar criptografia ponto a ponto porque %1$s usa um cliente que não suporta OMEMO."],"Messages are being sent in plaintext":["Mensagens serão enviadas em texto puro"],"Messages are sent encrypted":["As mensagens são enviadas criptografadas"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["Este groupo precisa ter apenas membros não anônimos para suportar as mensagens criptografadas OMEMO"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Desculpe, não fomos capazes de enviar uma mensagem encriptada porque %1$s requer que você esteja em sua lista de contatos para ver suas informações OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Desculpe, não fomos capazes de enviar uma mensagem encriptada porque o servidor remoto de %1$s não pode ser encontrado"],"Unable to send an encrypted message due to an unexpected error.":["Incapaz de mandar mensagem encriptada devido a erro inesperado."],"Sorry, an error occurred while trying to remove the devices.":["Desculpe, ocorreu um erro enquanto tentava remover os dispositivos."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Tem certeza de que deseja gerar novas chaves OMEMO? Isso removerá suas chaves antigas e todas as mensagens criptografadas anteriormente não poderão mais ser descriptografadas neste dispositivo."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Desculpe, nenhum dispositivo encontrado para o qual possamos enviar uma mensagem criptografada OMEMO."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Esta é uma mensagem criptografada com OMEMO que seu cliente não parece ter suporte. Para maiores informações acesse https://conversations.im/omemo"]," e.g. conversejs.org":[" ex. conversejs.org"],"Fetch registration form":["Inserir formulário de inscrição"],"Tip: A list of public XMPP providers is available":["Dica: uma lista de provedores XMPP públicos está disponÃvel"],"here":["aqui"],"Sorry, we\'re unable to connect to your chosen provider.":["Desculpe, não podemos conectar ao provedor escolhido."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Desculpe, o provedor fornecido não oferece suporte de banda para registro da conta. Experimente com um provedor diferente."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Algo deu errado ao estabelecer uma conexão com \\"%1$s\\". Você tem certeza que ele existe?"],"Now logging you in":["Agora você logou"],"Registered successfully":["Registrado com sucesso"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["O provedor rejeitou sua tentativa de registro. Verifique os valores que você digitou para verificar a exatidão."],"Leave this groupchat":["Deixar a sala"],"Click to toggle the list of open groupchats":["Clique para alternar a lista de salas"],"Open Groupchats":["Abrir sala"],"Are you sure you want to leave the groupchat %1$s?":["Tem certeza que deseja sair do qrupo \\"%1$s\\"?"],"Add":["Adicionar"],"Add a Contact":["Adicionar contato"],"This contact is busy":["Este contato está ocupado"],"This contact is online":["Este contato está online"],"This contact is offline":["Este contato está offline"],"This contact is unavailable":["Este contato está indisponÃvel"],"This contact is away for an extended period":["Este contato está ausente por um longo perÃodo"],"This contact is away":["Este contato está ausente"],"Contact name":["Nome do contato"],"Optional nickname":["Apelido Opcional"],"Sorry, could not find a contact with that name":["Desculpe, não foi possÃvel encontrar um contato com este nome"],"This contact has already been added":["Este contato já foi adicionado"],"Filter":["Filtro"],"Filter by contact name":["Filtrar por nome de contato"],"Filter by group name":["Filtrar por nome do grupo"],"Filter by status":["Filtrar por status"],"Any":["Qualquer"],"Unread":["Não lido"],"Chatty":["Conversar"],"Extended Away":["Ausência Longa"],"Click to remove %1$s as a contact":["Clique para remover %1$s como contato"],"Click to accept the contact request from %1$s":["Clique para aceitar a solicitação de contato de %1$s"],"Click to decline the contact request from %1$s":["Clique para recusar a solicitação de contato de %1$s"],"Click to chat with %1$s (XMPP address: %2$s)":["Clique para conversar com %1$s (servidor do XMPP: %2$s)"],"Are you sure you want to decline this contact request?":["Tem certeza de que deseja recusar essa solicitação de contato?"],"Contacts":["Contatos"],"Add a contact":["Adicionar contato"],"Re-sync your contacts":["Sincronize meus contatos de novo"]}}}')}}]); //# sourceMappingURL=pt_BR-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/ro-LC_MESSAGES-converse-po.js b/src/conversejs/locales/ro-LC_MESSAGES-converse-po.js index 0a01bb0e8f4756fc4ba4bfa985a4a01a9d3cd1e7..594d5e9328669942f5e9c8405ce1533a673b4d84 100644 --- a/src/conversejs/locales/ro-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/ro-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{447:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;","lang":"ro"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["Anulează"],"The connection has dropped, attempting to reconnect.":["Conexiunea s-a întrerupt, se încearcă reconectarea."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Ne pare rău, nu sa putut face conectarea la gazdă XMPP cu domeniu: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Serverul XMPP nu oferă un mecanism de autentificare acceptat"],"Sorry, could not determine upload URL.":["Ne pare rău, nu am putut determina adresa pentru descărcarea fiÈ™ierului."],"Sorry, could not determine file upload URL.":["Ne pare rău, nu am putut determina adresa pentru încărcarea fiÈ™ierului."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ne pare rău, nu am putut încărca fiÈ™ierul dumneavoastră. Răspunsul serverului: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Ne pare rău, nu am putut încărca fiÈ™ierul dumneavoastră."],"Sorry, looks like file upload is not supported by your server.":["Ne pare rău, se pare că serverul dumneavoastră nu suportă încărcarea de fiÈ™iere."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Dimensiunea fiÈ™ierului dumneavoastră, %1$s, depășeÈ™te valoarea maximă permisă de server, care este %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Acest grup de discuÈ›ii nu este anonim"],"This groupchat now shows unavailable members":["Acest grup de discuÈ›ii arată acum membrii indisponibili"],"This groupchat does not show unavailable members":["Acest grup de discuÈ›ii nu arată membrii indisponibili"],"The groupchat configuration has changed":["ConfiguraÈ›ia acestui grup de discuÈ›ii s-a schimbat"],"This groupchat is now no longer anonymous":["De acum încolo acest grup de discuÈ›ii nu mai este anonim"],"This groupchat is now semi-anonymous":["Această discuÈ›ie de grup de acum este semi-anonimă"],"This groupchat is now fully-anonymous":["Această discuÈ›ie de grup de acum este complet anonimă"],"A new groupchat has been created":["O nouă discuÈ›ie de grup a fost creată"],"Your nickname has been automatically set to %1$s":["Pseudonimul dvs. a fost creat în mod automat ca fiind: %1$s"],"Your nickname has been changed to %1$s":["Pseudonimul dvs. a fost schimbat în %1$s"],"You have been banned from this groupchat":["AÈ›i fost excluÈ™i(se) din această discuÈ›ie de grup"],"You have been kicked from this groupchat":["AÈ›i fost daÈ›i(te) afară din această discuÈ›ie de grup"],"You have been removed from this groupchat because of an affiliation change":["AÈ›i fost eliminaÈ›i(te) din această discuÈ›ie de grup din cauza unei schimbări de afiliere"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["AÈ›i fost eliminaÈ›i(te) din această discuÈ›ie de grup deoarece aceasta s-a modificat È™i acceptă doar membrii, iar dumneavoastră nu sunteÈ›i unul(a)"],"You have been removed from this groupchat because the service hosting it is being shut down":["AÈ›i fost înlăturaÈ›i(te) din această discuÈ›ie de grup pentru ca serviciul gazdă se opreÈ™te"],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":["Subiectul este definit de %1$s"],"Topic cleared by %1$s":["Subiectul a fost È™ters de %1$s"],"%1$s has been banned":["%1$s a fost banat"],"%1$s\'s nickname has changed":["Pseudonimul lui %1$s s-a schimbat"],"%1$s has been kicked out":["%1$s a fost dat afară"],"%1$s has been removed because of an affiliation change":["%1$s a fost înlăturat din pricina unei schimbări de afiliere"],"%1$s has been removed for not being a member":["%1$s a fost înlăturat pentru că este membru aici"],"%1$s is no longer an admin of this groupchat":["%1$s nu mai are rol de administrator în această discuÈ›ie de grup"],"%1$s is no longer an owner of this groupchat":["%1$s nu mai are rol de proprietar în această discuÈ›ie de grup"],"%1$s is no longer banned from this groupchat":["%1$s nu mai este exclus(ă) din această discuÈ›ie de grup"],"%1$s is now an %2$s of this groupchat":["%1$s este acum %2$s al acestui grup de discuÈ›ii"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Pseudonimul pe care l-aÈ›i ales este deja rezervat sau aflat în folosință, vă rugăm să alegeÈ›i un altul."],"You are not on the member list of this groupchat.":["Nu vă aflaÈ›i pe lista cu membrii a acestui grup de discuÈ›ii."],"You have been banned from this groupchat.":["aÈ›i fost banat din acest grup de discuÈ›ii."],"You are not allowed to create new groupchats.":["Nu aveÈ›i permisiunea de a crea noi grupuri de discuÈ›ii."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Pseudonimul dvs. nu se conformează regulilor acestui grup de discuÈ›ii."],"This groupchat does not (yet) exist.":["Acest grup de discuÈ›ii nu există (încă)."],"This groupchat has reached its maximum number of participants.":["Acest grup de discuÈ›ii È›i-a atins numărul maxim de participanÈ›i."],"Remote server not found":["Serverul la distanță nu a fost găsit"],"The explanation given is: \\"%1$s\\".":["ExplicaÈ›ia dată este: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Eroare"],"Sorry, something went wrong while trying to save your bookmark.":["Ne pare rău, ceva a mers prost în timp ce se încerca salvarea semnului de carte."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["FaceÈ›i clic pentru a ascunde aceste contacte"],"Unbookmark this groupchat":["Elimină semnul de carte pentru acest grup de discuÈ›ii"],"Click to open this groupchat":["ClicaÈ›i pentru a deschide acest grup de discuÈ›ii"],"Click to toggle the bookmarks list":["ClicaÈ›i pentru a activa lista de semne de carte"],"Bookmarks":["Semne de carte"],"Bookmark this groupchat":["Pune un semn de carte pentru acest grup de discuÈ›ii"],"Would you like this groupchat to be automatically joined upon startup?":["DoriÈ›i ca la pornire să vă alăturaÈ›i în mod automat acestui grup de discuÈ›ii?"],"The name for this bookmark:":["Numele acestui semn de carte:"],"What should your nickname for this groupchat be?":["Ce nume doriÈ›i să aveÈ›i în acest grup de discuÈ›ii?"],"Save":["Salvare"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["SunteÈ›i sigur că doriÈ›i să eliminaÈ›i semnul de carte \\"%1$s\\"?"],"Close":["ÃŽnchide"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":["Acest mesaj a fost editat"],"Show more":["Arată mai mult"],"No message history available.":[""],"Search results":["Rezultatele căutării"],"Search":["Caută"],"Insert emojis":["Inserare emoticon"],"Start a call":["ÃŽncepe un apel"],"Message characters remaining":[""],"Choose a file to send":["SelectaÈ›i un fiÈ™ier pentru a fi trimis"],"Click to write as a normal (non-spoiler) message":["FaceÈ›i click pentru a scrie ca un mesaj normal (nu dezvăluie)"],"Click to write your message as a spoiler":["FaceÈ›i click pentru a scrie mesajul ca o dezvăluire"],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["Pseudonim"],"Refresh":["Reînprospătează"],"Role":[""],"URL":[""],"%1$s is typing":["%1$s tastează"],"%1$s has stopped typing":["%1$s s-a oprit din scris"],"%1$s has gone away":["%1$s a plecat"],"Remove messages":["EliminaÈ›i mesajele"],"Write in the third person":["ScrieÈ›i la persoana a treia"],"Show this menu":["Arată acest meniu"],"Hidden message":["Mesaj ascuns"],"Message":["Mesaj"],"Optional hint":["Indiciu opÈ›ional"],"You have unread messages":["AveÈ›i mesaje necitite"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["SunteÈ›i siguri că doriÈ›i să È™tergeÈ›i mesajele din această conversaÈ›ie?"],"%1$s has gone offline":["%1$s este deconectat(ă)"],"%1$s is busy":["%1$s este ocupat(ă)"],"%1$s is online":["%1$s este conectat(ă)"],"Sorry, something went wrong while trying to refresh":["Ne pare rău, ceva a mers prost în timp ce se încerca actualizarea"],"Are you sure you want to remove this contact?":["SunteÈ›i sigur că doriÈ›i să eliminaÈ›i acest contact?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Ne pare rău, a apărut o eroare în timp ce se încerca È™tergerea lui %1$s din lista de contacte."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":["FaceÈ›i click aici pentru a vă autentifica anonim"],"Username":["Nume de utilizator"],"user@domain":["utilizator@domeniu"],"Please enter a valid XMPP address":["Vă rugăm să introduceÈ›i o adresă XMPP validă"],"Chat Contacts":["Contacte"],"Toggle chat":["Comutare discuÈ›ie"],"Click to restore this chat":["FaceÈ›i clic pentru a restabili acestă discuÈ›ie"],"Minimized":["MicÈ™orată"],"This field is required":["Acest câmp este obligatoriu"],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":["nume@chat.exemplu.org"],"Groupchat name":["Numele grupului de discuÈ›ii"],"Groupchat address":["Adresa grupului de discuÈ›ii"],"Invite":["Invitare"],"Show groupchats":["Arată grupurile de discuÈ›ii"],"Server address":["Adresa serverului"],"Show more information on this groupchat":["Arată mai multe informaÈ›ii despre acest grup de discuÈ›ii"],"Query for Groupchats":["CăutaÈ›i un grup de discuÈ›ii"],"Description:":["Descriere:"],"Groupchat Address (JID):":["Adresa grupului de discuÈ›ii (JID):"],"Participants:":["ParticipanÈ›i:"],"Features:":["Caracteristici:"],"Requires authentication":["Este nevoie de autentificare"],"Hidden":["Ascuns"],"Requires an invitation":["Este nevoie de o invitaÈ›ie"],"Moderated":["Moderat"],"Non-anonymous":["Fără anonimitate"],"Open":["Deschis"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semi-anonim"],"Temporary":["Temporar"],"Unmoderated":["Nemoderat"],"conference.example.org":["chat.exemplu.org"],"No groupchats found":["Nu s-au găsit grupuri de discuÈ›ii"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Descriere"],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Doar pentru membrii"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Nume"],"This groupchat does not require a password upon entry":[""],"No password required":["Nu este necesară o parolă"],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":["Utilizatori conectaÈ›i"],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":["Persistent"],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":["InformaÈ›ii despre grupul de discuÈ›ii %1$s"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["Acest grup de discuÈ›ii nu mai există"],"Enter groupchat":["IntraÈ›i în grupul de discuÈ›ii"],"Please choose your nickname":["Vă rugăm, alegeÈ›i-vă pseudonimul"],"This groupchat requires a password":["Intrarea în acest grup de discuÈ›ii este pe bază de parolă"],"Password: ":["Parolă "],"Submit":["Trimite"],"This user is a moderator.":["Acest utilizator este moderator."],"This user can send messages in this groupchat.":["Acest utilizator poate trimite mesaje către acest grup de discuÈ›ii."],"This user can NOT send messages in this groupchat.":["Acest utilizator NU poate trimite mesaje către acest grup de discuÈ›ii."],"Owner":["Proprietar"],"Admin":["Administrator"],"Member":["Membru"],"Moderator":["Moderator"],"Visitor":["Vizitator"],"Click to mention %1$s in your message.":["FaceÈ›i click pentru a menÈ›iona %1$s în mesajul dumneavoastră."],"Participants":["ParticipanÈ›i"],"%1$s has entered the groupchat":["%1$s a intrat în grupul de discuÈ›ii"],"%1$s has left the groupchat":["%1$s a plecat din grupul de discuÈ›ii"],"%1$s is now a moderator":["%1$s este acum moderator"],"%1$s is no longer a moderator":["%1$s nu mai este moderator"],"%1$s has been muted":["%1$s nu mai poate vorbi"],"Change user\'s affiliation to admin":["Schimbă rolul utilizatorului în cel de admin"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Schimbă rolul utilizatorului în participant"],"Remove this groupchat":["PărăsiÈ›i acest grup de discuÈ›ii"],"Kick user from groupchat":["ÃŽnlătură utilizatorul din acest grup"],"Write in 3rd person":["Scrie la persoana a treia"],"Grant membership to a user":["Oferă statutul de membru unui utilizator"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["ÃŽnlătură dreptul utilizatorului de a trimite mesaje"],"Change your nickname":["SchimbaÈ›i-vă pseudonimul"],"Grant moderator role to user":["Oferă unui utilizator rolul de moderator"],"Grant ownership of this groupchat":["Oferă unui utilizator statutul de proprietar al acestui grup de discuÈ›ii"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Alege tema acestui grup de discuÈ›ie"],"Set groupchat subject (alias for /subject)":["DefineÈ™te subiectul acestui grup de discuÈ›ii (alias pentru /subiect)"],"Allow muted user to post messages":["ÃŽngăduie-i utilizatorului \\"mut\\" să publice mesaje"],"Message Retraction":[""],"Configure":[""],"Configure this groupchat":["ConfiguraÈ›i acest grup de discuÈ›ii"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["Ascunde lista participanÈ›ilor"],"Forbidden: you do not have the necessary role in order to do that.":["Interzis: nu aveÈ›i autorizaÈ›ia necesară pentru a face acest lucru."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Interzis: nu deÈ›ineÈ›i rolul potrivit pentru a face acest lucru."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Eroare: comanda %1$s preia doi parametri, pseudonimul utilizatorului È™i un element opÈ›ional."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Eroare: număr nevalid de argumente"],"This action was done by %1$s.":["Această acÈ›iune a fost realizată de către %1$s."],"The reason given is: \\"%1$s\\".":["Motivul indicat este: \\"%1$s\\"."],"Groupchats":["Grupuri de discuÈ›ii"],"Add a new groupchat":["AdăugaÈ›i un nou grup de discuÈ›ii"],"Query for groupchats":["CăutaÈ›i un grup de discuÈ›ii"],"Announcements":[""],"Notification from %1$s":["Notificare de la %1$s"],"%1$s says":["%1$s spune"],"has gone offline":["s-a deconectat"],"has gone away":["a plecat"],"is busy":["e ocupat"],"has come online":["s-a conectat"],"wants to be your contact":["vrea să fie contactul dumneavoastră"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":["FaceÈ›i click pentru a vă schimba mesajul de stare"],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":["Din păcate, din cauza unei erori nu s-a putut decripta un mesaj OMEMO."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["SunteÈ›i sigur că vreÈ›i să generaÈ›i noi chei OMEMO? Acest lucru va È™terge vechile dvs. chei iar toate mesajele criptate anterior nu vor mai putea fi decriptate pe acest dispozitiv."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Din păcate nu putem trimite un mesaj criptat pentru că %1$s cere ca dvs. să fiÈ›i abonaÈ› la prezenÈ›a lor pentru a putea vedea informaÈ›iile lor OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Ne pare rău, nu putem trimite un mesaj criptat pentru că serverul la distanță al lui %1$s nu poate fi găsit"],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["PărăsiÈ›i acest grup de discuÈ›ii"],"Click to toggle the list of open groupchats":["FaceÈ›i clic pentru a comuta lista de discuÈ›ii de grup deschise"],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":["FaceÈ›i click pentru a elimina %1$s din lista de persoane de contact"],"Click to accept the contact request from %1$s":["FaceÈ›i clic pentru a accepta solicitarea de contact de la %1$s"],"Click to decline the contact request from %1$s":["FaceÈ›i click pentru a refuza solicitarea de contact de la %1$s"],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[169],{535:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;","lang":"ro"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["Anulează"],"The connection has dropped, attempting to reconnect.":["Conexiunea s-a întrerupt, se încearcă reconectarea."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Ne pare rău, nu sa putut face conectarea la gazdă XMPP cu domeniu: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Serverul XMPP nu oferă un mecanism de autentificare acceptat"],"Sorry, could not determine upload URL.":["Ne pare rău, nu am putut determina adresa pentru descărcarea fiÈ™ierului."],"Sorry, could not determine file upload URL.":["Ne pare rău, nu am putut determina adresa pentru încărcarea fiÈ™ierului."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ne pare rău, nu am putut încărca fiÈ™ierul dumneavoastră. Răspunsul serverului: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Ne pare rău, nu am putut încărca fiÈ™ierul dumneavoastră."],"Sorry, looks like file upload is not supported by your server.":["Ne pare rău, se pare că serverul dumneavoastră nu suportă încărcarea de fiÈ™iere."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Dimensiunea fiÈ™ierului dumneavoastră, %1$s, depășeÈ™te valoarea maximă permisă de server, care este %2$s."],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":["Acest grup de discuÈ›ii nu este anonim"],"This groupchat now shows unavailable members":["Acest grup de discuÈ›ii arată acum membrii indisponibili"],"This groupchat does not show unavailable members":["Acest grup de discuÈ›ii nu arată membrii indisponibili"],"The groupchat configuration has changed":["ConfiguraÈ›ia acestui grup de discuÈ›ii s-a schimbat"],"This groupchat is now no longer anonymous":["De acum încolo acest grup de discuÈ›ii nu mai este anonim"],"This groupchat is now semi-anonymous":["Această discuÈ›ie de grup de acum este semi-anonimă"],"This groupchat is now fully-anonymous":["Această discuÈ›ie de grup de acum este complet anonimă"],"A new groupchat has been created":["O nouă discuÈ›ie de grup a fost creată"],"Your nickname has been automatically set to %1$s":["Pseudonimul dvs. a fost creat în mod automat ca fiind: %1$s"],"Your nickname has been changed to %1$s":["Pseudonimul dvs. a fost schimbat în %1$s"],"You have been banned from this groupchat":["AÈ›i fost excluÈ™i(se) din această discuÈ›ie de grup"],"You have been kicked from this groupchat":["AÈ›i fost daÈ›i(te) afară din această discuÈ›ie de grup"],"You have been removed from this groupchat because of an affiliation change":["AÈ›i fost eliminaÈ›i(te) din această discuÈ›ie de grup din cauza unei schimbări de afiliere"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["AÈ›i fost eliminaÈ›i(te) din această discuÈ›ie de grup deoarece aceasta s-a modificat È™i acceptă doar membrii, iar dumneavoastră nu sunteÈ›i unul(a)"],"You have been removed from this groupchat because the service hosting it is being shut down":["AÈ›i fost înlăturaÈ›i(te) din această discuÈ›ie de grup pentru ca serviciul gazdă se opreÈ™te"],"Your message was not delivered because you\'re not present in the groupchat.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":["Subiectul este definit de %1$s"],"Topic cleared by %1$s":["Subiectul a fost È™ters de %1$s"],"%1$s has been banned":["%1$s a fost banat"],"%1$s\'s nickname has changed":["Pseudonimul lui %1$s s-a schimbat"],"%1$s has been kicked out":["%1$s a fost dat afară"],"%1$s has been removed because of an affiliation change":["%1$s a fost înlăturat din pricina unei schimbări de afiliere"],"%1$s has been removed for not being a member":["%1$s a fost înlăturat pentru că este membru aici"],"%1$s is no longer an admin of this groupchat":["%1$s nu mai are rol de administrator în această discuÈ›ie de grup"],"%1$s is no longer an owner of this groupchat":["%1$s nu mai are rol de proprietar în această discuÈ›ie de grup"],"%1$s is no longer banned from this groupchat":["%1$s nu mai este exclus(ă) din această discuÈ›ie de grup"],"%1$s is now an %2$s of this groupchat":["%1$s este acum %2$s al acestui grup de discuÈ›ii"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Pseudonimul pe care l-aÈ›i ales este deja rezervat sau aflat în folosință, vă rugăm să alegeÈ›i un altul."],"You are not on the member list of this groupchat.":["Nu vă aflaÈ›i pe lista cu membrii a acestui grup de discuÈ›ii."],"You have been banned from this groupchat.":["aÈ›i fost banat din acest grup de discuÈ›ii."],"You are not allowed to create new groupchats.":["Nu aveÈ›i permisiunea de a crea noi grupuri de discuÈ›ii."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Pseudonimul dvs. nu se conformează regulilor acestui grup de discuÈ›ii."],"This groupchat does not (yet) exist.":["Acest grup de discuÈ›ii nu există (încă)."],"This groupchat has reached its maximum number of participants.":["Acest grup de discuÈ›ii È›i-a atins numărul maxim de participanÈ›i."],"Remote server not found":["Serverul la distanță nu a fost găsit"],"The explanation given is: \\"%1$s\\".":["ExplicaÈ›ia dată este: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Eroare"],"Sorry, something went wrong while trying to save your bookmark.":["Ne pare rău, ceva a mers prost în timp ce se încerca salvarea semnului de carte."],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["FaceÈ›i clic pentru a ascunde aceste contacte"],"Unbookmark this groupchat":["Elimină semnul de carte pentru acest grup de discuÈ›ii"],"Click to open this groupchat":["ClicaÈ›i pentru a deschide acest grup de discuÈ›ii"],"Click to toggle the bookmarks list":["ClicaÈ›i pentru a activa lista de semne de carte"],"Bookmarks":["Semne de carte"],"Bookmark this groupchat":["Pune un semn de carte pentru acest grup de discuÈ›ii"],"Would you like this groupchat to be automatically joined upon startup?":["DoriÈ›i ca la pornire să vă alăturaÈ›i în mod automat acestui grup de discuÈ›ii?"],"The name for this bookmark:":["Numele acestui semn de carte:"],"What should your nickname for this groupchat be?":["Ce nume doriÈ›i să aveÈ›i în acest grup de discuÈ›ii?"],"Save":["Salvare"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["SunteÈ›i sigur că doriÈ›i să eliminaÈ›i semnul de carte \\"%1$s\\"?"],"Close":["ÃŽnchide"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"This message has been edited":["Acest mesaj a fost editat"],"Show more":["Arată mai mult"],"No message history available.":[""],"Search results":["Rezultatele căutării"],"Search":["Caută"],"Insert emojis":["Inserare emoticon"],"Start a call":["ÃŽncepe un apel"],"Message characters remaining":[""],"Choose a file to send":["SelectaÈ›i un fiÈ™ier pentru a fi trimis"],"Click to write as a normal (non-spoiler) message":["FaceÈ›i click pentru a scrie ca un mesaj normal (nu dezvăluie)"],"Click to write your message as a spoiler":["FaceÈ›i click pentru a scrie mesajul ca o dezvăluire"],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["Pseudonim"],"Refresh":["Reînprospătează"],"Role":[""],"URL":[""],"%1$s is typing":["%1$s tastează"],"%1$s has stopped typing":["%1$s s-a oprit din scris"],"%1$s has gone away":["%1$s a plecat"],"Remove messages":["EliminaÈ›i mesajele"],"Write in the third person":["ScrieÈ›i la persoana a treia"],"Show this menu":["Arată acest meniu"],"Hidden message":["Mesaj ascuns"],"Message":["Mesaj"],"Optional hint":["Indiciu opÈ›ional"],"You have unread messages":["AveÈ›i mesaje necitite"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["SunteÈ›i siguri că doriÈ›i să È™tergeÈ›i mesajele din această conversaÈ›ie?"],"%1$s has gone offline":["%1$s este deconectat(ă)"],"%1$s is busy":["%1$s este ocupat(ă)"],"%1$s is online":["%1$s este conectat(ă)"],"Sorry, something went wrong while trying to refresh":["Ne pare rău, ceva a mers prost în timp ce se încerca actualizarea"],"Are you sure you want to remove this contact?":["SunteÈ›i sigur că doriÈ›i să eliminaÈ›i acest contact?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Ne pare rău, a apărut o eroare în timp ce se încerca È™tergerea lui %1$s din lista de contacte."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":["FaceÈ›i click aici pentru a vă autentifica anonim"],"Username":["Nume de utilizator"],"user@domain":["utilizator@domeniu"],"Please enter a valid XMPP address":["Vă rugăm să introduceÈ›i o adresă XMPP validă"],"Chat Contacts":["Contacte"],"Toggle chat":["Comutare discuÈ›ie"],"Click to restore this chat":["FaceÈ›i clic pentru a restabili acestă discuÈ›ie"],"Minimized":["MicÈ™orată"],"This user is a moderator.":["Acest utilizator este moderator."],"This user can send messages in this groupchat.":["Acest utilizator poate trimite mesaje către acest grup de discuÈ›ii."],"This user can NOT send messages in this groupchat.":["Acest utilizator NU poate trimite mesaje către acest grup de discuÈ›ii."],"Owner":["Proprietar"],"Admin":["Administrator"],"Member":["Membru"],"Moderator":["Moderator"],"Visitor":["Vizitator"],"Click to mention %1$s in your message.":["FaceÈ›i click pentru a menÈ›iona %1$s în mesajul dumneavoastră."],"Participants":["ParticipanÈ›i"],"This field is required":["Acest câmp este obligatoriu"],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":["nume@chat.exemplu.org"],"Groupchat name":["Numele grupului de discuÈ›ii"],"Groupchat address":["Adresa grupului de discuÈ›ii"],"Invite":["Invitare"],"Show groupchats":["Arată grupurile de discuÈ›ii"],"Server address":["Adresa serverului"],"Show more information on this groupchat":["Arată mai multe informaÈ›ii despre acest grup de discuÈ›ii"],"Query for Groupchats":["CăutaÈ›i un grup de discuÈ›ii"],"Description:":["Descriere:"],"Groupchat Address (JID):":["Adresa grupului de discuÈ›ii (JID):"],"Participants:":["ParticipanÈ›i:"],"Features:":["Caracteristici:"],"Requires authentication":["Este nevoie de autentificare"],"Hidden":["Ascuns"],"Requires an invitation":["Este nevoie de o invitaÈ›ie"],"Moderated":["Moderat"],"Non-anonymous":["Fără anonimitate"],"Open":["Deschis"],"Permanent":["Permanent"],"Public":["Public"],"Semi-anonymous":["Semi-anonim"],"Temporary":["Temporar"],"Unmoderated":["Nemoderat"],"conference.example.org":["chat.exemplu.org"],"No groupchats found":["Nu s-au găsit grupuri de discuÈ›ii"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Descriere"],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Doar pentru membrii"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Nume"],"This groupchat does not require a password upon entry":[""],"No password required":["Nu este necesară o parolă"],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":["Utilizatori conectaÈ›i"],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":["Persistent"],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":["InformaÈ›ii despre grupul de discuÈ›ii %1$s"],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":["Acest grup de discuÈ›ii nu mai există"],"Enter groupchat":["IntraÈ›i în grupul de discuÈ›ii"],"Please choose your nickname":["Vă rugăm, alegeÈ›i-vă pseudonimul"],"This groupchat requires a password":["Intrarea în acest grup de discuÈ›ii este pe bază de parolă"],"Password: ":["Parolă "],"Submit":["Trimite"],"%1$s has entered the groupchat":["%1$s a intrat în grupul de discuÈ›ii"],"%1$s has left the groupchat":["%1$s a plecat din grupul de discuÈ›ii"],"%1$s is now a moderator":["%1$s este acum moderator"],"%1$s is no longer a moderator":["%1$s nu mai este moderator"],"%1$s has been muted":["%1$s nu mai poate vorbi"],"Change user\'s affiliation to admin":["Schimbă rolul utilizatorului în cel de admin"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Schimbă rolul utilizatorului în participant"],"Remove this groupchat":["PărăsiÈ›i acest grup de discuÈ›ii"],"Kick user from groupchat":["ÃŽnlătură utilizatorul din acest grup"],"Write in 3rd person":["Scrie la persoana a treia"],"Grant membership to a user":["Oferă statutul de membru unui utilizator"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["ÃŽnlătură dreptul utilizatorului de a trimite mesaje"],"Change your nickname":["SchimbaÈ›i-vă pseudonimul"],"Grant moderator role to user":["Oferă unui utilizator rolul de moderator"],"Grant ownership of this groupchat":["Oferă unui utilizator statutul de proprietar al acestui grup de discuÈ›ii"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["Alege tema acestui grup de discuÈ›ie"],"Set groupchat subject (alias for /subject)":["DefineÈ™te subiectul acestui grup de discuÈ›ii (alias pentru /subiect)"],"Allow muted user to post messages":["ÃŽngăduie-i utilizatorului \\"mut\\" să publice mesaje"],"Message Retraction":[""],"Configure":[""],"Configure this groupchat":["ConfiguraÈ›i acest grup de discuÈ›ii"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["Ascunde lista participanÈ›ilor"],"Forbidden: you do not have the necessary role in order to do that.":["Interzis: nu aveÈ›i autorizaÈ›ia necesară pentru a face acest lucru."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Interzis: nu deÈ›ineÈ›i rolul potrivit pentru a face acest lucru."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Eroare: comanda %1$s preia doi parametri, pseudonimul utilizatorului È™i un element opÈ›ional."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Eroare: număr nevalid de argumente"],"This action was done by %1$s.":["Această acÈ›iune a fost realizată de către %1$s."],"The reason given is: \\"%1$s\\".":["Motivul indicat este: \\"%1$s\\"."],"Groupchats":["Grupuri de discuÈ›ii"],"Add a new groupchat":["AdăugaÈ›i un nou grup de discuÈ›ii"],"Query for groupchats":["CăutaÈ›i un grup de discuÈ›ii"],"Announcements":[""],"Notification from %1$s":["Notificare de la %1$s"],"%1$s says":["%1$s spune"],"has gone offline":["s-a deconectat"],"has gone away":["a plecat"],"is busy":["e ocupat"],"has come online":["s-a conectat"],"wants to be your contact":["vrea să fie contactul dumneavoastră"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":["FaceÈ›i click pentru a vă schimba mesajul de stare"],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":["Din păcate, din cauza unei erori nu s-a putut decripta un mesaj OMEMO."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Din păcate nu putem trimite un mesaj criptat pentru că %1$s cere ca dvs. să fiÈ›i abonaÈ› la prezenÈ›a lor pentru a putea vedea informaÈ›iile lor OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Ne pare rău, nu putem trimite un mesaj criptat pentru că serverul la distanță al lui %1$s nu poate fi găsit"],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["SunteÈ›i sigur că vreÈ›i să generaÈ›i noi chei OMEMO? Acest lucru va È™terge vechile dvs. chei iar toate mesajele criptate anterior nu vor mai putea fi decriptate pe acest dispozitiv."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":["PărăsiÈ›i acest grup de discuÈ›ii"],"Click to toggle the list of open groupchats":["FaceÈ›i clic pentru a comuta lista de discuÈ›ii de grup deschise"],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":["FaceÈ›i click pentru a elimina %1$s din lista de persoane de contact"],"Click to accept the contact request from %1$s":["FaceÈ›i clic pentru a accepta solicitarea de contact de la %1$s"],"Click to decline the contact request from %1$s":["FaceÈ›i click pentru a refuza solicitarea de contact de la %1$s"],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=ro-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/ru-LC_MESSAGES-converse-po.js b/src/conversejs/locales/ru-LC_MESSAGES-converse-po.js index cdf2b90d3a67c0d1ceead8cc83d727b79eb60a08..16ae4b0c8d6d11647f5b0efd546af663cdeb8f42 100644 --- a/src/conversejs/locales/ru-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/ru-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{448:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"ru"},"Create your account":["Создать вашу учётную запиÑÑŒ"],"Please enter the XMPP provider to register with:":["ПожалуйÑта, введите XMPP провайдера Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации:"],"Already have a chat account?":["Уже имеете учётную запиÑÑŒ чата?"],"Log in here":["Вход в ÑиÑтему"],"Account Registration:":["РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи:"],"Register":["РегиÑтрациÑ"],"Choose a different provider":["Выберите другого провайдера"],"Hold tight, we\'re fetching the registration form…":["Подождите немного, мы получаем региÑтрационную форму…"],"Cancel":["Отменить"],"The connection has dropped, attempting to reconnect.":["Соединение потерÑно, попытка переподключениÑ."],"An error occurred while connecting to the chat server.":["При подключении к чат-Ñерверу произошла ошибка."],"Your XMPP address and/or password is incorrect. Please try again.":["Ваш Ð°Ð´Ñ€ÐµÑ XMPP и/или пароль некорректные. ПожалуйÑта, попробуйте Ñнова."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["К Ñожалению, мы не Ñмогли подключитьÑÑ Ðº XMPP узлу Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Сервер XMPP не предлагал поддерживаемый механизм аутентификации"],"Sorry, could not determine upload URL.":["К Ñожалению, невозможно раÑпознать URL загрузки."],"Sorry, could not determine file upload URL.":["Извините, невозможно раÑпознать URL Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Извините, не удалоÑÑŒ загрузить ваш файл. Ответ Ñервера: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["К Ñожалению, произошла ошибка при загрузке файла."],"Sorry, looks like file upload is not supported by your server.":["Похоже, Ваш Ñервер не поддерживает загрузку файлов."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Размер Вашего файла(%1$s) превышает макÑимально допуÑтимый размер файла на Ñервере(%2$s)."],"Smileys and emotions":["Смайлы и Ñмоции"],"People":["Люди"],"Activities":["ЗанÑтиÑ"],"Travel":["ПутешеÑтвие"],"Objects":["Объекты"],"Animals and nature":["Животные и природа"],"Food and drink":["Еда и напитки"],"Symbols":["Символы"],"Flags":["Флаги"],"Stickers":["Ðаклейки"],"This groupchat is not anonymous":["Ðтот групповой чат не анонимный"],"This groupchat now shows unavailable members":["Ð’ данный момент Ñтот групповой чат показывает недоÑтупных учаÑтников"],"This groupchat does not show unavailable members":["Ð’ Ñтом групповом чате отÑутÑтвуют недоÑтупные учаÑтники"],"The groupchat configuration has changed":["Изменена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ чата"],"Groupchat logging is now enabled":["Журналирование группового чата теперь включено"],"Groupchat logging is now disabled":["Журналирование группового чата теперь отключено"],"This groupchat is now no longer anonymous":["Ðтот групповой чат больше не анонимен"],"This groupchat is now semi-anonymous":["Ðтот групповой чат чаÑтично анонимный"],"This groupchat is now fully-anonymous":["Ðтот групповой чат Ñтал полноÑтью анонимный"],"A new groupchat has been created":["ПоÑвилÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ групповой чат"],"Your nickname has been automatically set to %1$s":["Ваш пÑевдоним был автоматичеÑки изменён на: %1$s"],"Your nickname has been changed to %1$s":["Ваш пÑевдоним был изменён на: %1$s"],"You have been banned from this groupchat":["Вам запрещено подключатьÑÑ Ðº Ñтому групповому чату"],"You have been kicked from this groupchat":["Ð’Ð°Ñ Ð¸Ñключили из группового чата"],"You have been removed from this groupchat because of an affiliation change":["Ð’Ð°Ñ ÑƒÐ´Ð°Ð»Ð¸Ð»Ð¸ из-за Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ð’Ñ‹ были удалены из Ñтого группового чата Ñ‚.к. его режим был Ñменён на \\"по приглашению\\" и вы не были приглашены"],"You have been removed from this groupchat because the service hosting it is being shut down":["Ð’Ñ‹ были удалены из Ñтой комнаты по причине Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ…Ð¾Ñта"],"Your message was not delivered because you weren\'t allowed to send it.":["Ваше Ñообщение не было доÑтавлено, потому что вам не разрешили его отправить."],"Your message was not delivered because you\'re not present in the groupchat.":["Ваше Ñообщение не было отправлено потому что Ð’Ñ‹ не ÑоÑтоите в групповом чате."],"You\'re not allowed to register yourself in this groupchat.":["Вам не разрешено региÑтрировать ÑÐµÐ±Ñ Ð² Ñтом групповом чате."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Вам не разрешено региÑтрироватьÑÑ Ð² Ñтом групповом чате, потому что он только Ð´Ð»Ñ ÑƒÑ‡Ð°Ñтников."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Ðевозможно зарегиÑтрировать ваш пÑевдоним в Ñтом групповом чате, так как он не поддерживает региÑтрацию."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Ðевозможно зарегиÑтрировать ваш пÑевдоним в Ñтом групповом чате, так как предоÑтавлена Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° данных."],"Topic set by %1$s":["Тему уÑтановил(а) %1$s"],"Topic cleared by %1$s":["Тема очищена %1$s"],"%1$s has been banned by %2$s":["%1$s был забанен %2$s"],"%1$s has been banned":["%1$s был забанен"],"%1$s\'s nickname has changed":["%1$s Ñменил пÑевдоним"],"%1$s has been kicked out by %2$s":["%1$s был выгнан %2$s"],"%1$s has been kicked out":["%1$s был выкинут"],"%1$s has been removed because of an affiliation change":["%1$s был удален из-за Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ñтва"],"%1$s has been removed for not being a member":["%1$s был удален из-за того, что не ÑвлÑлÑÑ Ñ‡Ð»ÐµÐ½Ð¾Ð¼"],"%1$s is no longer an admin of this groupchat":["%1$s больше не ÑвлÑетÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором Ñтой комнаты"],"%1$s is no longer an owner of this groupchat":["%1$s переÑтал быть владельцем Ñтой конференции"],"%1$s is no longer banned from this groupchat":["%1$s был разбанен в Ñтой конференции"],"%1$s is now an %2$s of this groupchat":["%1$s теперь %2$s Ñтой комнаты"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Выбранный вами пÑевдоним зарезервирован или иÑпользуетÑÑ Ð² наÑтоÑщее времÑ, выберите другой."],"Password incorrect":["Ðеверный пароль"],"You are not on the member list of this groupchat.":["Ð’Ñ‹ не находитеÑÑŒ в ÑпиÑке членов Ñтой комнаты."],"You have been banned from this groupchat.":["Ð’Ñ‹ были забанены в Ñтой комнате."],"You are not allowed to create new groupchats.":["Вам не разрешено Ñоздавать новые комнаты."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Ваш пÑевдоним не ÑоответÑтвует правилам Ñтой комнаты."],"This groupchat does not (yet) exist.":["Ðта комната не ÑущеÑтвует (пока)."],"This groupchat has reached its maximum number of participants.":["Ðта комната доÑтигла макÑимального количеÑтва учаÑтников."],"Remote server not found":["Удалённый Ñервер не найден"],"The explanation given is: \\"%1$s\\".":["Причиной ÑвлÑетÑÑ: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s приглаÑил Ð²Ð°Ñ Ð² чат: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s приглаÑил Ð²Ð°Ñ Ð² комнату \\"%2$s\\" по Ñледующей причине: \\"%3$s\\""],"Error":["Ошибка"],"Sorry, something went wrong while trying to save your bookmark.":["Извините, что-то пошло не так при попытке Ñохранить вашу закладку."],"Timeout Error":["Ошибка времени ожиданиÑ"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Сервер не вернул ваши закладки в течение отмеренного ему времени. Ð’Ñ‹ можете перезагрузить Ñтраницу, чтобы запроÑить их Ñнова."],"My contacts":["Контакты"],"Pending contacts":["СобеÑедники, ожидающие авторизации"],"Contact requests":["ЗапроÑÑ‹ на авторизацию"],"Ungrouped":["ÐеÑгруппированные"],"New messages":["Ðовые ÑообщениÑ"],"Sorry, there was an error while trying to add %1$s as a contact.":["Извините, произошла ошибка при добавлении %1$s в качеÑтве контакта."],"This client does not allow presence subscriptions":["Данный чат-клиент не поддерживает ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе"],"Click to hide these contacts":["Кликните, чтобы ÑпрÑтать Ñти контакты"],"Unbookmark this groupchat":["Удалить Ñту комнату из закладок"],"Click to open this groupchat":["Зайти в чат"],"Click to toggle the bookmarks list":["Ðажмите, чтобы переключить ÑпиÑок закладок"],"Bookmarks":["Закладки"],"Bookmark this groupchat":["Добавить Ñту комнату в закладки"],"Would you like this groupchat to be automatically joined upon startup?":["Включить автоматичеÑкий вход в Ñту комнату при запуÑке?"],"The name for this bookmark:":["Ð˜Ð¼Ñ Ð´Ð»Ñ Ñтой закладки:"],"What should your nickname for this groupchat be?":["Какой должен быть пÑевдоним Ð´Ð»Ñ Ñтой комнаты?"],"Save":["Сохранить"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ð’Ñ‹ уверены, что хотите удалить закладку \\"%1$s\\"?"],"Close":["Закрыть"],"OK":["Подтвердить"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Скачать аудиофайл \\"%1$s\\""],"Download file \\"%1$s\\"":["Скачать файл \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["ВерÑии ÑообщениÑ"],"Retry":[""],"Uploading file:":["Загружаеммый файл:"],"%1$s has removed this message":["%1$s удалил Ñто Ñообщение"],"This message has been edited":["Ðто Ñообщение было отредактированно"],"Show more":["Показать больше"],"No message history available.":["Ðет доÑтупной иÑтории Ñообщений."],"Search results":["ПоиÑк результатов"],"Search":["ПоиÑк"],"Send the message":["Отправить Ñообщение"],"Start a call":["Инициировать звонок"],"Message characters remaining":["ОÑталоÑÑŒ Ñимволов ÑообщениÑ"],"Choose a file to send":["Выберите файл Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸"],"Click to write as a normal (non-spoiler) message":["Ðажмите, чтобы напиÑать как обычное (не-Ñпойлер) Ñообщение"],"Click to write your message as a spoiler":["Ðажмите, чтобы напиÑать Ñообщение как Ñпойлер"],"The User\'s Profile Image":["Фото пользователÑ"],"Trusted":["Доверенный"],"Untrusted":["Ðедоверенный"],"OMEMO Fingerprints":["Отпечатки OMEMO"],"No OMEMO-enabled devices found":["Ðе найдено уÑтройÑтв Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ OMEMO"],"Remove as contact":["Удалить из контактов"],"XMPP Address":["XMPP адреÑ"],"Email":["ÐÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°"],"Full Name":["ИмÑ"],"Nickname":["ПÑевдоним"],"Refresh":["Обновить"],"Role":["Роль"],"URL":["СÑылка"],"%1$s is typing":["%1$s набирает текÑÑ‚"],"%1$s has stopped typing":["%1$s прекратил печатать"],"%1$s has gone away":["%1$s отошёл"],"Remove messages":["Удалить ÑообщениÑ"],"Close this chat":["Закрыть Ñтот чат"],"Write in the third person":["ПиÑать от третьего лица"],"Show this menu":["Показать Ñто меню"],"Hidden message":["Скрытое Ñообщение"],"Message":["Сообщение"],"Optional hint":["ÐžÐ¿Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´Ñказка"],"You have unread messages":["У Ñ‚ÐµÐ±Ñ ÐµÑÑ‚ÑŒ непрочитанные ÑообщениÑ"],"Details":[""],"See more information about this person":["ПроÑмотреть больше информации об Ñтом человеке"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ð’Ñ‹ уверены, что хотите очиÑтить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ разговора?"],"%1$s has gone offline":["%1$s вышел из Ñети"],"%1$s is busy":["%1$s занÑÑ‚"],"%1$s is online":["%1$s зашел в Ñеть"],"Sorry, something went wrong while trying to refresh":["Извините, что-то пошло не так при попытке обновлениÑ"],"Are you sure you want to remove this contact?":["Ð’Ñ‹ уверены, что хотите удалить Ñтот контакт?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["ПроÑти, произошла ошибка при попытке ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %1$s как контакта."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Чтобы улучшить производительноÑÑ‚ÑŒ, мы кÑшируем данные в вашем браузере. Снимите флажок, еÑли вы иÑпользуете общий компьютер, или еÑли вы хотите, чтобы вÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±Ñ‹Ð»Ð° удалена поÑле вашего выхода. Важно, чтобы вы Ñвно вышли из ÑиÑтемы, иначе не вÑе кÑшированные данные могут быть удалены. Обратите внимание, что при иÑпользовании ненадежного уÑтройÑтва шифрование OMEMO ÐЕ доÑтупно."],"This is a trusted device":["Ðто доверенное уÑтройÑтво"],"Password":["Пароль"],"Create an account":["Создать учётную запиÑÑŒ"],"Don\'t have a chat account?":["Ðе имеете учётную запиÑÑŒ Ð´Ð»Ñ Ñ‡Ð°Ñ‚Ð°?"],"Log in":["Войти"],"Disconnected":["Отключено"],"Click here to log in anonymously":["Ðажмите здеÑÑŒ, чтобы войти анонимно"],"Username":["Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"],"user@domain":["пользователь@домен"],"Please enter a valid XMPP address":["ПожалуйÑта, введите дейÑтвительный XMPP адреÑ"],"Chat Contacts":["Контакты в чате"],"Toggle chat":["Включить чат"],"Click to restore this chat":["Кликните, чтобы развернуть чат"],"Minimized":["Свёрнуто"],"This field is required":["Ðто поле обÑзательно к заполнению"],"Join":["ПриÑоединитьÑÑ"],"Enter a new Groupchat":["Войти в новую комнату"],"name@conference.example.org":["например, name@conference.example.org"],"Groupchat name":["Ð˜Ð¼Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹"],"Groupchat address":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (идентификатор)"],"Groupchat id is invalid.":["ID группового чата недейÑтвителен."],"Invite":["ПриглаÑить"],"Show groupchats":["Показать ÑпиÑок групп"],"Server address":["ÐÐ´Ñ€ÐµÑ Ñервера"],"Show more information on this groupchat":["Показать больше информации об Ñтом чате"],"Query for Groupchats":["ЗапроÑить ÑпиÑок комнат"],"Description:":["ОпиÑание:"],"Groupchat Address (JID):":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (идентификатор):"],"Participants:":["УчаÑтники:"],"Features:":["СвойÑтва:"],"Requires authentication":["ТребуетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ"],"Hidden":["Скрыто"],"Requires an invitation":["ТребуетÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ"],"Moderated":["МодерируемаÑ"],"Non-anonymous":["Ðе анонимнаÑ"],"Open":["Открыть"],"Permanent":["ПоÑтоÑнный"],"Public":["Публичный"],"Semi-anonymous":["ЧаÑтично анонимный"],"Temporary":["Временный"],"Unmoderated":["Ðемодерируемый"],"conference.example.org":["например, conference.example.org"],"No groupchats found":["Комнаты не найдены"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Модераторы - Ñто привилегированные пользователи, которые могут менÑÑ‚ÑŒ роли других пользователей (за иÑключением тех, которые ÑвÑзаны Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором или владельцем."],"The default role, implies that you can read and write messages.":["Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ñ€Ð¾Ð»ÑŒ подразумевает что Ð’Ñ‹ можете читать и пиÑать ÑообщениÑ."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["ПоÑетителÑм не разрешаетÑÑ Ð¿Ð¸Ñать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² модерируемом многопользовательÑком чате."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Владелец обладает Ñамыми обширными правами. Владельцы могут изменÑÑ‚ÑŒ роли и права вÑех других пользователей."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["ÐдминиÑтратор - Ð²Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ преимущеÑтву принадлежноÑÑ‚ÑŒ. ÐдминиÑтраторы могут изменÑÑ‚ÑŒ роли и принадлежноÑти других пользователей, за иÑключением владельцев."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Чтобы забанить пользователÑ, Ð’Ñ‹ приÑваиваете ему принадлежноÑÑ‚ÑŒ \\"изгнанный\\"."],"Change role":["Изменить роль"],"New Role":["ÐÐ¾Ð²Ð°Ñ Ñ€Ð¾Ð»ÑŒ"],"Reason":["Причина"],"Change affiliation":["Изменить принадлежноÑÑ‚ÑŒ"],"New affiliation":["ÐÐ¾Ð²Ð°Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð½Ð¾ÑÑ‚ÑŒ"],"Affiliation":["ПринадлежноÑÑ‚ÑŒ"],"Moderator Tools":["ИнÑтурменты модератора"],"No users with that affiliation found.":["Пользователи Ñ Ñтой принадлежноÑтью не найдены."],"No users with that role found.":["Пользователи Ñ Ñтой ролью не найдены."],"Type here to filter the search results":[""],"Show users":["Показать пользователей"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Роли приÑваиваютÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñм, чтобы предоÑтавить или запретить им определенные ÑпоÑобноÑти в многопользовательÑком чате. Они назначаютÑÑ Ð»Ð¸Ð±Ð¾ Ñвно, либо неÑвно как чаÑÑ‚ÑŒ членÑтва. Роль, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ обуÑловлена принадлежноÑтью, дейÑтвительна только в течение ÑеÑÑии пользователÑ."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["ПринадлежноÑÑ‚ÑŒ - Ñто долгоÑрочное право, которое обычно подразумевает определенную роль и предоÑтавлÑет привилегии и обÑзанноÑти. Ðапример, админиÑтраторы и владельцы автоматичеÑки получают роль модератора."],"Affiliation changed":[""],"You\'re not allowed to make that change":["Вам не разрешено вноÑить Ñто изменение"],"Topic":["Тема"],"Topic author":["Ðвтор темы"],"Groupchat address (JID)":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (JID)"],"Message archiving":["ÐÑ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ñ Ñообщений"],"Messages are archived on the server":["Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ Ð½Ð° Ñервере"],"Description":["ОпиÑание"],"Features":["ОÑобенноÑти"],"This groupchat is not publicly searchable":["Ðта комната недоÑтупна Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ поиÑка"],"This groupchat is restricted to members only":["Ðта комната предназначена только Ð´Ð»Ñ ÑƒÑ‡Ð°Ñтников"],"Members only":["Только Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð¾Ð²"],"Participants entering this groupchat need to request permission to write":["УчаÑтникам, входÑщим в Ñтот групповой чат, необходимо получить разрешение Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ñообщений"],"Name":["ИмÑ"],"This groupchat does not require a password upon entry":["Ðта комната не требует Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°"],"No password required":["Пароль не требуетÑÑ"],"Not anonymous":["Ðе анонимнаÑ"],"All other groupchat participants can see your XMPP address":["Ð’Ñе учаÑтники группового чата могут видеть ваш XMPP адреÑ"],"Not moderated":["Ðемодерируемый"],"Participants entering this groupchat can write right away":["УчаÑтники, входÑщие в Ñтот групповой чат, могут пиÑать Ñразуже"],"Online users":["Ð’ Ñети"],"Anyone can join this groupchat":["Каждый может приÑоединитьÑÑ Ðº Ñтой комнате"],"This groupchat requires a password before entry":["Ðта комната требует ввеÑти пароль перед входом"],"Password protected":["Пароль защищён"],"Persistent":["Стойкий"],"This groupchat persists even if it\'s unoccupied":["Ðта комната ÑохранÑетÑÑ, даже еÑли в ней нет учаÑтников"],"Only moderators can see your XMPP address":["Только модераторы могут видеть ваш пÑевдоним XMPP"],"This groupchat will disappear once the last person leaves":["Ðта комната иÑчезнет поÑле выхода поÑледнего человека"],"This groupchat is publicly searchable":["Ðта комната доÑтупна Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ поиÑка"],"Groupchat info for %1$s":["Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ð¸ от %1$s"],"You\'re not allowed to send messages in this room":["Вам не разрешено пиÑать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате"],"The conversation has moved. Click below to enter.":["БеÑеда перемещена. Ðажмите ниже чтобы войти."],"This groupchat no longer exists":["Ðта комната больше не ÑущеÑтвует"],"Enter groupchat":["Войти в комнату"],"Please choose your nickname":["ПожалуйÑта, выберите Ñвой пÑевдоним"],"This groupchat requires a password":["Ð”Ð»Ñ Ð´Ð¾Ñтупа в чат необходим пароль"],"Password: ":["Пароль: "],"Submit":["Отправить"],"This user is a moderator.":["Ðтот пользователь ÑвлÑетÑÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼."],"This user can send messages in this groupchat.":["Ðтот пользователь может отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате."],"This user can NOT send messages in this groupchat.":["Ðтот пользователь ÐЕ может отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате."],"Owner":["Владелец"],"Admin":["Ðдмин"],"Member":["УчаÑтник"],"Moderator":["Модератор"],"Visitor":["ПоÑетитель"],"Click to mention %1$s in your message.":["Ðажмите, чтобы упомÑнуть %1$s в вашем Ñообщении."],"Participants":["УчаÑтники"],"%1$s has entered the groupchat":["%1$s вошёл в комнату"],"%1$s has left the groupchat":["%1$s покинул комнату"],"%1$s is now a moderator":["%1$s теперь модератор"],"%1$s is no longer a moderator":["%1$s больше не модератор"],"%1$s has been muted":["%1$s был приглушён"],"%1$s and %2$s":["%1$s и %2$s"],"Change user\'s affiliation to admin":["Дать права админиÑтратора"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Изменить роль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° \\"учаÑтник\\""],"Remove this groupchat":["Покинуть Ñту комнату"],"Kick user from groupchat":["Удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· комнаты"],"Write in 3rd person":["ПиÑать в третьем лице"],"Grant membership to a user":["Сделать Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÑ‡Ð°Ñтником"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Запретить отправку Ñообщений"],"Change your nickname":["Изменить Ñвой пÑевдоним"],"Grant moderator role to user":["ПредоÑтавить права модератора пользователю"],"Grant ownership of this groupchat":["ПредоÑтавить права владельца на Ñтот чат"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["УÑтановить тему комнаты"],"Set groupchat subject (alias for /subject)":["УÑтановить тему комнаты (пÑевдоним Ð´Ð»Ñ /subject)"],"Allow muted user to post messages":["Разрешить заглушенным пользователÑм отправлÑÑ‚ÑŒ ÑообщениÑ"],"You are about to retract this message.":["Ð’Ñ‹ ÑобираетеÑÑŒ отозвать Ñто Ñообщение."],"Sorry, you\'re not allowed to retract this message":["Извините, вы не можете отозвать Ñто Ñообщение"],"A timeout occurred while trying to retract the message":["При попытке отозвать Ñообщение произошел таймаут"],"Configure":[""],"Configure this groupchat":["ÐаÑтроить комнату"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["СпрÑтать ÑпиÑок учаÑтников"],"Forbidden: you do not have the necessary role in order to do that.":["Запрещено: у Ð²Ð°Ñ Ð½ÐµÑ‚ необходимой роли Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ дейÑтвиÑ."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Запрещено: у Ð²Ð°Ñ Ð½ÐµÑ‚ необходимых ÑвÑзей Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ дейÑтвиÑ."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Ошибка: команда \\"%1$s\\" принимает два аргумента, пользовательÑкий пÑевдоним и (опционально) причину."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["например, name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Ошибка: неверное количеÑтво аргументов"],"This action was done by %1$s.":["Ðто дейÑтвие было выполнено %1$s."],"The reason given is: \\"%1$s\\".":["Причиной ÑвлÑетÑÑ: \\"%1$s\\"."],"Groupchats":["Комнаты"],"Add a new groupchat":["Добавить новую комнату"],"Query for groupchats":["ЗапроÑить ÑпиÑок комнат"],"Announcements":[""],"Notification from %1$s":["Уведомление от %1$s"],"%1$s says":["%1$s говорит"],"has gone offline":["вышел из Ñети"],"has gone away":["отошёл"],"is busy":["занÑÑ‚"],"has come online":["поÑвилÑÑ Ð² Ñети"],"wants to be your contact":["хочет быть в вашем ÑпиÑке контактов"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Подробнее"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s на оÑнове открытого иÑходного кода %2$s XMPP чат-клиент предоÑтавлен вам %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s переведите %2$s Ñто на Ñвой родной Ñзык"],"Log out":["Выйти"],"Click to change your chat status":["Изменить ваш ÑтатуÑ"],"Show details about this chat client":["Показать больше информации об Ñтом чате"],"Your avatar image":["Ваш аватар"],"Checkbox for selecting the following fingerprint":["Флаг Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° Ñледующих отпечатков"],"Device without a fingerprint":["УÑтройÑтво без отпечатка"],"Other OMEMO-enabled devices":["Другие уÑтройÑтва Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Флаг Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° отпечатков вÑех других OMEMO уÑтройÑтв"],"Remove checked devices and close":["Удалить выбранные уÑтройÑтва и закрыть"],"Select all":["Выбрать вÑÑ‘"],"This device\'s OMEMO fingerprint":["OMEMO-Отпечаток Ñтого уÑтройÑтва"],"Generate new keys and fingerprint":["Сгенерировать новые ключи и отпечаток"],"Your Profile":["Ваш профиль"],"XMPP Address (JID)":["XMPP Ð°Ð´Ñ€ÐµÑ (JID)"],"Save and close":["Сохранить и закрыть"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["ИÑпользуйте запÑтые Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‡Ð¸ÑÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких ролей. Ваши роли отображаютÑÑ Ñ€Ñдом Ñ Ð²Ð°ÑˆÐ¸Ð¼ именем в чате."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Извините, произошла ошибка при попытке Ñохранить данные вашего профилÑ."],"You can check your browser\'s developer console for any error output.":["Проверьте конÑоль вашего браузера Ð´Ð»Ñ Ð´ÐµÑ‚Ð°Ð»ÐµÐ¹ об ошибках."],"Away":["Отошёл"],"Busy":["ЗанÑÑ‚"],"Custom status":["Произвольный ÑтатуÑ"],"Offline":["Ðе в Ñети"],"Online":["Ð’ Ñети"],"Away for long":["Давно отÑутÑтвует"],"Change chat status":["Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ‡Ð°Ñ‚Ð°"],"Personal status message":["Личное Ñообщение"],"I am %1$s":["Я %1$s"],"Are you sure you want to log out?":["Ð’Ñ‹ уверены, что хотите выйти?"],"online":["на ÑвÑзи"],"busy":["занÑÑ‚"],"away for long":["отошёл надолго"],"away":["отошёл"],"offline":["Ðе в Ñети"],"Sorry, could not decrypt a received OMEMO message due to an error.":["К Ñожалению, не удалоÑÑŒ раÑшифровать OMEMO Ñообщение."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["У %1$s нет клиента Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ OMEMO. Шифрование чата более не поддерживаетÑÑ Ð² данной комнате."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Ðевозможно иÑпользовать Ñквозное шифрование Ñ‚.к. %1$s иÑпользует клиент без поддержки OMEMO."],"Messages are being sent in plaintext":["Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ÑÑ Ð² виде открытого текÑта"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Извините, произошла ошибка при попытке ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑƒÑтройÑтв."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ð’Ñ‹ уверены, что хотите Ñгенерировать новые OMEMO ключи? Ðто дейÑтвие удалит вÑе Ñтырые ключи, и ранее зашифрованные Ñообщению не Ñмогут быть раÑшифрованы на Ñтом девайÑе."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Извините, невозможно отправить зашифрованное Ñообщение, поÑкольку %1$s требуют, чтобы вы были на них подпиÑаны, чтобы увидеть их информацию об OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Извините, мы не можем отправить зашифрованное Ñообщение, так как не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ удалённый Ñервер Ð´Ð»Ñ \\"%1$s\\""],"Unable to send an encrypted message due to an unexpected error.":["Ðе удаётÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ зашифрованное Ñообщение из-за непредвиденной ошибки."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Сообщение не подерживаетÑÑ, Ñ‚.к. оно зашифровано Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ OMEMO. Более подробную информацию ищите по адреÑу: https://conversations.im/omemo"]," e.g. conversejs.org":[" например, conversejs.org"],"Fetch registration form":["Получить форму региÑтрации"],"Tip: A list of public XMPP providers is available":["Совет. СпиÑок публичных XMPP провайдеров доÑтупен"],"here":["здеÑÑŒ"],"Sorry, we\'re unable to connect to your chosen provider.":["К Ñожалению, мы не можем подключитьÑÑ Ðº выбранному вами провайдеру."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["К Ñожалению, провайдер не поддерживает региÑтрацию аккаунта через клиентÑкое приложение. ПожалуйÑта попробуйте выбрать другого провайдера."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Что-то пошло не так при уÑтановке ÑвÑзи Ñ \\"%1$s\\". Ð’Ñ‹ уверены, что такой Ð°Ð´Ñ€ÐµÑ ÑущеÑтвует?"],"Now logging you in":["ОÑущеÑтвлÑетÑÑ Ð²Ñ…Ð¾Ð´"],"Registered successfully":["ЗарегиÑтрирован уÑпешно"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Провайдер отклонил вашу попытку зарегиÑтрироватьÑÑ. ПожалуйÑта, проверьте, правильно ли введены значениÑ."],"Leave this groupchat":["Покинуть Ñту комнату"],"Click to toggle the list of open groupchats":["Ðажмите, чтобы переключить ÑпиÑок комнат"],"Open Groupchats":["Открытые групповые чаты"],"Are you sure you want to leave the groupchat %1$s?":["Ð’Ñ‹ уверены, что хотите покинуть комнату \\"%1$s\\"?"],"Add":["Добавить"],"Add a Contact":["Добавить контакт"],"This contact is busy":["ЗанÑÑ‚"],"This contact is online":["Ð’ Ñети"],"This contact is offline":["Ðе в Ñети"],"This contact is unavailable":["ÐедоÑтупен"],"This contact is away for an extended period":["Ðадолго отошёл"],"This contact is away":["Отошёл"],"Contact name":["Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°"],"Optional nickname":["Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ умолчанию"],"Sorry, could not find a contact with that name":["Извините, контакт Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем не найден"],"This contact has already been added":["Ðтот контак уже добавлен"],"Filter":["Фильтр"],"Filter by contact name":["Фильтр по имени"],"Filter by group name":["Фильтр по названию группы"],"Filter by status":["Фильтр по ÑтатуÑу"],"Any":["Любой"],"Unread":["Ðепрочитанно"],"Chatty":["Болтливый"],"Extended Away":["Ðет на меÑте долгое времÑ"],"Click to remove %1$s as a contact":["Ðажми что-бы удалить %1$s как контакт"],"Click to accept the contact request from %1$s":["Кликни, что-бы принÑÑ‚ÑŒ Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° добавление от %1$s"],"Click to decline the contact request from %1$s":["Кликни, что-бы отклонить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° добавление от %1$s"],"Are you sure you want to decline this contact request?":["Ð’Ñ‹ уверены, что хотите отклонить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ Ñтого контакта?"],"Contacts":["Контакты"],"Add a contact":["Добавть контакт"],"Re-sync your contacts":["Синхронизируйте ваши контакты"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[170],{536:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"ru"},"Create your account":["Создать учетную запиÑÑŒ"],"Please enter the XMPP provider to register with:":["ПожалуйÑта, введите XMPP провайдера Ð´Ð»Ñ Ñ€ÐµÐ³Ð¸Ñтрации:"],"Already have a chat account?":["Уже имеете учётную запиÑÑŒ чата?"],"Log in here":["Вход в ÑиÑтему"],"Account Registration:":["РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи:"],"Register":["РегиÑтрациÑ"],"Choose a different provider":["Выберите другого провайдера"],"Hold tight, we\'re fetching the registration form…":["Подождите немного, мы получаем региÑтрационную форму…"],"Cancel":["Отменить"],"The connection has dropped, attempting to reconnect.":["Соединение потерÑно, попытка переподключениÑ."],"An error occurred while connecting to the chat server.":["При подключении к чат-Ñерверу произошла ошибка."],"Your XMPP address and/or password is incorrect. Please try again.":["Ваш Ð°Ð´Ñ€ÐµÑ XMPP и/или пароль некорректные. ПожалуйÑта, попробуйте Ñнова."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["К Ñожалению, мы не Ñмогли подключитьÑÑ Ðº XMPP узлу Ñ Ð´Ð¾Ð¼ÐµÐ½Ð¾Ð¼: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Сервер XMPP не предлагал поддерживаемый механизм аутентификации"],"Undecryptable OMEMO message":["ÐераÑшифруемое OMEMO-Ñообщение"],"Sorry, could not determine upload URL.":["К Ñожалению, невозможно раÑпознать URL загрузки."],"Sorry, could not determine file upload URL.":["Извините, невозможно раÑпознать URL Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файла."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Извините, не удалоÑÑŒ загрузить ваш файл. Ответ Ñервера: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["К Ñожалению, произошла ошибка при загрузке файла."],"You\'re not allowed to retract your message.":["Вам не разрешено отозвать Ñвое Ñообщение."],"Sorry, an error occurred while trying to retract your message.":["К Ñожалению, при попытке отозвать ваше Ñообщение произошла ошибка."],"You\'re not allowed to send a message.":["Вам не разрешено отправлÑÑ‚ÑŒ ÑообщениÑ."],"Sorry, an error occurred while trying to send your message.":["Извините, при отправке вашего ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð¾ÑˆÐ»Ð° ошибка."],"Sorry, looks like file upload is not supported by your server.":["Похоже, Ваш Ñервер не поддерживает загрузку файлов."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Размер Вашего файла(%1$s) превышает макÑимально допуÑтимый размер файла на Ñервере(%2$s)."],"Smileys and emotions":["Смайлы и Ñмоции"],"People":["Люди"],"Activities":["ЗанÑтиÑ"],"Travel":["ПутешеÑтвие"],"Objects":["Объекты"],"Animals and nature":["Животные и природа"],"Food and drink":["Еда и напитки"],"Symbols":["Символы"],"Flags":["Флаги"],"Stickers":["Ðаклейки"],"This groupchat is not anonymous":["Ðтот групповой чат не анонимный"],"This groupchat now shows unavailable members":["Ð’ данный момент Ñтот групповой чат показывает недоÑтупных учаÑтников"],"This groupchat does not show unavailable members":["Ð’ Ñтом групповом чате отÑутÑтвуют недоÑтупные учаÑтники"],"The groupchat configuration has changed":["Изменена ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ чата"],"Groupchat logging is now enabled":["Журналирование группового чата теперь включено"],"Groupchat logging is now disabled":["Журналирование группового чата теперь отключено"],"This groupchat is now no longer anonymous":["Ðтот групповой чат больше не анонимен"],"This groupchat is now semi-anonymous":["Ðтот групповой чат чаÑтично анонимный"],"This groupchat is now fully-anonymous":["Ðтот групповой чат Ñтал полноÑтью анонимный"],"A new groupchat has been created":["ПоÑвилÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ групповой чат"],"Your nickname has been automatically set to %1$s":["Ваш пÑевдоним был автоматичеÑки изменён на: %1$s"],"Your nickname has been changed to %1$s":["Ваш пÑевдоним был изменён на: %1$s"],"You have been banned from this groupchat":["Вам запрещено подключатьÑÑ Ðº Ñтому групповому чату"],"You have exited this groupchat due to a technical problem":["Ð’Ñ‹ вышли из группового чата из-за техничеÑкой проблемы"],"You have been kicked from this groupchat":["Ð’Ð°Ñ Ð¸Ñключили из группового чата"],"You have been removed from this groupchat because of an affiliation change":["Ð’Ð°Ñ ÑƒÐ´Ð°Ð»Ð¸Ð»Ð¸ из-за Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ð’Ñ‹ были удалены из Ñтого группового чата Ñ‚.к. его режим был Ñменён на \\"по приглашению\\" и вы не были приглашены"],"You have been removed from this groupchat because the service hosting it is being shut down":["Ð’Ñ‹ были удалены из Ñтой комнаты по причине Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ…Ð¾Ñта"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Ваш отзыв не был доÑтавлен, потому что вы не приÑутÑтвовали в групповом чате."],"Your message was not delivered because you weren\'t allowed to send it.":["Ваше Ñообщение не было доÑтавлено, потому что вам не разрешили его отправить."],"Your message was not delivered because you\'re not present in the groupchat.":["Ваше Ñообщение не было отправлено потому что Ð’Ñ‹ не ÑоÑтоите в групповом чате."],"A timeout happened while while trying to retract your message.":["ИÑтекло Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ попытке отозвать ваше Ñообщение."],"You\'re not allowed to register yourself in this groupchat.":["Вам не разрешено региÑтрировать ÑÐµÐ±Ñ Ð² Ñтом групповом чате."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Вам не разрешено региÑтрироватьÑÑ Ð² Ñтом групповом чате, потому что он только Ð´Ð»Ñ ÑƒÑ‡Ð°Ñтников."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Ðевозможно зарегиÑтрировать ваш пÑевдоним в Ñтом групповом чате, так как он не поддерживает региÑтрацию."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Ðевозможно зарегиÑтрировать ваш пÑевдоним в Ñтом групповом чате, так как предоÑтавлена Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° данных."],"Topic set by %1$s":["Тему уÑтановил(а) %1$s"],"Topic cleared by %1$s":["Тема очищена %1$s"],"%1$s has been banned by %2$s":["%1$s был забанен %2$s"],"%1$s has been banned":["%1$s был забанен"],"%1$s\'s nickname has changed":["%1$s Ñменил пÑевдоним"],"%1$s has been kicked out by %2$s":["%1$s был выгнан %2$s"],"%1$s has been kicked out":["%1$s был выкинут"],"%1$s has been removed because of an affiliation change":["%1$s был удален из-за Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ‡Ð»ÐµÐ½Ñтва"],"%1$s has been removed for not being a member":["%1$s был удален из-за того, что не ÑвлÑлÑÑ Ñ‡Ð»ÐµÐ½Ð¾Ð¼"],"%1$s is no longer an admin of this groupchat":["%1$s больше не ÑвлÑетÑÑ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором Ñтой комнаты"],"%1$s is no longer an owner of this groupchat":["%1$s переÑтал быть владельцем Ñтой конференции"],"%1$s is no longer banned from this groupchat":["%1$s был разбанен в Ñтой конференции"],"%1$s is no longer a member of this groupchat":["%1$s больше не ÑвлÑетÑÑ ÑƒÑ‡Ð°Ñтником Ñтого группового чата"],"%1$s is now a member of this groupchat":["%1$s теперь ÑвлÑетÑÑ ÑƒÑ‡Ð°Ñтником Ñтого группового чата"],"%1$s is now an %2$s of this groupchat":["%1$s теперь %2$s Ñтой комнаты"],"The nickname you chose is reserved or currently in use, please choose a different one.":["Выбранный вами пÑевдоним зарезервирован или иÑпользуетÑÑ Ð² наÑтоÑщее времÑ, выберите другой."],"Password incorrect":["Ðеверный пароль"],"You are not on the member list of this groupchat.":["Ð’Ñ‹ не находитеÑÑŒ в ÑпиÑке членов Ñтой комнаты."],"You have been banned from this groupchat.":["Ð’Ñ‹ были забанены в Ñтой комнате."],"You are not allowed to create new groupchats.":["Вам не разрешено Ñоздавать новые комнаты."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Ваш пÑевдоним не ÑоответÑтвует правилам Ñтой комнаты."],"This groupchat does not (yet) exist.":["Ðта комната не ÑущеÑтвует (пока)."],"This groupchat has reached its maximum number of participants.":["Ðта комната доÑтигла макÑимального количеÑтва учаÑтников."],"Remote server not found":["Удалённый Ñервер не найден"],"The explanation given is: \\"%1$s\\".":["Причиной ÑвлÑетÑÑ: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s приглаÑил Ð²Ð°Ñ Ð² чат: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s приглаÑил Ð²Ð°Ñ Ð² комнату \\"%2$s\\" по Ñледующей причине: \\"%3$s\\""],"Error":["Ошибка"],"Sorry, something went wrong while trying to save your bookmark.":["Извините, что-то пошло не так при попытке Ñохранить вашу закладку."],"Timeout Error":["Ошибка времени ожиданиÑ"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Сервер не вернул ваши закладки в течение отмеренного ему времени. Ð’Ñ‹ можете перезагрузить Ñтраницу, чтобы запроÑить их Ñнова."],"My contacts":["Контакты"],"Pending contacts":["СобеÑедники, ожидающие авторизации"],"Contact requests":["ЗапроÑÑ‹ на авторизацию"],"Ungrouped":["ÐеÑгруппированные"],"New messages":["Ðовые ÑообщениÑ"],"Sorry, there was an error while trying to add %1$s as a contact.":["Извините, произошла ошибка при добавлении %1$s в качеÑтве контакта."],"This client does not allow presence subscriptions":["Данный чат-клиент не поддерживает ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾ ÑтатуÑе"],"Click to hide these contacts":["Кликните, чтобы ÑпрÑтать Ñти контакты"],"Unbookmark this groupchat":["Удалить Ñту комнату из закладок"],"Click to open this groupchat":["Зайти в чат"],"Click to toggle the bookmarks list":["Ðажмите, чтобы переключить ÑпиÑок закладок"],"Bookmarks":["Закладки"],"Bookmark this groupchat":["Добавить Ñту комнату в закладки"],"Would you like this groupchat to be automatically joined upon startup?":["Включить автоматичеÑкий вход в Ñту комнату при запуÑке?"],"The name for this bookmark:":["Ð˜Ð¼Ñ Ð´Ð»Ñ Ñтой закладки:"],"What should your nickname for this groupchat be?":["Какой должен быть пÑевдоним Ð´Ð»Ñ Ñтой комнаты?"],"Save":["Сохранить"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ð’Ñ‹ уверены, что хотите удалить закладку \\"%1$s\\"?"],"Unbookmark":["Удалить из закладок"],"Bookmark":["Добавить в закладки"],"Close":["Закрыть"],"OK":["Подтвердить"],"Image: ":["Изображение: "],"Download audio file \\"%1$s\\"":["Скачать аудиофайл \\"%1$s\\""],"Download file \\"%1$s\\"":["Скачать файл \\"%1$s\\""],"Cancel Editing":["Отменить редактирование"],"Edit":["Редактировать"],"Retract":["Отозвать"],"Message versions":["ВерÑии ÑообщениÑ"],"Retry":["Повторить"],"Uploading file:":["Загружаеммый файл:"],"%1$s has removed this message":["%1$s удалил Ñто Ñообщение"],"This message has been edited":["Ðто Ñообщение было отредактированно"],"Show more":["Показать больше"],"Show less":["Показать меньше"],"No message history available.":["Ðет доÑтупной иÑтории Ñообщений."],"Search results":["ПоиÑк результатов"],"Search":["ПоиÑк"],"Insert emojis":["Ð’Ñтавить Ñмайлы"],"Send the message":["Отправить Ñообщение"],"Start a call":["Инициировать звонок"],"Message characters remaining":["ОÑталоÑÑŒ Ñимволов ÑообщениÑ"],"Hide participants":["Скрыть учаÑтников"],"Show participants":["Показать учаÑтников"],"Choose a file to send":["Выберите файл Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸"],"Click to write as a normal (non-spoiler) message":["Ðажмите, чтобы напиÑать как обычное (не-Ñпойлер) Ñообщение"],"Click to write your message as a spoiler":["Ðажмите, чтобы напиÑать Ñообщение как Ñпойлер"],"The User\'s Profile Image":["Фото пользователÑ"],"Trusted":["Доверенный"],"Untrusted":["Ðедоверенный"],"OMEMO Fingerprints":["Отпечатки OMEMO"],"No OMEMO-enabled devices found":["Ðе найдено уÑтройÑтв Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ OMEMO"],"Remove as contact":["Удалить из контактов"],"XMPP Address":["XMPP адреÑ"],"Email":["ÐÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°"],"Full Name":["ИмÑ"],"Nickname":["ПÑевдоним"],"Refresh":["Обновить"],"Role":["Роль"],"URL":["СÑылка"],"%1$s is typing":["%1$s набирает текÑÑ‚"],"%1$s has stopped typing":["%1$s прекратил печатать"],"%1$s has gone away":["%1$s отошёл"],"Remove messages":["Удалить ÑообщениÑ"],"Close this chat":["Закрыть Ñтот чат"],"Write in the third person":["ПиÑать от третьего лица"],"Show this menu":["Показать Ñто меню"],"Hidden message":["Скрытое Ñообщение"],"Message":["Сообщение"],"Optional hint":["ÐžÐ¿Ñ†Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´Ñказка"],"You have unread messages":["У Ñ‚ÐµÐ±Ñ ÐµÑÑ‚ÑŒ непрочитанные ÑообщениÑ"],"Details":["Детали"],"See more information about this person":["ПроÑмотреть больше информации об Ñтом человеке"],"Close and end this conversation":["Закрыть и закончить Ñту беÑеду"],"Sorry, the connection has been lost, and your message could not be sent":["К Ñожалению, ÑвÑзь была потерÑна, и ваше Ñообщение не удалоÑÑŒ отправить"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":["Ð’Ñ‹ уверены, что хотите очиÑтить ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ разговора?"],"%1$s has gone offline":["%1$s вышел из Ñети"],"%1$s is busy":["%1$s занÑÑ‚"],"%1$s is online":["%1$s зашел в Ñеть"],"Sorry, something went wrong while trying to refresh":["Извините, что-то пошло не так при попытке обновлениÑ"],"Are you sure you want to remove this contact?":["Ð’Ñ‹ уверены, что хотите удалить Ñтот контакт?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["ПроÑти, произошла ошибка при попытке ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ %1$s как контакта."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Чтобы улучшить производительноÑÑ‚ÑŒ, мы кÑшируем данные в вашем браузере. Снимите флажок, еÑли вы иÑпользуете общий компьютер, или еÑли вы хотите, чтобы вÑÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð±Ñ‹Ð»Ð° удалена поÑле вашего выхода. Важно, чтобы вы Ñвно вышли из ÑиÑтемы, иначе не вÑе кÑшированные данные могут быть удалены. Обратите внимание, что при иÑпользовании ненадежного уÑтройÑтва шифрование OMEMO ÐЕ доÑтупно."],"This is a trusted device":["Ðто доверенное уÑтройÑтво"],"Password":["Пароль"],"Create an account":["Создать учётную запиÑÑŒ"],"Don\'t have a chat account?":["Ðе имеете учётную запиÑÑŒ Ð´Ð»Ñ Ñ‡Ð°Ñ‚Ð°?"],"Log in":["Войти"],"Disconnected":["Отключено"],"Click here to log in anonymously":["Ðажмите здеÑÑŒ, чтобы войти анонимно"],"Username":["Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ"],"user@domain":["пользователь@домен"],"Please enter a valid XMPP address":["ПожалуйÑта, введите дейÑтвительный XMPP адреÑ"],"Chat Contacts":["Контакты в чате"],"Toggle chat":["Включить чат"],"Click to restore this chat":["Кликните, чтобы развернуть чат"],"Minimized":["Свёрнуто"],"This user is a moderator.":["Ðтот пользователь ÑвлÑетÑÑ Ð¼Ð¾Ð´ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼."],"This user can send messages in this groupchat.":["Ðтот пользователь может отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате."],"This user can NOT send messages in this groupchat.":["Ðтот пользователь ÐЕ может отправлÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате."],"Owner":["Владелец"],"Admin":["Ðдмин"],"Member":["УчаÑтник"],"Moderator":["Модератор"],"Visitor":["ПоÑетитель"],"Click to mention %1$s in your message.":["Ðажмите, чтобы упомÑнуть %1$s в вашем Ñообщении."],"Participants":["УчаÑтники"],"This field is required":["Ðто поле обÑзательно к заполнению"],"Join":["ПриÑоединитьÑÑ"],"Enter a new Groupchat":["Войти в новую комнату"],"name@conference.example.org":["например, name@conference.example.org"],"Groupchat name":["Ð˜Ð¼Ñ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹"],"Groupchat address":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (идентификатор)"],"Groupchat id is invalid.":["ID группового чата недейÑтвителен."],"Invite":["ПриглаÑить"],"Show groupchats":["Показать ÑпиÑок групп"],"Server address":["ÐÐ´Ñ€ÐµÑ Ñервера"],"Show more information on this groupchat":["Показать больше информации об Ñтом чате"],"Query for Groupchats":["ЗапроÑить ÑпиÑок комнат"],"Description:":["ОпиÑание:"],"Groupchat Address (JID):":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (идентификатор):"],"Participants:":["УчаÑтники:"],"Features:":["СвойÑтва:"],"Requires authentication":["ТребуетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ"],"Hidden":["Скрыто"],"Requires an invitation":["ТребуетÑÑ Ð¿Ñ€Ð¸Ð³Ð»Ð°ÑˆÐµÐ½Ð¸Ðµ"],"Moderated":["МодерируемаÑ"],"Non-anonymous":["Ðе анонимнаÑ"],"Open":["Открыть"],"Permanent":["ПоÑтоÑнный"],"Public":["Публичный"],"Semi-anonymous":["ЧаÑтично анонимный"],"Temporary":["Временный"],"Unmoderated":["Ðемодерируемый"],"conference.example.org":["например, conference.example.org"],"Groupchats found":["Ðайдены групповые чаты"],"No groupchats found":["Комнаты не найдены"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Модераторы - Ñто привилегированные пользователи, которые могут менÑÑ‚ÑŒ роли других пользователей (за иÑключением тех, которые ÑвÑзаны Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратором или владельцем."],"The default role, implies that you can read and write messages.":["Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ñ€Ð¾Ð»ÑŒ подразумевает что Ð’Ñ‹ можете читать и пиÑать ÑообщениÑ."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["ПоÑетителÑм не разрешаетÑÑ Ð¿Ð¸Ñать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² модерируемом многопользовательÑком чате."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Владелец обладает Ñамыми обширными правами. Владельцы могут изменÑÑ‚ÑŒ роли и права вÑех других пользователей."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["ÐдминиÑтратор - Ð²Ñ‚Ð¾Ñ€Ð°Ñ Ð¿Ð¾ преимущеÑтву принадлежноÑÑ‚ÑŒ. ÐдминиÑтраторы могут изменÑÑ‚ÑŒ роли и принадлежноÑти других пользователей, за иÑключением владельцев."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Чтобы забанить пользователÑ, Ð’Ñ‹ приÑваиваете ему принадлежноÑÑ‚ÑŒ \\"изгнанный\\"."],"Change role":["Изменить роль"],"New Role":["ÐÐ¾Ð²Ð°Ñ Ñ€Ð¾Ð»ÑŒ"],"Reason":["Причина"],"Change affiliation":["Изменить принадлежноÑÑ‚ÑŒ"],"New affiliation":["ÐÐ¾Ð²Ð°Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð½Ð¾ÑÑ‚ÑŒ"],"Affiliation":["ПринадлежноÑÑ‚ÑŒ"],"Moderator Tools":["ИнÑтурменты модератора"],"No users with that affiliation found.":["Пользователи Ñ Ñтой принадлежноÑтью не найдены."],"No users with that role found.":["Пользователи Ñ Ñтой ролью не найдены."],"Type here to filter the search results":[""],"Show users":["Показать пользователей"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Роли приÑваиваютÑÑ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñм, чтобы предоÑтавить или запретить им определенные ÑпоÑобноÑти в многопользовательÑком чате. Они назначаютÑÑ Ð»Ð¸Ð±Ð¾ Ñвно, либо неÑвно как чаÑÑ‚ÑŒ членÑтва. Роль, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ обуÑловлена принадлежноÑтью, дейÑтвительна только в течение ÑеÑÑии пользователÑ."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["ПринадлежноÑÑ‚ÑŒ - Ñто долгоÑрочное право, которое обычно подразумевает определенную роль и предоÑтавлÑет привилегии и обÑзанноÑти. Ðапример, админиÑтраторы и владельцы автоматичеÑки получают роль модератора."],"Affiliation changed":[""],"You\'re not allowed to make that change":["Вам не разрешено вноÑить Ñто изменение"],"Topic":["Тема"],"Topic author":["Ðвтор темы"],"Groupchat address (JID)":["ÐÐ´Ñ€ÐµÑ ÐºÐ¾Ð¼Ð½Ð°Ñ‚Ñ‹ (JID)"],"Message archiving":["ÐÑ€Ñ…Ð¸Ð²Ð°Ñ†Ð¸Ñ Ñообщений"],"Messages are archived on the server":["Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€ÑƒÑŽÑ‚ÑÑ Ð½Ð° Ñервере"],"Description":["ОпиÑание"],"Features":["ОÑобенноÑти"],"This groupchat is not publicly searchable":["Ðта комната недоÑтупна Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ поиÑка"],"This groupchat is restricted to members only":["Ðта комната предназначена только Ð´Ð»Ñ ÑƒÑ‡Ð°Ñтников"],"Members only":["Только Ð´Ð»Ñ Ñ‡Ð»ÐµÐ½Ð¾Ð²"],"Participants entering this groupchat need to request permission to write":["УчаÑтникам, входÑщим в Ñтот групповой чат, необходимо получить разрешение Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ñообщений"],"Name":["ИмÑ"],"This groupchat does not require a password upon entry":["Ðта комната не требует Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°"],"No password required":["Пароль не требуетÑÑ"],"Not anonymous":["Ðе анонимнаÑ"],"All other groupchat participants can see your XMPP address":["Ð’Ñе учаÑтники группового чата могут видеть ваш XMPP адреÑ"],"Not moderated":["Ðемодерируемый"],"Participants entering this groupchat can write right away":["УчаÑтники, входÑщие в Ñтот групповой чат, могут пиÑать Ñразуже"],"Online users":["Ð’ Ñети"],"Anyone can join this groupchat":["Каждый может приÑоединитьÑÑ Ðº Ñтой комнате"],"This groupchat requires a password before entry":["Ðта комната требует ввеÑти пароль перед входом"],"Password protected":["Пароль защищён"],"Persistent":["Стойкий"],"This groupchat persists even if it\'s unoccupied":["Ðта комната ÑохранÑетÑÑ, даже еÑли в ней нет учаÑтников"],"Only moderators can see your XMPP address":["Только модераторы могут видеть ваш пÑевдоним XMPP"],"This groupchat will disappear once the last person leaves":["Ðта комната иÑчезнет поÑле выхода поÑледнего человека"],"This groupchat is publicly searchable":["Ðта комната доÑтупна Ð´Ð»Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ поиÑка"],"Groupchat info for %1$s":["Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÐºÐ¾Ð½Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ð¸ от %1$s"],"You\'re not allowed to send messages in this room":["Вам не разрешено пиÑать ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð² Ñтой комнате"],"The conversation has moved. Click below to enter.":["БеÑеда перемещена. Ðажмите ниже чтобы войти."],"This groupchat no longer exists":["Ðта комната больше не ÑущеÑтвует"],"Enter groupchat":["Войти в комнату"],"Please choose your nickname":["ПожалуйÑта, выберите Ñвой пÑевдоним"],"This groupchat requires a password":["Ð”Ð»Ñ Ð´Ð¾Ñтупа в чат необходим пароль"],"Password: ":["Пароль: "],"Submit":["Отправить"],"%1$s has entered the groupchat":["%1$s вошёл в комнату"],"%1$s has left the groupchat":["%1$s покинул комнату"],"%1$s is now a moderator":["%1$s теперь модератор"],"%1$s is no longer a moderator":["%1$s больше не модератор"],"%1$s has been muted":["%1$s был приглушён"],"%1$s and %2$s":["%1$s и %2$s"],"Change user\'s affiliation to admin":["Дать права админиÑтратора"],"Ban user by changing their affiliation to outcast":[""],"Change user role to participant":["Изменить роль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° \\"учаÑтник\\""],"Remove this groupchat":["Покинуть Ñту комнату"],"Kick user from groupchat":["Удалить Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð· комнаты"],"Write in 3rd person":["ПиÑать в третьем лице"],"Grant membership to a user":["Сделать Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÑ‡Ð°Ñтником"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Запретить отправку Ñообщений"],"Change your nickname":["Изменить Ñвой пÑевдоним"],"Grant moderator role to user":["ПредоÑтавить права модератора пользователю"],"Grant ownership of this groupchat":["ПредоÑтавить права владельца на Ñтот чат"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":["УÑтановить тему комнаты"],"Set groupchat subject (alias for /subject)":["УÑтановить тему комнаты (пÑевдоним Ð´Ð»Ñ /subject)"],"Allow muted user to post messages":["Разрешить заглушенным пользователÑм отправлÑÑ‚ÑŒ ÑообщениÑ"],"You are about to retract this message.":["Ð’Ñ‹ ÑобираетеÑÑŒ отозвать Ñто Ñообщение."],"Sorry, you\'re not allowed to retract this message":["Извините, вы не можете отозвать Ñто Ñообщение"],"A timeout occurred while trying to retract the message":["При попытке отозвать Ñообщение произошел таймаут"],"Configure":[""],"Configure this groupchat":["ÐаÑтроить комнату"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Hide the list of participants":["СпрÑтать ÑпиÑок учаÑтников"],"Forbidden: you do not have the necessary role in order to do that.":["Запрещено: у Ð²Ð°Ñ Ð½ÐµÑ‚ необходимой роли Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ дейÑтвиÑ."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Запрещено: у Ð²Ð°Ñ Ð½ÐµÑ‚ необходимых ÑвÑзей Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ дейÑтвиÑ."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Ошибка: команда \\"%1$s\\" принимает два аргумента, пользовательÑкий пÑевдоним и (опционально) причину."],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Please enter the XMPP address of this groupchat to confirm":["ПожалуйÑта, введите XMPP-Ð°Ð´Ñ€ÐµÑ Ñтого группового чата Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ"],"name@example.org":["например, name@example.org"],"Optional reason for destroying this groupchat":["ÐеобÑÐ·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñтого группового чата"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["Ошибка: неверное количеÑтво аргументов"],"This action was done by %1$s.":["Ðто дейÑтвие было выполнено %1$s."],"The reason given is: \\"%1$s\\".":["Причиной ÑвлÑетÑÑ: \\"%1$s\\"."],"Groupchats":["Комнаты"],"Add a new groupchat":["Добавить новую комнату"],"Query for groupchats":["ЗапроÑить ÑпиÑок комнат"],"Announcements":[""],"Notification from %1$s":["Уведомление от %1$s"],"%1$s says":["%1$s говорит"],"has gone offline":["вышел из Ñети"],"has gone away":["отошёл"],"is busy":["занÑÑ‚"],"has come online":["поÑвилÑÑ Ð² Ñети"],"wants to be your contact":["хочет быть в вашем ÑпиÑке контактов"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":["Ðайдены команды"],"List available commands":[""],"No commands found":["Комманд не найдено"],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["К Ñожалению, при попытке выполнить команду произошла ошибка. Подробнее Ñм. Ð’ конÑоли разработчика"],"About":["Подробнее"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s на оÑнове открытого иÑходного кода %2$s XMPP чат-клиент предоÑтавлен вам %3$s Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s переведите %2$s Ñто на Ñвой родной Ñзык"],"Log out":["Выйти"],"Click to change your chat status":["Изменить ваш ÑтатуÑ"],"Show details about this chat client":["Показать больше информации об Ñтом чате"],"Your avatar image":["Ваш аватар"],"Checkbox for selecting the following fingerprint":["Флаг Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° Ñледующих отпечатков"],"Device without a fingerprint":["УÑтройÑтво без отпечатка"],"Other OMEMO-enabled devices":["Другие уÑтройÑтва Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ OMEMO"],"Checkbox to select fingerprints of all other OMEMO devices":["Флаг Ð´Ð»Ñ Ð²Ñ‹Ð±Ð¾Ñ€Ð° отпечатков вÑех других OMEMO уÑтройÑтв"],"Remove checked devices and close":["Удалить выбранные уÑтройÑтва и закрыть"],"Select all":["Выбрать вÑÑ‘"],"This device\'s OMEMO fingerprint":["OMEMO-Отпечаток Ñтого уÑтройÑтва"],"Generate new keys and fingerprint":["Сгенерировать новые ключи и отпечаток"],"Your Profile":["Ваш профиль"],"XMPP Address (JID)":["XMPP Ð°Ð´Ñ€ÐµÑ (JID)"],"Save and close":["Сохранить и закрыть"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["ИÑпользуйте запÑтые Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‡Ð¸ÑÐ»ÐµÐ½Ð¸Ñ Ð½ÐµÑкольких ролей. Ваши роли отображаютÑÑ Ñ€Ñдом Ñ Ð²Ð°ÑˆÐ¸Ð¼ именем в чате."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Извините, произошла ошибка при попытке Ñохранить данные вашего профилÑ."],"You can check your browser\'s developer console for any error output.":["Проверьте конÑоль вашего браузера Ð´Ð»Ñ Ð´ÐµÑ‚Ð°Ð»ÐµÐ¹ об ошибках."],"Away":["Отошёл"],"Busy":["ЗанÑÑ‚"],"Custom status":["Произвольный ÑтатуÑ"],"Offline":["Ðе в Ñети"],"Online":["Ð’ Ñети"],"Away for long":["Давно отÑутÑтвует"],"Change chat status":["Изменить ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ‡Ð°Ñ‚Ð°"],"Personal status message":["Личное Ñообщение"],"I am %1$s":["Я %1$s"],"Are you sure you want to log out?":["Ð’Ñ‹ уверены, что хотите выйти?"],"online":["на ÑвÑзи"],"busy":["занÑÑ‚"],"away for long":["отошёл надолго"],"away":["отошёл"],"offline":["Ðе в Ñети"],"Sorry, could not decrypt a received OMEMO message due to an error.":["К Ñожалению, не удалоÑÑŒ раÑшифровать OMEMO Ñообщение."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["У %1$s нет клиента Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ OMEMO. Шифрование чата более не поддерживаетÑÑ Ð² данной комнате."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Ðевозможно иÑпользовать Ñквозное шифрование Ñ‚.к. %1$s иÑпользует клиент без поддержки OMEMO."],"Messages are being sent in plaintext":["Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑŽÑ‚ÑÑ Ð² виде открытого текÑта"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Извините, невозможно отправить зашифрованное Ñообщение, поÑкольку %1$s требуют, чтобы вы были на них подпиÑаны, чтобы увидеть их информацию об OMEMO"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Извините, мы не можем отправить зашифрованное Ñообщение, так как не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ удалённый Ñервер Ð´Ð»Ñ \\"%1$s\\""],"Unable to send an encrypted message due to an unexpected error.":["Ðе удаётÑÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ зашифрованное Ñообщение из-за непредвиденной ошибки."],"Sorry, an error occurred while trying to remove the devices.":["Извините, произошла ошибка при попытке ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑƒÑтройÑтв."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Ð’Ñ‹ уверены, что хотите Ñгенерировать новые OMEMO ключи? Ðто дейÑтвие удалит вÑе Ñтырые ключи, и ранее зашифрованные Ñообщению не Ñмогут быть раÑшифрованы на Ñтом девайÑе."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Сообщение не подерживаетÑÑ, Ñ‚.к. оно зашифровано Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ OMEMO. Более подробную информацию ищите по адреÑу: https://conversations.im/omemo"]," e.g. conversejs.org":[" например, conversejs.org"],"Fetch registration form":["Получить форму региÑтрации"],"Tip: A list of public XMPP providers is available":["Совет. СпиÑок публичных XMPP провайдеров доÑтупен"],"here":["здеÑÑŒ"],"Sorry, we\'re unable to connect to your chosen provider.":["К Ñожалению, мы не можем подключитьÑÑ Ðº выбранному вами провайдеру."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["К Ñожалению, провайдер не поддерживает региÑтрацию аккаунта через клиентÑкое приложение. ПожалуйÑта попробуйте выбрать другого провайдера."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["Что-то пошло не так при уÑтановке ÑвÑзи Ñ \\"%1$s\\". Ð’Ñ‹ уверены, что такой Ð°Ð´Ñ€ÐµÑ ÑущеÑтвует?"],"Now logging you in":["ОÑущеÑтвлÑетÑÑ Ð²Ñ…Ð¾Ð´"],"Registered successfully":["ЗарегиÑтрирован уÑпешно"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Провайдер отклонил вашу попытку зарегиÑтрироватьÑÑ. ПожалуйÑта, проверьте, правильно ли введены значениÑ."],"Leave this groupchat":["Покинуть Ñту комнату"],"Click to toggle the list of open groupchats":["Ðажмите, чтобы переключить ÑпиÑок комнат"],"Open Groupchats":["Открытые групповые чаты"],"Are you sure you want to leave the groupchat %1$s?":["Ð’Ñ‹ уверены, что хотите покинуть комнату \\"%1$s\\"?"],"Add":["Добавить"],"Add a Contact":["Добавить контакт"],"This contact is busy":["ЗанÑÑ‚"],"This contact is online":["Ð’ Ñети"],"This contact is offline":["Ðе в Ñети"],"This contact is unavailable":["ÐедоÑтупен"],"This contact is away for an extended period":["Ðадолго отошёл"],"This contact is away":["Отошёл"],"Contact name":["Ð˜Ð¼Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð°"],"Optional nickname":["Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¿Ð¾ умолчанию"],"Sorry, could not find a contact with that name":["Извините, контакт Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼ именем не найден"],"This contact has already been added":["Ðтот контак уже добавлен"],"Filter":["Фильтр"],"Filter by contact name":["Фильтр по имени"],"Filter by group name":["Фильтр по названию группы"],"Filter by status":["Фильтр по ÑтатуÑу"],"Any":["Любой"],"Unread":["Ðепрочитанно"],"Chatty":["Болтливый"],"Extended Away":["Ðет на меÑте долгое времÑ"],"Click to remove %1$s as a contact":["Ðажми что-бы удалить %1$s как контакт"],"Click to accept the contact request from %1$s":["Кликни, что-бы принÑÑ‚ÑŒ Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° добавление от %1$s"],"Click to decline the contact request from %1$s":["Кликни, что-бы отклонить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° добавление от %1$s"],"Are you sure you want to decline this contact request?":["Ð’Ñ‹ уверены, что хотите отклонить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚ Ñтого контакта?"],"Contacts":["Контакты"],"Add a contact":["Добавть контакт"],"Re-sync your contacts":["Синхронизируйте ваши контакты"]}}}')}}]); //# sourceMappingURL=ru-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js b/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js new file mode 100644 index 0000000000000000000000000000000000000000..e8d4b28b865d925a1e25df859763ce4fe6b116c4 --- /dev/null +++ b/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{537:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","lang":"sv"},"Create your account":[""],"Please enter the XMPP provider to register with:":[""],"Already have a chat account?":[""],"Log in here":[""],"Account Registration:":[""],"Register":[""],"Choose a different provider":[""],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":[""],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Undecryptable OMEMO message":[""],"Sorry, could not determine upload URL.":[""],"Sorry, could not determine file upload URL.":[""],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":[""],"Sorry, could not succesfully upload your file.":[""],"You\'re not allowed to retract your message.":[""],"Sorry, an error occurred while trying to retract your message.":[""],"You\'re not allowed to send a message.":[""],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":[""],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":[""],"Smileys and emotions":[""],"People":[""],"Activities":[""],"Travel":[""],"Objects":[""],"Animals and nature":[""],"Food and drink":[""],"Symbols":[""],"Flags":[""],"Stickers":[""],"This groupchat is not anonymous":[""],"This groupchat now shows unavailable members":[""],"This groupchat does not show unavailable members":[""],"The groupchat configuration has changed":[""],"Groupchat logging is now enabled":[""],"Groupchat logging is now disabled":[""],"This groupchat is now no longer anonymous":[""],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":[""],"Your nickname has been automatically set to %1$s":[""],"Your nickname has been changed to %1$s":[""],"You have been banned from this groupchat":[""],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":[""],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":[""],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your retraction was not delivered because you\'re not present in the groupchat.":[""],"Your message was not delivered because you weren\'t allowed to send it.":[""],"Your message was not delivered because you\'re not present in the groupchat.":[""],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":[""],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":[""],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":[""],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":[""],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Timeout while trying to fetch archived messages.":[""],"An error occurred while querying for archived messages.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":[""],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":[""],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Cancel Editing":[""],"Edit":[""],"Retract":[""],"Message versions":[""],"Retry":[""],"Uploading file:":[""],"%1$s has removed this message":[""],"This message has been edited":[""],"Show more":[""],"Show less":[""],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":[""],"Trusted":[""],"Untrusted":[""],"OMEMO Fingerprints":[""],"No OMEMO-enabled devices found":[""],"Remove as contact":[""],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":[""],"Refresh":[""],"Role":[""],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":[""],"This is a trusted device":[""],"Password":[""],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":[""],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":[""],"Requires an invitation":[""],"Moderated":[""],"Non-anonymous":[""],"Open":[""],"Permanent":[""],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":[""],"Groupchats found":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, you\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":[""],"Features":[""],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":[""],"Participants entering this groupchat need to request permission to write":[""],"Name":[""],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":[""],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":[""],"The conversation has moved. Click below to enter.":[""],"This groupchat no longer exists":[""],"Hide the groupchat topic":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s have entered the groupchat":[""],"%1$s have left the groupchat":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"%1$s have been given voices":[""],"%1$s have been muted":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"Sorry, you\'re not allowed to retract this message":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Show more information about this groupchat":[""],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Please enter the XMPP address of this groupchat to confirm":[""],"name@example.org":[""],"Optional reason for destroying this groupchat":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Click to open this server message":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":[""],"Messages are sent encrypted":[""],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +//# sourceMappingURL=sv-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js.map b/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js.map new file mode 100644 index 0000000000000000000000000000000000000000..b6c87d06e6cee936e084dc34790806f2792f2fab --- /dev/null +++ b/src/conversejs/locales/sv-LC_MESSAGES-converse-po.js.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"locales/sv-LC_MESSAGES-converse-po.js","sourceRoot":""} \ No newline at end of file diff --git a/src/conversejs/locales/th-LC_MESSAGES-converse-po.js b/src/conversejs/locales/th-LC_MESSAGES-converse-po.js index 0400aa2d80030e9eb89eb4b54e4e7179127d206b..7c1ca290817d8d8d12215c74ef86569070b26df9 100644 --- a/src/conversejs/locales/th-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/th-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[171],{449:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"th"},"Create your account":["สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚à¸à¸‡à¸„ุณ"],"Please enter the XMPP provider to register with:":["โปรดระบุเซิร์ฟเวà¸à¸£à¹Œ XMPP เพื่à¸à¸¥à¸‡à¸—ะเบียน :"],"Already have a chat account?":["มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸Šà¸—à¹à¸¥à¹‰à¸§ ?"],"Log in here":["เข้าสู่ระบบที่นี่"],"Account Registration:":["ลงทะเบียนบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ :"],"Register":["สมัครสมาชิà¸"],"Choose a different provider":["เลืà¸à¸à¸œà¸¹à¹‰à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¸£à¸²à¸¢à¸à¸·à¹ˆà¸™"],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["ยà¸à¹€à¸¥à¸´à¸"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Sorry, could not determine upload URL.":["ขà¸à¸à¸ ัยไม่สามารถระบุ URL à¸à¸²à¸£à¸à¸±à¸›à¹‚หลด"],"Sorry, could not determine file upload URL.":["ขà¸à¸à¸ ัยไม่สามารถระบุ URL à¸à¸²à¸£à¸à¸±à¸›à¹‚หลดไฟล์"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["ขà¸à¸à¸ ัยà¸à¸±à¸›à¹‚หลดไฟล์ไม่สำเร็จ เซิร์ฟเวà¸à¸£à¹Œà¸•à¸à¸šà¸à¸¥à¸±à¸š: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["ขà¸à¸à¸ ัยไม่สามารถà¸à¸±à¸›à¹‚หลดไฟล์ได้"],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":["ขà¸à¸à¸ ัยดูเหมืà¸à¸™à¸§à¹ˆà¸²à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¹„ม่รà¸à¸‡à¸£à¸±à¸šà¸à¸²à¸£à¸à¸±à¸žà¹‚หลดไฟล์"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["ขนาดไฟล์ขà¸à¸‡à¸„ุณ %1$s เà¸à¸´à¸™à¸‚นาดสูงสุด %2$s ที่เซิร์ฟเวà¸à¸£à¹Œà¸à¸™à¸¸à¸à¸²à¸•"],"Smileys and emotions":["รà¸à¸¢à¸¢à¸´à¹‰à¸¡à¹à¸¥à¸°à¸à¸²à¸£à¸¡à¸“์"],"People":["ผู้คน"],"Activities":["à¸à¸´à¸ˆà¸à¸£à¸£à¸¡"],"Travel":["ท่à¸à¸‡à¹€à¸—ี่ยว"],"Objects":["วัตถุ"],"Animals and nature":["สัตว์à¹à¸¥à¸°à¸˜à¸£à¸£à¸¡à¸Šà¸²à¸•à¸´"],"Food and drink":["à¸à¸²à¸«à¸²à¸£à¹à¸¥à¸°à¹€à¸„รื่à¸à¸‡à¸”ื่ม"],"Symbols":["สัà¸à¸¥à¸±à¸à¸©à¸“์"],"Flags":["ธง"],"Stickers":["สติà¸à¹€à¸à¸à¸£à¹Œ"],"This groupchat is not anonymous":["Groupchat นี้ไม่ระบุตัวตน"],"This groupchat now shows unavailable members":["Groupchat นี้à¹à¸ªà¸”งสมาชิà¸à¸—ี่ไม่พร้à¸à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™"],"This groupchat does not show unavailable members":["Groupchat นี้ไม่à¹à¸ªà¸”งสมาชิà¸à¸—ี่ไม่สามารถใช้งานได้"],"The groupchat configuration has changed":["Groupchat มีà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า"],"Groupchat logging is now enabled":["เปิดใช้งานà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภGroupchat à¹à¸¥à¹‰à¸§"],"Groupchat logging is now disabled":["ปิดใช้งานà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภGroupchat à¹à¸¥à¹‰à¸§"],"This groupchat is now no longer anonymous":["Groupchat นี้ไม่ระบุตัวตนà¸à¸µà¸à¸•à¹ˆà¸à¹„ป"],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":["Groupchat นี้ไม่ระบุชื่à¸à¹€à¸•à¹‡à¸¡"],"A new groupchat has been created":["มีà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ Groupchat ใหม่"],"Your nickname has been automatically set to %1$s":["ชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡à¸„ุณถูà¸à¸•à¸±à¹‰à¸‡à¸„่าเป็น %1$s โดยà¸à¸±à¸•à¹‚นมัติ"],"Your nickname has been changed to %1$s":["ชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡à¸„ุณถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸›à¹‡à¸™ %1$s"],"You have been banned from this groupchat":["คุณถูà¸à¹à¸šà¸™à¸ˆà¸²à¸ Groupchat นี้"],"You have been kicked from this groupchat":["คุณถูà¸à¹€à¸•à¸°à¸ˆà¸²à¸ Groupchat นี้"],"You have been removed from this groupchat because of an affiliation change":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เนื่à¸à¸‡à¸ˆà¸²à¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸„วามร่วมมืà¸"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เนื่à¸à¸‡à¸ˆà¸²à¸ Groupchat เปลี่ยนเป็นà¹à¸šà¸šà¸ªà¸¡à¸²à¸Šà¸´à¸à¹€à¸—่านั้นà¹à¸¥à¸°à¸„ุณไม่ได้เป็นสมาชิà¸"],"You have been removed from this groupchat because the service hosting it is being shut down":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เพราะบริà¸à¸²à¸£à¹‚ฮสติ้งà¸à¸³à¸¥à¸±à¸‡à¸›à¸´à¸”ตัวลง"],"Your message was not delivered because you\'re not present in the groupchat.":["ข้à¸à¸„วามขà¸à¸‡à¸„ุณไม่ถูà¸à¸ªà¹ˆà¸‡à¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¸„ุณไม่ได้à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸à¸¥à¸¸à¹ˆà¸¡à¹à¸Šà¸—"],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":["คุณไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸¥à¸‡à¸—ะเบียนตัวเà¸à¸‡à¹ƒà¸™ Ggroupchat นี้"],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s ถูà¸à¹à¸šà¸™"],"%1$s\'s nickname has changed":["เปลี่ยนชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡ %1$s à¹à¸¥à¹‰à¸§"],"%1$s has been kicked out":["%1$s ถูà¸à¹€à¸•à¸°à¸à¸à¸à¹„ปà¹à¸¥à¹‰à¸§"],"%1$s has been removed because of an affiliation change":["%1$s ถูà¸à¸™à¸³à¸à¸à¸à¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸à¸²à¸£à¹€à¸‚้าร่วม"],"%1$s has been removed for not being a member":["%1$s ถูà¸à¸¥à¸šà¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¹„ม่ได้เป็นสมาชิà¸"],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["บันทึà¸"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["ปิด"],"OK":["ตà¸à¸¥à¸‡"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["รุ่นขà¸à¸‡à¸‚้à¸à¸„วาม"],"Retry":[""],"Uploading file:":["à¸à¸³à¸¥à¸±à¸‡à¸à¸±à¸žà¹‚หลดไฟล์ :"],"%1$s has removed this message":[""],"This message has been edited":["ข้à¸à¸„วามนี้ได้รับà¸à¸²à¸£à¹à¸à¹‰à¹„ข"],"Show more":[""],"No message history available.":["ไม่มีประวัติข้à¸à¸„วาม"],"Search results":["ผลà¸à¸²à¸£à¸„้นหา"],"Search":["ค้นหา"],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["รูปภาพโปรไฟล์ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"],"Trusted":["เชื่à¸à¸–ืà¸à¹„ด้"],"Untrusted":["ไม่น่าเชื่à¸à¸–ืà¸"],"OMEMO Fingerprints":["ลายนิ้วมืภOMEMO"],"Remove as contact":["ลบจาà¸à¸œà¸¹à¹‰à¸•à¸´à¸”ต่à¸"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["ชื่à¸à¹€à¸¥à¹ˆà¸™"],"Refresh":["รีเฟรช"],"Role":["หน้าที่"],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["เพื่à¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¸›à¸£à¸°à¸ªà¸´à¸—ธิภาพ à¹à¸„ชข้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸„ุณในเบราว์เซà¸à¸£à¹Œà¸™à¸µà¹‰\\nยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹€à¸¥à¸·à¸à¸à¸Šà¹ˆà¸à¸‡à¸™à¸µà¹‰à¸«à¸²à¸à¹€à¸›à¹‡à¸™à¸„à¸à¸¡à¸žà¸´à¸§à¹€à¸•à¸à¸£à¹Œà¸ªà¸²à¸˜à¸²à¸£à¸“ะหรืà¸à¸«à¸²à¸à¸„ุณต้à¸à¸‡à¸à¸²à¸£à¸¥à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¹€à¸¡à¸·à¹ˆà¸à¸„ุณà¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š\\nสิ่งสำคัà¸à¸„ืà¸à¸„ุณต้à¸à¸‡à¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¸à¸¢à¹ˆà¸²à¸‡à¸Šà¸±à¸”เจน ไม่เช่นนั้นข้à¸à¸¡à¸¹à¸¥à¹à¸„ชทั้งหมดà¸à¸²à¸ˆà¸–ูà¸à¸¥à¸š โปรดทราบว่าเมื่à¸à¹ƒà¸Šà¹‰à¸à¸¸à¸›à¸à¸£à¸“์ที่ไม่น่าเชื่à¸à¸–ืà¸à¸à¸²à¸£à¹€à¸‚้ารหัส OMEMO จะไม่สามารถใช้ได้"],"This is a trusted device":["นี่คืà¸à¸à¸¸à¸›à¸à¸£à¸“์ที่เชื่à¸à¸–ืà¸à¹„ด้"],"Create an account":["สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"],"Don\'t have a chat account?":["ยังไม่มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸Šà¸— ?"],"Log in":["เข้าสู่ระบบ"],"Disconnected":[""],"Click here to log in anonymously":["คลิà¸à¸—ี่นี่เพื่à¸à¹€à¸‚้าสู่ระบบโดยไม่ระบุตัวตน"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This field is required":["ต้à¸à¸‡à¸£à¸°à¸šà¸¸à¸‚้à¸à¸¡à¸¹à¸¥à¹ƒà¸™à¸Ÿà¸´à¸¥à¸”์นี้"],"Join":["เข้าร่วม"],"Enter a new Groupchat":["ป้à¸à¸™à¸à¸¥à¸¸à¹ˆà¸¡ Groupchat ใหม่"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":["Groupchat ID ไม่ถูà¸à¸•à¹‰à¸à¸‡"],"Invite":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["ซ่à¸à¸™"],"Requires an invitation":[""],"Moderated":["ดูà¹à¸¥"],"Non-anonymous":[""],"Open":["เปิด"],"Permanent":[""],"Public":["สาธารณะ"],"Semi-anonymous":[""],"Temporary":["ชั่วคราว"],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["ผู้ดูà¹à¸¥à¹€à¸›à¹‡à¸™à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่ได้รับสิทธิพิเศษที่สามารถเปลี่ยนสถานะขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸£à¸²à¸¢à¸à¸·à¹ˆà¸™ (ยà¸à¹€à¸§à¹‰à¸™à¸œà¸¹à¹‰à¸”ูà¹à¸¥à¸£à¸°à¸šà¸šà¸«à¸£à¸·à¸à¸œà¸¹à¹‰à¸—ี่มีหน้าที่เช่นเดียวà¸à¸±à¸™)"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["เปลี่ยนหน้าที่"],"New Role":["หน้าที่ใหม่"],"Reason":["เหตุผล"],"Change affiliation":[""],"New affiliation":["เข้าร่วมใหม่"],"Affiliation":["à¸à¸²à¸£à¹€à¸‚้าร่วม"],"Moderator Tools":["เครื่à¸à¸‡à¸¡à¸·à¸à¸œà¸¹à¹‰à¸”ูà¹à¸¥"],"No users with that affiliation found.":[""],"No users with that role found.":["ไม่พบผู้ใช้ที่มีหน้าที่นั้น"],"Type here to filter the search results":[""],"Show users":["à¹à¸ªà¸”งผู้ใช้งาน"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["หัวข้à¸à¹€à¸£à¸·à¹ˆà¸à¸‡"],"Topic author":["ผู้เขียนหัวข้à¸"],"Groupchat address (JID)":["ที่à¸à¸¢à¸¹à¹ˆ Groupchat (JID)"],"Message archiving":["เà¸à¹‡à¸šà¸‚้à¸à¸„วามถาวร"],"Messages are archived on the server":["ข้à¸à¸„วามถูà¸à¹€à¸à¹‡à¸šà¸–าวรบนเซิร์ฟเวà¸à¸£à¹Œ"],"Description":["คำà¸à¸˜à¸´à¸šà¸²à¸¢"],"Features":["คุณสมบัติ"],"This groupchat is not publicly searchable":["Groupchat นี้ไม่สามารถค้นหาได้à¹à¸šà¸šà¸ªà¸²à¸˜à¸²à¸£à¸“ะ"],"This groupchat is restricted to members only":["Groupchat นี้จำà¸à¸±à¸”เฉพาะสมาชิà¸à¹€à¸—่านั้น"],"Members only":["เฉพาะสมาชิà¸à¹€à¸—่านั้น"],"Participants entering this groupchat need to request permission to write":["ผู้เข้าร่วม Groupchat นี้จำเป็นต้à¸à¸‡à¸‚à¸à¸à¸™à¸¸à¸à¸²à¸•à¸à¹ˆà¸à¸™à¸ªà¸™à¸—นา"],"Name":["ชื่à¸"],"This groupchat does not require a password upon entry":["Groupchat นี้ไม่ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹€à¸¡à¸·à¹ˆà¸à¹€à¸‚้า"],"No password required":["ไม่ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™"],"Not anonymous":["ไม่ระบุตัวตน"],"All other groupchat participants can see your XMPP address":["ผู้เข้าร่วม Groupchat คนà¸à¸·à¹ˆà¸™ ๆ สามารถดูที่à¸à¸¢à¸¹à¹ˆ XMPP ขà¸à¸‡à¸„ุณ"],"Not moderated":["ไม่ได้รับà¸à¸²à¸£à¸”ูà¹à¸¥"],"Participants entering this groupchat can write right away":["ผู้เข้าร่วมที่เข้าสู่ Groupchat นี้สามารถสนทนาได้ทันที"],"Online users":["ผู้ใช้งานที่à¸à¸à¸™à¹„ลน์"],"Anyone can join this groupchat":["ทุà¸à¸„นสามารถเข้าร่วม Groupchat นี้"],"This groupchat requires a password before entry":["Groupchat นี้ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸à¹ˆà¸à¸™à¹€à¸‚้า"],"Password protected":["à¸à¸²à¸£à¸›à¹‰à¸à¸‡à¸à¸±à¸™à¸”้วยพาสเวิร์ด"],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":["Groupchat นี้ยังคงà¸à¸¢à¸¹à¹ˆà¹à¸¡à¹‰à¸§à¹ˆà¸²à¸ˆà¸°à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²"],"Only moderators can see your XMPP address":["ผู้ดูà¹à¸¥à¹€à¸—่านั้นที่สามารถดูที่à¸à¸¢à¸¹à¹ˆ XMPP ขà¸à¸‡à¸„ุณ"],"This groupchat will disappear once the last person leaves":["Groupchat นี้จะหายไปเมื่à¸à¸œà¸¹à¹‰à¸ªà¸™à¸—นาคนสุดท้ายà¸à¸à¸"],"This groupchat is publicly searchable":["Groupchat นี้สามารถค้นหาได้à¹à¸šà¸šà¸ªà¸²à¸˜à¸²à¸£à¸“ะ"],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["คุณไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸ªà¹ˆà¸‡à¸‚้à¸à¸„วามในห้à¸à¸‡à¸™à¸µà¹‰"],"The conversation has moved. Click below to enter.":["บทสนทนาถูà¸à¸¢à¹‰à¸²à¸¢ คลิà¸à¸”้านล่างเพื่à¸à¹€à¸‚้าสู่à¸à¸²à¸£à¸ªà¸™à¸—นา"],"This groupchat no longer exists":["ไม่มี Groupchat นี้à¸à¸µà¸à¸•à¹ˆà¸à¹„ป"],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Configure":[""],"Configure this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":["ช่à¸à¸‡à¸—ำเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¹€à¸¥à¸·à¸à¸à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¸•à¹ˆà¸à¹„ปนี้"],"Device without a fingerprint":["à¸à¸¸à¸›à¸à¸£à¸“์ที่ไม่มีลายนิ้วมืà¸"],"Other OMEMO-enabled devices":["à¸à¸¸à¸›à¸à¸£à¸“์ที่เปิดใช้งาน OMEMO à¸à¸·à¹ˆà¸™ ๆ"],"Checkbox to select fingerprints of all other OMEMO devices":["ช่à¸à¸‡à¸—ำเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¹€à¸žà¸·à¹ˆà¸à¹€à¸¥à¸·à¸à¸à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¸‚à¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์ OMEMO à¸à¸·à¹ˆà¸™ ๆ ทั้งหมด"],"Remove checked devices and close":["ลบà¸à¸¸à¸›à¸à¸£à¸“์ที่เลืà¸à¸à¹à¸¥à¸°à¸›à¸´à¸”"],"Select all":["เลืà¸à¸à¸—ั้งหมด"],"This device\'s OMEMO fingerprint":["ลายนิ้วมืภOMEMO ขà¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์นี้"],"Generate new keys and fingerprint":["สร้างคีย์à¹à¸¥à¸°à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¹ƒà¸«à¸¡à¹ˆ"],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":["บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["ข้à¸à¸„วามถูà¸à¸ªà¹ˆà¸‡à¹à¸šà¸šà¸˜à¸£à¸£à¸¡à¸”า"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{538:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"th"},"Create your account":["สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚à¸à¸‡à¸„ุณ"],"Please enter the XMPP provider to register with:":["โปรดระบุเซิร์ฟเวà¸à¸£à¹Œ XMPP เพื่à¸à¸¥à¸‡à¸—ะเบียน :"],"Already have a chat account?":["มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸Šà¸—à¹à¸¥à¹‰à¸§ ?"],"Log in here":["เข้าสู่ระบบที่นี่"],"Account Registration:":["ลงทะเบียนบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ :"],"Register":["สมัครสมาชิà¸"],"Choose a different provider":["เลืà¸à¸à¸œà¸¹à¹‰à¹ƒà¸«à¹‰à¸šà¸£à¸´à¸à¸²à¸£à¸£à¸²à¸¢à¸à¸·à¹ˆà¸™"],"Hold tight, we\'re fetching the registration form…":[""],"Cancel":["ยà¸à¹€à¸¥à¸´à¸"],"The connection has dropped, attempting to reconnect.":[""],"An error occurred while connecting to the chat server.":[""],"Your XMPP address and/or password is incorrect. Please try again.":[""],"Sorry, we could not connect to the XMPP host with domain: %1$s":[""],"The XMPP server did not offer a supported authentication mechanism":[""],"Sorry, could not determine upload URL.":["ขà¸à¸à¸ ัยไม่สามารถระบุ URL à¸à¸²à¸£à¸à¸±à¸›à¹‚หลด"],"Sorry, could not determine file upload URL.":["ขà¸à¸à¸ ัยไม่สามารถระบุ URL à¸à¸²à¸£à¸à¸±à¸›à¹‚หลดไฟล์"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["ขà¸à¸à¸ ัยà¸à¸±à¸›à¹‚หลดไฟล์ไม่สำเร็จ เซิร์ฟเวà¸à¸£à¹Œà¸•à¸à¸šà¸à¸¥à¸±à¸š: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["ขà¸à¸à¸ ัยไม่สามารถà¸à¸±à¸›à¹‚หลดไฟล์ได้"],"Sorry, an error occurred while trying to send your message.":[""],"Sorry, looks like file upload is not supported by your server.":["ขà¸à¸à¸ ัยดูเหมืà¸à¸™à¸§à¹ˆà¸²à¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸à¸£à¹Œà¹„ม่รà¸à¸‡à¸£à¸±à¸šà¸à¸²à¸£à¸à¸±à¸žà¹‚หลดไฟล์"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["ขนาดไฟล์ขà¸à¸‡à¸„ุณ %1$s เà¸à¸´à¸™à¸‚นาดสูงสุด %2$s ที่เซิร์ฟเวà¸à¸£à¹Œà¸à¸™à¸¸à¸à¸²à¸•"],"Smileys and emotions":["รà¸à¸¢à¸¢à¸´à¹‰à¸¡à¹à¸¥à¸°à¸à¸²à¸£à¸¡à¸“์"],"People":["ผู้คน"],"Activities":["à¸à¸´à¸ˆà¸à¸£à¸£à¸¡"],"Travel":["ท่à¸à¸‡à¹€à¸—ี่ยว"],"Objects":["วัตถุ"],"Animals and nature":["สัตว์à¹à¸¥à¸°à¸˜à¸£à¸£à¸¡à¸Šà¸²à¸•à¸´"],"Food and drink":["à¸à¸²à¸«à¸²à¸£à¹à¸¥à¸°à¹€à¸„รื่à¸à¸‡à¸”ื่ม"],"Symbols":["สัà¸à¸¥à¸±à¸à¸©à¸“์"],"Flags":["ธง"],"Stickers":["สติà¸à¹€à¸à¸à¸£à¹Œ"],"This groupchat is not anonymous":["Groupchat นี้ไม่ระบุตัวตน"],"This groupchat now shows unavailable members":["Groupchat นี้à¹à¸ªà¸”งสมาชิà¸à¸—ี่ไม่พร้à¸à¸¡à¹ƒà¸Šà¹‰à¸‡à¸²à¸™"],"This groupchat does not show unavailable members":["Groupchat นี้ไม่à¹à¸ªà¸”งสมาชิà¸à¸—ี่ไม่สามารถใช้งานได้"],"The groupchat configuration has changed":["Groupchat มีà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ค่า"],"Groupchat logging is now enabled":["เปิดใช้งานà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภGroupchat à¹à¸¥à¹‰à¸§"],"Groupchat logging is now disabled":["ปิดใช้งานà¸à¸²à¸£à¸šà¸±à¸™à¸—ึภGroupchat à¹à¸¥à¹‰à¸§"],"This groupchat is now no longer anonymous":["Groupchat นี้ไม่ระบุตัวตนà¸à¸µà¸à¸•à¹ˆà¸à¹„ป"],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":["Groupchat นี้ไม่ระบุชื่à¸à¹€à¸•à¹‡à¸¡"],"A new groupchat has been created":["มีà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡ Groupchat ใหม่"],"Your nickname has been automatically set to %1$s":["ชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡à¸„ุณถูà¸à¸•à¸±à¹‰à¸‡à¸„่าเป็น %1$s โดยà¸à¸±à¸•à¹‚นมัติ"],"Your nickname has been changed to %1$s":["ชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡à¸„ุณถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸›à¹‡à¸™ %1$s"],"You have been banned from this groupchat":["คุณถูà¸à¹à¸šà¸™à¸ˆà¸²à¸ Groupchat นี้"],"You have been kicked from this groupchat":["คุณถูà¸à¹€à¸•à¸°à¸ˆà¸²à¸ Groupchat นี้"],"You have been removed from this groupchat because of an affiliation change":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เนื่à¸à¸‡à¸ˆà¸²à¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸„วามร่วมมืà¸"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เนื่à¸à¸‡à¸ˆà¸²à¸ Groupchat เปลี่ยนเป็นà¹à¸šà¸šà¸ªà¸¡à¸²à¸Šà¸´à¸à¹€à¸—่านั้นà¹à¸¥à¸°à¸„ุณไม่ได้เป็นสมาชิà¸"],"You have been removed from this groupchat because the service hosting it is being shut down":["คุณถูà¸à¸¥à¸šà¸à¸à¸à¸ˆà¸²à¸ Groupchat นี้เพราะบริà¸à¸²à¸£à¹‚ฮสติ้งà¸à¸³à¸¥à¸±à¸‡à¸›à¸´à¸”ตัวลง"],"Your message was not delivered because you\'re not present in the groupchat.":["ข้à¸à¸„วามขà¸à¸‡à¸„ุณไม่ถูà¸à¸ªà¹ˆà¸‡à¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¸„ุณไม่ได้à¸à¸¢à¸¹à¹ˆà¹ƒà¸™à¸à¸¥à¸¸à¹ˆà¸¡à¹à¸Šà¸—"],"A timeout happened while while trying to retract your message.":[""],"You\'re not allowed to register yourself in this groupchat.":["คุณไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸¥à¸‡à¸—ะเบียนตัวเà¸à¸‡à¹ƒà¸™ Ggroupchat นี้"],"You\'re not allowed to register in this groupchat because it\'s members-only.":[""],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"Topic set by %1$s":[""],"Topic cleared by %1$s":[""],"%1$s has been banned":["%1$s ถูà¸à¹à¸šà¸™"],"%1$s\'s nickname has changed":["เปลี่ยนชื่à¸à¹€à¸¥à¹ˆà¸™à¸‚à¸à¸‡ %1$s à¹à¸¥à¹‰à¸§"],"%1$s has been kicked out":["%1$s ถูà¸à¹€à¸•à¸°à¸à¸à¸à¹„ปà¹à¸¥à¹‰à¸§"],"%1$s has been removed because of an affiliation change":["%1$s ถูà¸à¸™à¸³à¸à¸à¸à¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¸¡à¸µà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸à¸²à¸£à¹€à¸‚้าร่วม"],"%1$s has been removed for not being a member":["%1$s ถูà¸à¸¥à¸šà¹€à¸™à¸·à¹ˆà¸à¸‡à¸ˆà¸²à¸à¹„ม่ได้เป็นสมาชิà¸"],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":[""],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":[""],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":[""],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":[""],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":[""],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":[""],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":[""],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":[""],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":[""],"Pending contacts":[""],"Contact requests":[""],"Ungrouped":[""],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":[""],"Unbookmark this groupchat":[""],"Click to open this groupchat":[""],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":[""],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["บันทึà¸"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":[""],"Unbookmark":[""],"Bookmark":[""],"Close":["ปิด"],"OK":["ตà¸à¸¥à¸‡"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["รุ่นขà¸à¸‡à¸‚้à¸à¸„วาม"],"Retry":[""],"Uploading file:":["à¸à¸³à¸¥à¸±à¸‡à¸à¸±à¸žà¹‚หลดไฟล์ :"],"%1$s has removed this message":[""],"This message has been edited":["ข้à¸à¸„วามนี้ได้รับà¸à¸²à¸£à¹à¸à¹‰à¹„ข"],"Show more":[""],"No message history available.":["ไม่มีประวัติข้à¸à¸„วาม"],"Search results":["ผลà¸à¸²à¸£à¸„้นหา"],"Search":["ค้นหา"],"Insert emojis":[""],"Start a call":[""],"Message characters remaining":[""],"Hide participants":[""],"Show participants":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["รูปภาพโปรไฟล์ขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"],"Trusted":["เชื่à¸à¸–ืà¸à¹„ด้"],"Untrusted":["ไม่น่าเชื่à¸à¸–ืà¸"],"OMEMO Fingerprints":["ลายนิ้วมืภOMEMO"],"Remove as contact":["ลบจาà¸à¸œà¸¹à¹‰à¸•à¸´à¸”ต่à¸"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["ชื่à¸à¹€à¸¥à¹ˆà¸™"],"Refresh":["รีเฟรช"],"Role":["หน้าที่"],"URL":[""],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["เพื่à¸à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¸›à¸£à¸°à¸ªà¸´à¸—ธิภาพ à¹à¸„ชข้à¸à¸¡à¸¹à¸¥à¸‚à¸à¸‡à¸„ุณในเบราว์เซà¸à¸£à¹Œà¸™à¸µà¹‰\\nยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¹€à¸¥à¸·à¸à¸à¸Šà¹ˆà¸à¸‡à¸™à¸µà¹‰à¸«à¸²à¸à¹€à¸›à¹‡à¸™à¸„à¸à¸¡à¸žà¸´à¸§à¹€à¸•à¸à¸£à¹Œà¸ªà¸²à¸˜à¸²à¸£à¸“ะหรืà¸à¸«à¸²à¸à¸„ุณต้à¸à¸‡à¸à¸²à¸£à¸¥à¸šà¸‚้à¸à¸¡à¸¹à¸¥à¹€à¸¡à¸·à¹ˆà¸à¸„ุณà¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š\\nสิ่งสำคัà¸à¸„ืà¸à¸„ุณต้à¸à¸‡à¸à¸à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¸à¸¢à¹ˆà¸²à¸‡à¸Šà¸±à¸”เจน ไม่เช่นนั้นข้à¸à¸¡à¸¹à¸¥à¹à¸„ชทั้งหมดà¸à¸²à¸ˆà¸–ูà¸à¸¥à¸š โปรดทราบว่าเมื่à¸à¹ƒà¸Šà¹‰à¸à¸¸à¸›à¸à¸£à¸“์ที่ไม่น่าเชื่à¸à¸–ืà¸à¸à¸²à¸£à¹€à¸‚้ารหัส OMEMO จะไม่สามารถใช้ได้"],"This is a trusted device":["นี่คืà¸à¸à¸¸à¸›à¸à¸£à¸“์ที่เชื่à¸à¸–ืà¸à¹„ด้"],"Create an account":["สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰"],"Don\'t have a chat account?":["ยังไม่มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸Šà¸— ?"],"Log in":["เข้าสู่ระบบ"],"Disconnected":[""],"Click here to log in anonymously":["คลิà¸à¸—ี่นี่เพื่à¸à¹€à¸‚้าสู่ระบบโดยไม่ระบุตัวตน"],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":["ต้à¸à¸‡à¸£à¸°à¸šà¸¸à¸‚้à¸à¸¡à¸¹à¸¥à¹ƒà¸™à¸Ÿà¸´à¸¥à¸”์นี้"],"Join":["เข้าร่วม"],"Enter a new Groupchat":["ป้à¸à¸™à¸à¸¥à¸¸à¹ˆà¸¡ Groupchat ใหม่"],"name@conference.example.org":[""],"Groupchat name":[""],"Groupchat address":[""],"Groupchat id is invalid.":["Groupchat ID ไม่ถูà¸à¸•à¹‰à¸à¸‡"],"Invite":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":[""],"Query for Groupchats":[""],"Description:":[""],"Groupchat Address (JID):":[""],"Participants:":[""],"Features:":[""],"Requires authentication":[""],"Hidden":["ซ่à¸à¸™"],"Requires an invitation":[""],"Moderated":["ดูà¹à¸¥"],"Non-anonymous":[""],"Open":["เปิด"],"Permanent":[""],"Public":["สาธารณะ"],"Semi-anonymous":[""],"Temporary":["ชั่วคราว"],"Unmoderated":[""],"conference.example.org":[""],"No groupchats found":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["ผู้ดูà¹à¸¥à¹€à¸›à¹‡à¸™à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่ได้รับสิทธิพิเศษที่สามารถเปลี่ยนสถานะขà¸à¸‡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸£à¸²à¸¢à¸à¸·à¹ˆà¸™ (ยà¸à¹€à¸§à¹‰à¸™à¸œà¸¹à¹‰à¸”ูà¹à¸¥à¸£à¸°à¸šà¸šà¸«à¸£à¸·à¸à¸œà¸¹à¹‰à¸—ี่มีหน้าที่เช่นเดียวà¸à¸±à¸™)"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":["เปลี่ยนหน้าที่"],"New Role":["หน้าที่ใหม่"],"Reason":["เหตุผล"],"Change affiliation":[""],"New affiliation":["เข้าร่วมใหม่"],"Affiliation":["à¸à¸²à¸£à¹€à¸‚้าร่วม"],"Moderator Tools":["เครื่à¸à¸‡à¸¡à¸·à¸à¸œà¸¹à¹‰à¸”ูà¹à¸¥"],"No users with that affiliation found.":[""],"No users with that role found.":["ไม่พบผู้ใช้ที่มีหน้าที่นั้น"],"Type here to filter the search results":[""],"Show users":["à¹à¸ªà¸”งผู้ใช้งาน"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"Timeout error while trying to set the affiliation":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":[""],"You\'re not allowed to make that change":[""],"Sorry, something went wrong while trying to set the role":[""],"Topic":["หัวข้à¸à¹€à¸£à¸·à¹ˆà¸à¸‡"],"Topic author":["ผู้เขียนหัวข้à¸"],"Groupchat address (JID)":["ที่à¸à¸¢à¸¹à¹ˆ Groupchat (JID)"],"Message archiving":["เà¸à¹‡à¸šà¸‚้à¸à¸„วามถาวร"],"Messages are archived on the server":["ข้à¸à¸„วามถูà¸à¹€à¸à¹‡à¸šà¸–าวรบนเซิร์ฟเวà¸à¸£à¹Œ"],"Description":["คำà¸à¸˜à¸´à¸šà¸²à¸¢"],"Features":["คุณสมบัติ"],"This groupchat is not publicly searchable":["Groupchat นี้ไม่สามารถค้นหาได้à¹à¸šà¸šà¸ªà¸²à¸˜à¸²à¸£à¸“ะ"],"This groupchat is restricted to members only":["Groupchat นี้จำà¸à¸±à¸”เฉพาะสมาชิà¸à¹€à¸—่านั้น"],"Members only":["เฉพาะสมาชิà¸à¹€à¸—่านั้น"],"Participants entering this groupchat need to request permission to write":["ผู้เข้าร่วม Groupchat นี้จำเป็นต้à¸à¸‡à¸‚à¸à¸à¸™à¸¸à¸à¸²à¸•à¸à¹ˆà¸à¸™à¸ªà¸™à¸—นา"],"Name":["ชื่à¸"],"This groupchat does not require a password upon entry":["Groupchat นี้ไม่ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹€à¸¡à¸·à¹ˆà¸à¹€à¸‚้า"],"No password required":["ไม่ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™"],"Not anonymous":["ไม่ระบุตัวตน"],"All other groupchat participants can see your XMPP address":["ผู้เข้าร่วม Groupchat คนà¸à¸·à¹ˆà¸™ ๆ สามารถดูที่à¸à¸¢à¸¹à¹ˆ XMPP ขà¸à¸‡à¸„ุณ"],"Not moderated":["ไม่ได้รับà¸à¸²à¸£à¸”ูà¹à¸¥"],"Participants entering this groupchat can write right away":["ผู้เข้าร่วมที่เข้าสู่ Groupchat นี้สามารถสนทนาได้ทันที"],"Online users":["ผู้ใช้งานที่à¸à¸à¸™à¹„ลน์"],"Anyone can join this groupchat":["ทุà¸à¸„นสามารถเข้าร่วม Groupchat นี้"],"This groupchat requires a password before entry":["Groupchat นี้ต้à¸à¸‡à¹ƒà¸Šà¹‰à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸à¹ˆà¸à¸™à¹€à¸‚้า"],"Password protected":["à¸à¸²à¸£à¸›à¹‰à¸à¸‡à¸à¸±à¸™à¸”้วยพาสเวิร์ด"],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":["Groupchat นี้ยังคงà¸à¸¢à¸¹à¹ˆà¹à¸¡à¹‰à¸§à¹ˆà¸²à¸ˆà¸°à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²"],"Only moderators can see your XMPP address":["ผู้ดูà¹à¸¥à¹€à¸—่านั้นที่สามารถดูที่à¸à¸¢à¸¹à¹ˆ XMPP ขà¸à¸‡à¸„ุณ"],"This groupchat will disappear once the last person leaves":["Groupchat นี้จะหายไปเมื่à¸à¸œà¸¹à¹‰à¸ªà¸™à¸—นาคนสุดท้ายà¸à¸à¸"],"This groupchat is publicly searchable":["Groupchat นี้สามารถค้นหาได้à¹à¸šà¸šà¸ªà¸²à¸˜à¸²à¸£à¸“ะ"],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["คุณไม่ได้รับà¸à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸ªà¹ˆà¸‡à¸‚้à¸à¸„วามในห้à¸à¸‡à¸™à¸µà¹‰"],"The conversation has moved. Click below to enter.":["บทสนทนาถูà¸à¸¢à¹‰à¸²à¸¢ คลิà¸à¸”้านล่างเพื่à¸à¹€à¸‚้าสู่à¸à¸²à¸£à¸ªà¸™à¸—นา"],"This groupchat no longer exists":["ไม่มี Groupchat นี้à¸à¸µà¸à¸•à¹ˆà¸à¹„ป"],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":[""],"%1$s has left the groupchat":[""],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":[""],"%1$s and %2$s":[""],"%1$s are typing":[""],"%1$s have stopped typing":[""],"%1$s have gone away":[""],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":[""],"You may optionally include a message, explaining the reason for the retraction.":[""],"Message Retraction":[""],"Optional reason":[""],"A timeout occurred while trying to retract the message":[""],"Sorry, you\'re not allowed to retract this message.":[""],"Configure":[""],"Configure this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"No commands found":[""],"Sorry, an error occurred while looking for commands on that entity.":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":["ช่à¸à¸‡à¸—ำเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¹€à¸¥à¸·à¸à¸à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¸•à¹ˆà¸à¹„ปนี้"],"Device without a fingerprint":["à¸à¸¸à¸›à¸à¸£à¸“์ที่ไม่มีลายนิ้วมืà¸"],"Other OMEMO-enabled devices":["à¸à¸¸à¸›à¸à¸£à¸“์ที่เปิดใช้งาน OMEMO à¸à¸·à¹ˆà¸™ ๆ"],"Checkbox to select fingerprints of all other OMEMO devices":["ช่à¸à¸‡à¸—ำเครื่à¸à¸‡à¸«à¸¡à¸²à¸¢à¹€à¸žà¸·à¹ˆà¸à¹€à¸¥à¸·à¸à¸à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¸‚à¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์ OMEMO à¸à¸·à¹ˆà¸™ ๆ ทั้งหมด"],"Remove checked devices and close":["ลบà¸à¸¸à¸›à¸à¸£à¸“์ที่เลืà¸à¸à¹à¸¥à¸°à¸›à¸´à¸”"],"Select all":["เลืà¸à¸à¸—ั้งหมด"],"This device\'s OMEMO fingerprint":["ลายนิ้วมืภOMEMO ขà¸à¸‡à¸à¸¸à¸›à¸à¸£à¸“์นี้"],"Generate new keys and fingerprint":["สร้างคีย์à¹à¸¥à¸°à¸¥à¸²à¸¢à¸™à¸´à¹‰à¸§à¸¡à¸·à¸à¹ƒà¸«à¸¡à¹ˆ"],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":["บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["ข้à¸à¸„วามถูà¸à¸ªà¹ˆà¸‡à¹à¸šà¸šà¸˜à¸£à¸£à¸¡à¸”า"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":[""],"here":[""],"Sorry, we\'re unable to connect to your chosen provider.":[""],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":[""],"Registered successfully":[""],"The provider rejected your registration attempt. Please check the values you entered for correctness.":[""],"Leave this groupchat":[""],"Click to toggle the list of open groupchats":[""],"Open Groupchats":[""],"Are you sure you want to leave the groupchat %1$s?":[""],"Add":[""],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":[""],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=th-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/tr-LC_MESSAGES-converse-po.js b/src/conversejs/locales/tr-LC_MESSAGES-converse-po.js index a5cd8d19611ac595a24707321564f7387b0765e5..e299df555c8e4ba50ba5f61d9e799ca4b17e8294 100644 --- a/src/conversejs/locales/tr-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/tr-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{450:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"tr"},"Create your account":["Hesabını oluÅŸtur"],"Please enter the XMPP provider to register with:":["Lütfen kayıt yaptırmak için XMPP saÄŸlayıcısını girin:"],"Already have a chat account?":["Zaten bir sohbet hesabınız var mı?"],"Log in here":["GiriÅŸ yapın"],"Account Registration:":["Hesap kaydı:"],"Register":["Kayıt ol"],"Choose a different provider":["Farklı bir saÄŸlayıcı seçin"],"Hold tight, we\'re fetching the registration form…":["Sıkı tutun, kayıt formunu alıyoruz…"],"Cancel":["Ä°ptal"],"The connection has dropped, attempting to reconnect.":["BaÄŸlantı koptu, yeniden baÄŸlanılmaya çalışılıyor."],"An error occurred while connecting to the chat server.":["Sohbet sunucusuna baÄŸlanılırken bir hata oluÅŸtu."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["ÃœZgünüz, bu XMPP hostuna bu domainle baÄŸlanamadık :%1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP sunucusu desteklenen bir kimlik doÄŸrulama mekanizması sunmadı"],"Sorry, could not determine upload URL.":["Maalesef, yükleme URL’si belirlenemedi."],"Sorry, could not determine file upload URL.":["Maalesef, dosya yükleme URL’si belirlenemedi."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Maalesef, dosyanızı baÅŸarıyla yükleyemedi. Sunucunuzun yanıtı: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Maalesef, dosyanızı baÅŸarıyla yükleyemedi."],"Sorry, looks like file upload is not supported by your server.":["Maalesef, dosya yükleme sunucunuz tarafından desteklenmiyor gibi görünüyor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Dosyanızın boyutu, %1$s, sunucunuz tarafından izin verilen ve %2$s olan maksimum deÄŸeri aşıyor."],"Smileys and emotions":["Suratlar ve duygular"],"People":["Ä°nsanlar"],"Activities":["Faaliyetler"],"Travel":["Seyahat"],"Objects":["Nesneler"],"Animals and nature":["Hayvanlar ve doÄŸa"],"Food and drink":["Yiyecek ve içecek"],"Symbols":["Semboller"],"Flags":["Bayraklar"],"Stickers":["Çıkartma"],"This groupchat is not anonymous":["Bu grup konuÅŸması anonim deÄŸil"],"This groupchat now shows unavailable members":["Bu grup konuÅŸması uygun olmayan üyeleri gösteriyor"],"This groupchat does not show unavailable members":["Bu grup konuÅŸması uygun olmayan üyeleri gösteriyor"],"The groupchat configuration has changed":["Grup sohbeti yapılandırması deÄŸiÅŸtirildi"],"Groupchat logging is now enabled":["Grup sohbeti günlüğü artık etkin"],"Groupchat logging is now disabled":["Grup Sohbeti günlüğü artık devre dışı"],"This groupchat is now no longer anonymous":["Bu grup sohbeti artık anonim deÄŸil"],"This groupchat is now semi-anonymous":["Bu grup sohbeti ÅŸimdi yarı anonim"],"This groupchat is now fully-anonymous":["Bu grup sohbeti artık tamamen anonim"],"A new groupchat has been created":["Yeni bir grup sohbeti oluÅŸturuldu"],"Your nickname has been automatically set to %1$s":["Takma adınız otomatik %1$s olarak ayarlandı."],"Your nickname has been changed to %1$s":["Takma adınız %1$s olarak deÄŸiÅŸtirildi"],"You have been banned from this groupchat":["Bu grup sohbetinden banlandınız"],"You have been kicked from this groupchat":["Bu grup sohbetinden atıldınız"],"You have been removed from this groupchat because of an affiliation change":["Ãœyelik deÄŸiÅŸikliÄŸi nedeniyle bu grup sohbetinden kaldırıldınız"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Grup sohbeti yalnızca üyelere deÄŸiÅŸtirildiÄŸinden ve üye olmadığınız için bu grup sohbetinden çıkardınız"],"You have been removed from this groupchat because the service hosting it is being shut down":["Bu grup sohbeti kaldırıldı, çünkü barındırma hizmeti kapatıldı"],"Your message was not delivered because you\'re not present in the groupchat.":["Mesajınız iletilmedi çünkü grup sohbetinde bulunmadınız."],"You\'re not allowed to register yourself in this groupchat.":["Kendinizi bu grup sohbetine kaydettiremezsiniz."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Bu grup sohbetine kaydolmanıza izin verilmiyor çünkü sadece üyeler kayıt olabilirler."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Takma adınız bu grup sohbetine kaydedilemiyor, kaydı desteklemiyor."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Takma adınız bu grup sohbetine kaydedilemiyor, verilen geçersiz veri formu."],"Topic set by %1$s":["Konu %1$s tarafından ayarlandı"],"Topic cleared by %1$s":["Konu %1$s tarafından temizlendi"],"%1$s has been banned":["%1$s banlandı"],"%1$s\'s nickname has changed":["%1$s kullancı adını deÄŸiÅŸtirdi"],"%1$s has been kicked out":["%1$s atıldı"],"%1$s has been removed because of an affiliation change":["%1$s bir kuruluÅŸ deÄŸiÅŸikliÄŸi nedeniyle kaldırıldı"],"%1$s has been removed for not being a member":["%1$s üye olmadığı için kaldırıldı"],"%1$s is no longer an admin of this groupchat":["%1$s artık bu toplu konuÅŸmanın yöneticisi deÄŸil"],"%1$s is no longer an owner of this groupchat":["%1$s artık bu toplu konuÅŸmanın sahibi deÄŸil"],"%1$s is no longer banned from this groupchat":["%1$s artık bu toplu konuÅŸmada yasaklı deÄŸil"],"%1$s is no longer a member of this groupchat":["%1$s artık bu toplu konuÅŸmanın üyesi deÄŸil"],"%1$s is now a member of this groupchat":["%1$s ÅŸimdi bu grup sohbetine üye"],"%1$s is now an %2$s of this groupchat":["%1$s artık bu toplu konuÅŸmanın %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["SeçtiÄŸiniz takma isim saklıdır veya kullanımda. Lütfen farklı bir tane seçin."],"Password incorrect":["Yanlış parola"],"You are not on the member list of this groupchat.":["Bu grup sohbetinin üye listesinde deÄŸilsin."],"You have been banned from this groupchat.":["Bu grup sohbetinde yasaklandınız."],"You are not allowed to create new groupchats.":["Yeni grup sohbetleri oluÅŸturmanıza izin verilmiyor."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Takma adınız bu grup sohbetinin politikalarına uymuyor."],"This groupchat does not (yet) exist.":["Bu grup sohbeti (henüz) yok."],"This groupchat has reached its maximum number of participants.":["Bu grup sohbeti maksimum katılımcı sayısına ulaÅŸtı."],"Remote server not found":["Uzak sunucu bulunamadı"],"The explanation given is: \\"%1$s\\".":["Verilen açıklama: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s sizi bir grup sohbetine davet etti: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s sizi bir grup sohbetine davet etti: %2$s ve aÅŸağıdaki nedeni bıraktı: \\"%3$s\\""],"Error":["Hata"],"Sorry, something went wrong while trying to save your bookmark.":["Ãœzgünüm, kaydetmeye çalışırken bir problem çıktı."],"Timeout Error":["Zaman Aşımı Hatası"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Sunucu yer imlerinizi izin verilen süre içinde döndürmedi. Sayfayı tekrar istemek için yeniden yükleyebilirsiniz."],"My contacts":["KiÅŸilerim"],"Pending contacts":["Bekleyen kiÅŸiler"],"Contact requests":["Ä°letiÅŸim istekleri"],"Ungrouped":["Gruplanmamış"],"Sorry, there was an error while trying to add %1$s as a contact.":["Maalesef, %1$s kiÅŸiyi kiÅŸi olarak eklemeye çalışırken bir hata oluÅŸtu."],"This client does not allow presence subscriptions":["Bu müşteri varlık aboneliklerine izin vermiyor"],"Click to hide these contacts":["Bu kiÅŸileri gizlemek için tıklayın"],"Unbookmark this groupchat":["Bu grup sohbetini favorilerden çıkar"],"Click to open this groupchat":["Bu grup sohbetini açmak için tıkla"],"Click to toggle the bookmarks list":["Yer imlerini deÄŸiÅŸtirmek için tıkla"],"Bookmarks":["Yer imleri"],"Bookmark this groupchat":["Sık kullanılanlara ekle"],"Would you like this groupchat to be automatically joined upon startup?":["Bu grubun açılışta otomatik olarak açılmasını istiyor musun?"],"The name for this bookmark:":["Bir isim gir:"],"What should your nickname for this groupchat be?":["Bu grup için takma adın ne olmalı?"],"Save":["Kaydet"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["%1$s, bunu sık kullanılanlardan kaldırmak istediÄŸine emin misin?"],"Close":["Kapat"],"OK":[""],"Image: ":[""],"Download audio file \\"%1$s\\"":["\\"%1$s\\" ses dosyasını indirin"],"Download file \\"%1$s\\"":["\\"%1$s\\" dosyasını indir"],"Edit":[""],"Retract":[""],"Message versions":["Mesaj versiyonları"],"Retry":[""],"Uploading file:":["Dosya yükleniyor:"],"This message has been edited":["Bu mesaj düzenlendi"],"Show more":["Fazlasını göster"],"No message history available.":[""],"Search results":["Arama Sonuçları"],"Search":["Ara"],"Insert emojis":["Emoji ekle"],"Start a call":["Bir arama baÅŸlat"],"Message characters remaining":["Kullanılabilir mesaj karakterleri"],"Choose a file to send":["Gönderilecek dosyayı seç"],"Click to write as a normal (non-spoiler) message":["Normal (spoiler olmayan) mesaj olarak göndermek için tıkla"],"Click to write your message as a spoiler":["Mesajını spoiler olarak yazmak için tıkla"],"The User\'s Profile Image":["Bu Kullanıcının Profil Resmi"],"Trusted":["Güvenilir"],"Untrusted":["Güvenilmez"],"OMEMO Fingerprints":["OMEMO Parmak Ä°zleri"],"Remove as contact":["KiÅŸilerden kaldır"],"XMPP Address":["XMPP Adresi"],"Email":["E-Posta"],"Full Name":["Ad Soyad"],"Nickname":["Rumuz"],"Refresh":["Tazele"],"Role":["rol"],"URL":["BaÄŸlantı Adresi"],"%1$s is typing":["%1$s yazıyor"],"%1$s has stopped typing":["%1$s yazmayı durdurdu"],"%1$s has gone away":["%1$s uzakta"],"Remove messages":["Mesajları sil"],"Write in the third person":["Üçüncü kiÅŸi olarak yaz"],"Show this menu":["Menüyü göster"],"Hidden message":["Gizli mesaj"],"Message":["Mesaj"],"Optional hint":["Opsiyonel ipucu"],"You have unread messages":["Okunmamış mesajlarınız var"],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":["Henüz gönderilmemiÅŸ bir mesajınız var, devam ederseniz silinecek. Emin misiniz?"],"Are you sure you want to clear the messages from this conversation?":["Bu konuÅŸmadaki mesajları temizlemek istediÄŸinize emin misiniz?"],"%1$s has gone offline":["%1$s çevrimdışı oldu"],"%1$s is busy":["%1$s meÅŸgul"],"%1$s is online":["%1$s çevrimiçi"],"Sorry, something went wrong while trying to refresh":["Ãœzgünüm, yenilemeye çalışırken bir ÅŸeyler ters gitti"],"Are you sure you want to remove this contact?":["Bu kiÅŸiyi kaldırmak istediÄŸinize emin misiniz?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Ãœzgünüz, %1$s kiÅŸisini kaldırmaya çalışırken bir hata oluÅŸtu."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Performansı arttırmak amacı ile tarayıcınızda veri depoluyoruz. Ä°nternet kafe gibi bilgisayarın genel kullanıldiÄŸi bir ortamda iseniz ve çıkış yaptığınıza bilgilerinizin silinmesini istiyorsanız bu kutuyu iÅŸaretlemeyin. Düzgün bir ÅŸekilde çıkış yapmanız tüm verinin silinmesi için önemlidir. Unutmayın ki, güvenilmeyen bir cihaz kullanırken OMEMO ÅŸifrelemesi çalışmayacaktır."],"This is a trusted device":["Bu cihaz güvenilir"],"Create an account":["Hesap oluÅŸtur"],"Don\'t have a chat account?":["Sohbet hesabınız yok mu?"],"Log in":["Oturum Aç"],"Disconnected":[""],"Click here to log in anonymously":["Anonim olarak giriÅŸ yapmak için tıklayın"],"Username":["Kullancıadı"],"user@domain":["kullanıcı@alanadı"],"Please enter a valid XMPP address":["Lütfen geçerli bir XMPP adresi girin"],"Chat Contacts":["KiÅŸilerinle Sohbet Et"],"Toggle chat":["Sohbeti deÄŸiÅŸtir"],"Click to restore this chat":["Bu sohbeti geri yükle"],"Minimized":["Küçültüldü"],"This field is required":["Bu alan zorunludur"],"Join":["Katıl"],"Enter a new Groupchat":["Yeni bir gruba katıl"],"name@conference.example.org":["isim@konferans.ornek.org"],"Groupchat name":["Grup Sohbeti adı"],"Groupchat address":["Grup sohbeti adresi"],"Invite":["Davet et"],"Show groupchats":["Toplu konuÅŸmaları göster"],"Server address":["Sunucu adresi"],"Show more information on this groupchat":["Grup hakkında daha fazla bilgi göster"],"Query for Groupchats":["Toplu konuÅŸma sorgusu"],"Description:":["Açıklama:"],"Groupchat Address (JID):":["Toplu konuÅŸma Adresi (JID):"],"Participants:":["Katılımcılar:"],"Features:":["Özellikler:"],"Requires authentication":["Kimlik doÄŸrulama gerektirir"],"Hidden":["Gizli"],"Requires an invitation":["Davet gerekli"],"Moderated":["Modere ediliyor"],"Non-anonymous":["Anonim-olmayan"],"Open":["Açık"],"Permanent":["Kalıcı"],"Public":["Herkese açık"],"Semi-anonymous":["Yarı-anonim"],"Temporary":["Geçici"],"Unmoderated":["Modere edilmiyor"],"conference.example.org":["konferans.ornek.org"],"No groupchats found":["Toplu konuÅŸma bulunamadı"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatörler, diÄŸer kullanıcıların rollerini deÄŸiÅŸtirebilen ayrıcalıklı kullanıcılardır (yönetici veya sahiplik iliÅŸkileri olanlar hariç)."],"The default role, implies that you can read and write messages.":["Varsayılan rol, mesajları okuyabileceÄŸiniz ve yazabileceÄŸiniz anlamına gelir."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Ziyaretçilerin yönetilen çok kullanıcılı bir sohbette mesaj yazmasına izin verilmez."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Sahip en yüksek üyedir. Sahipler diÄŸer tüm kullanıcıların rollerini ve baÄŸlantılarını deÄŸiÅŸtirebilir."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Yönetici, en yüksek 2. üyedir. Yöneticiler, sahipler dışındaki diÄŸer tüm kullanıcıların rollerini ve baÄŸlantılarını deÄŸiÅŸtirebilir."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Bir kullanıcıyı yasaklamak için onlara \\"dışa vurma\\" üyeliÄŸi verirsiniz."],"Change role":["Role deÄŸiÅŸtir"],"New Role":["Yeni rol"],"Reason":["Sebep"],"Change affiliation":["ÃœyeliÄŸi deÄŸiÅŸtir"],"New affiliation":["Yeni üyelik"],"Affiliation":["Ãœyelik"],"Moderator Tools":["Moderatör Araçları"],"No users with that affiliation found.":["Bu üyeliÄŸe sahip hiçbir kullanıcı bulunamadı."],"No users with that role found.":["Bu role sahip hiçbir kullanıcı bulunamadı."],"Type here to filter the search results":[""],"Show users":["Kullanıcıları göster"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Roller, çok kullanıcılı bir sohbette belirli beceriler kazandırmak veya reddetmek için kullanıcılara atanır. Bir üyeliÄŸin bir parçası olarak açıkça veya dolaylı olarak atanırlar. Bir üyelikten kaynaklanmayan bir rol, yalnızca kullanıcının oturumu boyunca geçerlidir."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Bir ortaklık, genellikle belirli bir rol ifade eden ve ayrıcalıklar ve sorumluluklar veren uzun ömürlü bir haktır. ÖrneÄŸin yöneticiler ve mal sahipleri otomatik olarak moderatör rolüne sahip."],"Sorry, something went wrong while trying to set the affiliation":["Maalesef üyeliÄŸi ayarlamaya çalışırken bir sorun oluÅŸtu"],"Affiliation changed":["Ãœyelik deÄŸiÅŸti"],"Role changed":["Rolünüz deÄŸiÅŸti"],"You\'re not allowed to make that change":["Bu deÄŸiÅŸikliÄŸi yapmanıza izin verilmiyor"],"Sorry, something went wrong while trying to set the role":["Maalesef, rolü belirlemeye çalışırken bir ÅŸeyler ters gitti"],"Topic":["Konu"],"Topic author":["Konu sahibi"],"Groupchat address (JID)":["Grup adresi (JID)"],"Message archiving":["Mesaj arÅŸivleme"],"Messages are archived on the server":["Mesajlar sunucuda arÅŸivlenir"],"Description":["Açıklama"],"Features":["Özellikler"],"This groupchat is not publicly searchable":["Bu grup sohbeti herkes tarafından aranamaz"],"This groupchat is restricted to members only":["Bu grup sohbeti yalnızca üyelerle sınırlıdır"],"Members only":["Sadece üyeler"],"Participants entering this groupchat need to request permission to write":["Bu grup sohbetine giren katılımcıların yazmak için izin istemeleri gerekir"],"Name":["Ad"],"This groupchat does not require a password upon entry":["Bu grup sohbeti giriÅŸte ÅŸifre gerektirmez"],"No password required":["Åžifre gerekmiyor"],"Not anonymous":["Ä°simsiz deÄŸil"],"All other groupchat participants can see your XMPP address":["DiÄŸer tüm grup sohbet katılımcıları XMPP adresinizi görebilir"],"Not moderated":["Yönetilmiyor"],"Participants entering this groupchat can write right away":["Bu grup sohbetine katılan katılımcılar hemen yazabilir"],"Online users":["Online Kullanıcılar"],"Anyone can join this groupchat":["Herkes bu grup sohbetine katılabilir"],"This groupchat requires a password before entry":["Bu grup sohbeti giriÅŸ yapmadan önce ÅŸifre gerektiriyor"],"Password protected":["Åžifre korumalı"],"Persistent":["Kalıcı"],"This groupchat persists even if it\'s unoccupied":["Bu grup sohbeti boÅŸ olsa bile devam ediyor"],"Only moderators can see your XMPP address":["XMPP adresinizi yalnızca moderatörler görebilir"],"This groupchat will disappear once the last person leaves":["Bu grup sohbeti son kiÅŸi ayrıldıktan sonra kaybolacak"],"This groupchat is publicly searchable":["Bu grup sohbeti herkese açık olarak aranabilir"],"Groupchat info for %1$s":["%1$s için toplu konuÅŸma bilgisi"],"You\'re not allowed to send messages in this room":["Bu odada mesaj göndermek için izniniz yok"],"The conversation has moved. Click below to enter.":["KonuÅŸma taşındı. Girmek için aÅŸağıya tıklayın."],"This groupchat no longer exists":["Bu grup sohbeti artık mevcut deÄŸil"],"Enter groupchat":["Grup sohbeti girin"],"Please choose your nickname":["Lütfen takma adınızı seçin"],"This groupchat requires a password":["Bu grup sohbeti bir ÅŸifre gerektiriyor"],"Password: ":["Parola: "],"Submit":["Gönder"],"This user is a moderator.":["Bu kullanıcı bir moderatör."],"This user can send messages in this groupchat.":["Bu kullanıcı bu grup sohbetinde mesaj gönderebilir."],"This user can NOT send messages in this groupchat.":["Bu kullanıcı bu grup sohbetinde mesaj gönderemez."],"Owner":["Sahip"],"Admin":["Yönetici"],"Member":["Ãœye"],"Moderator":["Moderatör"],"Visitor":["Ziyaretçi"],"Click to mention %1$s in your message.":["Mesajınızda %1$s’i belirtmek için tıklayın."],"Participants":["Katılımcılar"],"%1$s has entered the groupchat":["%1$s grup sohbetine girdi"],"%1$s has left the groupchat":["%1$s grup sohbetinden ayrıldı"],"%1$s is now a moderator":["%1$s artık bir moderatör"],"%1$s is no longer a moderator":["%1$s artık bir moderatör deÄŸil"],"%1$s has been given a voice":["%1$s üyeye ses verildi"],"%1$s has been muted":["%1$s susturuldu"],"Change user\'s affiliation to admin":["Kullanıcının admin üyeliÄŸini deÄŸiÅŸtir"],"Ban user by changing their affiliation to outcast":["Kullanıcının üyeliÄŸini kovulmuÅŸ olarak deÄŸiÅŸtirerek kullanıcıyı yasakla"],"Clear the chat area":["Sohbeti temizle"],"Change user role to participant":["Katılımcı olarak kullanıcı rolünü deÄŸiÅŸtirme"],"Remove this groupchat":["Bu grup sohbetini kaldır"],"Kick user from groupchat":["Grup sohbetinden kullanıcıyı at"],"Write in 3rd person":["3. kiÅŸiye yaz"],"Grant membership to a user":["Bir kullanıcıya yetki ver"],"Opens up the moderator tools GUI":["Yönetici araçları arayüzünü açar"],"Remove user\'s ability to post messages":["Kullanıcının mesaj gönderme özelliÄŸini kaldır"],"Change your nickname":["Takma adınızı deÄŸiÅŸtirin"],"Grant moderator role to user":["Kullanıcıya moderatör rolü verme"],"Grant ownership of this groupchat":["Bu grup sohbetinin sahipliÄŸini ver"],"Register your nickname":["Takma adınızı kaydedin"],"Revoke the user\'s current affiliation":["Kullanıcının mevcut üyeliÄŸini iptal et"],"Set groupchat subject":["Grup sohbeti konusunu ayarla"],"Set groupchat subject (alias for /subject)":["Grup sohbeti konusunu ayarla (takma adı /konu )"],"Allow muted user to post messages":["Sessiz kullanıcının mesaj göndermesine izin ver"],"Configure":[""],"Configure this groupchat":["Bu toplu konuÅŸmayı ayarlayın"],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Destroy":[""],"Leave":[""],"Hide the list of participants":["Katılımcı listesini gizle"],"Forbidden: you do not have the necessary role in order to do that.":["Yasak: Bunu yapabilmek için gerekli rolün yok."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Yasak: Bunu yapmak için gerekli üyeliÄŸiniz yok."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Hata: \\"%1$s\\" komutu, kullanıcının takma adı ve isteÄŸe baÄŸlı olarak iki argüman alıyor."],"Error: couldn\'t find a groupchat participant based on your arguments":["Hata: Argümanlarına dayanarak grup sohbeti katılımcısı bulunamadı"],"Error: found multiple groupchat participant based on your arguments":["Hata: Argümanlarınızı temel alarak birden fazla grup sohbeti katılımcısı bulundu"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":["Takma adınız \\"%1$s\\""],"Error: invalid number of arguments":["Hata: geçersiz sayıda argüman"],"This action was done by %1$s.":["Bu iÅŸlem %1$s tarafından yapıldı."],"The reason given is: \\"%1$s\\".":["Verilen sebep: \\"%1$s\\"."],"Groupchats":["Grup Sohbetleri"],"Add a new groupchat":["Yeni grup sohbeti ekle"],"Query for groupchats":["Grup sohbetleri için sorgu"],"Announcements":[""],"Notification from %1$s":["%1$s\'dan bildirim"],"%1$s says":["%1$s diyor"],"has gone offline":["çevrimdışı oldu"],"has gone away":["uzaÄŸa gitti"],"is busy":["meÅŸgul"],"has come online":["çevrimiçi oldu"],"wants to be your contact":["KiÅŸilerine eklenmek istiyor"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["Hakkında"],"Commands":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Açık Kaynak %2$s XMPP sohbet istemcisi size %3$s getirdi Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s %2$s kendi dilinize çevirin"],"Log out":["Çıkış Yap"],"Click to change your chat status":["Sohbet durumunuzu deÄŸiÅŸtirmek için tıklayın"],"Show details about this chat client":["Bu sohbet istemcisi hakkındaki ayrıntıları göster"],"Your avatar image":["Avatar resmin"],"Checkbox for selecting the following fingerprint":["AÅŸağıdaki parmak izini seçmek için onay kutusu"],"Device without a fingerprint":["Parmak izi olmayan cihaz"],"Other OMEMO-enabled devices":["DiÄŸer OMEMO özellikli cihazlar"],"Checkbox to select fingerprints of all other OMEMO devices":["DiÄŸer tüm OMEMO cihazlarının parmak izlerini seçmek için onay kutusu"],"Remove checked devices and close":["Kontrol edilen cihazları çıkarın ve kapatın"],"Select all":["Tümünü seç"],"This device\'s OMEMO fingerprint":["Bu cihazın OMEMO parmak izi"],"Generate new keys and fingerprint":["Yeni anahtarlar ve parmak izi üret"],"Your Profile":["Profilin"],"XMPP Address (JID)":["XMPP Adresi (JID)"],"Save and close":["Kaydet ve kapat"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Birden fazla rolü ayırmak için virgül kullanın. Rolleriniz, sohbet mesajlarınızda adınızın yanında gösterilir."],"OMEMO":[""],"Sorry, an error happened while trying to save your profile data.":["Maalesef, profil verilerinizi kaydetmeye çalışırken bir hata oluÅŸtu."],"You can check your browser\'s developer console for any error output.":["Herhangi bir hata çıktısı için tarayıcınızın geliÅŸtirici konsolunu kontrol edebilirsiniz."],"Away":["Uzakta"],"Busy":["MeÅŸgul"],"Custom status":["Özel durum"],"Offline":["Çevrimdışı"],"Online":["Çevrim içi"],"Away for long":["Uzun süre"],"Change chat status":["Sohbet durumunu deÄŸiÅŸtir"],"Personal status message":["KiÅŸisel durum mesajı"],"I am %1$s":["Ben %1$s"],"Are you sure you want to log out?":["Çıkış yapmak istediÄŸinize emin misiniz?"],"online":["Çevrimiçi"],"busy":["MeÅŸgul"],"away for long":["çok uzak"],"away":["uzakta"],"offline":["Çevrimdışı"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s, OMEMO\'yu destekleyen bir müşteriye sahip görünmüyor. Åžifreli sohbet artık bu grup sohbetinde mümkün olmayacak."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Uçtan uca ÅŸifreleme kullanılamaz çünkü %1$s OMEMO\'yu desteklemeyen bir istemci kullanıyor."],"Messages are being sent in plaintext":["Mesajlar düz metin olarak gönderiliyor"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":["Maalesef, cihazları kaldırmaya çalışırken bir hata oluÅŸtu."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Yeni OMEMO anahtarları oluÅŸturmak istediÄŸinize emin misiniz? Bu, eski anahtarlarınızı kaldırır ve önceden ÅŸifrelenen tüm mesajlar bu cihazda artık ÅŸifresi çözülemez."],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Ãœzgünüz, ÅŸifreli bir mesaj gönderemiyoruz, çünkü %1$s OMEMO bilgilerini görmek için varlıklarına abone olmanızı istiyor"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Maalesef, %1$s için uzak sunucu bulunamadığı için ÅŸifreli bir mesaj gönderemiyoruz"],"Unable to send an encrypted message due to an unexpected error.":["Beklenmeyen bir hata nedeniyle ÅŸifreli bir mesaj gönderilemiyor."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Ãœzgünüz, OMEMO ÅŸifreli mesaj gönderebileceÄŸimiz cihaz bulunamadı."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Bu, müşterinizin desteklemediÄŸi bir OMEMO ÅŸifreli mesajdır. https://conversations.im/omemo adresinde daha fazla bilgi bulabilirsiniz"]," e.g. conversejs.org":[" Örnek, conversejs.org"],"Fetch registration form":["Kayıt formunu al"],"Tip: A list of public XMPP providers is available":["Ä°pucu: Genel XMPP saÄŸlayıcılarının bir listesi var"],"here":["burada"],"Sorry, we\'re unable to connect to your chosen provider.":["Ãœzgünüz, seçtiÄŸiniz saÄŸlayıcıya baÄŸlanamıyoruz."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Maalesef, verilen saÄŸlayıcı bant kaydı hesabı desteklemiyor. Lütfen farklı bir saÄŸlayıcı ile deneyin."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["\\"%1$s\\" ile baÄŸlantı kurulurken bir ÅŸeyler ters gitti. Onun var olduÄŸuna emin misin?"],"Now logging you in":["Åžimdi oturum açıyorsun"],"Registered successfully":["BaÅŸarıyla kayıt olundu"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["SaÄŸlayıcı, kayıt giriÅŸimini reddetti. Lütfen doÄŸruluk için girdiÄŸiniz deÄŸerleri kontrol edin."],"Leave this groupchat":["Gruptan ayrıl"],"Click to toggle the list of open groupchats":["Açık grup sohbeti listesine geçmek için tıklayın"],"Open Groupchats":["Grup Sohbetlerini Aç"],"Are you sure you want to leave the groupchat %1$s?":["%1$s grup sohbetinden ayrılmak istediÄŸinize emin misiniz?"],"Add":["Ekle"],"Add a Contact":["KiÅŸi ekle"],"This contact is busy":["Bu kiÅŸi meÅŸgul"],"This contact is online":["Bu kiÅŸi çevrimiçi"],"This contact is offline":["Bu kiÅŸi çevrimdışı"],"This contact is unavailable":["Bu kiÅŸi mevcut deÄŸil"],"This contact is away for an extended period":["Bu kiÅŸi uzun bir süre uzakta"],"This contact is away":["Bu kiÅŸi uzakta"],"Contact name":["KiÅŸi adı"],"Optional nickname":["Ä°steÄŸe baÄŸlı takma ad"],"Sorry, could not find a contact with that name":["Maalesef, bu isimde bir kiÅŸi bulunamadı"],"This contact has already been added":["Bu kiÅŸi zaten ekli"],"Filter":["Süzgeç"],"Filter by contact name":["KiÅŸi adına göre süz"],"Filter by group name":["Grup adına göre süz"],"Filter by status":["Duruma göre süz"],"Any":["Herhangi"],"Unread":["Okunmamış"],"Chatty":["KonuÅŸkan"],"Extended Away":["Uzatılmış"],"Click to remove %1$s as a contact":["%1$s kiÅŸiyi bir kiÅŸi olarak kaldırmak için tıklayın"],"Click to accept the contact request from %1$s":["%1$s adresinden kiÅŸi isteÄŸini kabul etmek için tıklayın"],"Click to decline the contact request from %1$s":["%1$s içinden kiÅŸi isteÄŸini reddetmek için tıklayın"],"Are you sure you want to decline this contact request?":["Bu kiÅŸi isteÄŸini reddetmek istediÄŸinden emin misin?"],"Contacts":["Ä°letiÅŸim"],"Add a contact":["Bir kiÅŸi ekle"],"Re-sync your contacts":["KiÅŸilerinizi yeniden senkronize edin"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{539:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=2; plural=n != 1;","lang":"tr"},"Create your account":["Hesabını oluÅŸtur"],"Please enter the XMPP provider to register with:":["Lütfen kayıt yaptırmak için XMPP saÄŸlayıcısını girin:"],"Already have a chat account?":["Zaten bir sohbet hesabınız var mı?"],"Log in here":["GiriÅŸ yapın"],"Account Registration:":["Hesap kaydı:"],"Register":["Kayıt ol"],"Choose a different provider":["Farklı bir saÄŸlayıcı seçin"],"Hold tight, we\'re fetching the registration form…":["Sıkı tutun, kayıt formunu alıyoruz…"],"Cancel":["Ä°ptal"],"The connection has dropped, attempting to reconnect.":["BaÄŸlantı koptu, yeniden baÄŸlanılmaya çalışılıyor."],"An error occurred while connecting to the chat server.":["Sohbet sunucusuna baÄŸlanılırken bir hata oluÅŸtu."],"Your XMPP address and/or password is incorrect. Please try again.":["XMPP adresiniz ve/veya parolanız yanlış. Lütfen tekrar deneyin."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["ÃœZgünüz, bu XMPP hostuna bu domainle baÄŸlanamadık :%1$s"],"The XMPP server did not offer a supported authentication mechanism":["XMPP sunucusu desteklenen bir kimlik doÄŸrulama mekanizması sunmadı"],"Undecryptable OMEMO message":["Åžifresi çözülemeyen OMEMO mesajı"],"Sorry, could not determine upload URL.":["Maalesef, yükleme URL’si belirlenemedi."],"Sorry, could not determine file upload URL.":["Maalesef, dosya yükleme URL’si belirlenemedi."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Maalesef, dosyanızı baÅŸarıyla yükleyemedi. Sunucunuzun yanıtı: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Maalesef, dosyanızı baÅŸarıyla yükleyemedi."],"You\'re not allowed to retract your message.":["Mesajınızı geri çekmenize izin verilmiyor."],"Sorry, an error occurred while trying to retract your message.":["Ãœzgünüm, mesajınızı geri çekmeye çalışırken bir hata oluÅŸtu."],"You\'re not allowed to send a message.":["Mesaj göndermenize izin verilmiyor."],"Sorry, an error occurred while trying to send your message.":["Ãœzgünüm, mesajınızı göndermeye çalışırken bir hata oluÅŸtu."],"Sorry, looks like file upload is not supported by your server.":["Maalesef, dosya yükleme sunucunuz tarafından desteklenmiyor gibi görünüyor."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Dosyanızın boyutu, %1$s, sunucunuz tarafından izin verilen ve %2$s olan maksimum deÄŸeri aşıyor."],"Smileys and emotions":["Suratlar ve duygular"],"People":["Ä°nsanlar"],"Activities":["Faaliyetler"],"Travel":["Seyahat"],"Objects":["Nesneler"],"Animals and nature":["Hayvanlar ve doÄŸa"],"Food and drink":["Yiyecek ve içecek"],"Symbols":["Semboller"],"Flags":["Bayraklar"],"Stickers":["Çıkartma"],"This groupchat is not anonymous":["Bu grup konuÅŸması anonim deÄŸil"],"This groupchat now shows unavailable members":["Bu grup konuÅŸması uygun olmayan üyeleri gösteriyor"],"This groupchat does not show unavailable members":["Bu grup konuÅŸması uygun olmayan üyeleri gösteriyor"],"The groupchat configuration has changed":["Grup sohbeti yapılandırması deÄŸiÅŸtirildi"],"Groupchat logging is now enabled":["Grup sohbeti günlüğü artık etkin"],"Groupchat logging is now disabled":["Grup Sohbeti günlüğü artık devre dışı"],"This groupchat is now no longer anonymous":["Bu grup sohbeti artık anonim deÄŸil"],"This groupchat is now semi-anonymous":["Bu grup sohbeti ÅŸimdi yarı anonim"],"This groupchat is now fully-anonymous":["Bu grup sohbeti artık tamamen anonim"],"A new groupchat has been created":["Yeni bir grup sohbeti oluÅŸturuldu"],"Your nickname has been automatically set to %1$s":["Takma adınız otomatik %1$s olarak ayarlandı"],"Your nickname has been changed to %1$s":["Takma adınız %1$s olarak deÄŸiÅŸtirildi"],"You have been banned from this groupchat":["Bu grup sohbetinden banlandınız"],"You have exited this groupchat due to a technical problem":["Teknik bir sorun nedeniyle bu grup sohbetinden çıktınız"],"You have been kicked from this groupchat":["Bu grup sohbetinden atıldınız"],"You have been removed from this groupchat because of an affiliation change":["Ãœyelik deÄŸiÅŸikliÄŸi nedeniyle bu grup sohbetinden kaldırıldınız"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Grup sohbeti yalnızca üyelere deÄŸiÅŸtirildiÄŸinden ve üye olmadığınız için bu grup sohbetinden çıkardınız"],"You have been removed from this groupchat because the service hosting it is being shut down":["Bu grup sohbeti kaldırıldı, çünkü barındırma hizmeti kapatıldı"],"Your retraction was not delivered because you\'re not present in the groupchat.":["Grup sohbetinde bulunmadığınız için geri çekme talebiniz iletilmedi."],"Your message was not delivered because you weren\'t allowed to send it.":["Gönderme izniniz olmadığı için mesajınız iletilmedi."],"Your message was not delivered because you\'re not present in the groupchat.":["Mesajınız iletilmedi çünkü grup sohbetinde bulunmadınız."],"A timeout happened while while trying to retract your message.":["Mesajınızı geri çekmeye çalışırken bir zaman aşımı meydana geldi."],"You\'re not allowed to register yourself in this groupchat.":["Kendinizi bu grup sohbetine kaydettiremezsiniz."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Bu grup sohbetine kaydolmanıza izin verilmiyor çünkü sadece üyeler kayıt olabilirler."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["Takma adınız bu grup sohbetine kaydedilemiyor, kaydı desteklemiyor."],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["Takma adınız bu grup sohbetine kaydedilemiyor, verilen geçersiz veri formu."],"Topic set by %1$s":["Konu %1$s tarafından ayarlandı"],"Topic cleared by %1$s":["Konu %1$s tarafından temizlendi"],"%1$s has been banned by %2$s":["%1$s, %2$s tarafından banlandı"],"%1$s has been banned":["%1$s banlandı"],"%1$s\'s nickname has changed":["%1$s kullancı adını deÄŸiÅŸtirdi"],"%1$s has been kicked out by %2$s":["%1$s, %2$s tarafından atıldı"],"%1$s has been kicked out":["%1$s atıldı"],"%1$s has been removed because of an affiliation change":["%1$s bir kuruluÅŸ deÄŸiÅŸikliÄŸi nedeniyle kaldırıldı"],"%1$s has been removed for not being a member":["%1$s üye olmadığı için kaldırıldı"],"%1$s is no longer an admin of this groupchat":["%1$s artık bu grup konuÅŸmasının yöneticisi deÄŸil"],"%1$s is no longer an owner of this groupchat":["%1$s artık bu toplu konuÅŸmanın sahibi deÄŸil"],"%1$s is no longer banned from this groupchat":["%1$s artık bu toplu konuÅŸmada yasaklı deÄŸil"],"%1$s is no longer a member of this groupchat":["%1$s artık bu toplu konuÅŸmanın üyesi deÄŸil"],"%1$s is now a member of this groupchat":["%1$s ÅŸimdi bu grup sohbetine üye"],"%1$s is now an %2$s of this groupchat":["%1$s artık bu toplu konuÅŸmanın %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["SeçtiÄŸiniz takma isim saklıdır veya kullanımda. Lütfen farklı bir tane seçin."],"Password incorrect":["Yanlış parola"],"You are not on the member list of this groupchat.":["Bu grup sohbetinin üye listesinde deÄŸilsin."],"You have been banned from this groupchat.":["Bu grup sohbetinde yasaklandınız."],"You are not allowed to create new groupchats.":["Yeni grup sohbetleri oluÅŸturmanıza izin verilmiyor."],"Your nickname doesn\'t conform to this groupchat\'s policies.":["Takma adınız bu grup sohbetinin politikalarına uymuyor."],"This groupchat does not (yet) exist.":["Bu grup sohbeti (henüz) yok."],"This groupchat has reached its maximum number of participants.":["Bu grup sohbeti maksimum katılımcı sayısına ulaÅŸtı."],"Remote server not found":["Uzak sunucu bulunamadı"],"The explanation given is: \\"%1$s\\".":["Verilen açıklama: \\"%1$s\\"."],"%1$s has invited you to join a groupchat: %2$s":["%1$s sizi bir grup sohbetine davet etti: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s sizi bir grup sohbetine davet etti: %2$s ve aÅŸağıdaki nedeni bıraktı: \\"%3$s\\""],"Error":["Hata"],"Sorry, something went wrong while trying to save your bookmark.":["Ãœzgünüm, kaydetmeye çalışırken bir problem çıktı."],"Timeout Error":["Zaman Aşımı Hatası"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["Sunucu yer imlerinizi izin verilen süre içinde döndürmedi. Sayfayı tekrar istemek için yeniden yükleyebilirsiniz."],"Timeout while trying to fetch archived messages.":["ArÅŸivlenmiÅŸ mesajları almaya çalışırken zaman aşımı."],"An error occurred while querying for archived messages.":["ArÅŸivlenen mesajlar sorgulanırken bir hata oluÅŸtu."],"My contacts":["KiÅŸilerim"],"Pending contacts":["Bekleyen kiÅŸiler"],"Contact requests":["Ä°letiÅŸim istekleri"],"Ungrouped":["Gruplanmamış"],"New messages":["Yeni mesajlar"],"Sorry, there was an error while trying to add %1$s as a contact.":["Maalesef, %1$s kiÅŸiyi kiÅŸi olarak eklemeye çalışırken bir hata oluÅŸtu."],"This client does not allow presence subscriptions":["Bu müşteri varlık aboneliklerine izin vermiyor"],"Click to hide these contacts":["Bu kiÅŸileri gizlemek için tıklayın"],"Unbookmark this groupchat":["Bu grup sohbetini favorilerden çıkar"],"Click to open this groupchat":["Bu grup sohbetini açmak için tıkla"],"Click to toggle the bookmarks list":["Yer imlerini deÄŸiÅŸtirmek için tıkla"],"Bookmarks":["Yer imleri"],"Bookmark this groupchat":["Sık kullanılanlara ekle"],"Would you like this groupchat to be automatically joined upon startup?":["Bu grubun açılışta otomatik olarak açılmasını istiyor musun?"],"The name for this bookmark:":["Bir isim gir:"],"What should your nickname for this groupchat be?":["Bu grup için takma adın ne olmalı?"],"Save":["Kaydet"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["%1$s, bunu sık kullanılanlardan kaldırmak istediÄŸine emin misin?"],"Unbookmark":["Yer imini kaldır"],"Bookmark":["Yer imi"],"Close":["Kapat"],"OK":["Tamam"],"Image: ":["Resim: "],"Download audio file \\"%1$s\\"":["\\"%1$s\\" ses dosyasını indirin"],"Download image file \\"%1$s\\"":["\\"%1$s\\" resim dosyasını indir"],"Download file \\"%1$s\\"":["\\"%1$s\\" dosyasını indir"],"Cancel Editing":["Düzenlemeyi Ä°ptal Et"],"Edit":["Düzenle"],"Retract":["Geri çek"],"Message versions":["Mesaj versiyonları"],"Retry":["Yeniden dene"],"Uploading file:":["Dosya yükleniyor:"],"%1$s has removed this message":["%1$s bu mesajı kaldırdı"],"This message has been edited":["Bu mesaj düzenlendi"],"Show more":["Fazlasını göster"],"Show less":["Daha az göster"],"No message history available.":["Mesaj geçmiÅŸi yok."],"Search results":["Arama Sonuçları"],"Search":["Ara"],"Insert emojis":["Emoji ekle"],"Send the message":["Mesajı gönder"],"Start a call":["Bir arama baÅŸlat"],"Message characters remaining":["Kullanılabilir mesaj karakterleri"],"Hide participants":["Katılımcıları gizle"],"Show participants":["Katılımcıları göster"],"Choose a file to send":["Gönderilecek dosyayı seç"],"Click to write as a normal (non-spoiler) message":["Normal (spoiler olmayan) mesaj olarak göndermek için tıkla"],"Click to write your message as a spoiler":["Mesajını spoiler olarak yazmak için tıkla"],"The User\'s Profile Image":["Bu Kullanıcının Profil Resmi"],"Trusted":["Güvenilir"],"Untrusted":["Güvenilmez"],"OMEMO Fingerprints":["OMEMO Parmak Ä°zleri"],"No OMEMO-enabled devices found":["OMEMO etkinleÅŸtirilmiÅŸ cihaz bulunamadı"],"Remove as contact":["KiÅŸilerden kaldır"],"XMPP Address":["XMPP Adresi"],"Email":["E-Posta"],"Full Name":["Ad Soyad"],"Nickname":["Rumuz"],"Refresh":["Tazele"],"Role":["rol"],"URL":["BaÄŸlantı Adresi"],"%1$s is typing":["%1$s yazıyor"],"%1$s has stopped typing":["%1$s yazmayı durdurdu"],"%1$s has gone away":["%1$s uzakta"],"Remove messages":["Mesajları sil"],"Close this chat":["Bu sohbeti kapat"],"Write in the third person":["Üçüncü kiÅŸi olarak yaz"],"Show this menu":["Menüyü göster"],"Hidden message":["Gizli mesaj"],"Message":["Mesaj"],"Optional hint":["Opsiyonel ipucu"],"You have unread messages":["Okunmamış mesajlarınız var"],"Details":["Ayrıntılar"],"See more information about this person":["Bu kiÅŸi hakkında daha fazla bilgi göster"],"Close and end this conversation":["Bu sohbeti kapat ve sonlandır"],"Sorry, the connection has been lost, and your message could not be sent":["Ãœzgünüm, baÄŸlantı koptu ve mesajınız gönderilemedi"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["DiÄŸer XMPP/Jabber istemcilerinin (ve sunucularının) henüz geri çekmeleri desteklemeyebileceÄŸini ve bu mesajın her yerden kaldırılamayabileceÄŸini unutmayın."],"Are you sure you want to retract this message?":["Bu mesajı geri çekmek istediÄŸinizden emin misiniz?"],"Confirm":["Onayla"],"You have an unsent message which will be lost if you continue. Are you sure?":["Henüz gönderilmemiÅŸ bir mesajınız var, devam ederseniz silinecek. Emin misiniz?"],"Are you sure you want to clear the messages from this conversation?":["Bu konuÅŸmadaki mesajları temizlemek istediÄŸinize emin misiniz?"],"%1$s has gone offline":["%1$s çevrimdışı oldu"],"%1$s is busy":["%1$s meÅŸgul"],"%1$s is online":["%1$s çevrimiçi"],"Sorry, something went wrong while trying to refresh":["Ãœzgünüm, yenilemeye çalışırken bir ÅŸeyler ters gitti"],"Are you sure you want to remove this contact?":["Bu kiÅŸiyi kaldırmak istediÄŸinize emin misiniz?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["Ãœzgünüz, %1$s kiÅŸisini kaldırmaya çalışırken bir hata oluÅŸtu."],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Performansı arttırmak amacı ile tarayıcınızda veri depoluyoruz. Ä°nternet kafe gibi bilgisayarın genel kullanıldiÄŸi bir ortamda iseniz ve çıkış yaptığınıza bilgilerinizin silinmesini istiyorsanız bu kutuyu iÅŸaretlemeyin. Düzgün bir ÅŸekilde çıkış yapmanız tüm verinin silinmesi için önemlidir. Unutmayın ki, güvenilmeyen bir cihaz kullanırken OMEMO ÅŸifrelemesi çalışmayacaktır."],"This is a trusted device":["Bu cihaz güvenilir"],"Password":["Parola"],"Create an account":["Hesap oluÅŸtur"],"Don\'t have a chat account?":["Sohbet hesabınız yok mu?"],"Log in":["Oturum Aç"],"Disconnected":["BaÄŸlantı kesildi"],"Click here to log in anonymously":["Anonim olarak giriÅŸ yapmak için tıklayın"],"Username":["Kullancıadı"],"user@domain":["kullanıcı@alanadı"],"Please enter a valid XMPP address":["Lütfen geçerli bir XMPP adresi girin"],"Chat Contacts":["KiÅŸilerinle Sohbet Et"],"Toggle chat":["Sohbeti deÄŸiÅŸtir"],"Click to restore this chat":["Bu sohbeti geri yükle"],"Minimized":["Küçültüldü"],"Minimize":["Küçült"],"Minimize this chat":["Bu sohbeti küçült"],"Minimize this groupchat":["Bu grup sohbetini küçült"],"This user is a moderator.":["Bu kullanıcı bir moderatör."],"This user can send messages in this groupchat.":["Bu kullanıcı bu grup sohbetinde mesaj gönderebilir."],"This user can NOT send messages in this groupchat.":["Bu kullanıcı bu grup sohbetinde mesaj gönderemez."],"Owner":["Sahip"],"Admin":["Yönetici"],"Member":["Ãœye"],"Moderator":["Moderatör"],"Visitor":["Ziyaretçi"],"Click to mention %1$s in your message.":["Mesajınızda %1$s’i belirtmek için tıklayın."],"Participants":["Katılımcılar"],"This field is required":["Bu alan zorunludur"],"Join":["Katıl"],"Enter a new Groupchat":["Yeni bir gruba katıl"],"name@conference.example.org":["isim@konferans.ornek.org"],"Groupchat name":["Grup Sohbeti adı"],"Groupchat address":["Grup sohbeti adresi"],"Groupchat id is invalid.":["Grup sohbeti kimliÄŸi geçersiz."],"Invite":["Davet et"],"Invite someone to this groupchat":["Birisini bu grup sohbetine davet et"],"user@example.org":["kullanici@example.org"],"Optional reason for the invitation":["Davet için isteÄŸe baÄŸlı neden"],"Show groupchats":["Toplu konuÅŸmaları göster"],"Server address":["Sunucu adresi"],"Show more information on this groupchat":["Grup hakkında daha fazla bilgi göster"],"Query for Groupchats":["Toplu konuÅŸma sorgusu"],"Description:":["Açıklama:"],"Groupchat Address (JID):":["Toplu konuÅŸma Adresi (JID):"],"Participants:":["Katılımcılar:"],"Features:":["Özellikler:"],"Requires authentication":["Kimlik doÄŸrulama gerektirir"],"Hidden":["Gizli"],"Requires an invitation":["Davet gerekli"],"Moderated":["Modere ediliyor"],"Non-anonymous":["Anonim-olmayan"],"Open":["Açık"],"Permanent":["Kalıcı"],"Public":["Herkese açık"],"Semi-anonymous":["Yarı-anonim"],"Temporary":["Geçici"],"Unmoderated":["Modere edilmiyor"],"conference.example.org":["konferans.ornek.org"],"Groupchats found":["Grup sohbetleri bulundu"],"No groupchats found":["Toplu konuÅŸma bulunamadı"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["Moderatörler, diÄŸer kullanıcıların rollerini deÄŸiÅŸtirebilen ayrıcalıklı kullanıcılardır (yönetici veya sahiplik iliÅŸkileri olanlar hariç)."],"The default role, implies that you can read and write messages.":["Varsayılan rol, mesajları okuyabileceÄŸiniz ve yazabileceÄŸiniz anlamına gelir."],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["Ziyaretçilerin yönetilen çok kullanıcılı bir sohbette mesaj yazmasına izin verilmez."],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["Sahip en yüksek üyedir. Sahipler diÄŸer tüm kullanıcıların rollerini ve baÄŸlantılarını deÄŸiÅŸtirebilir."],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["Yönetici, en yüksek 2. üyedir. Yöneticiler, sahipler dışındaki diÄŸer tüm kullanıcıların rollerini ve baÄŸlantılarını deÄŸiÅŸtirebilir."],"To ban a user, you give them the affiliation of \\"outcast\\".":["Bir kullanıcıyı yasaklamak için onlara \\"dışa vurma\\" üyeliÄŸi verirsiniz."],"Change role":["Role deÄŸiÅŸtir"],"New Role":["Yeni rol"],"Reason":["Sebep"],"Change affiliation":["ÃœyeliÄŸi deÄŸiÅŸtir"],"New affiliation":["Yeni üyelik"],"Affiliation":["Ãœyelik"],"Moderator Tools":["Moderatör Araçları"],"No users with that affiliation found.":["Bu üyeliÄŸe sahip hiçbir kullanıcı bulunamadı."],"No users with that role found.":["Bu role sahip hiçbir kullanıcı bulunamadı."],"Type here to filter the search results":["Arama sonuçlarını filtrelemek için buraya yazın"],"Show users":["Kullanıcıları göster"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["Roller, çok kullanıcılı bir sohbette belirli beceriler kazandırmak veya reddetmek için kullanıcılara atanır. Bir üyeliÄŸin bir parçası olarak açıkça veya dolaylı olarak atanırlar. Bir üyelikten kaynaklanmayan bir rol, yalnızca kullanıcının oturumu boyunca geçerlidir."],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["Bir ortaklık, genellikle belirli bir rol ifade eden ve ayrıcalıklar ve sorumluluklar veren uzun ömürlü bir haktır. ÖrneÄŸin yöneticiler ve mal sahipleri otomatik olarak moderatör rolüne sahip."],"Timeout error while trying to set the affiliation":["ÃœyeliÄŸi ayarlamaya çalışırken zaman aşımı hatası"],"Sorry, you\'re not allowed to make that change":["Ãœzgünüm, bu deÄŸiÅŸikliÄŸi yapmanıza izin verilmiyor"],"Sorry, something went wrong while trying to set the affiliation":["Maalesef üyeliÄŸi ayarlamaya çalışırken bir sorun oluÅŸtu"],"Affiliation changed":["Ãœyelik deÄŸiÅŸti"],"Role changed":["Rolünüz deÄŸiÅŸti"],"You\'re not allowed to make that change":["Bu deÄŸiÅŸikliÄŸi yapmanıza izin verilmiyor"],"Sorry, something went wrong while trying to set the role":["Maalesef, rolü belirlemeye çalışırken bir ÅŸeyler ters gitti"],"Topic":["Konu"],"Topic author":["Konu sahibi"],"Groupchat address (JID)":["Grup adresi (JID)"],"Message archiving":["Mesaj arÅŸivleme"],"Messages are archived on the server":["Mesajlar sunucuda arÅŸivlenir"],"Description":["Açıklama"],"Features":["Özellikler"],"This groupchat is not publicly searchable":["Bu grup sohbeti herkes tarafından aranamaz"],"This groupchat is restricted to members only":["Bu grup sohbeti yalnızca üyelerle sınırlıdır"],"Members only":["Sadece üyeler"],"Participants entering this groupchat need to request permission to write":["Bu grup sohbetine giren katılımcıların yazmak için izin istemeleri gerekir"],"Name":["Ad"],"This groupchat does not require a password upon entry":["Bu grup sohbeti giriÅŸte ÅŸifre gerektirmez"],"No password required":["Åžifre gerekmiyor"],"Not anonymous":["Ä°simsiz deÄŸil"],"All other groupchat participants can see your XMPP address":["DiÄŸer tüm grup sohbet katılımcıları XMPP adresinizi görebilir"],"Not moderated":["Yönetilmiyor"],"Participants entering this groupchat can write right away":["Bu grup sohbetine katılan katılımcılar hemen yazabilir"],"Online users":["Online Kullanıcılar"],"Anyone can join this groupchat":["Herkes bu grup sohbetine katılabilir"],"This groupchat requires a password before entry":["Bu grup sohbeti giriÅŸ yapmadan önce ÅŸifre gerektiriyor"],"Password protected":["Åžifre korumalı"],"Persistent":["Kalıcı"],"This groupchat persists even if it\'s unoccupied":["Bu grup sohbeti boÅŸ olsa bile devam ediyor"],"Only moderators can see your XMPP address":["XMPP adresinizi yalnızca moderatörler görebilir"],"This groupchat will disappear once the last person leaves":["Bu grup sohbeti son kiÅŸi ayrıldıktan sonra kaybolacak"],"This groupchat is publicly searchable":["Bu grup sohbeti herkese açık olarak aranabilir"],"Groupchat info for %1$s":["%1$s için toplu konuÅŸma bilgisi"],"You\'re not allowed to send messages in this room":["Bu odada mesaj göndermek için izniniz yok"],"The conversation has moved. Click below to enter.":["KonuÅŸma taşındı. Girmek için aÅŸağıya tıklayın."],"This groupchat no longer exists":["Bu grup sohbeti artık mevcut deÄŸil"],"Hide the groupchat topic":["Grup sohbeti konusunu gizle"],"This groupchat is bookmarked":["Bu grup sohbeti yer imlerine eklendi"],"Enter groupchat":["Grup sohbeti girin"],"Choose a nickname to enter":["Girmek için bir takma ad seç"],"Please choose your nickname":["Lütfen takma adınızı seçin"],"This groupchat requires a password":["Bu grup sohbeti bir ÅŸifre gerektiriyor"],"Password: ":["Parola: "],"Submit":["Gönder"],"%1$s has entered the groupchat":["%1$s grup sohbetine girdi"],"%1$s has left the groupchat":["%1$s grup sohbetinden ayrıldı"],"%1$s is now a moderator":["%1$s artık bir moderatör"],"%1$s is no longer a moderator":["%1$s artık bir moderatör deÄŸil"],"%1$s has been given a voice":["%1$s üyeye ses verildi"],"%1$s has been muted":["%1$s susturuldu"],"%1$s and %2$s":["%1$s ve %2$s"],"%1$s are typing":["%1$s yazıyor"],"%1$s have stopped typing":["%1$s yazmayı durdurdu"],"%1$s have gone away":["%1$s uzakta"],"%1$s have entered the groupchat":["%1$s grup sohbetine girdi"],"%1$s have left the groupchat":["%1$s grup sohbetinden ayrıldı"],"%1$s are now moderators":["%1$s artık moderatör"],"%1$s are no longer moderators":["%1$s artık moderatör deÄŸil"],"%1$s have been given voices":["%1$s ses verildi"],"%1$s have been muted":["%1$s susturuldu"],"Change user\'s affiliation to admin":["Kullanıcının admin üyeliÄŸini deÄŸiÅŸtir"],"Ban user by changing their affiliation to outcast":["Kullanıcının üyeliÄŸini kovulmuÅŸ olarak deÄŸiÅŸtirerek kullanıcıyı yasakla"],"Clear the chat area":["Sohbeti temizle"],"Close this groupchat":["Bu grup sohbetini kapat"],"Change user role to participant":["Katılımcı olarak kullanıcı rolünü deÄŸiÅŸtirme"],"Remove this groupchat":["Bu grup sohbetini kaldır"],"Kick user from groupchat":["Grup sohbetinden kullanıcıyı at"],"Write in 3rd person":["3. kiÅŸiye yaz"],"Grant membership to a user":["Bir kullanıcıya yetki ver"],"Opens up the moderator tools GUI":["Yönetici araçları arayüzünü açar"],"Remove user\'s ability to post messages":["Kullanıcının mesaj gönderme özelliÄŸini kaldır"],"Change your nickname":["Takma adınızı deÄŸiÅŸtirin"],"Grant moderator role to user":["Kullanıcıya moderatör rolü verme"],"Grant ownership of this groupchat":["Bu grup sohbetinin sahipliÄŸini ver"],"Register your nickname":["Takma adınızı kaydedin"],"Revoke the user\'s current affiliation":["Kullanıcının mevcut üyeliÄŸini iptal et"],"Set groupchat subject":["Grup sohbeti konusunu ayarla"],"Set groupchat subject (alias for /subject)":["Grup sohbeti konusunu ayarla (takma adı /konu )"],"Allow muted user to post messages":["Sessiz kullanıcının mesaj göndermesine izin ver"],"You are about to retract this message.":["Bu mesajı geri çekmek üzeresiniz."],"You may optionally include a message, explaining the reason for the retraction.":["Ä°steÄŸe baÄŸlı olarak, geri çekme nedenini açıklayan bir mesaj ekleyebilirsiniz."],"Message Retraction":["Mesaj Geri Çekme"],"Optional reason":["Ä°steÄŸe baÄŸlı neden"],"Sorry, you\'re not allowed to retract this message":["Ãœzgünüm, bu mesajı geri çekmenize izin verilmiyor"],"A timeout occurred while trying to retract the message":["Mesajı geri çekmeye çalışırken bir zaman aşımı meydana geldi"],"Sorry, you\'re not allowed to retract this message.":["Ãœzgünüm, bu mesajı geri çekmenize izin verilmiyor."],"Show more information about this groupchat":["Bu grup sohbeti hakkında daha fazla bilgi göster"],"Configure":["Yapılandır"],"Configure this groupchat":["Bu toplu konuÅŸmayı ayarlayın"],"Invite someone to join this groupchat":["Birisini bu grup sohbetine katılmaya davet et"],"Show topic":["Konuyu göster"],"Hide topic":["Konuyu gizle"],"Show the topic message in the heading":["BaÅŸlıkta konu mesajını göster"],"Hide the topic in the heading":["BaÅŸlıkta konuyu gizle"],"Moderate":["Yönet"],"Moderate this groupchat":["Bu grup sohbetini yönet"],"Destroy":["Yok et"],"Leave":["Ayrıl"],"Leave and close this groupchat":["Ayrıl ve bu grup sohbetini kapat"],"Are you sure you want to leave this groupchat?":["Bu grup sohbetinden ayrılmak istediÄŸinize emin misiniz?"],"Hide the list of participants":["Katılımcı listesini gizle"],"Forbidden: you do not have the necessary role in order to do that.":["Yasak: Bunu yapabilmek için gerekli rolün yok."],"Forbidden: you do not have the necessary affiliation in order to do that.":["Yasak: Bunu yapmak için gerekli üyeliÄŸiniz yok."],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["Hata: \\"%1$s\\" komutu, kullanıcının takma adı ve isteÄŸe baÄŸlı olarak iki argüman alıyor."],"Error: couldn\'t find a groupchat participant based on your arguments":["Hata: Argümanlarına dayanarak grup sohbeti katılımcısı bulunamadı"],"Error: found multiple groupchat participant based on your arguments":["Hata: Argümanlarınızı temel alarak birden fazla grup sohbeti katılımcısı bulundu"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["Bu takma ada sahip bir katılımcı bulunamadı. Grup sohbetinden ayrılmış olabilirler."],"Sorry, an error happened while running the command.":["Ãœzgünüm, komut yürütülürken bir hata oluÅŸtu."],"Check your browser\'s developer console for details.":["Ayrıntılar için tarayıcınızın geliÅŸtirici konsoluna bakın."],"Are you sure you want to destroy this groupchat?":["Bu grup sohbetini yok etmek istediÄŸinizden emin misiniz?"],"Please enter the XMPP address of this groupchat to confirm":["Lütfen onaylamak için bu grup sohbetinin XMPP adresini girin"],"name@example.org":["name@example.org"],"Optional reason for destroying this groupchat":["Bu grup sohbetini yok etmek için isteÄŸe baÄŸlı neden"],"Optional XMPP address for a new groupchat that replaces this one":["Bunun yerini alan yeni bir grup sohbeti için isteÄŸe baÄŸlı XMPP adresi"],"replacement@example.org":["degistirme@example.org"],"Your nickname is \\"%1$s\\"":["Takma adınız \\"%1$s\\""],"Error: invalid number of arguments":["Hata: geçersiz sayıda argüman"],"This action was done by %1$s.":["Bu iÅŸlem %1$s tarafından yapıldı."],"The reason given is: \\"%1$s\\".":["Verilen sebep: \\"%1$s\\"."],"Groupchats":["Grup Sohbetleri"],"Add a new groupchat":["Yeni grup sohbeti ekle"],"Query for groupchats":["Grup sohbetleri için sorgu"],"Sorry, an error occurred while trying to submit the config form.":["Ãœzgünüm, yapılandırma formunu göndermeye çalışırken bir hata oluÅŸtu."],"Close these announcements":["Bu duyuruları kapat"],"Announcements":["Duyurular"],"Click to open this server message":["Bu sunucu mesajını açmak için tıkla"],"Notification from %1$s":["%1$s\'dan bildirim"],"%1$s says":["%1$s diyor"],"Encrypted message received":["Åžifreli mesaj alındı"],"has gone offline":["çevrimdışı oldu"],"has gone away":["uzaÄŸa gitti"],"is busy":["meÅŸgul"],"has come online":["çevrimiçi oldu"],"wants to be your contact":["KiÅŸilerine eklenmek istiyor"],"Hide":["Gizle"],"Execute":["Yürüt"],"On which entity do you want to run commands?":["Komutları hangi varlık üzerinde yürütmek istiyorsunuz?"],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":["Belirli XMPP hizmetleri ve varlıkları, ayrıcalıklı kullanıcıların üzerlerinde ad-hoc komutlar yürütmesine izin verir."],"Commands found":["Komutlar bulundu"],"List available commands":["Kullanılabilir komutları listele"],"No commands found":["Komut bulunamadı"],"Sorry, an error occurred while looking for commands on that entity.":["Ãœzgünüm, o varlık üzerinde komut aranırken bir hata oluÅŸtu."],"The specified entity doesn\'t support ad-hoc commands":["Belirtilen varlık ad-hoc komutları desteklemiyor"],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["Ãœzgünüm, komutu yürütmeye çalışırken bir hata oluÅŸtu. Ayrıntılar için geliÅŸtirici konsoluna bakın"],"About":["Hakkında"],"Commands":["Komutlar"],"Settings":["Ayarlar"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["%1$s Açık Kaynak %2$s XMPP sohbet istemcisi size %3$s getirdi Opkode %2$s"],"%1$s Translate %2$s it into your own language":["%1$s %2$s kendi dilinize çevirin"],"Log out":["Çıkış Yap"],"Click to change your chat status":["Sohbet durumunuzu deÄŸiÅŸtirmek için tıklayın"],"Show details about this chat client":["Bu sohbet istemcisi hakkındaki ayrıntıları göster"],"Your avatar image":["Avatar resmin"],"Checkbox for selecting the following fingerprint":["AÅŸağıdaki parmak izini seçmek için onay kutusu"],"Device without a fingerprint":["Parmak izi olmayan cihaz"],"Checkbox for selecting the following device":["Sonraki cihazı seçmek için onay kutusu"],"Other OMEMO-enabled devices":["DiÄŸer OMEMO özellikli cihazlar"],"Checkbox to select fingerprints of all other OMEMO devices":["DiÄŸer tüm OMEMO cihazlarının parmak izlerini seçmek için onay kutusu"],"Remove checked devices and close":["Kontrol edilen cihazları çıkarın ve kapatın"],"Select all":["Tümünü seç"],"This device\'s OMEMO fingerprint":["Bu cihazın OMEMO parmak izi"],"Generate new keys and fingerprint":["Yeni anahtarlar ve parmak izi üret"],"Your Profile":["Profilin"],"XMPP Address (JID)":["XMPP Adresi (JID)"],"Save and close":["Kaydet ve kapat"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["Birden fazla rolü ayırmak için virgül kullanın. Rolleriniz, sohbet mesajlarınızda adınızın yanında gösterilir."],"OMEMO":["OMEMO"],"Profile":["Profil"],"Sorry, an error happened while trying to save your profile data.":["Maalesef, profil verilerinizi kaydetmeye çalışırken bir hata oluÅŸtu."],"You can check your browser\'s developer console for any error output.":["Herhangi bir hata çıktısı için tarayıcınızın geliÅŸtirici konsolunu kontrol edebilirsiniz."],"Away":["Uzakta"],"Busy":["MeÅŸgul"],"Custom status":["Özel durum"],"Offline":["Çevrimdışı"],"Online":["Çevrim içi"],"Away for long":["Uzun süre"],"Change chat status":["Sohbet durumunu deÄŸiÅŸtir"],"Personal status message":["KiÅŸisel durum mesajı"],"I am %1$s":["Ben %1$s"],"Are you sure you want to log out?":["Çıkış yapmak istediÄŸinize emin misiniz?"],"online":["Çevrimiçi"],"busy":["MeÅŸgul"],"away for long":["çok uzak"],"away":["uzakta"],"offline":["Çevrimdışı"],"Sorry, could not decrypt a received OMEMO message due to an error.":["Ãœzgünüm, bir hata nedeniyle alınan OMEMO mesajının ÅŸifresi çözülemedi."],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["Ãœzgünüm, o kullanıcı için JID\'ye sahip olmadığımız için alınan OMEMO\'nun ÅŸifresi çözülemedi."],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s, OMEMO\'yu destekleyen bir müşteriye sahip görünmüyor. Åžifreli sohbet artık bu grup sohbetinde mümkün olmayacak."],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["Bu grup sohbetinde uçtan uca ÅŸifreleme kullanılamaz, grup sohbetinde bir miktar anonimlik var veya katılımcıların tümü OMEMO\'yu desteklemiyor."],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["Uçtan uca ÅŸifreleme kullanılamaz çünkü %1$s OMEMO\'yu desteklemeyen bir istemci kullanıyor."],"Messages are being sent in plaintext":["Mesajlar düz metin olarak gönderiliyor"],"Messages are sent encrypted":["Mesajlar ÅŸifreli olarak gönderiliyor"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["OMEMO ÅŸifreli mesajları desteklemek için bu grup sohbetinin üyelere özel olması ve anonim olmaması gerekmektedir"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["Ãœzgünüz, ÅŸifreli bir mesaj gönderemiyoruz, çünkü %1$s OMEMO bilgilerini görmek için varlıklarına abone olmanızı istiyor"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["Maalesef, %1$s için uzak sunucu bulunamadığı için ÅŸifreli bir mesaj gönderemiyoruz"],"Unable to send an encrypted message due to an unexpected error.":["Beklenmeyen bir hata nedeniyle ÅŸifreli bir mesaj gönderilemiyor."],"Sorry, an error occurred while trying to remove the devices.":["Maalesef, cihazları kaldırmaya çalışırken bir hata oluÅŸtu."],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["Yeni OMEMO anahtarları oluÅŸturmak istediÄŸinize emin misiniz? Bu, eski anahtarlarınızı kaldırır ve önceden ÅŸifrelenen tüm mesajlar bu cihazda artık ÅŸifresi çözülemez."],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["Ãœzgünüz, OMEMO ÅŸifreli mesaj gönderebileceÄŸimiz cihaz bulunamadı."],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["Bu, müşterinizin desteklemediÄŸi bir OMEMO ÅŸifreli mesajdır. https://conversations.im/omemo adresinde daha fazla bilgi bulabilirsiniz"]," e.g. conversejs.org":[" Örnek, conversejs.org"],"Fetch registration form":["Kayıt formunu al"],"Tip: A list of public XMPP providers is available":["Ä°pucu: Genel XMPP saÄŸlayıcılarının bir listesi var"],"here":["burada"],"Sorry, we\'re unable to connect to your chosen provider.":["Ãœzgünüz, seçtiÄŸiniz saÄŸlayıcıya baÄŸlanamıyoruz."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Maalesef, verilen saÄŸlayıcı bant kaydı hesabı desteklemiyor. Lütfen farklı bir saÄŸlayıcı ile deneyin."],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["\\"%1$s\\" ile baÄŸlantı kurulurken bir ÅŸeyler ters gitti. Onun var olduÄŸuna emin misin?"],"Now logging you in":["Åžimdi oturum açıyorsun"],"Registered successfully":["BaÅŸarıyla kayıt olundu"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["SaÄŸlayıcı, kayıt giriÅŸimini reddetti. Lütfen doÄŸruluk için girdiÄŸiniz deÄŸerleri kontrol edin."],"Leave this groupchat":["Gruptan ayrıl"],"Click to toggle the list of open groupchats":["Açık grup sohbeti listesine geçmek için tıklayın"],"Open Groupchats":["Grup Sohbetlerini Aç"],"Are you sure you want to leave the groupchat %1$s?":["%1$s grup sohbetinden ayrılmak istediÄŸinize emin misiniz?"],"Add":["Ekle"],"Add a Contact":["KiÅŸi ekle"],"This contact is busy":["Bu kiÅŸi meÅŸgul"],"This contact is online":["Bu kiÅŸi çevrimiçi"],"This contact is offline":["Bu kiÅŸi çevrimdışı"],"This contact is unavailable":["Bu kiÅŸi mevcut deÄŸil"],"This contact is away for an extended period":["Bu kiÅŸi uzun bir süre uzakta"],"This contact is away":["Bu kiÅŸi uzakta"],"Contact name":["KiÅŸi adı"],"Optional nickname":["Ä°steÄŸe baÄŸlı takma ad"],"Sorry, could not find a contact with that name":["Maalesef, bu isimde bir kiÅŸi bulunamadı"],"This contact has already been added":["Bu kiÅŸi zaten ekli"],"Filter":["Süzgeç"],"Filter by contact name":["KiÅŸi adına göre süz"],"Filter by group name":["Grup adına göre süz"],"Filter by status":["Duruma göre süz"],"Any":["Herhangi"],"Unread":["Okunmamış"],"Chatty":["KonuÅŸkan"],"Extended Away":["Uzatılmış"],"Click to remove %1$s as a contact":["%1$s kiÅŸiyi bir kiÅŸi olarak kaldırmak için tıklayın"],"Click to accept the contact request from %1$s":["%1$s adresinden kiÅŸi isteÄŸini kabul etmek için tıklayın"],"Click to decline the contact request from %1$s":["%1$s içinden kiÅŸi isteÄŸini reddetmek için tıklayın"],"Click to chat with %1$s (XMPP address: %2$s)":["%1$s ile sohbet etmek için tıklayın (XMPP adresi: %2$s)"],"Are you sure you want to decline this contact request?":["Bu kiÅŸi isteÄŸini reddetmek istediÄŸinden emin misin?"],"Contacts":["Ä°letiÅŸim"],"Add a contact":["Bir kiÅŸi ekle"],"Re-sync your contacts":["KiÅŸilerinizi yeniden senkronize edin"]}}}')}}]); //# sourceMappingURL=tr-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/uk-LC_MESSAGES-converse-po.js b/src/conversejs/locales/uk-LC_MESSAGES-converse-po.js index 4ac4c52ce2656a8693432e5c241a45df040920a4..abe81de68a6e684d1fcf51606a5c4729869fd0fa 100644 --- a/src/conversejs/locales/uk-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/uk-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[173],{451:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"uk"},"Create your account":["Створити Ñвій обліковий запиÑ"],"Please enter the XMPP provider to register with:":["Введіть поÑтачальника XMPP, щоб зареєÑтруватиÑÑ:"],"Already have a chat account?":["У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліківка беÑіди?"],"Log in here":["Увійти тут"],"Account Registration:":["РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу:"],"Register":["РеєÑтраціÑ"],"Choose a different provider":["Виберіть іншого провайдера"],"Hold tight, we\'re fetching the registration form…":["Хвильку, ми отримуємо реєÑтраційну форму…"],"Cancel":["Відміна"],"The connection has dropped, attempting to reconnect.":["З\'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾, Ñпроба відновити зв\'Ñзок."],"An error occurred while connecting to the chat server.":["Під Ñ‡Ð°Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ Ñервера чату ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."],"Your XMPP address and/or password is incorrect. Please try again.":["Ваша XMPP-адреÑа та/або пароль неправильні. Будь лаÑка Ñпробуйте ще раз."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Ðа жаль, не вдалоÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ Ð´Ð¾ хоÑта XMPP з доменом: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Сервер XMPP не пропонує підтримуваний механізм автентифікації"],"Sorry, could not determine upload URL.":["Ðа жаль, не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ URL-адреÑу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ."],"Sorry, could not determine file upload URL.":["Ðа жаль, не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ URL-адреÑу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ðа жаль, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл. Відповідь вашого Ñервера: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Ðа жаль, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл."],"Sorry, looks like file upload is not supported by your server.":["Ðа жаль, Ñхоже, що Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² не підтримуєтьÑÑ Ð²Ð°ÑˆÐ¸Ð¼ Ñервером."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Розмір вашого файлу, %1$s, перевищує щонайбільш дозволений вашим Ñервером, Ñкий Ñтановить %2$s."],"Smileys and emotions":["УÑмішки та почуттÑ"],"People":["Люди"],"Activities":["ДіÑльноÑÑ‚Ñ–"],"Travel":["Подорожі"],"Objects":["Речі"],"Animals and nature":["Тварини та природа"],"Food and drink":["Їжа та напої"],"Symbols":["Знаки"],"Flags":["Прапори"],"Stickers":["Ðаліпки"],"This groupchat is not anonymous":["Ð¦Ñ Ð±ÐµÑіда не таємна"],"This groupchat now shows unavailable members":["Тепер беÑіда показує недоÑтупних членів"],"This groupchat does not show unavailable members":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не показує недоÑтупних членів"],"The groupchat configuration has changed":["Змінено конфігурацію кімнати"],"Groupchat logging is now enabled":["ЧаÑÐ¾Ð¿Ð¸Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸ тепер увімкнено"],"Groupchat logging is now disabled":["ЧаÑÐ¾Ð¿Ð¸Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸ тепер вимкнено"],"This groupchat is now no longer anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер не таємна"],"This groupchat is now semi-anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер напівтаємна"],"This groupchat is now fully-anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер повніÑÑ‚ÑŽ таємна"],"A new groupchat has been created":["Створено нову кімнату"],"Your nickname has been automatically set to %1$s":["Ваше прізвиÑько було Ñамочинно змінене на: %1$s"],"Your nickname has been changed to %1$s":["Ваше прізвиÑько було змінене на: %1$s"],"You have been banned from this groupchat":["Вам заблокували доÑтуп до цієї кімнати"],"You have been kicked from this groupchat":["Ð’Ð°Ñ Ð²Ð¸ÐºÐ¸Ð½ÑƒÐ»Ð¸ з цієї кімнати"],"You have been removed from this groupchat because of an affiliation change":["Ð’Ð°Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾ з кімнати у зв\'Ñзку зі змінами влаÑноÑÑ‚Ñ– кімнати"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ð’Ð°Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾ з цієї кімнати, оÑкільки вона тепер вимагає членÑтва, а Ви ним не Ñ” Ñ—Ñ— членом"],"Your message was not delivered because you weren\'t allowed to send it.":["Ваше Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ було доÑтавлено, оÑкільки вам не дозволили його надіÑлати."],"Your message was not delivered because you\'re not present in the groupchat.":["Ваше Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ було доÑтавлено, оÑкільки ви не приÑутні в гуртовій беÑіді."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Remote server not found":[""],"Error":["Помилка"],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Мої контакти"],"Pending contacts":["Контакти в очікуванні"],"Contact requests":["Запити контакту"],"Ungrouped":["Ðегруповані"],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["Клацніть, щоб приховати ці контакти"],"Click to toggle the bookmarks list":["ÐатиÑніть, щоб переключити ÑпиÑок закладок"],"Bookmarks":["Закладки"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["Зберегти"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ви впевнені, що хочете видалити закладку \\"%1$s\\"?"],"Close":["Закрити"],"OK":["ОК"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Видозміни повідомленнÑ"],"Retry":[""],"Uploading file:":["Завантажуваний файл:"],"This message has been edited":["Це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ відредаговано"],"No message history available.":["Ðемає дієпиÑу повідомлень."],"Search results":["ПідÑумки пошуку"],"Search":["Пошук"],"Insert emojis":[""],"Send the message":["ÐадіÑлати повідомленнÑ"],"Start a call":["Почати виклик"],"Message characters remaining":[""],"Choose a file to send":[""],"The User\'s Profile Image":["Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача"],"Trusted":["Ðадійний"],"Untrusted":["Ðенадійний"],"OMEMO Fingerprints":["Відбитки OMEMO"],"No OMEMO-enabled devices found":[""],"Remove as contact":["Видалити з контактів"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["ПрізвиÑько"],"Refresh":["Оновити"],"Role":[""],"URL":[""],"Remove messages":["Видалити повідомленнÑ"],"Write in the third person":["ПиÑати від третьої оÑоби"],"Show this menu":["Показати це меню"],"Message":["ПовідомленнÑ"],"Optional hint":[""],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to remove this contact?":["Ви впевнені, що хочете видалити цей контакт?"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Ð”Ð»Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð»Ñ–Ð´Ð½Ð¾ÑÑ‚Ñ– ми кешуємо Ваші дані в цьому переглÑдачі. Зніміть цей прапорець, Ñкщо це загальнодоÑтупний комп\'ютер або Ñкщо Ви хочете, щоб Ваші дані були видалені під Ñ‡Ð°Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ. Важливо, щоб ви Ñвно вийшли з ÑиÑтеми, інакше не вÑÑ– кешовані дані можуть бути видалені. Зверніть увагу, що при викориÑтанні ненадійного приÑтрою ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ OMEMO ÐЕ доÑтупне."],"This is a trusted device":["Це надійний приÑтрій"],"Create an account":["Створити обліковий запиÑ"],"Don\'t have a chat account?":[""],"Log in":["Увійти"],"Disconnected":[""],"Click here to log in anonymously":["ÐатиÑніть тут, щоб увійти таємно"],"user@domain":[""],"Please enter a valid XMPP address":[""],"Toggle chat":["Включити чат"],"Click to restore this chat":["Клацніть, щоб відновити цей чат"],"Minimized":["Мінімізовано"],"This field is required":["Це поле обов\'Ñзкове"],"Join":["ПриєднатиÑÑ"],"Enter a new Groupchat":["Увійти в нову кімнату"],"name@conference.example.org":[""],"Invite":["ЗапроÑÑ–Ñ‚ÑŒ"],"user@example.org":[""],"Optional reason for the invitation":[""],"Description:":["ОпиÑ:"],"Features:":["ОÑобливоÑÑ‚Ñ–:"],"Requires authentication":["Вимагає автентикації"],"Hidden":["Прихована"],"Requires an invitation":["Вимагає запрошеннÑ"],"Moderated":["Модерована"],"Non-anonymous":["Ðе-анонімні"],"Public":["Публічна"],"Semi-anonymous":["Ðапів-анонімна"],"Unmoderated":["Ðемодерована"],"conference.example.org":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Тема"],"Topic author":["Творець теми"],"Groupchat address (JID)":["ÐдреÑа кімнати (JID)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["ОпиÑ"],"Features":["ОÑобливоÑÑ‚Ñ–"],"This groupchat is not publicly searchable":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»ÑŽÐ´Ð½Ð¾Ð³Ð¾ пошуку"],"This groupchat is restricted to members only":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тільки Ð´Ð»Ñ ÑƒÑ‡Ð°Ñників"],"Members only":["Тільки Ð´Ð»Ñ ÑƒÑ‡Ð°Ñників"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Ім\'Ñ"],"This groupchat does not require a password upon entry":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не вимагає пароль при вході"],"No password required":["Пароль не потрібен"],"All other groupchat participants can see your XMPP address":[""],"Participants entering this groupchat can write right away":[""],"Online users":["ПриÑутні"],"Anyone can join this groupchat":["Будь-хто може приєднатиÑÑ Ð´Ð¾ цієї кімнати"],"This groupchat requires a password before entry":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° потребує пароль перед входом"],"Password protected":["Пароль захищено"],"Persistent":["Стійкий"],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° доÑтупна Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»ÑŽÐ´Ð½Ð¾Ð³Ð¾ пошуку"],"You\'re not allowed to send messages in this room":["Вам не дозволÑєтьÑÑ Ð½Ð°Ð´Ñилати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² цій кімнаті"],"The conversation has moved. Click below to enter.":["БеÑіду переміщено. ÐатиÑніть нижче, щоб увійти."],"This groupchat no longer exists":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° більше не Ñ–Ñнує"],"Password: ":["Пароль:"],"Submit":["ÐадіÑлати"],"Owner":[""],"Admin":[""],"Member":[""],"Visitor":[""],"Participants":[""],"%1$s and %2$s":[""],"Change user\'s affiliation to admin":["Призначити кориÑтувача адмініÑтратором"],"Ban user by changing their affiliation to outcast":[""],"Write in 3rd person":["ПиÑати в 3-й оÑобі"],"Grant membership to a user":["Ðадати членÑтво кориÑтувачу"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Забрати можливіÑÑ‚ÑŒ Ñлати повідомленнÑ"],"Change your nickname":["Змінити Ваше прізвиÑько"],"Grant moderator role to user":["Ðадати права модератора"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":["Дозволити безголоÑому кориÑтувачу Ñлати повідомленнÑ"],"Optional reason":[""],"Configure":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Error: invalid number of arguments":[""],"Announcements":[""],"Notification from %1$s":["Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s"],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":["тепер поза мережею"],"has gone away":["пішов геть"],"is busy":["зайнÑтий"],"has come online":["зʼÑвивÑÑ Ð² мережі"],"wants to be your contact":["хоче бути у вашому ÑпиÑку контактів"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Вийти"],"Click to change your chat status":["Клацніть, щоб змінити ÑÑ‚Ð°Ñ‚ÑƒÑ Ð² чаті"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["Далеко"],"Busy":["ЗайнÑтий"],"Custom status":["ВлаÑний ÑтатуÑ"],"Offline":["Поза мережею"],"Online":["Ðа зв\'Ñзку"],"I am %1$s":["Я %1$s"],"online":["на зв\'Ñзку"],"busy":["зайнÑтий"],"away for long":["давно відÑутній"],"away":["відÑутній"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´ÑилаютьÑÑ Ð² проÑтому текÑÑ‚Ñ–"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" напр. conversejs.org"],"Fetch registration form":["Отримати форму реєÑтрації"],"Tip: A list of public XMPP providers is available":["Порада: доÑтупний перелік публічних XMPP-провайдерів"],"here":["тут"],"Sorry, we\'re unable to connect to your chosen provider.":["Ðа жаль, ми не можемо підключитиÑÑ Ð´Ð¾ обраного вами провайдера."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Вибачте, вказаний провайдер не підтримує реєÑтрації онлайн. Спробуйте іншого провайдера."],"Now logging you in":["Входимо"],"Registered successfully":["УÑпішно зареєÑтровано"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Провайдер відхилив вашу Ñпробу реєÑтрації. Будь лаÑка, перевірте введені Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð° коректніÑÑ‚ÑŒ."],"Open Groupchats":[""],"Add":["Додати"],"This contact is busy":["Цей контакт зайнÑтий"],"This contact is online":["Цей контакт на зв\'Ñзку"],"This contact is offline":["Цей контакт поза мережею"],"This contact is unavailable":["Цей контакт недоÑтупний"],"This contact is away for an extended period":["Цей контакт відÑутній тривалий чаÑ"],"This contact is away":["Цей контакт відÑутній"],"Contact name":["Ðазва контакту"],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"Filter":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Are you sure you want to decline this contact request?":["Ви впевнені, що хочете відхилити цей запит контакту?"],"Contacts":["Контакти"],"Add a contact":["Додати контакт"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{540:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;","lang":"uk"},"Create your account":["Створити Ñвій обліковий запиÑ"],"Please enter the XMPP provider to register with:":["Введіть поÑтачальника XMPP, щоб зареєÑтруватиÑÑ:"],"Already have a chat account?":["У Ð²Ð°Ñ Ð²Ð¶Ðµ Ñ” обліківка беÑіди?"],"Log in here":["Увійти тут"],"Account Registration:":["РеєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу:"],"Register":["РеєÑтраціÑ"],"Choose a different provider":["Виберіть іншого провайдера"],"Hold tight, we\'re fetching the registration form…":["Хвильку, ми отримуємо реєÑтраційну форму…"],"Cancel":["Відміна"],"The connection has dropped, attempting to reconnect.":["З\'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾, Ñпроба відновити зв\'Ñзок."],"An error occurred while connecting to the chat server.":["Під Ñ‡Ð°Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ Ñервера чату ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."],"Your XMPP address and/or password is incorrect. Please try again.":["Ваша XMPP-адреÑа та/або пароль неправильні. Будь лаÑка Ñпробуйте ще раз."],"Sorry, we could not connect to the XMPP host with domain: %1$s":["Ðа жаль, не вдалоÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ Ð´Ð¾ хоÑта XMPP з доменом: %1$s"],"The XMPP server did not offer a supported authentication mechanism":["Сервер XMPP не пропонує підтримуваний механізм автентифікації"],"Undecryptable OMEMO message":["Ðешифроване Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ OMEMO"],"Sorry, could not determine upload URL.":["Ðа жаль, не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ URL-адреÑу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ."],"Sorry, could not determine file upload URL.":["Ðа жаль, не вдалоÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ URL-адреÑу Ð´Ð»Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Ðа жаль, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл. Відповідь вашого Ñервера: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Ðа жаль, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ файл."],"You\'re not allowed to retract your message.":["Вам не дозволено відкликати Ñвоє повідомленнÑ."],"Sorry, an error occurred while trying to retract your message.":["Ðа жаль, ÑталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ñпроби відкликати ваше повідомленнÑ."],"Sorry, looks like file upload is not supported by your server.":["Ðа жаль, Ñхоже, що Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² не підтримуєтьÑÑ Ð²Ð°ÑˆÐ¸Ð¼ Ñервером."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["Розмір вашого файлу, %1$s, перевищує щонайбільш дозволений вашим Ñервером, Ñкий Ñтановить %2$s."],"Smileys and emotions":["УÑмішки та почуттÑ"],"People":["Люди"],"Activities":["ДіÑльноÑÑ‚Ñ–"],"Travel":["Подорожі"],"Objects":["Речі"],"Animals and nature":["Тварини та природа"],"Food and drink":["Їжа та напої"],"Symbols":["Знаки"],"Flags":["Прапори"],"Stickers":["Ðаліпки"],"This groupchat is not anonymous":["Ð¦Ñ Ð±ÐµÑіда не таємна"],"This groupchat now shows unavailable members":["Тепер беÑіда показує недоÑтупних членів"],"This groupchat does not show unavailable members":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не показує недоÑтупних членів"],"The groupchat configuration has changed":["Змінено конфігурацію кімнати"],"Groupchat logging is now enabled":["ЧаÑÐ¾Ð¿Ð¸Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸ тепер увімкнено"],"Groupchat logging is now disabled":["ЧаÑÐ¾Ð¿Ð¸Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð¸ тепер вимкнено"],"This groupchat is now no longer anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер не таємна"],"This groupchat is now semi-anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер напівтаємна"],"This groupchat is now fully-anonymous":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тепер повніÑÑ‚ÑŽ таємна"],"A new groupchat has been created":["Створено нову кімнату"],"Your nickname has been automatically set to %1$s":["Ваше прізвиÑько було Ñамочинно змінене на: %1$s"],"Your nickname has been changed to %1$s":["Ваше прізвиÑько було змінене на: %1$s"],"You have been banned from this groupchat":["Вам заблокували доÑтуп до цієї кімнати"],"You have been kicked from this groupchat":["Ð’Ð°Ñ Ð²Ð¸ÐºÐ¸Ð½ÑƒÐ»Ð¸ з цієї кімнати"],"You have been removed from this groupchat because of an affiliation change":["Ð’Ð°Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾ з кімнати у зв\'Ñзку зі змінами влаÑноÑÑ‚Ñ– кімнати"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Ð’Ð°Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾ з цієї кімнати, оÑкільки вона тепер вимагає членÑтва, а Ви ним не Ñ” Ñ—Ñ— членом"],"Your message was not delivered because you weren\'t allowed to send it.":["Ваше Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ було доÑтавлено, оÑкільки вам не дозволили його надіÑлати."],"Your message was not delivered because you\'re not present in the groupchat.":["Ваше Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ðµ було доÑтавлено, оÑкільки ви не приÑутні в гуртовій беÑіді."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Can\'t register your nickname in this groupchat, invalid data form supplied.":[""],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Remote server not found":[""],"Error":["Помилка"],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":[""],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"My contacts":["Мої контакти"],"Pending contacts":["Контакти в очікуванні"],"Contact requests":["Запити контакту"],"Ungrouped":["Ðегруповані"],"Sorry, there was an error while trying to add %1$s as a contact.":[""],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["Клацніть, щоб приховати ці контакти"],"Click to toggle the bookmarks list":["ÐатиÑніть, щоб переключити ÑпиÑок закладок"],"Bookmarks":["Закладки"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":[""],"What should your nickname for this groupchat be?":[""],"Save":["Зберегти"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Ви впевнені, що хочете видалити закладку \\"%1$s\\"?"],"Close":["Закрити"],"OK":["ОК"],"Image: ":[""],"Download audio file \\"%1$s\\"":[""],"Download image file \\"%1$s\\"":[""],"Download file \\"%1$s\\"":[""],"Edit":[""],"Retract":[""],"Message versions":["Видозміни повідомленнÑ"],"Retry":[""],"Uploading file:":["Завантажуваний файл:"],"This message has been edited":["Це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð¾ відредаговано"],"No message history available.":["Ðемає дієпиÑу повідомлень."],"Search results":["ПідÑумки пошуку"],"Search":["Пошук"],"Insert emojis":[""],"Send the message":["ÐадіÑлати повідомленнÑ"],"Start a call":["Почати виклик"],"Message characters remaining":[""],"Choose a file to send":[""],"The User\'s Profile Image":["Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача"],"Trusted":["Ðадійний"],"Untrusted":["Ðенадійний"],"OMEMO Fingerprints":["Відбитки OMEMO"],"No OMEMO-enabled devices found":[""],"Remove as contact":["Видалити з контактів"],"XMPP Address":[""],"Email":[""],"Full Name":[""],"Nickname":["ПрізвиÑько"],"Refresh":["Оновити"],"Role":[""],"URL":[""],"Remove messages":["Видалити повідомленнÑ"],"Write in the third person":["ПиÑати від третьої оÑоби"],"Show this menu":["Показати це меню"],"Message":["ПовідомленнÑ"],"Optional hint":[""],"Details":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to remove this contact?":["Ви впевнені, що хочете видалити цей контакт?"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Ð”Ð»Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð»Ñ–Ð´Ð½Ð¾ÑÑ‚Ñ– ми кешуємо Ваші дані в цьому переглÑдачі. Зніміть цей прапорець, Ñкщо це загальнодоÑтупний комп\'ютер або Ñкщо Ви хочете, щоб Ваші дані були видалені під Ñ‡Ð°Ñ Ð²Ð¸Ñ…Ð¾Ð´Ñƒ. Важливо, щоб ви Ñвно вийшли з ÑиÑтеми, інакше не вÑÑ– кешовані дані можуть бути видалені. Зверніть увагу, що при викориÑтанні ненадійного приÑтрою ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ OMEMO ÐЕ доÑтупне."],"This is a trusted device":["Це надійний приÑтрій"],"Create an account":["Створити обліковий запиÑ"],"Don\'t have a chat account?":[""],"Log in":["Увійти"],"Disconnected":[""],"Click here to log in anonymously":["ÐатиÑніть тут, щоб увійти таємно"],"user@domain":[""],"Please enter a valid XMPP address":[""],"Toggle chat":["Включити чат"],"Click to restore this chat":["Клацніть, щоб відновити цей чат"],"Minimized":["Мінімізовано"],"Owner":[""],"Admin":[""],"Member":[""],"Visitor":[""],"Participants":[""],"This field is required":["Це поле обов\'Ñзкове"],"Join":["ПриєднатиÑÑ"],"Enter a new Groupchat":["Увійти в нову кімнату"],"name@conference.example.org":[""],"Invite":["ЗапроÑÑ–Ñ‚ÑŒ"],"user@example.org":[""],"Optional reason for the invitation":[""],"Description:":["ОпиÑ:"],"Features:":["ОÑобливоÑÑ‚Ñ–:"],"Requires authentication":["Вимагає автентикації"],"Hidden":["Прихована"],"Requires an invitation":["Вимагає запрошеннÑ"],"Moderated":["Модерована"],"Non-anonymous":["Ðе-анонімні"],"Public":["Публічна"],"Semi-anonymous":["Ðапів-анонімна"],"Unmoderated":["Ðемодерована"],"conference.example.org":[""],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"New affiliation":[""],"Affiliation":[""],"No users with that affiliation found.":[""],"Type here to filter the search results":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Affiliation changed":[""],"Topic":["Тема"],"Topic author":["Творець теми"],"Groupchat address (JID)":["ÐдреÑа кімнати (JID)"],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["ОпиÑ"],"Features":["ОÑобливоÑÑ‚Ñ–"],"This groupchat is not publicly searchable":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»ÑŽÐ´Ð½Ð¾Ð³Ð¾ пошуку"],"This groupchat is restricted to members only":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° тільки Ð´Ð»Ñ ÑƒÑ‡Ð°Ñників"],"Members only":["Тільки Ð´Ð»Ñ ÑƒÑ‡Ð°Ñників"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Ім\'Ñ"],"This groupchat does not require a password upon entry":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° не вимагає пароль при вході"],"No password required":["Пароль не потрібен"],"All other groupchat participants can see your XMPP address":[""],"Participants entering this groupchat can write right away":[""],"Online users":["ПриÑутні"],"Anyone can join this groupchat":["Будь-хто може приєднатиÑÑ Ð´Ð¾ цієї кімнати"],"This groupchat requires a password before entry":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° потребує пароль перед входом"],"Password protected":["Пароль захищено"],"Persistent":["Стійкий"],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° доÑтупна Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»ÑŽÐ´Ð½Ð¾Ð³Ð¾ пошуку"],"You\'re not allowed to send messages in this room":["Вам не дозволÑєтьÑÑ Ð½Ð°Ð´Ñилати Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð² цій кімнаті"],"The conversation has moved. Click below to enter.":["БеÑіду переміщено. ÐатиÑніть нижче, щоб увійти."],"This groupchat no longer exists":["Ð¦Ñ ÐºÑ–Ð¼Ð½Ð°Ñ‚Ð° більше не Ñ–Ñнує"],"Password: ":["Пароль:"],"Submit":["ÐадіÑлати"],"%1$s and %2$s":[""],"Change user\'s affiliation to admin":["Призначити кориÑтувача адмініÑтратором"],"Ban user by changing their affiliation to outcast":[""],"Write in 3rd person":["ПиÑати в 3-й оÑобі"],"Grant membership to a user":["Ðадати членÑтво кориÑтувачу"],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":["Забрати можливіÑÑ‚ÑŒ Ñлати повідомленнÑ"],"Change your nickname":["Змінити Ваше прізвиÑько"],"Grant moderator role to user":["Ðадати права модератора"],"Revoke the user\'s current affiliation":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":["Дозволити безголоÑому кориÑтувачу Ñлати повідомленнÑ"],"Optional reason":[""],"Configure":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Leave":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Check your browser\'s developer console for details.":[""],"name@example.org":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"replacement@example.org":[""],"Error: invalid number of arguments":[""],"Announcements":[""],"Notification from %1$s":["Ð¡Ð¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s"],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":["тепер поза мережею"],"has gone away":["пішов геть"],"is busy":["зайнÑтий"],"has come online":["зʼÑвивÑÑ Ð² мережі"],"wants to be your contact":["хоче бути у вашому ÑпиÑку контактів"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["Вийти"],"Click to change your chat status":["Клацніть, щоб змінити ÑÑ‚Ð°Ñ‚ÑƒÑ Ð² чаті"],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":["Далеко"],"Busy":["ЗайнÑтий"],"Custom status":["ВлаÑний ÑтатуÑ"],"Offline":["Поза мережею"],"Online":["Ðа зв\'Ñзку"],"I am %1$s":["Я %1$s"],"online":["на зв\'Ñзку"],"busy":["зайнÑтий"],"away for long":["давно відÑутній"],"away":["відÑутній"],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð´ÑилаютьÑÑ Ð² проÑтому текÑÑ‚Ñ–"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[" напр. conversejs.org"],"Fetch registration form":["Отримати форму реєÑтрації"],"Tip: A list of public XMPP providers is available":["Порада: доÑтупний перелік публічних XMPP-провайдерів"],"here":["тут"],"Sorry, we\'re unable to connect to your chosen provider.":["Ðа жаль, ми не можемо підключитиÑÑ Ð´Ð¾ обраного вами провайдера."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["Вибачте, вказаний провайдер не підтримує реєÑтрації онлайн. Спробуйте іншого провайдера."],"Now logging you in":["Входимо"],"Registered successfully":["УÑпішно зареєÑтровано"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Провайдер відхилив вашу Ñпробу реєÑтрації. Будь лаÑка, перевірте введені Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð° коректніÑÑ‚ÑŒ."],"Open Groupchats":[""],"Add":["Додати"],"This contact is busy":["Цей контакт зайнÑтий"],"This contact is online":["Цей контакт на зв\'Ñзку"],"This contact is offline":["Цей контакт поза мережею"],"This contact is unavailable":["Цей контакт недоÑтупний"],"This contact is away for an extended period":["Цей контакт відÑутній тривалий чаÑ"],"This contact is away":["Цей контакт відÑутній"],"Contact name":["Ðазва контакту"],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"Filter":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Are you sure you want to decline this contact request?":["Ви впевнені, що хочете відхилити цей запит контакту?"],"Contacts":["Контакти"],"Add a contact":["Додати контакт"]}}}')}}]); //# sourceMappingURL=uk-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/vi-LC_MESSAGES-converse-po.js b/src/conversejs/locales/vi-LC_MESSAGES-converse-po.js index 1135a20da71376d43cd69057757ac313153c98b1..581dbc7ab0ed96718f96cb574f2f12e5159cbc35 100644 --- a/src/conversejs/locales/vi-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/vi-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[174],{452:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"vi"},"Create your account":["Tạo tà i khoản của bạn"],"Already have a chat account?":["Bạn đã có tà i khoản trò chuyện?"],"Log in here":["Äăng nháºp ở đây"],"Account Registration:":["Äăng kà Tà i khoản:"],"Register":["Äăng kÃ"],"Choose a different provider":["Chá»n nhà cung cấp khác"],"Cancel":["Huá»·"],"An error occurred while connecting to the chat server.":["Äã xảy ra lá»—i khi kết nối đến máy chủ trò chuyện."],"Your XMPP address and/or password is incorrect. Please try again.":["Äịa chỉ XMPP và /hoặc máºt khẩu không đúng. Xin thá» lại."],"The XMPP server did not offer a supported authentication mechanism":["Máy chủ XMPP không cung cấp phÆ°Æ¡ng thức xác thá»±c được há»— trợ"],"Sorry, could not determine upload URL.":["Tháºt tiếc, không thể xác định URL tải lên."],"Sorry, could not determine file upload URL.":["Tháºt tiếc, không thể xác định URL tải lên táºp tin."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Tháºt tiếc, không thể tải lên thà nh công táºp tin của bạn. Phản hồi từ máy chủ của bạn: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Tháºt tiếc, không thể tải lên thà nh công táºp tin của bạn."],"Sorry, looks like file upload is not supported by your server.":["Tháºt tiếc, hình nhÆ° máy chủ của bạn không há»— trợ tải lên táºp tin."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["KÃch cỡ táºp tin của bạn, %1$s, vượt quá giá»›i hạn cho phép của máy chủ của bạn, %2$s."],"Smileys and emotions":["Mặt cÆ°á»i và biểu tượng cảm xúc"],"People":["Con ngÆ°á»i"],"Activities":["Hoạt Ä‘á»™ng"],"Travel":["Du lịch"],"Animals and nature":["Äá»™ng váºt và thiên nhiên"],"Food and drink":["Äồ ăn và thức uống"],"Symbols":["Biểu tượng"],"Flags":["Cá»"],"Stickers":["Nhãn dán"],"This groupchat is not anonymous":["Nhóm trò chuyện nà y không ẩn danh"],"This groupchat now shows unavailable members":["Nhóm trò chuyện nà y từ giá» sẽ hiện thà nh viên không có mặt"],"This groupchat does not show unavailable members":["Nhóm trò chuyện nà y không hiện thà nh viên không sẵn có"],"The groupchat configuration has changed":["Cà i đặt của nhóm trò chuyện đã thay đổi"],"This groupchat is now no longer anonymous":["Nhóm trò chuyện nà y không còn ẩn danh nữa"],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":["Äã tạo nhóm trò chuyện má»›i"],"Your nickname has been changed to %1$s":["Tên ngÆ°á»i dùng của bạn đã được đổi thà nh %1$s"],"You have been banned from this groupchat":["Bạn đã bị chặn khá»i nhóm trò chuyện nà y"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":["Bạn đã bị đá khá»i nhóm trò chuyện nà y"],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Bạn đã bị xoá khá»i nhóm trò chuyện nà y vì nhóm đã đổi sang chế Ä‘á»™ chỉ dà nh cho thà nh viên và bạn không phải thà nh viên"],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your message was not delivered because you weren\'t allowed to send it.":["Không thể gá»i tin nhắn vì bạn không được phép gá»i."],"You\'re not allowed to register yourself in this groupchat.":["Bạn không được phép tá»± đăng kà và o nhóm trò chuyện nà y."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Bạn không được phép tham gia nhóm trò chuyện nà y vì nhóm chỉ dà nh cho thà nh viên."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Topic set by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":["%1$s đã bị cấm"],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":["%1$s đã bị đá khá»i nhóm bởi %2$s"],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":["%1$s đã bị xoá vì không phải là thà nh viên"],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":["%1$s không còn là chủ nhóm trò chuyện nà y nữa"],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":["%1$s không còn là thà nh viên nhóm trò chuyện nà y nữa"],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":["%1$s từ giá» là %2$s của nhóm trò chuyện nà y"],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":["Sai máºt khẩu"],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":["Bạn không được phép tạo nhóm trò chuyện má»›i."],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":["Nhóm trò chuyện nà y không (hoặc chÆ°a) tồn tại."],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":["Không tìm thấy máy chủ từ xa"],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":["%1$s đã má»i bạn tham gia nhóm trò chuyện: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Lá»—i"],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":["Lá»—i Hết thá»i gian chá»"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Pending contacts":[""],"Ungrouped":["ChÆ°a phân nhóm"],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":["Tháºt tiếc, đã xảy ra lá»—i khi thêm %1$s là m liên lạc."],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["Nhấn để ẩn các liên lạc nà y"],"Unbookmark this groupchat":["BỠđánh dấu nhóm trò chuyện nà y"],"Click to open this groupchat":["Nhấn để mở nhóm trò chuyện nà y"],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":["Äánh dấu nhóm trò chuyện nà y"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["Tên đánh dấu:"],"What should your nickname for this groupchat be?":[""],"Save":["LÆ°u"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Bạn có chắc muốn xoá đánh dấu \\"%1$s\\"?"],"Unbookmark":["BỠđánh dấu"],"Bookmark":["Äánh dấu"],"Close":["Äóng"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Tải táºp tin âm thanh \\"%1$s\\""],"Download file \\"%1$s\\"":["Tải táºp tin \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Phiên bản tin nhắn"],"Retry":[""],"Uploading file:":["Äang tải lên táºp tin:"],"%1$s has removed this message":["%1$s đã xoá tin nhắn nà y"],"This message has been edited":["Tin nhắn đã được chỉnh sá»a"],"Show more":["Xem thêm"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":["Gá»i tin nhắn"],"Start a call":[""],"Message characters remaining":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Hình Äại Diện NgÆ°á»i Dùng"],"Trusted":["Tin cáºy"],"Untrusted":["Không tin cáºy"],"OMEMO Fingerprints":["Dấu OMEMO"],"No OMEMO-enabled devices found":[""],"Remove as contact":["Xoá liên hệ"],"XMPP Address":["Äịa chỉ XMPP"],"Email":["ThÆ° Ä‘iện tá»"],"Full Name":["Há» và Tên"],"Nickname":["Tên ngÆ°á»i dùng"],"Refresh":["Là m má»›i"],"Role":["Vai trò"],"URL":["URL"],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Äể tăng hiệu năng, bản cache dữ liệu sẽ lÆ°u trên trình duyệt."],"This is a trusted device":["Thiết bị tin cáºy"],"Password":["Máºt khẩu"],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This field is required":[""],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["Tên nhóm trò chuyện"],"Groupchat address":["Äịa chỉ nhóm trò chuyện"],"Groupchat id is invalid.":["ID nhóm trò chuyện không hợp lệ."],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":["Hiện thêm thông tin vá» nhóm trò chuyện"],"Query for Groupchats":[""],"Description:":["Mô tả:"],"Groupchat Address (JID):":["Äịa chỉ Nhóm trò chuyện (JID):"],"Participants:":["NgÆ°á»i tham gia:"],"Features:":[""],"Requires authentication":["Cần xác thá»±c"],"Hidden":["Äã ẩn"],"Requires an invitation":["Cần được má»i"],"Moderated":[""],"Non-anonymous":["Không ẩn danh"],"Open":[""],"Permanent":["VÄ©nh viá»…n"],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":["conference.example.org"],"No groupchats found":["Không tìm thấy nhóm trò chuyện"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":["Äã đổi vai trò"],"You\'re not allowed to make that change":["Bạn không được phép thá»±c hiện thay đổi nà y"],"Sorry, something went wrong while trying to set the role":["Tháºt tiếc, đã xảy ra lá»—i khi đặt vai trò"],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Mô tả"],"Features":["TÃnh năng"],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Chỉ dà nh cho thà nh viên"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Tên"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":["Không ẩn danh"],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Bạn không được phép gá»i tin nhắn trong phòng nà y"],"This groupchat no longer exists":["Nhóm trò chuyện nà y không còn tồn tại"],"Hide the groupchat topic":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"%1$s has entered the groupchat":["%1$s đã tham gia nhóm trò chuyện"],"%1$s has left the groupchat":["%1$s đã rá»i nhóm trò chuyện"],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":["%1$s đã bị tắt tiếng"],"%1$s and %2$s":["%1$s và %2$s"],"%1$s are typing":["%1$s Ä‘ang soạn"],"%1$s have stopped typing":["%1$s đã ngừng soạn"],"%1$s have gone away":["%1$s đã Ä‘i vắng"],"%1$s have entered the groupchat":["%1$s đã tham gia nhóm trò chuyện"],"%1$s have left the groupchat":["%1$s đã rá»i nhóm trò chuyện"],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":["Bạn sắp thu hồi tin nhắn nà y."],"You may optionally include a message, explaining the reason for the retraction.":["Bạn có thể kèm theo tin nhắn tuỳ chá»n để giải thÃch là do thu hồi."],"Message Retraction":["Thu hồi Tin nhắn"],"Optional reason":["Là do (tuỳ chá»n)"],"Sorry, you\'re not allowed to retract this message":["Tháºt tiếc, bạn không được phép thu hồi tin nhắn nà y"],"A timeout occurred while trying to retract the message":["Äã hết thá»i gian chá» khi Ä‘ang thu hồi tin nhắn"],"Sorry, you\'re not allowed to retract this message.":["Tháºt tiếc, bạn không được phép thu hồi tin nhắn nà y."],"Show more information about this groupchat":["Hiện thêm thông tin vá» nhóm trò chuyện"],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["Tin nhắn Ä‘ang được gá»i dÆ°á»›i dạng văn bản thô"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":["Gợi ý: Má»™t danh sách các nhà cung cấp XMPP công cá»™ng có sẵn"],"here":["tại đây"],"Sorry, we\'re unable to connect to your chosen provider.":["Tháºt tiếc, chúng tôi không thể kết nối đến nhà cung cấp đã chá»n."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":["Äang đăng nháºp đây"],"Registered successfully":["Äăng kà thà nh công"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Nhà cung cấp đã từ chối lần đăng kà của bạn. Hãy kiểm tra lại xem các giá trị bạn nháºp đã đúng chÆ°a."],"Leave this groupchat":["Rá»i nhóm trò chuyện"],"Click to toggle the list of open groupchats":["Nhấn để mở rá»™ng danh sách nhóm trò chuyện mở"],"Open Groupchats":["Nhóm trò chuyện Mở"],"Are you sure you want to leave the groupchat %1$s?":["Bạn có chắc muốn rá»i nhóm trò chuyện %1$s?"],"Add":["Thêm"],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":["Danh bạ"],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{541:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"vi"},"Create your account":["Tạo tà i khoản của bạn"],"Already have a chat account?":["Bạn đã có tà i khoản trò chuyện?"],"Log in here":["Äăng nháºp ở đây"],"Account Registration:":["Äăng kà Tà i khoản:"],"Register":["Äăng kÃ"],"Choose a different provider":["Chá»n nhà cung cấp khác"],"Cancel":["Huá»·"],"An error occurred while connecting to the chat server.":["Äã xảy ra lá»—i khi kết nối đến máy chủ trò chuyện."],"Your XMPP address and/or password is incorrect. Please try again.":["Äịa chỉ XMPP và /hoặc máºt khẩu không đúng. Xin thá» lại."],"The XMPP server did not offer a supported authentication mechanism":["Máy chủ XMPP không cung cấp phÆ°Æ¡ng thức xác thá»±c được há»— trợ"],"Sorry, could not determine upload URL.":["Tháºt tiếc, không thể xác định URL tải lên."],"Sorry, could not determine file upload URL.":["Tháºt tiếc, không thể xác định URL tải lên táºp tin."],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["Tháºt tiếc, không thể tải lên thà nh công táºp tin của bạn. Phản hồi từ máy chủ của bạn: \\"%1$s\\""],"Sorry, could not succesfully upload your file.":["Tháºt tiếc, không thể tải lên thà nh công táºp tin của bạn."],"Sorry, looks like file upload is not supported by your server.":["Tháºt tiếc, hình nhÆ° máy chủ của bạn không há»— trợ tải lên táºp tin."],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["KÃch cỡ táºp tin của bạn, %1$s, vượt quá giá»›i hạn cho phép của máy chủ của bạn, %2$s."],"Smileys and emotions":["Mặt cÆ°á»i và biểu tượng cảm xúc"],"People":["Con ngÆ°á»i"],"Activities":["Hoạt Ä‘á»™ng"],"Travel":["Du lịch"],"Animals and nature":["Äá»™ng váºt và thiên nhiên"],"Food and drink":["Äồ ăn và thức uống"],"Symbols":["Biểu tượng"],"Flags":["Cá»"],"Stickers":["Nhãn dán"],"This groupchat is not anonymous":["Nhóm trò chuyện nà y không ẩn danh"],"This groupchat now shows unavailable members":["Nhóm trò chuyện nà y từ giá» sẽ hiện thà nh viên không có mặt"],"This groupchat does not show unavailable members":["Nhóm trò chuyện nà y không hiện thà nh viên không sẵn có"],"The groupchat configuration has changed":["Cà i đặt của nhóm trò chuyện đã thay đổi"],"This groupchat is now no longer anonymous":["Nhóm trò chuyện nà y không còn ẩn danh nữa"],"This groupchat is now semi-anonymous":[""],"This groupchat is now fully-anonymous":[""],"A new groupchat has been created":["Äã tạo nhóm trò chuyện má»›i"],"Your nickname has been changed to %1$s":["Tên ngÆ°á»i dùng của bạn đã được đổi thà nh %1$s"],"You have been banned from this groupchat":["Bạn đã bị chặn khá»i nhóm trò chuyện nà y"],"You have exited this groupchat due to a technical problem":[""],"You have been kicked from this groupchat":["Bạn đã bị đá khá»i nhóm trò chuyện nà y"],"You have been removed from this groupchat because of an affiliation change":[""],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["Bạn đã bị xoá khá»i nhóm trò chuyện nà y vì nhóm đã đổi sang chế Ä‘á»™ chỉ dà nh cho thà nh viên và bạn không phải thà nh viên"],"You have been removed from this groupchat because the service hosting it is being shut down":[""],"Your message was not delivered because you weren\'t allowed to send it.":["Không thể gá»i tin nhắn vì bạn không được phép gá»i."],"You\'re not allowed to register yourself in this groupchat.":["Bạn không được phép tá»± đăng kà và o nhóm trò chuyện nà y."],"You\'re not allowed to register in this groupchat because it\'s members-only.":["Bạn không được phép tham gia nhóm trò chuyện nà y vì nhóm chỉ dà nh cho thà nh viên."],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":[""],"Topic set by %1$s":[""],"%1$s has been banned by %2$s":[""],"%1$s has been banned":["%1$s đã bị cấm"],"%1$s\'s nickname has changed":[""],"%1$s has been kicked out by %2$s":["%1$s đã bị đá khá»i nhóm bởi %2$s"],"%1$s has been kicked out":[""],"%1$s has been removed because of an affiliation change":[""],"%1$s has been removed for not being a member":["%1$s đã bị xoá vì không phải là thà nh viên"],"%1$s is no longer an admin of this groupchat":[""],"%1$s is no longer an owner of this groupchat":["%1$s không còn là chủ nhóm trò chuyện nà y nữa"],"%1$s is no longer banned from this groupchat":[""],"%1$s is no longer a member of this groupchat":["%1$s không còn là thà nh viên nhóm trò chuyện nà y nữa"],"%1$s is now a member of this groupchat":[""],"%1$s is now an %2$s of this groupchat":["%1$s từ giá» là %2$s của nhóm trò chuyện nà y"],"The nickname you chose is reserved or currently in use, please choose a different one.":[""],"Password incorrect":["Sai máºt khẩu"],"You are not on the member list of this groupchat.":[""],"You have been banned from this groupchat.":[""],"You are not allowed to create new groupchats.":["Bạn không được phép tạo nhóm trò chuyện má»›i."],"Your nickname doesn\'t conform to this groupchat\'s policies.":[""],"This groupchat does not (yet) exist.":["Nhóm trò chuyện nà y không (hoặc chÆ°a) tồn tại."],"This groupchat has reached its maximum number of participants.":[""],"Remote server not found":["Không tìm thấy máy chủ từ xa"],"The explanation given is: \\"%1$s\\".":[""],"%1$s has invited you to join a groupchat: %2$s":["%1$s đã má»i bạn tham gia nhóm trò chuyện: %2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":[""],"Error":["Lá»—i"],"Sorry, something went wrong while trying to save your bookmark.":[""],"Timeout Error":["Lá»—i Hết thá»i gian chá»"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":[""],"Pending contacts":[""],"Ungrouped":["ChÆ°a phân nhóm"],"New messages":[""],"Sorry, there was an error while trying to add %1$s as a contact.":["Tháºt tiếc, đã xảy ra lá»—i khi thêm %1$s là m liên lạc."],"This client does not allow presence subscriptions":[""],"Click to hide these contacts":["Nhấn để ẩn các liên lạc nà y"],"Unbookmark this groupchat":["BỠđánh dấu nhóm trò chuyện nà y"],"Click to open this groupchat":["Nhấn để mở nhóm trò chuyện nà y"],"Click to toggle the bookmarks list":[""],"Bookmarks":[""],"Bookmark this groupchat":["Äánh dấu nhóm trò chuyện nà y"],"Would you like this groupchat to be automatically joined upon startup?":[""],"The name for this bookmark:":["Tên đánh dấu:"],"What should your nickname for this groupchat be?":[""],"Save":["LÆ°u"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["Bạn có chắc muốn xoá đánh dấu \\"%1$s\\"?"],"Unbookmark":["BỠđánh dấu"],"Bookmark":["Äánh dấu"],"Close":["Äóng"],"OK":["OK"],"Image: ":[""],"Download audio file \\"%1$s\\"":["Tải táºp tin âm thanh \\"%1$s\\""],"Download file \\"%1$s\\"":["Tải táºp tin \\"%1$s\\""],"Edit":[""],"Retract":[""],"Message versions":["Phiên bản tin nhắn"],"Retry":[""],"Uploading file:":["Äang tải lên táºp tin:"],"%1$s has removed this message":["%1$s đã xoá tin nhắn nà y"],"This message has been edited":["Tin nhắn đã được chỉnh sá»a"],"Show more":["Xem thêm"],"No message history available.":[""],"Search results":[""],"Search":[""],"Insert emojis":[""],"Send the message":["Gá»i tin nhắn"],"Start a call":[""],"Message characters remaining":[""],"Choose a file to send":[""],"Click to write as a normal (non-spoiler) message":[""],"Click to write your message as a spoiler":[""],"The User\'s Profile Image":["Hình Äại Diện NgÆ°á»i Dùng"],"Trusted":["Tin cáºy"],"Untrusted":["Không tin cáºy"],"OMEMO Fingerprints":["Dấu OMEMO"],"No OMEMO-enabled devices found":[""],"Remove as contact":["Xoá liên hệ"],"XMPP Address":["Äịa chỉ XMPP"],"Email":["ThÆ° Ä‘iện tá»"],"Full Name":["Há» và Tên"],"Nickname":["Tên ngÆ°á»i dùng"],"Refresh":["Là m má»›i"],"Role":["Vai trò"],"URL":["URL"],"%1$s is typing":[""],"%1$s has stopped typing":[""],"%1$s has gone away":[""],"Remove messages":[""],"Close this chat":[""],"Write in the third person":[""],"Show this menu":[""],"Hidden message":[""],"Message":[""],"Optional hint":[""],"You have unread messages":[""],"Details":[""],"See more information about this person":[""],"Close and end this conversation":[""],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":[""],"Are you sure you want to retract this message?":[""],"Confirm":[""],"You have an unsent message which will be lost if you continue. Are you sure?":[""],"Are you sure you want to clear the messages from this conversation?":[""],"%1$s has gone offline":[""],"%1$s is busy":[""],"%1$s is online":[""],"Sorry, something went wrong while trying to refresh":[""],"Are you sure you want to remove this contact?":[""],"Sorry, there was an error while trying to remove %1$s as a contact.":[""],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["Äể tăng hiệu năng, bản cache dữ liệu sẽ lÆ°u trên trình duyệt."],"This is a trusted device":["Thiết bị tin cáºy"],"Password":["Máºt khẩu"],"Create an account":[""],"Don\'t have a chat account?":[""],"Log in":[""],"Disconnected":[""],"Click here to log in anonymously":[""],"Username":[""],"user@domain":[""],"Please enter a valid XMPP address":[""],"Chat Contacts":[""],"Toggle chat":[""],"Click to restore this chat":[""],"Minimized":[""],"Minimize":[""],"Minimize this chat":[""],"Minimize this groupchat":[""],"This user is a moderator.":[""],"This user can send messages in this groupchat.":[""],"This user can NOT send messages in this groupchat.":[""],"Owner":[""],"Admin":[""],"Member":[""],"Moderator":[""],"Visitor":[""],"Click to mention %1$s in your message.":[""],"Participants":[""],"This field is required":[""],"Join":[""],"Enter a new Groupchat":[""],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["Tên nhóm trò chuyện"],"Groupchat address":["Äịa chỉ nhóm trò chuyện"],"Groupchat id is invalid.":["ID nhóm trò chuyện không hợp lệ."],"Invite":[""],"Invite someone to this groupchat":[""],"user@example.org":[""],"Optional reason for the invitation":[""],"Show groupchats":[""],"Server address":[""],"Show more information on this groupchat":["Hiện thêm thông tin vá» nhóm trò chuyện"],"Query for Groupchats":[""],"Description:":["Mô tả:"],"Groupchat Address (JID):":["Äịa chỉ Nhóm trò chuyện (JID):"],"Participants:":["NgÆ°á»i tham gia:"],"Features:":[""],"Requires authentication":["Cần xác thá»±c"],"Hidden":["Äã ẩn"],"Requires an invitation":["Cần được má»i"],"Moderated":[""],"Non-anonymous":["Không ẩn danh"],"Open":[""],"Permanent":["VÄ©nh viá»…n"],"Public":[""],"Semi-anonymous":[""],"Temporary":[""],"Unmoderated":[""],"conference.example.org":["conference.example.org"],"No groupchats found":["Không tìm thấy nhóm trò chuyện"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":[""],"The default role, implies that you can read and write messages.":[""],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":[""],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":[""],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":[""],"To ban a user, you give them the affiliation of \\"outcast\\".":[""],"Change role":[""],"New Role":[""],"Reason":[""],"Change affiliation":[""],"New affiliation":[""],"Affiliation":[""],"Moderator Tools":[""],"No users with that affiliation found.":[""],"No users with that role found.":[""],"Type here to filter the search results":[""],"Show users":[""],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":[""],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":[""],"Sorry, something went wrong while trying to set the affiliation":[""],"Affiliation changed":[""],"Role changed":["Äã đổi vai trò"],"You\'re not allowed to make that change":["Bạn không được phép thá»±c hiện thay đổi nà y"],"Sorry, something went wrong while trying to set the role":["Tháºt tiếc, đã xảy ra lá»—i khi đặt vai trò"],"Topic":[""],"Topic author":[""],"Groupchat address (JID)":[""],"Message archiving":[""],"Messages are archived on the server":[""],"Description":["Mô tả"],"Features":["TÃnh năng"],"This groupchat is not publicly searchable":[""],"This groupchat is restricted to members only":[""],"Members only":["Chỉ dà nh cho thà nh viên"],"Participants entering this groupchat need to request permission to write":[""],"Name":["Tên"],"This groupchat does not require a password upon entry":[""],"No password required":[""],"Not anonymous":["Không ẩn danh"],"All other groupchat participants can see your XMPP address":[""],"Not moderated":[""],"Participants entering this groupchat can write right away":[""],"Online users":[""],"Anyone can join this groupchat":[""],"This groupchat requires a password before entry":[""],"Password protected":[""],"Persistent":[""],"This groupchat persists even if it\'s unoccupied":[""],"Only moderators can see your XMPP address":[""],"This groupchat will disappear once the last person leaves":[""],"This groupchat is publicly searchable":[""],"Groupchat info for %1$s":[""],"You\'re not allowed to send messages in this room":["Bạn không được phép gá»i tin nhắn trong phòng nà y"],"This groupchat no longer exists":["Nhóm trò chuyện nà y không còn tồn tại"],"Hide the groupchat topic":[""],"This groupchat is bookmarked":[""],"Enter groupchat":[""],"Choose a nickname to enter":[""],"Please choose your nickname":[""],"This groupchat requires a password":[""],"Password: ":[""],"Submit":[""],"%1$s has entered the groupchat":["%1$s đã tham gia nhóm trò chuyện"],"%1$s has left the groupchat":["%1$s đã rá»i nhóm trò chuyện"],"%1$s is now a moderator":[""],"%1$s is no longer a moderator":[""],"%1$s has been given a voice":[""],"%1$s has been muted":["%1$s đã bị tắt tiếng"],"%1$s and %2$s":["%1$s và %2$s"],"%1$s are typing":["%1$s Ä‘ang soạn"],"%1$s have stopped typing":["%1$s đã ngừng soạn"],"%1$s have gone away":["%1$s đã Ä‘i vắng"],"%1$s have entered the groupchat":["%1$s đã tham gia nhóm trò chuyện"],"%1$s have left the groupchat":["%1$s đã rá»i nhóm trò chuyện"],"%1$s are now moderators":[""],"%1$s are no longer moderators":[""],"Change user\'s affiliation to admin":[""],"Ban user by changing their affiliation to outcast":[""],"Clear the chat area":[""],"Close this groupchat":[""],"Change user role to participant":[""],"Remove this groupchat":[""],"Kick user from groupchat":[""],"Write in 3rd person":[""],"Grant membership to a user":[""],"Opens up the moderator tools GUI":[""],"Remove user\'s ability to post messages":[""],"Change your nickname":[""],"Grant moderator role to user":[""],"Grant ownership of this groupchat":[""],"Register your nickname":[""],"Revoke the user\'s current affiliation":[""],"Set groupchat subject":[""],"Set groupchat subject (alias for /subject)":[""],"Allow muted user to post messages":[""],"You are about to retract this message.":["Bạn sắp thu hồi tin nhắn nà y."],"You may optionally include a message, explaining the reason for the retraction.":["Bạn có thể kèm theo tin nhắn tuỳ chá»n để giải thÃch là do thu hồi."],"Message Retraction":["Thu hồi Tin nhắn"],"Optional reason":["Là do (tuỳ chá»n)"],"Sorry, you\'re not allowed to retract this message":["Tháºt tiếc, bạn không được phép thu hồi tin nhắn nà y"],"A timeout occurred while trying to retract the message":["Äã hết thá»i gian chá» khi Ä‘ang thu hồi tin nhắn"],"Sorry, you\'re not allowed to retract this message.":["Tháºt tiếc, bạn không được phép thu hồi tin nhắn nà y."],"Show more information about this groupchat":["Hiện thêm thông tin vá» nhóm trò chuyện"],"Configure":[""],"Configure this groupchat":[""],"Invite someone to join this groupchat":[""],"Show topic":[""],"Hide topic":[""],"Show the topic message in the heading":[""],"Hide the topic in the heading":[""],"Moderate":[""],"Moderate this groupchat":[""],"Destroy":[""],"Leave":[""],"Leave and close this groupchat":[""],"Are you sure you want to leave this groupchat?":[""],"Hide the list of participants":[""],"Forbidden: you do not have the necessary role in order to do that.":[""],"Forbidden: you do not have the necessary affiliation in order to do that.":[""],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":[""],"Error: couldn\'t find a groupchat participant based on your arguments":[""],"Error: found multiple groupchat participant based on your arguments":[""],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":[""],"Sorry, an error happened while running the command.":[""],"Check your browser\'s developer console for details.":[""],"Are you sure you want to destroy this groupchat?":[""],"Optional XMPP address for a new groupchat that replaces this one":[""],"Your nickname is \\"%1$s\\"":[""],"Error: invalid number of arguments":[""],"This action was done by %1$s.":[""],"The reason given is: \\"%1$s\\".":[""],"Groupchats":[""],"Add a new groupchat":[""],"Query for groupchats":[""],"Sorry, an error occurred while trying to submit the config form.":[""],"Close these announcements":[""],"Announcements":[""],"Notification from %1$s":[""],"%1$s says":[""],"Encrypted message received":[""],"has gone offline":[""],"has gone away":[""],"is busy":[""],"has come online":[""],"wants to be your contact":[""],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":[""],"About":[""],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":[""],"Click to change your chat status":[""],"Show details about this chat client":[""],"Your avatar image":[""],"Checkbox for selecting the following fingerprint":[""],"Device without a fingerprint":[""],"Checkbox for selecting the following device":[""],"Other OMEMO-enabled devices":[""],"Checkbox to select fingerprints of all other OMEMO devices":[""],"Remove checked devices and close":[""],"Select all":[""],"This device\'s OMEMO fingerprint":[""],"Generate new keys and fingerprint":[""],"Your Profile":[""],"XMPP Address (JID)":[""],"Save and close":[""],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":[""],"OMEMO":[""],"Profile":[""],"Sorry, an error happened while trying to save your profile data.":[""],"You can check your browser\'s developer console for any error output.":[""],"Away":[""],"Busy":[""],"Custom status":[""],"Offline":[""],"Online":[""],"Away for long":[""],"Change chat status":[""],"Personal status message":[""],"I am %1$s":[""],"Are you sure you want to log out?":[""],"online":[""],"busy":[""],"away for long":[""],"away":[""],"offline":[""],"Sorry, could not decrypt a received OMEMO message due to an error.":[""],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":[""],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":[""],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":[""],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":[""],"Messages are being sent in plaintext":["Tin nhắn Ä‘ang được gá»i dÆ°á»›i dạng văn bản thô"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":[""],"Unable to send an encrypted message due to an unexpected error.":[""],"Sorry, an error occurred while trying to remove the devices.":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":[""],"Sorry, no devices found to which we can send an OMEMO encrypted message.":[""],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":[""]," e.g. conversejs.org":[""],"Fetch registration form":[""],"Tip: A list of public XMPP providers is available":["Gợi ý: Má»™t danh sách các nhà cung cấp XMPP công cá»™ng có sẵn"],"here":["tại đây"],"Sorry, we\'re unable to connect to your chosen provider.":["Tháºt tiếc, chúng tôi không thể kết nối đến nhà cung cấp đã chá»n."],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":[""],"Now logging you in":["Äang đăng nháºp đây"],"Registered successfully":["Äăng kà thà nh công"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["Nhà cung cấp đã từ chối lần đăng kà của bạn. Hãy kiểm tra lại xem các giá trị bạn nháºp đã đúng chÆ°a."],"Leave this groupchat":["Rá»i nhóm trò chuyện"],"Click to toggle the list of open groupchats":["Nhấn để mở rá»™ng danh sách nhóm trò chuyện mở"],"Open Groupchats":["Nhóm trò chuyện Mở"],"Are you sure you want to leave the groupchat %1$s?":["Bạn có chắc muốn rá»i nhóm trò chuyện %1$s?"],"Add":["Thêm"],"Add a Contact":[""],"This contact is busy":[""],"This contact is online":[""],"This contact is offline":[""],"This contact is unavailable":[""],"This contact is away for an extended period":[""],"This contact is away":[""],"Contact name":[""],"Optional nickname":[""],"Sorry, could not find a contact with that name":[""],"This contact has already been added":[""],"Filter":[""],"Filter by contact name":[""],"Filter by group name":[""],"Filter by status":[""],"Any":[""],"Unread":[""],"Chatty":[""],"Extended Away":[""],"Click to remove %1$s as a contact":[""],"Click to accept the contact request from %1$s":[""],"Click to decline the contact request from %1$s":[""],"Click to chat with %1$s (XMPP address: %2$s)":[""],"Are you sure you want to decline this contact request?":[""],"Contacts":["Danh bạ"],"Add a contact":[""],"Re-sync your contacts":[""]}}}')}}]); //# sourceMappingURL=vi-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/zh_CN-LC_MESSAGES-converse-po.js b/src/conversejs/locales/zh_CN-LC_MESSAGES-converse-po.js index 4f9ad2b2eede5c923fbcc86fa6436907b7436186..f9b3b62cf42161b3614079078b27bee927eabd9c 100644 --- a/src/conversejs/locales/zh_CN-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/zh_CN-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[175],{453:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"zh_CN"},"Create your account":["åˆ›å»ºä½ çš„è´¦æˆ·"],"Please enter the XMPP provider to register with:":["请输入XMPPæ供程åºè¿›è¡Œæ³¨å†Œï¼š"],"Already have a chat account?":["å·²ç»æœ‰ä¸€ä¸ªèŠå¤©å¸æˆ·ï¼Ÿ"],"Log in here":["在这里登录"],"Account Registration:":["注册新账户:"],"Register":["注册"],"Choose a different provider":["选择其他æ供商"],"Hold tight, we\'re fetching the registration form…":["请ç¨ç‰ï¼Œæˆ‘们æ£åœ¨èŽ·å–注册表å•â€¦"],"Cancel":["å–消"],"The connection has dropped, attempting to reconnect.":["连接已ç»æŽ‰çº¿ï¼Œæ£åœ¨å°è¯•é‡æ–°è¿žæŽ¥ã€‚"],"An error occurred while connecting to the chat server.":["连接至èŠå¤©æœåŠ¡å™¨æ—¶å‡ºçŽ°é—®é¢˜ã€‚"],"The XMPP server did not offer a supported authentication mechanism":["XMPPæœåŠ¡å™¨æ²¡æœ‰æ供我们支æŒçš„验è¯æ–¹æ³•"],"Sorry, could not determine upload URL.":["对ä¸èµ·ï¼Œæ— æ³•ç¡®å®šæ–‡ä»¶ä¸Šä¼ URL。"],"Sorry, could not determine file upload URL.":["抱æ‰ï¼Œæ— æ³•ç¡®å®šæ–‡ä»¶ä¸Šä¼ URL。"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["对ä¸èµ·ï¼Œæ— 法æˆåŠŸä¸Šä¼ 您的文件。æœåŠ¡å™¨çš„å“应: \\"%1$s1\\""],"Sorry, could not succesfully upload your file.":["对ä¸èµ·ï¼Œæ— 法æˆåŠŸä¸Šä¼ 您的文件。"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["文件的大å°ä¸º%1$s,超过了æœåŠ¡å™¨å…许的最大值%2$s。"],"Smileys and emotions":["笑脸和情绪"],"People":["人"],"Activities":["活动"],"Travel":["æ—…è¡Œ"],"Objects":["对象"],"Animals and nature":["动物和自然"],"Food and drink":["食物和饮料"],"Symbols":["符å·"],"Flags":["旗帜"],"Stickers":["贴纸"],"This groupchat is now no longer anonymous":["æ¤ç¾¤èŠçŽ°åœ¨ä¸å†æ˜¯åŒ¿åçš„"],"Your nickname has been automatically set to %1$s":["您的昵称已自动设置为%1$s"],"Your nickname has been changed to %1$s":["您的昵称已更改为%1$s"],"You have been banned from this groupchat":["您已被ç¦æ¢å‚åŠ æ¤ç¾¤èŠ"],"You have been kicked from this groupchat":["您已被æ¤ç¾¤èŠè¸¢å‡º"],"You have been removed from this groupchat because of an affiliation change":["由于从属关系å˜åŠ¨ï¼Œæ‚¨å·²è¢«ç§»å‡ºæ¤èŠå¤©å®¤"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["您已从æ¤ç¾¤èŠä¸ç§»é™¤ï¼Œå› 为群èŠå·²æ›´æ”¹ä¸ºä»…é™æˆå‘˜ï¼Œå¹¶ä¸”您ä¸æ˜¯æˆå‘˜"],"You have been removed from this groupchat because the service hosting it is being shut down":["您已从æ¤ç¾¤èŠä¸ç§»é™¤ï¼Œå› 为æœåŠ¡æ£åœ¨å…³é—"],"Your message was not delivered because you weren\'t allowed to send it.":["由于您未获得å…许,您的消æ¯æœªè¢«å‘é€ã€‚"],"Your message was not delivered because you\'re not present in the groupchat.":["由于您ä¸åœ¨ç¾¤ç»„èŠå¤©ä¸ï¼Œæ‚¨çš„消æ¯æœªè¢«å‘é€ã€‚"],"You\'re not allowed to register yourself in this groupchat.":["您未被å…许在æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œã€‚"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["您ä¸å¯ä»¥åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œï¼Œå› 为它仅é™ä¼šå‘˜ã€‚"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["æ— æ³•åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œæ‚¨çš„昵称,它ä¸æ”¯æŒæ³¨å†Œã€‚"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["æ— æ³•åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œæ‚¨çš„昵称,æ供的数æ®è¡¨å•æ— 效。"],"Topic set by %1$s":["ç”±%1$s设置的主题"],"Topic cleared by %1$s":["主题已由%1$s清除"],"%1$s has been banned by %2$s":["%1$s已被%2$sç¦æ¢"],"%1$s has been banned":["%1$s已被ç¦æ¢"],"%1$s\'s nickname has changed":["%1$s的昵称已更改"],"%1$s has been kicked out by %2$s":["%1$s已被%2$s踢出"],"%1$s has been kicked out":["%1$s已被踢出"],"%1$s has been removed because of an affiliation change":["由于从属关系å˜åŠ¨ï¼Œ%1$så·²è¢«åˆ é™¤"],"%1$s has been removed for not being a member":["%1$så› ä¸æ˜¯æˆå‘˜è€Œè¢«ç§»é™¤"],"%1$s is no longer an admin of this groupchat":["%1$sä¸å†æ˜¯æ¤ç¾¤èŠçš„管ç†å‘˜"],"%1$s is no longer an owner of this groupchat":["%1$sä¸å†æ˜¯æ¤ç¾¤èŠçš„所有者"],"%1$s is no longer banned from this groupchat":["%1$sä¸å†è¢«ç¦æ¢å‚åŠ æ¤ç¾¤èŠ"],"The nickname you chose is reserved or currently in use, please choose a different one.":["您所选择的昵称已被ä¿ç•™æˆ–æ£åœ¨ä½¿ç”¨ï¼Œè¯·é€‰æ‹©ä¸€ä¸ªä¸åŒçš„。"],"Password incorrect":["密ç 错误"],"You are not on the member list of this groupchat.":["ä½ ä¸åœ¨æ¤ç¾¤ç»„èŠå¤©çš„æˆå‘˜åˆ—表ä¸ã€‚"],"You have been banned from this groupchat.":["您已被ç¦æ¢å‚åŠ æ¤ç¾¤ç»„èŠå¤©ã€‚"],"You are not allowed to create new groupchats.":["æ‚¨æ— æƒåˆ›å»ºæ–°çš„å°ç»„讨论。"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["您的昵称ä¸ç¬¦åˆæ¤ç¾¤ç»„èŠå¤©çš„政ç–。"],"This groupchat does not (yet) exist.":["æ¤ç¾¤ç»„èŠå¤©å°šä¸å˜åœ¨ã€‚"],"This groupchat has reached its maximum number of participants.":["æ¤ç¾¤ç»„èŠå¤©å·²è¾¾åˆ°æœ€å¤§å‚åŠ äººæ•°ã€‚"],"Remote server not found":["找ä¸åˆ°è¿œç¨‹æœåŠ¡å™¨"],"The explanation given is: \\"%1$s\\".":["给出的解释是: \\"%1$s\\"。"],"%1$s has invited you to join a groupchat: %2$s":["%1$s é‚€è¯·æ‚¨åŠ å…¥ç¾¤ç»„èŠå¤©ï¼š%2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s é‚€è¯·æ‚¨åŠ å…¥ç¾¤ç»„èŠå¤©ï¼š%2$sï¼Œå¹¶ä¸”ç•™ä¸‹äº†ä»¥ä¸‹åŽŸå› ï¼š \\"%3$s\\""],"Error":["错误"],"Sorry, something went wrong while trying to save your bookmark.":["抱æ‰ï¼Œåœ¨å°è¯•ä¿å˜ä¹¦ç¾æ—¶å‡ºé”™ã€‚"],"Timeout Error":["超时错误"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["æœåŠ¡å™¨æœªåœ¨å…许的时间内返回您的书ç¾ã€‚您å¯ä»¥é‡æ–°åŠ 载页é¢ä»¥å†æ¬¡è¯·æ±‚它们。"],"My contacts":["我的è”系人"],"Pending contacts":["待处ç†çš„è”系人"],"Contact requests":["è”系人请求"],"Ungrouped":["未分组的"],"Sorry, there was an error while trying to add %1$s as a contact.":["抱æ‰ï¼Œæ·»åŠ %1$s为è”系人时出现了问题。"],"This client does not allow presence subscriptions":["该客户端ä¸å…许在线状æ€è®¢é˜…"],"Click to hide these contacts":["按æ¤éšè—è”系人"],"Unbookmark this groupchat":["å–消æ¤ç¾¤èŠçš„书ç¾"],"Click to open this groupchat":["点击打开æ¤ç¾¤èŠ"],"Click to toggle the bookmarks list":["å•å‡»ä»¥åˆ‡æ¢ä¹¦ç¾åˆ—表"],"Bookmarks":["书ç¾"],"Bookmark this groupchat":["å°†æ¤ç¾¤èŠæ·»åŠ 书ç¾"],"Would you like this groupchat to be automatically joined upon startup?":["您是å¦æƒ³åœ¨ç¨‹åºå¯åŠ¨æ—¶è‡ªåŠ¨åŠ 入这个群èŠ?"],"The name for this bookmark:":["æ¤ä¹¦ç¾çš„å称:"],"What should your nickname for this groupchat be?":["您的群昵称是什么?"],"Save":["ä¿å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["确实è¦åˆ é™¤ä¹¦ç¾ \\"%1$s\\" å—?"],"Close":["å…³é—"],"OK":["确定"],"Image: ":[""],"Edit":[""],"Retract":[""],"Message versions":["消æ¯ç‰ˆæœ¬"],"Retry":[""],"Uploading file:":["æ£åœ¨ä¸Šä¼ 文件:"],"This message has been edited":["è¿™æ¡æ¶ˆæ¯å·²è¢«ç¼–辑"],"Show more":["显示更多"],"No message history available.":["æ— æ¶ˆæ¯è®°å½•ã€‚"],"Search results":["æœç´¢ç»“æžœ"],"Search":["æœç´¢"],"Send the message":["å‘é€æ¤æ¶ˆæ¯"],"Start a call":["开始è¯éŸ³é€šè¯"],"Message characters remaining":["剩余消æ¯å—符"],"Choose a file to send":["选择è¦å‘é€çš„文件"],"The User\'s Profile Image":["用户头åƒ"],"Trusted":["已信任"],"Untrusted":["未信任"],"OMEMO Fingerprints":["OMEMO 指纹"],"No OMEMO-enabled devices found":["找ä¸åˆ°å¯ç”¨äº†OMEMO的设备"],"Remove as contact":["åˆ é™¤è”系人"],"XMPP Address":["XMPP 地å€"],"Email":["电å邮件"],"Nickname":["昵称"],"Refresh":["刷新"],"Role":["角色"],"URL":["URL"],"%1$s is typing":["%1$sæ£åœ¨è¾“å…¥"],"%1$s has stopped typing":["%1$så·²åœæ¢è¾“å…¥"],"%1$s has gone away":["%1$så·²ç»ç¦»å¼€"],"Remove messages":["åˆ é™¤ä¿¡æ¯"],"Write in the third person":["以第三人称输入"],"Show this menu":["显示æ¤èœå•"],"Hidden message":["éšè—çš„ä¿¡æ¯"],"Message":["消æ¯"],"Optional hint":["å¯é€‰æ示"],"You have unread messages":["ä½ æœ‰æœªè¯»ä¿¡æ¯"],"Details":["详细"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["请注æ„,其他XMPP/Jabber客户端(和æœåŠ¡å™¨ï¼‰å¯èƒ½å°šä¸æ”¯æŒæ’¤æ¶ˆï¼Œå¹¶ä¸”æ¤æ¶ˆæ¯å¯èƒ½ä¸ä¼šåœ¨æ‰€æœ‰åœ°æ–¹åˆ 除。"],"Confirm":["确认"],"You have an unsent message which will be lost if you continue. Are you sure?":["您有一æ¡æœªå‘é€çš„消æ¯ï¼Œå¦‚果继ç»ï¼Œå®ƒå°†ä¸¢å¤±ã€‚ä½ ç¡®å®šå—?"],"Sorry, something went wrong while trying to refresh":["抱æ‰ï¼Œå°è¯•åˆ·æ–°æ—¶å‡ºé”™"],"Are you sure you want to remove this contact?":["ä½ ç¡®å®šè¦åˆ 除æ¤è”系人å—?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["抱æ‰ï¼Œåˆ 除%1$s为è”系人时出现了问题。"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["为æ高性能,我们在æµè§ˆå™¨é‡Œç¼“å˜ä½ çš„æ•°æ®ã€‚å¦‚æžœè¿™æ˜¯ä¸ªå…¬å…±ç”µè„‘ï¼Œæˆ–è€…ä½ æƒ³é€€å‡ºç™»å½•æ—¶è‡ªåŠ¨åˆ é™¤ä½ çš„æ•°æ®ï¼Œè¯·å–消勾选æ¤å¤é€‰æ¡†ã€‚很é‡è¦çš„ä¸€ç‚¹æ˜¯å¦‚æžœä½ ä¸æ˜Žç¡®ç‚¹å‡»é€€å‡ºç™»å½•ï¼Œä¸€äº›æ•°æ®è¿˜ä¼šç•™åœ¨ç¼“å˜é‡Œã€‚当使用一个ä¸å—信任的设备时,OMEMO åŠ å¯†å°†ä¸å¯ç”¨ã€‚"],"This is a trusted device":["这是一个å—信任的设备"],"Create an account":["创建一个å¸æˆ·"],"Don\'t have a chat account?":["没有èŠå¤©å¸å·ï¼Ÿ"],"Log in":["登录"],"Disconnected":["æ–开连接"],"Click here to log in anonymously":["按æ¤ä»¥åŒ¿å登录"],"Username":["用户å"],"user@domain":["用户@域å"],"Please enter a valid XMPP address":["请输入有效的XMPP地å€"],"Toggle chat":["切æ¢èŠå¤©"],"Click to restore this chat":["点击æ¢å¤æ¤èŠå¤©"],"Minimized":["最å°åŒ–"],"This field is required":["这个å—段是必填的"],"Join":["åŠ å…¥"],"Enter a new Groupchat":["输入新的群èŠ"],"name@conference.example.org":["name@conference.example.org"],"Groupchat address":["群èŠåœ°å€"],"Invite":["邀请"],"Server address":["æœåŠ¡å™¨åœ°å€"],"Show more information on this groupchat":["更多群信æ¯"],"Description:":["æ述:"],"Groupchat Address (JID):":["群èŠåœ°å€ï¼ˆjid):"],"Participants:":["å‚与者:"],"Requires authentication":["需è¦èº«ä»½éªŒè¯"],"Hidden":["éšè—"],"Requires an invitation":["需è¦é‚€è¯·"],"Moderated":["å—监管"],"Open":["公开"],"Public":["公开"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["临时"],"conference.example.org":["conference.example.org"],"Change role":["更改角色"],"Reason":["åŽŸå› "],"New affiliation":["新的隶属关系"],"Moderator Tools":["管ç†å·¥å…·"],"Type here to filter the search results":["在æ¤å¤„键入以过滤æœç´¢ç»“æžœ"],"Affiliation changed":["从属关系已更改"],"Topic":["è¯é¢˜"],"Topic author":["è¯é¢˜ä½œè€…"],"Groupchat address (JID)":["群èŠåœ°å€ï¼ˆJID)"],"Message archiving":["消æ¯å˜æ¡£"],"Messages are archived on the server":["消æ¯åœ¨æœåŠ¡å™¨ä¸Šå˜æ¡£"],"Description":["æè¿°"],"Features":["功能"],"This groupchat is not publicly searchable":["æ¤ç¾¤èŠå·²æ— 法被公开æœç´¢åˆ°"],"This groupchat is restricted to members only":["æ¤ç¾¤èŠä»…é™ç‰¹å®šæˆå‘˜"],"Members only":["ä»…é™æˆå‘˜"],"Participants entering this groupchat need to request permission to write":["åŠ å…¥æ¤ç¾¤èŠçš„æˆå‘˜åœ¨å‘言å‰éœ€è¦å…ˆèŽ·å¾—å‘言æƒé™"],"Name":["å称"],"This groupchat does not require a password upon entry":["åŠ å…¥æ¤ç¾¤èŠæ— 需密ç "],"No password required":["ä¸éœ€è¦å¯†ç "],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["所有æ¤ç¾¤èŠæˆå‘˜å‡å¯çœ‹åˆ°ä½ çš„ XMPP 地å€"],"Not moderated":["æ— ç›‘ç®¡"],"Participants entering this groupchat can write right away":["åŠ å…¥æ¤ç¾¤èŠçš„æˆå‘˜å¯è‡ªç”±è‡ªåœ¨åœ°å‘言"],"Online users":["在线用户"],"Anyone can join this groupchat":["任何人å¯åŠ å…¥æ¤ç¾¤èŠ"],"This groupchat requires a password before entry":["åŠ å…¥æ¤ç¾¤èŠéœ€è¦è¾“入一个密ç "],"Password protected":["密ç ä¿æŠ¤"],"Persistent":["永久ä¿å˜"],"This groupchat persists even if it\'s unoccupied":["å³ä½¿æ²¡äººåŠ 入,æ¤ç¾¤èŠä¾æ—§ä¸€ç›´å˜åœ¨"],"Only moderators can see your XMPP address":["仅群èŠçš„管ç†å‘˜å¯çœ‹åˆ°ä½ çš„ XMPP 地å€"],"This groupchat will disappear once the last person leaves":["当所有人都退出时,æ¤ç¾¤èŠå°†è¢«åˆ 除"],"This groupchat is publicly searchable":["æ¤ç¾¤èŠå¯è¢«å…¬å¼€æœç´¢åˆ°"],"Groupchat info for %1$s":["%1$s的群èŠä¿¡æ¯"],"You\'re not allowed to send messages in this room":["ä½ è¢«ç¦æ¢åœ¨æ¤èŠå¤©å®¤å‘言"],"The conversation has moved. Click below to enter.":["èŠå¤©å·²è½¬ç§»ï¼Œç‚¹å‡»å‰å¾€ã€‚"],"This groupchat no longer exists":["这个èŠå¤©å®¤å·²è¢«åˆ 除"],"Enter groupchat":["输入èŠå¤©å®¤"],"Please choose your nickname":["è½»é€‰æ‹©ä½ çš„æ˜µç§°"],"This groupchat requires a password":["æ¤èŠå¤©å®¤éœ€è¦å¯†ç "],"Password: ":["密ç : "],"Submit":["æ交"],"This user can send messages in this groupchat.":["æ¤ç”¨æˆ·å¯ä»¥åœ¨æ¤ç¾¤èŠä¸å‘é€æ¶ˆæ¯ã€‚"],"This user can NOT send messages in this groupchat.":["æ¤ç”¨æˆ·ä¸èƒ½åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸å‘é€æ¶ˆæ¯ã€‚"],"Owner":["所有者"],"Admin":["管ç†å‘˜"],"Member":["æˆå‘˜"],"Moderator":["管ç†å‘˜"],"Visitor":["访客"],"Click to mention %1$s in your message.":["å•å‡»ä»¥åœ¨æ‚¨çš„消æ¯ä¸æåŠ%1$s。"],"Participants":["å‚åŠ è€…"],"%1$s has entered the groupchat":["%1$s已进入èŠå¤©å®¤"],"%1$s has left the groupchat":["%1$s已离开èŠå¤©å®¤"],"%1$s is now a moderator":["%1$sç›®å‰æ˜¯ä¸»æŒäºº"],"%1$s has been muted":["%1$s已被ç¦è¨€"],"%1$s and %2$s":["%1$så’Œ%2$s"],"Change user role to participant":["更改用户角色到å‚与者"],"Kick user from groupchat":["从èŠå¤©å®¤è¸¢å‡ºç”¨æˆ·"],"Grant membership to a user":["å‘用户授予æˆå‘˜èµ„æ ¼"],"Opens up the moderator tools GUI":["打开主æŒäººå·¥å…·å›¾å½¢ç”¨æˆ·ç•Œé¢"],"Remove user\'s ability to post messages":["åˆ é™¤ç”¨æˆ·å‘布消æ¯çš„能力"],"Change your nickname":["æ›´æ”¹ä½ çš„æ˜µç§°"],"Grant moderator role to user":["å‘用户授予主æŒäºº(角色)æƒé™"],"Grant ownership of this groupchat":["授予æ¤èŠå¤©å®¤çš„所有æƒ"],"Set groupchat subject":["设置群èŠä¸»é¢˜"],"Set groupchat subject (alias for /subject)":["设置群èŠä¸»é¢˜(主题的别å)"],"Sorry, you\'re not allowed to retract this message":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ’¤æ¶ˆæ¤æ¶ˆæ¯"],"Hide topic":["éšè—主题"],"Leave":["离开"],"Hide the list of participants":["éšè—å‚与者列表"],"Forbidden: you do not have the necessary affiliation in order to do that.":["ç¦æ¢: ä½ æ²¡æœ‰å¿…è¦çš„从属关系æ¥æ‰§è¡Œæ¤æ“作。"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["错误:“%1$sâ€å‘½ä»¤æœ‰ä¸¤ä¸ªå‚æ•°ï¼Œç”¨æˆ·çš„æ˜µç§°å’ŒåŽŸå› (å¯é€‰)。"],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["错误:éžæ³•çš„å‚数个数"],"This action was done by %1$s.":["æ¤æ“作已被%1$s完æˆã€‚"],"The reason given is: \\"%1$s\\".":["ç»™å‡ºçš„åŽŸå› æ˜¯ï¼šâ€œ%1$sâ€ã€‚"],"Add a new groupchat":["æ·»åŠ æ–°çš„ç¾¤ç»„èŠå¤©"],"Announcements":["公告"],"Notification from %1$s":["æ¥è‡ª%1$s的通知"],"%1$s says":["%1$s说"],"has gone offline":["已离线"],"has gone away":["å·²ç»ç¦»å¼€"],"is busy":["在忙碌"],"has come online":["å·²ç»ä¸Šç½‘"],"wants to be your contact":["希望æˆä¸ºæ‚¨çš„è”系人"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["关于"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["登出"],"Click to change your chat status":["按æ¤æ›´æ”¹ä½ çš„èŠå¤©çŠ¶æ€"],"Show details about this chat client":["显示有关æ¤èŠå¤©å®¢æˆ·ç«¯çš„详细信æ¯"],"Your avatar image":["您的头åƒå›¾ç‰‡"],"Checkbox for selecting the following fingerprint":["用于选择以下指纹的å¤é€‰æ¡†"],"Device without a fingerprint":["没有指纹的设备"],"Other OMEMO-enabled devices":["其他å¯ç”¨äº† OMEMO åŠ å¯†çš„è®¾å¤‡"],"Checkbox to select fingerprints of all other OMEMO devices":["å¤é€‰æ¡†ä»¥é€‰æ‹©æ‰€æœ‰å…¶ä»–OMEMO设备的指纹"],"Remove checked devices and close":["åˆ é™¤å‹¾é€‰çš„è®¾å¤‡å¹¶å…³é—"],"Select all":["全选"],"This device\'s OMEMO fingerprint":["该设备的OMEMO指纹"],"Generate new keys and fingerprint":["生æˆæ–°å¯†é’¥å’ŒæŒ‡çº¹"],"Your Profile":["您的个人资料"],"XMPP Address (JID)":["XMPP地å€ï¼ˆJID)"],"Save and close":["ä¿å˜å¹¶å…³é—"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["使用逗å·åˆ†éš”多个角色。您的角色显示在èŠå¤©æ¶ˆæ¯ä¸æ‚¨çš„姓åæ—边。"],"OMEMO":["OMEMO"],"You can check your browser\'s developer console for any error output.":["您å¯ä»¥æ£€æŸ¥æµè§ˆå™¨çš„å¼€å‘者控制å°æ˜¯å¦æœ‰ä»»ä½•é”™è¯¯è¾“出。"],"Away":["离开"],"Busy":["忙碌"],"Custom status":["个性ç¾å"],"Offline":["离线"],"Online":["在线"],"I am %1$s":["我æ£%1$s"],"online":["在线"],"busy":["忙碌"],"away for long":["长期离开"],"away":["离开"],"offline":["离线"],"Sorry, could not decrypt a received OMEMO message due to an error.":["抱æ‰ï¼Œç”±äºŽé”™è¯¯ï¼Œæ— 法解密收到的OMEMO消æ¯ã€‚"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s似乎没有支æŒOMEMO的客户端。在æ¤ç¾¤ç»„èŠå¤©ä¸å°†ä¸å†å¯èƒ½è¿›è¡ŒåŠ 密的èŠå¤©ã€‚"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["æ— æ³•ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› ä¸º%1$s使用的客户端ä¸æ”¯æŒOMEMO。"],"Messages are being sent in plaintext":["消æ¯å°†ä»¥çº¯æ–‡æœ¬å‘é€"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["您确定è¦ç”Ÿæˆæ–°çš„OMEMO密钥å—ï¼Ÿè¿™å°†åˆ é™¤æ‚¨çš„æ—§å¯†é’¥ï¼Œå¹¶ä¸”æ‰€æœ‰ä»¥å‰åŠ 密的消æ¯å°†ä¸å†åœ¨æ¤è®¾å¤‡ä¸Šè§£å¯†ã€‚"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["抱æ‰ï¼Œæˆ‘ä»¬æ— æ³•å‘é€åŠ 密的消æ¯ï¼Œå› 为找ä¸åˆ°%1$s的远程æœåŠ¡å™¨"],"Unable to send an encrypted message due to an unexpected error.":["由于æ„å¤–é”™è¯¯ï¼Œæ— æ³•å‘é€åŠ 密消æ¯ã€‚"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["抱æ‰ï¼Œæ²¡æœ‰æ‰¾åˆ°æˆ‘们å¯ä»¥å‘å…¶å‘é€OMEMOåŠ å¯†æ¶ˆæ¯çš„设备。"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["您的客户端似乎ä¸æ”¯æŒè¿™ä¸€æ¡ OMEMO åŠ å¯†æ¶ˆæ¯ã€‚更多信æ¯å¯ä»¥åœ¨ https://conversations.im/omemo 上找到"]," e.g. conversejs.org":[" 例如conversejs.org"],"Fetch registration form":["获å–注册表å•"],"Tip: A list of public XMPP providers is available":["æ示:æ供了公共 XMPP 供应商列表"],"here":["这里"],"Sorry, we\'re unable to connect to your chosen provider.":["抱æ‰ï¼Œæˆ‘ä»¬æ— æ³•è¿žæŽ¥åˆ°æ‚¨é€‰æ‹©çš„æ供商。"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["与“%1$sâ€å»ºç«‹è¿žæŽ¥æ—¶å‡ºäº†ç‚¹é—®é¢˜ã€‚您确定它å˜åœ¨å—?"],"Registered successfully":["注册æˆåŠŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["æ供者拒ç»äº†æ‚¨çš„注册å°è¯•ã€‚请检查您输入的內容是å¦æ£ç¡®ã€‚"],"Leave this groupchat":["离开æ¤ç¾¤èŠ"],"Click to toggle the list of open groupchats":["å•å‡»ä»¥åˆ‡æ¢æ‰“开的群组èŠå¤©çš„列表"],"Open Groupchats":["打开群组èŠå¤©"],"Add":["æ·»åŠ "],"This contact is busy":["æ¤è”系人æ£åœ¨å¿™ç¢Œ"],"This contact is online":["æ¤è”系人在线"],"This contact is offline":["æ¤è”系人ä¸åœ¨çº¿"],"This contact is unavailable":["æ¤è”系人ä¸å¯ç”¨"],"This contact is away for an extended period":["æ¤è”系人已离开了一段长时间"],"This contact is away":["æ¤è”系人已离开"],"Contact name":["è”系人å称"],"Optional nickname":["å¯é€‰æ˜µç§°"],"Sorry, could not find a contact with that name":["抱æ‰ï¼Œæ‰¾ä¸åˆ°å…·æœ‰è¯¥å§“åçš„è”系人"],"Filter":["ç›é€‰"],"Filter by group name":["按组å过滤"],"Filter by status":["按状æ€è¿‡æ»¤"],"Any":["ä»»æ„"],"Unread":["未读"],"Chatty":["ç»å¸¸è”ç³»"],"Extended Away":["长期离开"],"Click to remove %1$s as a contact":["按æ¤åˆ 除%1$s为è”络人"],"Click to accept the contact request from %1$s":["按æ¤æŽ¥å—%1$sçš„è”系人请求"],"Click to decline the contact request from %1$s":["按æ¤æ‹’ç»%1$sçš„è”系人请求"],"Click to chat with %1$s (XMPP address: %2$s)":["点击与%1$sèŠå¤©ï¼ˆXMPP地å€ï¼š%2$s)"],"Are you sure you want to decline this contact request?":["ä½ ç¡®å®šè¦æ‹’ç»æ¤è”系人请求å—?"],"Contacts":["è”系人"],"Add a contact":["æ·»åŠ è”系人"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{542:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"zh_CN"},"Create your account":["åˆ›å»ºä½ çš„è´¦æˆ·"],"Please enter the XMPP provider to register with:":["请输入XMPPæ供程åºè¿›è¡Œæ³¨å†Œï¼š"],"Already have a chat account?":["å·²ç»æœ‰ä¸€ä¸ªèŠå¤©å¸æˆ·ï¼Ÿ"],"Log in here":["在这里登录"],"Account Registration:":["注册新账户:"],"Register":["注册"],"Choose a different provider":["选择其他æ供商"],"Hold tight, we\'re fetching the registration form…":["请ç¨ç‰ï¼Œæˆ‘们æ£åœ¨èŽ·å–注册表å•â€¦"],"Cancel":["å–消"],"The connection has dropped, attempting to reconnect.":["连接已ç»æŽ‰çº¿ï¼Œæ£åœ¨å°è¯•é‡æ–°è¿žæŽ¥ã€‚"],"An error occurred while connecting to the chat server.":["连接至èŠå¤©æœåŠ¡å™¨æ—¶å‡ºçŽ°é—®é¢˜ã€‚"],"The XMPP server did not offer a supported authentication mechanism":["XMPPæœåŠ¡å™¨æ²¡æœ‰æ供我们支æŒçš„验è¯æ–¹æ³•"],"Sorry, could not determine upload URL.":["对ä¸èµ·ï¼Œæ— æ³•ç¡®å®šæ–‡ä»¶ä¸Šä¼ URL。"],"Sorry, could not determine file upload URL.":["抱æ‰ï¼Œæ— æ³•ç¡®å®šæ–‡ä»¶ä¸Šä¼ URL。"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["对ä¸èµ·ï¼Œæ— 法æˆåŠŸä¸Šä¼ 您的文件。æœåŠ¡å™¨çš„å“应: \\"%1$s1\\""],"Sorry, could not succesfully upload your file.":["对ä¸èµ·ï¼Œæ— 法æˆåŠŸä¸Šä¼ 您的文件。"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["文件的大å°ä¸º%1$s,超过了æœåŠ¡å™¨å…许的最大值%2$s。"],"Smileys and emotions":["笑脸和情绪"],"People":["人"],"Activities":["活动"],"Travel":["æ—…è¡Œ"],"Objects":["对象"],"Animals and nature":["动物和自然"],"Food and drink":["食物和饮料"],"Symbols":["符å·"],"Flags":["旗帜"],"Stickers":["贴纸"],"This groupchat is now no longer anonymous":["æ¤ç¾¤èŠçŽ°åœ¨ä¸å†æ˜¯åŒ¿åçš„"],"Your nickname has been automatically set to %1$s":["您的昵称已自动设置为%1$s"],"Your nickname has been changed to %1$s":["您的昵称已更改为%1$s"],"You have been banned from this groupchat":["您已被ç¦æ¢å‚åŠ æ¤ç¾¤èŠ"],"You have been kicked from this groupchat":["您已被æ¤ç¾¤èŠè¸¢å‡º"],"You have been removed from this groupchat because of an affiliation change":["由于从属关系å˜åŠ¨ï¼Œæ‚¨å·²è¢«ç§»å‡ºæ¤èŠå¤©å®¤"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["您已从æ¤ç¾¤èŠä¸ç§»é™¤ï¼Œå› 为群èŠå·²æ›´æ”¹ä¸ºä»…é™æˆå‘˜ï¼Œå¹¶ä¸”您ä¸æ˜¯æˆå‘˜"],"You have been removed from this groupchat because the service hosting it is being shut down":["您已从æ¤ç¾¤èŠä¸ç§»é™¤ï¼Œå› 为æœåŠ¡æ£åœ¨å…³é—"],"Your message was not delivered because you weren\'t allowed to send it.":["由于您未获得å…许,您的消æ¯æœªè¢«å‘é€ã€‚"],"Your message was not delivered because you\'re not present in the groupchat.":["由于您ä¸åœ¨ç¾¤ç»„èŠå¤©ä¸ï¼Œæ‚¨çš„消æ¯æœªè¢«å‘é€ã€‚"],"You\'re not allowed to register yourself in this groupchat.":["您未被å…许在æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œã€‚"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["您ä¸å¯ä»¥åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œï¼Œå› 为它仅é™ä¼šå‘˜ã€‚"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["æ— æ³•åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œæ‚¨çš„昵称,它ä¸æ”¯æŒæ³¨å†Œã€‚"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["æ— æ³•åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸æ³¨å†Œæ‚¨çš„昵称,æ供的数æ®è¡¨å•æ— 效。"],"Topic set by %1$s":["ç”±%1$s设置的主题"],"Topic cleared by %1$s":["主题已由%1$s清除"],"%1$s has been banned by %2$s":["%1$s已被%2$sç¦æ¢"],"%1$s has been banned":["%1$s已被ç¦æ¢"],"%1$s\'s nickname has changed":["%1$s的昵称已更改"],"%1$s has been kicked out by %2$s":["%1$s已被%2$s踢出"],"%1$s has been kicked out":["%1$s已被踢出"],"%1$s has been removed because of an affiliation change":["由于从属关系å˜åŠ¨ï¼Œ%1$så·²è¢«åˆ é™¤"],"%1$s has been removed for not being a member":["%1$så› ä¸æ˜¯æˆå‘˜è€Œè¢«ç§»é™¤"],"%1$s is no longer an admin of this groupchat":["%1$sä¸å†æ˜¯æ¤ç¾¤èŠçš„管ç†å‘˜"],"%1$s is no longer an owner of this groupchat":["%1$sä¸å†æ˜¯æ¤ç¾¤èŠçš„所有者"],"%1$s is no longer banned from this groupchat":["%1$sä¸å†è¢«ç¦æ¢å‚åŠ æ¤ç¾¤èŠ"],"The nickname you chose is reserved or currently in use, please choose a different one.":["您所选择的昵称已被ä¿ç•™æˆ–æ£åœ¨ä½¿ç”¨ï¼Œè¯·é€‰æ‹©ä¸€ä¸ªä¸åŒçš„。"],"Password incorrect":["密ç 错误"],"You are not on the member list of this groupchat.":["ä½ ä¸åœ¨æ¤ç¾¤ç»„èŠå¤©çš„æˆå‘˜åˆ—表ä¸ã€‚"],"You have been banned from this groupchat.":["您已被ç¦æ¢å‚åŠ æ¤ç¾¤ç»„èŠå¤©ã€‚"],"You are not allowed to create new groupchats.":["æ‚¨æ— æƒåˆ›å»ºæ–°çš„å°ç»„讨论。"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["您的昵称ä¸ç¬¦åˆæ¤ç¾¤ç»„èŠå¤©çš„政ç–。"],"This groupchat does not (yet) exist.":["æ¤ç¾¤ç»„èŠå¤©å°šä¸å˜åœ¨ã€‚"],"This groupchat has reached its maximum number of participants.":["æ¤ç¾¤ç»„èŠå¤©å·²è¾¾åˆ°æœ€å¤§å‚åŠ äººæ•°ã€‚"],"Remote server not found":["找ä¸åˆ°è¿œç¨‹æœåŠ¡å™¨"],"The explanation given is: \\"%1$s\\".":["给出的解释是: \\"%1$s\\"。"],"%1$s has invited you to join a groupchat: %2$s":["%1$s é‚€è¯·æ‚¨åŠ å…¥ç¾¤ç»„èŠå¤©ï¼š%2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s é‚€è¯·æ‚¨åŠ å…¥ç¾¤ç»„èŠå¤©ï¼š%2$sï¼Œå¹¶ä¸”ç•™ä¸‹äº†ä»¥ä¸‹åŽŸå› ï¼š \\"%3$s\\""],"Error":["错误"],"Sorry, something went wrong while trying to save your bookmark.":["抱æ‰ï¼Œåœ¨å°è¯•ä¿å˜ä¹¦ç¾æ—¶å‡ºé”™ã€‚"],"Timeout Error":["超时错误"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["æœåŠ¡å™¨æœªåœ¨å…许的时间内返回您的书ç¾ã€‚您å¯ä»¥é‡æ–°åŠ 载页é¢ä»¥å†æ¬¡è¯·æ±‚它们。"],"My contacts":["我的è”系人"],"Pending contacts":["待处ç†çš„è”系人"],"Contact requests":["è”系人请求"],"Ungrouped":["未分组的"],"Sorry, there was an error while trying to add %1$s as a contact.":["抱æ‰ï¼Œæ·»åŠ %1$s为è”系人时出现了问题。"],"This client does not allow presence subscriptions":["该客户端ä¸å…许在线状æ€è®¢é˜…"],"Click to hide these contacts":["按æ¤éšè—è”系人"],"Unbookmark this groupchat":["å–消æ¤ç¾¤èŠçš„书ç¾"],"Click to open this groupchat":["点击打开æ¤ç¾¤èŠ"],"Click to toggle the bookmarks list":["å•å‡»ä»¥åˆ‡æ¢ä¹¦ç¾åˆ—表"],"Bookmarks":["书ç¾"],"Bookmark this groupchat":["å°†æ¤ç¾¤èŠæ·»åŠ 书ç¾"],"Would you like this groupchat to be automatically joined upon startup?":["您是å¦æƒ³åœ¨ç¨‹åºå¯åŠ¨æ—¶è‡ªåŠ¨åŠ 入这个群èŠ?"],"The name for this bookmark:":["æ¤ä¹¦ç¾çš„å称:"],"What should your nickname for this groupchat be?":["您的群昵称是什么?"],"Save":["ä¿å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["确实è¦åˆ é™¤ä¹¦ç¾ \\"%1$s\\" å—?"],"Close":["å…³é—"],"OK":["确定"],"Image: ":[""],"Edit":[""],"Retract":[""],"Message versions":["消æ¯ç‰ˆæœ¬"],"Retry":[""],"Uploading file:":["æ£åœ¨ä¸Šä¼ 文件:"],"This message has been edited":["è¿™æ¡æ¶ˆæ¯å·²è¢«ç¼–辑"],"Show more":["显示更多"],"No message history available.":["æ— æ¶ˆæ¯è®°å½•ã€‚"],"Search results":["æœç´¢ç»“æžœ"],"Search":["æœç´¢"],"Send the message":["å‘é€æ¤æ¶ˆæ¯"],"Start a call":["开始è¯éŸ³é€šè¯"],"Message characters remaining":["剩余消æ¯å—符"],"Choose a file to send":["选择è¦å‘é€çš„文件"],"The User\'s Profile Image":["用户头åƒ"],"Trusted":["已信任"],"Untrusted":["未信任"],"OMEMO Fingerprints":["OMEMO 指纹"],"No OMEMO-enabled devices found":["找ä¸åˆ°å¯ç”¨äº†OMEMO的设备"],"Remove as contact":["åˆ é™¤è”系人"],"XMPP Address":["XMPP 地å€"],"Email":["电å邮件"],"Nickname":["昵称"],"Refresh":["刷新"],"Role":["角色"],"URL":["URL"],"%1$s is typing":["%1$sæ£åœ¨è¾“å…¥"],"%1$s has stopped typing":["%1$så·²åœæ¢è¾“å…¥"],"%1$s has gone away":["%1$så·²ç»ç¦»å¼€"],"Remove messages":["åˆ é™¤ä¿¡æ¯"],"Write in the third person":["以第三人称输入"],"Show this menu":["显示æ¤èœå•"],"Hidden message":["éšè—çš„ä¿¡æ¯"],"Message":["消æ¯"],"Optional hint":["å¯é€‰æ示"],"You have unread messages":["ä½ æœ‰æœªè¯»ä¿¡æ¯"],"Details":["详细"],"Sorry, the connection has been lost, and your message could not be sent":[""],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["请注æ„,其他XMPP/Jabber客户端(和æœåŠ¡å™¨ï¼‰å¯èƒ½å°šä¸æ”¯æŒæ’¤æ¶ˆï¼Œå¹¶ä¸”æ¤æ¶ˆæ¯å¯èƒ½ä¸ä¼šåœ¨æ‰€æœ‰åœ°æ–¹åˆ 除。"],"Confirm":["确认"],"You have an unsent message which will be lost if you continue. Are you sure?":["您有一æ¡æœªå‘é€çš„消æ¯ï¼Œå¦‚果继ç»ï¼Œå®ƒå°†ä¸¢å¤±ã€‚ä½ ç¡®å®šå—?"],"Sorry, something went wrong while trying to refresh":["抱æ‰ï¼Œå°è¯•åˆ·æ–°æ—¶å‡ºé”™"],"Are you sure you want to remove this contact?":["ä½ ç¡®å®šè¦åˆ 除æ¤è”系人å—?"],"Sorry, there was an error while trying to remove %1$s as a contact.":["抱æ‰ï¼Œåˆ 除%1$s为è”系人时出现了问题。"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["为æ高性能,我们在æµè§ˆå™¨é‡Œç¼“å˜ä½ çš„æ•°æ®ã€‚å¦‚æžœè¿™æ˜¯ä¸ªå…¬å…±ç”µè„‘ï¼Œæˆ–è€…ä½ æƒ³é€€å‡ºç™»å½•æ—¶è‡ªåŠ¨åˆ é™¤ä½ çš„æ•°æ®ï¼Œè¯·å–消勾选æ¤å¤é€‰æ¡†ã€‚很é‡è¦çš„ä¸€ç‚¹æ˜¯å¦‚æžœä½ ä¸æ˜Žç¡®ç‚¹å‡»é€€å‡ºç™»å½•ï¼Œä¸€äº›æ•°æ®è¿˜ä¼šç•™åœ¨ç¼“å˜é‡Œã€‚当使用一个ä¸å—信任的设备时,OMEMO åŠ å¯†å°†ä¸å¯ç”¨ã€‚"],"This is a trusted device":["这是一个å—信任的设备"],"Create an account":["创建一个å¸æˆ·"],"Don\'t have a chat account?":["没有èŠå¤©å¸å·ï¼Ÿ"],"Log in":["登录"],"Disconnected":["æ–开连接"],"Click here to log in anonymously":["按æ¤ä»¥åŒ¿å登录"],"Username":["用户å"],"user@domain":["用户@域å"],"Please enter a valid XMPP address":["请输入有效的XMPP地å€"],"Toggle chat":["切æ¢èŠå¤©"],"Click to restore this chat":["点击æ¢å¤æ¤èŠå¤©"],"Minimized":["最å°åŒ–"],"This user can send messages in this groupchat.":["æ¤ç”¨æˆ·å¯ä»¥åœ¨æ¤ç¾¤èŠä¸å‘é€æ¶ˆæ¯ã€‚"],"This user can NOT send messages in this groupchat.":["æ¤ç”¨æˆ·ä¸èƒ½åœ¨æ¤ç¾¤ç»„èŠå¤©ä¸å‘é€æ¶ˆæ¯ã€‚"],"Owner":["所有者"],"Admin":["管ç†å‘˜"],"Member":["æˆå‘˜"],"Moderator":["管ç†å‘˜"],"Visitor":["访客"],"Click to mention %1$s in your message.":["å•å‡»ä»¥åœ¨æ‚¨çš„消æ¯ä¸æåŠ%1$s。"],"Participants":["å‚åŠ è€…"],"This field is required":["这个å—段是必填的"],"Join":["åŠ å…¥"],"Enter a new Groupchat":["输入新的群èŠ"],"name@conference.example.org":["name@conference.example.org"],"Groupchat address":["群èŠåœ°å€"],"Invite":["邀请"],"Server address":["æœåŠ¡å™¨åœ°å€"],"Show more information on this groupchat":["更多群信æ¯"],"Description:":["æ述:"],"Groupchat Address (JID):":["群èŠåœ°å€ï¼ˆjid):"],"Participants:":["å‚与者:"],"Requires authentication":["需è¦èº«ä»½éªŒè¯"],"Hidden":["éšè—"],"Requires an invitation":["需è¦é‚€è¯·"],"Moderated":["å—监管"],"Open":["公开"],"Public":["公开"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["临时"],"conference.example.org":["conference.example.org"],"Change role":["更改角色"],"Reason":["åŽŸå› "],"New affiliation":["新的隶属关系"],"Moderator Tools":["管ç†å·¥å…·"],"Type here to filter the search results":["在æ¤å¤„键入以过滤æœç´¢ç»“æžœ"],"Affiliation changed":["从属关系已更改"],"Topic":["è¯é¢˜"],"Topic author":["è¯é¢˜ä½œè€…"],"Groupchat address (JID)":["群èŠåœ°å€ï¼ˆJID)"],"Message archiving":["消æ¯å˜æ¡£"],"Messages are archived on the server":["消æ¯åœ¨æœåŠ¡å™¨ä¸Šå˜æ¡£"],"Description":["æè¿°"],"Features":["功能"],"This groupchat is not publicly searchable":["æ¤ç¾¤èŠå·²æ— 法被公开æœç´¢åˆ°"],"This groupchat is restricted to members only":["æ¤ç¾¤èŠä»…é™ç‰¹å®šæˆå‘˜"],"Members only":["ä»…é™æˆå‘˜"],"Participants entering this groupchat need to request permission to write":["åŠ å…¥æ¤ç¾¤èŠçš„æˆå‘˜åœ¨å‘言å‰éœ€è¦å…ˆèŽ·å¾—å‘言æƒé™"],"Name":["å称"],"This groupchat does not require a password upon entry":["åŠ å…¥æ¤ç¾¤èŠæ— 需密ç "],"No password required":["ä¸éœ€è¦å¯†ç "],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["所有æ¤ç¾¤èŠæˆå‘˜å‡å¯çœ‹åˆ°ä½ çš„ XMPP 地å€"],"Not moderated":["æ— ç›‘ç®¡"],"Participants entering this groupchat can write right away":["åŠ å…¥æ¤ç¾¤èŠçš„æˆå‘˜å¯è‡ªç”±è‡ªåœ¨åœ°å‘言"],"Online users":["在线用户"],"Anyone can join this groupchat":["任何人å¯åŠ å…¥æ¤ç¾¤èŠ"],"This groupchat requires a password before entry":["åŠ å…¥æ¤ç¾¤èŠéœ€è¦è¾“入一个密ç "],"Password protected":["密ç ä¿æŠ¤"],"Persistent":["永久ä¿å˜"],"This groupchat persists even if it\'s unoccupied":["å³ä½¿æ²¡äººåŠ 入,æ¤ç¾¤èŠä¾æ—§ä¸€ç›´å˜åœ¨"],"Only moderators can see your XMPP address":["仅群èŠçš„管ç†å‘˜å¯çœ‹åˆ°ä½ çš„ XMPP 地å€"],"This groupchat will disappear once the last person leaves":["当所有人都退出时,æ¤ç¾¤èŠå°†è¢«åˆ 除"],"This groupchat is publicly searchable":["æ¤ç¾¤èŠå¯è¢«å…¬å¼€æœç´¢åˆ°"],"Groupchat info for %1$s":["%1$s的群èŠä¿¡æ¯"],"You\'re not allowed to send messages in this room":["ä½ è¢«ç¦æ¢åœ¨æ¤èŠå¤©å®¤å‘言"],"The conversation has moved. Click below to enter.":["èŠå¤©å·²è½¬ç§»ï¼Œç‚¹å‡»å‰å¾€ã€‚"],"This groupchat no longer exists":["这个èŠå¤©å®¤å·²è¢«åˆ 除"],"Enter groupchat":["输入èŠå¤©å®¤"],"Please choose your nickname":["è½»é€‰æ‹©ä½ çš„æ˜µç§°"],"This groupchat requires a password":["æ¤èŠå¤©å®¤éœ€è¦å¯†ç "],"Password: ":["密ç : "],"Submit":["æ交"],"%1$s has entered the groupchat":["%1$s已进入èŠå¤©å®¤"],"%1$s has left the groupchat":["%1$s已离开èŠå¤©å®¤"],"%1$s is now a moderator":["%1$sç›®å‰æ˜¯ä¸»æŒäºº"],"%1$s has been muted":["%1$s已被ç¦è¨€"],"%1$s and %2$s":["%1$så’Œ%2$s"],"Change user role to participant":["更改用户角色到å‚与者"],"Kick user from groupchat":["从èŠå¤©å®¤è¸¢å‡ºç”¨æˆ·"],"Grant membership to a user":["å‘用户授予æˆå‘˜èµ„æ ¼"],"Opens up the moderator tools GUI":["打开主æŒäººå·¥å…·å›¾å½¢ç”¨æˆ·ç•Œé¢"],"Remove user\'s ability to post messages":["åˆ é™¤ç”¨æˆ·å‘布消æ¯çš„能力"],"Change your nickname":["æ›´æ”¹ä½ çš„æ˜µç§°"],"Grant moderator role to user":["å‘用户授予主æŒäºº(角色)æƒé™"],"Grant ownership of this groupchat":["授予æ¤èŠå¤©å®¤çš„所有æƒ"],"Set groupchat subject":["设置群èŠä¸»é¢˜"],"Set groupchat subject (alias for /subject)":["设置群èŠä¸»é¢˜(主题的别å)"],"Sorry, you\'re not allowed to retract this message":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ’¤æ¶ˆæ¤æ¶ˆæ¯"],"Hide topic":["éšè—主题"],"Leave":["离开"],"Hide the list of participants":["éšè—å‚与者列表"],"Forbidden: you do not have the necessary affiliation in order to do that.":["ç¦æ¢: ä½ æ²¡æœ‰å¿…è¦çš„从属关系æ¥æ‰§è¡Œæ¤æ“作。"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["错误:“%1$sâ€å‘½ä»¤æœ‰ä¸¤ä¸ªå‚æ•°ï¼Œç”¨æˆ·çš„æ˜µç§°å’ŒåŽŸå› (å¯é€‰)。"],"name@example.org":["name@example.org"],"Optional XMPP address for a new groupchat that replaces this one":[""],"Error: invalid number of arguments":["错误:éžæ³•çš„å‚数个数"],"This action was done by %1$s.":["æ¤æ“作已被%1$s完æˆã€‚"],"The reason given is: \\"%1$s\\".":["ç»™å‡ºçš„åŽŸå› æ˜¯ï¼šâ€œ%1$sâ€ã€‚"],"Add a new groupchat":["æ·»åŠ æ–°çš„ç¾¤ç»„èŠå¤©"],"Announcements":["公告"],"Notification from %1$s":["æ¥è‡ª%1$s的通知"],"%1$s says":["%1$s说"],"has gone offline":["已离线"],"has gone away":["å·²ç»ç¦»å¼€"],"is busy":["在忙碌"],"has come online":["å·²ç»ä¸Šç½‘"],"wants to be your contact":["希望æˆä¸ºæ‚¨çš„è”系人"],"Hide":[""],"Execute":[""],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"List available commands":[""],"The specified entity doesn\'t support ad-hoc commands":[""],"About":["关于"],"Commands":[""],"Settings":[""],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":[""],"%1$s Translate %2$s it into your own language":[""],"Log out":["登出"],"Click to change your chat status":["按æ¤æ›´æ”¹ä½ çš„èŠå¤©çŠ¶æ€"],"Show details about this chat client":["显示有关æ¤èŠå¤©å®¢æˆ·ç«¯çš„详细信æ¯"],"Your avatar image":["您的头åƒå›¾ç‰‡"],"Checkbox for selecting the following fingerprint":["用于选择以下指纹的å¤é€‰æ¡†"],"Device without a fingerprint":["没有指纹的设备"],"Other OMEMO-enabled devices":["其他å¯ç”¨äº† OMEMO åŠ å¯†çš„è®¾å¤‡"],"Checkbox to select fingerprints of all other OMEMO devices":["å¤é€‰æ¡†ä»¥é€‰æ‹©æ‰€æœ‰å…¶ä»–OMEMO设备的指纹"],"Remove checked devices and close":["åˆ é™¤å‹¾é€‰çš„è®¾å¤‡å¹¶å…³é—"],"Select all":["全选"],"This device\'s OMEMO fingerprint":["该设备的OMEMO指纹"],"Generate new keys and fingerprint":["生æˆæ–°å¯†é’¥å’ŒæŒ‡çº¹"],"Your Profile":["您的个人资料"],"XMPP Address (JID)":["XMPP地å€ï¼ˆJID)"],"Save and close":["ä¿å˜å¹¶å…³é—"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["使用逗å·åˆ†éš”多个角色。您的角色显示在èŠå¤©æ¶ˆæ¯ä¸æ‚¨çš„姓åæ—边。"],"OMEMO":["OMEMO"],"You can check your browser\'s developer console for any error output.":["您å¯ä»¥æ£€æŸ¥æµè§ˆå™¨çš„å¼€å‘者控制å°æ˜¯å¦æœ‰ä»»ä½•é”™è¯¯è¾“出。"],"Away":["离开"],"Busy":["忙碌"],"Custom status":["个性ç¾å"],"Offline":["离线"],"Online":["在线"],"I am %1$s":["我æ£%1$s"],"online":["在线"],"busy":["忙碌"],"away for long":["长期离开"],"away":["离开"],"offline":["离线"],"Sorry, could not decrypt a received OMEMO message due to an error.":["抱æ‰ï¼Œç”±äºŽé”™è¯¯ï¼Œæ— 法解密收到的OMEMO消æ¯ã€‚"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s似乎没有支æŒOMEMO的客户端。在æ¤ç¾¤ç»„èŠå¤©ä¸å°†ä¸å†å¯èƒ½è¿›è¡ŒåŠ 密的èŠå¤©ã€‚"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["æ— æ³•ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› ä¸º%1$s使用的客户端ä¸æ”¯æŒOMEMO。"],"Messages are being sent in plaintext":["消æ¯å°†ä»¥çº¯æ–‡æœ¬å‘é€"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":[""],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":[""],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["抱æ‰ï¼Œæˆ‘ä»¬æ— æ³•å‘é€åŠ 密的消æ¯ï¼Œå› 为找ä¸åˆ°%1$s的远程æœåŠ¡å™¨"],"Unable to send an encrypted message due to an unexpected error.":["由于æ„å¤–é”™è¯¯ï¼Œæ— æ³•å‘é€åŠ 密消æ¯ã€‚"],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["您确定è¦ç”Ÿæˆæ–°çš„OMEMO密钥å—ï¼Ÿè¿™å°†åˆ é™¤æ‚¨çš„æ—§å¯†é’¥ï¼Œå¹¶ä¸”æ‰€æœ‰ä»¥å‰åŠ 密的消æ¯å°†ä¸å†åœ¨æ¤è®¾å¤‡ä¸Šè§£å¯†ã€‚"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["抱æ‰ï¼Œæ²¡æœ‰æ‰¾åˆ°æˆ‘们å¯ä»¥å‘å…¶å‘é€OMEMOåŠ å¯†æ¶ˆæ¯çš„设备。"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["您的客户端似乎ä¸æ”¯æŒè¿™ä¸€æ¡ OMEMO åŠ å¯†æ¶ˆæ¯ã€‚更多信æ¯å¯ä»¥åœ¨ https://conversations.im/omemo 上找到"]," e.g. conversejs.org":[" 例如conversejs.org"],"Fetch registration form":["获å–注册表å•"],"Tip: A list of public XMPP providers is available":["æ示:æ供了公共 XMPP 供应商列表"],"here":["这里"],"Sorry, we\'re unable to connect to your chosen provider.":["抱æ‰ï¼Œæˆ‘ä»¬æ— æ³•è¿žæŽ¥åˆ°æ‚¨é€‰æ‹©çš„æ供商。"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":[""],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["与“%1$sâ€å»ºç«‹è¿žæŽ¥æ—¶å‡ºäº†ç‚¹é—®é¢˜ã€‚您确定它å˜åœ¨å—?"],"Registered successfully":["注册æˆåŠŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["æ供者拒ç»äº†æ‚¨çš„注册å°è¯•ã€‚请检查您输入的內容是å¦æ£ç¡®ã€‚"],"Leave this groupchat":["离开æ¤ç¾¤èŠ"],"Click to toggle the list of open groupchats":["å•å‡»ä»¥åˆ‡æ¢æ‰“开的群组èŠå¤©çš„列表"],"Open Groupchats":["打开群组èŠå¤©"],"Add":["æ·»åŠ "],"This contact is busy":["æ¤è”系人æ£åœ¨å¿™ç¢Œ"],"This contact is online":["æ¤è”系人在线"],"This contact is offline":["æ¤è”系人ä¸åœ¨çº¿"],"This contact is unavailable":["æ¤è”系人ä¸å¯ç”¨"],"This contact is away for an extended period":["æ¤è”系人已离开了一段长时间"],"This contact is away":["æ¤è”系人已离开"],"Contact name":["è”系人å称"],"Optional nickname":["å¯é€‰æ˜µç§°"],"Sorry, could not find a contact with that name":["抱æ‰ï¼Œæ‰¾ä¸åˆ°å…·æœ‰è¯¥å§“åçš„è”系人"],"Filter":["ç›é€‰"],"Filter by group name":["按组å过滤"],"Filter by status":["按状æ€è¿‡æ»¤"],"Any":["ä»»æ„"],"Unread":["未读"],"Chatty":["ç»å¸¸è”ç³»"],"Extended Away":["长期离开"],"Click to remove %1$s as a contact":["按æ¤åˆ 除%1$s为è”络人"],"Click to accept the contact request from %1$s":["按æ¤æŽ¥å—%1$sçš„è”系人请求"],"Click to decline the contact request from %1$s":["按æ¤æ‹’ç»%1$sçš„è”系人请求"],"Click to chat with %1$s (XMPP address: %2$s)":["点击与%1$sèŠå¤©ï¼ˆXMPP地å€ï¼š%2$s)"],"Are you sure you want to decline this contact request?":["ä½ ç¡®å®šè¦æ‹’ç»æ¤è”系人请求å—?"],"Contacts":["è”系人"],"Add a contact":["æ·»åŠ è”系人"]}}}')}}]); //# sourceMappingURL=zh_CN-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/conversejs/locales/zh_TW-LC_MESSAGES-converse-po.js b/src/conversejs/locales/zh_TW-LC_MESSAGES-converse-po.js index e3efc8cc0631a0cccd0dd95cd7c8aef8b6cf09d8..8beff2fc1d924101f0c266e8f2baf5699200cb16 100644 --- a/src/conversejs/locales/zh_TW-LC_MESSAGES-converse-po.js +++ b/src/conversejs/locales/zh_TW-LC_MESSAGES-converse-po.js @@ -1,2 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[176],{454:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Create your account":["建立您的帳號"],"Please enter the XMPP provider to register with:":["請輸入è¦è¨»å†Šçš„ XMPP 供應商:"],"Already have a chat account?":["已經æ“有èŠå¤©å¸³è™Ÿï¼Ÿ"],"Log in here":["在æ¤ç™»å…¥"],"Account Registration:":["帳號註冊:"],"Register":["註冊"],"Choose a different provider":["é¸æ“‡ä¸€å€‹ä¸åŒçš„供應商"],"Hold tight, we\'re fetching the registration form…":["ç¨ç‰ï¼Œæˆ‘們æ£åœ¨å–得註冊表單…"],"Cancel":["å–消"],"The connection has dropped, attempting to reconnect.":["連線已ä¸æ–·ï¼Œå˜—試é‡æ–°é€£ç·šã€‚"],"An error occurred while connecting to the chat server.":["連線到èŠå¤©ä¼ºæœå™¨æ™‚éé‡éŒ¯èª¤ã€‚"],"Your XMPP address and/or password is incorrect. Please try again.":["您的 XMPP 地å€æˆ–密碼錯誤。請é‡è©¦ã€‚"],"Sorry, we could not connect to the XMPP host with domain: %1$s":["抱æ‰ï¼Œæˆ‘們無法使用域å「%1$sã€ä¾†é€£ç·š XMPP 主機"],"The XMPP server did not offer a supported authentication mechanism":["æ¤ XMPP 伺æœå™¨ä¸æ供支æ´çš„èªè‰æ©Ÿåˆ¶"],"Sorry, could not determine upload URL.":["抱æ‰ï¼Œç„¡æ³•ç¢ºå®šä¸Šå‚³ URL。"],"Sorry, could not determine file upload URL.":["抱æ‰ï¼Œç„¡æ³•ç¢ºå®šæª”案上傳 URL。"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["抱æ‰ï¼Œæ‚¨çš„檔案上傳ä¸æˆåŠŸã€‚您的伺æœå™¨å›žæ‡‰ï¼š\\"%1$s\\""],"Sorry, could not succesfully upload your file.":["抱æ‰ï¼Œæ‚¨çš„檔案上傳ä¸æˆåŠŸã€‚"],"You\'re not allowed to retract your message.":["您ä¸è¢«å…許收回這æ¢è¨Šæ¯ã€‚"],"Sorry, an error occurred while trying to retract your message.":["抱æ‰ï¼Œåœ¨æ”¶å›žè¨Šæ¯æ™‚出錯了。"],"You\'re not allowed to send a message.":["您ä¸è¢«å…許傳é€è¨Šæ¯ã€‚"],"Sorry, an error occurred while trying to send your message.":["抱æ‰ï¼Œé€å‡ºè¨Šæ¯æ™‚出錯了。"],"Sorry, looks like file upload is not supported by your server.":["抱æ‰ï¼Œçœ‹ä¾†æ‚¨çš„伺æœå™¨ä¸æ”¯æ´æª”案上傳。"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["æ‚¨çš„æª”æ¡ˆå¤§å° %1$s 超éŽäº†æ‚¨çš„伺æœå™¨é™åˆ¶ %2$s。"],"Smileys and emotions":["表情"],"People":["人"],"Activities":["活動"],"Travel":["æ—…è¡Œ"],"Objects":["物件"],"Animals and nature":["動物與自然"],"Food and drink":["飲食"],"Symbols":["符號"],"Flags":["旗幟"],"Stickers":["貼紙"],"This groupchat is not anonymous":["這間èŠå¤©å®¤ä¸æ˜¯åŒ¿åçš„"],"This groupchat now shows unavailable members":["這間èŠå¤©å®¤ç¾åœ¨æœƒé¡¯ç¤ºä¸å¯ç”¨çš„æˆå“¡"],"This groupchat does not show unavailable members":["這間èŠå¤©å®¤ä¸æœƒé¡¯ç¤ºä¸å¯ç”¨çš„æˆå“¡"],"The groupchat configuration has changed":["èŠå¤©å®¤é…置已變更"],"Groupchat logging is now enabled":["ç¾å·²å•Ÿç”¨èŠå¤©å®¤èŠå¤©ç´€éŒ„"],"Groupchat logging is now disabled":["ç¾å·²ç¦ç”¨èŠå¤©å®¤èŠå¤©ç´€éŒ„"],"This groupchat is now no longer anonymous":["這間èŠå¤©å®¤ç¾åœ¨ä¸å†åŒ¿å"],"This groupchat is now semi-anonymous":["這間èŠå¤©å®¤ç¾åœ¨æ˜¯åŠåŒ¿å"],"This groupchat is now fully-anonymous":["這間èŠå¤©å®¤ç¾åœ¨å®Œå…¨åŒ¿å"],"A new groupchat has been created":["建立了新的èŠå¤©å®¤"],"Your nickname has been automatically set to %1$s":["您的暱稱已自動è¨ç½®çˆ² %1$s"],"Your nickname has been changed to %1$s":["您的暱稱已變更爲 %1$s"],"You have been banned from this groupchat":["您被ç¦æ¢åŠ 入這間èŠå¤©å®¤"],"You have exited this groupchat due to a technical problem":["由於技術å•é¡Œï¼Œæ‚¨å·²ç¶“被移出這間èŠå¤©å®¤"],"You have been kicked from this groupchat":["您被踢出了這間èŠå¤©å®¤"],"You have been removed from this groupchat because of an affiliation change":["由於身份的變動,您已經被移除出這間èŠå¤©å®¤"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["您已經被移除出這間èŠå¤©å®¤ï¼Œå› 爲èŠå¤©å®¤å·²è®Šç‚ºåƒ…é™æœƒå“¡ï¼Œè€Œæ‚¨ä¸æ˜¯æœƒå“¡"],"You have been removed from this groupchat because the service hosting it is being shut down":["您已經被移除出這間èŠå¤©å®¤ï¼Œå› 爲託管它的æœå‹™æ£åœ¨é—œé–‰"],"Your retraction was not delivered because you\'re not present in the groupchat.":["您的訊æ¯æœªè¢«æ”¶å›žï¼Œå› 爲您ä¸åœ¨èŠå¤©å®¤å…§ã€‚"],"Your message was not delivered because you weren\'t allowed to send it.":["您的訊æ¯æœªè¢«å‚³é€ï¼Œå› 爲您未被å…許é€å‡ºè¨Šæ¯ã€‚"],"Your message was not delivered because you\'re not present in the groupchat.":["您的訊æ¯æœªè¢«å‚³é€ï¼Œå› 爲您ä¸åœ¨èŠå¤©å®¤å…§ã€‚"],"A timeout happened while while trying to retract your message.":["收回訊æ¯é€¾æ™‚。"],"You\'re not allowed to register yourself in this groupchat.":["您未被å…許在這間èŠå¤©å®¤ç™»è¨˜ã€‚"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["您未被å…許在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲它僅é™æœƒå“¡ã€‚"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["您的暱稱無法在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲這間èŠå¤©å®¤ä¸æ”¯æ´ç™»è¨˜æš±ç¨±ã€‚"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["您的暱稱無法在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲它包å«ç„¡æ•ˆæ ¼å¼ã€‚"],"Topic set by %1$s":["%1$s è¨å®šäº†è©±é¡Œ"],"Topic cleared by %1$s":["%1$s 清除了話題"],"%1$s has been banned by %2$s":["%1$s 已經被 %2$s å°éŽ–"],"%1$s has been banned":["%1$s 已經被å°éŽ–"],"%1$s\'s nickname has changed":["%1$s 的暱稱已變更"],"%1$s has been kicked out by %2$s":["%1$s 已經被 %2$s 踢出èŠå¤©å®¤"],"%1$s has been kicked out":["%1$s 已經被踢出èŠå¤©å®¤"],"%1$s has been removed because of an affiliation change":["由於身份的變動,%1$s 已經被移除"],"%1$s has been removed for not being a member":["由於ä¸æ˜¯æœƒå“¡ï¼Œ%1$s 已經被移除"],"%1$s is no longer an admin of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„管ç†å“¡"],"%1$s is no longer an owner of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„主人"],"%1$s is no longer banned from this groupchat":["%1$s ä¸å†è¢«é€™é–“èŠå¤©å®¤å°éŽ–"],"%1$s is no longer a member of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„會員"],"%1$s is now a member of this groupchat":["%1$s ç¾åœ¨æˆçˆ²é€™é–“èŠå¤©å®¤çš„會員"],"%1$s is now an %2$s of this groupchat":["%1$s ç¾åœ¨æˆçˆ²é€™é–“èŠå¤©å®¤çš„ %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["您所æ€é¸çš„暱稱已經被ä¿ç•™æˆ–是已經有人使用,請æ›ä¸€å€‹æš±ç¨±ã€‚"],"Password incorrect":["密碼ä¸æ£ç¢º"],"You are not on the member list of this groupchat.":["您並éžé€™é–“èŠå¤©å®¤æˆå“¡ã€‚"],"You have been banned from this groupchat.":["您被ç¦æ¢åŠ 入這間èŠå¤©å®¤ã€‚"],"You are not allowed to create new groupchats.":["您ä¸è¢«å…許建立èŠå¤©å®¤ã€‚"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["您的暱稱ä¸ç¬¦åˆé€™é–“èŠå¤©å®¤æ¨™æº–。"],"This groupchat does not (yet) exist.":["這間èŠå¤©å®¤ä¸å˜åœ¨ã€‚"],"This groupchat has reached its maximum number of participants.":["這間èŠå¤©å®¤äººæ•¸å·²æ»¿ã€‚"],"Remote server not found":["找ä¸åˆ°é 端伺æœå™¨"],"The explanation given is: \\"%1$s\\".":["得到的回應是「%1$sã€ã€‚"],"%1$s has invited you to join a groupchat: %2$s":["%1$s é‚€è«‹æ‚¨åŠ å…¥èŠå¤©å®¤ï¼š%2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s é‚€è«‹æ‚¨åŠ å…¥èŠå¤©å®¤ï¼š%2$sï¼Œä¸¦ä¸”ç•™ä¸‹åŽŸå› ã€Œ%3$sã€"],"Error":["錯誤"],"Sorry, something went wrong while trying to save your bookmark.":["抱æ‰ï¼Œåœ¨å˜—試儲å˜æ›¸ç±¤æ™‚出錯。"],"Timeout Error":["逾時錯誤"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["伺æœå™¨æœªåœ¨éŸ¿æ‡‰æ™‚間內返回書籤。您å¯ä»¥å˜—試é‡æ–°è¼‰å…¥æœ¬é é¢ã€‚"],"My contacts":["è¯çµ¡äºº"],"Pending contacts":["å·²é€å‡ºçš„è¯çµ¡äººè«‹æ±‚"],"Contact requests":["新增è¯çµ¡äººè«‹æ±‚"],"Ungrouped":["未分組"],"New messages":["新訊æ¯"],"Sorry, there was an error while trying to add %1$s as a contact.":["抱æ‰ï¼Œå˜—試新增 %1$s 爲è¯çµ¡äººæ™‚é‡åˆ°äº†éŒ¯èª¤ã€‚"],"This client does not allow presence subscriptions":["æ¤ç”¨æˆ¶ç«¯è»Ÿä»¶ä¸æ”¯æ´ç·šä¸Šç‹€æ…‹è¨‚é–±"],"Click to hide these contacts":["按一下隱è—這些è¯çµ¡äºº"],"Unbookmark this groupchat":["å°‡èŠå¤©å®¤ç§»å‡ºæ›¸ç±¤"],"Click to open this groupchat":["按一下開啟èŠå¤©å®¤å°è©±"],"Click to toggle the bookmarks list":["按一下開關書籤清單"],"Bookmarks":["書籤"],"Bookmark this groupchat":["å°‡èŠå¤©å®¤åŠ 入書籤"],"Would you like this groupchat to be automatically joined upon startup?":["æ‚¨å¸Œæœ›åœ¨å•Ÿå‹•æ™‚è‡ªå‹•åŠ å…¥é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"The name for this bookmark:":["書籤å稱:"],"What should your nickname for this groupchat be?":["您希望在這間èŠå¤©å®¤çš„用什麼暱稱?"],"Save":["儲å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["確定è¦ç§»é™¤æ›¸ç±¤ã€Œ%1$sã€å—Žï¼Ÿ"],"Unbookmark":["移出書籤"],"Bookmark":["åŠ å…¥æ›¸ç±¤"],"Close":["關閉"],"OK":["好的"],"Image: ":["å½±åƒï¼š "],"Download audio file \\"%1$s\\"":["下載音訊檔案「%1$sã€"],"Download file \\"%1$s\\"":["下載檔案「%1$sã€"],"Cancel Editing":["å–消編輯"],"Edit":["編輯"],"Retract":["收回"],"Message versions":["訊æ¯ç‰ˆæœ¬"],"Retry":["å†æ¬¡å˜—試"],"Uploading file:":["æ£åœ¨ä¸Šå‚³æª”案:"],"%1$s has removed this message":["%1$s 移除了這æ¢è¨Šæ¯"],"This message has been edited":["這æ¢è¨Šæ¯å·²ç¶“被編輯"],"Show more":["顯示更多"],"Show less":["顯示簡略"],"No message history available.":["ç„¡æ·å²è¨Šæ¯ã€‚"],"Search results":["æœå°‹çµæžœ"],"Search":["æœå°‹"],"Insert emojis":["æ’入表情圖標"],"Send the message":["é€å‡ºè¨Šæ¯"],"Start a call":["開始通話"],"Message characters remaining":["訊æ¯å‰©é¤˜å—數"],"Hide participants":["éš±è—æˆå“¡"],"Show participants":["顯示æˆå“¡"],"Choose a file to send":["é¸æ“‡è¦å‚³é€çš„檔案"],"Click to write as a normal (non-spoiler) message":["按一下撰寫純文å—訊æ¯"],"Click to write your message as a spoiler":["按一下以è±å¯Œæ–‡å—æ ¼å¼æ’°å¯«è¨Šæ¯"],"The User\'s Profile Image":["使用者é åƒ"],"Trusted":["ä¿¡ä»»"],"Untrusted":["ä¸ä¿¡ä»»"],"OMEMO Fingerprints":["OMEMO 指紋"],"No OMEMO-enabled devices found":["没有找到啟用了 OMEMO çš„è£ç½®"],"Remove as contact":["移除è¯çµ¡äºº"],"XMPP Address":["XMPP 地å€"],"Email":["é›»å郵件"],"Full Name":["å…¨å"],"Nickname":["暱稱"],"Refresh":["é‡æ–°æ•´ç†"],"Role":["角色"],"URL":["URL"],"%1$s is typing":["%1$s æ£åœ¨è¼¸å…¥"],"%1$s has stopped typing":["%1$s å·²åœæ¢è¼¸å…¥"],"%1$s has gone away":["%1$s 已經離線"],"Remove messages":["移除訊æ¯"],"Close this chat":["關閉å°è©±"],"Write in the third person":["以第三者身份撰寫"],"Show this menu":["顯示æ¤é¸å–®"],"Hidden message":["ç§è¨Š"],"Message":["訊æ¯"],"Optional hint":["å¯é¸æ示"],"You have unread messages":["您有未讀訊æ¯"],"Details":["詳細資訊"],"See more information about this person":["顯示更多關於æ¤äººçš„資訊"],"Close and end this conversation":["關閉並çµæŸå°è©±"],"Sorry, the connection has been lost, and your message could not be sent":["抱æ‰ï¼Œé€£ç·šå·²æ–·é–‹ï¼Œæ‚¨çš„訊æ¯äº¦æœªèƒ½é€å‡º"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["注æ„並éžæ‰€æœ‰ XMPP/Jabber 用戶端軟件皆支æŒè¨Šæ¯å›žæ”¶åŠŸèƒ½ï¼Œé€™æ¢è¨Šæ¯æœ‰å¯èƒ½æœƒæœªè¢«æ”¶å›žã€‚"],"Are you sure you want to retract this message?":["您確定è¦æ”¶å›žé€™æ¢è¨Šæ¯å—Žï¼Ÿ"],"Confirm":["確定"],"You have an unsent message which will be lost if you continue. Are you sure?":["您將會丢失一æ¢æœªé€å‡ºçš„訊æ¯ã€‚確定è¦ç¹¼çºŒå—Žï¼Ÿ"],"Are you sure you want to clear the messages from this conversation?":["確定è¦æ¸…除æ¤å°è©±å…§çš„訊æ¯å—Žï¼Ÿ"],"%1$s has gone offline":["%1$s 已經離線"],"%1$s is busy":["%1$s 忙線ä¸"],"%1$s is online":["%1$s 在線"],"Sorry, something went wrong while trying to refresh":["抱æ‰ï¼Œåœ¨é‡æ–°æ•´ç†æ™‚出錯了"],"Are you sure you want to remove this contact?":["確實è¦ç§»é™¤æ¤é€£çµ¡äººå—Žï¼Ÿ"],"Sorry, there was an error while trying to remove %1$s as a contact.":["抱æ‰ï¼Œå°‡ %1$s 移出連絡人時出錯了。"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["爲了æå‡æ•ˆèƒ½ï¼Œæˆ‘們會在ç€è¦½å™¨å…§éƒ¨è«¸å˜æ‚¨çš„資料。如果這是一臺公共電腦或者您希望您的資料在您登出帳號後被清除,請å–消勾é¸ã€‚如果您在關閉ç€è¦½å™¨å‰æ²¡æœ‰æ‰‹å‹•ç™»å‡ºå¸³è™Ÿï¼Œå¯èƒ½æœƒç•™ä¸‹éƒ¨åˆ†è³‡æ–™æ²¡è¢«åˆªé™¤ã€‚注æ„,OMEMO åŠ å¯†é€šè¨Šç„¡æ³•åœ¨ä¸ä¿¡ä»»çš„è£ç½®ä¸Šå•Ÿç”¨ã€‚"],"This is a trusted device":["這是一部å¯ä»¥ä¿¡ä»»çš„è£ç½®"],"Password":["密碼"],"Create an account":["建立帳戶"],"Don\'t have a chat account?":["没有å°è©±å¸³è™Ÿï¼Ÿ"],"Log in":["登入"],"Disconnected":["連線已斷開"],"Click here to log in anonymously":["點撀æ¤è™•åŒ¿å登入"],"Username":["使用者å稱"],"user@domain":["user@domain"],"Please enter a valid XMPP address":["請輸入有效的 XMPP 地å€"],"Chat Contacts":["å°è©±è¯çµ¡äºº"],"Toggle chat":["é–‹é—œå°è©±è¦–窗"],"Click to restore this chat":["點擊æ¢å¾©å°è©±"],"Minimized":["最å°åŒ–"],"Minimize":["最å°åŒ–"],"Minimize this chat":["最å°åŒ–å°è©±è¦–窗"],"Minimize this groupchat":["最å°åŒ–å°è©±è¦–窗"],"This field is required":["這是必填欄目"],"Join":["åŠ å…¥"],"Enter a new Groupchat":["輸入新的èŠå¤©å®¤"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["èŠå¤©å®¤å稱"],"Groupchat address":["èŠå¤©å®¤åœ°å€"],"Groupchat id is invalid.":["無效的èŠå¤©å®¤ ID。"],"Invite":["邀請"],"Invite someone to this groupchat":["邀請朋å‹åŠ å…¥èŠå¤©å®¤"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["å¯é¸é‚€è«‹åŽŸå› "],"Show groupchats":["顯示èŠå¤©å®¤"],"Server address":["伺æœå™¨åœ°å€"],"Show more information on this groupchat":["顯示更多這間èŠå¤©å®¤çš„資訊"],"Query for Groupchats":["æœå°‹èŠå¤©å®¤"],"Description:":["介紹:"],"Groupchat Address (JID):":["èŠå¤©å®¤åœ°å€ï¼ˆJID):"],"Participants:":["æˆå“¡ï¼š"],"Features:":["特性:"],"Requires authentication":["需è¦èº«ä»½æ ¸é©—"],"Hidden":["éš±è—"],"Requires an invitation":["需è¦é‚€è«‹"],"Moderated":["發言權é™åˆ¶"],"Non-anonymous":["éžåŒ¿å"],"Open":["å°å¤–開放"],"Permanent":["永久èŠå¤©å®¤"],"Public":["公開"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["臨時"],"Unmoderated":["ä¸éœ€ç™¼è¨€æ¬Š"],"conference.example.org":["conference.example.org"],"Groupchats found":["找到èŠå¤©å®¤"],"No groupchats found":["找ä¸åˆ°èŠå¤©å®¤"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["主æŒäººæ˜¯å¯ä»¥è®Šæ›´å…¶ä»–æˆå“¡è§’色(管ç†å“¡å’Œä¸»äººé™¤å¤–)的特殊æˆå“¡ã€‚"],"The default role, implies that you can read and write messages.":["é è¨è§’色,表示您å¯ä»¥æ”¶å—和傳é€è¨Šæ¯ã€‚"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["éŠå®¢åœ¨æœ‰ç™¼è¨€æ¬Šé™åˆ¶çš„èŠå¤©å®¤å…§ä¸å¯ä»¥å‚³é€è¨Šæ¯ã€‚"],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["主人是最高級別的身份。主人å¯ä»¥è®Šæ›´å…¶ä»–所有æˆå“¡çš„角色和身份。"],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["管ç†å“¡æ˜¯ç¬¬äºŒç´šåˆ¥çš„身份。管ç†å“¡å¯ä»¥è®Šæ›´é™¤ä¸»äººå¤–所有æˆå“¡çš„角色和身份。"],"To ban a user, you give them the affiliation of \\"outcast\\".":["è‹¥è¦å°éŽ–æŸå€‹æˆå“¡ï¼Œæ‚¨å¯ä»¥è®Šæ›´å…¶èº«ä»½çˆ²ã€Œé©…é€ã€ã€‚"],"Change role":["變更角色"],"New Role":["新角色"],"Reason":["åŽŸå› "],"Change affiliation":["變更身份"],"New affiliation":["新身份"],"Affiliation":["身份"],"Moderator Tools":["主æŒäººå·¥å…·"],"No users with that affiliation found.":["未找到該身份的æˆå“¡ã€‚"],"No users with that role found.":["未找到該角色的æˆå“¡ã€‚"],"Type here to filter the search results":["在這è£è¼¸å…¥é—œéµå—篩é¸æœå°‹çµæžœ"],"Show users":["顯示æˆå“¡"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["角色的å˜åœ¨æ˜¯çˆ²äº†è¦å®šèŠå¤©å®¤å…§å“ªäº›æˆå“¡èƒ½å¤ åšå‡ºä½•ç¨®è¡Œçˆ²ã€‚角色是作爲權é™çš„一部分被明確或者自動地賦予æˆå“¡çš„。如果æŸå€‹è§’色ä¸æ˜¯ç”±å…¶èº«ä»½è‡ªå‹•ç²å¾—的,這個角色會在其æˆå“¡é›¢é–‹å¾Œè‡ªå‹•å¤±æ•ˆã€‚"],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["身份是一種自帶特定角色的長期權利,隨之而來的還有權力和責任。例如管ç†å“¡å’Œä¸»äººé€™å…©ç¨®èº«ä»½æœƒè‡ªå‹•ç²å¾—主æŒäººé€™ä¸€è§’色。"],"Timeout error while trying to set the affiliation":["è¨å®šèº«ä»½é€¾æ™‚"],"Sorry, you\'re not allowed to make that change":["抱æ‰ï¼Œæ‚¨ä¸è¢«å…許作出æ¤è®Šæ›´"],"Sorry, something went wrong while trying to set the affiliation":["抱æ‰ï¼Œåœ¨å˜—試變更身份時出錯了"],"Affiliation changed":["身份已變更"],"Role changed":["角色已變更"],"You\'re not allowed to make that change":["您ä¸è¢«å…許作出æ¤è®Šæ›´"],"Sorry, something went wrong while trying to set the role":["抱æ‰ï¼Œåœ¨å˜—試è¨å®šè§’色時出錯了"],"Topic":["話題"],"Topic author":["話題定立人"],"Groupchat address (JID)":["èŠå¤©å®¤åœ°å€ï¼ˆJID)"],"Message archiving":["訊æ¯å˜æª”"],"Messages are archived on the server":["訊æ¯å„²å˜åœ¨ä¼ºæœå™¨ä¸Š"],"Description":["介紹"],"Features":["特性"],"This groupchat is not publicly searchable":["這間èŠå¤©å®¤ç„¡æ³•è¢«å…¬é–‹æœå°‹"],"This groupchat is restricted to members only":["這間èŠå¤©å®¤åƒ…é™æœƒå“¡"],"Members only":["僅é™æœƒå“¡"],"Participants entering this groupchat need to request permission to write":["æ–°åŠ å…¥æˆå“¡éœ€è¦ç”³è«‹æ¬Šé™ç™¼è¨€"],"Name":["å稱"],"This groupchat does not require a password upon entry":["åŠ å…¥é€™é–“èŠå¤©å®¤ä¸éœ€è¦å¯†ç¢¼"],"No password required":["ä¸éœ€è¦å¯†ç¢¼"],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["èŠå¤©å®¤å…§æ‰€æœ‰æˆå“¡éƒ½èƒ½å¤ 看見您的 XMPP 地å€"],"Not moderated":["無發言權é™åˆ¶"],"Participants entering this groupchat can write right away":["æ–°åŠ å…¥æˆå“¡èƒ½å¤ 直接發言"],"Online users":["線上人數"],"Anyone can join this groupchat":["任何人都å¯ä»¥åŠ 入這間èŠå¤©å®¤"],"This groupchat requires a password before entry":["åŠ å…¥é€™é–“èŠå¤©å®¤éœ€è¦å¯†ç¢¼"],"Password protected":["å—密碼ä¿è·"],"Persistent":["永久èŠå¤©å®¤"],"This groupchat persists even if it\'s unoccupied":["å³ä½¿æ‰€æœ‰æˆå“¡é›¢é–‹é€™é–“èŠå¤©å®¤ä»ç„¶å˜åœ¨"],"Only moderators can see your XMPP address":["åªæœ‰ä¸»æŒäººçœ‹å¾—見您的 XMPP 地å€"],"This groupchat will disappear once the last person leaves":["這間èŠå¤©å®¤æœƒåœ¨æœ€å¾Œä¸€å€‹æˆå“¡é›¢é–‹å¾Œè‡ªå‹•é—œé–‰"],"This groupchat is publicly searchable":["這間èŠå¤©å®¤å¯ä»¥è¢«å…¬é–‹æœå°‹"],"Groupchat info for %1$s":["%1$s çš„èŠå¤©å®¤è³‡è¨Š"],"You\'re not allowed to send messages in this room":["您ä¸è¢«å…許在這間èŠå¤©å®¤å‚³é€è¨Šæ¯"],"The conversation has moved. Click below to enter.":["這則å°è©±å·²ç¶“被æ¬ç§»ã€‚點擊下方進入。"],"This groupchat no longer exists":["這間èŠå¤©å®¤å·²ç¶“關閉"],"Hide the groupchat topic":["éš±è—èŠå¤©å®¤è©±é¡Œ"],"This groupchat is bookmarked":["這間èŠå¤©å®¤å·²ç¶“è¢«åŠ çˆ²æ›¸ç±¤"],"Enter groupchat":["進入èŠå¤©å®¤"],"Choose a nickname to enter":["進入å‰å…ˆæ€é¸ä¸€å€‹æš±ç¨±"],"Please choose your nickname":["è«‹æ€é¸æ‚¨çš„暱稱"],"This groupchat requires a password":["這間èŠå¤©å®¤éœ€è¦å¯†ç¢¼"],"Password: ":["密碼:"],"Submit":["é€å‡º"],"This user is a moderator.":["æ¤æˆå“¡æ˜¯ä¸»æŒäººã€‚"],"This user can send messages in this groupchat.":["æ¤æˆå“¡èƒ½å¤ 在èŠå¤©å®¤å…§ç™¼è¨€ã€‚"],"This user can NOT send messages in this groupchat.":["æ¤æˆå“¡ä¸èƒ½åœ¨èŠå¤©å®¤å…§ç™¼è¨€ã€‚"],"Owner":["主人"],"Admin":["管ç†å“¡"],"Member":["會員"],"Moderator":["主æŒäºº"],"Visitor":["éŠå®¢"],"Click to mention %1$s in your message.":["按一下在您的訊æ¯å…§æåŠ %1$s。"],"Participants":["æˆå“¡"],"%1$s has entered the groupchat":["%1$s å·²ç¶“åŠ å…¥èŠå¤©å®¤"],"%1$s has left the groupchat":["%1$s 已經離開èŠå¤©å®¤"],"%1$s is now a moderator":["%1$s ç¾åœ¨æˆçˆ²ä¸»æŒäºº"],"%1$s is no longer a moderator":["%1$s ä¸å†æ˜¯ä¸»æŒäºº"],"%1$s has been given a voice":["%1$s 已經被賦予發言權"],"%1$s has been muted":["%1$s 已經被ç¦æ¢ç™¼è¨€"],"%1$s and %2$s":["%1$s å’Œ %2$s"],"%1$s are typing":["%1$s æ£åœ¨è¼¸å…¥"],"%1$s have stopped typing":["%1$s å·²åœæ¢è¼¸å…¥"],"%1$s have gone away":["%1$s 已經離線"],"%1$s have entered the groupchat":["%1$s å·²ç¶“åŠ å…¥èŠå¤©å®¤"],"%1$s have left the groupchat":["%1$s 已經離開èŠå¤©å®¤"],"%1$s are now moderators":["%1$s ç¾åœ¨æˆçˆ²ä¸»æŒäºº"],"%1$s are no longer moderators":["%1$s ä¸å†æ˜¯ä¸»æŒäºº"],"%1$s have been given voices":["%1$s 已經被賦予發言權"],"%1$s have been muted":["%1$s 已經被ç¦æ¢ç™¼è¨€"],"Change user\'s affiliation to admin":["變更æˆå“¡èº«ä»½çˆ²ç®¡ç†å“¡"],"Ban user by changing their affiliation to outcast":["變更æˆå“¡èº«ä»½çˆ²ã€Œé©…é€ã€ä»¥å°éŽ–æˆå“¡"],"Clear the chat area":["清除å°è©±å€åŸŸ"],"Close this groupchat":["關閉èŠå¤©å®¤"],"Change user role to participant":["變更æˆå“¡è§’色爲普通æˆå“¡"],"Remove this groupchat":["移除這間èŠå¤©å®¤"],"Kick user from groupchat":["å°‡æˆå“¡è¸¢å‡ºèŠå¤©å®¤"],"Write in 3rd person":["用第三者身份撰寫"],"Grant membership to a user":["å‡ç´šæˆå“¡çˆ²æœƒå“¡"],"Opens up the moderator tools GUI":["開啟主æŒäººå·¥å…·ç•Œé¢"],"Remove user\'s ability to post messages":["移除æˆå“¡å‚³é€è¨Šæ¯çš„權é™"],"Change your nickname":["變更您的暱稱"],"Grant moderator role to user":["授予æˆå“¡ä¸»æŒäººè§’色"],"Grant ownership of this groupchat":["授予æˆå“¡é€™é–“èŠå¤©å®¤çš„主人身份"],"Register your nickname":["登記您的暱稱"],"Revoke the user\'s current affiliation":["撤回æˆå“¡ç¾åœ¨çš„身份"],"Set groupchat subject":["è¨å®šèŠå¤©å®¤ä¸»é¡Œ"],"Set groupchat subject (alias for /subject)":["è¨å®šèŠå¤©å®¤ä¸»é¡Œï¼ˆç‰åƒ¹æ–¼æŒ‡ä»¤ /subject)"],"Allow muted user to post messages":["å…許ç¦è¨€æˆå“¡å‚³é€è¨Šæ¯"],"You are about to retract this message.":["您在收回這æ¢è¨Šæ¯ã€‚"],"You may optionally include a message, explaining the reason for the retraction.":["您å¯ä»¥é¸æ“‡å¯«ä¸‹æ”¶å›žè¨Šæ¯çš„åŽŸå› ã€‚"],"Message Retraction":["收回信æ¯"],"Optional reason":["å¯é¸åŽŸå› "],"Sorry, you\'re not allowed to retract this message":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ”¶å›žé€™æ¢è¨Šæ¯"],"A timeout occurred while trying to retract the message":["收回訊æ¯é€¾æ™‚"],"Sorry, you\'re not allowed to retract this message.":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ”¶å›žé€™æ¢è¨Šæ¯ã€‚"],"Show more information about this groupchat":["顯示更多關於這間èŠå¤©å®¤çš„資訊"],"Configure":["è¨å®š"],"Configure this groupchat":["è¨å®šèŠå¤©å®¤"],"Invite someone to join this groupchat":["邀請朋å‹åŠ å…¥èŠå¤©å®¤"],"Show topic":["顯示話題"],"Hide topic":["éš±è—話題"],"Show the topic message in the heading":["åœ¨é ‚éƒ¨å±•ç¤ºè©±é¡Œè¨Šæ¯"],"Hide the topic in the heading":["åœ¨é ‚éƒ¨éš±è—話題"],"Moderate":["發言權"],"Moderate this groupchat":["åŠ å…¥ç™¼è¨€æ¬Šé™åˆ¶"],"Destroy":["關閉èŠå¤©å®¤"],"Leave":["離開"],"Leave and close this groupchat":["離開並關閉èŠå¤©å®¤"],"Are you sure you want to leave this groupchat?":["您確定è¦é›¢é–‹é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"Hide the list of participants":["éš±è—æˆå“¡æ¸…å–®"],"Forbidden: you do not have the necessary role in order to do that.":["被ç¦æ¢ï¼šæ‚¨çš„è§’è‰²æ²¡æœ‰è¶³å¤ æ¬Šé™ã€‚"],"Forbidden: you do not have the necessary affiliation in order to do that.":["被ç¦æ¢ï¼šæ‚¨çš„èº«ä»½æ²¡æœ‰è¶³å¤ æ¬Šé™ã€‚"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["錯誤:「%1$sã€æŒ‡ä»¤è®€å…¥å…©å€‹åƒæ•¸ï¼ŒåŒ…括æˆå“¡çš„暱稱和一個å¯é¸åŽŸå› 。"],"Error: couldn\'t find a groupchat participant based on your arguments":["錯誤:找ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„èŠå¤©å®¤æˆå“¡"],"Error: found multiple groupchat participant based on your arguments":["錯誤:找到ä¸æ¢ä¸€å€‹èŠå¤©å®¤æˆå“¡"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["未找到符åˆè©²æš±ç¨±çš„èŠå¤©å®¤æˆå“¡ã€‚他們å¯èƒ½å·²ç¶“離開了èŠå¤©å®¤ã€‚"],"Sorry, an error happened while running the command.":["抱æ‰ï¼Œé‹è¡ŒæŒ‡ä»¤æ™‚發生錯誤。"],"Check your browser\'s developer console for details.":["詳細情形請檢查您的ç€è¦½å™¨é–‹ç™¼è€…工具。"],"Are you sure you want to destroy this groupchat?":["您確定è¦é—œé–‰é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"Please enter the XMPP address of this groupchat to confirm":["請輸入這間èŠå¤©å®¤çš„ XMPP 地å€ä»¥ç¢ºèª"],"name@example.org":["name@example.org"],"Optional reason for destroying this groupchat":["é¸å¡«é—œé–‰é€™é–“èŠå¤©å®¤çš„åŽŸå› "],"Optional XMPP address for a new groupchat that replaces this one":["é¸å¡«æ›¿ä»£çš„æ–°èŠå¤©å®¤ XMPP 地å€"],"replacement@example.org":["replacement@example.org"],"Your nickname is \\"%1$s\\"":["您的暱稱爲「%1$sã€"],"Error: invalid number of arguments":["錯誤:無效的åƒæ•¸æ•¸é‡"],"This action was done by %1$s.":["這個動作由 %1$s åšå‡ºã€‚"],"The reason given is: \\"%1$s\\".":["給出的ç†ç”±æ˜¯ï¼š%1$s。"],"Groupchats":["èŠå¤©å®¤"],"Add a new groupchat":["新增èŠå¤©å®¤"],"Query for groupchats":["æœå°‹èŠå¤©å®¤"],"Sorry, an error occurred while trying to submit the config form.":["抱æ‰ï¼Œå˜—試é€å‡ºé…置時éé‡éŒ¯èª¤ã€‚"],"Close these announcements":["關閉這些æ醒"],"Announcements":["æ醒"],"Click to open this server message":["點擊展開這æ¢ä¼ºæœå™¨è¨Šæ¯"],"Notification from %1$s":["來自 %1$s 的通知"],"%1$s says":["%1$s 說"],"has gone offline":["已經離線"],"has gone away":["已經離開"],"is busy":["æ£åœ¨å¿™ç¢Œ"],"has come online":["已經上線"],"wants to be your contact":["想æˆçˆ²æ‚¨çš„è¯çµ¡äºº"],"Hide":["éš±è—"],"Execute":["執行"],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":["找到指令"],"List available commands":["列出å¯ç”¨æŒ‡ä»¤"],"No commands found":["找ä¸åˆ°æŒ‡ä»¤"],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["抱æ‰ï¼ŒåŸ·è¡ŒæŒ‡ä»¤æ™‚出錯。詳細資訊請檢視開發者主控臺"],"About":["關於"],"Commands":["指令"],"Settings":["è¨å®š"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["ç”± %3$s Opkode %2$s 帶來的 %1$s 開放原始碼 %2$s XMPP 用戶端å°è©±è»Ÿä»¶"],"%1$s Translate %2$s it into your own language":["将它 %1$s ç¿»è¯ %2$s 到您的語言"],"Log out":["登出"],"Click to change your chat status":["點擊變更您的線上狀態"],"Show details about this chat client":["展示關於æ¤å°è©±è»Ÿä»¶çš„詳細資訊"],"Your avatar image":["您的é åƒå½±åƒ"],"Checkbox for selecting the following fingerprint":["æ€é¸ä¸‹åˆ—指紋的勾é¸æ¡†"],"Device without a fingerprint":["没有指紋的è£ç½®"],"Checkbox for selecting the following device":["æ€é¸ä¸‹åˆ—è£ç½®çš„勾é¸æ¡†"],"Other OMEMO-enabled devices":["其它啟用了 OMEMO åŠ å¯†çš„è£ç½®"],"Checkbox to select fingerprints of all other OMEMO devices":["æ€é¸å…¶é¤˜æ‰€æœ‰ OMEMO åŠ å¯†è£ç½®æŒ‡ç´‹çš„勾é¸æ¡†"],"Remove checked devices and close":["移除已勾é¸çš„è£ç½®ä¸¦é—œé–‰"],"Select all":["æ€é¸å…¨éƒ¨"],"This device\'s OMEMO fingerprint":["這部è£ç½®çš„ OMEMO 指紋"],"Generate new keys and fingerprint":["ç”¢ç”Ÿæ–°çš„åŠ å¯†é‡‘é‘°å’ŒæŒ‡ç´‹"],"Your Profile":["您的個人資料"],"XMPP Address (JID)":["XMPP 地å€ï¼ˆJID)"],"Save and close":["儲å˜ä¸¦é—œé–‰"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["使用逗號分隔多個角色。您的角色會在å°è©±è¨Šå…§å±•ç¤ºåœ¨æ‚¨çš„å稱æ—邊。"],"OMEMO":["OMEMO"],"Profile":["個人資料"],"Sorry, an error happened while trying to save your profile data.":["抱æ‰ï¼Œå„²å˜æ‚¨çš„個人資料時發生錯誤。"],"You can check your browser\'s developer console for any error output.":["您å¯ä»¥åœ¨æ‚¨ç€è¦½å™¨å…§çš„開發者工具ä¸æª¢è¦–所有輸出的錯誤。"],"Away":["離開"],"Busy":["忙碌"],"Custom status":["自定義狀態"],"Offline":["離線"],"Online":["在線"],"Away for long":["長時間離開"],"Change chat status":["變更線上狀態"],"Personal status message":["個人狀態訊æ¯"],"I am %1$s":["我ç¾åœ¨ %1$s"],"Are you sure you want to log out?":["您确定è¦ç™»å‡ºå—Žï¼Ÿ"],"online":["在線"],"busy":["忙碌"],"away for long":["長時間離開"],"away":["離開"],"offline":["離線"],"Sorry, could not decrypt a received OMEMO message due to an error.":["抱æ‰ï¼Œè§£å¯†ä¸€æ¢ OMEMO åŠ å¯†è¨Šæ¯æ™‚é‡åˆ°äº†éŒ¯èª¤ã€‚"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ä¼¼ä¹Žæ²¡æœ‰æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šçš„ç”¨æˆ¶ç«¯è»Ÿä»¶ã€‚é€™é–“èŠå¤©å®¤å°‡ä¸èƒ½å†é€²è¡ŒåŠ 密通訊。"],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["無法在這間èŠå¤©å®¤å…§ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› çˆ²é€™æ˜¯å€‹åŒ¿åèŠå¤©å®¤ï¼Œæˆ–是有æˆå“¡ä¸æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šã€‚"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["ç„¡æ³•ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› çˆ² %1$s 所使用的用戶端軟件ä¸æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šã€‚"],"Messages are being sent in plaintext":["訊æ¯å·²ç”¨ç´”æ–‡å—å½¢å¼å‚³é€"],"Messages are sent encrypted":["訊æ¯å°‡è¢«åŠ 密傳é€"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["è‹¥è¦æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šï¼Œé€™é–“èŠå¤©å®¤å¿…é ˆåƒ…é™æœƒå“¡ä¸¦ä¸”éžåŒ¿å"],"Sorry, an error occurred while trying to remove the devices.":["抱æ‰ï¼Œç§»é™¤è£ç½®æ™‚éé‡éŒ¯èª¤ã€‚"],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["您確定è¦ç”¢ç”Ÿæ–°çš„ OMEMO åŠ å¯†é‡‘é‘°å—Žï¼Ÿé€™æœƒç§»é™¤æ‚¨çš„èˆŠå¯†é‘°ï¼Œä¸¦ä¸”ä¹‹å‰æ‰€æœ‰çš„åŠ å¯†è¨Šæ¯éƒ½ç„¡æ³•å†åœ¨é€™éƒ¨è£ç½®ä¸Šè§£å¯†ã€‚"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["抱æ‰ï¼Œç„¡æ³•å‚³é€åŠ 密訊æ¯ï¼Œå› 爲 %1$s è¦æ±‚您先訂閱他的線上狀態æ‰èƒ½æª¢è¦–ä»–çš„ OMEMO 密鑰資訊"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["抱æ‰ï¼Œç„¡æ³•é€å‡ºåŠ 密訊æ¯ï¼Œå› 爲找ä¸åˆ° %1$s çš„é 端伺æœå™¨"],"Unable to send an encrypted message due to an unexpected error.":["é€å‡ºåŠ 密訊æ¯æ™‚發生了未é 期的錯誤。"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["抱æ‰ï¼Œæ‰¾ä¸åˆ°å¯ä»¥å‚³é€ OMEMO åŠ å¯†è¨Šæ¯çš„è£ç½®ã€‚"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["您的用戶端軟件似乎ä¸æ”¯æ´é€™ä¸€æ¢ OMEMO åŠ å¯†è¨Šæ¯ã€‚更多有關資訊å¯ä»¥åœ¨ https://conversations.im/omemo 上查閱"]," e.g. conversejs.org":[" è¬å¦‚ conversejs.org"],"Fetch registration form":["å–得註冊表單"],"Tip: A list of public XMPP providers is available":["æ示:有一份公眾 XMPP 供應商清單"],"here":["這è£"],"Sorry, we\'re unable to connect to your chosen provider.":["抱æ‰ï¼Œç„¡æ³•é€£ç·šåˆ°æ‚¨æ‰€æ€é¸çš„供應商。"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["抱æ‰ï¼Œé€™å€‹ä¾›æ‡‰å•†ä¸æ”¯æ´è»Ÿä»¶å…§è¨»å†Šå¸³è™Ÿã€‚請嘗試æ›ä¸€å€‹ä¾›æ‡‰å•†ã€‚"],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["與 %1$s 建立連線時出ç¾äº†å•é¡Œã€‚您確定它的确å˜åœ¨å—Žï¼Ÿ"],"Now logging you in":["æ£åœ¨çˆ²æ‚¨ç™»å…¥"],"Registered successfully":["登記æˆåŠŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["供應商拒絕了您的註冊嘗試。請檢查您所輸入的內容是å¦æ£ç¢ºã€‚"],"Leave this groupchat":["離開這間èŠå¤©å®¤"],"Click to toggle the list of open groupchats":["按一下開關已開啟的èŠå¤©å®¤æ¸…å–®"],"Open Groupchats":["已開啟的èŠå¤©å®¤"],"Are you sure you want to leave the groupchat %1$s?":["您確定è¦é›¢é–‹èŠå¤©å®¤ã€Œ%1$sã€å—Žï¼Ÿ"],"Add":["新增"],"Add a Contact":["新增è¯çµ¡äºº"],"This contact is busy":["æ¤è¯çµ¡äººæ£åœ¨å¿™ç¢Œ"],"This contact is online":["æ¤è¯çµ¡äººåœ¨ç·šä¸Š"],"This contact is offline":["æ¤è¯çµ¡äººå·²ç¶“離線"],"This contact is unavailable":["æ¤è¯çµ¡äººä¸å¯ç”¨"],"This contact is away for an extended period":["æ¤è¯çµ¡äººå·²ç¶“離開了一段時間"],"This contact is away":["æ¤è¯çµ¡äººå·²ç¶“離開"],"Contact name":["è¯çµ¡äººå稱"],"Optional nickname":["å¯é¸åŒ¿ç¨±"],"Sorry, could not find a contact with that name":["抱æ‰ï¼Œæ‰¾ä¸åˆ°ç¬¦åˆè©²å稱的è¯çµ¡äºº"],"This contact has already been added":["æ¤äººå·²ç¶“是您的è¯çµ¡äºº"],"Filter":["篩é¸å™¨"],"Filter by contact name":["以è¯çµ¡äººå稱篩é¸"],"Filter by group name":["以分組å稱篩é¸"],"Filter by status":["以線上狀態篩é¸"],"Any":["所有"],"Unread":["未讀"],"Chatty":["æ£åœ¨å°è©±"],"Extended Away":["離開了一段時間"],"Click to remove %1$s as a contact":["按一下將 %1$s 移出è¯çµ¡äºº"],"Click to accept the contact request from %1$s":["按一下åŒæ„ %1$s 的新增è¯çµ¡äººè«‹æ±‚"],"Click to decline the contact request from %1$s":["按一下拒絕 %1$s 的新增è¯çµ¡äººè«‹æ±‚"],"Click to chat with %1$s (XMPP address: %2$s)":["點一下與 %1$s (XMPP 地å€ï¼š%2$s)展開å°è©±"],"Are you sure you want to decline this contact request?":["您確定è¦æ‹’絕這個新增è¯çµ¡äººè«‹æ±‚嗎?"],"Contacts":["è¯çµ¡äºº"],"Add a contact":["新增è¯çµ¡äºº"],"Re-sync your contacts":["é‡æ–°æ•´ç†æ‚¨çš„è¯çµ¡äºº"]}}}')}}]); +(window.webpackJsonp=window.webpackJsonp||[]).push([[177],{543:function(e){e.exports=JSON.parse('{"domain":"converse","locale_data":{"converse":{"":{"domain":"converse","plural_forms":"nplurals=1; plural=0;","lang":"zh_TW"},"Create your account":["建立您的帳號"],"Please enter the XMPP provider to register with:":["請輸入è¦è¨»å†Šçš„ XMPP 供應商:"],"Already have a chat account?":["已經æ“有èŠå¤©å¸³è™Ÿï¼Ÿ"],"Log in here":["在æ¤ç™»å…¥"],"Account Registration:":["帳號註冊:"],"Register":["註冊"],"Choose a different provider":["é¸æ“‡ä¸€å€‹ä¸åŒçš„供應商"],"Hold tight, we\'re fetching the registration form…":["ç¨ç‰ï¼Œæˆ‘們æ£åœ¨å–得註冊表單…"],"Cancel":["å–消"],"The connection has dropped, attempting to reconnect.":["連線已ä¸æ–·ï¼Œå˜—試é‡æ–°é€£ç·šã€‚"],"An error occurred while connecting to the chat server.":["連線到èŠå¤©ä¼ºæœå™¨æ™‚éé‡éŒ¯èª¤ã€‚"],"Your XMPP address and/or password is incorrect. Please try again.":["您的 XMPP 地å€æˆ–密碼錯誤。請é‡è©¦ã€‚"],"Sorry, we could not connect to the XMPP host with domain: %1$s":["抱æ‰ï¼Œæˆ‘們無法使用域å「%1$sã€ä¾†é€£ç·š XMPP 主機"],"The XMPP server did not offer a supported authentication mechanism":["æ¤ XMPP 伺æœå™¨ä¸æ供支æ´çš„èªè‰æ©Ÿåˆ¶"],"Undecryptable OMEMO message":["ç„¡æ³•åŠ å¯†çš„ OMEMO 訊æ¯"],"Sorry, could not determine upload URL.":["抱æ‰ï¼Œç„¡æ³•ç¢ºå®šä¸Šå‚³ URL。"],"Sorry, could not determine file upload URL.":["抱æ‰ï¼Œç„¡æ³•ç¢ºå®šæª”案上傳 URL。"],"Sorry, could not succesfully upload your file. Your server’s response: \\"%1$s\\"":["抱æ‰ï¼Œæ‚¨çš„檔案上傳ä¸æˆåŠŸã€‚您的伺æœå™¨å›žæ‡‰ï¼š\\"%1$s\\""],"Sorry, could not succesfully upload your file.":["抱æ‰ï¼Œæ‚¨çš„檔案上傳ä¸æˆåŠŸã€‚"],"You\'re not allowed to retract your message.":["您ä¸è¢«å…許收回這æ¢è¨Šæ¯ã€‚"],"Sorry, an error occurred while trying to retract your message.":["抱æ‰ï¼Œåœ¨æ”¶å›žè¨Šæ¯æ™‚出錯了。"],"You\'re not allowed to send a message.":["您ä¸è¢«å…許傳é€è¨Šæ¯ã€‚"],"Sorry, an error occurred while trying to send your message.":["抱æ‰ï¼Œé€å‡ºè¨Šæ¯æ™‚出錯了。"],"Sorry, looks like file upload is not supported by your server.":["抱æ‰ï¼Œçœ‹ä¾†æ‚¨çš„伺æœå™¨ä¸æ”¯æ´æª”案上傳。"],"The size of your file, %1$s, exceeds the maximum allowed by your server, which is %2$s.":["æ‚¨çš„æª”æ¡ˆå¤§å° %1$s 超éŽäº†æ‚¨çš„伺æœå™¨é™åˆ¶ %2$s。"],"Smileys and emotions":["表情"],"People":["人"],"Activities":["活動"],"Travel":["æ—…è¡Œ"],"Objects":["物件"],"Animals and nature":["動物與自然"],"Food and drink":["飲食"],"Symbols":["符號"],"Flags":["旗幟"],"Stickers":["貼紙"],"This groupchat is not anonymous":["這間èŠå¤©å®¤ä¸æ˜¯åŒ¿åçš„"],"This groupchat now shows unavailable members":["這間èŠå¤©å®¤ç¾åœ¨æœƒé¡¯ç¤ºä¸å¯ç”¨çš„æˆå“¡"],"This groupchat does not show unavailable members":["這間èŠå¤©å®¤ä¸æœƒé¡¯ç¤ºä¸å¯ç”¨çš„æˆå“¡"],"The groupchat configuration has changed":["èŠå¤©å®¤é…置已變更"],"Groupchat logging is now enabled":["ç¾å·²å•Ÿç”¨èŠå¤©å®¤èŠå¤©ç´€éŒ„"],"Groupchat logging is now disabled":["ç¾å·²ç¦ç”¨èŠå¤©å®¤èŠå¤©ç´€éŒ„"],"This groupchat is now no longer anonymous":["這間èŠå¤©å®¤ç¾åœ¨ä¸å†åŒ¿å"],"This groupchat is now semi-anonymous":["這間èŠå¤©å®¤ç¾åœ¨æ˜¯åŠåŒ¿å"],"This groupchat is now fully-anonymous":["這間èŠå¤©å®¤ç¾åœ¨å®Œå…¨åŒ¿å"],"A new groupchat has been created":["建立了新的èŠå¤©å®¤"],"Your nickname has been automatically set to %1$s":["您的暱稱已自動è¨ç½®çˆ² %1$s"],"Your nickname has been changed to %1$s":["您的暱稱已變更爲 %1$s"],"You have been banned from this groupchat":["您被ç¦æ¢åŠ 入這間èŠå¤©å®¤"],"You have exited this groupchat due to a technical problem":["由於技術å•é¡Œï¼Œæ‚¨å·²ç¶“被移出這間èŠå¤©å®¤"],"You have been kicked from this groupchat":["您被踢出了這間èŠå¤©å®¤"],"You have been removed from this groupchat because of an affiliation change":["由於身份的變動,您已經被移除出這間èŠå¤©å®¤"],"You have been removed from this groupchat because the groupchat has changed to members-only and you\'re not a member":["您已經被移除出這間èŠå¤©å®¤ï¼Œå› 爲èŠå¤©å®¤å·²è®Šç‚ºåƒ…é™æœƒå“¡ï¼Œè€Œæ‚¨ä¸æ˜¯æœƒå“¡"],"You have been removed from this groupchat because the service hosting it is being shut down":["您已經被移除出這間èŠå¤©å®¤ï¼Œå› 爲託管它的æœå‹™æ£åœ¨é—œé–‰"],"Your retraction was not delivered because you\'re not present in the groupchat.":["您的訊æ¯æœªè¢«æ”¶å›žï¼Œå› 爲您ä¸åœ¨èŠå¤©å®¤å…§ã€‚"],"Your message was not delivered because you weren\'t allowed to send it.":["您的訊æ¯æœªè¢«å‚³é€ï¼Œå› 爲您未被å…許é€å‡ºè¨Šæ¯ã€‚"],"Your message was not delivered because you\'re not present in the groupchat.":["您的訊æ¯æœªè¢«å‚³é€ï¼Œå› 爲您ä¸åœ¨èŠå¤©å®¤å…§ã€‚"],"A timeout happened while while trying to retract your message.":["收回訊æ¯é€¾æ™‚。"],"You\'re not allowed to register yourself in this groupchat.":["您未被å…許在這間èŠå¤©å®¤ç™»è¨˜ã€‚"],"You\'re not allowed to register in this groupchat because it\'s members-only.":["您未被å…許在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲它僅é™æœƒå“¡ã€‚"],"Can\'t register your nickname in this groupchat, it doesn\'t support registration.":["您的暱稱無法在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲這間èŠå¤©å®¤ä¸æ”¯æ´ç™»è¨˜æš±ç¨±ã€‚"],"Can\'t register your nickname in this groupchat, invalid data form supplied.":["您的暱稱無法在這間èŠå¤©å®¤ç™»è¨˜ï¼Œå› 爲它包å«ç„¡æ•ˆæ ¼å¼ã€‚"],"Topic set by %1$s":["%1$s è¨å®šäº†è©±é¡Œ"],"Topic cleared by %1$s":["%1$s 清除了話題"],"%1$s has been banned by %2$s":["%1$s 已經被 %2$s å°éŽ–"],"%1$s has been banned":["%1$s 已經被å°éŽ–"],"%1$s\'s nickname has changed":["%1$s 的暱稱已變更"],"%1$s has been kicked out by %2$s":["%1$s 已經被 %2$s 踢出èŠå¤©å®¤"],"%1$s has been kicked out":["%1$s 已經被踢出èŠå¤©å®¤"],"%1$s has been removed because of an affiliation change":["由於身份的變動,%1$s 已經被移除"],"%1$s has been removed for not being a member":["由於ä¸æ˜¯æœƒå“¡ï¼Œ%1$s 已經被移除"],"%1$s is no longer an admin of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„管ç†å“¡"],"%1$s is no longer an owner of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„主人"],"%1$s is no longer banned from this groupchat":["%1$s ä¸å†è¢«é€™é–“èŠå¤©å®¤å°éŽ–"],"%1$s is no longer a member of this groupchat":["%1$s ä¸å†æ˜¯é€™é–“èŠå¤©å®¤çš„會員"],"%1$s is now a member of this groupchat":["%1$s ç¾åœ¨æˆçˆ²é€™é–“èŠå¤©å®¤çš„會員"],"%1$s is now an %2$s of this groupchat":["%1$s ç¾åœ¨æˆçˆ²é€™é–“èŠå¤©å®¤çš„ %2$s"],"The nickname you chose is reserved or currently in use, please choose a different one.":["您所æ€é¸çš„暱稱已經被ä¿ç•™æˆ–是已經有人使用,請æ›ä¸€å€‹æš±ç¨±ã€‚"],"Password incorrect":["密碼ä¸æ£ç¢º"],"You are not on the member list of this groupchat.":["您並éžé€™é–“èŠå¤©å®¤æˆå“¡ã€‚"],"You have been banned from this groupchat.":["您被ç¦æ¢åŠ 入這間èŠå¤©å®¤ã€‚"],"You are not allowed to create new groupchats.":["您ä¸è¢«å…許建立èŠå¤©å®¤ã€‚"],"Your nickname doesn\'t conform to this groupchat\'s policies.":["您的暱稱ä¸ç¬¦åˆé€™é–“èŠå¤©å®¤æ¨™æº–。"],"This groupchat does not (yet) exist.":["這間èŠå¤©å®¤ä¸å˜åœ¨ã€‚"],"This groupchat has reached its maximum number of participants.":["這間èŠå¤©å®¤äººæ•¸å·²æ»¿ã€‚"],"Remote server not found":["找ä¸åˆ°é 端伺æœå™¨"],"The explanation given is: \\"%1$s\\".":["得到的回應是「%1$sã€ã€‚"],"%1$s has invited you to join a groupchat: %2$s":["%1$s é‚€è«‹æ‚¨åŠ å…¥èŠå¤©å®¤ï¼š%2$s"],"%1$s has invited you to join a groupchat: %2$s, and left the following reason: \\"%3$s\\"":["%1$s é‚€è«‹æ‚¨åŠ å…¥èŠå¤©å®¤ï¼š%2$sï¼Œä¸¦ä¸”ç•™ä¸‹åŽŸå› ã€Œ%3$sã€"],"Error":["錯誤"],"Sorry, something went wrong while trying to save your bookmark.":["抱æ‰ï¼Œåœ¨å˜—試儲å˜æ›¸ç±¤æ™‚出錯。"],"Timeout Error":["逾時錯誤"],"The server did not return your bookmarks within the allowed time. You can reload the page to request them again.":["伺æœå™¨æœªåœ¨éŸ¿æ‡‰æ™‚間內返回書籤。您å¯ä»¥å˜—試é‡æ–°è¼‰å…¥æœ¬é é¢ã€‚"],"My contacts":["è¯çµ¡äºº"],"Pending contacts":["å·²é€å‡ºçš„è¯çµ¡äººè«‹æ±‚"],"Contact requests":["新增è¯çµ¡äººè«‹æ±‚"],"Ungrouped":["未分組"],"New messages":["新訊æ¯"],"Sorry, there was an error while trying to add %1$s as a contact.":["抱æ‰ï¼Œå˜—試新增 %1$s 爲è¯çµ¡äººæ™‚é‡åˆ°äº†éŒ¯èª¤ã€‚"],"This client does not allow presence subscriptions":["æ¤ç”¨æˆ¶ç«¯è»Ÿä»¶ä¸æ”¯æ´ç·šä¸Šç‹€æ…‹è¨‚é–±"],"Click to hide these contacts":["按一下隱è—這些è¯çµ¡äºº"],"Unbookmark this groupchat":["å°‡èŠå¤©å®¤ç§»å‡ºæ›¸ç±¤"],"Click to open this groupchat":["按一下開啟èŠå¤©å®¤å°è©±"],"Click to toggle the bookmarks list":["按一下開關書籤清單"],"Bookmarks":["書籤"],"Bookmark this groupchat":["å°‡èŠå¤©å®¤åŠ 入書籤"],"Would you like this groupchat to be automatically joined upon startup?":["æ‚¨å¸Œæœ›åœ¨å•Ÿå‹•æ™‚è‡ªå‹•åŠ å…¥é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"The name for this bookmark:":["書籤å稱:"],"What should your nickname for this groupchat be?":["您希望在這間èŠå¤©å®¤çš„用什麼暱稱?"],"Save":["儲å˜"],"Are you sure you want to remove the bookmark \\"%1$s\\"?":["確定è¦ç§»é™¤æ›¸ç±¤ã€Œ%1$sã€å—Žï¼Ÿ"],"Unbookmark":["移出書籤"],"Bookmark":["åŠ å…¥æ›¸ç±¤"],"Close":["關閉"],"OK":["好的"],"Image: ":["å½±åƒï¼š "],"Download audio file \\"%1$s\\"":["下載音訊檔案「%1$sã€"],"Download file \\"%1$s\\"":["下載檔案「%1$sã€"],"Cancel Editing":["å–消編輯"],"Edit":["編輯"],"Retract":["收回"],"Message versions":["訊æ¯ç‰ˆæœ¬"],"Retry":["å†æ¬¡å˜—試"],"Uploading file:":["æ£åœ¨ä¸Šå‚³æª”案:"],"%1$s has removed this message":["%1$s 移除了這æ¢è¨Šæ¯"],"This message has been edited":["這æ¢è¨Šæ¯å·²ç¶“被編輯"],"Show more":["顯示更多"],"Show less":["顯示簡略"],"No message history available.":["ç„¡æ·å²è¨Šæ¯ã€‚"],"Search results":["æœå°‹çµæžœ"],"Search":["æœå°‹"],"Insert emojis":["æ’入表情圖標"],"Send the message":["é€å‡ºè¨Šæ¯"],"Start a call":["開始通話"],"Message characters remaining":["訊æ¯å‰©é¤˜å—數"],"Hide participants":["éš±è—æˆå“¡"],"Show participants":["顯示æˆå“¡"],"Choose a file to send":["é¸æ“‡è¦å‚³é€çš„檔案"],"Click to write as a normal (non-spoiler) message":["按一下撰寫純文å—訊æ¯"],"Click to write your message as a spoiler":["按一下以è±å¯Œæ–‡å—æ ¼å¼æ’°å¯«è¨Šæ¯"],"The User\'s Profile Image":["使用者é åƒ"],"Trusted":["ä¿¡ä»»"],"Untrusted":["ä¸ä¿¡ä»»"],"OMEMO Fingerprints":["OMEMO 指紋"],"No OMEMO-enabled devices found":["没有找到啟用了 OMEMO çš„è£ç½®"],"Remove as contact":["移除è¯çµ¡äºº"],"XMPP Address":["XMPP 地å€"],"Email":["é›»å郵件"],"Full Name":["å…¨å"],"Nickname":["暱稱"],"Refresh":["é‡æ–°æ•´ç†"],"Role":["角色"],"URL":["URL"],"%1$s is typing":["%1$s æ£åœ¨è¼¸å…¥"],"%1$s has stopped typing":["%1$s å·²åœæ¢è¼¸å…¥"],"%1$s has gone away":["%1$s 已經離線"],"Remove messages":["移除訊æ¯"],"Close this chat":["關閉å°è©±"],"Write in the third person":["以第三者身份撰寫"],"Show this menu":["顯示æ¤é¸å–®"],"Hidden message":["ç§è¨Š"],"Message":["訊æ¯"],"Optional hint":["å¯é¸æ示"],"You have unread messages":["您有未讀訊æ¯"],"Details":["詳細資訊"],"See more information about this person":["顯示更多關於æ¤äººçš„資訊"],"Close and end this conversation":["關閉並çµæŸå°è©±"],"Sorry, the connection has been lost, and your message could not be sent":["抱æ‰ï¼Œé€£ç·šå·²æ–·é–‹ï¼Œæ‚¨çš„訊æ¯äº¦æœªèƒ½é€å‡º"],"Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere.":["注æ„並éžæ‰€æœ‰ XMPP/Jabber 用戶端軟件皆支æŒè¨Šæ¯å›žæ”¶åŠŸèƒ½ï¼Œé€™æ¢è¨Šæ¯æœ‰å¯èƒ½æœƒæœªè¢«æ”¶å›žã€‚"],"Are you sure you want to retract this message?":["您確定è¦æ”¶å›žé€™æ¢è¨Šæ¯å—Žï¼Ÿ"],"Confirm":["確定"],"You have an unsent message which will be lost if you continue. Are you sure?":["您將會丢失一æ¢æœªé€å‡ºçš„訊æ¯ã€‚確定è¦ç¹¼çºŒå—Žï¼Ÿ"],"Are you sure you want to clear the messages from this conversation?":["確定è¦æ¸…除æ¤å°è©±å…§çš„訊æ¯å—Žï¼Ÿ"],"%1$s has gone offline":["%1$s 已經離線"],"%1$s is busy":["%1$s 忙線ä¸"],"%1$s is online":["%1$s 在線"],"Sorry, something went wrong while trying to refresh":["抱æ‰ï¼Œåœ¨é‡æ–°æ•´ç†æ™‚出錯了"],"Are you sure you want to remove this contact?":["確實è¦ç§»é™¤æ¤é€£çµ¡äººå—Žï¼Ÿ"],"Sorry, there was an error while trying to remove %1$s as a contact.":["抱æ‰ï¼Œå°‡ %1$s 移出連絡人時出錯了。"],"To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It\'s important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available.":["爲了æå‡æ•ˆèƒ½ï¼Œæˆ‘們會在ç€è¦½å™¨å…§éƒ¨è«¸å˜æ‚¨çš„資料。如果這是一臺公共電腦或者您希望您的資料在您登出帳號後被清除,請å–消勾é¸ã€‚如果您在關閉ç€è¦½å™¨å‰æ²¡æœ‰æ‰‹å‹•ç™»å‡ºå¸³è™Ÿï¼Œå¯èƒ½æœƒç•™ä¸‹éƒ¨åˆ†è³‡æ–™æ²¡è¢«åˆªé™¤ã€‚注æ„,OMEMO åŠ å¯†é€šè¨Šç„¡æ³•åœ¨ä¸ä¿¡ä»»çš„è£ç½®ä¸Šå•Ÿç”¨ã€‚"],"This is a trusted device":["這是一部å¯ä»¥ä¿¡ä»»çš„è£ç½®"],"Password":["密碼"],"Create an account":["建立帳戶"],"Don\'t have a chat account?":["没有å°è©±å¸³è™Ÿï¼Ÿ"],"Log in":["登入"],"Disconnected":["連線已斷開"],"Click here to log in anonymously":["點撀æ¤è™•åŒ¿å登入"],"Username":["使用者å稱"],"user@domain":["使用者@域å"],"Please enter a valid XMPP address":["請輸入有效的 XMPP 地å€"],"Chat Contacts":["å°è©±è¯çµ¡äºº"],"Toggle chat":["é–‹é—œå°è©±è¦–窗"],"Click to restore this chat":["點擊æ¢å¾©å°è©±"],"Minimized":["最å°åŒ–"],"Minimize":["最å°åŒ–"],"Minimize this chat":["最å°åŒ–å°è©±è¦–窗"],"Minimize this groupchat":["最å°åŒ–å°è©±è¦–窗"],"This user is a moderator.":["æ¤æˆå“¡æ˜¯ä¸»æŒäººã€‚"],"This user can send messages in this groupchat.":["æ¤æˆå“¡èƒ½å¤ 在èŠå¤©å®¤å…§ç™¼è¨€ã€‚"],"This user can NOT send messages in this groupchat.":["æ¤æˆå“¡ä¸èƒ½åœ¨èŠå¤©å®¤å…§ç™¼è¨€ã€‚"],"Owner":["主人"],"Admin":["管ç†å“¡"],"Member":["會員"],"Moderator":["主æŒäºº"],"Visitor":["éŠå®¢"],"Click to mention %1$s in your message.":["按一下在您的訊æ¯å…§æåŠ %1$s。"],"Participants":["æˆå“¡"],"This field is required":["這是必填欄目"],"Join":["åŠ å…¥"],"Enter a new Groupchat":["輸入新的èŠå¤©å®¤"],"name@conference.example.org":["name@conference.example.org"],"Groupchat name":["èŠå¤©å®¤å稱"],"Groupchat address":["èŠå¤©å®¤åœ°å€"],"Groupchat id is invalid.":["無效的èŠå¤©å®¤ ID。"],"Invite":["邀請"],"Invite someone to this groupchat":["邀請朋å‹åŠ å…¥èŠå¤©å®¤"],"user@example.org":["user@example.org"],"Optional reason for the invitation":["å¯é¸é‚€è«‹åŽŸå› "],"Show groupchats":["顯示èŠå¤©å®¤"],"Server address":["伺æœå™¨åœ°å€"],"Show more information on this groupchat":["顯示更多這間èŠå¤©å®¤çš„資訊"],"Query for Groupchats":["æœå°‹èŠå¤©å®¤"],"Description:":["介紹:"],"Groupchat Address (JID):":["èŠå¤©å®¤åœ°å€ï¼ˆJID):"],"Participants:":["æˆå“¡ï¼š"],"Features:":["特性:"],"Requires authentication":["需è¦èº«ä»½æ ¸é©—"],"Hidden":["éš±è—"],"Requires an invitation":["需è¦é‚€è«‹"],"Moderated":["發言權é™åˆ¶"],"Non-anonymous":["éžåŒ¿å"],"Open":["å°å¤–開放"],"Permanent":["永久èŠå¤©å®¤"],"Public":["公開"],"Semi-anonymous":["åŠåŒ¿å"],"Temporary":["臨時"],"Unmoderated":["ä¸éœ€ç™¼è¨€æ¬Š"],"conference.example.org":["conference.example.org"],"Groupchats found":["找到èŠå¤©å®¤"],"No groupchats found":["找ä¸åˆ°èŠå¤©å®¤"],"Moderators are privileged users who can change the roles of other users (except those with admin or owner affiliations.":["主æŒäººæ˜¯å¯ä»¥è®Šæ›´å…¶ä»–æˆå“¡è§’色(管ç†å“¡å’Œä¸»äººé™¤å¤–)的特殊æˆå“¡ã€‚"],"The default role, implies that you can read and write messages.":["é è¨è§’色,表示您å¯ä»¥æ”¶å—和傳é€è¨Šæ¯ã€‚"],"Visitors aren\'t allowed to write messages in a moderated multi-user chat.":["éŠå®¢åœ¨æœ‰ç™¼è¨€æ¬Šé™åˆ¶çš„èŠå¤©å®¤å…§ä¸å¯ä»¥å‚³é€è¨Šæ¯ã€‚"],"Owner is the highest affiliation. Owners can modify roles and affiliations of all other users.":["主人是最高級別的身份。主人å¯ä»¥è®Šæ›´å…¶ä»–所有æˆå“¡çš„角色和身份。"],"Admin is the 2nd highest affiliation. Admins can modify roles and affiliations of all other users except owners.":["管ç†å“¡æ˜¯ç¬¬äºŒç´šåˆ¥çš„身份。管ç†å“¡å¯ä»¥è®Šæ›´é™¤ä¸»äººå¤–所有æˆå“¡çš„角色和身份。"],"To ban a user, you give them the affiliation of \\"outcast\\".":["è‹¥è¦å°éŽ–æŸå€‹æˆå“¡ï¼Œæ‚¨å¯ä»¥è®Šæ›´å…¶èº«ä»½çˆ²ã€Œé©…é€ã€ã€‚"],"Change role":["變更角色"],"New Role":["新角色"],"Reason":["åŽŸå› "],"Change affiliation":["變更身份"],"New affiliation":["新身份"],"Affiliation":["身份"],"Moderator Tools":["主æŒäººå·¥å…·"],"No users with that affiliation found.":["未找到該身份的æˆå“¡ã€‚"],"No users with that role found.":["未找到該角色的æˆå“¡ã€‚"],"Type here to filter the search results":["在這è£è¼¸å…¥é—œéµå—篩é¸æœå°‹çµæžœ"],"Show users":["顯示æˆå“¡"],"Roles are assigned to users to grant or deny them certain abilities in a multi-user chat. They\'re assigned either explicitly or implicitly as part of an affiliation. A role that\'s not due to an affiliation, is only valid for the duration of the user\'s session.":["角色的å˜åœ¨æ˜¯çˆ²äº†è¦å®šèŠå¤©å®¤å…§å“ªäº›æˆå“¡èƒ½å¤ åšå‡ºä½•ç¨®è¡Œçˆ²ã€‚角色是作爲權é™çš„一部分被明確或者自動地賦予æˆå“¡çš„。如果æŸå€‹è§’色ä¸æ˜¯ç”±å…¶èº«ä»½è‡ªå‹•ç²å¾—的,這個角色會在其æˆå“¡é›¢é–‹å¾Œè‡ªå‹•å¤±æ•ˆã€‚"],"An affiliation is a long-lived entitlement which typically implies a certain role and which grants privileges and responsibilities. For example admins and owners automatically have the moderator role.":["身份是一種自帶特定角色的長期權利,隨之而來的還有權力和責任。例如管ç†å“¡å’Œä¸»äººé€™å…©ç¨®èº«ä»½æœƒè‡ªå‹•ç²å¾—主æŒäººé€™ä¸€è§’色。"],"Timeout error while trying to set the affiliation":["è¨å®šèº«ä»½é€¾æ™‚"],"Sorry, you\'re not allowed to make that change":["抱æ‰ï¼Œæ‚¨ä¸è¢«å…許作出æ¤è®Šæ›´"],"Sorry, something went wrong while trying to set the affiliation":["抱æ‰ï¼Œåœ¨å˜—試變更身份時出錯了"],"Affiliation changed":["身份已變更"],"Role changed":["角色已變更"],"You\'re not allowed to make that change":["您ä¸è¢«å…許作出æ¤è®Šæ›´"],"Sorry, something went wrong while trying to set the role":["抱æ‰ï¼Œåœ¨å˜—試è¨å®šè§’色時出錯了"],"Topic":["話題"],"Topic author":["話題定立人"],"Groupchat address (JID)":["èŠå¤©å®¤åœ°å€ï¼ˆJID)"],"Message archiving":["訊æ¯å˜æª”"],"Messages are archived on the server":["訊æ¯å„²å˜åœ¨ä¼ºæœå™¨ä¸Š"],"Description":["介紹"],"Features":["特性"],"This groupchat is not publicly searchable":["這間èŠå¤©å®¤ç„¡æ³•è¢«å…¬é–‹æœå°‹"],"This groupchat is restricted to members only":["這間èŠå¤©å®¤åƒ…é™æœƒå“¡"],"Members only":["僅é™æœƒå“¡"],"Participants entering this groupchat need to request permission to write":["æ–°åŠ å…¥æˆå“¡éœ€è¦ç”³è«‹æ¬Šé™ç™¼è¨€"],"Name":["å稱"],"This groupchat does not require a password upon entry":["åŠ å…¥é€™é–“èŠå¤©å®¤ä¸éœ€è¦å¯†ç¢¼"],"No password required":["ä¸éœ€è¦å¯†ç¢¼"],"Not anonymous":["éžåŒ¿å"],"All other groupchat participants can see your XMPP address":["èŠå¤©å®¤å…§æ‰€æœ‰æˆå“¡éƒ½èƒ½å¤ 看見您的 XMPP 地å€"],"Not moderated":["無發言權é™åˆ¶"],"Participants entering this groupchat can write right away":["æ–°åŠ å…¥æˆå“¡èƒ½å¤ 直接發言"],"Online users":["線上人數"],"Anyone can join this groupchat":["任何人都å¯ä»¥åŠ 入這間èŠå¤©å®¤"],"This groupchat requires a password before entry":["åŠ å…¥é€™é–“èŠå¤©å®¤éœ€è¦å¯†ç¢¼"],"Password protected":["å—密碼ä¿è·"],"Persistent":["永久èŠå¤©å®¤"],"This groupchat persists even if it\'s unoccupied":["å³ä½¿æ‰€æœ‰æˆå“¡é›¢é–‹é€™é–“èŠå¤©å®¤ä»ç„¶å˜åœ¨"],"Only moderators can see your XMPP address":["åªæœ‰ä¸»æŒäººçœ‹å¾—見您的 XMPP 地å€"],"This groupchat will disappear once the last person leaves":["這間èŠå¤©å®¤æœƒåœ¨æœ€å¾Œä¸€å€‹æˆå“¡é›¢é–‹å¾Œè‡ªå‹•é—œé–‰"],"This groupchat is publicly searchable":["這間èŠå¤©å®¤å¯ä»¥è¢«å…¬é–‹æœå°‹"],"Groupchat info for %1$s":["%1$s çš„èŠå¤©å®¤è³‡è¨Š"],"You\'re not allowed to send messages in this room":["您ä¸è¢«å…許在這間èŠå¤©å®¤å‚³é€è¨Šæ¯"],"The conversation has moved. Click below to enter.":["這則å°è©±å·²ç¶“被æ¬ç§»ã€‚點擊下方進入。"],"This groupchat no longer exists":["這間èŠå¤©å®¤å·²ç¶“關閉"],"Hide the groupchat topic":["éš±è—èŠå¤©å®¤è©±é¡Œ"],"This groupchat is bookmarked":["這間èŠå¤©å®¤å·²ç¶“è¢«åŠ çˆ²æ›¸ç±¤"],"Enter groupchat":["進入èŠå¤©å®¤"],"Choose a nickname to enter":["進入å‰å…ˆæ€é¸ä¸€å€‹æš±ç¨±"],"Please choose your nickname":["è«‹æ€é¸æ‚¨çš„暱稱"],"This groupchat requires a password":["這間èŠå¤©å®¤éœ€è¦å¯†ç¢¼"],"Password: ":["密碼: "],"Submit":["é€å‡º"],"%1$s has entered the groupchat":["%1$s å·²ç¶“åŠ å…¥èŠå¤©å®¤"],"%1$s has left the groupchat":["%1$s 已經離開èŠå¤©å®¤"],"%1$s is now a moderator":["%1$s ç¾åœ¨æˆçˆ²ä¸»æŒäºº"],"%1$s is no longer a moderator":["%1$s ä¸å†æ˜¯ä¸»æŒäºº"],"%1$s has been given a voice":["%1$s 已經被賦予發言權"],"%1$s has been muted":["%1$s 已經被ç¦æ¢ç™¼è¨€"],"%1$s and %2$s":["%1$s å’Œ %2$s"],"%1$s are typing":["%1$s æ£åœ¨è¼¸å…¥"],"%1$s have stopped typing":["%1$s å·²åœæ¢è¼¸å…¥"],"%1$s have gone away":["%1$s 已經離線"],"%1$s have entered the groupchat":["%1$s å·²ç¶“åŠ å…¥èŠå¤©å®¤"],"%1$s have left the groupchat":["%1$s 已經離開èŠå¤©å®¤"],"%1$s are now moderators":["%1$s ç¾åœ¨æˆçˆ²ä¸»æŒäºº"],"%1$s are no longer moderators":["%1$s ä¸å†æ˜¯ä¸»æŒäºº"],"%1$s have been given voices":["%1$s 已經被賦予發言權"],"%1$s have been muted":["%1$s 已經被ç¦æ¢ç™¼è¨€"],"Change user\'s affiliation to admin":["變更æˆå“¡èº«ä»½çˆ²ç®¡ç†å“¡"],"Ban user by changing their affiliation to outcast":["變更æˆå“¡èº«ä»½çˆ²ã€Œé©…é€ã€ä»¥å°éŽ–æˆå“¡"],"Clear the chat area":["清除å°è©±å€åŸŸ"],"Close this groupchat":["關閉èŠå¤©å®¤"],"Change user role to participant":["變更æˆå“¡è§’色爲普通æˆå“¡"],"Remove this groupchat":["移除這間èŠå¤©å®¤"],"Kick user from groupchat":["å°‡æˆå“¡è¸¢å‡ºèŠå¤©å®¤"],"Write in 3rd person":["用第三者身份撰寫"],"Grant membership to a user":["å‡ç´šæˆå“¡çˆ²æœƒå“¡"],"Opens up the moderator tools GUI":["開啟主æŒäººå·¥å…·ç•Œé¢"],"Remove user\'s ability to post messages":["移除æˆå“¡å‚³é€è¨Šæ¯çš„權é™"],"Change your nickname":["變更您的暱稱"],"Grant moderator role to user":["授予æˆå“¡ä¸»æŒäººè§’色"],"Grant ownership of this groupchat":["授予æˆå“¡é€™é–“èŠå¤©å®¤çš„主人身份"],"Register your nickname":["登記您的暱稱"],"Revoke the user\'s current affiliation":["撤回æˆå“¡ç¾åœ¨çš„身份"],"Set groupchat subject":["è¨å®šèŠå¤©å®¤ä¸»é¡Œ"],"Set groupchat subject (alias for /subject)":["è¨å®šèŠå¤©å®¤ä¸»é¡Œï¼ˆç‰åƒ¹æ–¼æŒ‡ä»¤ /subject)"],"Allow muted user to post messages":["å…許ç¦è¨€æˆå“¡å‚³é€è¨Šæ¯"],"You are about to retract this message.":["您在收回這æ¢è¨Šæ¯ã€‚"],"You may optionally include a message, explaining the reason for the retraction.":["您å¯ä»¥é¸æ“‡å¯«ä¸‹æ”¶å›žè¨Šæ¯çš„åŽŸå› ã€‚"],"Message Retraction":["收回信æ¯"],"Optional reason":["å¯é¸åŽŸå› "],"Sorry, you\'re not allowed to retract this message":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ”¶å›žé€™æ¢è¨Šæ¯"],"A timeout occurred while trying to retract the message":["收回訊æ¯é€¾æ™‚"],"Sorry, you\'re not allowed to retract this message.":["抱æ‰ï¼Œæ‚¨ä¸èƒ½æ”¶å›žé€™æ¢è¨Šæ¯ã€‚"],"Show more information about this groupchat":["顯示更多關於這間èŠå¤©å®¤çš„資訊"],"Configure":["è¨å®š"],"Configure this groupchat":["è¨å®šèŠå¤©å®¤"],"Invite someone to join this groupchat":["邀請朋å‹åŠ å…¥èŠå¤©å®¤"],"Show topic":["顯示話題"],"Hide topic":["éš±è—話題"],"Show the topic message in the heading":["åœ¨é ‚éƒ¨å±•ç¤ºè©±é¡Œè¨Šæ¯"],"Hide the topic in the heading":["åœ¨é ‚éƒ¨éš±è—話題"],"Moderate":["發言權"],"Moderate this groupchat":["åŠ å…¥ç™¼è¨€æ¬Šé™åˆ¶"],"Destroy":["關閉èŠå¤©å®¤"],"Leave":["離開"],"Leave and close this groupchat":["離開並關閉èŠå¤©å®¤"],"Are you sure you want to leave this groupchat?":["您確定è¦é›¢é–‹é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"Hide the list of participants":["éš±è—æˆå“¡æ¸…å–®"],"Forbidden: you do not have the necessary role in order to do that.":["被ç¦æ¢ï¼šæ‚¨çš„è§’è‰²æ²¡æœ‰è¶³å¤ æ¬Šé™ã€‚"],"Forbidden: you do not have the necessary affiliation in order to do that.":["被ç¦æ¢ï¼šæ‚¨çš„èº«ä»½æ²¡æœ‰è¶³å¤ æ¬Šé™ã€‚"],"Error: the \\"%1$s\\" command takes two arguments, the user\'s nickname and optionally a reason.":["錯誤:「%1$sã€æŒ‡ä»¤è®€å…¥å…©å€‹åƒæ•¸ï¼ŒåŒ…括æˆå“¡çš„暱稱和一個å¯é¸åŽŸå› 。"],"Error: couldn\'t find a groupchat participant based on your arguments":["錯誤:找ä¸åˆ°ç¬¦åˆæ¢ä»¶çš„èŠå¤©å®¤æˆå“¡"],"Error: found multiple groupchat participant based on your arguments":["錯誤:找到ä¸æ¢ä¸€å€‹èŠå¤©å®¤æˆå“¡"],"Couldn\'t find a participant with that nickname. They might have left the groupchat.":["未找到符åˆè©²æš±ç¨±çš„èŠå¤©å®¤æˆå“¡ã€‚他們å¯èƒ½å·²ç¶“離開了èŠå¤©å®¤ã€‚"],"Sorry, an error happened while running the command.":["抱æ‰ï¼Œé‹è¡ŒæŒ‡ä»¤æ™‚發生錯誤。"],"Check your browser\'s developer console for details.":["詳細情形請檢查您的ç€è¦½å™¨é–‹ç™¼è€…工具。"],"Are you sure you want to destroy this groupchat?":["您確定è¦é—œé–‰é€™é–“èŠå¤©å®¤å—Žï¼Ÿ"],"Please enter the XMPP address of this groupchat to confirm":["請輸入這間èŠå¤©å®¤çš„ XMPP 地å€ä»¥ç¢ºèª"],"name@example.org":["name@example.org"],"Optional reason for destroying this groupchat":["é¸å¡«é—œé–‰é€™é–“èŠå¤©å®¤çš„åŽŸå› "],"Optional XMPP address for a new groupchat that replaces this one":["é¸å¡«æ›¿ä»£çš„æ–°èŠå¤©å®¤ XMPP 地å€"],"replacement@example.org":["replacement@example.org"],"Your nickname is \\"%1$s\\"":["您的暱稱爲「%1$sã€"],"Error: invalid number of arguments":["錯誤:無效的åƒæ•¸æ•¸é‡"],"This action was done by %1$s.":["這個動作由 %1$s åšå‡ºã€‚"],"The reason given is: \\"%1$s\\".":["給出的ç†ç”±æ˜¯ï¼š%1$s。"],"Groupchats":["èŠå¤©å®¤"],"Add a new groupchat":["新增èŠå¤©å®¤"],"Query for groupchats":["æœå°‹èŠå¤©å®¤"],"Sorry, an error occurred while trying to submit the config form.":["抱æ‰ï¼Œå˜—試é€å‡ºé…置時éé‡éŒ¯èª¤ã€‚"],"Close these announcements":["關閉這些æ醒"],"Announcements":["æ醒"],"Click to open this server message":["點擊展開這æ¢ä¼ºæœå™¨è¨Šæ¯"],"Notification from %1$s":["來自 %1$s 的通知"],"%1$s says":["%1$s 說"],"Encrypted message received":["收到 OMEMO åŠ å¯†è¨Šæ¯"],"has gone offline":["已經離線"],"has gone away":["已經離開"],"is busy":["æ£åœ¨å¿™ç¢Œ"],"has come online":["已經上線"],"wants to be your contact":["想æˆçˆ²æ‚¨çš„è¯çµ¡äºº"],"Hide":["éš±è—"],"Execute":["執行"],"On which entity do you want to run commands?":[""],"Certain XMPP services and entities allow privileged users to execute ad-hoc commands on them.":[""],"Commands found":["找到指令"],"List available commands":["列出å¯ç”¨æŒ‡ä»¤"],"No commands found":["找ä¸åˆ°æŒ‡ä»¤"],"The specified entity doesn\'t support ad-hoc commands":[""],"Sorry, an error occurred while trying to execute the command. See the developer console for details":["抱æ‰ï¼ŒåŸ·è¡ŒæŒ‡ä»¤æ™‚出錯。詳細資訊請檢視開發者主控臺"],"About":["關於"],"Commands":["指令"],"Settings":["è¨å®š"],"%1$s Open Source %2$s XMPP chat client brought to you by %3$s Opkode %2$s":["ç”± %3$s Opkode %2$s 帶來的 %1$s 開放原始碼 %2$s XMPP 用戶端å°è©±è»Ÿä»¶"],"%1$s Translate %2$s it into your own language":["将它 %1$s ç¿»è¯ %2$s 到您的語言"],"Log out":["登出"],"Click to change your chat status":["點擊變更您的線上狀態"],"Show details about this chat client":["展示關於æ¤å°è©±è»Ÿä»¶çš„詳細資訊"],"Your avatar image":["您的é åƒå½±åƒ"],"Checkbox for selecting the following fingerprint":["æ€é¸ä¸‹åˆ—指紋的勾é¸æ¡†"],"Device without a fingerprint":["没有指紋的è£ç½®"],"Checkbox for selecting the following device":["æ€é¸ä¸‹åˆ—è£ç½®çš„勾é¸æ¡†"],"Other OMEMO-enabled devices":["其它啟用了 OMEMO åŠ å¯†çš„è£ç½®"],"Checkbox to select fingerprints of all other OMEMO devices":["æ€é¸å…¶é¤˜æ‰€æœ‰ OMEMO åŠ å¯†è£ç½®æŒ‡ç´‹çš„勾é¸æ¡†"],"Remove checked devices and close":["移除已勾é¸çš„è£ç½®ä¸¦é—œé–‰"],"Select all":["æ€é¸å…¨éƒ¨"],"This device\'s OMEMO fingerprint":["這部è£ç½®çš„ OMEMO 指紋"],"Generate new keys and fingerprint":["ç”¢ç”Ÿæ–°çš„åŠ å¯†é‡‘é‘°å’ŒæŒ‡ç´‹"],"Your Profile":["您的個人資料"],"XMPP Address (JID)":["XMPP 地å€ï¼ˆJID)"],"Save and close":["儲å˜ä¸¦é—œé–‰"],"Use commas to separate multiple roles. Your roles are shown next to your name on your chat messages.":["使用逗號分隔多個角色。您的角色會在å°è©±è¨Šå…§å±•ç¤ºåœ¨æ‚¨çš„å稱æ—邊。"],"OMEMO":["OMEMO"],"Profile":["個人資料"],"Sorry, an error happened while trying to save your profile data.":["抱æ‰ï¼Œå„²å˜æ‚¨çš„個人資料時發生錯誤。"],"You can check your browser\'s developer console for any error output.":["您å¯ä»¥åœ¨æ‚¨ç€è¦½å™¨å…§çš„開發者工具ä¸æª¢è¦–所有輸出的錯誤。"],"Away":["離開"],"Busy":["忙碌"],"Custom status":["自定義狀態"],"Offline":["離線"],"Online":["在線"],"Away for long":["長時間離開"],"Change chat status":["變更線上狀態"],"Personal status message":["個人狀態訊æ¯"],"I am %1$s":["我ç¾åœ¨ %1$s"],"Are you sure you want to log out?":["您确定è¦ç™»å‡ºå—Žï¼Ÿ"],"online":["在線"],"busy":["忙碌"],"away for long":["長時間離開"],"away":["離開"],"offline":["離線"],"Sorry, could not decrypt a received OMEMO message due to an error.":["抱æ‰ï¼Œè§£å¯†ä¸€æ¢ OMEMO åŠ å¯†è¨Šæ¯æ™‚é‡åˆ°äº†éŒ¯èª¤ã€‚"],"Sorry, could not decrypt a received OMEMO because we don\'t have the JID for that user.":["抱æ‰ï¼Œç„¡æ³•è§£å¯†æ”¶åˆ°çš„ OMEMO åŠ å¯†è¨Šæ¯ï¼Œå› 爲没有該使用者的 JID。"],"%1$s doesn\'t appear to have a client that supports OMEMO. Encrypted chat will no longer be possible in this grouchat.":["%1$s ä¼¼ä¹Žæ²¡æœ‰æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šçš„ç”¨æˆ¶ç«¯è»Ÿä»¶ã€‚é€™é–“èŠå¤©å®¤å°‡ä¸èƒ½å†é€²è¡ŒåŠ 密通訊。"],"Cannot use end-to-end encryption in this groupchat, either the groupchat has some anonymity or not all participants support OMEMO.":["無法在這間èŠå¤©å®¤å…§ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› çˆ²é€™æ˜¯å€‹åŒ¿åèŠå¤©å®¤ï¼Œæˆ–是有æˆå“¡ä¸æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šã€‚"],"Cannot use end-to-end encryption because %1$s uses a client that doesn\'t support OMEMO.":["ç„¡æ³•ä½¿ç”¨ç«¯åˆ°ç«¯åŠ å¯†ï¼Œå› çˆ² %1$s 所使用的用戶端軟件ä¸æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šã€‚"],"Messages are being sent in plaintext":["訊æ¯å·²ç”¨ç´”æ–‡å—å½¢å¼å‚³é€"],"Messages are sent encrypted":["訊æ¯å°‡è¢«åŠ 密傳é€"],"This groupchat needs to be members-only and non-anonymous in order to support OMEMO encrypted messages":["è‹¥è¦æ”¯æ´ OMEMO åŠ å¯†é€šè¨Šï¼Œé€™é–“èŠå¤©å®¤å¿…é ˆåƒ…é™æœƒå“¡ä¸¦ä¸”éžåŒ¿å"],"Sorry, we\'re unable to send an encrypted message because %1$s requires you to be subscribed to their presence in order to see their OMEMO information":["抱æ‰ï¼Œç„¡æ³•å‚³é€åŠ 密訊æ¯ï¼Œå› 爲 %1$s è¦æ±‚您先訂閱他的線上狀態æ‰èƒ½æª¢è¦–ä»–çš„ OMEMO 密鑰資訊"],"Sorry, we\'re unable to send an encrypted message because the remote server for %1$s could not be found":["抱æ‰ï¼Œç„¡æ³•é€å‡ºåŠ 密訊æ¯ï¼Œå› 爲找ä¸åˆ° %1$s çš„é 端伺æœå™¨"],"Unable to send an encrypted message due to an unexpected error.":["é€å‡ºåŠ 密訊æ¯æ™‚發生了未é 期的錯誤。"],"Sorry, an error occurred while trying to remove the devices.":["抱æ‰ï¼Œç§»é™¤è£ç½®æ™‚éé‡éŒ¯èª¤ã€‚"],"Are you sure you want to generate new OMEMO keys? This will remove your old keys and all previously encrypted messages will no longer be decryptable on this device.":["您確定è¦ç”¢ç”Ÿæ–°çš„ OMEMO åŠ å¯†é‡‘é‘°å—Žï¼Ÿé€™æœƒç§»é™¤æ‚¨çš„èˆŠå¯†é‘°ï¼Œä¸¦ä¸”ä¹‹å‰æ‰€æœ‰çš„åŠ å¯†è¨Šæ¯éƒ½ç„¡æ³•å†åœ¨é€™éƒ¨è£ç½®ä¸Šè§£å¯†ã€‚"],"Sorry, no devices found to which we can send an OMEMO encrypted message.":["抱æ‰ï¼Œæ‰¾ä¸åˆ°å¯ä»¥å‚³é€ OMEMO åŠ å¯†è¨Šæ¯çš„è£ç½®ã€‚"],"This is an OMEMO encrypted message which your client doesn’t seem to support. Find more information on https://conversations.im/omemo":["您的用戶端軟件似乎ä¸æ”¯æ´é€™ä¸€æ¢ OMEMO åŠ å¯†è¨Šæ¯ã€‚更多有關資訊å¯ä»¥åœ¨ https://conversations.im/omemo 上查閱"]," e.g. conversejs.org":[" è¬å¦‚ conversejs.org"],"Fetch registration form":["å–得註冊表單"],"Tip: A list of public XMPP providers is available":["æ示:有一份公眾 XMPP 供應商清單"],"here":["這è£"],"Sorry, we\'re unable to connect to your chosen provider.":["抱æ‰ï¼Œç„¡æ³•é€£ç·šåˆ°æ‚¨æ‰€æ€é¸çš„供應商。"],"Sorry, the given provider does not support in band account registration. Please try with a different provider.":["抱æ‰ï¼Œé€™å€‹ä¾›æ‡‰å•†ä¸æ”¯æ´è»Ÿä»¶å…§è¨»å†Šå¸³è™Ÿã€‚請嘗試æ›ä¸€å€‹ä¾›æ‡‰å•†ã€‚"],"Something went wrong while establishing a connection with \\"%1$s\\". Are you sure it exists?":["與 %1$s 建立連線時出ç¾äº†å•é¡Œã€‚您確定它的确å˜åœ¨å—Žï¼Ÿ"],"Now logging you in":["æ£åœ¨çˆ²æ‚¨ç™»å…¥"],"Registered successfully":["登記æˆåŠŸ"],"The provider rejected your registration attempt. Please check the values you entered for correctness.":["供應商拒絕了您的註冊嘗試。請檢查您所輸入的內容是å¦æ£ç¢ºã€‚"],"Leave this groupchat":["離開這間èŠå¤©å®¤"],"Click to toggle the list of open groupchats":["按一下開關已開啟的èŠå¤©å®¤æ¸…å–®"],"Open Groupchats":["已開啟的èŠå¤©å®¤"],"Are you sure you want to leave the groupchat %1$s?":["您確定è¦é›¢é–‹èŠå¤©å®¤ã€Œ%1$sã€å—Žï¼Ÿ"],"Add":["新增"],"Add a Contact":["新增è¯çµ¡äºº"],"This contact is busy":["æ¤è¯çµ¡äººæ£åœ¨å¿™ç¢Œ"],"This contact is online":["æ¤è¯çµ¡äººåœ¨ç·šä¸Š"],"This contact is offline":["æ¤è¯çµ¡äººå·²ç¶“離線"],"This contact is unavailable":["æ¤è¯çµ¡äººä¸å¯ç”¨"],"This contact is away for an extended period":["æ¤è¯çµ¡äººå·²ç¶“離開了一段時間"],"This contact is away":["æ¤è¯çµ¡äººå·²ç¶“離開"],"Contact name":["è¯çµ¡äººå稱"],"Optional nickname":["å¯é¸åŒ¿ç¨±"],"Sorry, could not find a contact with that name":["抱æ‰ï¼Œæ‰¾ä¸åˆ°ç¬¦åˆè©²å稱的è¯çµ¡äºº"],"This contact has already been added":["æ¤äººå·²ç¶“是您的è¯çµ¡äºº"],"Filter":["篩é¸å™¨"],"Filter by contact name":["以è¯çµ¡äººå稱篩é¸"],"Filter by group name":["以分組å稱篩é¸"],"Filter by status":["以線上狀態篩é¸"],"Any":["所有"],"Unread":["未讀"],"Chatty":["æ£åœ¨å°è©±"],"Extended Away":["離開了一段時間"],"Click to remove %1$s as a contact":["按一下將 %1$s 移出è¯çµ¡äºº"],"Click to accept the contact request from %1$s":["按一下åŒæ„ %1$s 的新增è¯çµ¡äººè«‹æ±‚"],"Click to decline the contact request from %1$s":["按一下拒絕 %1$s 的新增è¯çµ¡äººè«‹æ±‚"],"Click to chat with %1$s (XMPP address: %2$s)":["點一下與 %1$s (XMPP 地å€ï¼š%2$s)展開å°è©±"],"Are you sure you want to decline this contact request?":["您確定è¦æ‹’絕這個新增è¯çµ¡äººè«‹æ±‚嗎?"],"Contacts":["è¯çµ¡äºº"],"Add a contact":["新增è¯çµ¡äºº"],"Re-sync your contacts":["é‡æ–°æ•´ç†æ‚¨çš„è¯çµ¡äºº"]}}}')}}]); //# sourceMappingURL=zh_TW-LC_MESSAGES-converse-po.js.map \ No newline at end of file diff --git a/src/plugins/converse-rai.js b/src/plugins/converse-rai.js index a4adbad86dcb6a7ed6aa587e1e5e45d1d8705d7a..f0db84ec7bf26e51b544bfcd4c0000b4192cb053 100644 --- a/src/plugins/converse-rai.js +++ b/src/plugins/converse-rai.js @@ -44,7 +44,7 @@ }); _converse.api.listen.on('raiRoomsUpdated', function (rooms) { - interestingServers = new Set(rooms.map(Strophe.getDomainFromJid)); + interestingServers = new Set(rooms.filter(room => room).map(Strophe.getDomainFromJid)); if(_converse.api.connection.connected()) { updateSubscriptions(); } diff --git a/src/solid-xmpp-chat.js b/src/solid-xmpp-chat.js index c9c373001f86c79a234328e8bbca5b9c322ac3a5..9a3efd4788de98e6fbf14e52427d8e2dbfef6a53 100644 --- a/src/solid-xmpp-chat.js +++ b/src/solid-xmpp-chat.js @@ -69,31 +69,33 @@ export const SolidXMPPChat = { async populate() { if(typeof converse_sib !== 'undefined') { await converse_sib.loaded_deferred; - if (await this.resource.jabberRoom) { - this.jid = await this.resource['jabberID']; - } else { - this.jid = await this.resource['chatProfile.jabberID']; - const user = await document.querySelector('sib-auth').getUser(); - const userProfile = await store.getData(user['@id'], this.context); - const contactsURL = await userProfile['contacts.@id']; - store.post({ - "contact": this.resource['@id'], - "@context": this.context - }, contactsURL); - } - await converse_sib.connected_deferred - converse_sib.service.plugins.sibChat.changeChat( - this.jid, - await this.resource.jabberRoom, - this.element.shadowRoot, - ); - window.dispatchEvent(new CustomEvent('read', { - detail: { - resource: { - "@id": this.resource['@id'] - } + if (this.resource) { + if (await this.resource.jabberRoom) { + this.jid = await this.resource['jabberID']; + } else { + this.jid = await this.resource['chatProfile.jabberID']; + const user = await document.querySelector('sib-auth').getUser(); + const userProfile = await store.getData(user['@id'], this.context); + const contactsURL = await userProfile['contacts.@id']; + store.post({ + "contact": this.resource['@id'], + "@context": this.context + }, contactsURL); } - })); + await converse_sib.connected_deferred; + converse_sib.service.plugins.sibChat.changeChat( + this.jid, + await this.resource.jabberRoom, + this.element.shadowRoot, + ); + window.dispatchEvent(new CustomEvent('read', { + detail: { + resource: { + "@id": this.resource['@id'] + } + } + })); + } } // Else, not logged in, on chat change }, @@ -135,31 +137,31 @@ export const SolidXMPPChat = { // Change chat plugin converse_sib.service.plugins.sibChat = new(class { changeChat(jid, is_groupchat, root) { - function isEmptyMessage (attrs) { - if (attrs && attrs.attributes) { - attrs = attrs.attributes; - } - return !attrs['oob_url'] && - !attrs['file'] && - !(attrs['is_encrypted'] && attrs['plaintext']) && - !attrs['message']; - }; + // function isEmptyMessage (attrs) { + // if (attrs && attrs.attributes) { + // attrs = attrs.attributes; + // } + // return !attrs['oob_url'] && + // !attrs['file'] && + // !(attrs['is_encrypted'] && attrs['plaintext']) && + // !attrs['message']; + // }; - function removeUnnecessaryDayIndicators(view) { - const pred = (el) => - el.matches('.date-separator') && el.nextElementSibling.matches('.date-separator'); - const container = view.el.querySelector('.chat-content__messages'); - const to_remove = Array.from(container.children).filter(pred); - to_remove.forEach((el) => el.parentElement.removeChild(el)); - }; - function isHidden(classList){ - for(let i = 0; i < classList.length; i++){ - if(classList[i] === 'hidden'){ - return true; - } - } - return false; - } + // function removeUnnecessaryDayIndicators(view) { + // const pred = (el) => + // el.matches('.date-separator') && el.nextElementSibling.matches('.date-separator'); + // const container = view.el.querySelector('.chat-content__messages'); + // const to_remove = Array.from(container.children).filter(pred); + // to_remove.forEach((el) => el.parentElement.removeChild(el)); + // }; + // function isHidden(classList){ + // for(let i = 0; i < classList.length; i++){ + // if(classList[i] === 'hidden'){ + // return true; + // } + // } + // return false; + // } if (!jid) { return; } @@ -174,29 +176,29 @@ export const SolidXMPPChat = { if (converse_el) { root.appendChild(converse_el); - if (is_groupchat) { - const jid_to_clear = converse_el.getElementsByClassName('converse-chatboxes'); - let room_to_clear_view = ''; - if (jid_to_clear.length && jid_to_clear[0].children.length){ - for (let i = 0; i < jid_to_clear[0].children.length; i++) { - if(!isHidden(jid_to_clear[0].children[i].classList)){ - room_to_clear_view = this._converse.chatboxviews.views[jid_to_clear[0].children[i].id.split('-')[1]]; - break; - } - } - } - if (room_to_clear_view) { - if (room_to_clear_view.model.messages.length > 30) { - const non_empty_messages = room_to_clear_view.model.messages.filter((m) => !isEmptyMessage(m)); - if (non_empty_messages.length > 30) { - while (non_empty_messages.length > 30) { - non_empty_messages.shift().destroy(); - } - removeUnnecessaryDayIndicators(room_to_clear_view); - } - } - } - } + // if (is_groupchat) { + // const jid_to_clear = converse_el.getElementsByClassName('converse-chatboxes'); + // let room_to_clear_view = ''; + // if (jid_to_clear.length && jid_to_clear[0].children.length){ + // for (let i = 0; i < jid_to_clear[0].children.length; i++) { + // if(!isHidden(jid_to_clear[0].children[i].classList)){ + // room_to_clear_view = this._converse.chatboxviews.views[jid_to_clear[0].children[i].id.split('-')[1]]; + // break; + // } + // } + // } + // if (room_to_clear_view) { + // if (room_to_clear_view.model.messages.length > 30) { + // const non_empty_messages = room_to_clear_view.model.messages.filter((m) => !isEmptyMessage(m)); + // if (non_empty_messages.length > 30) { + // while (non_empty_messages.length > 30) { + // non_empty_messages.shift().destroy(); + // } + // removeUnnecessaryDayIndicators(room_to_clear_view); + // } + // } + // } + // } } if (is_groupchat) { this._converse.api.rooms.open(jid, {}, true); @@ -292,6 +294,56 @@ export const SolidXMPPChat = { } }); + // Transform hats to custom values + converse.plugins.add('custom-hats', { + overrides: { + getHats: function () { + const hat_conversions = {'admin': 'Administrateur'}; + const _converse = this; + const hats = _converse.__super__.getHats.apply(this, arguments); + if (!hat_conversions) { + return hats; + } else { + const role_affiliations = Object.keys(hat_conversions); + const custom_hats = hats.map((hat) => { + if (role_affiliations.includes(hat.title)){ + return({title: hat_conversions[hat.title]}); + } else { + return hat; + } + }) + return custom_hats + } + } + } + }); + //Highly experimental DO NOT USE +// converse.plugins.add('custom-storage', { +// overrides: { +// createStore: function () { +// const _converse = this; +// if (arguments.length > 1){ +// arguments[1] = "none"; +// } +// return _converse.__super__.createStore.apply(this, arguments); +// } +// } +// }); + //Override converse's request permission with an empty function + //so that permission request for notifications don't happen + converse.plugins.add('remove-notifications', { + overrides: { + requestPermission: function () {}, + showMessageNotification: function () {}, + showChatStateNotification: function () {}, + showContactRequestNotification: function () {}, + showFeedbackNotification: function () {}, + handleChatStateNotification: function () {}, + handleMessageNotification: function () {}, + handleContactRequestNotification: function () {}, + handleFeedback: function () {}, + } + }); // Initialize deferred resolution plugin converse.plugins.add('conversejs-sib-focused', { initialize() { @@ -360,7 +412,7 @@ export const SolidXMPPChat = { 'root': this.element.shadowRoot, 'show_client_info': false, 'show_desktop_notifications': false, - 'persistent_store': 'localStorage', + 'persistent_store': 'none', 'sounds_path': ComponentPath + '/dist/conversejs/', 'show_send_button': false, 'view_mode': 'fullscreen', @@ -371,7 +423,7 @@ export const SolidXMPPChat = { fileupload: false, // Not working in current Converse toggle_occupants: false }, - 'whitelisted_plugins': ['rai', 'conversejs-sib-disconnected', 'conversejs-sib-connected', 'conversejs-sib-focused', 'conversejs-changechat', 'conversejs-rai'], + 'whitelisted_plugins': ['rai', 'conversejs-sib-disconnected', 'conversejs-sib-connected', 'conversejs-sib-focused', 'conversejs-changechat', 'conversejs-rai', 'custom-hats', 'remove-notifications'], }); converse_sib.loaded_deferred.resolve();